diff --git a/ChangeLog b/ChangeLog deleted file mode 100644 index 39edf5975..000000000 --- a/ChangeLog +++ /dev/null @@ -1,22644 +0,0 @@ -2012-09-16 Francis Lachapelle - - * UI/WebServerResources/dtree.js (s): when selecting a node, - also select the parent so the entire row is highlighted. - -2012-09-13 Ludovic Marcotte - - * Fixed bug #1942. We now set the app name to "SOGo" - for the Samba/OpenChange application so wox are properly - found by SOPE. - -2012-09-12 Ludovic Marcotte - - * OpenChange/MAPIStoreTasksMessage.m: added a way to get - the PidTagBody of a task. This could be generalized eventually - with the code in MAPIStoreAppointmentWrapper. - * OpenChange/MAPIStoreMessage.m (-saveMessage): added a safety - check to avoid a crash when first accepting invitations on - a newly created profile. - -2012-09-07 Francis Lachapelle - - * UI/WebServerResources/SchedulerUI.js (tasksListCallback): list - the tasks in a table, along the events table. - (saveTabState): save which of the events or the tasks tab is - selected. - - * UI/WebServerResources/SOGoTabsController.js - (attachToTabsContainer): select and show the active tab if it's - defined. - - * UI/WebServerResources/HTMLTableElement.js (getSelectedRows): - accept calling this method from a "tbody". - - * UI/Scheduler/UIxCalMainView.m (-saveSelectedListAction): new - method to save the name of the selected tab (events or tasks). - (-eventsTabClass): return "active" if the selected tab was "events". - (-tasksTabClass): idem for "tasks". - - * UI/Scheduler/UIxCalListingActions.m (-tasksListAction): added - more quick fields, including the calendar name, location, category - and a formatted version of the due date. - -2012-09-07 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContext.m (CompleteURLFromMapistoreURI): - mapistore uris are already escaped. - (-getRootFolder:withFID:): all urls are now escaped, both in NSURL - and in NSString forms, whether they are used to return a mapitore - root uri or a indexing record. - - * OpenChange/NSString+MAPIStore.m - (-stringByReplacingPercentEscapesUsingEncoding:): we now return - nil for non-ascii strings. - -2012-09-06 Wolfgang Sourdeau - - * OpenChange/NSString+MAPIStore.m - (-stringByReplacingPercentEscapesUsingEncoding:): reimplemented - method properly, to work-around the weird behaviour of the - original in GNUstep. - - * OpenChange/MAPIStoreMailContext.m - (+listContextsForUser:withTDBIndexing:inMemCtx:): we escape the - url string of non-ascii folder names. - (+createRootSecondaryFolderWithFID:andName:forUser:): same as - above. - (+*): reverted all of the above. - - * OpenChange/MAPIStoreMailVolatileMessage.m - (FillMessageHeadersFromProperties): build a recipient list for the - "from" field from the list stored in the value for "orig" in the - recipients dict. - (FillMessageHeadersFromProperties): now take a "withBcc" parameter - that defines whether the "bcc" field must be ignored in the header. - (_generateMailDataWithBcc:): the above code enables use to remove - the search and replace hack required to remove the "bcc" header in - the message text. - -2012-09-05 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailMessage.m (-getMessageData:inMemCtx:): - property return recipients from all the "from", "to", "cc" and - "bcc" header fields. - - * OpenChange/MAPIStoreCalendarAttachment.m - (-getPidTagDisplayName:inMemCtx:): return an allocated value, - since returned values must be assigned to another parent. - -2012-09-04 Francis Lachapelle - - * SoObjects/SOGo/WORequest+SOGo.m (-isMacOSXAddressBookApp): - recognize OS X 10.8 useragent. - (-isICal4): idem. - -2012-08-28 Jean Raby - - * Scripts/openchange_cleanup.py: - New script to clean an openchange user profile - -2012-08-27 Francis Lachapelle - - * SoObjects/Appointments/SOGoAptMailInvitation.m, - SoObjects/Appointments/SOGoAptMailNotification.m, - SoObjects/Appointments/SOGoAptMailDeletion.m, - SoObjects/Appointments/SOGoAptMailUpdate.m, - SoObjects/Appointments/SOGoAptMailICalReply.m, - SoObjects/Appointments/SOGoCalendarComponent.m: send HTML messages - instead of text/plain. - - * UI/WebServerResources/generic.js (openMailTo): mail addresses - must now be separated by semi-colons and not commas. This allow - display names to contain commas. - - * UI/WebServerResources/SchedulerUI.js (tasksListCallback): prefix - tasks with a color box instead of changing the task's background color. - - * UI/Scheduler/UIxCalListingActions.m - (-_getStatusClassForStatusCode:andEndDateStamp::): set the - timezone of the due date to the user's timezone to properly - identify tasks due today. - -2012-08-27 Ludovic Marcotte - - * SoObjects/Appointments/iCalPerson+SOGo.m (mailAddress): - We now properly add double-quotes if we find a comma and - the person's name isn't already double-quoted. Fixes #1649 - -2012-08-24 Francis Lachapelle - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m (-_sanitizeContent): - fix invalid void tags to insure proper HTML decoding. Fixes #1581. - -2012-08-23 Ludovic Marcotte - - * SoObjects/Mailer/SOGoMailFolder.m - added safety - checks around the ACL code so we don't crash if - we can't read the ACLs. - -2012-08-21 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFolder.m (-getPidTagAccessLevel) - (-getPidTagRights, -getPidTagAccessControlListData): fixed - methods. - - * OpenChange/MAPIStoreMessage.m - (-getPidTagDeleteAfterSubmit:inMemCtx:): moved from - MAPIStoreMailMessage. - - * OpenChange/MAPIStoreContactsMessage.m - (-getPidTagAlternateRecipientAllowed:inMemCtx:) - (-getPidTagMessageFlags:inMemCtx:) - (-getPidTagDeleteAfterSubmit:inMemCtx:): new getters. - - * OpenChange/MAPIStoreGCSFolder.m - (-setChangeKey:forMessageWithKey:): removed useless method. - (-updateVersionsForMessageWithKey:withChangeKey:): set the change - key provided by the client as member of the predecessor - changelist, but never as the actual change key for the object. - This hopefully fixes the issue where Outlook deletes objects that - have a different change list than what they expect. - -2012-08-17 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCalendarMessage.m - (-getPidTagMessageClass:inMemCtx:): return - "IPM.Schedule.Meeting.Request" when the owner user is an attendee. - - * OpenChange/MAPIStoreAppointmentWrapper.m - (-getPidLidAppointmentNotAllowPropose:inMemCtx): new getter that - always return "YES", in order to disallow counter proposals. - - * OpenChange/MAPIStoreContext.m (-getPath:ofFMID:inMemCtx:): - properly escape urls containing non-ascii chars. - (-getRootFoldeR:withFID:): idem. - -2012-08-16 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCalendarMessage.m - (-getMessageData:inMemCtx:): when a "recipients" records is - available in the properties, we must return that list instead of - the list of attendees since it will be the most recent one. - (_fixupAppointmentObjectWithUID::): when an appointment had been - deleted, we first attempt to resurrect it from the database before - reinstantiating it, which allows the event synchronisation to - happen properly in [SOGoAppointmentObject - updateContentWithCalendar:fromRequest:]. - - * OpenChange/MAPIStoreMapping.m (_updateFolderWithURL:withURL:): - we retain and release "oldURL" to avoid releasing it when it - is replaced in the list of urls to modify. - - * OpenChange/MAPIStoreAppointmentWrapper.m - (-getPidTagInternetCodepage:inMemCtx:): new getter for a property - that is sometimes requested. - (-getPidTagBody:inMemCtx:): we return an empty string when no - "description"/"comment" is actually present. - -2012-08-15 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailFolder.m (-addProperties:): make use of - the new methods below when a mail folder has been renamed, as this - operation affects the url of mail objects. - - * OpenChange/SOGoMAPIDBObject.m (-setNameInContainer): update the - object record in the database to reflect the change of folder - name. - - * OpenChange/MAPIStoreMailContext.m (-updateURLWithFolderName): - change the folder name used in the context url to use the new - folder name after a rename operation, so that further invocations - of -url will return the right url. - - * OpenChange/MAPIStoreMailFolder.m - (-moveCopyToFolder:withNewName:isMove:isRecursive:): implemented - IMAP-based copy operation, for speed. - (-addProperties): restored the ability to rename IMAP folders by - properly updating the fid/url mapping with our new methods. - -2012-08-14 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFolder.m (-moveToFolder:withNewName:): - renamed to "moveCopyToFolder:withNewName:isMove:isRecursive:", - with the ability to specify whether the operation is a move or - copy operation and whether it is recursive or not (for copy). - - * OpenChange/MAPIStoreSOGo.m (sogo_folder_move_folder): if - "target_folder_object", we do not attempt to access the - corresponding instance member. - - * OpenChange/MAPIStoreMailFolder.m (- - moveCopyMessagesWithMIDs:andCount:fromFolder:withMIDs:andChangeKeys:wantCopy:): - do not attempt to access targetChangeKeys when NULL, to avoid a - SEGFAULT. - -2012-08-14 Jean Raby - - * OpenChange/GNUmakefile: use version_info[{0,1}] instead of - version_info.{major,minor} when checking for legacy version - of python since these named attributes where added in python2.7 - -2012-08-13 Wolfgang Sourdeau - - * OpenChange/MAPIStoreSOGo.m (sogo_properties_get_uri): removed - useless backend method. - - * OpenChange/MAPIStoreFolder.m (-createFolder:withRow:andFID:): - append a "/" to the new folder url when registering with the - url/id mapper. - - * OpenChange/MAPIStoreDBFolder.m (-moveToFolder:withNewName:): - implemented method. - - * OpenChange/MAPIStoreMailFolder.m (-moveToFolder:withNewName:): - invoke changePathTo: on the dbFolder. - - * OpenChange/SOGoMAPIDBFolder.m (-changePathTo:): overriden method - in order to update children records too. - - * OpenChange/SOGoMAPIDBObject.m (-performBatchSQLQueries:) new - method to perform void queries under a transaction. - (-changePathTo:) new method that updates the references for the - object record in the dbfs table. - - * SoObjects/SOGo/NSString+Utilities.m - (-stringByReplacingPrefix:withPrefix:): new self-explicit method. - - * OpenChange/SOGoMAPIDBFolder.m - (-childKeysOfType:includeDeleted:matchingQualifier:andSortOrderings:): - records now have a c_parent_path column in order to avoid fetch - the children of children due to the nature of our "LIKE" clause. - - * OpenChange/SOGoMAPIDBObject.m (-save): records now have a - c_parent_path. - - * OpenChange/MAPIStoreMailFolder.m (-supportsSubFolders): - overriden method to return YES. - -2012-08-12 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailFolder.m (-moveToFolder:withName:): if - the new name is not provided (unlikely), the computed new name - must not have the "folder" prefix. - We now also make use of -[MAPIStoreMapping updateID:withURL:] to - change the references in the mapping database. - - * OpenChange/MAPIStoreFolder.m (-objectId): folder keys always end - with a "/" by convention. - - * OpenChange/MAPIStoreMapping.m (-updateID:withURL:): new method - that perform a change of url on container and leaf entries. - -2012-08-10 Wolfgang Sourdeau - - * OpenChange/MAPIStoreSOGo.m (sogo_properties_get_uri): new - backend method. - -2012-08-10 Ludovic Marcotte - - * Changed OpenChange/SOGoMAPIDBObject.m so we use - GNUstep's binary encoding - which is an order or - magnitude faster at encoding data than any other formats. - -2012-08-10 Wolfgang Sourdeau - - * OpenChange/MAPIStoreSOGo.m (sogo_folder_move_folder) - (sogo_folder_copy_folder): the object on which the backend method - is invoked is now the folder being moved rather than its parent. - -2012-08-09 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailFolder.m - (-moveFolderWithFID:fromFolder:withNewName:): first implementation - for IMAP folders. - - * OpenChange/MAPIStoreSOGo.m (sogo_folder_move_folder) - (sogo_folder_copy_folder): new backend methods. - (sogo_folder_move_folder): do not instantiate an NSString from a - NULL "new_folder_name" parameter. - -2012-08-08 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCalendarMessage.m (-save): generate a - "nameInContainer" for the new object iif it is not set yet. If - set, we generate a new UID from it instead. - - * OpenChange/MAPIStoreMessage.m (-saveMessage): make sure that the - PidTagChangeKey and PidTagChangeNumber props are no longer set in - the properties dict after the save occurred. - - * OpenChange/MAPIApplication.m (-shouldSetupSignalHandlers): - overriden method by returning "NO". - -2012-08-07 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAptMailNotification.m (-setupValues): - test whether each value is non-nil before adding it to the - dictionary. - - * OpenChange/MAPIStoreMailVolatileMessage.m (-save): restored - registration of message url when saved. - -2012-08-06 Wolfgang Sourdeau - - * OpenChange/MAPIStoreRecurrenceUtils.m (-[iCalRecurrenceRule - fillRecurrencePattern:withEvent:inTimeZone:inMemCtx:]): fixed a - crash occurring when the exception has no recurrence-id and - ignore the specific occurrence. - - * OpenChange/MAPIStoreMailVolatileMessage.m (MakeMessageBody): - take "attachmentParts" parameter, deduced from the ivar with the - corresponding name. - - * OpenChange/MAPIStoreSOGoObject.m (-objectId): force generation - of objectId by parent, whether it is a folder or not. - -2012-08-07 Francis Lachapelle - - * UI/Contacts/UIxListEditor.m (-setReferencesValue:): check for - duplicates in the new list, not in the previous version. - -2012-08-03 Jean Raby - - * SoObjects/SOGo/LDAPSource.m (changePasswordForLogin): - if userPasswordAlgorithm was not set or was set to "none", - use the plaintext password directly instead of using '{none}plaintext' - which isn't valid. - -2012-08-02 Ludovic Marcotte - - * OpenChange/MAPIStoreUserContext.m (-_readUserPassword:) - We now read per-user passwords instead of relying on - a global file. - -2012-07-31 Jean Raby - - * sogo.spec: - Treat logrotate file as a config file (noreplace) - -2012-07-31 Francis Lachapelle - - * SoObjects/SOGo/SOGoSieveManager.m - (-sieveScriptWithRequirements:): filters must not be conditional - to each other. - -2012-07-26 Wolfgang Sourdeau - - * OpenChange/iCalTimeZone+MAPIStore.[hm]: new category module. - (-asTimeZoneStructInMemCtx:): new method that returns a struct - TimeZoneStruct as a binary blob from an iCalTimeZone object. - - * OpenChange/MAPIStoreAppointmentWrapper.m - (-getPidLidTimeZoneStruct:inMemCtx:): new property getter that - returns the equivalent of the iCalTimeZone of the current event. - -2012-07-25 Wolfgang Sourdeau - - * OpenChange/MAPIStoreDBFolder.m (-createFolder:withFID:andKey:): - invoke "reloadIfNeeded" on the created folder object in order to - initialize it. - -2012-07-25 Francis Lachapelle - - * SoObjects/Mailer/SOGoMailFolder.m - (-deleteUIDs:useTrashFolder:inContext:): fixed comparison with the - trash folder name when using subfolders (ex: INBOX/Trash). - - * SoObjects/SOGo/SOGoSieveManager.m - (-updateFiltersForLogin:authname:password:account:): write the - filters before the vacation auto-reply. - - * SoObjects/Appointments/SOGoCalendarComponent.m - (-sendEMailUsingTemplateNamed:forObject:previousObject:toAttendees:withType:): - fixed the from header when the updated event has no mode organizer. - - * UI/WebServerResources/MailerUI.js (initMailer): define default - columns widths when not set. - -2012-07-24 Wolfgang Sourdeau - - * OpenChange/MAPIStoreUserContext.m - (-initWithUsername:andTDBIndexing:): attempt to read the user - password from a property list. - - * OpenChange/samba-get-config.py: new utility taking a samba - configuration variable and prints the value on stdout - -2012-07-24 Francis Lachapelle - - * UI/WebServerResources/UIxPreferences.js (savePreferences): - validate the email address of the sender mail and reply-to fields. - -2012-07-23 Jean Raby - * debian*/sogo.logrotate: - drop distro specific log rotate scripts - * debian*/sogo.install - * debian*/rules : - Use the logrotate script from Scripts/. - -2012-07-20 Ludovic Marcotte - - * UI/MailPartViewers/UIxMailRenderingContext.m - (_shouldDisplayAsAttachment:): refactored to consider - the "bodyId" parameter only for non text/* parts. - -2012-07-20 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (onEmailTo): append the email - address from the href attribute if it doesn't appear in the link content. - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m - (-startElement:namespace:rawName:attributes:): don't skip "mailto:" - href. - - * SoObjects/Appointments/SOGoAptMailReceipt.m (aptSummary-): new - method that returns a properly formatted string of the event title - with respect to the current operation (creation/deletion/update). - -2012-07-20 Wolfgang Sourdeau - - * OpenChange/NSObject+MAPIStore.m (-getSMTPAddrType:inMemCtx:): - new helper getter. - - * OpenChange/MAPIStoreSOGo.m - (sogo_message_attachment_create_embedded_message): new backend method. - - * OpenChange/NSObject+MAPIStore.m - (+fillAvailableProperties:withExclusions:): new method that fills - an existing array of properties with properties existing in - another class, as long as they are not listed in the array of - exclusions. - - * OpenChange/MAPIStoreObject.m (-init): assigned a mutable array - to "proxies" - (-canGetProperty:): test the proxies for the availability of - properties so that -getAvailableProperties:inMemCtx: can return an - accurate result. - - * OpenChange/MAPIStoreMessage.m (-getPidTagSubject:inMemCtx:): now - compute the return value based on PidTagNormalizedSubject and - PidTagSubjectPrefix as PidTagSubject is never actually set from - the client. - -2012-07-19 Wolfgang Sourdeau - - * OpenChange/MAPIStoreObject.m (-nameInContainer): moved method - from MAPIStoreSOGoObject and made mandatory for subclasses. - (-url): new methed moved from MAPIStoreSOGoObject. - - * OpenChange/MAPIStoreAppointmentWrapper.m: now a subclass of - MAPIStoreObjectProxy. - - * OpenChange/MAPIStoreCalendarMessage.m - (-initWithSOGoObject:inContainer:): we now register our - appointment wrapper as a proxy. - - * OpenChange/MAPIStoreObject.m (-addProxy:): new method that keeps - proxy objects in the new "proxies" ivar. - (-getProperty:withTag:inMemCtx:): added code that pass the request - to the available object proxies, when the property getters have - not been found in the local class. - - * OpenChange/MAPIStoreObjectProxy.[hm]: new class module that - provide a facility for providing property getters in the name of - another class, working around the fact that Objective-C does not - provide multiple-inheritance. - - * OpenChange/NSObject+MAPIStore.m - (+getAvailableProperties:inMemCtx:) - (-getAvailableProperties:inMemCtx:, canGetProperty:): methods - moved from MAPIStoreObject.m - -2012-07-18 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCalendarFolder.m (-createMessage): attach a - WOContext to the newEntry in order to enable page templates - resolution when notifications are sent. - - * OpenChange/MAPIApplication.m (-init): a WEResourceManager is - setup for the application so that page templates can be properly - be initialized. - - * OpenChange/MAPIStoreDBMessage.m (-objectVersion): shift the - version number by 16 bits, instead of doing it in -save. - (-save): don t swap the bytes of the version number as it would - return a wrong change number and a wrong change key for DB objects. - -2012-07-20 Wolfgang Sourdeau - - * OpenChange/NSObject+MAPIStore.m (-getSMTPAddrType:inMemCtx:): - new helper getter. - - * OpenChange/MAPIStoreSOGo.m - (sogo_message_attachment_create_embedded_message): new backend method. - - * OpenChange/NSObject+MAPIStore.m - (+fillAvailableProperties:withExclusions:): new method that fills - an existing array of properties with properties existing in - another class, as long as they are not listed in the array of - exclusions. - - * OpenChange/MAPIStoreObject.m (-init): assigned a mutable array - to "proxies" - (-canGetProperty:): test the proxies for the availability of - properties so that -getAvailableProperties:inMemCtx: can return an - accurate result. - - * OpenChange/MAPIStoreMessage.m (-getPidTagSubject:inMemCtx:): now - compute the return value based on PidTagNormalizedSubject and - PidTagSubjectPrefix as PidTagSubject is never actually set from - the client. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (_appendCycleException:firstInstanceCalendarDateRange:fromRow:forRange:withTimeZone:toArray:): - return immediately if the occurrence does not have a valid - recurrence-id. - -2012-07-20 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (onEmailTo): append the email - address from the href attribute if it doesn't appear in the link content. - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m - (-startElement:namespace:rawName:attributes:): don't skip "mailto:" - href. - - * SoObjects/Appointments/SOGoAptMailReceipt.m (aptSummary-): new - method that returns a properly formatted string of the event title - with respect to the current operation (creation/deletion/update). - -2012-07-19 Wolfgang Sourdeau - - * OpenChange/MAPIStoreObject.m (-nameInContainer): moved method - from MAPIStoreSOGoObject and made mandatory for subclasses. - (-url): new methed moved from MAPIStoreSOGoObject. - - * OpenChange/MAPIStoreAppointmentWrapper.m: now a subclass of - MAPIStoreObjectProxy. - - * OpenChange/MAPIStoreCalendarMessage.m - (-initWithSOGoObject:inContainer:): we now register our - appointment wrapper as a proxy. - - * OpenChange/MAPIStoreObject.m (-addProxy:): new method that keeps - proxy objects in the new "proxies" ivar. - (-getProperty:withTag:inMemCtx:): added code that pass the request - to the available object proxies, when the property getters have - not been found in the local class. - - * OpenChange/MAPIStoreObjectProxy.[hm]: new class module that - provide a facility for providing property getters in the name of - another class, working around the fact that Objective-C does not - provide multiple-inheritance. - - * OpenChange/NSObject+MAPIStore.m - (+getAvailableProperties:inMemCtx:) - (-getAvailableProperties:inMemCtx:, canGetProperty:): methods - moved from MAPIStoreObject.m - -2012-07-18 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCalendarFolder.m (-createMessage): attach a - WOContext to the newEntry in order to enable page templates - resolution when notifications are sent. - - * OpenChange/MAPIApplication.m (-init): a WEResourceManager is - setup for the application so that page templates can be properly - be initialized. - - * OpenChange/MAPIStoreDBMessage.m (-objectVersion): shift the - version number by 16 bits, instead of doing it in -save. - (-save): don t swap the bytes of the version number as it would - return a wrong change number and a wrong change key for DB objects. - -2012-07-18 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentObject.m - (_setupResponseInRequestCalendar:): we now return the - calendar read from the database and not use the one - from the request anymore, as it can override properties - other than participation status changes. - -2012-07-18 Jean Raby - * Tests/Integration/config.py.in: New config parameter: webCalendarURL - * Tests/Integration/webdavlib.py(HTTPPOST,HTTPGET): - Allow cookies in post and get requests. - * Tests/Integration/test-ui-posts.py: New test class - Currently contains only one test case which exercises addWebCalendar - - * SoObjects/Appointments/GNUmakefile: - use -Wl,--no-as-needed when linking. Fixes #1863 - - * Scripts/sql-update-1.3.16_to_1.3.17-mysql.sh - * Scripts/sql-update-1.3.16_to_1.3.17.sh: - New scripts to expand c_cycleinfo to mediumtext or varchar(1000000) - The field was expanded around 1.3.3. - See http://www.sogo.nu/bugs/view.php?id=1848 - -2012-07-16 Wolfgang Sourdeau - - * Tests/Integration/webdavlib.py (WebDAVQuery.set_response): make - use of xml.etree.cElementTree for speed and avoid using a - cStringIO altogether by directly passing the content string. - - * Tests/Integration/test-davacl.py (DAVCalendarSuperUserAclTest._getEvent) - (DAVCalendarAclTest._getEvent): ensure that the resulting event - does not contain any "\r" char as the XML parser would anyway - strip them. - -2012-07-13 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentObject.m - (-updateContentWithCalendar:fromRequest:): new method spawned from - the previous incarnation of PUTRequest:, designed to centralize - all the processed performed on an iCalendar instance, new or - derived from the original. - (-changeParticipationStatus:withDelegate:forRecurrenceId:): - reorganized the method workflow by not testing "calendar" as it is - guaranteed to be returned. Also, we save the iCalendar object from - here, as we cannot invoke the method above, which would reinvoke - this method in loop in the current state of the code. - - * SoObjects/Appointments/SOGoCalendarComponent.m - (-lookupOccurrence:): now a virtual method forcing the use by - subclasses of the new methods below. - (-saveCalendar:): new method that enables the saving of an - iCalendar object. - - * SoObjects/Appointments/iCalCalendar+SOGo.m: new category module. - (-eventWithRecurrenceId, -todoWithRecurrenceId): new method that - return as recurrence based on the id passed as parameter. - - * Tests/Integration/test-caldav-scheduling.py - (CalDAVSchedulingTest.setUp): use the proper password for - attendee1_delegate. - -2012-07-12 Jean Raby - - * SoObjects/Mailer/SOGoMailForward.m (from, to, cc, reply-to): - mailHeaders returns an array if there are multiple headers of the same type. - Handle this case to correctly show multiple from, to, cc and reply-to headers - in mail replies/forwards instead of crashing. - -2012-07-11 Ludovic Marcotte - - * Finished the implementation and testing of the two - new defaults. Also added documentation in the SOGo Installation - and Configuration Guide. - - * Updated UI/Templates/SchedulerUI/UIxCalendarProperties.wox to not - show the notification options if it's a web calendar or if the active - user isn't the owner of the calendar. - - * Added strings to translate and cleaned up the template to send - HTML mails instead of text/plain. - -2012-07-10 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-davNotifyOnPersonalModifications) - (-setDavNotifyOnPersonalModifications:) - (-davNotifyOnExternalModifications) - (-setDavNotifyOnExternalModifications:) - (-davNotifyUserOnPersonalModifications) - (-setDavNotifyUserOnPersonalModifications:) - (-davNotifiedUserOnPersonalModifications) - (-setDavNotifiedUserOnPersonalModifications:): new dav accessors. - - - * SoObjects/SOGo/SOGoObject.m (-davBooleanForResult:): new method - that returns a valid DAV boolean from a BOOL. - (-isValidDAVBoolean:): new method that validates the value as a - DAV boolean. - (-resultForDAVBoolean:): new method that returns a BOOL from a DAV - boolean. - -2012-07-09 Ludovic Marcotte - - * Dropped old templates (SOGoAptMailDeletionReceipt.wox - SOGoAptMailInvitationReceipt.wox and SOGoAptMailUpdateReceipt.wox) - which are in fact replaced by SOGoAptMailReceipt.wox. File added - to the repository. - - * Dropped SOGoAppointmentSendEMailReceipts - - * Added two new domain defaults: SOGoNotifyOnPersonalModifications - and SOGoNotifyOnExternalModifications. They allow users to be notified - when modifying their own calendars or when someone else to it. These - defaults are over-writable by users from their calendar properties window. - - * Implemented the code related to the two new defaults together with a - third option - which is to notify a specific person when one modifies - his/her calendar. This commit is partial as more testing is required - and some code changes to trigger the right notifications. - -2012-07-09 Jean Raby - - * Tools/SOGoToolUserPreferences.m: - use printf() instead of NSLog to print out user preferences. - Makes it easier to grep. - - * UI/WebServerResources/generic.js (onSearchFormSubmit): - Restore behavior of a single dot (.) in the search field (wildcard search) - - * UI/WebServerResources/SchedulerUI.js (onMenuRawEvent, onMenuRawTask): - New callback to show the event/task content from the menu - - * UI/Scheduler/UIxComponentEditor.m (rawAction): - New method that returns the object's raw content in a WOResponse. - - * UI/Templates/SchedulerUI/UIxCal{Day,Month,Main,Week}View.wox: - New contextual menu item: Show Raw Source - - * UI/WebServerResources/ContactsUI.js (onMenuRawContact): - Rework to use calendar/ics/raw - - * UI/Contacts/UIxContactFolderActions.m (rawAction): - Removed / moved to UI/Contacts/UIxContactActions.m - - * UI/Contacts/UIxContactActions.m (rawAction): - New method that returns the object's raw content in a WOResponse. - - * UI/Templates/ContactsUI/UIxContactFoldersView.wox: - Show vCard content -> Show Raw Source - - -2012-07-05 Jean Raby - - * UI/WebServerResources/generic.js (openGenericWindow): - New method that opens a simple new window. - - * UI/WebServerResources/ContactsUI.js (onMenuRawContact): - New callback to show the vCard content from the menu. - - * UI/WebServerResources/ContactsUI.js (onContactMenuPrepareVisibility): - Enable the export and raw functions only on vcards contacts. - - * UI/Templates/ContactsUI/UIxContactFoldersView.wox: - New contextual menu item: Show vCard content - - * UI/Contacts/UIxContactFolderActions.m (rawAction): - New method that returns the raw contact data for all the contact uids provided - - * UI/Contacts/UIxContactView.m (secondaryEmail): - function renamed to secondaryEmails. It now returns all addresses - instead of the first one found in the vcard. - - * UI/Templates/ContactsUI/UIxContactView.wox: - Show all addresses returned from secondaryEmails. - This still need some css tweaks. - -2012-07-01 Wolfgang Sourdeau - - * OpenChange/MAPIStoreRecurrenceUtils.m - (-setupRecurrenceWithMasterEntity:fromRecurrencePattern:): add - exception dates to master entity based on the - "DeletedInstanceDates" member of the struct. - (-fillRecurrencePattern:withEvent:inTimeZone:inMemCtx:): new name - for fillRecurrencePattern:withStartDate:andEndDate:, add exception - dates to struct. - - * OpenChange/NSDate+MAPIStore.m (NSDateCompare): new comparison - function for sorting array of NSDate instances. - -2012-06-30 Wolfgang Sourdeau - - * OpenChange/NSObject+MAPIStore.h: renamed - MAPIStoreTallocWrapper.MAPIStoreSOGoObject to .instance, to avoid - confusion in certain versions of GCC with our new class type. - -2012-06-29 Jean Raby - - * SoObjects/SOGo/WORequest+SOGo.[mh] - (-isAndroid): new method to detect whether the - request has been performed from an android client - - * SoObjects/Contacts/SOGoContactFolders.m (appendSystemSources): - Let sogo append system sources if the request comes from an android - client even if its user agent matches the IPhoneAddressBook - -2012-06-29 Wolfgang Sourdeau - - * OpenChange/MAPIStoreSOGo.m - (sogo_message_attachment_open_embedded_message): added the "mode" - parameter. - - * OpenChange/SOGoMAPIDBObject.m: new class module that replaced - SOGoMAPIFSMessage. - - * OpenChange/SOGoMAPIDBFolder.m: new class module that replaced - SOGoMAPIFSFolder. - -2012-06-28 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoObject.m (-initWithName:inContainer:): make - sure that "_name" is neither nil nor empty. - -2012-06-27 Jean Raby - - * SoObjects/Appointments/SOGoAppointmentObject.m - (PUTAction:): detect conflicting event UID and - deny the request accordingly. - -2012-06-21 Ludovic Marcotte - - * Added the SOGoSearchMinimumWordLength domain - default which controls the minimal length required - before trigging server-side search operations for - attendee completion, contact searches, etc. The - default value is 2, which means search operations - are trigged once the 3rd character is typed. - -2012-06-20 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentObject.m - (-_handleResourcesConflicts:forEvent:): We now - handle correctly recurring events overlapping other - recurring events. - -2012-06-19 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentFolder.m (-importCalendar:): - We now handle correctly floating events by forcing the use of - the user's timezone. - - * SoObjects/Appointments/SOGoCalendarComponent.m (-expandGroupsInEvent:): - We now remove all attendees that are equal (email-based comparison) to - the event's organizer instead of only for decomposed groups. - -2012-06-12 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGroup.m - (+groupWithValue:andSourceSelector:inDomain:): handle the case - the value of "objectclass" is actually an NSString instance, - otherwise causing a crash with the NSArray methods. - -2012-06-04 Francis Lachapelle - - * UI/WebServerResources/UIxFilterEditor.js (savePreferences): - don't validate filters if they are not visible (when matching all - incoming messages). - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-_appendCycleException:firstInstanceCalendarDateRange:fromRow:forRange:withTimeZone:toArray:): - adjust recurrence id according to timezone when dealing with a - floating all-day event. - -2012-06-01 Francis Lachapelle - - * SoObjects/SOGo/NSString+Utilities.m - (-_handleURLs:textToMatch:prefix:inRanges:): don't reset the - prefix for the subsequent matching strings. This fixes links in - messages with multiple email addresses, some of which already - prefixed by "mailto;". - -2012-06-01 Wolfgang Sourdeau - - * OpenChange/*: fixed build errors with gcc-4.7 - - * UI/MailPartViewers/UIxMailPartAlternativeViewer.m - (-childPartName): fixed a potential crash by building the NSString - from the integer itself, with the proper format string. - - * SoObjects/SOGo/NSString+Crypto.m - (-isEqualToCrypted:withDefaultScheme:): invoke "intValue" rather - than "integerValue" on the encoding number as the int type is not - crucial and it breaks the build with old versions of GNUstep. - - * SoObjects/SOGo/NSString+Crypto.[hm]: new module that provides - category methods for returning encrypted passwords strings and - their encryption algorithm. - -2012-05-31 Ludovic Marcotte - - * SoObjects/SOGo/SOGoGroup.m - we now handle lowercase - all attribute names - * SoObject/SOGo/LDAPSource.m - moved the lowercasing - of attributes to SOPE. - * Added patch from bug #1608. This add many more password - schemes for SQL authentication. - * SoObject/Mailer/SOGoMailFolder.m (-_readMailboxACL): we - now create the mailbox if we are trying to read ACL of - a deleted mailbox. - * UI/MailerUI/UIxMailEditor.m (-personalContactInfos): we check - if the folder still exist and if the database isn't down - before performing any address books search operations. - * UI/MailerUI/UIxMailMainFrame.m (-unseenCountFolders): we no - longer fill up the list of mailboxes to with the ones that are - targets for "fileinto" methods if Sieve scripts aren't enabled - in SOGo's domain defaults. - -2012-05-29 Francis Lachapelle - - * UI/WebServerResources/UIxMailEditor.js (validateEditorInput): - merged with onValidate. - (onValidate): don't force the subject to be defined, but alert - the user. - - * UI/MailerUI/UIxMailView.m (-messageSubject): don't set the - subject to "Untitled" if it's not set. - - * UI/MailPartViewers/UIxMailPartMessageViewer.m (-messageSubject): idem. - - * UI/MailerUI/UIxMailEditor.m (-validateForSend): don't force the - subject to be defined. - - * SoObjects/Mailer/SOGoMailObject+Draft.m (-subjectForReply): make - sure subject is a defined value to avoid "null" strings in the - reply message. - -2012-05-28 Francis Lachapelle - - * UI/WebServerResources/SchedulerUI.js (validateUploadForm): hide - Cancel button when the form is valid and disable the Submit button. - - * UI/WebServerResources/ContactsUI.js (validateUploadForm): idem. - -2012-05-24 Jean Raby - - * debian*/rules: Restart sogod after pkg upgrade (dh_installinit -R) - * Scripts/sogo-init.d-*: add support for conditional restart. - Patch from Romain Le Disez - * sogo.spec: Restart sogod during post installation if it was already running - - * Apache/SOGo.conf: - Use mod_expires to allow long term caching of static content. (1 year) - Note that from now on, a resource's URL _must_ change to let the client - reload it. This is now done automatically for 'rsrc' in the wox templates, - but must be done manually for files referenced from css and js. - -2012-05-23 Wolfgang Sourdeau - - * UI/WebServerResources/generic.js - (clickEventWrapper.button_clickEventWrappe): don't invoke - "preventDefault" on elements that do not have a tagName of "A". - -2012-05-18 Jean Raby - - * SoObjects/Mailer/SOGoDraftObject.m (bodyPartForAttachmentWithName): - Merge back lost code to handle encoding of binary and rcf822 attachments. - -2012-05-15 Wolfgang Sourdeau - - * OpenChange/gen-property-selectors.py: the use of the "{}" to - construct a set is only valid on py2.7 therefore we make use of - set([]) instead. - -2012-05-15 Jean Raby - - * SoObjects/Appointments/SOGoAppointmentObject.m (_handleResourcesConflicts): - Deny access to resources if the resource's ACL don't allow the organizer - to read its freebusy info. - Without this, sogo would always auto-accept invitations from 'unprivileged' - users, potentially bypassing the multiplebooking parameter. - -2012-05-14 Wolfgang Sourdeau - - * OpenChange/gen-property-selectors.py: "bannedProps" is now a - set, for faster lookups. - - * UI/WebServerResources/UIxContactsUserFolders.js: folder ids are - in the form "user:module/folder", therefore we must remove the - first char, which is a slash. - - * UI/WebServerResources/generic.js (subscribeToFolder): prepend a - "/" to the folder name, as it comes originally in the form - user:module/folder. - - * UI/WebServerResources/UIxPreferences.js (initMailAccounts) - (displayMailAccount): getElementsByTagName seems too standard for - IE, we use $$() now so that we can invoke "each" on the result set - without triggering an exception. - -2012-05-09 Jean Raby - - * SoObjects/Appointments/SOGoAppointmentObject.m (PUTAction): - Delete bitrotten code that could end up duplicating attendees. - Behavior exposed by the new caldav tests - - * Tests/Integration/config.py.in - * Tests/Integration/test-caldav-scheduling.py - * Tests/Integration/test-ical.py - * Tests/Integration/test-davacl.py: - Use an unprivileged webdavclient where possible. - This would have uncovered the resources calendar autocreation bug. - - * Tests/Integration/test-caldav-scheduling.py: - New tests to excercise somewhat fragile code in dav autoscheduling. - -2012-05-09 Jean Raby - - * SoObject/SOGo/SOGoParentFolder.m (_createPersonalFolder): - Automatically create the folder if its owner is a resource. - (not if the active user is a resource) - -2012-05-09 Ludovic Marcotte - - * SoObjects/Mailer/SOGoDraftObject.m - don't encode message/rfc822 - parts in base64 - it's not allowed. - -2012-05-08 Francis Lachapelle - - * UI/WebServerResources/ContactsUI.js (configureDraggables) - (configureDroppables, startDragging, whileDragging, stopDragging) - (dropAction): drag'n'drop is how handle by jQuery instead of Scriptaculous. - - * UI/WebServerResources/MailerUI.js (configureDraggables) - (configureDroppables, startDragging, whileDragging, stopDragging) - (dropAction): idem. - - * UI/WebServerResources/generic.js (onCloseButtonClick) - (showPromptDialog, showSelectDialog, showAuthenticationDialog) - (disposeDialog, _disposeDialog): idem. - - * UI/WebServerResources/SOGoRootPage.js (initLogin): idem. - - * UI/Contacts/UIxContactView.m (-primaryEmail): in the mailto - link, remove double-quotes and escape single-quotes from the fullname. - (-secondaryEmail): idem. - -2012-05-04 Wolfgang Sourdeau - - * OpenChange/MAPIStoreSOGo.m: register and unregister current - thread before and after each backend operation, in order to avoid - issues in multithreaded environment. - -2012-05-01 Wolfgang Sourdeau - - * UI/WebServerResources/generic.js (accessToSubscribedFolder): use - the last part of the string as folder identifier. Otherwise we end - up with the module name. - - * SoObjects/Mailer/SOGoDraftObject.m - (-bodyPartForAttachmentWithName:): attach rfc822 content as - with base64 encoding, just as any other non-text data. - -2012-04-30 Ludovic Marcotte - - * SoObjects/SOGo/SOGoDomainDefaults.{h,m} - added - -hideSystemEMail that honors SOGoHideSystemEMail. - Right now, this variable is limited only to - the calendar-user-address-set response but can/will be - extended later. - - * SoObjects/Appointments/SOGoUserFolder+Appointments.m - (-davCalendarUserAddressSet): Modified to honor - SOGoHideSystemEMail domain default. - - * SoObjects/Mailer/SOGoDraftObject.m (-lookupName:...): - We prioritize the lookup of the "Drafts" folder over the - "Sent" one if both are matching. - - * SoObjects/Mailer/SOGoMailFolder.m: Same as above. - - -2012-04-25 Jean Raby - - * SoObjects/Mailer/SOGoDraftObject.m - (-updateFromLDIFRecord:): carry the c_info attribute - in vcards through the x-sogo-contactinfo attribute. - This functionality was lost a while ago. - We used to use the NOTE attribute for this. From now on, - the sogo-connector.autoComplete.commentAttribute have to be set to - 'unprocessed:x-sogo-contactinfo' instead of 'Notes'. - - -2012-04-25 Wolfgang Sourdeau - - * UI/PreferencesUI/UIxPreferences.m (_extractMainIdentity:): save - the custom full name even when the configured custom email has the - same value as the system value. - - * SoObjects/SOGo/SOGoUser.m (-appendSystemMailAccount): append - custom identity even though only the full name has a custom value. - - * SoObjects/Mailer/SOGoDraftObject.m - (-bodyPartForAttachmentWithName:): force conversion of rfc822 - content to quoted-printable, since it would otherwise risk passing - 8bit data via the "APPEND" command. - -2012-04-24 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUI.js (updateCalendarStatus): if - "event" is set, we set its returnValue to true, to avoid a bug - occurring since the use of "clickEventWrapper". - (resizeCalendarHeaderDIV): new function that resizes the all-day - event containers progressively. - (_drawCalendarAllDayEvents, _deleteCalendarEventBlocks): invoke - the above. - - * UI/WebServerResources/HTMLElement.js: get "HTMLCollection" - and "NodeList" classes by class rather than by direct reference. - - * UI/WebServerResources/generic.js (clickEventWrapper): pass the - value of "this" to the invoked callback. - -2012-04-24 Ludovic Marcotte - - * SOPE/GDLContentStore/GCSFolder.m (-writeContent:toName:baseVersion:): - We now keep track of the saved version for all callers. Also updated - all callers to reflect that change. - - * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:) - Took some of the logic from SOGoContentObject's -PUTAction: to - avoid etag mismatches. - -2012-04-23 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentObject.m: We now - automatically add/remove attendees to recurrence exceptions - when they are being added to the master event. Also - fixed -PUTAction: so that we fetch the organizer of a recurrence - exception when the master doesn't have a copy of it. - - * SoObjects/Appointments/SOGoAppointmentOccurence.m: added - -componentTag to avoid server crash. - -2012-04-20 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUI.js (onCalendarReload): invoke - changerCalendarDisplay when no web calendars are present... - - * UI/WebServerResources/HTMLElement.js: enhanced both - HTMLCollection and NodeList with the "Enumerable" interface. - - * UI/WebServerResources/UIxPreferences.js (displayMailAccount): - disable the "fullName" and "email" input fields of the first - account only when SOGoMailCustomFromEnabled is NO. - - * UI/PreferencesUI/UIxPreferences.m (_extractMainIdentity:): the - custom values for "fullName" and "email" are now registered in the - user defaults, if "email" is different from all the values - returned by the user directory AND if SOGoMailCustomFromEnabled is - YES. - - * SoObjects/SOGo/SOGoUserDefaults.m (-setMailCustomFullName:) - (-mailCustomFullName): new accessors for the new - "SOGoMailCustomFullName" user default. - (-setMailCustomEmail:, -mailCustomEmail): new accessors for the - new "SOGoMailCustomEmail" user default. - - * SoObjects/SOGo/SOGoDomainDefaults.m (-mailCustomFromEnabled): - new getter for the "SOGoMailCustomFromEnabled" domain default. - - * SoObjects/Mailer/SOGoDraftObject.m - (-mimeHeaderMapWithHeaders:excluding:) take the new "replyTo" - header into account. - - * SoObjects/SOGo/SOGoUser.m (-_appendSystemMailAccount): specify - the value of "SOGoMailReplyTo" in the "replyTo" field of each - identity, if present. - When "SOGoMailCustomFromEnabled" is YES and the user has set - a value for "SOGoMailCustomEmail", a first identity is created and - set at the first position in the list, based on that value and on - "SOGoMailCustomFullName". - - * SoObjects/SOGo/SOGoUserDefaults.m (-setMailReplyTo:) - (-mailReplyTo:): accessors for the "SOGoMailReplyTo" user default. - -2012-04-19 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:) - We now handle cases where the last attendee AND the organizer - is removed from the event during a PUT action (happens when - you delete the last attendee of an event with iCal). This used - to crash sogod. - * SoObjects/Appointments/SOGoAppointmentFolder.m (-importCalendar:) - Fixed the import process of broken all-day events (#1055) - -2012-04-19 Francis Lachapelle - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-importCalendar:): associate occurrences of a repeating event to - its master vcalendar to avoid duplicated events when importing a .ics. - -2012-04-19 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoParentFolder.m (-appendSubscribedSources): - ensure the array set as values in the settings dicts are not nil - prior to setting them. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:): - fix the date condition for cycle record, by using c_cycleenddate - instead of c_enddate. - -2012-04-18 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentObject.m (-_handleResourcesConflicts: ...): - We now handle recurring appointments by fetching the freebusy information for one full - year from the date of the event. Also improved the conflict - reporting messages. - - * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:): - update the versit string in the request when updating the event, in - case a resource auto-accepted the event - - * SoObjects/SOGo/SOGoGCSFolder.m: renamed -subscribeUser:reallydo: to - subscribeUserOrGroup:reallydo and we now handle group subscriptions. - Refactored all callers. - - * SoObjects/SOGo/SOGoParentFolder.m (-_appendSubscribedSource:): now returns a - BOOL if the permission are still valid or not - - * SoObjects/SOGo/SOGoParentFolder.m (-appendSubscribedSources): consumes the - returned value from -_appendSubscribedSource: and cleans up SubscribedFolders - and FolderDisplayNames accordingly in the user's settings. - - * SoObjects/SOGo/SOGoUserManager.m (-_fillContactInfosForUser: ...): we now - set the isGroup attribute as we need this for quick groups - resolving. - -2012-04-18 Wolfgang Sourdeau - - * UI/WebServerResources/generic.js (showAuthenticationDialog): new - dialog providing an interface for requesting a username and a - password to acallback passed as parameter. - (accessToSubscribedFolder): fixed method to return the proper url - for folders owned by the active user. - - * UI/WebServerResources/SchedulerUI.js (reloadWebCalendars): now - invokes "reloadAction" on every web calendar foldar, in a chain of - simultaneous requests. - (reloadWebCalendar): new function invoking "reloadAction" on a - single cal folder. - (reloadWebCalendarCallback): callback for the above invocation - that takes care of refreshing the views at the end of a refresh - chain, if present, and when useful. - - * UI/Scheduler/UIxCalFolderActions.m (reloadAction): new web - method that applies only to SOGoWebAppointmentFolder instances and - which returns a JSON representation of the result returned by - -[SOGoWebAppointmentFolder loadWebCalendar]. This method replaces - -[UIxCalMainActions -reloadWebCalendars]. - (setCredentialsAction): new web method acting as a proxy for - -[SOGoWebAppointmentFolder setUsername:andPassword:]. - - * UI/WebServerResources/generic.js (clickEventWrapper): new - function that returns a wrapper function for click callbacks which - invokes "preventDefault" on the "event" parameter before it is - passed to the real callback. - - * UI/Scheduler/UIxCalMainActions.m - (-reloadWebCalendarsAndRedirectAction): removed obsolete method. - (-reloadWebCalendars): removed obsolete method. - - * SoObjects/Appointments/SOGoAppointmentFolders.m - (-newWebCalendarWithName:atURL:): perform sanity checks on the url - parameter. - - * SoObjects/Appointments/SOGoWebAppointmentFolder.m - (-setUsername:andPassword:): new method that associate an - encrypted login pair for authenticating to remove calendars. - (-loadWebCalendar): rewrote method to make use of curl, thereby - permitting HTTP authentication. A NSDictionary containing - different informations about the connection is not returned, - including the HTTP status and an error tag, when required. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-importCalendar:): journals and freebusys are not - supported. - -2012-04-16 Jean Raby - - * SOPE/NGCards/iCalMonthlyRecurrenceCalculator.m - (-recurrenceRangesWithinCalendarDateRange:): - Fix of by one error. (bug #1772) - -2012-04-16 Wolfgang Sourdeau - - * SoObjects/SOGo/NSString+Utilities.m (-encryptWithKey:) - (-decryptWithKey:): new methods providing symmetric encryption of - strings. - - * Tests/Unit/SOGoTestRunner.m (-run): do not empty the pool after - each test. - -2012-04-13 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m (-bareFetchFields: ...), - (-fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:): - restored c-style escaping of sql-style escaping of quote characters. - (-davCalendarShowAlarms, setDavCalendarShowAlarms:): new proxy dav - accessors for "showCalendarAlarms" and "setShowCalendarAlarms:". - -2012-04-12 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m (-componentSQLFilter): new - overridable method that enables passing filters for - toOneRelationshipKeys from subclasses. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-davCalendarComponentSet): componentSet is now an ivar. Include - VTODO only with showCalendarTasks returns YES. - (-davResourceType): return vtodo-collection only when - showCalendarTasks returns YES. - - * UI/Scheduler/UIxCalListingActions.m - (_fetchFields:forComponentOfType:): do not check for - "showCalendarTasks" since it is now handled at the - SOGoApopintmentFolder level. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-bareFetchFields: ..., - (-fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:): - make use of a mutable array to define the global WHERE clause, by - joining the elements with " AND ". - (-additionalWebdavSyncFilters): don't include 'vtodo' components - when -[self showCalendarTasks] returns NO. - -2012-04-11 Francis Lachapelle - - * UI/WebServerResources/ContactsUI.js (onDocumentKeydown): don't - trap keyboard input when inside a textarea. - -2012-04-05 Wolfgang Sourdeau - - * SoObjects/SOGo/NSString+Utilities.m (-objectFromJSONString): - added a work-around for JSON strings that were escaped one too - many time, in previous versions of sope-gdl1-xxx. - -2012-04-04 Jean Raby - - * Added a new tool: 'sogo-tool expire-sessions' - Along with the associated new cronjob, this allows - user sessions expiration without a custom script. - - * While there, sort tools in sogo-tool output - -2012-04-03 Francis Lachapelle - - * Tools/SOGoToolRemoveDoubles.m (-removeDoublesFromFolder) - (-amountOfFilledQuickFields): lowered the case of the - telephonenumber table fieldname. - - * OGoContentStore/OCSContactFieldExtractor.m - (-extractQuickFieldsFromVCard): idem. - -2012-03-30 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCalendarMessage.m (-save): remove comment if - content is "\n". - - * OpenChange/MAPIStoreTasksMessage.m (-save): do not reset fields - that have not been passed in the properties array, since only - RopDeleteProperties should remove them. - Remove comment if content is "\n". - - * OpenChange/MAPIStoreObject.m (-addPropertiesFromRow:): dates are - now all converted to the user's timezone, even though it just - inverts the problem we currently have. - - * OpenChange/MAPIApplication.m (-init): utcTZ is now initialized - here. - - * OpenChange/MAPIStoreTypes.[hm]: new host module for utcTZ. - - * OpenChange/MAPIStoreUserContext.m (-timeZone): new method that - returns the timezone of an owner user. - - * OpenChange/MAPIStoreObject.m (-ownerTimeZone): removed method, - replaced with the one above. - -2012-03-29 Francis Lachapelle - - * UI/WebServerResources/UIxPreferences.js (savePreferences): fixed - validation of end date of vacation of message when not using ISO - format (currently limited to French). - - * UI/WebServerResources/ContactsUI.js (startDragging): create an - overlapping safety block (div) to avoid possible selection of the - underlying text. - - * UI/WebServerResources/MailerUI.js (startDragging): idem. - -2012-03-29 Francis Lachapelle - - * UI/WebServerResources/UIxPreferences.js (savePreferences): fixed - validation of end date of vacation of message when not using ISO - format (currently limited to French). - - * UI/WebServerResources/ContactsUI.js (startDragging): create an - overlapping safety block (div) to avoid possible selection of the - underlying text. - - * UI/WebServerResources/MailerUI.js (startDragging): idem. - -2012-03-28 Wolfgang Sourdeau - - * SoObjects/Contacts/SOGoFolder+CardDAV.m (_isValidFilter:): - accept "email" as filter name. - (_appendObject:withBaseURL:toREPORTResponse:): fixed the ordering - of XML elements as the address*-data props where put outside of - the tree. - - * SoObjects/SOGo/LDAPSource.m (-allEntryIDs): take the _filter - ivar into account. - -2012-03-28 Wolfgang Sourdeau - - * OpenChange/SOGoMAPIFSMessage.m - (_readFileChangesDataWithDate:andInode:): use the inode number - rather than the filesize as change indicator since a new file is - created each time the dictionary is written to disk, thanks to the - "atomically" flag. - (-save): write the file atomically. - - * SoObjects/Contacts/SOGoFolder+CardDAV.m (_isValidFilter:): - accept "email" as filter name. - (_appendObject:withBaseURL:toREPORTResponse:): fixed the ordering - of XML elements as the address*-data props where put outside of - the tree. - - * SoObjects/SOGo/LDAPSource.m (-allEntryIDs): take the _filter - ivar into account. - -2012-03-27 Wolfgang Sourdeau - - * SoObjects/Contacts/SOGoContactFolders.m - (-lookupName:inContext:acquire:): overriden method that enables - the lookup of hidden public sources with iOS devices. - - * SoObjects/Contacts/SOGoContactLDIFEntry.m (-davAddressData): new - getter similar to davCalendarData. - - * SoObjects/Contacts/SOGoContactSourceFolder.m - (-davAddressbookMultiget): new REPORT handler based on - -[SOGoAppointmentFolder davCalendarMultiget]. - - * SoObjects/Contacts/SOGoUserFolder+Contacts.m - (-davDirectoryGateway): new getter that returns the url to the - first available directory source. - (-davResourceType): declare resource as "directory" (carddav). - -2012-03-27 Wolfgang Sourdeau - - * SoObjects/Contacts/SOGoContactFolders.m - (-lookupName:inContext:acquire:): overriden method that enables - the lookup of hidden public sources with iOS devices. - - * SoObjects/Contacts/SOGoContactLDIFEntry.m (-davAddressData): new - getter similar to davCalendarData. - - * SoObjects/Contacts/SOGoContactSourceFolder.m - (-davAddressbookMultiget): new REPORT handler based on - -[SOGoAppointmentFolder davCalendarMultiget]. - - * SoObjects/Contacts/SOGoUserFolder+Contacts.m - (-davDirectoryGateway): new getter that returns the url to the - first available directory source. - (-davResourceType): declare resource as "directory" (carddav). - -2012-03-26 Wolfgang Sourdeau - - * OpenChange/MAPIStoreTasksMessage.m (-save): take PR_HTML as - possible value for the COMMENT field, as as with - MAPIStoreCalendarMessages. - - * OpenChange/MAPIApplication.m (-init): removed hack pertaining to - UnixSignalHandler since the class no longer exists. - -2012-03-23 Francis Lachapelle - - * Tools/SOGoToolUserPreferences.m (-run): we now take the proper - argument when setting the user defaults from the command-line. - -2012-03-22 Francis Lachapelle - - * UI/MailerUI/UIxMailFolderActions.m (-emptyTrashAction:): we now - unsubscribe from the folders found in the trash. - -2012-03-22 Wolfgang Sourdeau - - * OpenChange/MAPIStoreTasksMessage.m (-save): - PidLidPercentComplete is a double, that we need to convert in - order to obtain the proper value. - -2012-03-21 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserManager.m (_compactAndCompleteContacts:): - if "mail" is an array, all values are added to "c_emails". - - * SoObjects/Contacts/SOGoContactSourceFolder.m - (_flattenedRecord:): if "mail" is an array, we only take the first - value of it. - - * SoObjects/Contacts/SOGoContactLDIFEntry.m (-simplifiedRecord): - new record guaranteeing that all array values have been stripped - and converted to strings. - -2012-03-20 Francis Lachapelle - - * SoObjects/Mailer/SOGoMailObject+Draft.m - (_contentForEditingFromKeys:): prefer the HTML part over the text - part when composing HTML messages. - -2012-03-20 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserFolder.m (-davLastName, -davFirstName): - quick and dirty implementation of those getters. - - * OpenChange/MAPIStoreAppointmentWrapper.m (-_setupITIPContext): - ensure method is uppercase. - - * OpenChange/MAPIStoreCalendarMessage.m - (-getPidLidAppointmentSequence:inMemCtx:): new getter. - (-save): properly initialize CREATED, LAST-MODIFIED, DTSTAMP and - SEQUENCE from MAPI properties. - - * OpenChange/MAPIStoreAppointmentWrapper.m - (-getPidLidAppointmentSequence:inMemCtx:): new getter. - - * OpenChange/NSDate+MAPIStore.m (-isNever): new accessor for dates - occurring in 4500. - - * OpenChange/MAPIStoreTypes.m (MAPIChangeKeyGUIDCompare): NSData - arguments passed as "id" due to the pickiness of some versions of - gcc. - -2012-03-19 Wolfgang Sourdeau - - * Main/SOGo+DAV.m (_fillCollections:where:matches:inContext:): - added bogosupport for - "{http://calendarserver.org/ns/}email-address-set". - (_principalCollectionsMatching:inContext:): relationship between - search criteria is now and "OR" rathern than an "AND". - - * SoObjects/Appointments/SOGoUserFolder+Appointments.m - (-davCalendarUserType, -davEmailAddressSet): new DAV accessors. - - * OpenChange/MAPIStoreCalendarMessage.m (-save): check recipients - even if PidLidAppointmentStateFlags is nil or 0, since all that - matters is that the "recipients" dict be present in the properties - dictionary. - - * OpenChange/SOGoMAPIFSMessage.m (-init): init 2 new ivars: - fileSize and lastModificationTime. - (-properties): check the current file size and last modification - time against cached values and reload the props file if anything - changed. - (-creationTime, -lastModificationTime): new return type: NSDate - instead of NSCalendarDate. - -2012-03-16 Wolfgang Sourdeau - - * OpenChange/MAPIStoreGCSFolder.m - (-predecessorChangeListForMessageWithKey:): same as below. - (-setChangeKey:forMessageWithKey:): synchronise the version cache - if the message entry is not found. - (-updateVersionsForMessageWithKey:withChangeKey:): new method, - common to all GCS messages, that updates the folder cache and - insert the PidTagChangeKey provided by the client during the save - operations. - - * OpenChange/MAPIStoreMailFolder.m - (-predecessorChangeListForMessageWithKey:): the returned list must - be binary ordered by GUID (as specified in the SPEC). We now do so - using the new function below. - (-getPidTagMessageClass:inMemCtx:): removed method, as folders are - not supposed to return a PidTagMessageClass attribute. - - * OpenChange/MAPIStoreTypes.m (MAPICNCompare): added as void * - parameter so that the function can be used as a comparator - function in NSArray sort methods. - (MAPIChangeKeyGUIDCompare): new comparator function to compare the - GUID of two change key streams. - - * OpenChange/MAPIStoreGCSMessage.m (-updateVersions): new proxy - method for -[MAPIStoreGCSFolder - updateVersionsForMessageWithKey:withChangeKey:]. - - * OpenChange/MAPIStoreGCSBaseContext.m - (+createRootSecondaryFolderWithFID:andName:forUser:): setup the - userContext in the MAPIApp object. - - * OpenChange/MAPIStoreMailContext.m - (+createRootSecondaryFolderWithFID:andName:forUser:): setup the - userContext in the MAPIApp object. - - * OpenChange/MAPIStoreContactsFolder.m - (-getPidTagDefaultPostMessageClass:inMemCtx:): new getter. - - * OpenChange/MAPIStoreCalendarFolder.m - (-getPidTagDefaultPostMessageClass:inMemCtx:): new getter. - - * OpenChange/MAPIStoreTasksFolder.m - (-getPidTagDefaultPostMessageClass:inMemCtx:): new getter. - - * OpenChange/MAPIStoreFolder.m - (-getPidTagDefaultPostMessageClass:inMemCtx:): new getter. - - * OpenChange/MAPIStoreMessage.m - (-getPidTagMessageStatus:inMemCtx:): removed useless getter. - - * OpenChange/MAPIStoreSOGo.m (sogo_backend_init): check for - "SOGoDebugLeaks" in the user defaults and activate GSDebug - allocation utilities. - - * OpenChange/NSData+MAPIStore.m (+dataWithChangeKeyGUID:andCnt:): - new method replacing _dataFromChangeKeyGUID:andCnt: from - MAPIStore{GCS,Mail}Folder. - -2012-03-16 Jean Raby - - * sogo.spec debian/sogo.postint: upon installation, update timestamp - on WebServerResources/* to let the webserver know the files changed. - Should fix issues where browsers would use a locally cached version - of a resource when the sogo package have just been upgraded. - -2012-03-15 Francis Lachapelle - - * UI/WebServerResources/generic.js (onPreferencesClick): don't - allow the user to open the preferences window multiple times. - - * UI/WebServerResources/SOGoDragHandles.js (enableRightSafety): - new method to display a "safety" block on top of the right block - when dragging the handle. This fixes a problem when the right - block contains an instance of CKEditor. - -2012-03-14 Francis Lachapelle - - * UI/MailerUI/UIxMailFolderActions.m (-deleteAction): we now - unconditionaly unsubscribe from the folder and subscribe to the - folder moved to the trash. - - * SoObjects/Mailer/SOGoMailFolder.m (-renameTo): idem. - - * UI/WebServerResources/UIxPreferences.js (focusCKEditor) - (hideSignature): new functions to wait until the CKEditor is ready - before performing certain actions. Fixes a problem with IE. - - * UI/WebServerResources/SOGoTimePicker.js (position): new method - to be able to recompute the position of the widget. - - * UI/WebServerResources/UIxAppointmentEditor.js - (refreshAttendees): when changing the attendees, we recompute the - position of the time pickers because the attendees link could - shift up or down the time fields. - -2012-03-13 Francis Lachapelle - - * UI/WebServerResources/UIxFilterEditor.js (savePreferences): - only save the filters if there's at least one rule and one action defined. - - * UI/WebServerResources/ContactsUI.js (configureDraggables): - increased the delay before starting drag and drop. - - * UI/WebServerResources/MailerUI.js (configureDraggables): idem. - - * UI/WebServerResources/UIxAclEditor.js (addUser): fixed - positioning of new user. - -2012-03-13 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCalendarFolder.m - (-getPidTagDefaultPostMessageClass:inMemCtx:): new getter. - - * OpenChange/MAPIStoreFolder.m - (_modifyPermissionEntryForUser:withRoles:isAddition:withACLFolder:): - skip any modification when user is nil. - (_usernameFromEntryId:): when the bytes array is nil or is empty, - we return a nil username. - (-modifyPermissions:withCount:andFlags:): ignore the presence of - certain fields but not others depending on the requested - modification. - -2012-03-12 Francis Lachapelle - - * SoObjects/SOGo/WORequest+SOGo.m (-isIPhoneAddressBookApp): catch - the user agent of iOS 5.0.1 on iPad. - -2012-03-12 Wolfgang Sourdeau - - * OpenChange/MAPIStoreGCSFolder.m (-lastMessageModificationTime): - force a synchronisation from here to ensure that the cache is - up-to-date. - - * OpenChange/MAPIStoreTypes.m (_reverseCN): fixed used of ull - constants on 32 bit platforms. - - * OpenChange/MAPIStoreGCSFolder.m (-componentQualifier): now - provided by the parent class itself. - (-contentComponentQualifier): new method that returns a qualifier - that translated to "c_content like '%BEGIN:XXX%'". This is a hack - to work-around the fact that calendar folders may content both - vevent and vtodo and that c_component, being part of the quick - table, is no longer available when a record is deleted. - (-synchroniseCache): update version values for deleted records - too, by taking into account the fact that their c_version value - might still be 0. Make use of contentComponentQualifier above. - Remove the modified records from the SOGoGCSFolder cache. - (-getDeletedKeysFromChangeNumber:andCN:inTableType:): wander the - list of deleted records and no longer increase the change number, - as this is now done from "synchroniseCache". Also, handle the case - were deleted records might already have been reported by comparing - their change number to the one provided as parameter. The - resulting change number is now guaranteed to be the highest one. - (-component): new subclassable method that returns a string - matching the folder's handled component. - - * OpenChange/MAPIStoreFolder.m - (-getPidTagLocalCommitTimeMax:inMemCtx:): returns - MAPISTORE_ERR_NOT_FOUND if the resulting date is nil. - - * OpenChange/MAPIStoreGCSMessage.m - (-getPidTagPredecessorChangeList:inMemCtx:): when the list is - missing, request a synchronisation from the container as the - message might now have been synchronised yet... - - * OpenChange/MAPIStoreTypes.m (MAPICNCompare): new function that - returns an NSComparisonResult for two change numbers (reverse - format). - -2012-03-11 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCalendarMessage.m - (-getPidLidAppointmentMessageClass:inMemCtx:): returns "IPM.Appointment". - (-getPidLidSideEffects:inMemCtx:): returns the value specified in - OXOCAL, section 2.2.2.2. - (_fixupAppointmentObjectWithUID:): renamed method and made more - generic, in order to handle the case where the response record has - already been deleted. - (-save): handle organizer and attendees more in compliance with - the spec, in order to avoid ending up with an empty event when an - invitation is being replied to. Of course, the documentation - happened to be inexact with regardes to the value of - "PidTagRecipientTrackStatus", which can be 5 even though the user - replied with another value... Also, lowered the priority of - SOGo-specific hacks for setting the organizer. - -2012-03-09 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailVolatileMessage.m (-submitWithFlags:): - skip any message that is not of class "IPM.Note", in order to - avoid sending invitations or responses. - - * SoObjects/Mailer/SOGoMailFolder.m (-renameTo:): reset the - imap4URL to nil and change the nameInContainer after a successful - operation. - - * OpenChange/MAPIStoreFolder.m - (-getTable:andRowCount:tableType:andHandleId:): if the current - user is not the owner of the folder, the permissions table cannot - be open and MAPISTORE_ERR_DENIED is now returned. - - * SoObjects/Contacts/NGVCard+SOGo.m - (_setupEmailFieldsInLDIFRecord:): the value of card elements were - not properly extracted when no email field were of type "home" or - "work". - -2012-03-08 Francis Lachapelle - - * UI/WebServerResources/generic.js (getTopWindow): extend the - attributes of document.body before calling "hasClassName" to fix - an error with IE9. - -2012-03-08 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFolder.m: commented out key cache ivars - (temporarily). - - * OpenChange/MAPIStoreContext.m (-getRootFolder:inMemCtx:): do not - store the looked up folders when they are not descendants of - SOGoObject. Return MAPISTORE_ERR_NOT_FOUND when the looked up - folder is owner by the current user and MAPISTORE_ERR_DENIED - otherwise. - - * OpenChange/MAPIStoreGCSFolder.m (-synchroniseCache): ensure that - any record that are marked as updated are removed from the record - cache of the corresponding SOGoGCSFolder instance. - - * OpenChange/MAPIStoreFolder.m (-getPidTagSubFolders:inMemCtx:): - invoke [self folderKeys] rather than the corresponding ivar. - - * OpenChange/MAPIStoreTypes.m (NSObjectFromMAPISPropValue) - (NSObjectFromSPropValue): treat PT_ERROR just as PT_LONG. - -2012-03-06 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailFolder.m - (-archiveUIDs:inArchiveNamed:inContext:): output filename is now - escaped without its extension. - - * SoObjects/Contacts/NGVCard+SOGo.m - (-_setupEmailFieldsInLDIFRecord:): simplified code and fixed a bug - where the home mail would be taken for both first and second email - fields when no work mail was present. - -2012-03-02 Wolfgang Sourdeau - - * OpenChange/MAPIStoreAppointmentWrapper.m,, - OpenChange/MAPIStoreAttachment.m, - OpenChange/MAPIStoreCalendarAttachment.m, - OpenChange/MAPIStoreCalendarMessage.m, - OpenChange/MAPIStoreContactsAttachment.m, - OpenChange/MAPIStoreContactsMessage.m, - OpenChange/MAPIStoreFAIMessage.m, - OpenChange/MAPIStoreFSMessageTable.m, - OpenChange/MAPIStoreFolder.m, OpenChange/MAPIStoreFolderTable.m, - OpenChange/MAPIStoreGCSFolder.m, OpenChange/MAPIStoreGCSMessage.m, - OpenChange/MAPIStoreGCSMessageTable.m, - OpenChange/MAPIStoreMailAttachment.m, - OpenChange/MAPIStoreMailFolder.m, - OpenChange/MAPIStoreMailMessage.m, - OpenChange/MAPIStoreMailMessageTable.m, - OpenChange/MAPIStoreMessage.m, OpenChange/MAPIStoreNotesMessage.m, - OpenChange/MAPIStoreObject.m, - OpenChange/MAPIStorePermissionsTable.m, - OpenChange/MAPIStoreTasksMessage.m, - OpenChange/MAPIStoreVolatileMessage.m: updated name of getters to - reflect the new nomenclature. - - * OpenChange/NSArray+MAPIStore.[hm]: updated to new name of - handled structs. - - * OpenChange/gen-property-selectors.py: adapted for new getters - name, based on new property names. Added all new clashing - properties to bannedProps. - -2012-03-02 Jean Raby - - * Scripts/sogo-backup.sh: new script to automate backups. - Updated sogo.cron to include a commented out entry for sogo-backup.sh - Include updates.php in the packages - -2012-03-01 Wolfgang Sourdeau - - * SoObjects/SOGo/LDAPSource.m (_convertRecordToLDAPAttributes): - make sure no field get listed twice in the list of valid field - names by using "removeDoubles". - (_makeLDAPChanges): don't bother checking whether the removed - attributes are strings. - - * SoObjects/SOGo/NSArray+Utilities.m (-[NSMutableArray - removeDoubles]): new method removing doublons. - -2012-03-01 Francis Lachapelle - - * UI/WebServerResources/ContactsUI.js (appendAddressBook): assume - that lists can be created in the new addressbook. - -2012-02-28 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailFolder.m - (-moveCopyMessagesWithMIDs:andCount:fromFolder:withMIDs:andChangeKeys:wantCopy:): - we sync the version cache with the folder in order to update the - target message change keys, which was causing versioning issues - with Outlook 2010. - - * OpenChange/gen-property-selectors.py: bannedProps is now an - array instead of a dict of "True" values. - Added "PrOabContainerGuid" to bannedProps. - -2012-02-27 Wolfgang Sourdeau - - * OpenChange/MAPIStoreUserContext.m (-rootFolders:): - -[NGImap4Connection enableExtensions:] now takes an array of - strings rather than a single string argument. - -2012-02-24 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailFolder.m: ensure the imap connection is - available before performing certain operations, otherwise return - an exception. This only applies on methods that return an - exception, others were left untouched. - -2012-02-23 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailContext.m - (+listContextsForUser:withTDBIndexing:inMemCtx:): added back - "trashName". - - * SoObjects/Appointments/SOGoCalendarComponent.m - (-sendEMailUsingTemplateNamed:forObject:previousObject:toAttendees:withType:): - added a "msgType" parameter that is added as value to the new - "x-sogo-message-type" header. - (-sendIMIPReplyForEvent:from:to:): added a "x-sogo-message-type" - to the headers. - - * OpenChange/MAPIStoreMailContext.m - (+listContextForUser:withTDBIndexing:inMemCtx:): make sure special - folders have all the "folder" prefixes appended to their list of - names (for nested folders). - - * OpenChange/MAPIStoreContext.m - (+createRootFolder:withFID:andName:forUser:withRole:): when the - creation of a folder fails in the proper contact, fallback on the - fallback context. - - * SoObjects/Mailer/SOGoMailAccount.m - (-toManyRelationshipKeysWithNamespaces:): for some reason, we were - explicitly returning the drafts folder name in the batch whether - the corresponding folder exists or not, which is useless and - wrong since the folder in question might actually be a child of - another folder. - - * OpenChange/MAPIStoreContext.m (-init): restored "containersBag" - mechanism where root context folders that are deeper than the - first level of their hierarchy needs to have their parent folders - retained. - -2012-02-23 Jean Raby - - * debian/rules: add a symlink to let gdb find debugging symbols - for libSOGo on debian/ubuntu. (gdb bug #9538) - -2012-02-22 Francis Lachapelle - - * SoObjects/SOGo/SOGoUserManager.m - (-authenticationSourceIDsInDomain:): when looking for a specific - domain, also return sources that are not associated to a domain. - - * SoObjects/SOGo/SOGoSource.h - (-lookupContactEntryWithUIDorEmail:inDomain:): changed this method - of the protocol to specify a domain. - (-fetchContactsMatching:inDomain:): idem. - - * SoObjects/Contacts/SOGoContactFolder.h - (-lookupContactsWithFilter:onCriteria:sortBy:ordering:inDomain:): - changed this method of the protocol to specify a domain. - - * UI/WebServerResources/UIxAclEditor.js (addUser): fixed case when - both canSubscribeUsers and isPublicAccessEnabled are disabled. - - * SoObjects/SOGo/SQLSource.m - (-_lookupContactEntry:considerEmail:inDomain:): if the configuration - parameter DomainFieldName is defined for the source, set the user - domain to the value of this field. - (-fetchContactsMatching:inDomain:): when the configuration parameter - DomainField is defined, limit the results to the entries matching - the specified domain. - - * SoObjects/SOGo/SOGoUserManager.m (-sourceIDsInDomain): if the - source is not associated to a domain, set it to the requested - domain. It will be used by sources with dynamic domain assignation. - -2012-02-22 Wolfgang Sourdeau - - * SoObjects/SOGo/SQLSource.m (_lookupContactEntry:considerEmail:): - make sure the value of column pointer to by _kindField is not nil, - nor an NSNull instance before treating it like a string. - Use the value of "_imapHostField", when available, to map the - "c_imaphostname" value of the contact/user record. - (-init): new "_imapHostField" ivar, holder of the value of - IMAPHostFieldName of the source configuration dictionary. - -2012-02-21 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoSQLUserProfile.m (-fetchJSONProfileFromDB): - removed an escaping hack for Oracle that should no longer be - required after the recent fixes in the Oracle adaptor, and which - was causing bad unescaping of double-escaped backslashes. - - * Tests/Unit/TestSBJsonParser.m (-test_parseJSONString): added a - line for escaped characters. - - * SoObjects/Appointments/SOGoAppointmentFolders.m - (-davEventsDefaultClassification,) - (setDavEventsDefaultClassification:) - (-davTasksDefaultClassification) - (-setDavTasksDefaultClassification:): new DAV accessors for the - default classification preferences. - - * Tests/Integration/test-default-classification.py: new test - module for setting/getting defaults classification preferences. - -2012-02-20 Wolfgang Sourdeau - - * UI/Scheduler/UIxComponentEditor.m (-setComponent:): fetch - default classification from user defauts. - - * UI/PreferencesUI/UIxPreferences.m - (-calendarClassificationsList): new getter for the list of - classifications. - (-itemClassificationText): new i81n getter. - (-setEventsDefaultClassification:, -eventsDefaultClassification) - (-setTasksDefaultClassification:, -tasksDefaultClassification): - new accessors. - - * SoObjects/SOGo/SOGoUserDefaults.m - (-setCalendarEventsDefaultClassification:) - (-calendarEventsDefaultClassification) - (-setCalendarTasksDefaultClassification:) - (-calendarTasksDefaultClassification): new accessors related to - the user-configured default classification of calendar components. - - * UI/Scheduler/UIxComponentEditor.m: s/privacy/classification/g, - which is a better description for the "CLASS" attribute. - -2012-02-20 Francis Lachapelle - - * UI/WebServerResources/UIxMailEditor.js (onWindowResize): we now - make use of the ckeditor javascript api to reszie the container. - -2012-02-20 Wolfgang Sourdeau - - * OpenChange/MAPIStoreGCSFolder.m (-setDisplayName:): new method - that intercept the setting of PR_DISPLAY_NAME_UNICODE following - the mechanism described below. - (-getPrDisplayName:inMemCtx): overriden method. - - * OpenChange/MAPIStoreGCSBaseContext.m (+folderNameSuffix): new - method that returns an optional suffix to differentiate between - SOGo folders that are common to multiple Outlook folders, in - particular for Calendar and Tasks folder. - (+getFolderDisplayName:): new utility method that returns a - display name with the above suffix added properly. - - * OpenChange/MAPIStoreObject.m (-setMAPIRetainCount) - (-retainCount): removed accessors as well as the corresponding - "mapiRetainCount" ivar as this was part of an unused feature. - -2012-02-16 Francis Lachapelle - - * UI/WebServerResources/UIxAttendeesEditor.js (checkAttendee): - stop observing events on input field before removing the row, - otherwise the blur event is triggered and generates an error. - -2012-02-14 Francis Lachapelle - - * UI/WebServerResources/ContactsUI.js (contactsListCallback): when - restoring selection after the folder refresh, call "selectElement" - on each row. This fixes the contacts selection retrieval when using the - contextual menu. - -2012-02-14 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserManager.m (_compactAndCompleteContacts:): - we make sure that "source" is not nil before assigning it to the - compact record. - - * SoObjects/SOGo/SQLSource.m (_lookupContactEntry:considerEmail:): - assign self as value for "source" in the returned record. - (-fetchContactsMatching): same as above. - - * SoObjects/SOGo/SOGoSQLUserProfile.m (_sqlJsonRepresentation:): - removed obsolete method. - (-storeJSONProfileInDB:): we now properly escape the stored value - via the adaptor methods and by using a hacking EOAttribute - instance (FIXME). - - * OpenChange/MAPIStoreMailFolder.m (-ensureFolderExists): new - method that attempts to create a folder when it does not exists - and returns NO if that creation failed or YES in any other case. - (-createFolder:withFID:andKey:): rc was never initialized when in - success code. - (-messageKeysMatchingQualifier:andSortOrderings:) - (-folderKeysMatchingQualifier:andSortOrderings:) - (-permissionEntries): invoke "ensureFolderExists" prior to any - operation. - - * OpenChange/MAPIStoreContext.m - (+createRootFolder:withFID:andName:forUser:withRole:): removed the - "andTDBIndexing:" argument. - (+createRootSecondaryFolderWithFID:andName:forUser:): same as - above. - - * OpenChange/MAPIStoreCalendarMessage.m - (-subscriberCanReadMessage): returns YES when the current role is - ComponentDAndTViewer too. - -2012-02-13 Wolfgang Sourdeau - - * UI/WebServerResources/JavascriptAPIExtensions.js - (String.asCSSIdentifier): escape the "+" character as its going to - be used in a regexp. - -2012-02-13 Wolfgang Sourdeau - - * UI/Contacts/UIxContactView.m (-photoURL, -hasPhoto): copied code - from UIxContactEditor, thereby replacing "photosURL". - -2012-02-10 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m (+initialize): added - all simple tag to "VoidTags", based on list from - http://www.w3.org/TR/html4/index/elements.html. - - * UI/WebServerResources/JavascriptAPIExtensions.js - (String.asCSSIdentifier): same as below. - - * SoObjects/SOGo/NSString+Utilities.m (-setupCSSEscaping): add - "_P_" as escaping sequence for "+". - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m (+initialize): added - all simple tag to "VoidTags", based on list from - http://www.w3.org/TR/html4/index/elements.html. - -2012-02-10 Francis Lachapelle - - * UI/WebServerResources/generic.js (openMailTo): recipients are - now a JSON string (see commit of February 2nd). - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m - (-startElement:namespace:rawName:attributes:): we should not add - end tags to void tags (ex:
). - -2012-02-08 Francis Lachapelle - - * SoObjects/SOGo/SOGoGCSFolder.m (+webdavAclManager): must include - "write" in the "current-user-privilege-set" so the latest version - of AddressBook.app (bundled with 10.7.3) knows the personal - addressbook is writable by the owner. - - * UI/WebServerResources/UIxAttendeesEditor.js - (performSearchCallback): set the uid parameter to null instead of - an empty string when the returned contact has no uid (ie, it comes - from a personal addressbook). - -2012-02-06 Wolfgang Sourdeau - - * SoObjects/SOGo/LDAPSource.m: escape built DNs using the new - -[NSString escapedForLDAPDN] method. - -2012-02-03 Francis Lachapelle - - * UI/WebServerResources/UIxMailEditor.js (onRemoveAttachments): - instead of extracting the filename from the text nodes under the - list element, we now use the title attribute. This fixes an issue - with IE that would append an extra space to the filename. - -2012-02-03 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFolderTable.m - (-evaluatePropertyRestriction:intoQualifier:): overriden method to - always return true for restrictions on PR_CHANGE_NUM, in order to - help the fxics mechanism. - - * OpenChange/MAPIStoreFolder.m (-deleteFolder): cleanup the caches - in order to let the folder disappear. - - * OpenChange/MAPIStoreSOGo.m (sogo_backend_create_root_folder): - new backend method. - - * OpenChange/MAPIStoreFolder.m (-createFolder:withFID:andKey:): - modified method to return a enum mapistore_error, in order to - better determine of the failures that occur. - - * OpenChange/MAPIStoreMailFolder.m (-deleteFolder): overriden method. - - * SoObjects/Mailer/SOGoMailFolder.m (-exists): new method that - returns whether an IMAP folder exists or not yet. - -2012-02-02 Francis Lachapelle - - * UI/MailerUI/UIxMailMainFrame.m (-composeAction): recipient - addresses are now passed as a JSON-formatted string. - - * UI/MailerUI/UIxMailAccountActions.m (-composeAction): the - received "mailto" parameter is now a JSON-formatted string; we - parse it accordingly. - -2012-02-01 Wolfgang Sourdeau - - * OpenChange/MAPIStoreUserContext.m (-destroy): dont't release - "username" as it is not initially retained. - (+userContextWithUsername:andTDBIndexing:): the resulting instance - is cached in the table from here instead. - - * OpenChange/MAPIStoreTable.m (-destroyHandle:): skih operation if - the handle parameter is 0. - - * OpenChange/SOGoMAPIFSMessage.m (-delete): returns the exception - rather than raising it. - - * OpenChange/SOGoMAPIFSFolder.m (-delete): new method that removes - the directory from the filesystem. - - * OpenChange/MAPIStoreGCSFolder.m (-deleteFolder): overriden method. - - * OpenChange/MAPIStoreFolder.m (-deleteFolder): implemented method. - - * SoObjects/SOGo/SOGoParentFolder.m (-removeSubFolder): new method - that removes a subfolder entry from the folder cache. - - * OpenChange/MAPIApplication.m (-setUserContext:): do not retain - the user context. - -2012-02-01 Francis Lachapelle - - * UI/WebServerResources/UIxCalUserRightsEditor.js (onUpdateACL): - added some serious warnings when giving access rights to any - authenticated users or public access. - - * UI/WebServerResources/UIxMailUserRightsEditor.js (onUpdateACL): idem. - - * UI/WebServerResources/UIxContactsUserRightsEditor.js (onUpdateACL): idem. - - * UI/Common/UIxUserRightsEditor.m (-folderName): new method that - returns the folder display name. - (-userDisplayName): now also return the names of anonymous and - authenticated users. - -2012-01-31 Francis Lachapelle - - * SoObjects/SOGo/WOResourceManager+SOGo.m - (-pathToLocaleForLanguageNamed:): if the language has a CamelCase - form, add the first part to the lookup languages. - -2012-01-31 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailContext.m - (+listContextsForUser:withTDBIndexing:inMemCtx:): now returns - secondary folders. - (+[MAPIStoreOutboxContext - listContextsForUser:withTDBIndexing:inMemCtx:]): overridden method - in outbox-specific class. - -2012-01-30 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailFolder.m (-addProperties): overriden - method in order to intercept rename operations. - (-initWithSOGoObject:inContainer:): removed obsolete method. - - * OpenChange/MAPIStoreGCSFolder.m (-addProperties): overriden - method in order to intercept rename operations. - - * SoObjects/Mailer/SOGoMailFolder.m (-renameTo:): new method, - implementing most of the code from [UIxMailFolderActions - renameFolderAction]. - - * OpenChange/MAPIStoreFallbackContext.m - (+listContextsForUser:withTDBIndexing:inMemCtx:): now returns the - fallback subfolders as secondary contexts (tmp hack). - - * OpenChange/MAPIStoreUserContext.m (-rootFolders): new method - replacing the "...root" methods in way that can match the - MAPIModuleName. - - * OpenChange/MAPIStoreGCSBaseContext.m - (+listContextsForUser:inMemCtx:): centralized code for all GCS - classes. - -2012-01-30 Francis Lachapelle - - * UI/WebServerResources/UIxCalUserRightsEditor.js (onUpdateACL): - ask confirmation when giving access to all authenticated users or - when giving public access. - - * UI/WebServerResources/UIxMailUserRightsEditor.js (onUpdateACL): idem. - - * UI/WebServerResources/UIxContactsUserRightsEditor.js (onUpdateACL): idem. - - * UI/WebServerResources/SchedulerUI.js (onViewEventCallback): - moved start/end time just under the event name. - - * UI/WebServerResources/generic.js (showConfirmDialog): this - function now accepts two additional arguments to change the - default "yes" and "no" buttons. - -2012-01-29 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailContext.[hm]: removed - "MAPIStoreInboxContext", "MAPIStoreSentItemsContext", - and child folders."MAPIStoreDraftsContext" and - "MAPIStoreOutboxContext" which have made obsolete by the new - provisioning and instantiation mechanisms. - - * OpenChange/MAPIStoreContext.m (-woContext:, -mapping) - (-authenticator): those methods are now part of - MAPIStoreUserContext. - (-setupBaseFolder:): removed method, obsoleted by those below. - (-getRootFolder:withFID:): the "root folder" is now instantiated - by lookups from the root folder provided by the user context and - the chain of folders listed in the context url path. - (-MAPIStoreFolderClass): new method returning the Class object - representing the context's class of objects. - (-rootSOGoFolder): new method that returns the proper root folder - depending on the context's class of objects. - - * OpenChange/MAPIStoreFolder.m (-initWithURL:inContext:): all - folders are now instantiated the same way since root objects are - now stored in the MAPIStoreUserContext instancesB. - (-setContext:): new setter to provide a reference to the folder's - mapistore context instance from the topmost parent. - (-setupVersionsMessage:): new helper method invoked during the - folder instantiations, from the moment its parent context has been - made available, which does not occur at the same moment for parent - and child folders... - - * OpenChange/MAPIApplication.m (-init): removed the "mapiContext" - but added the "userContext" ivars. - - * SoObjects/SOGo/SOGoFolder.m (-outlookFolderClass): removed - useless method. - - * OpenChange/MAPIStoreUserContext.[hm]: new class for accessing - user data common to all "mapistore contexts" as a singleton: the - same instance is used across all requests until all related - objects have been freed. - -2012-01-27 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (bareFetchFields: ...) - we now cache the returned - results - just like for fetchFields:... - - * SoObjects/Appointments/SOGoAppointmentFolderObject.m - (_folderCalenars) - we now ask for the c_content and use - a local autorelease pool to avoid consuming too much memory - -2012-01-26 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCommonViewsContext.[hm], - OpenChange/MAPIStoreDeferredActionsContext.[hm], - OpenChange/MAPIStoreFreebusyContext.[hm], - OpenChange/MAPIStoreJournalContext.[hm], - OpenChange/MAPIStoreRemindersContext.[hm], - OpenChange/MAPIStoreScheduleContext.[hm], - OpenChange/MAPIStoreSearchContext.[hm], - OpenChange/MAPIStoreShortcutsContext.[hm], - OpenChange/MAPIStoreSpoolerContext.[hm], - OpenChange/MAPIStoreViewsContext.[hm]: deleted obsolete classes. - - * OpenChange/MAPIStoreFolder.m (supportsSubFolders): new - overridable method that returns whether the current folder can - contain subfolders, nowithstanding the right of the current user - to create or access them. - - * OpenChange/MAPIStoreSOGo.m (sogo_backend_list_contexts): new - backend method. - - * OpenChange/MAPIStoreContext.m - (+listAllContextsForUser:inMemCtx:): centralized method for - returning all contexts available from all context classes for one - user. - (+listContextsForUser:inMemCtx:): new individual method invoked by - the above. Overridden by concrete subclasses. - -2012-01-26 Ludovic Marcotte - - * SoObjects/SOGo/LDAPSource.{h,m} - now honor - userPasswordAlgorithm when changing the password with - no password-policy. It'll now be encrypted per your - preference. This fixes #755 - -2012-01-25 Ludovic Marcotte - - * SOPE/GDLContentStore/GCSFolder.m - we now use the proper - method to determine column types, avoiding the generation - of broken UPDATE statements on MySQL when snoozing alarms. - -2012-01-24 Francis Lachapelle - - * UI/Scheduler/UIxCalFolderActions.m (-importAction): failback to - latin-1 when utf-8 decoding doesn't work. - -2012-01-19 Francis Lachapelle - - * UI/WebServerResources/UIxMailToSelection.js - (addressFieldChanged): remove commas before testing email regexp. - -2012-01-17 Wolfgang Sourdeau - - * UI/WebServerResources/UIxFilterEditor.js (setupNewFilterData): - mark new filter as active by default. - -2012-01-17 Francis Lachapelle - - * UI/WebServerResources/UIxPreferences.js (initPreferences): When - the mail composer is set to use HTML, the reply position popup - menu is disabled. When switching to text-based message, - the popup menu is now correctly re-enabled. - -2012-01-16 Wolfgang Sourdeau - - * SoObjects/SOGo/SQLSource.m (_lookupContactEntry:considerEmail:) - (fetchContactsMatching:): assigned self to the "source" key of the - returned dictionaries. - -2012-01-13 Francis Lachapelle - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-caldavFreeBusyRequestOnRecipient:withUID:andOrganizer:from:to:): - if the recipient is not associated to a user (from an - authentication source), verify if it is a contact (from an - addressbook source). If it is, SOGoFreeBusyObject will take care - of fetching the freebusy information if the contact is associated - to a MS Exchange server. - - * SoObjects/Appointments/SOGoFreeBusyObject.m - (-iCalPersonWithUID:): if no user is found from an authentication - source, verify if it matches a contact from an addressbook - source. - (-contentAsStringWithMethod:andUID:andOrganizer:andContact:from:to:): - added new parameter "contactID". - - * SoObjects/Appointments/iCalPerson+SOGo.m (-contactIDInContext:): - new method that tries to associated the person's email address to - a contact ID. - -2012-01-12 Francis Lachapelle - - * SoObjects/SOGo/SOGoSource.h (-bindDN, -bindPassword) - (-MSExchangeHostname): new accessors to the SOGoDNSource protocol. - - * SoObjects/SOGo/LDAPSource.m (-_convertLDAPEntryToContact:): - added a reference to the instance source in the returned dictionary. - - * SoObjects/SOGo/SOGoUserManager.m - (-_compactAndCompleteContacts:): keep the source instance in the - returned dictionary. - - * UI/MainUI/SOGoUserHomePage.m (-readFreeBusyAction): the http - post can now include an optional "uid" parameter to perform the - freebusy lookup on the user corresponding to the specified - uid. This covers the special case where we want to query a user - from a contact source (not an authentication source) and for which - external freebusy information is available (currently limited to a - Microsoft Exchange server with Web Services enabled). - - * SoObjects/Appointments/SOGoFreeBusyObject.m - (-fetchFreeBusyInfosFrom:to:forUser:): new method currently - limited perform a SOAP request to a MS Exhange server to retrieve - the freebusy information of a user. - - * UI/Scheduler/UIxComponentEditor.m (-_loadAttendees): when the - attendee's email address doesn't match a user from the - authentication source(s), perform a lookup in the addressbook - source(s). If the email matches a user from a source with a - MSExchangeHostname, return a concatenation of the active user uid - and this contact uid. - - * UI/WebServerResources/UIxAttendeesEditor.js - (performSearchCallback): if a matching contact has the - "isMSExchange" attribute, prefix the uid with the login uid. - (_performAjaxRequest): query the freebusy information from the - login user (/SOGo/so//freebusy.ifb/ajaxRead?uid=) - when a contact uid is specified. Otherwise, perform the query on - the user instance as usual (/SOGo/so//freebusy.ifb/ajaxRead). - -2012-01-12 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCalendarMessage.m (-save): same as below + - ensure that nil fields are removed from non-new instances. - - * OpenChange/MAPIStoreAppointmentWrapper.m - (-getPrStartDate:inMemCtx:, -getPrEndDate:inMemCtx:): remove the - tz offset from dates in all-day events. - - * OpenChange/MAPIStoreTasksMessage.m (-save): the dates provided - by Outlook for start, due and completed are all-day dates, we thus - need to remove the timezone offset from those dates. - -2012-01-11 Wolfgang Sourdeau - - * OpenChange/MAPIStoreGCSMessageTable.m - (_fixedDatePropertyRestriction:inMemCtx:): attached the result to - the memCtx passed as parameter to avoid a leak. - -2012-01-10 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentObject.m - (_requireResponseFromAttendees:): initialize listHasChanged to NO. - - * OpenChange/MAPIStoreMailFolder.m (_parseCOPYUID): the uniString - buffer was allocated one byte too short. - -2012-01-09 Wolfgang Sourdeau - - * OpenChange/NSObject+MAPIStore.m (-getValue:forTag:inMemCtx:): - handle PT_SVREID just as PT_BINARY. - - * OpenChange/MAPIStoreCalendarFolder.m (-exchangeRightsForRoles): - add the freebusy read rights when the user has read permission on - calendar objects. - -2012-01-05 Francis Lachapelle - - * SoObjects/SOGo/SOGoUserManager.m (-_registerSource:inDomain::): - log error when duplicated IDs are found. - -2012-01-04 Wolfgang Sourdeau - - * UI/WebServerResources/ContactsUI.js - (onAddressBooksMenuPrepareVisibility): the "new list", "sharing" and "import" - options are now greyed out properly, depending on the object type - and the new attributes below. - - * UI/Contacts/UIxContactFoldersView.m - (-currentContactFolderAclEditing) - (-currentContactFolderListEditing): new attribute accessors. - - * SoObjects/SOGo/SOGoFolder.m (-sendFolderAdvisoryTemplate:): - moved method from SOGoGCSFolder in order to make it available to - other folder classes. - - * SoObjects/SOGo/LDAPSource.m (-initFromUDSource:inDomain:): use - the new setters for certain ivars + take the new "abOU" key into - account. - (-setListRequiresDot:, -listRequiresDot:, -setSourceID:) - (-setDisplayName, -displayName, -setModifiers:): new accessors. - (-_convertRecordToLDAPAttributes): we now strip object classes that - are not supported by the server prior to remove the related fields. - (-hasUserAddressBooks): new method that returns whether user - addressbooks are supported, i.e. when "abOU" is set. - (-addressBookSourcesForUser:): when "abOU" is set, returns an - array of LDAPSource instances representing the personal - addressbooks of the specified user. - (-addAddressBookSource:withDisplayName:forUser:) - (-renameAddressBookSource:withDisplayName:forUser:) - (-removeAddressBookSource:forUser:): new methods with a - self-explicit name. - - * SoObjects/Contacts/SOGoContactSourceFolder.m - (-setIsPersonalSource, -isPersonalSource): new accessors for the - "isPersonalSource ivar". - (-lookupName:inContext:acquire:): setup the object classes of the - new entries to "inetorgperson" and "mozillaabpersonalpha". - (-lookupContactsWithFilter:onCriteria:sortBy:ordering:): check - whether "listRequiresDot" is set on the current source and return - the full listing if not required. - (-compare:): enhanced to treat personal sources as if they were - regular GCS folders, in order to sort them properly. - (-delete, -renameTo:): implemented method, required for the - corresponding web methods. - (-ownerInContext:) adapted method to personal sources. - - * SoObjects/Contacts/SOGoContactFolders.m (-appendPersonalSource): - overriden method for returning LDAP-based user addresbook sources. - (-newFolderWithName:andNameInContainer:): idem - (-renameLDAPAddressBook:withDisplayName:): new method that enables - the renaming of LDAP-based user addresbook sources. - (-removeLDAPAddressBook:): new method that enables - the removal of LDAP-based user addresbook sources. - -2012-01-03 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoParentFolder.m (-appendPersonalSources): made - method public so that it can be easily overriden in subclasses. - - * SoObjects/SOGo/SOGoUser.m (-authenticationSource): new method - that returned the SOGoSource instance that successfully recognized - the user represented by the current instance. - - * SoObjects/SOGo/SOGoUserManager.m - (_fillContactInfosForUser:withUIDorEmail:inDomain:): we now set - the identifier of the source that authenticated the specified user - as the "SOGoSource" entry of the returned dictionary. - -2012-01-03 Francis Lachapelle - - * SoObjects/Appointments/SOGoAptMailNotification.m (-setupValues): - don't set the start/end times when dealing with an all-day event. - - * SoObjects/Appointments/SOGoAptMailInvitation.m (-getBody): don't - display the start/end times when dealing with an all-day event. - - * SoObjects/Appointments/SOGoAptMailReceipt.m (-_formattedUserDate:): idem. - - * SoObjects/Appointments/SOGoAptMailUpdate.m (-getSubject): idem. - - * SoObjects/Appointments/SOGoAptMailDeletion.m (-getBody): idem. - -2012-01-02 Francis Lachapelle - - * UI/WebServerResources/UIxPreferences.js (getFilterFromEditor): - return a string (JSON) so the data is properly passed to the - opened window with IE7. - - * UI/WebServerResources/UIxFilterEditor.js (ensureFieldValidity): - a field value is always considered invalid when empty. - -2011-12-30 Wolfgang Sourdeau - - * SoObjects/SOGo/LDAPSourceSchema.[hm]: new class module enabling - schema auto-discovery. - - * UI/WebServerResources/UIxContactEditor.js - (validateContactEditor): the birth date is validated slightly - differently, by enabling empty and 2-digit years as well as single - digits months and days. - - * UI/Contacts/UIxContactView.m (-defaultAction, -dealloc): retain - and release the "card" ivar. - (_formattedURL:): the url should be displayed only if it is - non-nil AND non-empty. - (-vcardAction): removed useless method. - - * UI/Contacts/UIxContactEditor.m (init): removed the "snapshot", - "preferredEmail", "card", "photosURL" and "contactCategories" ivars. - (-ldifRecord): new getter that proxy the invocation to the client - object, but by taking the contactEmail and contactFN url - parameters. Replaces the "-snapshot" getter, since the LDIF record - is now directly edited. - (-addressBooksList): the client object container class is no - longer taken into account when fetching the current user's permissions. - (-supportCategories, -supportPhotos): new getters that enables the - categories and photo tabs. - (-setJsonContactCategories:, -jsonContactCategories): now make - use of the special "vcardcategories" parameter found in the - contact LDIF record. - - * SoObjects/SOGo/SQLSource.m (_lookupContactEntry:considerEmail:): - enhanced to copy the "c_XX" fields to unprefixed equivalents. - - * SoObjects/Contacts/NSString+LDIF.m (mustEncodeLDIFValue): new - method, replacing "_isLDIFSafe" in a clearly public manner. - - * SoObjects/SOGo/LDAPSource.m (-[NGLdapEntry _asDictionary]): new - utility method to convert an entry into a "SOGo LDIF record". - (-[NGLdapAttribute _asArrayOrString]): new utility method to - convert an LDAP attribute into a string or an array of strings - when the attribute has one or more values. - (-initFromUDSource:inDomain:): handle the new "modifiers", - "mapping" and "objectClasses" configuration keys, used when the - source instance is used as an addressbook. All LDAP fields are now - converted to lowercase. - (_searchAttributes): removed method as the special "*" attribute - is not costly enough to justify its existence, thereby reducing - code complexity. - (-lookupContactEntry:, -lookupContactEntryWithUIDorEmail:) - (-lookupLoginByDN:): merged common code in the new - -_lookupLDAPEntry: method, that accepts an EOQualifier as argument. - (--addContactEntry:withID:, -updateContactEntry: and - removeContactEntryWithID:): new methods for editing addressbook - sources. - - * SoObjects/Contacts/SOGoContactSourceFolder.m (-source): new - getter for the "source" ivar. - (-lookupName:inContext:acquire:): accept the creation of new LDIF - entries via web methods ending with "AsContact". - (-saveLDIFEntry:, -deleteLDIFEntry:): new proxy methods for the - new SOGoSource -addContactEntry:withID:, -updateContactEntry: and - removeContactEntryWithID: methods, enabling the creation, - modification and deletion of LDAP contacts. - (-aclsForUser:): implemented method based on the array returned by - -[ modifiers]. - - * SoObjects/Contacts/SOGoContactLDIFEntry.m (-vCard): the vcard is - now generated automatically from the LDIF record of the entry, - using the new method provided by NGVCard+SOGo. - (-aclsForUser:): new overriden method similar to the - implementation from SOGoContentObject. - - * SoObjects/Contacts/SOGoContactGCSEntry.m (-setLDIFRecord) - (-ldifRecord, -hasPhoto): new accessors required by the - SOGoContactObject protocol. - (-lookupName:inContext:acquire:): return the only photo element - when the "photo" key is requested, if present in the card. - (-save): now returns an NSException, instead of void. - - * SoObjects/Contacts/SOGoContactEntryPhoto.m - (+entryPhotoWithID:inContainer:, -setPhotoID:): removed methods, - since there can only be one PHOTO element per contact. - (-photo): simplified thanks to the constraint mentionned above. - - * SoObjects/Contacts/NSDictionary+LDIF.m (-ldifRecordAsString): - new method implementing the code previously found in - SOGo/NSDictionary+Utilities.m, in order to produce a textual - representation of an LDIF record. - - * SoObjects/Contacts/NSDictionary+LDIF.[hm]: new category module. - - * SoObjects/Contacts/NGVCard+SOGo.m (-asLDIFRecord): new method - implementing the conversion code previously found in - UIxContactEditor, in order to produce an "LDIF record" in the form - of an NSDictionary matching the inetOrgPerson and - mozillaAbPersonAlpha object classes. - (-updateFromLDIFRecord:) reciprocal method to "-asLDIFRecord", - with conversion code moved from UIxContactEditor. - - * SoObjects/Contacts/SOGoFolder+CardDAV.m (_isValidFilter:): make - use of the lowercase instance of the string, which was erroneously - ignored previously. - -2011-12-29 Ludovic Marcotte - - * SoObjects/SOGo/SOGoSQLUserProfile.m (_sqlJsonRepresentation:): - don't escape the / character as it's generating invalid JSON - output on newer versions of PostgreSQL. - - * Dropped all references to "SOGoMailCheckAllUnseenCounts". We - now check all folders for which filters are defined with a - "fileinto" action - even if they are disable. - - * UI/MailerUI/UIxMailAccountActions.m (_jsonFolders:) - we - use a local autorelease pool in the tight loop to avoid consuming - too many LDAP connections during its execution. - -2011-12-23 Francis Lachapelle - - * UI/Scheduler/UIxAppointmentEditor.m (-viewAction): the end - date/time is now also returned. - - * UI/PreferencesUI/UIxPreferences.m (-vacationEndDate): return - current date when no end date is defined. - - * Tools/SOGoToolUserPreferences.m (-run): fixed possible out of - bound exception when parsing arguments. - -2011-12-22 Francis Lachapelle - - * UI/Scheduler/UIxTaskEditor.m (-takeValuesFromRequest:inContext:): remove alarms - when no start date is defined. - - * UI/WebServerResources/UIxTaskEditor.js (onTimeControlCheck): - disable the reminder popup menu when no start date is defined. - -2011-12-15 Ludovic Marcotte - - * SoObjects/SOGo/SOGoSieveManager.m - slightly reworked - the code to use NSURL in order to instanciate the SOPE - Sieve code - that permits using TLS. - -2011-12-14 Francis Lachapelle - - * UI/WebServerResources/ContactsUI.js (getMenus): register the - function onWindowResize only if it's not already defined. - -2011-12-12 Wolfgang Sourdeau - - * SoObjects/Appointments/iCalEvent+SOGo.m (-quickRecord): set - "c_category" to NULL when empty. - - * OGoContentStore/OCSContactFieldExtractor.m - (-extractQuickFieldsFromVCard:): same as above. - -2011-12-12 Francis Lachapelle - - * Tools/SOGoEAlarmsNotifier.m - (-_sendMessageWithHeaders:content:toAttendee:from:withMailer:): - encode sender and recipient addresses in quoted printatble. - - * SoObjects/Contacts/SOGoContactGCSFolder.m - (-fixupContactRecord:): fallback on organization name when the - contact has no display name, no firstname, and no lastname. - - * UI/Contacts/UIxContactView.m (-fullName): idem. - -2011-12-09 Francis Lachapelle - - * UI/MainUI/SOGoRootPage.m (_cookieWithUsername:): the SOGoLogin - cookie now expires in one month. - -2011-12-09 Wolfgang Sourdeau - - * UI/SOGoUI/UIxComponent.m (-userHasCalendarAccess) - (-userHasMailAccess): moved from UIxPageFrame. - - * UI/Common/UIxToolbar.m (-cssClasses): new accessor that - generates the CSS classes dynamically depending on the button - state and it descriptor's cssClass. - - * UI/WebServerResources/generic.js (parent$): handle the case - where window.opener is null. - -2011-12-08 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFSMessageTable.m - (-evaluatePropertyRestriction:intoQualifier:): interpret filtering - on PR_SUBJECT_UNICODE in order to include - PR_NORMALIZED_SUBJECT_UNICODE and PR_SUBJECT_PREFIX_UNICODE in the - search, as PR_SUBJECT_UNICODE might not actually exist on the FS - messages. - - * OpenChange/MAPIStoreObject.m (-addPropertiesFromRow:): perform - test on PT_STRING8 alone after "masking" the ulPropTag with 0xfff, - since PT_XX values are not bitmasks. - -2011-12-06 Francis Lachapelle - - * UI/WebServerResources/ContactsUI.js (contactsListCallback): - Force deselection of all rows when changing addressbook. - -2011-12-06 Wolfgang Sourdeau - - * SoObjects/Appointments/iCalEvent+SOGo.m (-firstOccurrenceRange): - same as below. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (_flattenCycleRecord:forRange:intoArray:): reverted to retrieving - the event start date using the old and buggy method, adapted to - the new NGCards API. - -2011-12-05 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (deleteSelectedMessages) - (onMailboxTreeItemClick, onMessageSelecitionChange) - (configureMessageListEvents): update the message content div only - if it exists (will be hidden in single-window mode). - - * UI/WebServerResources/UIxContactsUserFolders.js - (initUserFoldersWindow): registered "click" event on new Done button. - - * UI/WebServerResources/UIxMailEditor.js (onContactAdd): show - contacts in a pane instead of a new window. - (onContactFolderChange): new method to update the contacts list - when changing contacts folder from the new popup menu. - (configureDragHandle): new method to allow the new contacts pane - to be resizable. - (onMailEditorResize): was onWindowResize. Now computes the space - used by the search contacts pane. - - * UI/WebServerResources/ContactsUI.js (getMenus): the function now - overloads the returning array with the menus defined by the - previously defined function with the same name. Used in - UIxMailEditor.wox that loads both MailerUI.js and ContactsUI.js. - (contactsListCallback): added support for 2-column view. Also - used in mail editor to refresh the new contacts pane. - (initContacts, onContactSelectionChange): don't update contactView when the div - doesn't exist. - (configureDraggables): don't allow drag'n'drop when the folders - list doesn't exist. - - * UI/MainUI/UIxLoading.m: new class for empty template used when - loading the iframe in single-window mode. - -2011-12-05 Wolfgang Sourdeau - - * UI/Scheduler/UIxComponentEditor.m (-setCategory): ensure that - the new category is reported in the "categories" ivar. - - * SoObjects/Appointments/iCalEvent+SOGo.m (-quickRecord): - -[iCalEntityObject categories] returns an NSArray that we need to - convert to a string for the database content. - - * SoObjects/Appointments/iCalToDo+SOGo.m (-quickRecord): - -[iCalEntityObject categories] returns an NSArray that we need to - convert to a string for the database content. - -2011-12-02 Wolfgang Sourdeau - - * OpenChange/MAPIStoreNotesMessage.m - (-getPrMessageClass:inMemCtx:): explicit method. - (-getPrSubject:inMemCtx:): explicit method. - - * OpenChange/MAPIStoreMessage.m (-getPrAccess:inMemCtx:) - (-getPrAccessLevel:inMemCtx:): reimplemented methods in a generic - way just like the MAPIStoreFolder versions. - - * OpenChange/MAPIStoreFSMessage.m (-subscriberCanModifyMessage): - handle the case where the message is being created. - - * OpenChange/MAPIStoreFSFolder.m - (-messageKeysMatchingQualifier:andSortOrderings:): ensure the - active user can read the folder messages before returning them. - -2011-12-01 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFAIMessage.m (-subscriberCanReadMessage) - (-subscriberCanModifyMessage): always return "NO" for subscribers. - - * OpenChange/MAPIStoreFSFolder.m: mapped role strings into - variables. - - * OpenChange/MAPIStoreGCSMessage.m (-getPrAccess:inMemCtx:) - (-getPrAccessLevel:inMemCtx:): return a value based on the ACL - getters below. - - * OpenChange/MAPIStoreFSMessage.m (-subscriberCanReadMessage): - returns YES when the message is of class - "IPM.Microsoft.ScheduleData.FreeBusy", as a hack until freebusy - messages are handled by the backend. - - * OpenChange/MAPIStoreContext.m (_prepareContextClass): now return - the context via a pointer parameter. Return a proper "enum - mapistore_error" value. - - * OpenChange/MAPIStoreCalendarMessage.m (-appointmentWrapper): - pass the owner user as parameter to the appointment wrapper - contructor rather than the active user. - (-save): make use of the owner user coordinates instead of the - ones of the active user. Handle the "sent-by" parameter for the - organizer element. - - * OpenChange/MAPIStoreFolder.m - (-openMessage:withMID:forWriting:inMemCtx:): takes a new - "forWriting:" parameter and make use of subscriberCanModifyMessage - and subscriberCanReadMessage to return a proper error code, if - needed. - - * OpenChange/MAPIStoreSOGo.m (sogo_folder_open_message): added the - "write_access" parameter. - - * OpenChange/MAPIStoreTasksMessage.m: - invoke component:secure: with the secure parameter set to "YES" in - all accessors that requires the iCalTask object. - - * OpenChange/MAPIStoreCalendarMessage.m (-appointmentWrapper): - invoke component:secure: with the secure parameter set to "YES". - - * OpenChange/MAPIStoreTasksMessageTable.m - (-evaluatePropertyRestriction:intoQualifier:): return - MAPIRestrictionStateAlwaysTrue for PR_SENSITIVITY since privacy - filtering is performed internally. - - * OpenChange/MAPIStoreGCSMessageTable.m (-componentQualifier): - removed useless accessor, left over by a previous commit. - - * OpenChange/MAPIStoreGCSFolder.m (-aclQualifier): new accessor - providing an additional qualifier when listing elements of a - table, based on the current user rights. - (-messageKeysMatchingQualifier:andSortOrderings:): make use of the - new -aclQualifier method when the active user is not the owner of - the sogo object. Slightly simplified code by storing all - qualifiers in an array passed as parameter to the EOAndQualifier - constructor. - - * OpenChange/MAPIStoreMessage.m (-subscriberCanReadMessage) - (-subscriberCanModifyMessage): new getters for ACL operations at - the message level. - - * OpenChange/MAPIStoreFolder.m (-subscriberCanCreateMessages) - (-subscriberCanModifyMessages, -subscriberCanReadMessages) - (-subscriberCanDeleteMessages, -subscriberCanCreateSubFolders): - new getters for ACL operations at the folder level. - -2011-11-30 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoFolder.m - (_expandPropertyResponse:forObject:): set the element in the 404 - bag only if the value is nil to avoid iCal complaining about lack - of support for sharing. - - * SoObjects/Appointments/SOGoCalendarProxy.m (+webdavAclManager): - overriden method. - (-davGroupMemberSet, -setDavGroupMemberSet:): instantiate the - "Calendar" object from the result of -[self lookupUserFolder] - instead of "container", since we might attach proxy objects to - other containers. - - * Main/SOGo+DAV.m (-davPrincipalURL): new DAV getter. - (-davPrincipalSearchPropertySet): added "calendar-user-type", even - though it's a lie. - (-davComplianceClassesInContext:): declare - "calendar-query-extended", "extended-mkcol", - "calendarserver-principal-property-search" as additional classes, - even though it's a lie. - - * SoObjects/Appointments/SOGoUserFolder+Appointments.m - (-davCalendarUserAddressSet): make sure each email address is - reported only once, we also return the user principal in the list - (for iCal). - - * SoObjects/SOGo/SOGoObject.m (-davComplianceClassesInContext:): - declare "calendar-query-extended", "extended-mkcol", - "calendarserver-principal-property-search" as additional calendar - classes, even though it's a lie. - (-davCurrentUserPrincipal): new method. - - * SoObjects/Appointments/SOGoAppointmentFolder.m (-davResourceId): - new DAV getter. - - * SoObjects/SOGo/SOGoUserFolder.m (-davResourceId): new DAV getter. - - * SoObjects/SOGo/SOGoFolder.m (-davPrincipalURL): moved from - SOGoUserFolder. - - * SoObjects/SOGo/WORequest+SOGo.m (-isICal, -isICal4): updated for - iCal 5. - - * SoObjects/Appointments/SOGoAppointmentInboxFolder.m - (-davScheduleDefaultCalendarURL): fixed method to return a - properly formatted XML chunk. - (-displayName): returns nameInContainer. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-davCalendarTimeZone): fixed by embedding the VTIMEZONE element - in a VCALENDAR. - -2011-11-29 Wolfgang Sourdeau - - * OpenChange/MAPIStoreTypes.m (NSObjectFromSPropValue): set the - resulting string to @"" when the unicode or string pointers are - NULL. - -2011-11-28 Francis Lachapelle - - * UI/SOGoUI/UIxComponent.m (-singleWindowModeEnabled): new method - that returns true if the single-window mode is enabled. This mode - can be forced by setting the cookie "SOGoWindowMode" to "single". - - * UI/MailerUI/UIxMailEditor.m (-contactFolders) - (-personalContactInfos, -setCurrentFolder:, -currentContactFolderId) - (-currentContactFolderName, -currentContactFolderOwner) - (-currentContactFolderClass): getters/setters for new contacts - pane in the mail editor. - -2011-11-28 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContext.m - (-initFromURL:withConnectionInfo:andTDBIndexing:): assign a - SOGoUser corresponding to the object owner and to the active user - to the "ownerUser" and "activeUser" ivars. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-bareFetchFields:from:to:title:component:additionalFilters:): - we must not attempt to instantiate an EOQualifier with a "nil" - format, otherwise it causes an exception. Settings the qualifier - as nil instead. - -2011-11-24 Francis Lachapelle - - * UI/WebServerResources/ContactsUI.js (resetCategoriesMenu): the - event listener must be on mousedown since click is already - observed by document.body. - -2011-11-23 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContactsMessageTable.m - (-evaluatePropertyRestriction:intoQualifier:): returns - "MAPIRestrictionStateAlwaysTrue" for PR_SENSITIVITY. - - * OpenChange/MAPIStoreContactsMessage.m - (-getPrSensitivity:inMemCtx:): new getter that always returns 0. - -2011-11-22 Wolfgang Sourdeau - - * OpenChange/NSArray+MAPIStore.m (-asMVUnicodeInMemCtx:) renamed - from "asArrayOfUnicodeStringsInCtx". - (-asMVUnicodeInMemCtx:, -asMVLongInMemCtx:): new conversion - methods. - - * OpenChange/MAPIStoreTypes.m (NSObjectFromValuePointer): - simplified method by using set_SPropValue_proptag and - NSObjectFromSPropValue. - - * OpenChange/NSObject+MAPIStore.m (-getValue:forTag:inMemCtx:): - renamed from "getMAPIValue:...". - (-arrayFromMAPIMVLong:, +arrayFromMAPIMVUnicode:) - (+arrayFromMAPIMVString:, +arrayFromMAPIMVBinary:) - (+arrayFromMAPIMVGuid:, +arrayFromMVShort:, +arrayFromMVLong:) - (+arrayFromMVI8:, +arrayFromMVUnicode:, +arrayFromMVString:) - (+arrayFromMVBinary:, +arrayFromMVGuid:, +arrayFromMVFileTime:) - new constructors for multivalue types. - -2011-11-21 Ludovic Marcotte - - * SoObjects/SOGo/WORequest+SOGo.m - for now, we consider iCal 4 - and iCal 5 to be the same and added new strings to recognize - Apple Address Book on Mac OS X 10.7 (Lion) - - * SoObjects/Contacts/SOGoContactGCSFolder.m - we now skip list - if we deal with Apple Address Book. If we don't do this and - a "vlist" is present, no card will be displayed at all. - -2011-11-21 Francis Lachapelle - - * UI/WebServerResources/UIxPreferences.js (initPreferences): - initialize calendar for the new vacation end date optional parameter. - - * UI/PreferencesUI/UIxPreferences.m (-enableVacationEndDate) - (-disableVacationEndDate, -setEnableVacationEndDate:) - (-vacationEndDate, -setVacationEndDate:): getters/setters for the - new optional vacation end date. - -2011-11-20 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFolder.m (-lookupFolder:): explicitly set - the MAPIStoreContext's woContext as context to the looked up - folder, although one could expect it to have been set during the - lookup at the SOGo level... - - * OpenChange/MAPIStoreFSFolder.m (-lookupFolder:): removed useless - overriding of method. - - * OpenChange/MAPIStoreMailFolder.m (-[MAPIStoreMailFolder - lookupFolder:]): removed useless overriding of method. - (-[MAPIStoreInboxFolder lookupFolder:]): in altnamespace mode, - perform the same association of the woContext to the looked up - folder as in MAPIStoreFolder. - - * OpenChange/MAPIStoreContext.m - (-initFromURL:withConnectionInfo:andTDBIndexing:): instantiate a - SOGoUser corresponding to the username of the new context and - associated it to the woContext ivar. - -2011-11-18 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFolder.m (-permissionEntries): new public - method. - (-modifyPermissions:withCount:andFlags:): new backend op public - method. - (-aclFolder, -rolesForExchangeRights:, -exchangeRightsForRoles:): - new mandatory methods. - - * OpenChange/SOGoMAPIFSFolder.m (-defaultUserID, -addUserInAcls:) - (-removeAclsForUsers:, -aclUsers, -aclsForUser:) - (-setRoles:forUser:): implemented standard ACL methods. - - * OpenChange/MAPIStorePermissionsTable.m - (+[MAPIStorePermissionEntry - entryWithUserId:andMemberId:forFolder:]): constructor now takes a - memberId and the container folder as parameters. - (-[MAPIStorePermissionEntry getPrMemberId:inMemCtx:]): now based - on the new memberId ivar. - (-[MAPIStorePermissionEntry getPrEntryId:inMemCtx:]): now make use - of MAPIStoreInternalEntryId for regular member ids and return an - empty blob for special ones, as specified in oxcperm. - (-[MAPIStorePermissionEntry getPrMemberName:inMemCtx:]): now - returns the real CN of the user for regular member ids and return - @"" or @"Anonymous" for special ones, as specified in oxcperm. - (-[MAPIStorePermissionEntry getPrMemberName:inMemCtx:]): now - returns the real member rights, based on the aclFolder of the - container, using standard SOGo methods. - - * OpenChange/MAPIStorePermissionsTable.h - (MAPIStorePermissionsEntry): made class public. - - * OpenChange/MAPIStoreSOGo.m (sogo_folder_modify_permissions): new - backend op. - (sogo_backend_init): invoke "disableLocalCache" to avoid the - caching of ACL. - - * SoObjects/SOGo/SOGoCache.m (-disableLocalCache): new method to - disable the local cache altogether (helper for non-WO access). - -2011-11-17 Wolfgang Sourdeau - - * OpenChange/MAPIStoreSamDBUtils.m: new module containing helpers - pertaining to the SamDB. - (MAPIStoreSamDBUserAttribute): new function that returns the value - of a specified key from a user record matching one simple criteria. - (MAPIStoreInternalEntrydId, MAPIStoreExternalEntryId): moved - functions from MAPIStoreMessage.m. - - * OpenChange/MAPIStoreMessage.m (MAPIStoreInternalEntryId): now - takes a ldb_context * parameter pointing to the samdb, which - enables us: 1) to return the real legacyExchangeDN 2) to make use - of sAMAccountName as search parameter for the username. - -2011-11-16 Ludovic Marcotte - - * SoObjects/SOGo/SOGoSieveManager.m (-updateFiltersForLogin:...) - We now handle connection exceptions to avoid crashing sogod. - -2011-11-13 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContactsMessage.m (-getPrBody:inMemCtx:): - same as below. - - * OpenChange/MAPIStoreAppointmentWrapper.m (-getPrBody:inMemCtx:): - removed parsing hack since things are now done properly from - NGCards. - - * Tests/Unit/TestVersit.m (-test_rendering, -test_parsing): - adapted to new NGCards data structure and improved to test further - important use cases. - -2011-11-10 Wolfgang Sourdeau - - * Tests/Unit/TestVersit.m: new test module for versit parsing and - outputting. - -2011-11-09 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCalendarMessage.m (-save): set the DESCRIPTION - field to the value of PR_BODY_UNICODE or, a textual version of - PR_HTML. COMMENT would be nice later. - - * OpenChange/MAPIStoreAppointmentWrapper.m (-getPrBody:inMemCtx:): - make use of -[NSString asCardAttributeValues]. - - * OpenChange/MAPIStoreContactsMessage.m (-save): set the NOTE - field to the value of PR_BODY_UNICODE or, a textual version of - PR_HTML. - - * OpenChange/MAPIStoreMessage.m (-addProperties): intercept - PR_RTF_COMPRESSED attributes and convert them automatically to a - PR_HTML attribute. - - * OpenChange/MAPIStoreVolatileMessage.m (-addProperties:): - transfer the content of the "properties" ivar instead of the - "newProperties" parameter, so as to benefit from treatment that - could have happened in parent classes. - - * OpenChange/MAPIStoreMailVolatileMessage.m - (_generateMailDataWithBcc:): don't write the resulting mail body - to /tmp/mimegen.eml. - -2011-11-09 Francis Lachapelle - - * UI/WebServerResources/SOGoRootPage.js (onLoginClick): don't - assume that the checkbox rememberLogin is always part of the template. - -2011-11-08 Wolfgang Sourdeau - - * OpenChange/MAPIStoreRecurrenceUtils.m - (-fillRecurrencePattern:withStartDate:andEndDate:): fixed a crash - occurring when no byday mask was specified. We also force a value - for the monthday in the case of a yearly event without a proper - one. - -2011-11-07 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFolder.m (-addProperties:): we now override - this method instead of -addPropertiesFromRow:. Also, invoking - resetCache is no longer required since the "properties" ivar is - no longer used in this class. - - * OpenChange/MAPIStoreObject.m (-addPropertiesFromRow:): now - invokes [self addProperties:] to modify the "properties" ivar, - instead of doing it directly. This enables subclasses to only need - overriding -addProperties:. - (-resetProperties): removed useless method. - - * OpenChange/MAPIStoreVolatileMessage.m (-addPropertiesFromRow:): - removed obsolete overloading of method. - -2011-11-02 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMessage.m (-setReadFlag:): make overrides - optional. - - * OpenChange/MAPIStoreCalendarMessage.m (-save): handle all day - events based on the value of PidLidAppointmentSubType. - Don't add the timezone component to the vCalendar in that case. - Take PidLidAppointmentStateFlags into account before building the - list of attendees. Take the organizer passed in the recipients - into account when specified. - -2011-11-01 Francis Lachapelle - - * UI/WebServerResources/UIxAclEditor.js (addUser): fixed CSS class - "normal-person" that was replaced by "normal-user". - -2011-11-01 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCalendarMessage.m (-save): added work-around - for setting of organizer as an attendee record. - - * OpenChange/MAPIStoreMailMessage.m (-setReadFlag:): implemented - basic method, only dealing with actual setting or unsetting of - "\Seen". - - * OpenChange/MAPIStoreCalendarMessage.m (-setReadFlag:): overriden - with dumb implementation, since it seems to be invoked on this - kind of object. - -2011-10-31 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContactsAttachment.m - (-getPrAttachEncoding:inMemCtx:, -getPrAttachFlags:inMemCtx:) - (-getPrAttachmentFlags:inMemCtx:) - (-getPrAttachmentHidden:inMemCtx:) - (-getPrAttachmentLinkid:inMemCtx:, -getPrAttachSize:inMemCtx:): - new getters. - - * OpenChange/MAPIStoreSOGo.m (sogo_message_set_read_flag): new - backend op. - - * OpenChange/MAPIStoreMailMessage.m (-_fetchBodyData): fetch body - keys with BODY.PEEK rather than just BODY, to disabled the - automatic setting of the "\Seen" flag. - - * SoObjects/Mailer/SOGoMailBodyPart.m (-fetchBLOBWithPeek:): new - method that enables the fetching of body parts either via "BODY" - or "BODY.PEEK". - - * SoObjects/Mailer/SOGoMailObject.m - (-addRequiredKeysOfStructure:path:toArray:acceptedTypes:withPeek:): - added a "withPeek" parameter that enables the fetching of body - parts either via "BODY" or "BODY.PEEK". - -2011-10-28 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailVolatileMessage.m (_generateMailData): - don't consider "orig" type recipients. - Added "withBCC" parameter. Reorganized code to produce better - mime-compliant messages, in particular with regards to the - handling of multipart/* body parts. Split method in many - specialized submethods for code clarity. - (-getMessageData:inMemCtx:): overriden method for this class. - - * OpenChange/MAPIStoreSOGo.m (sogo_message_modify_recipients): - adapted backend function to the new prototype, where the message - recipients are preparsed and now passed an array of "struct - mapistore_message_recipient", rather than a struct - ModifyRecipientRow. - - * OpenChange/MAPIStoreTypes.m (NSObjectFromValuePointer): new - function returning an instance of an appropriate class based on a - property tag and a corresponding value passed as void *. - - * OpenChange/MAPIStoreFSMessage.m (-canGetProperty:): method moved - up in MAPIStoreVolatileMessage. - -2011-10-27 Francis Lachapelle - - * UI/WebServerResources/UIxAttendeesEditor.js - (performSearchCallback): show a list email address (usually an - LDAP group) unless the list has no email address (usually a - personal contacts list). - - * UI/WebServerResources/SOGoRootPage.js (initLogin): added sliding - effect to about box. - -2011-10-27 Wolfgang Sourdeau - - * OpenChange/MAPIStoreObject.m (-canGetProperty:): new method that - determines whether a property can be requested on a - MAPIStoreObject instance or descendant thereof, in order to take - different ways of fetching properties into account, whether - through a dynamic getter or some dictionary... - (-getAvailableProperties:inMemCtx:): now compute the returned - array based on the result of invocations of -[self - canGetProperty:]. - - * OpenChange/MAPIStoreFSMessage.m - (+getAvailableProperties:inMemCtx:): fixed a leak by attaching the - array of enum MAPITAGS to "properties". - (-canGetProperty:): overriden method. - - * OpenChange/MAPIStoreVolatileMessage.m: MAPIStoreMemMessage renamed - to MAPIStoreVolatileMessage. - (-getAvailableProperties:inMemCtx:) removed obsolete method. - (-init): creationTime and lastModificationTime are now ivars. - (-lookupAttachment:): implemented manadatory method. - - * OpenChange/SOGoMAPIVolatileMessage.m: SOGoMAPIMemMessage renamed - to SOGoMAPIVolatileMessage. - -2011-10-26 Francis Lachapelle - - * SoObjects/SOGo/SQLSource.m - (-checkLogin:password:perr:expire:grace:): authentication can be - performed against any database column defined in the new - LoginFieldNames defaults parameter. - (-_lookupContactEntry:considerEmail:): idem. - -2011-10-26 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFSMessage.m, - OpenChange/MAPIStoreMailVolatileMessage.m: new descendants of - MAPIStoreMemMessage. - - * OpenChange/MAPIStoreDraftsMessage: replaced class with - MAPIStoreMemMessage, enabling the creation of mails from any mail - folder. - - * OpenChange/MAPIStoreMessage.m - (-modifyRecipientsWithRows:andCount:andColumns:): take BCC - recipients into account. - - * OpenChange/MAPIStoreMessage.m - (_convertRecipientFromRow:andColumns:): temp hack: make use of - set_mapi_SPropValue_sogo instead of set_mapi_SPropValue, which was - reversed in openchange to the old behaviour. - - * OpenChange/MAPIStoreObject.m (-init): renamed "newProperties" - ivar to "properties". - (-addNewProperties:): renamed to "-addProperties:" - (-resetNewProperties:): renamed to "-resetProperties:" - (-setProperties:): renamed to "-addPropertiesFromRow:" - - * OpenChange/MAPIStoreSOGo.m (sogo_message_create_attachment): - implemented new backend method. - -2011-10-25 Francis Lachapelle - - * UI/MainUI/SOGoRootPage.m (-cookieUsername) - (-cookieWithUsername:): getter/setter for the new SOGoLogin - cookie. This is used for the new "Remember username" checkbox that - appears on the login page. - -2011-10-25 Wolfgang Sourdeau - - * OpenChange/EOQualifier+MAPIFS.[hm]: now evaluates - SOGoMAPIMemMessage. - - * OpenChange/SOGoMAPIFSMessage.[hm]: now a subclass of - SOGoMAPIMemMessage. - - * OpenChange/MAPIStoreDraftsMessage.m (_saveAttachment:): make use - of MAPIStoreMIME. - - * OpenChange/MAPIStoreMIME.[hm]: new class module implementing a - singleton helper that deduces mime types from file extensions, - based on the content of /etc/mime.types. - - * OpenChange/MAPIStoreAttachment.m, - OpenChange/MAPIStoreCalendarAttachment.m, - OpenChange/MAPIStoreMailAttachment.m: replaced the - getProperty:withTag:inMemCtx: method with its switch case to make - use of the more recent dynamic property getters API. - - * OpenChange/gen-property-selectors.py: added a few exclusions, - which are either undocumented or unused. - -2011-10-24 Wolfgang Sourdeau - - * OpenChange/MAPIStoreAttachment.m - (-getProperty:withTag:inMemCtx:): fallback on super's - implementation to benefit from the property getters methods. - - * OpenChange/MAPIStoreContactsMessage.m (-getPrBody:inMemCtx:): if - the attribute length is 0, return MAPISTORE_ERR_NOT_FOUND. - (-_fetchAttachmentParts, -getPidLidHasPicture:inMemCtx:) - (-attachmentKeysMatchingQualifier:andSortOrderings:) - (-lookupAttachment:): new methods for retrieving contact pictures - in the VCARD. - (_updatePhotoInVCard:fromProperties:): new method that inserts a - "PHOTO" element in the VCARD depending on the PR_ATTACH_* - properties. - - * OpenChange/MAPIStoreContactsAttachment.[hm]: new class module - for handling contact "attachments", that is, contact pictures. - - * OpenChange/plreader.m (PLReaderDumpPListFile): ignore "error" if - the returned property list object is not nil, since "error" might - still be set with GNUstep. - -2011-10-21 Francis Lachapelle - - * SoObjects/SOGo/SOGoUserManager.m - (-_compactAndCompleteContacts:): add the key "isGroup" when defined. - - * UI/MainUI/SOGoUserHomePage.m (:_usersForResults:inDomain:): - add a boolean value in the returning array that identifies if the - user is actually a group. - - * UI/Common/UIxAclEditor.m (-currentUserClass): return the CSS - class that identifies the user as a single contact or list of contacts. - - * UI/WebServerResources/UIxContactsUserFolders.js - (addUserLineToTree): extract the new field that is set to 1 when - the user is actually a group. - - * UI/WebServerResources/UIxAclEditor.js (addUser): new argument to - to identify the type of user (person or group). - - * UI/WebServerResources/UIxMailToSelection.js - (expandContactListCallback): don't expand contacts without an - email address. - -2011-10-19 Wolfgang Sourdeau - - * OpenChange/MAPIStoreDraftsMessage.m (-getPrDisplayTo:inMemCtx:) - (-getPrDisplayBcc:inMemCtx:): new getters. - -2011-10-18 Francis Lachapelle - - * UI/WebServerResources/generic.js (log): fixed an issue with - Firefox and IE when SOGo was opened using a targeted link. - - * SoObjects/Mailer/SOGoMailFolder.m - (-copyUIDs:toFolder:inContext:): now returns the raw IMAP response - when the copy operation failed (most probably something like "Over quota"). - -2011-10-17 Wolfgang Sourdeau - - * OpenChange/MAPIStoreSOGo.m (sogo_backend_init): invoke - -[NSProcessInfo initializeWithArguments:count:environment:] in - order to avoid an infinite loop with GNUstep occurring under - strange circumstances. Make use of "samba" as process name. - - * OpenChange/MAPIStoreMapping.m (-initForUsername:withIndexing:): - attach the struct tdb_wrap *indexing to a new memCtx ivar, in - order to make sure its value is retained until the release of the - mapping instance. - -2011-10-14 Wolfgang Sourdeau - - * OpenChange/MAPIStoreGCSMessageTable.m - (-evaluatePropertyRestriction:intoQualifier:): removed useless - condition to avoid warnings with certain versions of gcc. - -2011-10-14 Francis Lachapelle - - * UI/WebServerResources/UIxMailToSelection.js - (addressFieldChanged): we now split on commas only if no email - address is detected. - - * UI/WebServerResources/SOGoMailDataSource.js (load): associated a - unique id to the source using the url and its parameters. - - * UI/WebServerResources/SOGoDataTable.js (render): add the new - source id to the current render id. This should solve incorrect - messages appearing when fast-switching between folders or sort order. - - * SoObjects/SOGo/NSString+Utilities.m (-_rangeOfURLInRange:): - fixed handling of brackets (inequality signs <>). - -2011-10-14 Ludovic Marcotte - - * SoObjects/SOGo/SOGoGCSFolder.m (setRoles:forUser:..) - We now even cache "None" roles. - * SoObjects/Mailer/SOGoMailObject.m (fetchCoreInfos) - We now handle correctly untagged responses. - -2011-10-13 Francis Lachapelle - - * Tools/SOGoToolUserPreferences.m (-run): added possibility to - specify a file (-f filename) when setting a user - default/setting. Removed the constraint of specifying - administrative credentials of the SIeve server when not setting a - parameter related to Sieve. - -2011-10-12 Wolfgang Sourdeau - - * OpenChange/MAPIStoreSOGo.m (sogo_manager_generate_uri): new - backend op. Code from j.kerihuel@openchange.org. - - * OpenChange/MAPIStoreAppointmentWrapper.m - (-initWithICalEvent:andUser:andSenderEmail:inTimeZone:): take a - new "senderEmail" parameter in order to help the process of - deducting the attendee in an invitation message not including a - "METHOD". - (-_setupITIPContextFromAttendees): fixed method to set the method - as "REPLY" when the user is organizer rather than the other way - around. - -2011-10-11 Wolfgang Sourdeau - - * OpenChange/MAPIStoreAppointmentWrapper.m (-_setupITIPContext): - new method that contains the common code for determining the ITIP - status of the event and of the attendees. - - * OpenChange/MAPIStoreMailMessage.m (-init): "headerMethod" has - become obsolete. - (-getPrIconIndex:inMemCtx:, -getPrMessageClass:inMemCtx:): when - mail is event, forward the invocation to the - MAPIStoreAppointmentWrapper equivalent. - - * OpenChange/MAPIStoreAppointmentWrapper.m - (-getPidLidReminderSet:inMemCtx:) - (-getPidLidReminderDelta:inMemCtx:) - (-getPidLidReminderTime:inMemCtx:) - (-getPidLidReminderSignalTime:inMemCtx:) - (-getPidLidReminderOverride:inMemCtx:) - (-getPidLidReminderType:inMemCtx:) - (-getPidLidReminderPlaySound:inMemCtx:) - (-getPidLidReminderFileParameter:inMemCtx:): implemented those - alarm-related getters (see OXORMDR). - (-getPrIconIndex:inMemCtx:, -getPrMessageClass:inMemCtx:): updated - code to handle REQUEST, REPLY (positive, negative and tentative) - as well as "COUNTER" and "CANCEL". - - * OpenChange/MAPIStoreCalendarMessage.m (_setupAlarmDataInEvent:): - new method invoked from -save that sets VALARM elements on the - current event based on the PidLidReminder* properties. - (-getPidLidReminderSet:inMemCtx:) - (-getPidLidReminderDelta:inMemCtx:) - (-getPidLidReminderTime:inMemCtx:) - (-getPidLidReminderSignalTime:inMemCtx:) - (-getPidLidReminderOverride:inMemCtx:) - (-getPidLidReminderType:inMemCtx:) - (-getPidLidReminderPlaySound:inMemCtx:) - (-getPidLidReminderFileParameter:inMemCtx:): new alarm-related - forwarders to homonymous methods in MAPIStoreAppointmentWrapper. - -2011-10-09 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailFolder.m (-synchroniseCache): improved - method to only fetch non-deleted messages in part 1, and to - automatically remove message records in part 2, so that we know - when a delete message has already been taken into account with - regards to version numbers. The version number generation having - been moved from getDeletedKeysFromChangeNumber:andCN:inTableType:. - This also fixes the case where the last modification date was - increased when any deleted message was found, because "known - deleted messages" are now ignored. - (-getDeletedKeysFromChangeNumber:andCN:inTableType:) Simplified - method by moving most of it into -synchroniseCache and by - returning the highest deleted modseq reported by the latter. - -2011-10-07 Francis Lachapelle - - * UI/WebServerResources/UIxPreferences.js - (displayAccountSignature): fixed the link to edit the signature - when no signature was defined. - -2011-10-06 Francis Lachapelle - - * UI/WebServerResources/generic.js (getListIndexForFolder): the - personal folder now stays on top, as returned by the server. - -2011-10-04 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoObject.m (-davComplianceClassesInContext:): - take all the supported DAV object classes in charge, in order to - simplify the handling of those on topmost folders. - - * OpenChange/MAPIStoreFolder.m (-deleteMessageWithMID:andFlags:): - invoke "prepareDelete" on the message object when available. - -2011-10-03 Francis Lachapelle - - * UI/WebServerResources/generic.js (snoozeAlarm): new function to - snooze an alarm for a specific number of minutes. - (showAlarmCallback): offer the user to snooze the alarm right - after triggering the browser-native alert. - (showSelectDialog): new function that construct a dialog box with - a popup menu. - - * UI/Scheduler/UIxAppointmentEditor.m (-viewAction): accepts the - new form parameter snoozeAlarm, which delays the alarm to the - specified number of minutes. - - * SoObjects/Appointments/SOGoCalendarComponent.m (-snoozeAlarm:): - new method to set the next alarm of the event in a specified - number of minutes. Only affect the quick table, not the original vCalendar. - -2011-10-03 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:) - We compare sequence numbers to make sure we correctly accept - invitation replies for the "right" objects - -2011-10-03 Wolfgang Sourdeau - - * OpenChange/MAPIStoreDraftsMessage.m (-submit): unregister id - from mapping after operation. - - * OpenChange/MAPIStoreSOGo.m (sogo_message_modify_recipients): - this backend op now has a "columns" arguments for the user data - row. - -2011-09-30 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailMessage.m (-getMessageData:inMemCtx:): - same as below. - - * OpenChange/MAPIStoreCalendarMessage.m - (-getMessageData:inMemCtx:): delegated code to - MAPIStoreAppointmentWrapper so that organizers and invitees are - properly reported both in invitation emails and events. - - * OpenChange/MAPIStoreMessage.m (MAPIStoreInternalEntryId) - (MAPIStoreExternalEntryId): new helper functions that return an - NSData with the entry id for the requested user or contact. - (-getMessageData:inMemCtx:): adapted to the new mapistore_message - struct and column handling. - - * OpenChange/NSData+MAPIStore.m (-appendUInt16): new method. - - * OpenChange/EOQualifier+MAPIFS.m (-[EOKeyValueQUalifier - _evaluateMAPIFSMessageProperties:): ensure finalKey is never nil - nor undefined. - -2011-09-27 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFSMessage.m (-getPrChangeKey:inMemCtx:): - first return the value stored in the plist, if present. Otherwise - fallback to the method making use of objectVersion. - - * OpenChange/MAPIStoreSOGo.m (sogo_folder_move_copy_messages): - added the "target_change_keys" parameter. - - * OpenChange/MAPIStoreFolder.m - (-moveCopyMessagesWithMID:fromFolder:withMID:wantCopy:): ensure - the message URL exists in the MAPIStoreMapping, otherwise fail - with MAPISTORE_ERR_NOT_FOUND, to avoid a crash. Passe the target - changeKey as property to the new message. - - * OpenChange/MAPIStoreFSMessage.m (-objectVersion): return - 0xff...fff when "version" does not exist in the object properties. - -2011-09-27 Francis Lachapelle - - * UI/Common/UIxPageFrame.m (-userHasVacationEnabled): new method - that returns whether the user has an automatic vacation message enabled. - - * SoObjects/SOGo/SOGoUserDefaults.m (-setBusyOffHours): new setter - for the new defaults SOGoBusyOffHours, which defines if periods - outside business hours should be opaque (busy). - (-busyOffHours): getter corollary to the new method above. - - * UI/PreferencesUI/UIxPreferences.m (-setBusyOffHours:): new - setter for the new defaults SOGoBusyOffHours. - (-busyOffHours): getter corollary to the new method above. - - * SoObjects/Appointments/SOGoFreeBusyObject.m - (-fetchFreeBusyInfosFrom:to:): add off-hours if defaults - SOGoBusyOffHours is true. - -2011-09-26 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFolder.m - (-moveCopyMessagesWithMID:fromFolder:withMID:wantCopy:): ensure - that "data" is not NULL before passing it to - set_SPropValue_proptag as it might be converted to a PT_ERROR - value. - (-moveCopyMessageWithMID:fromFolder:withMID:wantCopy:): fixed - method name. Added PR_CHANGE_KEY and PR_PREDECESSOR_CHANGE_LIST to - list of excluded properties. - - * SoObjects/Mailer/SOGoDraftObject.m (-sendMailAndCopyToSent:): - renamed "sendMail" and made copying the messsage to the sent - folder opetional. - (-sendMail): new method that invokes the above one with "yes". - - * OpenChange/MAPIStoreMemMailMessage.m (-save): fixed "subject" - header, "to" and other recipients. Fixed "content-type", that was - deduced after "message" was generated. Take the client-provided - PR_CHANGE_KEY into account to avoid synchronisation errors. - - * OpenChange/MAPIStoreDraftsMessage.m (-_commitProperties): make - use of "PR_SUBJECT_PREFIX_UNICODE" and - "PR_NORMALIZED_SUBJECT_UNICODE" to construct the "subject" header. - (-submit): invoke the new "-sendMailAndCopyToSent:" method with - "NO". - - * OpenChange/MAPIStoreMailMessage.m (-getPrChangeKey:inMemCtx) - (-getPrPredecessorChangeList:inMemCtx): when a record is not - returned, invoke the container's synchroniseCache method, as was - done in -objectVersion. - - * OpenChange/MAPIStoreMailFolder.m (-synchroniseCache): renamed - local var "folderWasModified" to "foundChange", as in - MAPIStoreGCSFolder's version. Fixed a bug where "foundChange" - would be reset to NO when deletes were not found, even if new - elements were detected. - -2011-09-23 Francis Lachapelle - - * UI/PreferencesUI/UIxPreferences.m (-defaultCalendarList, -itemCalendarText, - -userDefaultCalendar, -setUserDefaultCalendar:): new methods to - show a popup menu for the new defaults SOGoDefaultCalendar. This - option sets which calendar is used when creating an event or a - task (selected, personal, first enabled). - - * UI/WebServerResources/SchedulerUI.js (eventsListCallback): - events are always editable and erasable for superusers. - (newEvent): added supported for the new defaults SOGoDefaultCalendar. - -2011-09-23 Wolfgang Sourdeau - - * OpenChange/MAPIStoreGCSMessage.m (-getPrChangeKey:inMemCtx:): - first force a synchronisation of the parent cache if the change key - cannot be retrieved and invoke abort if the change key is still - not available afterwards. - - * OpenChange/MAPIStoreMailMessage.m (-getPrChangeKey:inMemCtx:): - same as above. - - * OpenChange/MAPIStoreMailFolder.m (-lastMessageModificationTime): - invoke "synchroniseCache" in order to make sure we return the real - last modification time. - (-synchroniseCache): improved to increment the last modification - time when messages have been deleted. - - * OpenChange/SOGoMAPIFSMessage.m (-mapistoreMessageClass): method - implemented poorly (but work for now) and that differentiates - between the MAPIStoreMessage classes based on certain elements in - their folder path. - - * OpenChange/MAPIStoreFolder.m (-messageClass): removed method, - replaced with the new mechanism below. - - * OpenChange/NSObject+MAPIStore.h (-mapistoreMessageClass): new - category method that returns the proper MAPIStoreMessage wrapper - class from instances of SOGoObject and children classes. - -2011-09-22 Ludovic Marcotte - - * OpenChange/MAPIStoreContactsMessage.m - Added more field mappings (surname, given name, - middle name, etc.) - -2011-09-22 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailFolder.m (-createMessage): return a MAPIStoreMemMailMessage. - - * OpenChange/SOGoMemMessage.m: new class that only provides a - temporary (memory-based) dictionary of Exchange attributes. - Similar to SOGoMAPIFSMessage except for the ability to save the - dictionary in question. - - * OpenChange/MAPIStoreMemMailMessage.m: new class that enables the - saving of composed mail messages, during the different copy - operations. - - * OpenChange/MAPIStoreDraftsMessage.m (-getPrChangeKey) - (-getPrPredecessorChangeList:inMemCtx:): return - MAPISTORE_ERR_NOT_FOUND. - (-getPidLidImapDeleted:inMemCtx:, -getPrInternetMessageId:inMemCtx:): same - as above. - - * OpenChange/MAPIStoreMailFolder.m (-[MAPIStoreDraftsFolder - messageClass, createMessage]): restore methods. - - * OpenChange/MAPIStoreFolder.m - (-moveCopyMessagesWithMIDs:andCount:fromFolder:withMIDs:wantCopy:): - adapted to be invoked from the target folder. - Implemented generic version for specialized folders lacking an - implementation and for copying/moving items across folders of - different types. - (-postNotificationsForMoveCopyMessagesWithMIDs:andMessageURLs:andCount:fromFolder:withMIDs:wantCopy:): - new helper method that performs the whole notification magic for - message moves. - - * OpenChange/MAPIStoreSOGo.m (sogo_folder_move_copy_messages): - adapted to last backend changes. - -2011-09-21 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailFolder.m - (-moveCopyMessagesWithMIDs:andCount:toFolder:withMIDs:wantCopy:): - improved by acting directly on source and dest MIDs, by handling - multiple messages at once and by accepting proper UID ranges in - the COPYUID response. - - * OpenChange/MAPIStoreSOGo.m (sogo_folder_move_copy_messages): - adapted to new backend prototype. - - * OpenChange/MAPIStoreFolder.m (-createMessage): reverse the - specification of the "mid" parameter as the copy/move hack in - MAPIStoreMailFolder is no longer needed. - -2011-09-20 Wolfgang Sourdeau - - * OpenChange/MAPIStoreObject.m (-getReplicaKeyFromGlobCnt:): new - method that returns the same result as - getReplicaKey:fromGlobCnt:inMemCtx: in the form of an NSData - instance. - - * OpenChange/MAPIStoreContactsMessage.m (-save): same as below. - - * OpenChange/MAPIStoreTasksMessage.m (-save): same as below. - - * OpenChange/MAPIStoreCalendarMessage.m (-save): set the - PR_CHANGE_KEY to the value passed by the client after the version - cache has been updated a first time. - - * OpenChange/MAPIStoreMailMessage.m (-getPrChangeKey:inMemCtx:, - (-getPrPredecessorChangeList:inMemCtx:): same as below. - - * OpenChange/MAPIStoreGCSMessage.m (-getPrChangeKey:inMemCtx:, - (-getPrPredecessorChangeList:inMemCtx:): wrapper accessors around - the getters defined in MAPIStoreGCSFolder below. - - * OpenChange/MAPIStoreMailFolder.m - (-setChangeKey:forMessageWithKey:, -changeKeyForMessageWithKey:) - (-predecessorChangeListForMessageWithKey:): same as below. - - * OpenChange/MAPIStoreGCSFolder.m (-changeKeyForMessageWithKey:) - (-predecessorChangeListForMessageWithKey:) - (-setChangeKey:forMessageWithKey: (NSString *) messageKey): new - methods for retrieving or setting the PR_CHANGE_KEY for the - specified record. The PR_PREDECESSOR_CHANGE_LIST is also handled, - albeit set automatically. - - * OpenChange/NSString+MAPIStore.m (+stringWithGUID:) - (-extractGUID:): new wrapper methods around the GUID utility - functions in libndr. - - * OpenChange/NSData+MAPIStore.m (+dataWithXID: asXIDInMemCtx:): - new method to handle XID structs. - (-appendUInt8, -appendUInt32): new methods to easily append - integer values. - -2011-09-19 Ludovic Marcotte - - * OpenChange/MAPIStoreDraftsMessage.m: (_commitProperties) - We now correctly handle the "importance" property - - * Added handling of PR_IMPORTANCE and PidLidBusyStatus - for event objects - -2011-09-14 Ludovic Marcotte - - * SoObjects/Mailer/SOGoMailBaseObject.m: (imap4Connection): - Cache "corruption" bug fix that could lead us to using the - wrong IMAP connection for OpenChange users - - * OpenChange/MAPIStoreMapping.m: (unregisterURLWithID:) - We also remove the keys/values from the indexing database - - * OpenChange/MAPIStoreSOGo.m - RopMoveCopyMessages, RopCopyTo and messages move/copy - notifications support for messages - - * OpenChange/MAPIStoreContactsMessage.m: massive improvements - to support many new properties - - * OpenChange/MAPIStoreTasksMessage.m: massive improvements - to support many new properties - - * OpenChange/MAPIStoreFolder.m: (getPrAccess:inMemCtx:) fixed - permissions issue - we were returning a wrong value leading to - IMAP subfolders not being "writable" - - * SoObject/Mailer/SOGoMailFolder.m (prefetchCoreInfosForMessageKeys:) - Fixed a MAJOR issue regarding keys handling. We should NEVER assume - the untagged IMAP response's order will be the same as the FETCH's one! - - * SoObjects/Mailer/SOGoMailBaseObject.m: (imap4Connection) We now - ensure the context is valid to properly get the user's login by - using the container's context if the current one is nil - - * OpenChange/MAPIStoreMailFolder.m: (moveCopy...) Cleaned up some - code and we now also correctly send notification updates for the - destination folder - -2011-09-04 Ludovic Marcotte - - * OpenChange/MAPIStoreMapping.m: (MAPIStoreMappingTDBTraverse()) - Fixed a major issue regarding the use of strtoll. It was overflowing - keys as they are unsigned long long int. We now make use of strtoull - which fixes the problem and avoids major cache corruption of the - indexing.tdb database (per user). - - * OpenChange/MAPIStoreSOGo.m: Some cleanups to ease current and - future debugging - -2011-08-18 Francis Lachapelle - - * UI/WebServerResources/UIxContactEditor.js - (regenerateCategoriesMenu): register the onMenuClickHandler - function on the mouse down event instead of the click event, since - the contextual menu is hidden on the mouse down event. This fixes - the bug where a predefined category could never be selected from - the combo box. - -2011-08-15 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailFolder.m - (-[MAPIStoreMailFolder createFolder:withFID:inContainer:): new method - that enables the specification of a SOGo object container. - (-[MAPIStoreMailFolder createFolder:withFID:): rewritten method to make - use of the above. - (-[MAPIStoreInboxFolder createFolder:withFID:): rewritten method to make - use of the above, with the choice container depending on the - "usesAltNamespace" ivar. - (-[MAPIStoreInboxFolder initWithURL:inContext:): overriden method - to initialize the "usesAltNamespace" ivar based on the flags set - on the "INBOX" folder. - (-[MAPIStoreInboxFolder - folderKeysMatchingQualifier:andSortOrderings:]) - (-[MAPIStoreInboxFolder lookupFolder:]): - overriden methods to make use of "usesAltNamespace". - (-[MAPIStoreMailFolder _imapFolderNameRepresentation:): new - private method that combines the SOGo representation of an IMAP - folder leaf, without the "folder" prefix, with the current folder - as parent. - (-[MAPIStoreMailFolder _cleanupSubfolderKeys:): new private method - that tests the list of children keys passed as parameter and - compare each one of them with the special folders: trash, sent and - drafts and those that are found. - (-[MAPIStoreInboxFolder _imapFolderNameRepresentation:): overriden - method by taking the "altnamespace" ivar into account. - - * SoObjects/Mailer/SOGoMailAccount.m - (-toManyRelationshipKeysWithNamespaces:): new method, superseding - "toManyRelationshipKeys" that enables the returning of namespaces - "folders" or not. - - * OpenChange/MAPIStoreMailMessage.m (-objectVersion): updated code - as in MAPIStoreGCSMessage's version. - - * OpenChange/MAPIStoreMailFolder.m (-messageTable): we no longer - cache the table object as we don't want to assign different - handles to the same memory object, causing inconsistencies with - tables instantiated twice with different parameters. - -2011-08-13 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailFolder.m - (-lookupName:inContext:acquire:): fixed a crash occurring when the - key didn't end with ".eml". - -2011-08-12 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailMessageTable.m - (-getRow:withRowID:andQueryType:inMemCtx:): overriden method to - prefetch the "core infos" of messages that are going to be - fetched. - -2011-08-12 Francis Lachapelle - - * UI/WebServerResources/HTMLElement.js (refreshSelectionByIds): - replaced the call to the Prototype method "down" in favor to a - global access with the element ID. This fixes a multiple-message - selection issue with IE. - -2011-08-12 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailFolder.m - (-prefetchCoreInfosForMessageKeys:): new method that enables the - prefetching and caching of "core infos" for messages. - (-lookupName:inContext:acquire:): looked up messages are now fed - with their cached core infos, if present. - - * SoObjects/Mailer/SOGoMailObject.m: (addFlags:, removeFlags:) - release "coreInfos" rather than flagsCache, which has been - obsoleted. - (_hasFlag:): make use of "coreInfos" to fetch the flags since most - of the time the other infos will be fetch for the same object, - bringing a 30ms speedup per message. - (-setCoreInfos): new accessor that enables setting coreInfos from - an external object. - (+initialize): coreInfoKeys was renamed to SOGoMailCoreInfoKeys - and has now been published. - - * OpenChange/MAPIStoreTable.m (-setHandleId:): only register the - table in the notification cache if the provided handle id is not - null. - - * OpenChange/MAPIStoreCalendarMessage.m (-save): resynchronise the - container cache after the operation. - - * OpenChange/MAPIStoreTasksMessage.m (-save): resynchronise the - container cache after the operation. - - * OpenChange/MAPIStoreContactsMessage.m (-save): resynchronise the - container cache after the operation. - - * OpenChange/MAPIStoreGCSMessage.m (-objectVersion): ensure that a - change number is available when the message is "not new", but - resynchronise the cache in doing so. - - * OpenChange/MAPIStoreSOGo.m (sogo_table_handle_destructor): added - new backend operation. - - * OpenChange/NSAutoreleasePool+MAPIStore: removed module since it - was a lot of code to handle one specific case. - - * OpenChange/MAPIStoreGCSMessageTable.m - (-evaluatePropertyRestriction:intoQualifier:): create a local - talloc context and free it at the end when generating a new date - restriction. - - * OpenChange/plreader.m (-displayKey:withIndentation:): display - alternative hex representation of the keys. - -2011-08-11 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFSFolderTable.[hm]: new module. - - * OpenChange/MAPIStoreFSFolder.m (-folderTable): overriden method - to return a "MAPIStoreFSFolderTable" instance. - (-folderKeysMatchingQualifier:andSortOrderings:): overriden method - in order to evaluate folders by applying the received qualifer to - the properties message. - - * OpenChange/MAPIStoreFolder.m (-objectVersion): implemented - method based on the value provided in the folder props dictionary. - (-propertiesMessage): new getter. - - * OpenChange/MAPIStoreObject.m (-objectVersion): now a mandatory - method for subclasses. - -2011-08-10 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMapping.m - (+mappingForUsername:withIndexing:): modified contrusctor to make - use of a "username" parameter that enable per-user "singletons". - (-increateUseCount, -decreaseUseCount): new accessors that enable - the registration/unregistration of the mapping object from the - singleton registry. - -2011-08-08 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFolder.m (-lookupMessage:): set the WOContext - of the resulting SOGoObject to the value attached to the current - MAPIStoreContext. - - * OpenChange/MAPIStoreCalendarMessageTable.m - (-evaluatePropertyRestriction:intoQualifier:): implemented - searches on PR_OWNER_APPT_ID in order to enable the retrieval of - the requested invitation. - - * OpenChange/MAPIStoreCalendarMessage.m (-save): fixed attendees - handling (only change the attendee partstat) and avoid saving the - event when the newpartstat is "undefined". - - * OpenChange/MAPIStoreAppointmentWrapper.m - (-getPrOwnerApptId:inMemCtx:): properly reimplemented the method - following the spec. - (-getPidLidServerProcessed:inMemCtx:): now returns yes in order to - prevent the client from uselessly updating the event. - - * OpenChange/MAPIStoreMailMessage.m - (-getPrReplyRequested:inMemCtx:): commented out method. - (-getPrResponseRequested:inMemCtx:): returns NO when the message - is an invitation, as the mail handling is performed internally by - SOGo. - (-getPrOwnerApptId:inMemCtx:): properly forwards the call to - MAPIStoreAppointmentWrapper when required. - (-getPidLidMeetingType:inMemCtx:): new method. - - * OpenChange/MAPIStoreContext.m (-activeUser): new helper method. - - * OpenChange/MAPIStoreSOGo.m (sogo_backend_init): invoke - -activateApplication on the new app in order to make it accessible - via [WOApplication application]. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-lookupCalendarFoldersForUID:): make use of -[SOGoUser - lookupCalendarFoldersForUID:]. - - * SoObjects/Appointments/SOGoAppointmentObject.m - (_handleAttendee:withDelegate:ownerUser:statusChange:inEvent:): - enable updating the attendee's calendar when a WORequest is not - available at all, for example from OpenChange. - -2011-08-05 Francis Lachapelle - - * UI/Contacts/UIxContactView.m (-contactCardTitle): removed this - method since we no longer prefix the contact name by a label - ("Card For"). - (-_cardStringWithLabel:value:url:): new method that wraps the - value with an link with the specified URL type. Used for - telephone numbers. - -2011-08-05 Wolfgang Sourdeau - - * OpenChange/MAPIStoreAppointmentWrapper.m - (-getPidLidGlobalObjectId:inMemCtx:) - (-getPidLidCleanGlobalObjectId:inMemCtx:): reimplemented methods - by following the spec carefully (MS-OXICAL: 2.1.3.1.1.20.26). - - * OpenChange/NSString+MAPIStore.m (-convertHexStringToBytes): new - method that returns an NSData from a string of hex values - represented as text. - -2011-08-04 Wolfgang Sourdeau - - * OpenChange/MAPIStoreDraftsMessage.m (-getMessageData:inMemCtx:): - overriden method. - Made module able to handle SOGoMailObject as well, since we can - possibly have such objects as value for sogoObject. - (-getPrImportance:inMemCtx:): overriden method. - (-getPrReceivedByEmailAddress:inMemCtx:): overriden method. - (-getPrSenderEmailAddress:inMemCtx:): overriden method. - (-getPrDisplayCc:inMemCtx:): overriden method. - - * OpenChange/MAPIApplication.m (+isCachingEnabled): new overriden - method that returns "NO" in order to avoid leaking dictionaries - that we don't use since we are not WO-based. - - * OpenChange/MAPIStoreMapping.m (-initWithIndexing:) - (-registerURL:withID:): removed noisy warnings. - - * OpenChange/MAPIStoreSOGo.m (sogo_backend_create_context): - adaoted to new prototype. - -2011-08-02 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFolder.m (-permissionsTable): new method - that returns a permissions table for the current folder. - - * OpenChange/MAPIStorePermissionsTable.[hm]: new class module for - handling permission objects. Currently only provide stub entries - for the "anonymous" and "default" users. - - * OpenChange/MAPIStoreContactsMessageTable.m - (-evaluateContentRestriction:intoQualifier:): overriden method in - order to evaluate PR_MESSAGE_CLASS_UNICODE. - (-evaluatePropertyRestriction:intoQualifier:): added stub support for - PidLidAddressBookProviderArrayType, - PidLidAddressBookProviderEmailList and real support for - PidLidEmail[123]OriginalDisplayName. - - * OpenChange/MAPIStoreTable.m (-operatorFromRestrictionOperator): - code split from -evaluatePropertyRestriction:intoQualifier: and - exposed for external use. - -2011-08-02 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (_onMenuLabelFlagX): fixed a - bug when changing the flag of multiple messages. - - * UI/WebServerResources/SOGoRootPage.js (onLoginClick): reset - error message (if any) when login in. - -2011-08-01 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFSMessage.m - (-getAvailableProperties:inMemCtx:): take only NSNumber keys into - account. - -2011-07-29 Wolfgang Sourdeau - - * OpenChange/MAPIStoreTable.m (-dealloc): free the list of - columns, otherwise the last list set is leaked. - -2011-07-28 Wolfgang Sourdeau - - * OpenChange/MAPIStoreSOGo.m (sogo_folder_get_deleted_fmids): - implemented new backend method. - - * OpenChange/MAPIStoreTable.m (-loggingPrefix): removed method as - it was causing crashes when the parent object was deallocated. - - * SoObjects/Mailer/SOGoMailFolder.m (-statusForFlags:): new method - that returns the values of flags passed as parameters. - (-fetchUIDsOfVanishedItems:): new method that returns the list of - UID that are reported to have vanished since the specified modseq. - -2011-07-27 Wolfgang Sourdeau - - * OpenChange/MAPIStoreGCSMessageTable.m - (-evaluatePropertyRestriction:intoQualifier:): now handles - PR_CHANGE_NUM using the new methods below. - - * OpenChange/MAPIStoreGCSMessage.m (-objectVersion): overriden - method to make use of -[MAPIStoreGCSFolder - changeNumberForMessageWithKey:]. - - * OpenChange/MAPIStoreGCSFolder.m (-initWithURL:inContext:) - (initWithSOGoObject:inContainer:): initialise the new - "versionsMessage" ivar, pointing to a SOGoMAPIFSMessage object - that includes versioning information. - (-lastMessageModificationTime): return the date value stored in - "versionsMessage". - (-synchroniseCache): new method that updates "versionsMessage" - differentually with versioning data from the server. - (-lastModifiedFromMessageChangeNumber:): new helper method that returns - the corresponding c_lastmodified from a MAPI change number. - (-changeNumberForMessageWithKey:): new helper method that returns the - version number associated with a message. - - * OpenChange/MAPIStoreMailMessageTable.m - (-evaluatePropertyRestriction:intoQualifier:): now handles - PR_CHANGE_NUM using the new methods below. - - * OpenChange/MAPIStoreMailMessage.m (-objectVersion): overriden - method to make use of -[MAPIStoreMailFolder - changeNumberForMessageUID:]. - - * OpenChange/MAPIStoreMailFolder.m (-initWithURL:inContext:) - (initWithSOGoObject:inContainer:): initialise the new - "versionsMessage" ivar, pointing to a SOGoMAPIFSMessage object - that includes versioning information. - (-lastMessageModificationTime): return the date value stored in - "versionsMessage". - (-synchroniseCache): new method that updates "versionsMessage" - differentually with versioning data from the server. - (-modseqFromMessageChangeNumber:): new helper method that returns - the corresponding IMAP "modseq" from a MAPI change number. - (-messageUIDFromMessageKey:): new helper method. - (-changeNumberForMessageUID:): new helper method that returns the - version number associated with a message. - - * OpenChange/MAPIStoreTable.m (-loggingPrefix): overriden method - in order to get more useful informations. - - * OpenChange/MAPIStoreObject.m (-loggingPrefix): overriden method - in order to get more useful informations. - - * OpenChange/MAPIStoreFSMessageTable.m - (-evaluatePropertyRestriction:intoQualifier:): overriden method to - handle PR_CHANGE_NUM, based on the messages version number. - - * OpenChange/MAPIStoreFSMessage.m (-objectVersion): overriden - method to retrieve the object version from the "version" attribute - in the properties list. - (-save): update the "version" attribute in the saved property list - from openchangedb. - - * OpenChange/MAPIStoreAppointmentWrapper.m - (-getPidLidGlobalObjectId:inMemCtx:): work-around certain buggy - events which might now have a "CREATED" element. - - * OpenChange/MAPIStoreContactsMessage.m: commented out - "-getPrOabName:inMemCtx:" and "-getPrOabLangid:inMemCtx:" as they - seem to be useful only for contact lists. - - * OpenChange/MAPIStoreFolder.m - (-faiMessageKeysMatchingQualifier:andSortOrderings:): - reimplemented method to make use of the new method below. - - * OpenChange/SOGoMAPIFSFolder.m - (-toOneRelationshipKeysMatchingQualifier:andSortOrderings:): moved - method from -[MAPIStoreFSFolder - messageKeysMatchingQualifier:andSortOrderings:] in order to make - it available to all the SOGoMAPIFSFolder clients. - - * OpenChange/MAPIStoreContext.m (-getNewChangeNumber): new - utility method that returns a change number from the mapistore db - via the openchangedb API. - - * OpenChange/SOGoMAPIFSMessage.m (-save): serialize the properties - dictionary in binary plist format to avoid GNUstep bugs where - high unsigned long long values are not parsed properly. - (-properties): corrolary to the above change. - - * OpenChange/NSArray+MAPIStore.m (-asArrayOfUnicodeStringsInCtx:): - the return type is now "struct WStringArray_r *". - - * OpenChange/NSString+MAPIStore.m (-asUnicodeInMemCtx): return an - empty string when length == 0, otherwise the resulting pointer - will be NULL. - - * OpenChange/plreader.m: new test tool to dump property lists - independently from their serialization format. - -2011-07-27 Francis Lachapelle - - * SoObjects/SOGo/SOGoUserFolder.m (-ownerInContext:): in case the - user domain is specified in the URL but not in the user login - name, we remove it (user@domain => user). - - * SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): drop - the domain from the login name when loginDomains are enabled but - domain-based UID is disabled. - -2011-07-26 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailFolderTable.[hm]: removed useless class. - - * OpenChange/MAPIStoreTable.m (-lookupChild:)): new method that - subclasses must override and that a child object matching the - table type. - - * OpenChange/MAPIStoreObject.m (-lookupChild:): removed method as - it was too generic. Each subclass has now its own set of - specialized methods. - (-childKeysMatchingQualiflier:andSortOrderings:) same as above. - - * OpenChange/MAPIStoreMessage.m (-lookupAttachment:): new method, - replacing -[MAPIStoreObject lookupChild:]. - (-attachmentKeysMatchingQualiflier:andSortOrderings:) same as - above, replacing (-[MAPIStoreObject - childKeysMatchingQualiflier:andSortOrderings:]). - - * OpenChange/MAPIStoreFolder.m (-lookupFolder:, -lookupMessage:) - (-lookupFAIMessage:): new methods, replacing -[MAPIStoreObject - lookupChild:]. - (-messageKeysMatchingQualiflier:andSortOrderings:) same as - above, replacing (-[MAPIStoreObject - childKeysMatchingQualiflier:andSortOrderings:]). - (-faiMessageKeysMatchingQualiflier:andSortOrderings:) same as - above, replacing (-[MAPIStoreObject - childKeysMatchingQualiflier:andSortOrderings:]). - (-folderKeysMatchingQualiflier:andSortOrderings:) same as - above, replacing (-[MAPIStoreObject - childKeysMatchingQualiflier:andSortOrderings:]). - -2011-07-26 Francis Lachapelle - - * UI/MailerUI/UIxMailListActions.m - (-getUIDsInFolder:withHeaders:): we check if the array of messages - UIDs is nil prior adding it to the returned dictionary. - -2011-07-25 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailAccount.m (-hasCapability): new proxy - method that determines whether an IMAP capability is present on - the server. - (-supportsQResync): new method that returns whether the server - supports the "QRESYNC" capability. - -2011-07-25 Francis Lachapelle - - * UI/MainUI/SOGoRootPage.m (-connectAction): don't add the domain - if domain-based UIDs are not enabled. - (-changePasswordAction): idem. - - * SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): added - test for the ivar "realUID" since it can be undefined if the - corresponding source is down. - -2011-07-22 Wolfgang Sourdeau - - * OpenChange/MAPIStoreSOGo.m (sogo_table_get_row_count): added new - backend operation. - - * Tests/Unit/SaxXMLReaderFactory+SOGoTests.m: new module offering - a category on SaxXMLReaderFactory that enables finding our NGCards - SAX driver in our source directories. - -2011-07-21 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailMessage.m: make use of the new class - below for calendar contents. - - * OpenChange/MAPIStoreCalendarMessage.m: make use of the new class - below. - (-save): handle invitation replies. - - * OpenChange/MAPIStoreAppointmentWrapper.m: new wrapper class - module that implements the getters for iCalEvent objects. - -2011-07-20 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailMessage.m (-subject): new overridable - accessor common to certain properties. - - * OpenChange/MAPIStoreObject.m: moved "-getEmptyString:inMemCtx:", - "-getLongZero:inMemCtx:", "-getYes:inMemCtx:", "-getNo:inMemCtx:" - into NSObject+MAPIStore.m - - * OpenChange/MAPIStoreFolder.m (-lookupFolder:, -createMessage:): - assign the parent context woContext to the newly created - SOGoObject to enable access to "activeUser". - - * SoObjects/SOGo/SOGoObject.m (-setContext, -context): new - accessors for the "context" ivar. - -2011-07-20 Francis Lachapelle - - * UI/WebServerResources/UIxMailToSelection.js - (addressFieldLostFocus): call addressFieldChanged to validate the - entry and split recipients in multiple fields. - -2011-07-19 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCalendarMessage.m: reordered certain private - methods. - (-ownerTimeZone): moved into MAPIStoreObject. - - * OpenChange/MAPIStoreMailMessage.m (-_setupBodyData): new - centralized method that performs the common operations required to - fetch the message body. - (-getPrHtml:inMemCtx,-getPrBody:inMemCtx:): make use of the above - method. - - * SoObjects/SOGo/NSString+Utilities.m - (-countOccurrencesOfString:): new self-explicit method. - -2011-07-19 Francis Lachapelle - - * SoObjects/SOGo/SOGoUserFolder.m (-_davFetchUsersMatching:): - append the domain to the username when SOGoEnableDomainBasedUID is - set to YES. When using domains, fetch matching users from visible - domains. - -2011-07-18 Wolfgang Sourdeau - - * OpenChange/NSString+MAPIStore.m (-asUnicodeInMemCtx:): use an - alternative method to convert the string to a utf8 array of bytes - to avoid an undefined conditional bug in GNUstep. - -2011-07-18 Francis Lachapelle - - * SoObjects/SOGo/SOGoSystemDefaults.m (-enableDomainBasedUID): new - method that returns the boolean value of the new system defaults - SOGoEnableDomainBasedUID if at least one domain is defined. - - * SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): try to - extract the domain part of the login name only if the new system - defaults SOGoEnableDomainBasedUID is set to YES. If the domain is not - specified but SOGoEnableDomainBasedUID is enabled, add the domain to the - login name. - - * SoObjects/SOGo/SOGoUserManager.m - (-contactInfosForUserWithUIDorEmail): try to extract the domain - part of the login name only if the new system defaults - SOGoEnableDomainBasedUID is set to YES.. - - * SoObjects/SOGo/SOGoSession.m - (+decodeValue:usingKey:login:domain:password:): idem. - - * SoObjects/SOGo/SOGoUserManager.m - (-_sourceCheckLogin:andPassword:domain:perr:expire:grace:): the - domain argument is now a pointer so it will be set according to - the matching authentication source. - - * UI/MainUI/SOGoUserHomePage.m (-usersSearchAction): only append - the domain to the user's login if the new system defaults - SOGoEnableDomainBasedUID is set to YES. - -2011-07-15 Wolfgang Sourdeau - - * OpenChange/MAPIStoreSOGo.m (sogo_backend_init): disable the use - of the requests cache as objects are retained by the mapistore as - needed. - - * SoObjects/SOGo/SOGoCache.m (-disableRequestsCache): new method - that adds the ability to not put requests object in the cache. - - * OpenChange/MAPIStoreDraftsAttachment.m: removed useless class. - - * OpenChange/MAPIStoreMessage.m (-createAttachment): moved method - from MAPIStoreDraftsMessage - (-childKeysMatchingQualifier:andSortOrderings:): same as above. - - * OpenChange/*.m: make use of mapistore error code rather than - MAPI ones. - - * OpenChange/MAPIStoreMailMessage.m (-getPrHtml:inMemCtx:): fixed - leak. - - * OpenChange/MAPIStoreFolder.m (-createFolder:withRow:andFID:): - fixed referencing of resulting folder. - (+initialize): fixed initialization of MAPIStoreFAIMessageK. - (-getTable:andRowCount:tableType:andHandleId:): properly return - MAPISTORE_ERR_NOT_FOUND for tables that are not handled by the - folder. - -2011-07-14 Wolfgang Sourdeau - - * OpenChange/MAPIStoreSOGo.m: finalized the new API. - - * OpenChange/MAPIStoreTable.m: added memory debugging output. - - * OpenChange/NSArray+MAPIStore.m (-asFoldersListInCtx:) removed - useless method. - (-asArrayOfUnicodeStringsInCtx:) properly connect the talloc - hierarchy nodes. - - * OpenChange/MAPIStoreSOGo.m: adapted to latest mapistore_backend - nomenclature. - -2011-07-14 Francis Lachapelle - - * UI/MailerUI/UIxMailListActions.m - (-getUIDsInFolder:withHeaders:): don't add the quota if there's no - quota for the mail account. - - * UI/WebServerResources/UIxAttendeesEditor.js (onContactKeydown): - fixed glitch when pressing the tab key from an empty input field. - (onFreeBusyLoadHandler): removed redundant calls that were causing - errors when retrieving the attendees freebusy information. - - * UI/WebServerResources/SOGoTimePicker.js (onChange): specified - the radix when calling parseInt since a string starting with 0 - would be parsed as an octal number. - - * UI/WebServerResources/UIxAppointmentEditor.js (validateAptEditor): idem. - -2011-07-14 Ludovic Marcotte - - * SoObjects/SOGo/SOGoGCSFolder.m (davCollectionTag) - We now correctly cast the sync tag value. - -2011-07-13 Francis Lachapelle - - * UI/WebServerResources/UIxAppointmentEditor.js (handleAllDay) - (_setDate): fixed errors when event lasts all-day. - - * SoObjects/Mailer/SOGoMailFolder.m - (-deleteUIDs:useTrashFolder:inContext:): the withTrash argument is - now a pointer since the method can modify it when the current - folder is the trash folder. - - * SoObjects/Contacts/SOGoContactSourceFolder.m - (-_flattenedRecord:): added c_component key so the proper icon - appears beside entries in the Web interface. - - * UI/WebServerResources/generic.js (_showAlertDialog): added fade - effect when showing or hiding a dialog box. - -2011-07-13 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContext.m (-init): removed the messages - cache dictionary, as its purpose has been superseeded by the - features of the "POC api". - - * OpenChange/MAPIStoreSOGo.m (sogo_op_openmessage) - (sogo_op_createmessage): now return a "poc api"-compatible - object. - (sogo_op_savechangesmessage, sogo_op_submitmessage) - (sogo_op_modifyrecipients): replaced methods with pocop - implementations. - (sogo_op_*attach*): methods to their final form' - (sogo_op_get_fid_by_name): removed obsolete method. - (sogo_op_release_record): removed obsolete method. - - * OpenChange/NSObject+MAPIStore.m (MAPIStoreTallocWrapperDestroy): - the object release now occurs within an NSAutoreleasePool. - - * Tools/sogo-tool.m (main): instantiate SOGoSystemDefaults in - order to properly inject the entries from SOGoDefaults.plist. - -2011-07-12 Francis Lachapelle - - * UI/MailerUI/UIxMailFolderActions.m (-batchDeleteAction): we - only return the quota when not using the trash folder. - - * SoObjects/SOGo/SOGoFolder.m (-compare:): handle the case when - the display name is not defined. - - * UI/Scheduler/UIxCalListingActions.m - (-_fetchFields:forComponentOfType:): test the calendar name and - set it to an empty string if it's not defined. - - * UI/Scheduler/UIxCalendarSelector.m (-calendars): idem. - - * UI/WebServerResources/UIxCalendarProperties.js (onOKClick): - refuses to save the properties if the calendar name is empty. - - * UI/WebServerResources/SchedulerUI.js (updateCalendarProperties): - Create a new text node in case the calendar has no name. - -2011-07-12 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFSMessage.m - (+getAvailableProperties:inMemCtx:): added memCtx parameter. - - * OpenChange/MAPIStoreSOGo.m: (sogo_op_get_table_property) - (sogo_op_get_available_table_properties) - (sogo_op_set_restrictions,sogo_op_set_sort_order): removed - obsolete methods. - - * OpenChange/MAPIStoreCalendarMessageTable.m, - OpenChange/MAPIStoreContactsMessageTable.m, - OpenChange/MAPIStoreFAIMessageTable.m, - OpenChange/MAPIStoreFSMessageTable.m, - OpenChange/MAPIStoreMailMessageTable.m, - OpenChange/MAPIStoreTasksMessageTable.m: overriden - "+childObjectClass" to enable "getAvailableProperties:inMemCtx:" - to work properly. - - * OpenChange/MAPIStoreTable.m - (-getRow:withRowID:andQueryType:inMemCtx:): slight change of - prototype in order to leave the structure initialization to the - backend. - -2011-07-11 Francis Lachapelle - - * UI/Scheduler/UIxAppointmentEditor.m - (-takeValuesFromRequest:inContext:): when switching from an - all-day event to a non-all-day event, we must add the vTimeZone - definition. The opposite is also fixed. - - * SoObjects/Appointments/SOGoComponentOccurence.m - (-prepareDelete): when deleting an occurrence of a floating - all-day event, we must adjust the exception date to the user's timezone. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-_flattenCycleRecord:forRange:intoArray:): when computing - occurrences of a floating all-day event, we must also ajdust the - exception dates to the user's timezone. - -2011-07-11 Wolfgang Sourdeau - - * OpenChange/*: made backend ops consistent with the talloc API, - where resources are allocated in a tree of "talloc contexts". - - * OpenChange/NSObject+MAPIStore.m (-tallocWrapper:): new method - enabling the wrapping of obj-c objects into talloc structures, in - order to ease memory management. - -2011-07-08 Francis Lachapelle - - * UI/MailerUI/UIxMailListActions.m (-getUIDsAndHeadersInFolder) - (-getSortedUIDsAction): both methods now return the inbox quota - along with the other data. - - * UI/MailerUI/UIxMailFolderActions.m (-batchDeleteAction): return - the inbox quota when the messages were successfully deleted. - - * SoObjects/Mailer/SOGoMailFolder.m - (-deleteUIDs:useTrashFolder:inContext:): when not using the trash folder - or when deleting a message within the trash folder, we now expunge the - folder immediately. - - * UI/WebServerResources/SOGoMailDataSource.js (init): quotas - information can now be passed as argument. It will be passed back - to the method "updateQuotas" from MailerUI.js. - -2011-07-08 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContext.m (-openDir:): implemented. - (-closeDir): added useful comments. - (-_tableForFID:andTableType:, -openMessage:withMID:inFID:) - (-createMessageWithMID:inFID:isAssociated:): - (-getProperties:ofTableType:inRow:withMID:): - (-setPropertiesWithFMID:ofTableType:inRow:): - (-deleteMessageWithMID:inFID:withFlags:): make use of the new - folder cache instead of using lookupFolderWithFID:, especially - since the last ones now instantiates, caches and keep a usage - count of the folders. - - * OpenChange/MAPIStoreMailFolder.m (-lastMessageModificationTime): - implemented method by making use of the new -[SOGoMailFolder - mostRecentMessageDate] message, which is currently a more or less - precise way to obtain the mailbox's last modification date. - (-lastModificationTime): removed method. - - * OpenChange/MAPIStoreObject.m (-setMAPIRetainCount:) - (-mapiRetainCount:): moved methods from MAPIStoreMessage. - - * OpenChange/MAPIStoreTable.m - (-evaluateContentRestriction:intoQualifier:): temporarily - commented out code initializing "operator" as this local var is - never used. - - * OpenChange/MAPIStoreFolder.m (-initWithSOstringByAddingPercentEscapesUsingEncodinGoObject:inContainer:): - make use of -[NSString stringByAddingPercentEscapesUsingEncoding:] - to properly escape folder names with non-ascii characters. - - * OpenChange/MAPIStoreFSFolder.m (-createFolder:withFID:): same as - above. - - * OpenChange/MAPIStoreContext.m - (+contextFromURI:withConnectionInfo:andFID:inMemCtx:): same as - above. - - * OpenChange/SOGoMAPIFSFolder.m (-initWithName:inContainer:): - added method to properly initialize the "directory" ivar when - initialized as a subfolder. - - * OpenChange/MAPIStoreMailContext.m: MAPIStoreDeletedItemsContext - is now temporarily a fs-based context. - - * SoObjects/Mailer/SOGoMailFolder.m - (_fetchMessageProperties:matchingQualifier:andSortOrderings::): - properly implement this method, as properties should be an array - instead of a dictionary. - (-mostRecentMessageDate): new method that returns the date of the - last available message. - -2011-07-07 Francis Lachapelle - - * UI/WebServerResources/UIxListEditor.js (endEditable): when a - string doesn't match an existing card, keep the entry but - highlight it in red. - (serializeReferences): when an entry is not associated to a card, - extract the email and fullname from the string to create a new card. - - * UI/Contacts/UIxListEditor.m (-setReferencesValue:): if a card - reference doesn't match a known vCard UID, create a new vCard - like Thunderbird does. - - * UI/MainUI/SOGoUserHomePage.m (-_usersForResults:inDomain:): - fixed bug when the domain was empty. - (-usersSearchAction): idem. - -2011-07-06 Ludovic Marcotte - - * SoObjects/Mailer/NSData+Mail.m (bodyDataFromEncoding:) - Consider "binary" just like 7 or 8bit. - -2011-07-06 Francis Lachapelle - - * UI/WebServerResources/SchedulerUI.js (onShowCompletedTasks) - (updateCalendarStatus): removed exception for Safari version prior - to 3. - -2011-07-05 Ludovic Marcotte - - * UI/MailPartViewers/UIxMailPartICalActions.m - (-_setupChosenEventAndEventObject:) we now correctly - update the right event in the database in order to - update major properties coming from external invitations - during updates. - * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:) - We check if uid is not nil prior comparing it to the - owner. This fixes bug #1323 - * Added patches included in bug #1348 - which now allows - group-based ACLs for IMAP. - * SoObjects/SOGo/SOGoSieveManager.m: Added patch from - bug #1344 - which fixes Sieve script generation errors - for reject filters. - * SOPE/GDLContentStore/GCSFolderManager.m ( - -_reallyCreateFolderWithName:andFolderType:...): Fix - path handling for recent GNUstep base versions. This - fixes bug #1327. - * SoObjects/SOGo/LDAPSource.m (-checkLogin:password:...) - We now make sure to use the original source's bindDN/password - when looking up the user's DN for indirect binds. This should - fix bug #1342. - -2011-07-02 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:) - We now update the request's content in case we got participants - with status change (for resources, for example) - -2011-06-30 Wolfgang Sourdeau - - * OpenChange/MAPIStoreSOGo.m (sogo_op_get_folders_list): method - removed from struct mapistore_backend. - - * OpenChange/MAPIStoreContext.m: the ldb connection handle to - openchange.ldb is now passed via struct mapistore_connection_info. - -2011-06-29 Ludovic Marcotte - - * Added get/set/unset capabilities to sogo-tool to set - user's defaults/settings. Refactored some code to be - more cleanly structured. - -2011-06-24 Francis Lachapelle - - * SoObjects/SOGo/SOGoSystemDefaults.m (-loginDomains): new method - that returns the content of the defaults key SOGoLoginDomains, which - is a list of domains that should be selectable from the Web login page. - (-visibleDomainsForDomain:): new method that returns a list of - domains visible from the specified domain and defined by the - defaults key SOGoDomainsVisibility, which is a list of lists of domains. - - * SoObjects/SOGo/SQLSource.m - (-_lookupContactEntry:considerEmail:): when an IMAP login field is - defined, only consider the value from the table if it's not null. - - * SoObjects/SOGo/SOGoSession.m - (+decodeValue:usingKey:login:domain:password:): now accepts the - form login@domain. The domain must be part of the SOGoLoginDomains. - - * SoObjects/SOGo/SOGoUserManager.m - (-getImapLoginForUID:inDomain:): the method now accepts the - user's domain. - (_sourceCheckLogin:andPassword:domain:perr:expire:grace:): idem. - (checkLogin:password:domain:perr:expire:grace:): idem. - (_fillContactInfosForUser:withUIDorEmail:inDomain:): idem. - (-contactInfosForUserWithUIDorEmail:inDomain:): idem. - (-contactInfosForUserWithUIDorEmail:): now accepts the form login@domain. - - * SoObjects/SOGo/SOGoWebAuthenticator.m (-checkCredentials:): - perform the authentication in a domain when specified in the - web session. - - * SoObjects/Contacts/SOGoContactFolders.m (-appendSystemSources): - when using domains, append addressbooks from visible domains. - - * SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): now - accepts the form login@domain. - (-loginInDomain): new method. When bound to a domain, it returns - the username part of the login. - - * UI/MainUI/SOGoUserHomePage.m (-_usersForResults:inDomain:): was - _usersResponseForResults:. Now returns only an array - containing the matching users. - (-usersSearchAction): added the results from the visible domains, - if the defaults key SOGoDomainsVisibility is defined. - - * UI/MainUI/SOGoRootPage.m (-connectAction): a domain from the - defaults key SOGoLoginDomains can now be received. - -2011-06-23 Wolfgang Sourdeau - - * OpenChange/MAPIStoreTypes.h: removed PRIx64 definitions, that - can be found in the libc inttypes.h. - -2011-06-20 Francis Lachapelle - - * UI/WebServerResources/UIxAppointmentEditor.js (_getDate): - retrieve the time using a regexp to insure a valid entry. - - * UI/WebServerResources/MailerUI.js (onMenuEmptyTrashCallback): - when emptying the trash folder, reset the unseen count and reset - the reference to the last selected message. - -2011-06-17 Francis Lachapelle - - * UI/WebServerResources/SOGoTimePicker.js (onChange): the - semi-colon is no longer necessary. Also fixed the update the - widget when manually entering a time. - - * UI/WebServerResources/MailerUI.js (configureDraggables): added - delay of 100ms before dragging starts. - -2011-06-17 Ludovic Marcotte - - * SOPE/NGCards/iCalEvent.m (setAllDayWithStartDate:duration:): - We now correctly remove the duration value in case we're - "converting" the event to an all-day one. This fixes - bug #1312. - -2011-06-16 Ludovic Marcotte - - * UI/Contacts/UIxContactFolderActions.m (importLdifData:): - Fixed folded lines import and base64 encoded values. Patch - from bug #1251 - -2011-06-16 Wolfgang Sourdeau - - * OpenChange/MAPIStoreSOGo.m (mapistore_init_backend): accept - double registration seamlessly. - - * SoObjects/Mailer/SOGoMailObject.m (-displayName): make use of - the decoded subject. - - * Tools/SOGoToolRenameUser.m: new sogo-tool module that updates - the references after a change of user id for a specific user. - - * SoObjects/SOGo/NSString+Utilities.m (-asSafeSQLString): new - method that properly escape strings passed as values in SQL - queries. - -2011-06-15 Wolfgang Sourdeau - - * OpenChange/MAPIStoreSpoolerContext.[hm]: new backend context. - -2011-06-14 Francis Lachapelle - - * UI/WebServerResources/UIxAttendeesEditor.js: adjustments for the - new SOGoTimePicker. - -2011-06-13 Francis Lachapelle - - * UI/WebServerResources/SOGoTimePicker.js: new interface to add a - time picker widget to an input field. - - * UI/Scheduler/UIxTimeDateControl.m: replaced hours and minutes - popup menu by one input field. - - * UI/WebServerResources/UIxAppointmentEditor.js: idem. - - * UI/WebServerResources/UIxTaskEditor.js: idem. - - * UI/Scheduler/UIxAppointmentEditor.m (-newStartDate): round - minutes to the nearest 15-minute. - - * UI/Scheduler/UIxTaskEditor.m (-newStartDate): idem. - -2011-06-08 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (initMailer): added the Thread - column if missing from the columnsOrder user's defaults. - -2011-06-06 Wolfgang Sourdeau - - * OpenChange/*: - - (context) cached last requested folder and table - - (context) open folders are now cached in an nsdictionary - - getPrLastModificationTime and getPrCreationTime are now - centralized in MAPIStoreObject and rely on mandator lastModificationTime - and creationTime methods on individual subclasses. - - openMessage now takes a "struct mapistore_message **" argument. - - MAPIStoreFSFolder can now create subfolders - - converted MAPIStoreFolder to the new property API, by - implementing one method per property. - - * OpenChange/MAPIStoreMailMessage.m: (-getPrExpiryTime:) removed - method as we don't want the message to appear as "expired". - (-getPrOriginalSensitivity:): uppercased the "o" in "getPrOriginal..." - - * OpenChange/MAPIStoreSOGo.m - (sogo_pocop_get_available_table_properties): now takes a - SPropTagArray ** argument. - (sogo_pocop_get_available_properties): same as above. - (sogo_op_get_available_table_properties): new, non-poc operation, - to retrieve the list of available properties from a table. - - * OpenChange/MAPIStoreTable.m (-notifyChangesForChild:): same as below. - - * OpenChange/MAPIStoreContext.m - (_saveOrSubmitChangesInMessageWithMID:andFlags:save:): - mapistore_push_notification now takes a struct mapistore_context * - as parameter. - (-deleteMessageWithMID:inFID:withFlags:): same as above. - -2011-06-06 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (configureLinksInMessage): - when a link has the attribute moz-do-not-send set to true, remove - it and force a new mailto href. - -2011-06-03 Wolfgang Sourdeau - - * OpenChange/SOGoMAPIFSFolder.m (-creationTime) - (-lastModificationTime): new self-explicit accessors. - (-initWithURL:andTableType:): accept the "MAPISTORE_FOLDER_TABLE", - for storing folder properties. - - * OpenChange/SOGoMAPIFSMessage.m (-completeFilename): new method - that returns the full filename for the property list file. - (-appendProperties:) simplified method. - (-save) removed obsolete hack. - (-creationTime, -lastModificationTime): new self-explicit - accessors. - - * OpenChange/MAPIStoreSOGo.m (sogo_op_opendir): op_opendir no - longer takes the parent fid as parameter. - - * OpenChange/MAPIStoreCalendarMessageTable.m - (-sortIdentifierForProperty:): c_isallday and c_creationdate as - mappings for PidLidAppointmentSubType and PR_CREATION_TIME. - - * OpenChange/MAPIStoreContext.m: MAPIStoreMapping instances are - now per-user instances rather than class singletons. - - * OpenChange/MAPIStoreMapping.m: now makes use of the records - already present in indexing.tdb for building the initial mapping - dictionary. - - * OpenChange/MAPIStoreSpoolerContext.[hm]: new context module, - which subclasses MAPIStoreSpoolerContext from - MAPIStoreFSBaseContext rather than MAPIStoreOutboxContext. - -2011-06-03 Francis Lachapelle - - * UI/WebServerResources/generic.js (initMenu): the wrong callbacks - were associated to menu entries when the menu was splitted in - multiple ULs. - (popupSubmenu): fixed the position so it stays beside the menu - entry when the main menu is splitted in multiple ULs. The submenu - will no longer be displayed outside the window viewport. - -2011-06-02 Francis Lachapelle - - * UI/WebServerResources/generic.js (hideMenu): now fires a custom - event (contextmenu:hide) to properly define a callback function - when a contextual menu is hidden. - - * UI/WebServerResources/MailerUI.js (onFolderMenuClick): - registered the function onFolderMenuHide on the new event - "contextmenu:hide". This function was never called since it was - relying on an event never triggered ("hideMenu"). - - * UI/WebServerResources/ContactsUI.js (onContactContextMenu): idem. - - * UI/WebServerResources/UIxPreferences.js (_setupEvents): reload - main page when enabling or disabling mail threads. - -2011-06-01 Francis Lachapelle - - * SoObjects/SOGo/SOGoUserDefaults.m (-setMailSortByThreads) - (-mailSortByThreads): new accessors for the "SOGoMailSortByThreads" - user defaults. - - * UI/PreferencesUI/UIxPreferences.m (-setSortByThreads) - (sortByThreads): idem. - - * SoObjects/Mailer/SOGoMailFolder.m - (-fetchUIDsMatchingQualifier:sortOrdering:threaded:): new method - to fetch a threaded-view of the folder. - - * SoObjects/SOGo/NSArray+Utilities.m (-flattenedArray): added - recurrence to flatten interleaved arrays. - - * SoObjects/Mailer/SOGoMailAccount.m (-updateFilters): write - multiple 'redirect' directives when forwarding to multiple email - addresses. - - * UI/MailerUI/UIxMailListActions.m (-threadedUIDs): new method - that returns a flatten representation of messages threads. - - * UI/MailerUI/UIxMailMainFrame.m (-columnsMetaData): added CSS - classnames for the thread column. - (-columnsDisplayOrder): add or remove the thread column depending - on the user's defaults. - - * UI/MailerUI/UIxMailListActions.m (-getUIDsAndHeadersInFolder) - (-getSortedUIDsAction): added support for threads. - - * UI/WebServerResources/ContactsUI.js (onContactContextMenu): - select row at pointer position when not already selected. - - * UI/WebServerResources/MailerUI.js: added support for the - threaded view. - (onMessageContextMenu): select row at pointer position when not - already selected. - - * UI/WebServerResources/SOGoMailDataSource.js: added support for - the threaded view. - -2011-05-31 Francis Lachapelle - - * UI/WebServerResources/SchedulerUI.js (initCalendarSelector): use - events delegation in the calendars list. - - * UI/WebServerResources/HTMLElement.js (selectElement): if element - has no ID, keep track of it anyway. This fixes an issue when - deleting attachments in the mail composition window. - - * UI/WebServerResources/UIxMailEditor.js (initMailEditor): use - events delegation in the attachments list. - - * UI/Scheduler/NSArray+Scheduler.m (-compareTasksAscending): sort - the tasks by their name if they are from the same calendar. - -2011-05-31 Wolfgang Sourdeau - - * OpenChange/MAPIStoreTypes.m (NSObjectFromMAPISPropValue) - (NSObjectFromSPropValue): handle PT_I8 properties. - - * OpenChange/NSObject+MAPIStore.m - (-getMAPIValue:forTag:inMemCtx:): added case to handle PT_I8 - properties via the new method below. - - * OpenChange/NSValue+MAPIStore.m (-asI8InMemCtx:): new method that - extracts an uint64_t from an NSNumber. - - * OpenChange/MAPIStoreFallbackContext.[hm]: new class module for - the "fallback" context, used by the OpenChange core to create - contexts that are not specifically handled. - - * OpenChange/MAPIStoreSOGo.m (sogo_create_context): a new struct - mapistore_connection_info * is now passed as parameter, which - contains useful data about the current connection. - - * OpenChange/MAPIStoreTable.m: (-deactivate): removed obsolete - method, which was part of a hack anyway. - - * OpenChange/MAPIStoreObject.m: (-addActiveTable:) - (-removeActiveTable:) removed obsolete methods. - - * OpenChange/MAPIStoreFolder.m: (-init) removed obsolete ivars - "activeMessageTables", "activeFAIMessageTables" and "activeFolderTables". - (-activeMessageTables, -activeFAIMessageTables) - (-activeFolderTables, _cleanupTableCaches): make use of the new - MAPIStoreActiveTables class. - - * OpenChange/MAPIStoreActiveTables.[hm]: new class module that - provides a facility for keeping track of all the instantiated - tables. - -2011-05-30 Wolfgang Sourdeau - - * OpenChange/code-MAPIStorePropertySelectors.m - (MAPIStorePropertyGettersForClass): insert the newly created table - in the hash in order to avoid a leak... and to enable it to be - found during the next search. - - * SoObjects/SOGo/SOGoContentObject.m (-version, -createDate) - (-lastModified): new accessors that return the value of the - corresponding ivar. - - * SoObjects/SOGo/SOGoGCSFolder.m (-davCollectionTag): base the - return value on the new -[GCSFolder lastModificationDate] method. - (_isValidSyncToken): same as above. - - * OpenChange/NSDate+MAPIStore.[hm]: renamed from - NSCalendarDate+MAPIStore.[hm]. Provides the same methods as - before but on NSDate rather than NSCalendarDate. - - * OpenChange/gen-property-selectors.py (ParseExchangeHDefinition): - Fixed exclusion of records ending with "Error" and "Unicode". - Also, we now exclude PidTag properties with a value > 0x80000000 - since they may overlap with named properties. - (__main__): replace multi-string with multi-unicode identifiers - too. - (__main__): we output getter indexes as 16 bit hex values, for - consistency. - -2011-05-30 Francis Lachapelle - - * UI/WebServerResources/ContactsUI.js (contactsListCallback): - restored activation of drag'n'drop. - (configureAddressBooks, onFolderSelectionChange) - (appendAddressBook): delegated rows events to the table. - (setEventsOnAddressBook): this function removed following the new event - delegation model. - -2011-05-27 Francis Lachapelle - - * UI/PreferencesUI/UIxPreferences.m (-forwardAddress) - (-setForwardAddress): allow to define multiple forwarding addresses. - - * UI/WebServerResources/UIxPreferences.js (savePreferences): test - each specified forwarding address. - -2011-05-17 Ludovic Marcotte - - * We now remove the /inverse.ca/20101018_1/ identifier - from all NGCards' timezone files. - -2011-05-16 Ludovic Marcotte - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m: Added a - workaround for a libxml's issue where the charset - specified in meta tags have precedence over the one - we "force" when creating the parser. This "bug" has - just been fixed in libxml but it'll take years before - all distributions get that fix. For now, we strip - that tag, unconditionnaly. - -2011-05-10 Ludovic Marcotte - - * NSDictionary+Utilities.m (userRecordAsLDIFEntry): - Fix to avoid a crash when backing up resources' LDIF entries - -2011-05-06 Francis Lachapelle - - * UI/WebServerResources/UIxPreferences.js - (displayAccountSignature): fixed an issue with an HTML signature - that start with a paragraph tag. - -2011-05-05 Ludovic Marcotte - - * UI/MailerUI/UIxMailAccountActions.m - fixed an issue - with namespace handling in Dovecot. We do not try - to swap the mailbox name, which can correspond to an - username if we are dealing with the top-level mailbox. - -2011-05-03 Francis Lachapelle - - * UI/WebServerResources/UIxMailEditor.js (createAttachment): show - the attachment name as the list entry's title. - - * UI/WebServerResources/generic.js (onRowClick): in some cases - under ID, the event is trigger on the dragging identifier - and must be ignored. - - * UI/WebServerResources/MailerUI.js (deleteSelectedMessages): we no - longer wait for the callback before invalidating the caches. - (mailListToggleMessagesRead): idem. - -2011-04-28 Ludovic Marcotte - - * SoObjects/SOGo/SQLSource.{h,m}: Added resources support, - just like for LDAP-based sources. - * SoObjects/SOGo/SOGoParentFolder.m (_createPersonalFolder): - We now also autocreate database tables if the "user" - is a resource. - -2011-04-25 Francis Lachapelle - - * UI/WebServerResources/SchedulerUI.js (onFolderUnsubscribeCB): - select the personal calendar to avoid trying creating an event or - a task in the calendar to which the user has just unsubscribed. - -2011-04-25 Ludovic Marcotte - - * Added the concept of "resources" in SOGo in order - to avoid double-bookings (if not more) and also, handle - auto-accepts. This works for the web interface and - over DAV - generating 403 errors in case of a conflict. - -2011-04-21 Ludovic Marcotte - - * Added the possibility of translating IMAP namespaces - and we now extract the full name the mailbox owner under - the "Other Users" namespace. - -2011-04-21 Francis Lachapelle - - * UI/WebServerResources/SchedulerUI.js (deleteEvent): we now show - in the confirmation dialog box which events will be deleted. - - * UI/WebServerResources/generic.js (createDialog): the legend - argument can now be a string or an element. - (isWebKit): was isSafari; now consider all WebKit-based browsers together. - - * UI/WebServerResources/UIxMailToSelection.js: various - improvements to behave like in Thunderbird. - - * UI/WebServerResources/SOGoAutoCompletion.js: idem. - - * UI/WebServerResources/UIxMailEditor.js (initAddresses): was - initTabIndex. We were not handling the tab indexes properly which - was causing incorrect behavior in IE. - -2011-04-19 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailAttachment.m (-): binary properties are - represented by a struct Binary_r. - - * OpenChange/NSObject+MAPIStore.m - (-getMAPIValue:forTag:inMemCtx:): binary properties are - represented by a struct Binary_r. - - * OpenChange/MAPIStoreTypes.m (NSObjectFromMAPISPropValue) - (NSObjectFromSPropValue): we now support PT_SVREID and handle it - exactly as PT_BINARY. - - * OpenChange/MAPIStoreMessage.m (-attachmentTable): as all the - subclasses were using the same MAPIStoreAttachmentTable - implementation, this method now performs the same operation and - thereby no longer requires subclasssing. - - * OpenChange/MAPIStoreObject.m (-getProperty:withTag:): compute - the method selector and pass it as argument to the IMP of the - property getter, as would be with any regular method invocation. - - * OpenChange/MAPIStoreMailMessage.m (-getPrBody:): no longer check - the size of the returned content, as streams are now handled - internally by OpenChange. - (-getPrHtml): same as above. - - * OpenChange/MAPIStoreTypes.m (NSObjectFromStreamData): removed - helper function as it's no longer used. - - * OpenChange/MAPIStoreSOGo.m (sogo_op_set_property_from_fd) - (sogo_op_get_property_into_fd): those backend methods are no - longer used, as OpenChange handles the property streams internally - now. - - * OpenChange/gen-property-selectors.py: added code to generate - MAPIStoreSupportedProperties as the array of properties that are - handled by OpenChange and MAPIStoreSupportedPropertiesCount as the - count of those properties. - - * OpenChange/MAPIStoreObject.m (+getAvailableProperties): ObjC - corollary of the "sogo_pocop_get_available_properties" backend - method. - (-getAvailableProperties): proxy to the class method of the same - name. - - * OpenChange/MAPIStoreTable.m (+childObjectClass): new mandatory - method that returns the Class of the objects represented in the - rows of the table. - (-getAvailableProperties:): ObjC corollary of the - "sogo_pocop_get_available_table_properties" backend method. - - * OpenChange/MAPIStoreSOGo.m - (sogo_pocop_get_available_table_properties): new backend getter - that returns the list of properties that can be queried on the - table rows. - (sogo_pocop_get_available_properties): new backend getter - that returns the list of properties that can be queried on the - discrete object passed as parameter. - - * OpenChange/code-MAPIStorePropertySelectors.m - (MAPIStorePropertyGettersForClass): use the - "MAPIStoreProeprtyGetter" type rather than IMP as result type. - - * OpenChange/MAPIStoreFolderTable.m (-restrictedChildKeys): no - longer a mandatory method, returns [self childKeys] when not - overriden and issue an error message. - - * OpenChange/MAPIStoreFolder.m (-createMessage): no longer a - mandatory method. Returns nil when not overriden. - -2011-04-19 Francis Lachapelle - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-_flattenCycleRecord:forRange:intoArray:): fixed the - verification of the event's timezone. - -2011-04-15 Francis Lachapelle - - * SoObjects/Appointments/iCalEvent+SOGo.m (-firstOccurenceRange): - we now compute the end date by looking at the occurrence - interval. This way, we support events with an end date or a duration. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-_flattenCycleRecord:forRange:intoArray:): also compute the end - date by looking at the occurrence interval. - (-importCalendar:): added a duration to events with no end date nor duration. - - * SoObjects/Appointments/SOGoAppointmentObject.m - (-_adjustEventsInRequest:): new method to verify the vCalendar for - any inconsistency or missing attributes. Currently, it only adds a - duration if no end date nor duration is found. - - * UI/WebServerResources/ckeditor/config.js: Changed the default - enter mode to use BR instead of P. This matches the behavior of Thunderbird. - -2011-04-14 Francis Lachapelle - - * UI/WebServerResources/UIxContactEditor.js - (validateContactEditor): now uses the regexp defined in generic.js - (emailRE) to validate the email addresses. This fixes an issue - with valid addresses starting with an underscore (bug #1246). - - * UI/MailerUI/UIxMailAccountActions.m (-composeAction): properly decode - submitted recipients and subjects (URL-encoded). - - * SoObjects/SOGo/SOGoUserManager.m (-getImapLoginForUID:): we now - consider the source parameter IMAPLoginFieldName. We continue to support - SOGoForceIMAPLoginWithEmail at the domain/system level. - - * SoObjects/SOGo/LDAPSource.m: we can now define a new parameter - named IMAPLoginFieldName to specify which field to use for IMAP - authentication. By default, we use the value of the UIDFieldName. - - * SoObjects/SOGo/SQLSource.m - (-checkLogin:password:perr:expire:grace:): if the defaults parameter - authenticationFilter is defined, we add it to the SQL where clause. - (_lookupContactEntry:considerEmail:): we add a new key - (canAuthenticate) to the returned dictionary that specifies if the - user can authenticate or not. We also add c_imaplogin when the - user must authenticate with a different username to the IMAP server. - - * SoObjects/SOGo/SOGoUser.m (-canAuthenticate): new method that - returns true if the user can authenticate, based on the - authentication filter associated to the source. - - * SoObjects/SOGo/SOGoGCSFolder.m (-ocsFolder): don't automatically - create the folder if the user can't authenticate. - - * UI/Contacts/UIxContactsListActions.m: was - UIxContactsListView.m. The new method contactsListAction now - returns a JSON representation of the addressbook. - - * UI/Contacts/UIxContactFoldersView.m (-personalContactInfos): new - method used to populate the wox template with the personal - addressbook. The addressbook module is now pre-loaded with it, - eliminating an Ajax query. - - * UI/WebServerResources/ContactsUI.js (initContacts): delegate - all events to the table instead of each row. - (contactsListCallback): we now receive a JSON representation of - the contacts and reuse the existing table rows instead of - overwriting the table. - -2011-04-13 Wolfgang Sourdeau - - * OpenChange/MAPIStoreObject.m: make use of the IMP cache methods - available in MAPIStorePropertySelectors to query object - properties. - * OpenChange/*{Message,Folder}.m: replaced the implementations of - -getProperty:withTag: with equivalent property getter methods. - - * OpenChange/MAPIStoreContext.m (-url): new method that returns - the context url. - - * OpenChange/gen-property-selectors.py: new generator script that - outputs MAPIStorePropertySelectors.[hm], which is a helper - module that provides methods for handling of cached - property method IMPs. - -2011-04-12 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoDraftObject.m - (-bodyPartForAttachmentWithName:): don't choose "quoted-printable" - if the mimetype is anything else than "text/plain" or "text/html", - to avoid issues with filenames attached with a wrong mime type. - -2011-04-12 Francis Lachapelle - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-importCalendar:): we now associate the proper vtimezone to each - event found in the calendar. - -2011-04-11 Francis Lachapelle - - * UI/WebServerResources/UIxMailToSelection.js - (addressFieldLostFocus): split content separated by commas - or semi-colons. - -2011-04-08 Wolfgang Sourdeau - - * Tests/Unit/TestNSString+URLEscaping.m: new test module. - (-test_stringByEscapingURL): new test method for -[NSString - stringByEscapingURL]. - - * Tests/Unit/sogo-tests.m (main): added volatile user defaults for - utf8 url encoding. - -2011-04-07 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (onMenuRenameFolderConfirm): - encode the folder name in the URL. - -2011-04-06 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailMessageTable.m - (-evaluateExistRestriction:intoQualifier:): declare that - PR_CLIENT_SUBMIT_TIME always exists on messages, which prevents - Outlook from looping on a search request that always returns the - same unexpected result... - -2011-04-05 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCalendarMessage.m (-getProperty:withTag): - restored/implemented PR_START_DATE, PidLidAppointmentStartWhole, - PidLidCommonStart and their "end" equivalent. - - * OpenChange/MAPIStoreMailFolder.m (-createFolder:): implemented - method by adapting old code that was still commented out. - (-folderKeys): implemented method. - (-lookupChild:): overriden method to return a folder object when - the child key is contained in the folder keys. - - * OpenChange/MAPIStoreContext.m (_tableForFID:andTableType:): make - use of lookupFolder: to retrieve the right folder based on the FID. - (-setPropertiesWithFMID:ofTableType:inRow:): silently discard by - log the settings of properties on folders. - -2011-04-04 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalListingActions.m - (-_fillBlocks:withEvent:withNumber:): fixed type confusion between - char * and NSString * that could cause a crash under certain - circumstances. - -2011-04-01 Francis Lachapelle - - * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:): - when adding a new occurrence, instantiate an occurrence from the - previous calendar in order to perform a proper changes comparison. - -2011-04-01 Wolfgang Sourdeau - - * Tests/Unit/TestSBJsonParser.m (-test_parseJSONString): input and - expected result are embedded in an array since SBJsonParser needs - a "container" class. - (-test_parseJSONNumber): same as above. - - * Tests/Integration/all.py: (from Jean Raby) make use of the - "SOGoLanguage" defaults key rather than the old "Language" one. - - * Tests/Integration/sogoLogin.py: (from Jean Raby) new - authentication module, required by the new session-based code. - - * Tests/Integration/preferences.py: (from Jean Raby) derive - authentication cookie from the new sogoLogin module. - - * UI/WebServerResources/SchedulerUI.js (initCalendars): initialize - "showCompletedTaskls" to 0 when the ShowCompletedTasks settings - variable is not available. - - * SoObjects/Appointments/SOGoCalendarComponent.m - (-contentAsString): strip alarms from component if the alarms are - disabled on the containing calendar. - - * SoObjects/SOGo/SOGoObject.m (-davComplianceClassesInContext:): - added "calendar-auto-schedule", "calendar-proxy" and "calenderserver-principal-property - - * Main/SOGo+DAV.m (-davComplianceClassesInContext:): overwritten - with same code as in SOGoObject. - (-davPrincipalCollectionSet): added dav property. - -2011-03-31 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCalendarMessage.m - (_setupRecurrenceInCalendar:withMasterEvent:fromData:): moved the - code pertaining to the handling of struct RecurrencePattern into - the new module below, in the -[iCalCalendar setupRecurrenceWithMasterEntity: - fromRecurrencePattern:) category method. - (_fillAppointmentRecurrencePattern): moved the - code pertaining to the handling of struct RecurrencePattern into - the new module below, in the -[iCalRecurrenceRule - fillRecurrencePattern:withStartDate:andEndDate:] category method. - (-createAttachment): instantiate a MAPIStoreCalendarAttachment - object. - - * OpenChange/MAPIStoreSOGo.m: added new - "sogo_pocop_open_embedded_message" backend method. - - * OpenChange/MAPIStoreCalendarAttachment.[hm]: new class module - for handling event attachments or "exceptions". - - * OpenChange/MAPIStoreMessage.m (-getProperty:withTag:): - handles PR_HASATTACH, previously found in MAPIStoreMailMessage. - - * OpenChange/MAPIStoreAttachment.m (-nameInContainer): overriden - method to return "aid" in the form of a NSString. - (-mimeAttachTag): new helper method derived from old code in - getProperty:withTag: for subclasses. - (-getProperty:withTag:): handles PR_MID, PR_ATTACH_NUM and - PR_RENDERING_POSITION, previously found in - MAPIStoreMailAttachment. - (-openEmbeddedMessage:withMID:withMAPIStoreMsg:andFlags:): new - backend method. - (-openEmbeddedMessage, -createEmbeddedMessage): new overridable - methods. - - * OpenChange/MAPIStoreEmbeddedMessage.[hm]: new class module for - attachment embedded messages. - - * OpenChange/MAPIStoreObject.m (-url): make use of - -[MAPIStoreObject nameInContainer] rather than the equivalent on - SOGoObject to make that code reusable for objects that are not - based on SOGoObject instances. - - * OpenChange/MAPIStoreRecurrenceUtils.m: new module implementing - methods useful for handling recurrences in events and tasks. - -2011-03-31 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (messageListCallback): put an - non-breaking space in empty cells, not only for IE. - - * UI/Contacts/UIxContactView.m (_cardStringWithLabel:value:): - remove useless carriage returns to avoid JavaScript errors in IE7. - -2011-03-30 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailFolderActions.m (-copyMessagesAction) - (-expungeAction, -emptyTrashAction): use "-mailAccountFolder" in - order to retrieve the account folder as the clientObject may - actually be a nested folder... - - * UI/WebServerResources/UIxTaskEditor.js (initializeStatusLine): - bind onStatusListChange as callback to "change" rather than - "mouseup" as it otherwise fails to be invoked on Chrome. - - * SoObjects/SOGo/SOGoBuild.m: export new SOGoVersion NSString. - - * Main/SOGo.m (+initialize): moved most initialization code from - -init and -run here since this method is invoked before forking - and data memory is in "copy-on-write" mode, slightly reducing - memory usage of combined SOGo processes. - (+applicationWillStart): new method replacing +initialize. - -2011-03-30 Francis Lachapelle - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-fetchFreeBusyInfosFrom:to:): we must fetch the c_content in - order to flatten cyclic events. - - * SoObjects/SOGo/SOGoSystemDefaults.m (-pageTitle): new method to - retrieve the Web page title from the new system defaults "SOGoPageTitle". - - * UI/Common/UIxPageFrame.m (-title): consider the new system - default attribute "SOGoPageTitle". - -2011-03-29 Francis Lachapelle - - * SoObjects/Appointments/iCalEvent+SOGo.m - (-updateRecurrenceRulesUntilDate:): shifts the "until dates" of - the recurrence rules of the event with respect to the previous end - date of the event. - - * SoObjects/Appointments/SOGoCalendarComponent.m - (-updateComponent: ): splitted method "saveComponent:" to avoid - saving the component multiple times during the same session. - - * SoObjects/Appointments/SOGoAppointmentObject.m (-saveComponent): - make use of the new "updateComponent" method mentioned above. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-_flattenCycleRecord:forRange:intoArray:): when the event has a - timezone, the "until dates" of recurrence rules must be adjusted. - - * UI/Scheduler/UIxAppointmentActions.m (-adjustAction): when - modifying an event, also modify the "until dates" of recurrence rules. - - * UI/Scheduler/UIxAppointmentEditor.m (-_adjustRecurrentRules): - the "until date" of finite recurrence rules must be based on the - event end date, not the start date. - -2011-03-28 Wolfgang Sourdeau - - * Tools/SOGoToolRemoveDoubles.m - (-detectDoublesFromRecords:withQuickField:): added a quick field - parameter to enable the use of other fields than just c_mail. - -2011-03-24 Wolfgang Sourdeau - - * UI/Contacts/UIxContactsListView.m (-currentContactClasses): new - method that returns the classes associated to the current contact. - For now, only the c_component. - -2011-03-24 Francis Lachapelle - - * UI/MailerUI/UIxMailListActions.m (-imap4SortOrdering): verify - that the sort is defined when rollbacking to the user's settings. - - * SoObjects/SOGo/SQLSource.m (_encryptPassword:): new method to - encrypt a user's password according to the configured algorithm. - (-changePasswordForLogin:oldPassword:newPassword:perr:): - now implemented (thanks to Martin Rabl). - -2011-03-23 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:): - Fix for bug #1092. We were incorrectly looking up - the organizer of an exception to a recurrence and - we were also incorrectly always updating the master - event with the part-state. - -2011-03-23 Francis Lachapelle - - * UI/PreferencesUI/UIxPreferences.m (-timeZonesList): we make use - of the new method [iCalTimeZone knownTimeZoneNames] instead of - [NSTimeZone knownTimeZoneNames] to avoid listing tons of useless timezones. - - * UI/PreferencesUI/UIxPreferences.m (-userTimeZone): since we now - offer a limited number of timezones, the user timezone could be - unrecognized. In this case, try to find a timezone with the same - GMT offset. - -2011-03-22 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCalendarMessage.m (-init): new method to - initialize the attachment ivars. - (-ownerTimeZone): new method with common code. - (-getProperty:withTag): (PR_ICON_INDEX) return a more precise icon depending on - the recurring nature of the event as well on its number of - attendees. (PidLidAppointmentStartWhole, - PidLidAppointmentEndWhole) removed properties. (PidLidRecurring, - PidLidIsRecurring), returns YES when recurring. - (PidLidAppointmentRecur) property handles property, by using - -_computeAppointmentRecur and other submethods. - - * OpenChange/NSCalendarDate+MAPIStore.m (-asMinutesSince1601): - corollary to +dateFromMinutesSince1601. - -2011-03-21 Francis Lachapelle - - * Tools/SOGoToolBackup.m (-fetchUserIDs:): when choosing to backup - all users, fetch the users list from the folder info table instead - of the configured sources. This fixes an issue when trying to - retrieve the users from LDAP sources that limit the number - of results. - - * SoObjects/SOGo/LDAPSource.m (:_qualifierForFilter): avoid - duplicated filters on the CN attribute. - - * UI/WebServerResources/UIxPreferences.js - (displayAccountSignature): strips the tags and unescape the HTML - to improve readability. - - * UI/WebServerResources/MailerUI.js (updateWindowTitle): new - function used to update the window title with respect to the - currently selected mailbox. - - * UI/WebServerResources/MailerUI.js (openMailbox): exchanged sort - arrows to match Thunderbird's GUI. - - * UI/MailerUI/UIxMailListActions.m (-imap4SortOrdering): when the - sort is not specified in the request, retrieve the user's previous sort. - -2011-03-20 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCalendarMessage.m - (-_setupRecurrenceInCalendar:withMasterEvent:fromData:): new - method for setting recurrence info from "PidLidAppointmentRecur" - (no exdate, exrule or modified occurrence for now). - - * OpenChange/NSCalendarDate+MAPIStore.m - (+dateFromMinutesSince1601): new constructor, helpful for MAPI - recurrence structures. - - * OpenChange/MAPIStoreCalendarMessageTable.m, - OpenChange/MAPIStoreTasksMessageTable.m, - OpenChange/MAPIStoreContactsMessageTable.m, - OpenChange/MAPIStoreMailMessageTable.m, - OpenChange/MAPIStoreTasksMessage.m, OpenChange/MAPIStoreMessage.m, - OpenChange/MAPIStoreMailMessage.m, - OpenChange/MAPIStoreContactsMessage.m: cast property tags to - uint32_t in switch statements to avoid fatal warnings about - uncovered cases. - - * UI/Scheduler/UIxComponentEditor.m - (-takeValuesFromRequest:inContext:): added some sanity checks to - avoid crashes when alarm data is not properly entered. - -2011-03-18 Francis Lachapelle - - * UI/WebServerResources/SchedulerUI.js (initCalendars): we must - set "showCompletedTasks" earlier in order to properly fetch the - tasks upon the first refresh. - - * UI/Scheduler/UIxAppointmentEditor.m - (-takeValuesFromRequest:inContext:): we no longer associate a - vTimeZone to start/end dates of an all-day vEvent. - - * UI/Scheduler/UIxCalListingActions.m - (-_fetchFields:forComponentOfType:): we don't add components - outside the covered period. This could happen with all-day events, - since their dates are always GMT. - - * SoObjects/Appointments/iCalEvent+SOGo.m (-quickRecord): an all-day - event usually doesn't have a timezone. However, if it does, we must - convert its dates to GMT. All-day events are "floating", in the - sense that they are timezone-independant. - -2011-03-17 Francis Lachapelle - - * UI/MailerUI/UIxMailAccountActions.m (-listMailboxesAction): - moved code that fetches the inbox quota to [SOGoMailAccount getInboxQuota]. - - * SoObjects/Mailer/SOGoMailAccount.m (-getInboxQuota): new method - created partially from the method [UIxMailAccountActions listMailboxesAction]. - - * UI/MailerUI/UIxMailFolderActions.m (-deleteAction) - (-copyMessagesAction, -expungeAction, -emptyTrashAction): we now - return a JSON representation of the inbox quota when these actions - succeeds. - (-quotasAction): removed this method which was no longer used. - - * UI/WebServerResources/MailerUI.js (updateQuotas): new function - extracted from updateMailboxTreeInPage. It is called when a folder - operation returns the inbox quota. - -2011-03-15 Francis Lachapelle - - * UI/MailerUI/UIxMailListActions.m (-getMailAction): removed this - method that is no longer used since live-loading. - (-getSortedUIDsAction): restored the call to - expungeLastMarkedFolder so that the last visited folder is - expunged when switching folder. - -2011-03-11 Wolfgang Sourdeau - - * SoObjects/Contacts/SOGoContactFolders.m - (-setDavContactsCategories:): we need to handle the case where the - "category" element has more than one subnode, in particular when - xml entities are used. - -2011-03-11 Francis Lachapelle - - * UI/WebServerResources/HTMLElement.js (onContextMenu): hide the - menu on a mousedown, not a click. This fixes a problem on Webkit browsers. - - * UI/WebServerResources/generic.js: cleanup some event observers - related to contextual menus. - - * UI/WebServerResources/UIxMailEditor.js (initMailEditor): added - the SpellChecker button in the HTML editor toolbar, and disabled - the "check while typing" option (scayt). - - * UI/WebServerResources/ContactsUI.js (initContacts): don't define - the categories contextual menu if the contacts list doesn't - exist. This fixes a problem when adding categories to a contact - using IE7. - -2011-03-10 Francis Lachapelle - - * SoObjects/Appointments/SOGoAppointmentFolder.m (-fixupRecord): - the time of all-day events must be adjusted for the user's timezone. - - * UI/WebServerResources/UIxContactEditor.js (initEditorForm): - the input category field doesn't appear if the card is - read-only. Adjusted the code accordingly. - - * UI/WebServerResources/ContactsUI.js - (onCategoriesMenuItemCallback): new callback that refreshes the - displayed card when a category is added or removed. - -2011-03-10 Wolfgang Sourdeau - - * UI/WebServerResources/ContactsUI.js (onCategoriesMenuItemClick): - makes use of "encodeURIComponent" rather than "escape" to encode - URL parameters, because for some reason the former takes the - encoding into account and not the latter. - -2011-03-08 Wolfgang Sourdeau - - * OpenChange/MAPIStoreCalendarMessage.m (-save): accept entries - with an "x500dn" record since they are now properly converted. - - * OpenChange/MAPIStoreContext.m (_convertRecipientFromRow:): - properly find out the coordinates of internal users. - -2011-03-07 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFSFolder.m (-createMessage): fixed typo that - was making contents messages saved in the FAI folder. - - * OpenChange/MAPIStoreContext.m (_prepareContextClass): now takes - the context fid as argument. - - * OpenChange/MAPIStore*Context.m (+registerFixedMappings): removed - method, made obsolete by the fact that we now receive the context - fid during initialization. - - * OpenChange/MAPIStoreFAIMessageTable.[hm]: restored class module - in order to reenable proper class testing during notifications. - - * OpenChange/MAPIStoreTypes.h (MAPIPropertyKey): we now make use - of the full property tag again since the modified properties need - to be reported during notifications. - - * OpenChange/MAPIStoreSOGo.m (sogo_pocop_open_table) - (sogo_pocop_set_table_restrictions) - (sogo_pocop_set_table_sort_order): new poc methods. - (sogo_pocop_release): invoke -deactivate on the released object if - it responds to it. - - * OpenChange/MAPIStoreContext.m (-setRestrictions:withFID:andTableType:getTableStatus:): - (-setSortOrder:withFID:andTableType:getTableStatus:): - (-getTableProperty:withTag:atPosition:withTableType:andQueryType:inFID:): - adversise methods as obsolete in the log for debugging purposes. - (_saveOrSubmitChangesInMessageWithMID:andFlags:save:): added code - to push the relevant folder, message and table notifications. - (-deleteMessageWithMID:inFID:withFlags:): same as above. - (-getTable:andRowCount:withFID:tableType:andHandleId:): new pocop - helper method to instantiate tables. - - * OpenChange/MAPIStoreTable.m (-notifyChangesForChild:): new - method that pushes an appropriate table notification with regards - to the child passed as parameters. - (-deactivate): new helper method that enables the table to - unregister itself from its container prior to be released. - (-setHandleId): new helper accessor enabling reporting the table - handle during notifications. - - * OpenChange/MAPIStoreObject.m (-addActiveTable:) - (-removeActiveTable:): new methods to add or remove tables from - the active table arrays, used later for notifications. - (-resetNewProperties): new method to empty the "newProperties" - dictionary once a "save changes" or a "submit" happened. - - * OpenChange/MAPIStore*Folder.m (-messageTable, -messageFAITable, - -folderTable) - * OpenChange/MAPIStore*Message.m (-attachmentTable): no longer - cache the resulting table. - - * SoObjects/SOGo/SOGoCache.m - (-unregisterObjectWithName:inContainer:): same as below. - - * SoObjects/SOGo/SOGoGCSFolder.m (-removeChildRecordWithName:): - new method to ensure a child records is removed from the cache - when modified or deleted. - -2011-03-04 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentFolder.h/m: - -importCalendar: we now also import the timezone definition - when present - * SoObjects/SOGo/SQLSource.m - We now consider the domain belonging to the SQLSource instance - -2011-02-25 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailContext.[hm]: renamed from - MAPIStoreMailBaseContext and merged in all subclass modules due to - their small size. - -2011-02-24 Wolfgang Sourdeau - - * OpenChange/MAPIStoreTypes.m (NSObjectFromStreamData): convert - read PT_UNICODE stream data as UTF-16. - - * OpenChange/MAPIStoreContext.m - (-setProperty:withFMID:ofTableType:fromFile:): considering the - cached message as a MAPIStoreMessage instance instead of NSDictionary. - - * OpenChange/MAPIStoreMailMessage.m - (_fetchAttachmentPartsInBodyInfo:withPrefix:): detect attachment - parts based on the existence of the "filename" info parameter. - - * OpenChange/MAPIStoreTable.m: refactored class to be used as an - accessor on MAPIStoreFolder or other MAPIStoreObject derivatives - based on a defined set of methods. Now strictly handle the sorting - and filtering of folder entries, the getting of properties having - been moved to the MAPIStoreMessage classes. - - * OpenChange/SOGoMAPIFSMessage.m (-appendProperties:): new name - for "setMAPIProperties:" - (-save): new name for "MAPISave", since those were methods - ususally found in the obsolete category modules. - - * OpenChange/MAPIStoreSOGo.m: - (sogo_pocop_get_attachment_table, sogo_pocop_get_attachment) - (sogo_pocop_create_attachment, sogo_pocop_set_table_columns) - (sogo_pocop_get_table_row, sogo_pocop_get_properties) - (sogo_pocop_set_properties, sogo_pocop_release): new backend - methods (with counterparts in SOGoContext) that are used as part - of the new proof-of-concept API, where objects are accessed - directly from memory instead of needed to be resolved via their - fid, mid or aid identifiers. - - * OpenChange/MAPIStoreAttachment.m: new super class, derived from - MAPIStoreObject and used for MAPI attachment objects. - - * OpenChange/MAPIStoreFolder.m: new super class used as wrapper - around SOGoFolder objects, by decoupling the code previously found - in the SOGo*Context classes and which implement basic and uniform - content key facilities. - - * OpenChange/MAPIStoreMessage.m: new super class used for - wrapper objects replacing the category modules on the SOGoObject. - - * OpenChange/MAPIStoreObject.m: new super class used as base the - MAPI objects counterparts (MAPIStoreMessage, MAPIStoreFolder and - MAPIStoreAttachment). - - * SoObjects/Contacts/SOGoContactGCSEntry.m - (-saveContentString:baseVersion:): release the "card" ivar to - avoid caching issues. - - * SoObjects/Appointments/SOGoTaskObject.m - (-saveContentString:baseVersion:): same as below. - - * SoObjects/Appointments/SOGoAppointmentObject.m - (-saveComponent:): release fullCalendar, safeCalendar and - originalCalendar after modification to avoid caching issues. - - * SoObjects/SOGo/SOGoContentObject.m (-davContentLength): return 0 - when "content" is nil to avoid a value of "(nil)". - (-setMAPIContent:, -MAPIContent): removed obsolete methods (fixed - hack). - - * SoObjects/Mailer/SOGoMailObject.m (_hasFlag:): put the flags in - a cache to avoid multiple queries. - -2011-02-24 Francis Lachapelle - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-_flattenCycleRecord:forRange:intoArray:): fixed the condition - that checks if the event lasts all-day. - -2011-02-23 Ludovic Marcotte - - * We now strip the bcc header in SOGoDraftObject instead - of doing it in SOPE. Prior to stripping the bcc header, - we keep a copy of the message for proper saving in the - Sent IMAP folder. - - * Improved the Installation and Configuration Guide regarding - the SQL-based authentication sources (required database columns) - and also the "id" uniqueness of authentication sources in general - - * UI/WebServerResources/UIxPreferences.js: - Added many checks in case the Mail module is disabled for - proper behavior of the Preferences panel. - -2011-02-23 Francis Lachapelle - - * SoObjects/Mailer/SOGoMailObject.m (-lookupInfoForBodyPart:): we - now compare the path with a string only if it is a string (and not - an array). - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-fixupCycleRecord:cycleRange:firstInstanceCalendarDateRange:withEventTimeZone:): - avoid fixing the timezone if no event timezone is defined. - - * SoObjects/Appointments/SOGoCalendarComponent.m - (-newOccurenceWithID): set the occurrence timezone to the user's - timezone. This fixes an issue when accessing occurrences of a - recurrent event. - -2011-02-22 Francis Lachapelle - - * UI/Scheduler/UIxCalListingActions.m ( - -_fillBlocks:withEvent:withNumber:): don't compute the block if - the end date is before the start date. This fixes a rare segfault that - occurs with recurrent event with multiple exceptions. - -2011-02-17 Francis Lachapelle - - * SoObjects/Contacts/SOGoFolder+CardDAV.m (-parseContactFilter:): - we now consider all DOM elements from the text-match element. This - fixes problems when the query contains one or more HTML entities. - -2011-02-17 Ludovic Marcotte - - * Modified all tools to NOT check for SOGoUserSources - as it'll break if we are in multi-domain with no - master sources defined. - * Modified SOGoAuthenticator: -imapPasswordInContext: ... - to pass the server URL and not the host particle in order - to determine if we are using SSL or not. - -2011-02-16 Francis Lachapelle - - * UI/WebServerResources/UIxPreferences.js (-appendSieveFilterRow): - fixed a bug with IE8 that would not set the "checked" attribute - properly on a checkbox. - -2011-02-15 Ludovic Marcotte - - * SoObjects/Appointments/SOGoCalendarComponent.m - We add extra verifications before trying to instantiate - SOGoEMailAlarmsManager in order to make sure - SOGoEnableEMailAlarms was set to YES prior doing this. - This fixes bug #1079. - -2011-02-14 Francis Lachapelle - - * UI/Scheduler/UIxDatePicker.m - (-takeValuesFromRequest:inContext:): we now consider the timezone - offset with respect to the current date, ie we properly consider daylight - saving time offset. - -2011-02-14 Wolfgang Sourdeau - - * OpenChange/MAPIStoreFSMessageTable.m - (-getChildProperty:forKey:withTag:): move type conversion code - into NSObject+MAPIStore. - - * OpenChange/NSObject+MAPIStore.[hm]: new category module that - provides type methods common to all NSObject descendants. - - * OpenChange/MAPIStoreContext.m - (-createMessagePropertiesWithMID:inFID:isAssociated:): create a - fake PR_SEARCH_KEY on new message to make Outlook happy when - composing invitations. - (-getProperties:ofTableType:inRow:withMID:): perform property - searches on "live messages" (unsaved ones) as well. - - * OpenChange/MAPIStoreMailMessageTable.m (-restrictedChildKeys): - no longer excluded messages marked with "\Deleted". - (-getChildProperty:forKey:withTag:): display the right icon for - replied, forwarded, read/unread and deleted messages. - - * OpenChange/MAPIStoreMailFolderTable.m - (-getChildProperty:forKey:withTag:): compute propre response for - PR_CONTENT_UNREAD, even though this will work only for subfolders - and mapistore v2, neither of which is supported right now... - - * SoObjects/Mailer/SOGoMailObject.m (-isNewMail, -replied) - (-forwarded, -deleted): new accessors for the \Recent, \Answered, - $Forwarded and \Deleted IMAP flags. - -2011-02-13 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartViewer.m (-decodedFlatContent): - finally make use of the -bodyDataFromEncoding: category method - from NSData+Mail (Mailer module). - (-flatContentAsString): moved charset-decoding code into a new - category method named "-bodyStringFromCharset:" in NSData+Mail - (Mailer module). - - * SoObjects/Mailer/SOGoMailObject.m (-lookupInfoForBodyPart:): - accept "text" as path parameter and return the main bodyStructure - in that case. - - * OpenChange/MAPIStoreMailMessageTable.m - (-getChildProperty:forKey:withTag:): enhanced treatment of - PR_BODY_UNICODE to accept text/plain parts when more than one is - available, by selecting the first one only. This requires the - prior detection of text/html parts in order to exclude the - property or not. - Make use of the category methods offered in NSData+Mail to - properly decode the body data for PR_BODY_UNICODE and PR_HTML. - -2011-02-11 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContext.m - (-getProperties:ofTableType:inRow:withMID:): small code size - optimization. - (-getProperty:withFMID:ofTableType:intoFile:): added support for - NSString values. - - * OpenChange/MAPIStoreMailMessageTable.m - (-getChildProperty:forKey:withTag:): return - MAPI_E_NOT_ENOUGH_MEMORY for values of PR_HTML or PR_BODY_UNICODE - that are larged than 16Kib (arbitrary limit). - - * OpenChange/MAPIStoreCalendarMessageTable.m - (-sortIdentifierForProperty): added support for - PidLidAppointmentEndWhole and PidLidRecurring. - - * OpenChange/MAPIStoreTable.m - (-warnUnhandledProperty:inFunction:): renamed and made method public. - - * OpenChange/MAPIStoreGCSMessageTable.m - (-evaluatePropertyRestriction:intoQualifier:) - took version of method from MAPIStoreTable and modified it to - handle all string comparisons with the "UPPER" operator. - (-_fixedDatePropertyRestriction:): renamed version of - evaluateDatePropertyRestriction:intoQualifier: which now returns a - new restriction instead of repassing it to evaluatePropert... - - * OpenChange/NSAutoreleasePool+MAPIStore.m: new utility module - that enables the reparenting of a talloc pointer to the current - NSAutoreleasePool. - - * OpenChange/MAPIStoreContactsMessageTable.m - (-sortIdentifierForProperty:): implemented basic table for - supporting the sorting implied by the use of the addressbook label - buttons. - - * OpenChange/MAPIStoreTasksMessageTable.m - (-sortIdentifierForProperty:): implemented basic table for - supporting common header sorts from the OL interface. - - * OpenChange/MAPIStoreCalendarMessageTable.m - (-sortIdentifierForProperty:): implemented basic table. - - * OpenChange/MAPIStoreGCSMessageTable.m (-setSordOrder:): - implemented overriden method, making use of the new - "sortIdentifierForProperty:" subclass method for the mapping of - sort fields and SQL fields. - -2011-02-10 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContactsMessageTable.m - (-getChildProperty:forKey:withTag:): added support for the - following props: PR_SEND_INTERNET_ENCODING, PidLidFileUnderId, - PidLidEmail1DisplayName, PidLidEmail1EmailAddress, - PidLidEmail2EmailAddress, PR_ACCOUNT_UNICODE, - PR_CONTACT_EMAIL_ADDRESSES_UNICODE, - PR_EMS_AB_TARGET_ADDRESS_UNICODE, PR_SEARCH_KEY, - PR_MAIL_PERMISSION - - * OpenChange/MAPIStoreMessageTable.m - (-getChildProperty:forKey:withTag:): returns a default value for - PR_ORIG_MESSAGE_CLASS_UNICODE based of PR_MESSAGE_CLASS_UNICODE. - - * OpenChange/NSArray+MAPIStore.m (-asArrayOfUnicodeStringsInCtx:): - new method for returning array of "PT_UNICODE" values. - -2011-02-09 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMessageTable.m - (-getChildProperty:forKey:withTag:): removed PR_MESSAGE_CODEPAGE - and PR_INTERNET_CPID. - - * OpenChange/MAPIStoreMailMessageTable.m - (-getChildProperty:forKey:withTag:): removed non-unicode string - proptags. Added support for case - PR_RCVD_REPRESENTING_ADDRTYPE_UNICODE, - PR_RECEIVED_BY_ADDRTYPE_UNICODE, PR_SENDER_ADDRTYPE_UNICODE, - PR_ORIGINAL_AUTHOR_NAME_UNICODE, PR_SENDER_NAME_UNICODE, - PR_SENDER_EMAIL_ADDRESS_UNICODE, - PR_RECEIVED_BY_EMAIL_ADDRESS_UNICODE and - PR_RCVD_REPRESENTING_EMAIL_ADDRESS_UNICODE. - Removed code returning MAPI_E_NOT_ENOUGH_MEMORY when content - values where larger than 3999 bytes. - (_sortIdentifierForProperty:): enabled sorting on - PR_CLIENT_SUBMIT_TIME. - Added support for PR_INTERNET_CPID, currently returning "utf-8" - only (65001). - -2011-02-07 Wolfgang Sourdeau - - * OpenChange/MAPIStoreNotesMessageTable.m - (-getChildProperty:forKey:withTag:): make PR_SUBJECT_UNICODE an - alias to PR_NORMALIZED_SUBJECT_UNICODE. - - * OpenChange/MAPIStoreMailMessageTable.m - (-getChildProperty:forKey:withTag:): return a proper value for - PR_SUBJECT_PREFIX_UNICODE and PR_NORMALIZED_SUBJECT_UNICODE. - - * OpenChange/MAPIStoreMessageTable.m - (-getChildProperty:forKey:withTag:): now return standard values - (checked against doc) for PR_ORIGINAL_SUBJECT_UNICODE, - PR_CONVERSATION_TOPIC_UNICODE, PR_SUBJECT_PREFIX_UNICODE and - PR_NORMALIZED_SUBJECT_UNICODE, the two latter being common to all - modules except MAPIStoreMailMessageTable. - - * OpenChange/MAPIStoreContext.m (-openMessage:forKey:inTable:): - only return PR_SUBJECT_PREFIX_UNICODE, - PR_NORMALIZED_SUBJECT_UNICODE as those are the only fields - required by the doc. - - * OpenChange/MAPIStoreMailMessageTable.m - (-getChildProperty:forKey:withTag:): handle PR_FLAG_STATUS and - PR_FOLLOWUP_ICON based on the "Flagged" message flag. - - * OpenChange/SOGoMailObject+MAPIStore.m: new category module for - handling IMAP metadata on messages. - - * OpenChange/MAPIStoreDraftsContext.m - (-createMessageOfClass:inFolderAtURL:): implemented method to - avoid a crash when "saving" drafts messages in Outlook. - -2011-02-07 Ludovic Marcotte - - * OpenChange/MAPIStoreDeletedItemsContext.m: now a subclass of - MAPIStoreMailContext and make use of the trash folder as module - folder. - - * OpenChange/MAPIStoreDraftsContext.m: now a subclass of - MAPIStoreMailContext and make use of the drafts folder as module - folder. - -2011-02-06 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailMessageTable.m (-setSordOrder): - overriden method with proper mapping of IMAP sort fields, still - lack handling of categories. - - * OpenChange/MAPIStoreMessageTable.m (-setSortOrder:): implemented - stub method. - - * OpenChange/MAPIStoreContext.m - (-setSortOrder:withFID:andTableType:getTableStatus:): implemented - backend method for sorting messages. - - * OpenChange/SOGoMAPIFSMessage.m (-MAPISave): restored old way of - decoding the property dictionary from the property list as the - "new method" was working around that was solved elsewhere and was - causing trouble with value typing. - -2011-02-04 Wolfgang Sourdeau - - * OpenChange/SOGoMAPIFSMessage.m (-properties): initialize - properties to an empty dictionary if the initialization from file - failed. - - * OpenChange/MAPIStoreMailMessageTable.m (-childKeys) - (-restrictedChildKeys): now only return non-deleted elements. - - * OpenChange/SOGoMAPIFSMessage.m (-MAPISave): use an alternative - way of producing the property list file as, for some reason, - invoking -writeToFile:atomically: can fail on NSDictionary. - - * OpenChange/MAPIStoreContext.m - (-deleteMessageWithMID:inFID:withFlags:): we need to invoke - -cleanupCaches on the related table to avoid listing deleted - elements after this operation. - -2011-02-03 Ludovic Marcotte - - * OpenChange/SOGoAppointmentObject+MAPIStore.m - (-setMAPIProperties:): added code to handle attendees. Make use of - the new MAPIContent ivar (temp hack). - - * SoObjects/SOGo/SOGoContentObject.m (-MAPIContent) - (-setMAPIContent:): new accessors for querying/modifying the new - "MAPIContent" ivar, as part of a hack to enable events to be - modified multiple times as one. - - * OpenChange/MAPIStoreCalendarContext.m - (-openMessage:forKey:inTable:): overriden method to return - attendees as recipients. - - * OpenChange/SOGoMAPIFSMessage.m (-delete): implemented method. - (-setMAPIProperties:): append the new properties to the existing - ones instead of replacing them. - - * OpenChange/MAPIStoreTable.m (-setRestrictions:): log the old - restriction when unset. - - * OpenChange/MAPIStoreMapping.m (-unregisterURLWithID:): new - method for removing entries from the mapping dictionaries. - - * OpenChange/MAPIStoreContext.m - (-deleteMessageWithMID:inFID:withFlags:): implemented backend method. - -2011-02-03 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContext.m - (_saveOrSubmitChangesInMessageWithMID:andFlags:save:): silently - ignore "IPM.Schedule.Meeting.Request" messages from Outlook - and return a success code. - - * SoObjects/SOGo/WOResourceManager+SOGo.m: new category module - defining methods useful to the vanilla and OpenChange frontends. - (-localeForLanguageNamed:): method moved from SOGo.m. - -2011-02-01 Ludovic Marcotte - - * SoObjects/SOGo/NSString+Utilities.h,m: Fixed - the salt for crypt-based encoding - -2011-02-01 Francis Lachapelle - - * UI/WebServerResources/scriptaculous/dragdrop.js (-updateDrag:): - fixed JavaScript error with Offset object. This object is now - casted as an array. - - * UI/WebServerResources/MailerUI.js (-startDragging): improved - behavior of drag and drop. - -2011-01-28 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (-onDocumentKeydown): set - the global variables lastClickedRow and lastClickedRowId to fix - the behavior of subsequent selections of multiple messages. - (-configureMessageListEvents): set the table listener on mouseup - instead of mousedown to improve the drag'n'drop experience. - -2011-01-27 Francis Lachapelle - - * SoObjects/SOGo/LDAPSource.m - (-checkLogin:password:perr:expire:grace:): the caching of the DN - is now performed only if the DN was found. - - * SoObjects/Mailer/SOGoDraftObject.m (-save): we no longer use the - relative URL of the draft folder when it must be created. This - fixes an issue when using a subfolder as the drafts folder. - -2011-01-26 Francis Lachapelle - - * UI/Scheduler/UIxComponentEditor.m (-setComponent:): retrieve the - organizer from the master component when not present in the - current component. - -2011-01-24 Francis Lachapelle - - * SoObjects/SOGo/LDAPSource.m (_qualifierForFilter:): added - support for the parameter "SearchFieldNames" that can be added to - the source defaults to specify which LDAP attributes to use when - filtering contacts. It defaults to the previous values, ie sn, - displayname, and telephonenumber. - -2011-01-21 Francis Lachapelle - - * SoObjects/Appointments/iCalRepeatableEntityObject+SOGo.m - (-doesOccurOnDate:): we set the timezone of floating all-day - events to the one of the date passed as argument. - - * UI/Scheduler/UIxAppointmentEditor.m (-defaultAction): when - dealing with "floating" start dates (no timezone), we convert it to - the user's timezone. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (:_flattenCycleRecord:forRange:intoArray:): we must set the - timezone of floating all-day events to the user's timezone. - (_flattenCycleRecords:fetchRange:): Adjust the range so it ends at - midnight. This is necessary when calculating recurrences of all-day events. - -2011-01-17 Francis Lachapelle - - * SoObjects/Appointments/SOGoEMailAlarmsManager.m - (-_lookupEntityMatchingRecord:inCalendar:): We check if - recurrenceId is nil prior calling -timeIntervalSince1970. - -2011-01-14 Francis Lachapelle - - * SoObjects/Appointments/iCalRepeatableEntityObject+SOGo.m - (-doesOccurOnDate:): exception rules be adjusted to the event's - timezone since the recurrence calculation is also based on the - event's timezone. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-_flattenCycleRecord:forRange:intoArray:): idem. - -2011-01-14 Ludovic Marcotte - - * Work on the OpenChange backend: added more property - support such as priority for tasks, events and mails, - secondary email address support for contacts, nickname - and birthday support for contacts and a few more or - some fixes there and there. - * OpenChange/SOGoMAPIFSMessage.m: -MAPISave added a hack - to AVOID saving informations on the fs when dealing - with the "inbox" folder - as it'll crash Outlook upon - next restarts - * Added OpenChange/MAPIStoreNotesMessageTable.{h,m} to - later extend and improve Notes support. - -2011-01-13 Francis Lachapelle - - * SoObjects/Appointments/iCalRepeatableEntityObject+SOGo.m - (-doesOccurOnDate:): the date to verify must be adjusted to the - event's timezone before performing the calculation of the - recurrence rule. - - * SoObjects/Appointments/iCalEvent+SOGo.m (-firstOccurenceRange): - extract the original start and end dates from the event, based on - the event's timezone. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-fixupCycleRecord:cycleRange:firstInstanceCalendarDateRange:withEventTimeZone:): - the event dates must be first be adjusted to the event's timezone - before being adjusted to the user's timezone. - (-_flattenCycleRecord:forRange:intoArray:): the calculation of the - occurrences must be performed with respect to the event's - timezone, not the user's timezone. - - * SoObjects/Appointments/SOGoAppointmentObject.m - (-newOccurenceWithID:): new occurrences are now independant of the - user's timezone. - -2011-01-11 Ludovic Marcotte - - * OpenChange/MAPIStoreContactsMessageTable.m - Added more properties: home/work URL, nickname - and department. - -2011-01-11 Wolfgang Sourdeau - - * OpenChange/SOGoTaskObject+MAPIStore.m (-setMAPIProperties): - release fullCalendar and safeCalendar to force a rebuild of - the root object when next requested. - - * OpenChange/SOGoAppointmentObject+MAPIStore.m (-setMAPIProperties): - idem. - - * OpenChange/MAPIStoreContext.m - (-createMessagePropertiesWithMID:inFID:isAssociated:): added a - retain count handling. - (-releaseRecordWithFMID:ofTableType:): same as above. - (-_saveOrSubmitChangesInMessageWithMID:andFlags:save:): cleanup - table caches even for modifications. - - * OpenChange/MAPIStoreMessageTable.m - (-getChildProperty:forKey:withTag:): fixed PR_ACCESS and - PR_ACCESS_LEVEL to avoid displaying the "read-only" status. - - * OpenChange/MAPIStoreTable.m (-cleanupCaches): remove lastChild - from cache too. - - * OpenChange/MAPIStoreTasksMessageTable.m - (-getChildProperty:forKey:withTag:): fixed typo affecting - PidLidTaskStatus. - - * OpenChange/MAPIStoreContext.m (-openMessage:withMID:inFID:): - create a message dictionary in the message cache in order to - enable modifications. - - * OpenChange/MAPIStoreContactsMessageTable.m - (-_element:ofType:excluding:inCard:): new version of the previous - -_phoneOfType:excluding:inCard: method, which now returns the - requested element rather than it's first value and which enables - the specification of the tag. - (-getChildProperty:forKey:withTag:): added support for - PidLidPostalAddressId, PR_POSTAL_ADDRESS_UNICODE, - PR_POST_OFFICE_BOX_UNICODE, PR_STREET_ADDRESS_UNICODE, - PR_LOCALITY_UNICODE, PR_STATE_OR_PROVINCE_UNICODE, - PR_POSTAL_CODE_UNICODE, PR_COUNTRY_UNICODE, PidLidWorkAddress, - PidLidWorkAddressPostOfficeBox, PidLidWorkAddressStreet, - PidLidWorkAddressCity, PidLidWorkAddressState, - PidLidWorkAddressPostalCode and PidLidWorkAddressCountry. - - * OpenChange/MAPIStoreContext.m (-openMessage:forKey:inTable:): - avoid taking NULL values into account when returning the basic - properties. - - * OpenChange/SOGoContactGCSEntry+MAPIStore.m - (-setMAPIProperties:): added support for work address and its - corresponding addresse label. Preliminary support for - "PidLidPostalAddressId" which enables us to set a certain address - as preferred. - Carefully replace existing handled fields to avoid removing them - during modification. - -2011-01-10 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContext.m (-typeLessTag:): removed method as - types are now determined from openchange core. - -2011-01-07 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContext.m (_typeLessTag:): new method - designed to return a known value type for typeless tags that were - requested via getprops. This abstract the missing type from the - call to getChildProperty:... - - * OpenChange/MAPIStoreMessageTable.m - (-getChildProperty:forKey:withTag:): added generic values for some - standard props. - - * OpenChange/SOGoAppointmentObject+MAPIStore.m: same as below. - - * OpenChange/SOGoTaskObject+MAPIStore.m (-setMAPIProperties:): set - a value for CREATED and DTSTAMP - -2011-01-05 Wolfgang Sourdeau - - * OpenChange/MAPIStoreTasksMessageTable.m - (-getChildProperty:forKey:withTag:): silently returns - MAPI_E_NOT_FOUND when the completion date is not available. Added - stubs for PidLidTaskMode, PidLidTaskFRecurring, - PidLidTaskActualEffort and PidLidTaskEstimatedEffort. - - * OpenChange/MAPIStoreFolderTable.m - (-backendIdentifierForProperty:): new overriden method to avoid an - exception under certain circumstances. - - * OpenChange/SOGoMAPIFSMessage.m (-MAPISave): make use of - "ensureDirectory" on the container folder to avoid errors with - NSDictionary failing to save itself to the filesystem. - - * OpenChange/SOGoMAPIFSFolder.m (-ensureDirectory): method made - public and which ensures that the directory pointed to by the - instances of this class does exist. - - * OpenChange/SOGoContactGCSEntry+MAPIStore.m (-setMAPIProperties): - take "PidLidEmail1EmailAddress" id as key for the contact email - address. - -2011-01-05 Ludovic Marcotte - - * SoObjects/SOGo/SQLSource.m - we now honor the "mail" column - and we also support "MailFieldNames" in the SQL source - which - is essentially and array of column names holding additonnal email - addresses of users (beside the "mail" column). Also updated - the documentation to reflect this change. - -2011-01-05 Francis Lachapelle - - * UI/WebServerResources/SOGoAutoCompletion.js (onKeydown): added - support for the delete key (confirmed value was not reset and - therefore used as the field value when loosing focus). - - * UI/WebServerResources/generic.js (showConfirmDialog): buttons - callbacks must be updated when retrieving dialog box from cache. - -2011-01-03 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContactsMessageTable.m - (-getChildProperty:forKey:withTag:): result the same value for - "PR_SUBJECT" as for "PR_DISPLAY_NAME_UNICODE" instead of a stub - string. - -2010-12-30 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailMessageTable.m - (-getChildProperty:forKey:withTag:): return "NO" for - PR_REPLY_REQUESTED and PR_RESPONSE_REQUESTED. Commented out - responses for "PidLidHeaderItem" and "PidLidRemoteTransferSize". - Return "PR_ORIGINAL_DISPLAY_TO/CC/BCC_UNICODE" based on their - non-"ORIGINAL" counterpart and return an empty string when - missing. - Modified the return code of "PR_RTF_COMPRESSED" to - "MAPI_E_NOT_FOUND". - - * OpenChange/MAPIStoreTypes.m (NSObjectFromSPropValue) - (NSObjectFromMAPISPropValue): force booleans to be int to avoid - creating EOQualifier values where the strings "YES" or "NO" appear - as a result to "stringValue". - - * OpenChange/SOGoTaskObject+MAPIStore.m - (-setMAPIProperties:): same as below. - - * OpenChange/SOGoAppointmentObject+MAPIStore.m - (-setMAPIProperties:): make use of proper named properties macro - symbols rather than their values, now that they are handled better - in the openchange core. - - * OpenChange/SOGoMAPIFSFolder.m (-initWithURL:andTableType:): - accepts a new "tableType" parameter to store messages in a - different place of the fs folder hierarchy. - - * OpenChange/NSValue+MAPIStore.m (-asDoubleInMemCtx): really - returns a double rather than an uint64_t. - - * OpenChange/MAPIStoreTypes.m (MAPIDoubleValue): new wrapper - methods for generating data of "double" type. - (NSObjectFromMAPISPropValue, NSObjectFromSPropValue): now handle - the PT_CLSID mapi type. - ( - (MAPIStoreDumpMessageProperties): enhanced logging of property - keys. - - * OpenChange/NSData+MAPIStore.m (+dataWithFlatUID) - (-asFlatUIDInMemCtx:, +dataWithGUID:, asGUIDInMemCtx:): new - methods for handling the two GUID mapistore types. - - * OpenChange/MAPIStoreContext.m - (-createMessageOfClass:inFolderAtURL:): renamed from - "-createMessageInFolder:", taking an additional message class - parameter that enables the subclasses to accept or deny a message - creation. - - * OpenChange/EOQualifier+MAPIFS.m (-evaluateMAPIFSMessage:): added - logging for easier debugging. - - * OpenChange/MAPIStoreSentItemsContext.[hm]: class is now derived - from MAPIStoreMailContext and set up its module folder to the - user-configured sentFolder of his/her default account. - - * OpenChange/MAPIStoreMailFolderTable.[hm]: new class module - subclassed from MAPIStoreFolderTable, that provides the interface - for folders in MAPIStoreMailContext. - - * OpenChange/MAPIStoreMailContext.m: Old table methods (see - below) split into the new "MAPIStoreMailMessageTable" class. - (+registerFixedMappings:): changed handled uri to - @"sogo://openchange:openchange@inbox/". - - * OpenChange/MAPIStoreGCSBaseContext.m: Old table methods (see - below) split into the new "MAPIStoreGCSMessageTable" class. - - * OpenChange/MAPIStoreContactsContext.m: Old table methods (see - below) split into the new "MAPIStoreContactsMessageTable" class. - (+registerFixedMappings:): changed handled uri to - @"sogo://openchange:openchange@contacts/". - - * OpenChange/MAPIStoreTasksContext.m: Old table methods (see - below) split into the new "MAPIStoreTasksMessageTable" class. - (+registerFixedMappings:): changed handled uri to - @"sogo://openchange:openchange@tasks/". - - * OpenChange/MAPIStoreCalendarContext.m: Old table methods (see - below) split into the new "MAPIStoreCalendarMessageTable" class. - (+registerFixedMappings:): changed handled uri to - @"sogo://openchange:openchange@calendar/" as we now consider that - the "host" part of the uri names the context that handles it. - - * OpenChange/MAPIStoreFAIMessageTable.[hm]: new class module, - subclassed from MAPIStoreFSMessageTable, that provides the - interface for FAI messages in MAPIStoreContext. - - * OpenChange/MAPIStoreFSBaseContext.[hm]: renamed from - MAPIStoreFileSystemBaseContext. Old table methods (see below) - split into the new "MAPIStoreFSMessageTable" class. - - * OpenChange/MAPIStoreSOGo.m (sogo_op_openmessage): added some - debugging. - (sogo_op_createmessage): takes a new "associated" flag parameter. - - * OpenChange/MAPIStoreContext.m: refactored to extract the table - handling code into a separate class. This enables the introduction - of real classes for contents tables, folder tables and FAI tables, - as well as any other type that could be handled later. Changes: - - new messageTableClass and folderTableClass methods for - determining the class that is appropriate to the current datatype. - - new messageTable, folderTable ivars. - - new faiTable ivar, always an instance of - MAPIStoreFAIMessageTable. - - created MAPIStoreTable, subclassed into MAPIStoreMessageTable - and MAPIStoreFolderTable from which appropriate subclasses are - derived for handling mails, tasks or calendar items. - - renamed - "getMessageTableChildproperty:atURL:withTag:inFolder:withFID:" and - "getFolderTableChildproperty:atURL:withTag:inFolder:withFID:" to - the simpler "getChildProperty:forKey:withTag:" form and moved them - to the MAPIStoreTable class. - - moved "-setRestrictions:" to MAPIStoreTable. - - renamed "getFolderMessageKeys:matchingQualifier:" to - "cachedChildKeys" and "cachedRestrictedChildKeys" and moved them - to MAPIStoreTable. - - moved all the "evaluateRestriction:intoQualifier:" methods to - MAPIStoreTable. - (-createMessagePropertiesWithMID:inFID:isAssociated:): now takes a - "isAssociated" parameter to determine whether the message is part - of the contents table or the fai table. - - * OpenChange/EOBitmaskQualifier.m (-description): new method. - -2010-12-29 Ludovic Marcotte - - * Moved the string encryption code from SoObjects/SOGo/SQLSource.m - to SoObjects/SOGo/NSString+Utilites.m - * SoObjects/SOGo/SOGoUserManager.m: We now store the passwords - in memcached as a SHA1 encrypted string. - -2010-12-28 Ludovic Marcotte - - * Implemented secured sessions. We no longer store in the - browser's cookie the base64 encoded version of username:password - You MUST now set OCSSessionsFolderURL to a value like: - postgresql://sogo:sogo@127.0.0.1:5432/sogo/sogo_sessions_folder - and the database table will be created automatically upon - next SOGo's startup. - -2010-12-23 Ludovic Marcotte - - * Added the /SOGo/so//Calendar/reloadWebCalendarsAndRedirect - action which is particularly useful for WebAuth users - -2010-12-17 Wolfgang Sourdeau - - * OpenChange/MAPIStore*Context.m: added handling of a few more - filters and a few more properties, in particular "named - properties". - -2010-12-14 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContext.m - (-evaluateBitmaskRestriction:intoQualifier:): implemented method. - (-releaseRecordWithFMID:ofTableType:): return MAPI_E_SUCCESS even - when the message passed as parameter was not found. - - * OpenChange/MAPIStoreMailContext.m - (-evaluateContentRestriction:intoQualifier:): new overriden method - handling tests on the PR_MESSAGE_CLASS_UNICODE property. - - * OpenChange/EOQualifier+MAPIFS.m (-[EOBitmaskQualifier - _evaluateMAPIFSMessageProperties:]): new method adapted to the new - class below. - - * OpenChange/EOBitmaskQualifier.[hm]: new class module - implementing a new EOQualifier subclass that's adapted to the MAPI - bitmask restrictions. - -2010-12-14 Ludovic Marcotte - - * Implemented the "bindAsCurrentUser" feature (when - set to the LDAP SOGoUserSources, to YES) which forces - SOGo to use the DN of the currently "requesting" user - to perform all LDAP-related operations - -2010-12-13 Wolfgang Sourdeau - - * OpenChange/EOQualifier+MAPIFS.[hm]: new category module for - evaluating qualifiers with regards to SOGoMAPIFSMessage objects. - - * OpenChange/MAPIStoreGCSBaseContext.[hm]: new class module - containing all the code common to SOGoGCSFolder-based context - classes, in particular with regards to restriction handling. - - * OpenChange/MAPIStoreContext.m (-init): added new - "restrictedMessageCache" dictionary to retain the ids matching the - active restriction filter and "parentFoldersBag" array to retain - folder objects that are parents of the module folder. - - (-getCommonTableChildproperty:atURL:withTag:inFolder:withFID:): - added handling for PR_SEARCH_KEY. - (-evaluateContentRestriction:intoQualifier:) - (-evaluateExistRestriction:intoQualifier:) implemented fallback - code. - (-getTableProperty:withTag:atPosition:withTableType:andQueryType:inFID:): - added the new 'query_type' parameter, as required by the upstream - changes. Adapted the code to check if the active row matches the - filter (live filtering) or to return a pre-filtered set of rows - altogether. - (-releaseRecordWithFMID:ofTableType:) implementation of - op_release_record. - - * OpenChange/MAPIStoreMapping.m (MAPIStoreMappingInitDictionary): - new function used during the instance initialization to fetch - pre-existing ids from tdb index. - - * OpenChange/MAPIStoreTypes.h (MAPIPropertyKey): renamed from - MAPIPropertyNumber, changed behaviour to only take the 2 msb into - account to generate a value key. - - * OpenChange/NSData+MAPIStore.m (-asShortBinaryInMemCtx:): new - corrolary method to +dataWithShortBinary:. - - * OpenChange/MAPIStoreFileSystemBaseContext.[hm]: new base - MAPIStoreContext class that handles requests for objects based on - the SOGoMAPIFSFolder and SOGoMAPIFSMessage classes. - - * MAPIStoreCommonViewsContext.[hm], - MAPIStoreDeferredActionsContext.[hm], - MAPIStoreDeletedItemsContext.[hm], MAPIStoreDraftsContext.[hm], - MAPIStoreFreebusyContext.[hm], MAPIStoreJournalContext.[hm], - MAPIStoreNotesContext.[hm], MAPIStoreRemindersContext.[hm], - MAPIStoreScheduleContext.[hm], MAPIStoreSearchContext.[hm], - MAPIStoreSentItemsContext.[hm], MAPIStoreShortcutsContext.[hm], - MAPIStoreViewsContext.[hm]: - new subclasses of MAPIStoreFileSystemBaseContext. - - * OpenChange/NSValue+MAPIStore.[hm]: new category module for - returning native MAPI types. - - * OpenChange/SOGoMAPIFSFolder.[hm]: new class module that - implements a SOGoFolder subclass that stores and retrives data - to/and from the file system in the form of a plist. - - * OpenChange/SOGoMAPIFSMessage.[hm]: new class module that - implements a SOGoObject subclass that stores and retrives data - to/and from the file system in the form of a plist. - -2010-12-09 Ludovic Marcotte - - * SoObject/SOGo/SQLSource.m - added SHA password - hash support for SQL authentication sources. - * Added patch from bug #1048 - * SoObjects/Mailer/SOGoDraftObject.m: - -mimeHeaderMapWithHeaders:excluding: axed the "replyTo" - code as it was always 'empty', leading to Reply-To being - always set to the From: address, which is rather stupid. - -2010-12-08 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (onMenuEmptyTrashCallback): - refresh the folders tree if there're folders in the trash. - -2010-12-03 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContext.m - (-setRestrictions:withFMID:andTableType:getTableStatus:): new - backend method that accepts a struct mapi_SRestriction * in order - to filter the table rows. - (-evaluateRestriction:intoQualifier:) - (-evaluateNotRestriction:intoQualifier:) - (-evaluateAndRestriction:intoQualifier:) - (-evaluateOrRestriction:intoQualifier:): new low-level restriction - handlers for converting MAPI restrictions into EOQualifier - equivalents. - (-evaluateContentRestriction:intoQualifier:) - (-evaluatePropertyRestriction:intoQualifier:) - (-evaluateBitmaskRestriction:intoQualifier:) - (-evaluateExistRestriction:intoQualifier:) new overridable - restriction handlers. - (-backendIdentifierForProperty:): new overridable restriction - helper for converting restriction attributes into database or IMAP - fields, depending on the module in use. Used by the topmost - version of -evaluatePropertyRestriction:intoQualifier: for - handling "needs eval" restriction types. - (-saveOrSubmitChangesInMessageWithMID:andFlags:save:) prevent any - creation or modification of messages with a type attribute of - "IPM.Microsoft.FolderDesign.NamedView", at least for now, because - no module is able to handle those view-related messages. - - * OpenChange/MAPIStoreSpoolerContext.m: new experimental subclass - of MAPIStoreOutboxContext. - - * OpenChange/MAPIStoreTypes.m (NSObjectFromMAPISPropValue): new - helper function, similar in semantics to NSObjectFromSPropValue - but taking a struct mapi_SPropValue * as parameter. - - * OpenChange/NSData+MAPIStore.m: (+dataWithShortBinary:): new - constructor for returning an NSData instance from a struct - SBinary_short. - -2010-12-03 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js - (deleteSelectedMessagesCallback): must set the value of - lastClickedRow and lastClickedRowId when selecting the next row. - - * UI/WebServerResources/HTMLElement.js (refreshSelectionByIds): - log invalid references to element IDs. - -2010-12-02 Ludovic Marcotte - - * Main/SOGo+DAV.m - we avoid assuming a range is found - and check for it, returning no location if necessary - -2010-12-01 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContext.m: prevent leaks by adding an - additional mutable array that retains the required parent folders - until deallocation of the context. - (-getCommonTableChildproperty:atURL:withTag:inFolder:withFID:): - log the name of the missing properties for easier diagnostics. - -2010-11-30 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMailContext.m - (-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:): - when the property is larger than 4000 bytes, register it in a - "message" dictionary and return MAPI_E_NOT_ENOUGH_MEMORY so that - it can be fetched later via the streaming mechanism. - - * OpenChange/MAPIStoreTypes.h (MAPIPropertyNumber): changed the - prototype to use an enum MAPITAGS instead of an int32_t. - - * OpenChange/MAPIStoreContext.m - (-getFolderTableChildproperty:atURL:withTag:inFolder:withFID:) - (-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:) - (-getCommonTableChildproperty:atURL:withTag:inFolder:withFID:): - now return an "enum MAPISTATUS" for making debugging easier. - (_createMessageWithMID:inFID:): display an error when the returned - message is nil. - (-getMessageProperties:inRow:atURL:): when an error code is - returned from the getXXXChildProperty.. methods, the tag is set to - its corresponding error tag and the error code is returned as a - long value. - (-getProperty:withFMID:ofTableType:intoFile:): implemented - "op_get_property_into_fd" backend method. - -2010-11-26 Wolfgang Sourdeau - - * OpenChange/MAPIStoreTypes.m (NSObjectFromStreamData): new - function for returning an NSObject from a property tag and a data - pointer. - - * OpenChange/MAPIStoreContext.m - (-setProperty:withFMID:ofTableType:fromFile:): new method - implementing the "set_property_from_fd" backend operation. - -2010-11-24 Wolfgang Sourdeau - - * OpenChange/SOGoDraftObject+MAPIStore.m: new category module. - (-setMAPIProperties,-MAPISubmit,-MAPISave): implemented the MAPI - methods for sending messages. - - * OpenChange/MAPIStoreSOGo.m: (sogo_op_modifyrecipients): new - backend operation. - - * OpenChange/MAPIStoreContext.m: - (-modifyRecipientsWithMID:inRows:withCount:): new method - implementing the new "modifyrecipients" operation. - - * OpenChange/MAPIStoreOutboxContext.m: new class module - implementing the "outbox" folder type, as a subclass of - MAPIStoreMailContext. - (-createMessageInFolder:): new method that returns an instance of - SOGoDraftObject. - -2010-11-23 Francis Lachapelle - - * UI/WebServerResources/SchedulerUI.js (deletePersonalCalendar): - argument is now the list node instead of simply the node id. The - confirmation callback (deletePersonalCalendarConfirm) is binded to - this object. - (deletePersonalCalendarConfirm): unselect and hide the calendar - node in the list until the Ajax call returns. - (deletePersonalCalendarCallback): remove the hidden calendar node - on success and show it when the Ajax call failed. - (drawNowLine): fixed the selection of the target cells. - -2010-11-23 Wolfgang Sourdeau - - * OpenChange/MAPIStoreTypes.m (NSObjectFromSPropValue): added - support for "PT_BINARY". - - * OpenChange/NSData+MAPIStore.m (+dataWithBinary:): new - constructor for generating an NSData instance from a struct - Binary_r *. - - * SoObjects/Mailer/SOGoDraftObject.m (-setIsHTML, -isHTML): new - accessors, which enables the setting of html mode from the caller - rather than from the user defaults. - (-mimeMessageForContentWithHeaderMap:, -bodyPartForText): make use - of "isHTML". - - * UI/MailerUI/UIxMailEditor.m (-setIsHTML, -isHTML): new - accessors. The former sets the "isHTML" ivar based on a previous - request on the latter, which actually returns the value stored in - the user defaults. This enables the user to change composition - type while editing a message without altering the proper logic - underneat. - (-_saveFormInfo): forward the value of "isHTML" to the co. - -2010-11-22 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContext.m - (_prepareContextClass): new static function for clearing up - +contextFromURI:inMemCtx:. - (+registerFixedMappings:): new subclassable method. - (_prepareContextClass): the static mappings are now initialized - from the context class themselves, via the use of an unique - invocation of +registerFixedMappings: when the class is - instantiated first. - (+MAPIModuleName): new method that returns the corresponding - module name for parsing or constructing MAPI urls. - (+initialize): wander the list of subclasses and construct a - static dictionary with the help of the new method above for - further user from +contextFromURI:inMemCtx:. This replaces the - static code therein with a more dynamic approach. - (-submitMessageWithMID:andFlags:): implemented method via a - private method derived from - -saveChangesInMessageWithMID:andFlags:, invoking -MAPISubmit on - the resulting object. - (-saveChangesInMessageWithMID:andFlags:) make use of the same - private method as above, invoking -MAPISave on the resulting - object. - - * OpenChange/SOGoTaskObject+MAPIStore.m (-setMAPIProperties:): the - start date must be taken from the 0x811e0040 property rather than - "PR_START_DATE" (contrary to the event properties), we now handle - the due date (0x811f0040) as well as the task "body", set as - comment. - -2010-11-19 Wolfgang Sourdeau - - * OpenChange/MAPIStoreTasksContext.m (-createMessageInFolder:): - implemented method. - - * OpenChange/SOGoTaskObject+MAPIStore.[hm]: new category - module. - (setMAPIProperties:): partially implemented, in order to be able - to create basic tasks. - - * OpenChange/MAPIStoreFreebusyContext.[hm]: new class module for - the "SCHEDULE+ FREE BUSY" public folder (0x70001). - - * OpenChange/MAPIStoreContext.m - (-setPropertiesWithFMID:type:inRow:): renamed to - -setPropertiesWithFMID:ofTableType:inRow:. - (-getProperties:inRow:withMID:type:): renamed to - -getProperties:ofTableType:inRow:withMID:. - - * OpenChange/MAPIStoreContactsContext.m (-createMessageInFolder:): - mark new entry as new. - - * OpenChange/MAPIStoreCalendarContext.m (-createMessageInFolder:): - implemented method. - - * OpenChange/SOGoAppointmentObject+MAPIStore.[hm]: new category - module for SOGoAppointmentObject. - (setMAPIProperties:): partially implemented, in order to be able - to create basic events. - - * OpenChange/MAPIStoreTypes.m: new helper module designed to - handle type conversion between MAPI types and NS types. - - * OpenChange/NSDate+MAPIStore: renamed back to - NSCalendarDate+MAPIStore. - -2010-11-18 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContactsContext.m (-createMessageInFolder:): - implemented method and returns an instance of SOGoContactGCSEntry. - - * OpenChange/SOGoContactGCSEntry+MAPIStore.m: new category module. - (setMAPIProperties:) new method that resets the properties on the - current object and update the corresponding record in the database. - - * OpenChange/MAPIStoreContext.m - (-setPropertiesOfMessage:fromRow:): check the size of the integers - on the build platform to invoke the right constructor of NSNumber. - (-saveChangesInMessageWithMID:andFlags:): implemented method by - looking up the requested object and creating one via "[self - createMessageInFolder:]" if not exist. Afterwards, the MAPI props - previously passed via setProperties.... are commited into the - created/updated SOGo object. - - * OpenChange/MAPIStoreMailContext.m - (-getMessageProperties:inRow:atURL:): moved method into - MAPIStoreContext.m since it's generic enough to apply to all the - stores. - - * OpenChange/MAPIStoreSOGo.m (sogo_create_context): we now make - sure that the MAPIStoreContext class has been loaded. Otherwise we - return MAPISTORE_ERROR. - - * OpenChange/MAPIApplication.m (-init): most of the setup code has - been moved into MAPIStoreSOGo.m. - - * OpenChange/GNUmakefile: the MAPIStoreSOGo library is now just a - wrapper that loads the new "SOGoBackend" bundle from - SoProductRegistry. - - * SoObjects/SOGo/SOGoContentObject.m (-outlookMessageClass): - removed useless method. - -2010-11-17 Wolfgang Sourdeau - - * Tests/Integration/test-davacl.py (DAVPublicAccessTest.setUp): - renamed "init" method to "setUp" to force reinitialization of the - client objects before each test. - -2010-11-16 Wolfgang Sourdeau - - * UI/WebServerResources/generic.js: (onCASRecoverIFrameLoaded): - the ajax recovery request is now performed from a timeout attached - to the window, to make sure it does not reference the iframe - itself. The iframe is removed from a similar timeout, to avoid - reference errors and a continuous spinning wheel after a recovery - request. - -2010-11-15 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (refreshMailbox): now calls - refreshUnseenCounts so the unseen count is updated when the user - clicks on the "Get Mail" button. - -2010-11-15 Wolfgang Sourdeau - - * UI/Scheduler/UIxAppointmentEditor.m (-saveAction): check the - equality of componentCalendar and previousCalendar by comparing - their ocsPath, since the objects themselves might be different - instances when the current user has logged in with a different - identifier than his/her uid. - -2010-11-12 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (messageFlagCallback): now - remove the message headers from the cache. - - * SoObjects/SOGo/SOGoGCSFolder.m - (-folderPropertyValueInCategory:forUser:): new method that allows - to specify the user from which to fetch the settings. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-includeInFreeBusy): the verification is now performed on the - calendar owner's settings instead of the activer user's settings. - -2010-11-11 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (deleteSelectedMessages): - don't try to delete message(s) when the selected mailbox is not a - folder. - (deleteSelectedMessagesCallback): when automatically selecting the - next message after deletion, invalidate this message header if it - was unread. - (refreshCurrentFolder): don't refresh the selected mailbox if it's - not a folder. - - * UI/WebServerResources/SOGoDataTable.js (_emptyTable): now removes - references to previously selected rows. - -2010-11-10 Francis Lachapelle - - * UI/MailerUI/UIxMailEditor.m (-sendAction): the error message (if - any) is now translated in the HTTP response. - - * SoObjects/SOGo/SOGoMailer.m - (:_smtpSendData:toRecipients:sender:): added exception handling - when the smtp server is not accessible. - - * UI/WebServerResources/MailerUI.js (openMailbox): improved - behavior when reloading the mailbox. - (onMenuEmptyTrashCallback): new callback exclusive to the "empty - trash" menu option; it deletes the cached data source and refresh - the current folder instead of jumping to the inbox. - -2010-11-08 Ludovic Marcotte - - * SOPE/GDLContentStore/GCSAlarmsFolder.m - We now check for non-nil values before calling - -timeInterval... - * SoObjects/Mailer/SOGoMailAccount.m - We try to fallback to the imap server prior falling - back to localhost - -2010-11-08 Francis Lachapelle - - * UI/WebServerResources/SOGoDragHandles.js (adjust): for vertical - drag handles, prioritize the top limit rather than the bottom one. - - * UI/WebServerResources/UIxContactEditor.js (onComboButtonClick): - return false so the form is not submitted when the button is clicked. - - * UI/WebServerResources/ContactsUI.js - (onCategoriesMenuPrepareVisibility): don't verify the selection if - the list doesn't exist (happens in the contact editor). - -2010-11-05 Wolfgang Sourdeau - - * OpenChange/MAPIStoreSOGo.m: added debugging witnesses call to - each method. - - * OpenChange/MAPIStoreContext.m: added a private category to NSObject. - (+[NSObject objectFromSPropValue:]) new generic constructor for - converting mapi types to NS* types. - (-init): added a new "messages" NSMutableDictionary ivar for - storing messages in constructions. - (-createMessageWithMID:inFID:): implemented method by registering - a new message object in "messages". - (-setPropertiesWithFMID:type:inRow:): implemented the message part - of the method by resolving the message passed as parameter and - passing it to the new setPropertiesOfMessage:fromRow: method. - (-setPropertiesOfMessage:fromRow:): new method that wanders in the - property array of the aRow parameter, converts each member via - +[NSObject objectFromSPropValue:] and stores the result in the - message passed as parameter. - - * OpenChange/NSDate+MAPIStore.[hm]: this module now implements a - category for NSDate rather than NSCalendarDate. - (+dateFromFileTime): new method that returns an NSDate from a - struct FILETIME - - * SoObjects/Appointments/SOGoAptMailReceipt.m (-getSubject) - (-getBody): invoked setupValues if values is nil to ensure that - the timezone has been set properly. - -2010-11-05 Francis Lachapelle - - * UI/MailerUI/UIxMailListActions.m (-getSortedUIDsAction): now - accepts the form parameter "no_headers" so only the UIDs are - returned, without the prefetched headers. - - * UI/WebServerResources/SOGoMailDataSource.js (init): made the - headers argument optional. - (_loadCallback): handled the case when the server doesn't send the - prefetched headers. - - * UI/WebServerResources/SOGoDataTable.js (_refresh): new method to - force the refresh of the data table with the data of the data source. - (remove): don't update the internal variables (index and count) if - the UID was not found in the data source. - - * UI/WebServerResources/MailerUI.js (openMailbox): when reloading - a mailbox, only fetch the messages UIDs (without the headers). - (loadMessageCallback): only reload the headers if the seen state - has changed. - -2010-11-04 Ludovic Marcotte - - SoObjects/SOGo/SOGoMailer.m - We stop when we see an invalid recipient and we inform the - client back with what are the invalid recipients - -2010-11-04 Wolfgang Sourdeau - - * Tools/SOGoSockDOperation.m (_getFolderWithId:forUser:): invoke - -[SOGoParentFolder lookupPersonalFolder:ignoringRights:] directly, - in order to avoid a useless permission check. - -2010-11-03 Francis Lachapelle - - * UI/WebServerResources/SOGoDataTable.js (remove): we must - decrement the value of renderedIndex when the row removed is - before the first rendered row. We also call deselect in order to - update the internal array of selected rows IDs. - (refresh): new method to force the recomputation of the top and - bottom padding rows of the table. - -2010-11-03 Wolfgang Sourdeau - - * Tests/Integration/teststrings.sh: new utility script to test the - parsability of the localization strings file. - - * UI/WebServerResources/generic.js: (onCASRecoverIFrameLoaded): - go back to the user's page instead of the logoff page. - -2010-11-02 Ludovic Marcotte - - * Implemented http://sogo.nu/bugs/view.php?id=821 - -2010-11-02 Wolfgang Sourdeau - - * SoObjects/SOGo/NSDictionary+BSJSONAdditions.[hm]: - SoObjects/SOGo/NSScanner+BSJSONAdditions.[hm]: removed classes, - obsoleted by the use of the SBJson library. - -2010-11-01 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (mailListToggleMessagesRead): - we now accepts an element as argument to directly set a message as - read or unread. Also fix the bug of marking multiple messages. - (mailListToggleMessagesFlagged): idem. - (messageListCallback): no more observers are registered on the - rows and cells. All events are delegated to the table. - (onMessageSelectionChange): implemented event delegation on the - table. - (configureMessageListEvents): idem. - - * UI/WebServerResources/generic.js (onRowClick): we now accepts an - element as argument, bypassing the event's target element and the - event listener. - - * UI/MailerUI/UIxMailListActions.m (-messageSubject): we now - escape HTML tags in the returned string. - -2010-11-01 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAptMailUpdate.m (-setupValues): avoid - setting values that are already set in SOGoAptMailNotification. - - * SoObjects/Appointments/SOGoAptMailDeletion.m (-getBody): added - the same details as for the meeting invitations. - - * SoObjects/Appointments/SOGoAptMailNotification.m (-setupValues): - merged setup code from SOGoAptMailInvitation.m. - - * UI/WebServerResources/ContactsUI.js: (resetCategoriesMenu) - (onCategoriesMenuPrepareVisibility, onCategoriesMenuItemClick) - (setCategoryOnNode, unsetCategoryOnNode): new methods designed to - handle the handling of categories directly from the contacts list. - - * SoObjects/Contacts/SOGoContactGCSFolder.m (+initialize): we now - return the "c_categories" field too. - - * UI/Contacts/UIxContactActions.m: new class module implementing - actions on contacts. - (-setCategoryAction, -unsetCategoryAction): new actions. - - * UI/WebServerResources/generic.js (triggerAjaxRequest): invoke - the request callback only when set on the http object. - - * SoObjects/Mailer/SOGoMailBaseObject.m (-_createIMAP4Connection): - we need to initialize newConnection to nil when the return - password is nil. - -2010-10-28 Francis Lachapelle - - * SoObjects/Mailer/SOGoDraftObject.m - (-mimeHeaderMapWithHeaders:excluding:): added the X-Forward header - with the user's IP address, if available and not equal to 'localhost'. - -2010-10-28 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolders.m - (-_migrateWebCalendarsSettings): fixed a bug where the active - user's login name would be used as comparison prefix, leading to a - corrupted and very long calendar key. Added code to migrate those - previously corrupted keys to their proper form. - -2010-10-27 Wolfgang Sourdeau - - * UI/Contacts/UIxContactView.m (-categories): new accessor for - displaying card categories. - - * UI/WebServerResources/UIxContactEditor.js: (onComboButtonClick): - take the container's scrollTop into account when displaying the - combobox menu. - -2010-10-26 Wolfgang Sourdeau - - * SoObjects/Contacts/SOGoContactSourceFolder.m - (-lookupContactsWithFilter:onCriteria:sortBy:ordering:): added the - handling of the new "criteria" parameter, returning an empty set - if no known one has been passed. - - * SoObjects/Contacts/SOGoContactGCSFolder.m - (-lookupContactsWithFilter:onCriteria:sortBy:ordering:): added the - handling of the new "criteria" parameter, returning an empty set - if no known one has been passed. - - * OGoContentStore/OCSContactFieldExtractor.m - (-extractQuickFieldsFromVCard:): we now extract the list of - categories from the vcard. - - * UI/WebServerResources/UIxPreferences.js: added code to handle - the new "Contacts Options" tab, in particular the contacts - categories. - - * UI/PreferencesUI/UIxPreferences.m (-languageCategories): renamed - to "_languageCalendarCategories" as it is a private method. The - dictionary key has also been renamed to - "calendar_category_labels" since we now handle contact categories - too. - (-calendarCategoriesValue, -setCalendarCategoriesValue:): renamed - from "categories" method. - (-contactsCategoryList, -contactsCategoriesValue) - (-setContactsCategoriesValue:): new methods for handling contacts - categories in the preferences. Transfers are in JSON. - - * UI/WebServerResources/UIxContactEditor.js: (saveCategories) - (appendCategoryInput, onComboButtonClick, onCategoryInputChange) - (onCategoryInputFocus, regenerateCategoriesMenu) - (onCategoryMenuEntryClick, onEmptyCategoryClick) new methods added - for handling the contact categories. - - * UI/Contacts/UIxContactEditor.m (-dealloc): release - addressBookItem, item, componentAddressBook and contactCategories - ivars. - (-setContactCategories, -contactCategories): new accessors for - getting/setting the contact vcard categories. Transfers are made - in JSON. - (-contactCategoriesList): new accessor to return the list of - categories defined in the preferences, combined with the list of - those found int the contact. - - * SoObjects/SOGo/NSArray+Utilities.m (-mergedArrayWithArray:): new - method that returns the contact of the current array merged with - a unique copy of the objects of the array passed as parameter. - - * SoObjects/SOGo/SOGoUserDefaults.m (-{set}ContactsCategories): - renamed version of the "contactCategories" accessors. - - * SoObjects/SOGo/NSString+Utilities.m (-objectFromJSONString): new - method replacing the one below in a more generic way. I.e. the - method will accept any JSON object as input and not only - dictionaries. - - * SoObjects/SOGo/NSDictionary+BSJSONAdditions.m - (+dictionaryWithJSONString:): removed method, replaced with - the more generic -[NSString objectFromJSONString] in - NSString+Utilities. - -2010-10-25 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserDefaults.m (-setContactCategories) - (-contactCategories): new accessors for the - "SOGoContactCategories" user default. Accept/return an array of - strings. - - * SoObjects/Contacts/SOGoContactFolders.m - (-setDavContactCategories, -davContactCategories): new accessors - for the new - "{urn:ietf:params:xml:ns:inverse-dav}contact-categories" custom - property. Make use of the new methods above. - -2010-10-25 Francis Lachapelle - - * UI/Contacts/UIxContactFolderActions.m (-importLdifData:): use - lowercase keys for the contact dictionary. - -2010-10-21 Ludovic Marcotte - - * Changes required for http://sogo.nu/bugs/view.php?id=795 - -2010-10-19 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoContentObject.m (-davContentLength): fixed a - potential crash (see http://www.sogo.nu/bugs/view.php?id=915) by - evaluating the length differently. - -2010-10-15 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalListingActions.m (_fixDates:): restored - deleted code, see explanation in the code. - -2010-10-15 Ludovic Marcotte - - * SoObjects/SOGo/SOGoGCSFolder.m - remove the ACL cache - and moved it to SOGoCache with memcached support. Also - modified _setDisplayNameFromRow: to NOT use SOGoUser - instances and it is _very costly_ to do so. - * SoObjects/SOGo/SOGoCache.{h,m} - added support for - caching ACLs locally and in memcached - -2010-10-15 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContext.m (-getPath:ofFMID:withTableType:): - returns a found path IIF the fmid matches the current context. - Print an error message when the cause of mismatch is the lack of - sync with the indexing file. - (-getFoldersList:withFMDI:): returns a list IIF the FMID matches - the current context. - - * OpenChange/MAPIStoreMapping.m (+sharedMapping): singleton - constructor. - -2010-10-14 Wolfgang Sourdeau - - * UI/WebServerResources/generic.js: (triggerAjaxRequest): save the - content in the request object in the case a retry is needed. - (onCASRecoverIFrameLoaded): on the first retry, the content - parameter is passed back to "triggerAjaxRequest". - - * OpenChange/MAPIStoreMailContext.m - (-getMessageProperties:inRow:atURL:): new method. - (-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:): - added responses for PR_BODY, PR_HTML and fake responses for - PR_RTF_COMPRESSED, PR_RTF_IN_SYNC. - - * OpenChange/NSData+MAPIStore.m: new category module. - (-asBinaryInMemCtx:): new method returning a struct Binary_r. - - * OpenChange/MAPIStoreMailContext.m (-openMessage:atURL:): basic - implementation returning the "to" recipients only and a few - unchecked tags. - - * OpenChange/MAPIStoreContext.m (-openMessage:withMID:inFID:): - implemented method by resolving the url corresponding to the MID - and transferring the call to the new subclassable - "openMessage:atURL:" method. - (-openMessage:atURL:): new subclassable method. - (-createMessageWithMID:inFID:) - (-saveChangesInMessageWithMID:andFlags:): - (-submitMessageWithMID:andFlags:): - (-getProperties:inRow:withMID:type:): - (-getFID:byName:inParentFID:) - (-setPropertiesWithMID:type:inRow:) - (-deleteMessageWithMID:withFlags:): return MAPISTORE_ERROR for - those unimplemented methods. - (-getMessageProperties:inRow:atURL:): new subclassable method. - -2010-10-14 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (updateUnseenCount): used the - method charAt to read a string character instead of accessing it - as an array (was not supported by IE). - (saveAs): fixed a selection bug where only the first message would - be saved. - - * UI/WebServerResources/UIxAttendeesEditor.js - (performSearchCallback): improved autocompletion when changing - field before completion has returned. - - * UI/WebServerResources/UIxMailToSelection.js (fancyAddRow): when - using IE, the input element is now removed and created when cloning - a row. Also convert the onFocus and onBlur attributes to - JavaScript calls. - -2010-10-13 Wolfgang Sourdeau - - * OpenChange/MAPIStoreMapping.m (-registerURL:): commented method out. - (-_setupFixedMapping): new method that registers well-known ids - with well-known urls. - - * OpenChange/MAPIStoreContext.m (+contextFromURI:): no longer - register the URI mapping since the basic ones are always - registered. - (-setURI:andMemCtx:): new method, - replacing setMemCtx, which also stores the context uri in the new - "uri" ivar. - (-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:) - added assertions for context id searches. Make the context id - search without the "sogo://" prefix. - Added missing "break" statement, leading PR_FID to get the value - of PR_MID. - (-parentFID): simply returns fid... - (-getPath:ofFMID:withTableType:): implemented. - (-getFoldersList:withFMID:): new temporary store method, - implemented. - - * OpenChange/NSArray+MAPIStore.m: new category module. - (-asFoldersListInCtx:): new method returning a properly populated - "struct struct indexing_folders_list *" from an array of fids. - - * SoObjects/Mailer/SOGoMailNamespace.m (-toOneRelationshipKeys): - removed method since it seems that certain servers allow messages - to be put in certain "namespace folders" (like Courier IMAP). - - * SoObjects/Mailer/SOGoMailBaseObject.m (-imap4Connection): split - initialization of the connection is the new - "_createIMAP4Connection" method, make use of the cache below. - - * SoObjects/SOGo/SOGoCache.m (-registerIMAP4Connection:forKey:) - (-imap4ConnectionForKey:): new accessors that enabling the - per-request caching of IMAP4 connections, in a valid state or not. - -2010-10-13 Francis Lachapelle - - * SoObjects/SOGo/LDAPSource.m (_qualifierForUIDFilter:): removed - duplicated constraints in the filter when using bind fields. - - * UI/WebServerResources/HTMLElement.js (deselectAll): fixed a bug - where the properties where not removed from the proper element - (table instead of the tbody). - - * UI/Scheduler/NSArray+Scheduler.h: added index constants for - events fields. - (compareEventsCalendarNameAscending): new method to sort by - calendar name. - - * UI/Scheduler/UIxCalListingActions.m: now uses the above - mentioned constants. - (+initialize): added calendar name to events fields. - (eventsListAction): added sort by calendar name. - - * UI/WebServerResources/SchedulerUI.js (eventsListCallback): added - calendar name column. - (onCalendarSelectEvent): improved list selection. - -2010-10-12 Wolfgang Sourdeau - - * OpenChange/MAPIStoreContext.m (-setMemCtx): argument is now of - type "struct mapistore_context *". The new ldbCtx ivar is - iinitialized from here. - (-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:): - added support for PR_MESSAGE_CODEPAGE, PR_MESSAGE_LOCALE_ID, - PR_MESSAGE_FLAGS, PR_MESSAGE_SIZE, PR_MSG_STATUS, - PR_SUBJECT_PREFIX_UNICODE, PR_IMPORTANCE, PR_PRIORITY, - PR_SENSITIVITY. - Add registration of unregistered MID to ldb. - (-getFolderTableChildproperty:atURL:withTag:inFolder:withFID:): - Add registration of unregistered FID to ldb. - - * OpenChange/MAPIStoreCalendarContext.m: added support for case - PR_CREATION_TIME. - - * Scripts/cas-proxy-validate.py: new script that resolve - reentrancy issues occurring when using SOGo in CAS mode, when SOGo - requests a PGT from the CAS server. - -2010-10-11 Wolfgang Sourdeau - - * UI/WebServerResources/UIxAttendeesEditor.js: - (performSearchCallback): same as below. - - * UI/WebServerResources/SOGoAutoCompletion.js: - (SOGoAutoCompletionInterface.performSearchCallback): when the - match string is not found in "completeEmail" (due to a match with a - non-displayed attribute), don't put emphasize anything - graphically. - - * UI/WebServerResources/ContactsUI.js: - (onToolbarWriteToSelectedContacts): display an error message when - no contact is selected rather than composing a new message. Fixed - the method to only have one return point. - - * UI/WebServerResources/generic.js: (triggerAjaxRequest): added an - optional "attempt" argument that enables counting the number of - invocations for an ajax request. - (onCASRecoveryIFrameLoaded): don't repeat a failed request more - than once. - - * UI/WebServerResources/HTMLElement.js: - (Element.getSelectedNodesId): if the element has not - "selectedIds", set "selArray" to an empty array before checking - the "selectedElements" attribute. This enables the caller to not - check for a "null" return value. - -2010-10-08 Francis Lachapelle - - * UI/WebServerResources/generic.js (showConfirmDialog) - (showPromptDialog): keys for cached dialogs are now build from a - combination of the dialog title and label to avoid collisions. - - * UI/WebServerResources/SchedulerUI.js - (deleteEventFromViewCancel): new function loaded if the user - cancel the deletion of an event. It clears the array of events to - delete. - (onCalendarSelectEvent): don't clear the selection if the - contextual menu is going to appear. - - * UI/WebServerResources/ContactsUI.js (onDocumentKeydown): - improved character key identification to fix a bug with some - browsers. - - * UI/WebServerResources/MailerUI.js (onDocumentKeydown): idem. - - * UI/WebServerResources/SchedulerUI.js (onDocumentKeydown): idem. - -2010-10-08 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalDateSelector.m (-viewTimeZone): restored - accessor, required for the proper display of the minimonth. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-removeFolderSettings:withReference:): new method which removes - the settings for keys "FreeBusyExclusions", "FolderColors", - "FolderShowAlarms", "FolderShowTasks", "InactiveFolders", - "FolderSyncTags" and "FolderSynchronize". Code taken from - -[SOGoGCSFolder subscribeUser:reallyDo:]. - - * SoObjects/SOGo/SOGoGCSFolder.m - (-removeFolderSettings:withReference:): new overridable method - which enables the removal of user settings pertaining to a folder - and its type when deleting the folder or unsubscribing from it. - This implementation removes the folder reference from the - "FolderDisplayNames" key. - (-delete): make use of the new method above. - - * UI/WebServerResources/ContactsUI.js: (setEventsOnAddressBook) - enable the "dblclick" event on non-owned addressbooks, except the - public ones (owned by "nobody") - (onAddressBookModify): enable the renaming of non-owned - addressbooks, except the public ones - -2010-10-06 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUser.m (-_appendSystemMailAccount): check - that -[url scheme] and -[url query] are not null before the - comparison, since nil == 0 == NSOrderedSame.... - - * OpenChange/MAPIStoreContext.m: - (-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:) - added response for PR_ROW_TYPE (always 1) and PR_DEPTH (always 0). - (MAPIBoolValue, MAPILongValue, MAPILongLongValue): new helpers for - talloc'd C values. - -2010-10-05 Wolfgang Sourdeau - - * OpenChange/MAPIStoreTasksContext.m - (-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:) - implemented the following properties: PR_SUBJECT_UNICODE, - PR_NORMALIZED_SUBJECT_UNICODE, PR_CONVERSATION_TOPIC_UNICODE, - 0x8124000b, 0x81250040, PR_CREATION_TIME, - PR_MESSAGE_DELIVERY_TIME, PR_CLIENT_SUBMIT_TIME, - PR_LOCAL_COMMIT_TIME, PR_LAST_MODIFICATION_TIME, 0x81200003 as - well as stubs for 0x68340003, 0x683a0003, 0x68410003. - -2010-10-01 Wolfgang Sourdeau - - * OpenChange/MAPIStoreTasksContext.[hm]: new mapi context class - for tasks. - - * OpenChange/SOGoGCSFolder+MAPIStore.m (-componentKeysWithType:): - new method that return the keys of components corresponding to the - type passed as parameter. - - * OpenChange/SOGoGCSFolder+MAPIStore.[hm]: new category module. - - * OpenChange/MAPIStoreContext.m (-lookupObject): return nil when - the parsed URL is nil. - (-getFolderMessageKeys:): new subclass method designed to return - the appropriate "message" keys depending on the folder type. - - * SoObjects/SOGo/SOGoObject.m (-displayName): new accessor. - -2010-09-30 Wolfgang Sourdeau - - * UI/WebServerResources/UIxContactsUserFolders.js: - (onConfirmFolderSelection): fixed the regexp used when sanitizing - a username containing a user info field. - - * SoObjects/Mailer/SOGoMailAccount.m (-identities): the account - identities are now kept in an ivar until the account object is - released. Moreoever, we invoke the new - "_appendDelegatorIdentities" method when the account - nameInContainer is "0". - (-_appendDelegatorIdentities): new method that appends the mail - values of all delegators for the owner user. - - * UI/WebServerResources/MailerUI.js: (onMenuAccountDelegation): - new menu action for showing the new dialog below. - (onAccountIconMenuPrepareVisibility): new setup function. - - * UI/MailerUI/UIxMailAccountActions.m (-addDelegateAction) - (-removeDelegation): new action methods. - - * SoObjects/Mailer/SOGoUser+Mailer.m: new category module. - (mailDelegators, addMailDelegator, removeMailDelegator): new - accessors. - - * UI/MailerUI/UIxMailUserDelegationEditor.m: new window for - choosing account delegates - - * UI/WebServerResources/UIxMailUserDelegationEditor.js: new page - file, derived from UIxAclEditor.js. - - * SoObjects/SOGo/NSDictionary+BSJSONAdditions.m - (+[NSMutableDictionary dictionaryWithJSONString:]): return nil - directly if the json string is empty. - -2010-09-28 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUser.m (-_appendSystemMailAccount): cleaned - up method by using NSNumber as class for port and removing useless - tests on nil values. - - * UI/MailerUI/UIxMailFolderActions.m (-createFolderAction): - modified to make use of -[SOGoMailFolder create]. - - * SoObjects/Mailer/SOGoMailObject.m (-displayName): new accessor. - - * SoObjects/Mailer/SOGoMailFolder.m (-displayName): fixed accessor - to return the real folder name rather than the nameInContainer, - which is escaped and prefixed with "folder". - (-create): new method intented to align the operations on this - class to the ones in SOGoGCSFolder. - - * SoObjects/Contacts/SOGoContactGCSEntry.m (-displayName): new - accessor. - -2010-09-24 Ludovic Marcotte - - * Added caching support for LDAP-based groups - * SoObjects/SOGo/LDAPSource.m - Improved SafeLDAPCriteria() to properly escape '%' - * Dropped lots of unnecessary and worthless files - -2010-09-22 Francis Lachapelle - - * UI/WebServerResources/ContactsUI.js - (onToolbarDeleteSelectedContacts): delete the selected addressbook - if no contact is selected. Also checked if rows is defined - otherwise it would cause an error with Safari. - -2010-09-20 Ludovic Marcotte - - * SoObjects/SOGo/SOGoGCSFolder.m - (+folderWithSubscriptionReference:inContainer:) - We now consider the localIsSubscription when - building the folderName - -2010-09-20 Francis Lachapelle - - * SoObjects/SOGo/SOGoContentObject.m (-davContentLength): use UTF8 - encoding instead of latin1. - - * UI/WebServerResources/MailerUI.js (deleteWithoutTrash): new - function used when the messages can't be copied to the trash - folder (usually because the user's mailbox is overquota). - - * UI/WebServerResources/generic.js (showConfirmDialog): added new - argument variable to overwrite the default callback when user - clicks on the "No" button. - - * SoObjects/Mailer/SOGoMailFolder.m - (-deleteUIDs:useTrashFolder:inContext:): new "useTrashFolder" - argument variable that avoids moving the messages to the trash is - set to YES. - - * UI/MailerUI/UIxMailFolderActions.m (-batchDeleteAction): now - accepts a new form variable, "withoutTrash". - -2010-09-20 Wolfgang Sourdeau - - * SoObjects/SOGo/LDAPSource.m (-_searchAttributes): added - "IDField" to the search attributes for constructing addressbook - entries with a valid "c_name". - - * Tests/Integration/test-davacl.py - (DAVCalendarPublicAclTest.testCollectionAccessNormalUser): make - use of the fix below when removing the rights for the subscriber - user. - - * Tests/Integration/utilities.py (TestACLUtility.setupRights): - when "rights" is None or unspecified, the user is now deleted from - the access list. This enable default roles to take place for the - specified user, which is different from simply removing all its - rights. - -2010-09-17 Wolfgang Sourdeau - - * Main/SOGo+DAV.m (-davComplianceClassesInContext:): new method to - declares DAV capabilities. - -2010-09-17 Francis Lachapelle - - * SoObjects/SOGo/SOGoGCSFolder.m (-renameTo:): don't act as the - owner of the folder when user is a superuser. - (-_realAclsForUser:forObjectAtPath:): don't ignore "None" access - right in order to avoid rollbacking to default roles for the - calendar module (SOGoCalendarDefaultRoles) when the user has - specifically no rights. - -2010-09-14 Ludovic Marcotte - - * SoObjects/Appointments/SOGoUserFolder+Appointments.m - (_davSpecialCalendarURLWithName:): we do not return - the schedule-inbox-URL if the CAL is iCal and - the owner isn't the current user - -2010-09-14 Wolfgang Sourdeau - - * UI/Common/UIxPageFrame.m (-systemAdditionalJSFiles): new web - accessor for the new method below. - - * SoObjects/SOGo/SOGoDomainDefaults.m (-additionalJSFiles): new - accessor for the new "SOGoUIAdditionalJSFiles" user default. - -2010-09-13 Ludovic Marcotte - - * Updated Ukrainian translation - patch from - Oleksa Stasevych - * Updated Italian translation - patch from - Alessio Fattorini (alessio.fattorini@nethesis.it) - -2010-09-09 Ludovic Marcotte - - * Main/NSException+Stacktrace.m - reworked entirely - so we use the backtrace() function to generate an - interesting backtrace when an exception is raised - -2010-09-02 Wolfgang Sourdeau - - * UI/WebServerResources/generic.js: (recoverRequest): removed - obsolete function. - (onAjaxRequestStateChange): when a recovery request is required, - we now use the new "createCASRecoveryIFrame" function and the - "onCASRecoverIFrameLoaded" to handle the request. - - * UI/MainUI/SOGoUserHomePage.m (-recoverAction): new method, - returning a simple text-based response with HTTP code 200, - ensuring that the CAS authentication process has succeeded. - - * UI/MainUI/SOGoRootPage.m (-recoverAction): removed method. - -2010-09-02 Francis Lachapelle - - * UI/WebServerResources/generic.js (openMailTo): replaced calls to - encodeURI by encodeURIComponent to make sure symbols such as '?' - and '&' are encoded. - - * SoObjects/SOGo/NSDictionary+URL.m (-asURLParameters): escaped - keys and values using [NSString+misc stringByEscapingURL] from SOPE. - -2010-09-02 Wolfgang Sourdeau - - * UI/Contacts/UIxContactFoldersView.m (-allContactSearchAction): - inverted the contact/list condition test as the vlist test is - faster to execute. - - * UI/MailerUI/UIxMailView.m (_receiptMessageHeaderTo:): properly - escape the message subject in QP when needed. - - * UI/WebServerResources/UIxMailEditor.js: - (onMenuCheckReturnReceipt): the function has an event parameter - which we need. This fixes an exception occurring when clicking the - "Options" menu. - -2010-09-01 Wolfgang Sourdeau - - * Tests/Unit/SOGoTest.m (-run): fixed build on GNUstep >= 1.20. - - * UI/MailerUI/UIxMailView.m (-sendMDNAction): new action for - sending an MDN from the confirmation dialog. - - * UI/WebServerResources/MailerUI.js: (handleReturnReceipt): new - function, crafted to be executed both from the main window and the - popup mail window, where the value of the new "shouldAskReceipt" - field is evaluated and where a popup is displayed accordingly. - (onMessageConfirmMDN): new callback function for dialog mentionned - above. - - * UI/WebServerResources/JavascriptAPIExtensions.js: - (String.prototype.cssIdToHungarianId) new helper method that - compose the hungarian representation from an identifier where the - parts are separated with a dash, such as css class and id - identifiers. - - * UI/WebServerResources/UIxPreferences.js: added code for handling - prefs pertaining to return receipts. - - * UI/MailerUI/UIxMailView.m (-shouldAskReceipt): new accessor that - returns a JS bool string when the current message satisfy the - conditions required for asking the user whether to send a receipt - or not. Additionally, it will send the receipt automatically if - the message category falls in a category where the unconditonnal - send is required as per the user preferences. If "ask" or "always" - is the returned value, the "$MDNSend" flag is automatically set on - the IMAP message, since we want to avoid asking the user twice. - - * UI/PreferencesUI/UIxPreferences.m - (-_extractMainReceiptsPreferences:): new method for extracting - prefs pertaining to return receipts and save them in the user - prefs dictionary. - - * SoObjects/SOGo/SOGoUserDefaults.m (-setAllowUserReceipt:) - (-allowUserReceipt, setUserReceiptNonRecipientAction:) - (userReceiptNonRecipientAction) - (setUserReceiptOutsideDomainAction:) - (userReceiptOutsideDomainAction, setUserReceiptAnyAction:) - (userReceiptAnyAction): new accessors pertaining to return - receipts. - - * SoObjects/SOGo/SOGoUser.m (-_appendSystemMailAccount): append - preferences pertaining to return receipts. - -2010-08-31 Wolfgang Sourdeau - - * SoObjects/SOGo/NSScanner+BSJSONAdditions.m (-scanJSONValue:): - make use of NSUInteger rather than "unsigned int" for length - values. - (-scanJSONNumber:): now scan float numbers too. - - * UI/WebServerResources/UIxMailEditor.js - (onMenuCheckReturnReceipt): new function. - (getMenus): added entries for initializing the new "Options" menu - as well as the "Priority" menu. - - * UI/MailerUI/UIxMailEditor.m (-setReceipt, -receipt): new - accessors for the "receipt" hidden input field, meant to interract - the the "return receipt" entry in the "Options" menu. - (-setReplyTo, -replyTo): removed obsolete methods. - - * SoObjects/Mailer/SOGoDraftObject.m (-setHeaders:) - (-mimeHeaderMapWithHeaders:excluding:): added handling for the - "Disposition-Notification-To" header. - -2010-08-30 Wolfgang Sourdeau - - * Tools/SOGoToolRemoveDoubles.m, UI/MailerUI/UIxMailFormatter.m: - adapted classes to use "NSInteger" and "NSUInteger" instead of - "int" and "unsigned int" for compatibility with versions of - GNUstep base >= 1.20. - -2010-08-27 Francis Lachapelle - - * UI/WebServerResources/SchedulerUI.js (newBaseEventDIV): now adds - icon for event classification (confidential or private). - -2010-08-27 Wolfgang Sourdeau - - * UI/WebServerResources/ckeditor/: updated to v3.4. - - * UI/WebServerResources/ckeditor/{ckeditor_source.js,ckeditor_basic_source.js,ckeditor.pack}: - dropped useless files. - - * UI/WebServerResources/UIxPreferences.js: (appendSieveFilterRow): - we bind the "click" event on the activation checkbox rather than - "change", because a certain obsolete browser simply ignores it. - (updateFilterFromEditor): the "filter" argument is replaced with a - JSON-encoded string representing the filter in question. On a - certain obsolete browser, object referencing is so messed up that - closing the "creator" window will suddenly invalidate the created - objects. This solves the voodoo error message "The callee (server - [not server application]) is not available and disappeared; all - connections are invalid." when saving and closing. - (setupMailboxesFromJSON): new method, created due the same issue - as above, that enables the creation of an array from the response - received by the filter editing window. - (updateSieveFilterRow): we avoid removing the activation cb since - further update event would no longer be taken into account. - However we reset its "checked" status to the activation status of - the updated filter. - -2010-08-26 Wolfgang Sourdeau - - * SoObjects/SOGo/NSString+Utilities.m (-asQPSubjectString:): we - use "NGEncodeQuotedPrintableMime" instead of - "dataByEncodingQuotedPrintable" (NGQuotedPrintableCoding), as it's - more suited for email header fields. - - * SoObjects/Mailer/SOGoDraftObject.m (_quoteSpecials:): now work - on single strings. - (_quoteSpecialsInArray:): new method that offers the same - functionality as _quoteSpecials: did before the change above. - - * UI/MailerUI/UIxMailEditor.m (_emailFromIdentity:): the "from" - field is handled in SOGoDraftObject, therefore we don't need to - modify it here, especially since this will alterate the display. - - * Tests/Unit/TestNGMimeAddressHeaderFieldGenerator.m: new test - module for NGMimeAddressHeaderFieldGenerator. - -2010-08-25 Francis Lachapelle - - * UI/WebServerResources/SchedulerUI.js (copyEventToClipboard) - (copyEventFromClipboard, copyEventToPersonalCalendar, copyEvents): - new functions to allow the copy/paste of events. - (selectCalendarEvent): fixed various bugs with the selection of - events. - (onMenuCurrentViewPrepareVisibility): new function to disable the - delete option when no event is selected and to disable the copy - option when the event is owned by the user. - (onDocumentKeydown): added actions for Ctrl-C and Ctrl-V. - (deleteEvent): avoid showing a confirmation dialog with recurrent - events that the user can't erase. - - * UI/WebServerResources/SOGoDataTable.js: Overrided methods from - HTMLElement (selectRange, selectAll) to handle selection based on rows ID. - - - * UI/WebServerResources/MailerUI.js: selected messages are now - identified by their row ID to handle live loading. - - * UI/WebServerResources/HTMLElement.js (getSelectedNodesId): take - advantage of the selectedIds attribute. - (selectElement): also verify if the element is in the selectedIds - array. - (deselectAll): performance improvement; unselect elements based on - the _selected class. - - * UI/Scheduler/UIxAppointmentActions.m (-copyAction): new method - to copy the appointment to a different calendar. - - * SoObjects/Appointments/SOGoCalendarComponent.m - (-copyComponent:toFolder:): was copyToFolder. This new method - accepts a specific calendar component. - (-copyToFolder:): uses the above method with the current calendar. - -2010-08-25 Wolfgang Sourdeau - - * UI/Contacts/UIxListEditor.m: slightly improved code at various - places. - -2010-08-25 Ludovic Marcotte - - * It's now possible to use SSL or TLS for the - SOGoIMAPServer value. Also updated the documentation - to give samples. Fixed the "port" value save from - the preferences module. - -2010-08-24 Wolfgang Sourdeau - - * UI/WebServerResources/generic.js: (log): added a hack to enable - child windows to log messages in the log console of the main window. - - * SoObjects/Contacts/SOGoContactGCSList.m (-davAddressData): added - method. - -2010-08-24 Ludovic Marcotte - - * UI/Templates/PreferencesUI/UIxPreferences.wox - Enabled the UI widgets related to SSL/TLS. - SOPE *must* be updated for them to work properly. - -2010-08-23 Wolfgang Sourdeau - - * UI/WebServerResources/UIxMailEditor.js: (clickEditorSend): make - use of the iframe hack for receiving the POST's response and - interpret it as JSON, with error handling. - - * UI/WebServerResources/HTMLElement.js: (Element.allTextContent): - fetch the concatenated text content of the all the child nodes of - the element, recursively. - - * UI/WebServerResources/MailerUI.js: (initMailer): use - "UserSettings" only if we are the main window. - - * UI/MailerUI/UIxMailEditor.m (-sendAction): return a json - representation of the success of the operation, with a message if - an exception was returned. - - * UI/WebServerResources/MailerUI.js: (mailListToggleMessagesRead): - new method, spun from "mailListMarkMessage", which is basically - replaces in a more generic way by acting on all selected messages - in the msg list. - (mailListToggleMessagesFlagged): same as above for - "mailListFlagMessageToggle". - (onMenuToggleMessageRead, onMenuToggleMessageFlag): new menu - callback methods. - (onMarkMenuPrepareVisibility): new visibility method for the - "mark-menu". - (getMenus): activated the "mark as read" and "toggle flag" menu - options of the "mark menu". - -2010-08-20 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoDAVAuthenticator.m (-checkLogin:password:): - same as below. - - * SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): same as - below. - - * SoObjects/SOGo/SOGoGCSFolder.m (_deduceObjectNamesFromURLs:): - accept "@" chars encoded as "%40". - - * SoObjects/Contacts/SOGoContactFolders.m (-appendSystemSources): - append nothing if used from an iPhone. - - * SoObjects/SOGo/SOGoParentFolder.m (-appendPersonalSources): we - now that "owner" is always set properly from the init methods, no - need to invoke ownerInContext: anymore. - - * SoObjects/SOGo/WORequest+SOGo.m (-isMacOSXAddressBookApp): - renamed from "isAddressBookApp". - (-isIPhoneAddressBookApp): new method to detect whether the - request has been performed from the AB of iOS. - - * SoObjects/SOGo/SOGoFolder.m (-davEntityTag): we no return a - pseudo etag for collections for compatibility with the broken - Apple clients. - -2010-08-19 Francis Lachapelle - - * UI/WebServerResources/generic.js (showConfirmDialog): new - function to replace window.confirm(). - - * UI/WebServerResources/MailerUI.js (onMenuEmptyTrash): delete the - cache of the trash mailbox when called. - -2010-08-19 Wolfgang Sourdeau - - * Tools/sogo-ealarms-notify.m: new tool meant to be executed every - minute from cron for handling email alarms notifications. - - * SoObjects/Appointments/SOGoEMailAlarmsManager.[hm]: new GCS - aware singleton class for main email alarms operations on the db. - - * SoObjects/Mailer/SOGoMailFolder.m (-deleteUIDs:inContext:): make - the use of the "result" variable clearer by declaring it with a - proper class name and avoiding type confusion within the code. - - * UI/WebServerResources/MailerUI.js: (initDnd): removed useless - method. - (onMessageListPrepareVisibility): fixed a bug where the current - mailbox name would be attemptedly taken from the menu target, - while it really should have been deduced from - "Mailer.currentMailbox". - (configureDraggables): we now take all label nodes under - "#mailboxTree" into account and accept them as droppable when they - are not an account node. Also, we associate an account tag with - all of them. - (startDragging): we set the drag classname of the drag handle to - the correct account tag, to avoid visual feedback when hovering - mailboxes from another account. - - * UI/WebServerResources/UIxReminderEditor.js - (initialiseFormValues): added code to configure the "actionList" - if present (email alarms enabled). - (onEditorOkClick): modify the parent's reminderAction, - reminderEmailOrganizer, reminderEmailAttendees when email alarms - are available. "reminderAction" is conditionally set to "display" - otherwise. - - * UI/Scheduler/UIxReminderEditor.m (-emailAlarmsEnabled): new accessor. - - * SoObjects/Appointments/SOGoCalendarComponent.m - (-saveComponent:): invoke SOGoEMailAlarmsManager to register any - email alarms in the saved component. - (-PUTAction:): new super method to perform the same as the above. - (-prepareDelete): new super method. Invoke SOGoEMailAlarmsManager - to unregister any email alarms in the deleted component. - - * UI/Scheduler/UIxComponentEditor.m (-init): added the - "reminderAction", "reminderEmailOrganizer" and - "reminderEmailAttendees" ivars. - (_loadEMailAlarm:) new setup method for setting up parameters that - are specific to email alarms. - (_appendAttendees:toEmailAlarm:,_appendOrganizerToEmailAlarm:): - new method for adding "attendees" to email alarms. - (-emailAlarmsEnabled): new accessor. - - * SoObjects/Appointments/SOGoAppointmentObject.m (-prepareDelete): - we now invoke -[super prepareDelete] since SOGoCalendarComponent - now implements the method. - (-DELETEAction:): invoke -prepareDelete instead of - -prepareDeleteOccurence: since we want -[super prepareDelete] to - be invoked from here too. - - * Main/SOGo.m (-_checkMandatoryTables): added code to create the - alarms table if email alarms are enabled. - - * SoObjects/SOGo/SOGoSystemDefaults.m (-enableEMailAlarms): new - method for the "SOGoEnableEMailAlarms" user default. - -2010-08-19 Francis Lachapelle - - * UI/WebServerResources/generic.js (showPromptDialog): new - function to replace window.prompt(). - -2010-08-13 Wolfgang Sourdeau - - * SoObjects/Appointments/iCalEvent+SOGo.m (-quickRecord): we now - make use of the new -[iCalAlarm nextAlarmDate] method. - - * SoObjects/Appointments/iCalToDo+SOGo.m (-quickRecord): we now - make use of the new -[iCalAlarm nextAlarmDate] method. - -2010-08-12 Wolfgang Sourdeau - - * UI/WebServerResources/MailerUIdTree.js: (getMailboxNode): fixed - method to return unfolded nodes too. - - * UI/WebServerResources/MailerUI.js: (updateUnseenCount): renamed - from "updateStatusFolders" and improved to use DOM methods. - - * UI/WebServerResources/dtree.js: (Node): removed the "hasUnseen" - parameter. - - * UI/MailerUI/UIxMailAccountActions.m (-listMailboxes): make use - of the "application/json" content type in the response. - - * UI/MailerUI/UIxMailFolderActions.m: (-unseenCount): renamed and - moved implementation of the -[UIxMailAccountActions statusFolders] - method, splitted thereof since we now execute the method on all - mail folders. - - * UI/MailerUI/UIxMailMainFrame.m (-defaultColumnsOrder): removed - accessor, made obsolete by the new propagation mechanism of user - defaults. - (-getUnseenCountForAllFolders): new accessor that returns the - value below as a string value. - - * SoObjects/SOGo/SOGoDomainDefaults.m (-mailCheckAllUnseenCounts): - new method returning whether the unseen count of all mailboxes - should be checked. - - * SoObjects/Mailer/SOGoMailAccount.m (-updateFilters): when the - first login attempt fails, we must request a new password to the - authenticator (as intended originally). - - * UI/WebServerResources/generic.js: (onAjaxRequestStateChange): - when using CAS authentication and when the return code is 0 and - when the request status is 4, chances are that the initial ajax - request failed due to the expiration of the CAS ticket entry in - memcached. In FF 3.5 and above, a bug prevents the initial cookie - from being given back to the reauthentication redirect from an - AJAX request. Therefore we open a window that will do this for us - and will close one the authentication has succeeded again. - - * UI/MainUI/SOGoRootPage.m (-revoverAction): new fake action that - perform the CAS redirection and then trigger the respawn of the - initial request. - - * UI/Common/UIxPageFrame.m (-usesCASAuthentication): new accessor - used for recovery of redirected requests. - - * SoObjects/Contacts/SOGoFolder+CardDAV.m: - (_appendObject:withBaseURL:toREPORTResponse:): moved method here - from SOGOContact{GCS,Source}Folder since its implementation was - mostly the same in the two classes and never invoked anywhere - else. - Modified to return both "address-data" and "addressbook-data" - (draft rev < 4) unless we parse the requested props appropriately. - - * SoObjects/Contacts/SOGoContactGCSFolder.m - (-davAddressbookMultiget): new method that responds the - CardDAV addressbook-multiget report. - (-davSQLFieldsTable): new overriden method that adds support for - the CardDAV address-data property. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-davCalendarMultiget:): make use of the new method below. - - * SoObjects/SOGo/SOGoGCSFolder.m - (-performMultigetInContext:inNamespace:): collection-type - independent form of -[SOGoAppointmentFolder davCalendarMultiget:], - moved along with all its private methods. - - * SoObjects/Contacts/SOGoContactFolders.m - (-toManyRelationshipKeys): new overriden method to return only the - personal addressbook when the request is performed by - AddressBook.app. - -2010-08-11 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentObject.m - Removed all the old calendar-schedule code and - instead, implemented calendar-auto-schedule. The old - code will always succeed and the new code reuses - all the business logic used for the Web interface - of SOGo. - * SOPE/NGCards/iCalRecurrenceRule.m - Modified setInterval: so that when the value is - equal to 1, we do NOT set it. - * UI/WebServerResources/UIxAclEditor.js - In addUserCallback(), we remove the owner of the - resource if it was added. This fixes #682. - * We now correctly encode/decode the '&' - character in the mailbox name when copying and moving - messages and also when opening mailboxes. This - fixes #716. - -2010-08-11 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (refreshMessage): if the - current mailbox is the sent folder, refresh the mailbox instead of - only the message. - -2010-08-11 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUI.js: (initCalendars): avoid - setting "showCompletedTasks" when in a popup, since this needs - access to a UserDefaults dictionary which is not present nor event - required. - - * Main/SOGo+DAV.m (-davCurrentUserPrincipal): new method - implementing the "{DAV:}current-user-principal" property. - - * SoObjects/Contacts/SOGoContactGCSEntry.m (-davAddressData): new - DAV property accessor returning the card content. - - * SoObjects/SOGo/WORequest+SOGo.m (-isAddressBookApp): new - (hackish) test method to determine whether the client is Apple's - AddressBook.app. - - * UI/Common/UIxPageFrame.m (_dictionaryWithKeys:fromSource:): - set an NSNull as value for keys which return no results, in order - to avoid an NSInvalidArgumentException. - -2010-08-10 Francis Lachapelle - - * UI/WebServerResources/generic.js (showAlertDialog): new function - to replace window.alert(). - -2010-08-09 Wolfgang Sourdeau - - * UI/WebServerResources/MailerUI.js (openMailbox): removed the - "updateStatus" parameter, which is never used. - - * UI/WebServerResources/generic.js (log): fixed handling of - messages ending with "\n". - - * UI/Common/UIxPageFrame.m (-setUserDefaultsKeys:) - (-hasUserDefaultsKeys, -setUserSettingsKeys:) - (-hasUserSettingsKeys): new accessor for determining explicitly - which user defaults/settings keys are returned. The new - corresponding ivars are "udKeys" and "usKeys" respectively. - (-userDefaults, -userSettings): rewrote methods to create a - dictionary containing only the requested keys (see above). Since - the source are now explicitly queried, the values can now be - inherited from the domain and system defaults. - - * UI/WebServerResources/UIxFilterEditor.js (loadMailboxes): the - first account is now always identitied with "0", therefore we no - longer need the "firstMailAccount" variable. - - * UI/PreferencesUI/UIxFilterEditor.m (-firstMailAccount): removed - osbolete accessor. - - * UI/WebServerResources/UIxPreferences.js: (onMailAccountAdd) - (onMailAccountDelete): set "hasChanged" to 1 when triggered. - (onColorPickerChoice): don't invoke "onChoiceChanged" as it is an - event callback. - -2010-08-06 Wolfgang Sourdeau - - * UI/WebServerResources/generic.js (reloadPreferences): dropped - useless method. - - * UI/PreferencesUI/UIxPreferences.m (_extractAuxiliaryAccounts:): - since we no longer transfer the user password to the client, the - old password has to be fetched from the old account unless a new - password has been set. - (-mailAccounts): we now strip the passwords from the returned mail - accounts, to avoid transferring them uselessly with a risk of - keeping them in cache. - - * UI/WebServerResources/MailerUI.js: (initMailboxTree): make use - of the new class below and drop all code related to keeping track - of active requests. - - * UI/WebServerResources/generic.js: (AjaxRequestsChain): new class - that implements the chaining of ajax requests. - - * UI/WebServerResources/MailerUI.js: (dropAction): ensure that the - destination mailbox is in the same mail account as the message - being dragged. - (getMenus): arranged menu descriptions as as single statement. - Added "prepareVisibility" callbacks for the "messageListMenu", - "messagesListMenu" and "messageContentMenu" (move/copy ops) and - "inboxIconMenu", "trashIconMenu", "mailboxIconMenu" menus (folder - sharing). - (onMessageListMenuPrepareVisibility): new vis. callback designed - to attach the right folder submenu to the copy and move ops. - (onFolderMenuPrepareVisibility): new vis. cb for disabling the - share of folders for auxiliary accounts. - (updateMailboxMenus): simplified method by removing the first - level of submenus, where the account names used to be. - (openInbox): "openMailbox" only takes 3 parameters. Using "null" - instead of "false" was also pretty lame. - (updateStatusFolders): take the mailbox name as parameter and - arranged for multiple mail accounts. In particular, "unseenCount" - is now a class identifier rather than an element id. - (markMailInWindow): make use of - MailerUIdTreeExtension.getMailboxNode. - - * UI/WebServerResources/ContactsUI.js - (onToolbarDeleteSelectedContacts): use translated labels. - - * UI/WebServerResources/MailerUIdTree.js: - (MailerUIdTreeExtension._addFolderNode): no longer set a SPAN - arroung the unseen count. - (MailerUIdTreeExtension.getMailboxNode): new method returning the - DIV.dTreeNode corresponding to the mailbox name passed as - parameter. - - * UI/WebServerResources/UIxPreferences.js: (_setupEvents): no - longer take any parameter, which simplifies the method, as - removing the "change" observers on input field is not useful. - (initMailAccounts): new method that parses the mail accounts JSON - dictionary, populates the mail account UL and setup related - events. - (onMailAccountInfoChange, onMailIdentityInfoChange) - (onMailIdentitySignatureClick, onMailIdentitySignatureOK) - (createMailAccountLI, onMailAccountEntryClick, displayMailAccount) - (displayAccountSignature, createMailAccount) - (onMailAccountAdd, onMailAccountDelete, saveMailAccounts) - (compactMailAccounts): new methods completing the above. - - * UI/PreferencesUI/UIxPreferences.m (-identitiesList) - (-itemIdentityText, -signature, -setSignature): removed obsolete - methods. - (-defaultAction): when updating filters, we now only need to query - the "0" account since accounts are no longer identified by "name". - (-mailAuxiliaryUserAccountsEnabled): new bool method. - (-setMailAccounts): new accessor that decodes the new mail - accounts dictionary in JSON format and validates it prior to save - it in the user defaults. - (-mailAccounts): new accessor. - - * UI/MailerUI/UIxMailFolderActions.m (_setFolderPurpose:): we now - use the corresponding methods on the SOGoUserDefaults instance - rather than in the user settings (old bug) when setting folders - for the main account. Additionally, we now handle the entries from - auxiliary accounts. - - * UI/MailerUI/UIxMailEditor.m (-fromEmails): the list of - identities is now taken from the corresponding mail account dict. - - * SoObjects/Mailer/SOGoMailForward.m (-signature): same as below. - - * UI/MailerUI/UIxMailAccountActions.m (-composeAction): same as below. - - * SoObjects/Mailer/SOGoDraftObject.m (-fetchMailForForwarding): - the signature is now taken from the original mail's corresponding - account. - - * SoObjects/Mailer/SOGoMailFolder.m - (-copyUIDs:toFolder:inContext:): we now ensure that the operation - is not attempted on two separate accounts. - (-httpURLForAdvisoryToUser): the returned mail account is now - always "0". - - * SoObjects/Mailer/SOGoMailBaseObject.m (-imap4URL): we now add - the "tls=YES" url parameter if the corresponding account - encryption is set to "tls". - (-imap4Login): removed useless method. - (-imap4PasswordRenewed:): now a proxy to the same method on the - instance account folder. - - * SoObjects/Mailer/SOGoMailAccount.m (-identities, -signature) - (encryption): new helper methods that return the corresponding key - in the appropriate mail account dictionary. - (-_migrateFolderWithPurpose:): moved method in SOGoMailAccount.m. - (-_userFolderNameWithPurpose): rewrote method to make use of the - mail account dictionaries. Fallback on the main account of the - auxiliary ones do not have the required entry. - (-imap4PasswordRenewed:): moved method from SOGoMailBaseObject.m - and use the "password" entry in auxiliary account dicts depending - on "nameInContainer". - (-imap4LoginFromHTTP, -imap4Login): removed useless methods. - - * SoObjects/SOGo/SOGoUser.m (-mailAccounts): we now conditionnally - append the array of auxiliary user accounts, if enabled in the - domain defaults. - (-_appendSystemMailAccount): the user main signature and the - sent, drafts, trash folder location are now stored in the account - dictionaries. Added migration code from us to ud from - SOGoMailAccount.m. - - * SoObjects/SOGo/SOGoDomainDefaults.m - (-mailAuxiliaryUserAccountsEnabled): new method returning a BOOL - describing whether the domain users can access auxiliary mail - accounts. - - * SoObjects/SOGo/SOGoUserDefaults.m (-setAuxiliaryMailAccounts:) - (auxiliaryMailAccounts): new methods that receives and returns an - NSArray of NSDictionary describing the user's auxiliary mail - accounts. - - * UI/WebServerResources/HTMLElement.js: (deselectAll): if the - container has a "selectedElements" attribute, then it's no longer - required to wander through the "selectedIds" attribute. This fixes - a strange bug on IE when modifying the selection on LI lists. - -2010-08-05 Francis Lachapelle - - * UI/WebServerResources/SOGoResizableTable.js - (computeColumnsWidths): was previous part of saveColumnsState. - Used when the user hasn't modify the columns widths but the local - "ratios" hash still need to be built. - -2010-08-04 Francis Lachapelle - - * UI/WebServerResources/generic.js (createDialog): when the - position class is set to "none", the dialog will be modal (with a - dimmed background). - - * UI/WebServerResources/ContactsUI.js: replaced window.confirm by - a CSS modal dialog. - -2010-08-04 Wolfgang Sourdeau - - * UI/WebServerResources/RowEditionController.js: - (RowEditionController.startEditing): avoid setting the whole - element class. Make use of addClassName/removeClassName instead, - so that classes added/removed via other evt handlers are not - ignored. - -2010-08-03 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUser.m (-_appendSystemMailAccount): new - private method with the mailbox code split from -[mailAccounts]. - - * UI/WebServerResources/MailerUI.js (composeNewMessage): the first - account is always identified as "0". - - * UI/MailerUI/UIxMailMainFrame.m (-mailAccounts): we now return - tje JSON rep. of a simple and flat array containing the account - display names, since the account are represented with an integer - index. - (-inboxData): we directly fetch the first mail account by using - the "0" key. - (-composeAction): same as above. - - * SoObjects/Mailer/SOGoMailAccount.m (-imap4URLString): the - "nameInContainer" now represents the index of the current account - in the array of user mail accounts, which simplifies this method. - We also handle the "encryption" key, albeit currently unused, and - we now add the port to the url as needed. - (-shortTitle): removed method. - (-davDisplayName): we only need to return the "name" key of the - current account. - - * SoObjects/Mailer/SOGoMailAccounts.m (-mailAccounts): new utility - method that returns the mail account dictionaries corresponding to - the owner. - (-toManyRelationshipKeys): we now identify mail accounts via their - index in the array of accounts, since the order will never vary, - this simplifies the code. - (-lookupName:inContext:acquire:): same as the above. - - * UI/WebServerResources/RowEditionController.js: - RowEditionController.startEditing: keep the "_selected" class - when starting edition, if exists. - RowEditionController.acceptEdition: revert the changes if the new - value is an empty string (might be wrong, though). - RowEditionController.onInputKeyDown: we now handle the tab key - too. - -2010-08-03 Ludovic Marcotte - - * Applied patch for bug #690 - * Applied patch for bug #703 - * Applied patch for bug #714 - * Updated Ukrainian translation - patch from - Oleksa Stasevych - -2010-08-02 Wolfgang Sourdeau - - * UI/WebServerResources/RowEditionController.js: new class module - that implements the handling of editable list items. - - * SoObjects/SOGo/NSNumber+Utilities.m (-jsonRepresentation): - returns "true" or "false" when the initial return value is "YES" - or "NO". - -2010-07-30 Francis Lachapelle - - * UI/WebServerResources/SchedulerUI.js (deleteEvent): improved - the function to delete all selected events cells. - (onSelectAll): improved the function to select all events cells. - (onDocumentKeydown): select all elements upon ctrl-A. - (onCalendarSelectEvent): allow multiple selections. - - * UI/WebServerResources/HTMLElement.js (selectAll): new method to - select all entries of a list or a table. - - * UI/WebServerResources/scriptaculous/dragdrop.js (initDrag): - avoid stopping the event propagation so the blur event is properly - fired on the search input field when it isfocused. - -2010-07-28 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (deleteCachedMailboxByType, - deletedCachedMailbox): new methods to update the datasources - (mailboxes) cache. - - * UI/WebServerResources/UIxComponentEditor.js (getCalendarOwner): - new function that returns the event organizer or the calendar - owner in case of an event with no organizer yet. - - * UI/Scheduler/UIxComponentEditor.m (-organizerProfile): was - jsonOrganizer. Now caches the resulting dictionary in an ivar. - (-calendarOwnerList): new method called from the wox template and - use to display the event organizer in the edition window of the - attendees. - -2010-07-27 Francis Lachapelle - - * UI/WebServerResources/SOGoAutoCompletion.js - (performSearchCallback): minor change on when the popup menu has - to be positioned differently. - -2010-07-22 Ludovic Marcotte - - * Added Migration/Horde/* - scripts used to migrate - the address books and email signatures from Horde to - the SOGo database. - -2010-07-21 Wolfgang Sourdeau - - * UI/WebServerResources/ContactsUI.js: (dropSelectedContacts): - reenabled copying contacts from system (LDAP) addressbooks. - -2010-07-20 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserFolder.m (_subFoldersFromFolder:): we - need to validate the current user's access to the listed folders - again because of the recent changes on SOGoParentFolder. - - * UI/Contacts/UIxContactFoldersView.m (_subFoldersFromFolder:): - removed unused method. - -2010-07-16 Wolfgang Sourdeau - - * UI/Contacts/UIxContactEditor.m (-photosURL): copy of the method - below. - - * UI/Contacts/UIxContactView.m (-photosURL): new access that - returns the URL to the photos contained in the VCARD, whether - inline or not. - (-tabSelection): removed unused method. - - * SoObjects/Contacts/SOGoContactGCSEntry.m - (-lookupName:inContext:acquire:): new overriden method to handle - "photoX" lookups and return the corrsponding SOGoContactEntryPhoto - instance, if exists. - - * SoObjects/Contacts/SOGoContactEntryPhoto.[hm]: new controller - class for VCARD PHOTO objects. - - * SoObjects/SOGo/SOGoContentObject.m (-davContentLength): fixed a - crash occurring with certain versions of GNUstep by using - NSISOLatin1StringEncoding instead of UTF8. This is actually the - correct way of doing things anyway since we want to return the - length in bytes and not in characters. - -2010-07-16 Ludovic Marcotte - - * UI/Contacts/UIxContactView.m - In secondaryEmail, we make sure that we loop - in all available email address and we pick the - first one that doesn't match the primaryEmail - * UI/Contacts/UIxContactEditor.m - UI/Contacts/UIxContactView.m - we make sure, - when excluding a type, that we reset the - local variable to nil since we might exclude - all values in our array. - -2010-07-16 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentObject.m - (_handleUpdatedEvent:fromOldEvent:): added handling of delegation - chains when resetting the participation status of the attendees. - Fixes #688. - -2010-07-15 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUser.m (-personalCalendarFolderInContext:): - we now make use of -[SOGoParentFolder - lookupPersonalFolder:ignoringRights:] with @"personal" and YES as - arguments. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-lookupCalendarFolderForUID:): removed useless method, which can - be replaced with -[SOGoUser personalCalendarFolderInContext:]. - - * UI/Scheduler/UIxCalListingActions.m - (_aptFolder:withClientObject:): removed unused method. - (_fixDates:): apply fix also for monthly views. - - * UI/WebServerResources/UIxAppointmentEditor.js - (onComposeToAllAttendees): take the status image DIV into account - when detecting the user fullnames. - (onComposeToUndecidedAttendees): same as above. - - * Tests/Integration/test-davacl.py - (DAVCalendarPublicAclTest.testCollectionAccessNormalUser): print - the amount of received hrefs. - - * SoObjects/Appointments/SOGoAppointmentFolders.m - (-folderObjectKeys): we now check the "AccessObject" - right on the returned folders to determine whether their ICS or - XML version should be accessible. - - * SoObjects/SOGo/SOGoParentFolder.m - (_fetchPersonalFolders:withChannel:): we no longer check access - rights from here as this method is too low level and prevent other - mechanisms from working properly. - (-lookupPersonalFolder:ignoringRights:): new method enabling the - lookup of a user's personal folders only and offering the choice - of respecting (or not) the active user's permission before - returning it. - (-lookupName:inContext:acquire:): we now make use of the above - method when looking up personal folders ("personal" or not). - (-toManyRelationShipKeys): same as lookupName... above. - - * SoObjects/SOGo/SOGoObject.m (-ignoreRights): new utility method - that determines whether the current object must check access - rights on subobjects. - -2010-07-14 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m (-aclSQLListingFilter): return an - empty string when the active user is a super user. - (-initializeQuickTablesAclsInContext:): set - "userCanAccessAllObjects" to YES also when the active user is a - super user. - - * Tests/Integration/test-davacl.py - (DAVCalendarAclTest._testEventIsSecureVersion): accept a differing - SUMMARY since it will always change depending on the user's - language and is a pain to adapt. - (DAVCalendarPublicAclTest.testCollectionAccessNormalUser): added - code to accept and handle the XML and ICS calendar variants. - (DAVCalendarSuperUserAclTest.__init__): new test access class for - ensuring that super users have full, inconditionnal and complete - access to simple user's collections - -2010-07-13 Wolfgang Sourdeau - - * Tests/Integration/test-put.py: new test module executing X puts - based on a number of auto-generated events configured in config.py - - * Tests/Integration/ev_generator.py: new module producing - auto-generated events based on a number of days - - * Tests/Integration/sogotests.py: new module overriding - certain methods from the "unittest" module in order to - automatically execute the tests in verbose mode and by displaying - a timing of the test execution. - - * Tests/Integration/test-webdavsync.py (WebdavSyncTest.test): - adapted to suit the new handling of empty collections in SOGo - -2010-07-09 Francis Lachapelle - - * UI/WebServerResources/UIxAttendeesEditor.js (onContactKeydown): - reset left scroll uppon autocompletion (fix for IE). - (onAttendeeResultClick): idem. - (prepareAttendees): add the organizer at the top of the attendees list. - - * UI/Scheduler/UIxComponentEditor.m (-jsonOrganizer): new method - that returns a JSON representation of a dictionary describing the - organizer of the event. - -2010-07-07 Francis Lachapelle - - * UI/WebServerResources/HTMLInputElement.js: renamed valueAsDate - as inputAsDate since it conflicts with the DOM attribute with the same - name in HTML5. - -2010-07-06 Francis Lachapelle - - * SoObjects/SOGo/NSString+Utilities.m (-_setupCSSEscaping): added - the single quote (') in the list of characters to escape. - - * UI/WebServerResources/JavascriptAPIExtensions.js - (asCSSIdentifier): idem. - -2010-07-05 Francis Lachapelle - - * UI/WebServerResources/UIxContactEditor.js - (validateContactEditor): added validation of birthdate. - - * UI/WebServerResources/SchedulerUI.js (onCalendarModify): fixed - proper identification of web calendars and adjusted height of - popup window. - -2010-07-04 Ludovic Marcotte - - * In the Contacts module, we prioritize the - WORK number while excluding the FAX one in case - we see the latter before the former. - -2010-07-01 Ludovic Marcotte - - * In the Contacts module, improved the label - of the birthday field. - -2010-06-30 Ludovic Marcotte - - * When displaying or editing cards, we make sure - we properly fallback to the homeURL field when - a work value is defined but we also have one other - untagged value defined. - -2010-06-30 Francis Lachapelle - - * UI/MailerUI/UIxMailEditor.m (-localeCode): new method that - returns the language two-letter code. Used to set the language in - the CKEditor instance in JavaScript. - - * UI/PreferencesUI/UIxPreferences.m (-localeCode): idem. - -2010-06-30 Ludovic Marcotte - - * When displaying cards, we now make sure that - the "service" is non-empty prior creating the - proper field value. - -2010-06-30 Francis Lachapelle - - * UI/WebServerResources/UIxPreferences.js (savePreferences): added - email validation of forward address (if enabled). - - * UI/WebServerResources/MailerUI.js (onDocumentKeydown): improved - scrolling when using the arrows keys. - -2010-06-29 Francis Lachapelle - - * UI/WebServerResources/UIxCalendarProperties.js - (onLoadCalendarProperties): we now make use of tabs in the - properties window. - - * UI/Scheduler/UIxCalendarProperties.m (-isPublicAccessEnabled): - new method, copied from Common/UIxAclEditor.m. - (-_basePublicCalDAVURL): new method that return the public base - URL of the calendar. - (-publicCalDavURL, -publicWebDavICSURL, -publicWebDavXMLURL): new - methods to return the various public URLs associated to the calendar. - - * SoObjects/SOGo/SOGoGCSFolder.m (-publicDavURL): new method to - return the public DAV URL of the folder. - -2010-06-28 Ludovic Marcotte - - * SOPE/sope-patchset-r1664.diff - Fixed the LF/CRLF encoding issue in NGSmtpClient.m - * SOPE/sope-patchset-r1664.diff - We now also consider https connections for WOHTTPURLHandle.m - * SoObjects/Appointments/SOGoWebAppointmentFolder.m - (-loadWebCalendar): - Modified so that we use SOPE's WOHTTPURLHandle class instead - of the NSURL code to fetch remote ICS calendars. This allow - use to support SSL by using SOPE class instead of the SSL - bundle of GNUstep (which is generally not available anywhere). - -2010-06-28 Francis Lachapelle - - * UI/Contacts/UIxContactEditor.m (-initSnapshot, -_saveSnapshot): - added support for "extended" work/home addresses. - -2010-06-25 Francis Lachapelle - - * UI/MailerUI/UIxMailMainFrame.m (-inboxData): new method used to - avoid an AJAX call when first loading the webmail module. It - returns a dictionary with the UIDs of the inbox folder as well as - the headers of the first few messages. - - * UI/MailerUI/UIxMailListActions.m (-imap4SortOrdering): fixed an - issue that would not save the sorting state when matching the - default sort key but not the sort direction. - (-getUIDsAndHeadersInFolder:): new method that returns all UIDs of - a mail folder and the headers of the first corresponding messages. - (-getHeadersForUIDs:inFolder:): was getHeadersAction. It now - returns an array of arrays instead of an array of - dictionaries. The first array contains the previous dictionary - keys so we can easily reconstruct a dictionary in JavaScript. - - * UI/MailerUI/UIxMailEditor.m (-setSourceUID:, -sourceUID, - -setSourceFolder:, -sourceFolder): new methods to keep track of - the source folder replying or forwarding a message. - (-sendAction): now calls the JavaScript function refreshMessage - instead of refreshCurrentMailbox. - - * SoObjects/Mailer/SOGoDraftObject.m (-setSourceFolder:, - -setSourceFolderWithMailObject:, -sourceFolder): new methods to - keep track of the source folder replying or forwarding a message. - (-fetchMailForEditing:): fixed the message UID value. - - * UI/WebServerResources/SOGoMailDataSource.js (remove): new - function that was integrated to invalidate. There are now - splitted. - (init): new function to initialize the data source with - pre-fetched uids and headers. - (getData): if the source is not yet loaded, the function will now - be called by the method _loadCallback. - (_getRemoteDataCallback): headers received from the server are no - formatted as a hash but as an array with the first entry - corresponding the previous hash keys. - - * UI/WebServerResources/SOGoDataTable.js (initSource): was - setSource which was redefined to received a data source as - argument. - (invalidate): new function to refresh a single row. - - * UI/WebServerResources/MailerUI.js (openMailbox): added caching - of data sources (IMAP folders). The previous selection is now - restored when chaning folders. - (loadMessageCallback): the window is no longer reloaded if the - message doesn't exist; only the proper row is removed. - (refreshMessage): new function called after sending a message. - (onMailboxMenuMove, onMailboxMenuCopy): remove cache of target - folder. - -2010-06-24 Francis Lachapelle - - * UI/MailerUI/UIxMailEditor.m (-sendAction): trigger the new - JavaScript function refreshMessage() instead of - refreshCurrentFolder() so we only refresh one row. - -2010-06-23 Francis Lachapelle - - * SoObjects/SOGo/SOGoUserDefaults.m (-language): verify that the - language is part of the supported languages of the system configuration. - - * UI/Scheduler/UIxCalMonthView.m (-init): retrieve the locale - associated to the user's language. - -2010-06-23 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m (-_lastModified): new method that - returns the last modified timestamp of the folder. Taken from - previous implementation of davCollectionTag. - (-davCollectionTag): make use of the new method above. - (_isValidSyncToken:): new method that perform a real validation of - the sync token passed as parameter. - (-davSyncCollection): make use of the new method above. - -2010-06-22 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoDAVAuthenticator.m (-checkLogin:andPassword:) - we save the CAS session information to the cache after a - successful authentication/validation. - -2010-06-18 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoDAVAuthenticator.m (-checkLogin:andPassword:) - (imapPasswordInContext:forServer:forceRenew:): when using CAS - authentication, make use of the password as a CAS ticket instead - of as identifier, since we don't make use of those in DAV. - -2010-06-17 Francis Lachapelle - - * UI/WebServerResources/UIxMailToSelection.js - (addressFieldLostFocus): improved intelligence when parsing - recipient. - (expandContactListCallback): we remove the container attribute to - avoid triggering the event autocompletion:changedlist once again. - - * UI/WebServerResources/SOGoAutoCompletion.js (bind): remove the - container attribute for the same reason. - -2010-06-17 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolders.m - (-reloadWebCalendars:): invoke -[self - _migrateWebCalendarsSettings] for when we are executing from a - non-Calendar module. - -2010-06-16 Francis Lachapelle - - * UI/WebServerResources/UIxListEditor.js (onDocumentKeydown): - submit form when pressing the return key. - - * UI/WebServerResources/UIxContactEditor.js (onDocumentKeydown): - idem. - - * UI/WebServerResources/SOGoAutoCompletion.js - (performSearchCallback): fixed the position of the popup menu when - the input is within a relatively positioned div (mainly the - contacts list editor). - -2010-06-16 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalListingActions.m - (_fillBlocks:withEvent:withNumber:): "c_iscycle" and "c_recurrence_id" - have position 13 and 15 instead of 12 and 13, respectively. - - * SoObjects/Mailer/SOGoDraftObject.m - (_purgeRecipients:fromAddresses:): we need to compare the email - addresses case-insensitively. - -2010-06-15 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoDAVAuthenticator.m (-checkLogin:password:): - perform authentication in LDAP inconditionnally and fallback on - CAS if enabled for DAV. - -2010-06-14 Francis Lachapelle - - * UI/WebServerResources/UIxPreferences.js: Fixed a bug when saving - the preferences while some of the calendar categories are still editable. - -2010-06-11 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalMainActions.m (-saveUrl:forCalendar:): - removed method since obsoleted by the code below. - - * SoObjects/Appointments/SOGoWebAppointmentFolder.m - (-loadWebCalendar): removed the URL parameter since it's - read-only. - (-delete): simplified method. - - * SoObjects/Appointments/SOGoAppointmentFolders.m - (-newWebCalendarWithName:atURL:): new self-explicit method. - (-reloadWebCalendars): we now make use of the @"WebCalendar" name - as a property key. - (_migrateWebCalendarsSettings): new method that converts - WebCalendar entry keys in a format suitable for use as a property - key. - - * UI/Scheduler/UIxCalFilterPanel.m (+initialize): commented out - the "All Events" option as this could cause a delay too long in IE - when drawing the list. - -2010-06-10 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoDAVAuthenticator.m (-checkLogin:password:): - use CAS in proxy mode when SOGoDAVAuthenticationType is set to - "cas". - (-imapPasswordInContext:forServer:forceRenew:): now a copy of the - equivalent method in SOGoWebAuthenticator, when the above - condition is true. - - * UI/Common/UIxPageFrame.m (-logoffPath): reverted previous change - as we now make use of the logoffAction to redirect to the CAS - logout url. - - * SoObjects/SOGo/SOGoSystemDefaults.m (-davAuthenticationType): - new method similar to -authenticationType. Currently used for CAS - or non-CAS authentication. - - * UI/MainUI/SOGoUserHomePage.m (-logoffAction): split method in - smaller submethods for the sake of clarity. Also, we provide as - "CAS" mode where the redirection is made to the CAS logout page. - - * SoObjects/SOGo/SOGoCASSession.m - (+CASSessionWithTicket:fromProxy:): added a new "fromProxy" parameter. - (+CASSessionWithIdentifier:fromProxy:): idem. - (-fetchData): if the session is used by a proxy client, we invoke - "proxyValidate" rather than "serviceValidate". - - * SoObjects/SOGo/SOGoDAVAuthenticator.m (-userInContext:): - reorganized method. - - * SoObjects/SOGo/NSString+Utilities.m - (-composeURLWithAction:parameters:andHash:): don't attempt to add - parameters if the parameters argument is empty. - - * UI/Common/UIxPageFrame.m (-canLogoff)): return YES when the - authentication type is set to "cas" and SOGoCASLogoutEnabled is - set. - (-logoffPath): return an href to the CAS service logout URL when - using "cas" as authentication type. - - * SoObjects/SOGo/SOGoSystemDefaults.m (-CASLogoutEnabled): new - method that returns whether the "SOGoCASLogoutEnabled" ud is set. - -2010-06-09 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserFolder.m (_subFoldersFromFolder:): - restore the "owner" record that went bugously missing a few days - ago. - - * SoObjects/Appointments/SOGoAppointmentFolderObject.m - (-_folderCalendars): we now fetch the records only covering the - value of SOGoDAVCalendarStartTimeLimit in days with the current - date as the middle of the time range. - -2010-06-08 Wolfgang Sourdeau - - * UI/WebServerResources/UIxAttendeesEditor.js - (initializeAttendeeRole): new function that initialize an input's - row appearance based in the associated uid. - - * UI/WebServerResources/SchedulerUI.js: - (onCalendarsMenuPrepareVisibility): the "export" menu option is - now disabled for non-owner users, since the function itself will - not do anything otherwise. - (onCalendarExport): we make use of the URLForFolderId method, - which reduces code size. - - * UI/Scheduler/UIxCalFolderActions.m (-exportAction): this web - method is now bound to the ICS folder object, thereby removing - duplicate code. - - * SoObjects/Appointments/SOGoAppointmentFolderObject.m - (-displayName, -davDisplayName): new accessors that are forwarded - to the real folder object. - - * UI/WebServerResources/UIxAclEditor.js: (onAclLoadHandler) we - bind the "unload" event rather than "beforeunload", which does not - seem to work on IE. - -2010-06-07 Wolfgang Sourdeau - - * UI/WebServerResources/UIxAclEditor.js (onAclLoadHandler): add - tooltips to the special user entries. - - * UI/Common/UIxAclEditor.m (_displayNameForUID:): - (-ownerName, hasOwner): removed useless methods. - (-currentUserDisplayName): make use of the method below from the um. - - * SoObjects/SOGo/SOGoUserManager.m (-getFullEmailForUID:): - enhanced to return a proper string for users with an empty "cn" or - an empty "c_email". - - * SoObjects/Appointments/SOGoAppointmentFolders.m - (-toOneRelationShipKeys): with a request from iCal, we return - nothing to avoid confusing iCal 3 with non-collection resources. - - * UI/Common/UIxAclEditor.m (-isPublicAccessEnabled): we now expose - the state of public access in order to not show the "anonymous" - user when not needed. - -2010-06-05 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalendarProperties.m (-calDavURL, -webDavICSURL) - (-webDavXMLURL): new accessors for the URL now appearing at the - bottom of the properties page. - - * UI/WebServerResources/generic.js (onBodyClickContextMenu): - leave the context menu to appear on "A" elements with a - "clickableLink" class. - - * SoObjects/SOGo/SOGoGCSFolder.m (-realDavURL): new method that - returns the the owner version of the URL to the current folder. - -2010-06-04 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalParticipationStatusView.m: removed obsolete module. - - * UI/Common/UIxUserRightsEditor.m - (-sendACLAdvisoryTemplateForObject:): don't attempt to send a - notification email to the "anonymous" or the default user. - - * SoObjects/Appointments/SOGoAppointmentFolderXML.[hm]: same as - below for XML. - - * SoObjects/Appointments/SOGoAppointmentFolderICS.[hm]: new class - module that exports personal calendars as one ICS file. - - * SoObjects/Appointments/SOGoAppointmentFolders.m - (-folderObjectKeys): new method that return the "toOne..." keys - mapping XML or ICS representation of calendars. - -2010-06-03 Ludovic Marcotte - - * Added Ukrainian translation (first pass) from - Oleksa Stasevych - -2010-06-03 Wolfgang Sourdeau - - * UI/WebServerResources/generic.js (CurrentModule): new function - that returns the name of the currently active module. - - * UI/WebServerResources/UIxAclEditor.js (addUser): take into - account the fact that the "default roles" button has been replaced - with a new "authenticated users" entry and that we want to keep - that entry at the end of the list. - (nodeForUser): added a "canSubscribe" parameter that determines - whether the "subcribe user" button should be displayed. - (openRightsForUserId): when the user id is "anonymous", the acl - window is reduced by 42 pixels. If the window to display is the - one pertaining to contacts rights, 21 pixels are substracted again. - (openRightsForDefaultUser): removed function. - - * UI/Scheduler/UIxCalUserRightsEditor.m (-objectRights): the list - of rights must be limited to the immutative ones whe the active - user is "anonymous". - - * UI/Common/UIxUserRightsEditor.m (-userIsAnonymousUser): new - accessor that returns whether the selected user is "anonymous", in - which case certain UI elements need to be adapted. - - * UI/Common/UIxAclEditor.m (-_prepareUsers): added support for - "anonymous" user id. - -2010-06-02 Wolfgang Sourdeau - - * UI/WebServerResources/*.js: replaced all remaining calls to - "getLabel" with calls to "_". - - * Tests/Integration/test-davacl.py (DAVPublicAccessTest): new test - class that implements tests strictly related to accessing the - "/public" prefix. - (DAVCalendarPublicAclTest.setUp): new test class that tests the - behaviour of calendar resources with regards to the super user, - a non-owner user, the "anonymous" user and the default user - (for default roles). - - * Tests/Integration/utilities.py (TestACLUtility.setupRights): we - excape the value for the "user" attribute with - xml.sax.saxutils.escape. - - * Tests/Integration/webdavlib.py (HTTPPUT.__init__): added the - "content_type" and "exclusive" optional parameters. The latter - implies the use of the "if-none-match" header. - (WebDAVPUT): removed useless operation class - - * SoObjects/SOGo/WORequest+SOGo.m (-handledByDefaultHandler): - fixed a bug where the -requestHandlerKey method would be invoked - on the "request" (NGHttpRequest) ivar rather than on self. - - * SoObjects/SOGo/SOGoUserFolder.m (_subFoldersFromFolder:): - thanks to the change below, the ACL checking code is no longer - needed here, where we can now concentrate on returning subfolders - metadata. - - * SoObjects/SOGo/SOGoParentFolder.m - (_fetchPersonalFolders:withChannel:): if the active user is not - the owner of the current parent folder, subfolders are returned - only when he/she has permissions set on them even for the - "personal" subfolder. - - * SoObjects/SOGo/SOGoGCSFolder.m (-aclsForUser:forObjectAtPath:): - extracted db code into a new "_realAclsForUser:forObjectAtPath:" - private method. When the "None" special role is returned, we - remove it from the list. Finally, we don't allow fetching default - roles when the specified uid is "anonymous". - - * SoObjects/Contacts/SOGoContactFolders.m (-appendSystemSources): - we now add public sources to the list of folders if and only if - the active user is the owner of the current parent folder. - - * SoObjects/SOGo/SOGoWebAuthenticator.m (-userInContext): if the - returned user has the login "anonymous", we return a corresponding - instance of SOGoUser to make sure methods are never invoked on - SoUser instances. - - * SoObjects/SOGo/SOGoUser.m (-rolesForObject:inContext:): now make - use of the new "isInPublicZone" method of SOGoObject to give the - "PublicUser" role to the unauthenticated user. - - * SoObjects/SOGo/SOGoObject.m (-isInPublicZone): same as below, - but we cache the result in a new "isInPublicZone" ivar. - - * Main/SOGo.m (-lookupName:inContext:acquire): when the "public" - key is requested in DAV mode, we now instantiate a - "SOGoPublicBaseFolder", if the "SOGoEnablePublicAccess" user - default is set. - (-isInPublicZone): new method that always returns "NO" and is - meant to be called from child objects. - - * SoObjects/SOGo/SOGoPublicBaseFolder.m: new class module that - enables anonymous access to resources. Instantiated from the - "SOGo" object. Implements a method "-isInPublicZone" that always - returns "YES". - -2010-06-02 Francis Lachapelle - - * UI/Scheduler/UIxCalListingActions.m (_userStateInEvent): fixed - array indexes that would cause the user participation state to no - longer be returned. - -2010-06-01 Wolfgang Sourdeau - - * SoObjects/SOGo/WORequest+SOGo.m (-handledByDefaultHandler): test - the request handler key instead of invoking isSoWebDAVRequest, - which performs additional and permission tests. - - * Tests/Integration/test-davacl.py - (DAVCalendarAclTest._testRights): reenabled test code even when no - classification rights are available. - - * SoObjects/SOGo/SOGoSystemDefaults.m (-enablePublicAccess): new - accessor for the SOGoEnablePublicAccess boolean user default. - - * SoObjects/SOGo/SOGoUserManager.m - (-contactInfosForUserWithUIDorEmail:): return a fixed dictionary - of information for uid = "anonymous". - - * Tests/Integration/test-*.py: take the API changes in - webdavlib.py into accounts with regards to XPath queries. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-_privacySqlString): renamed to the new standardized - "aclSQLListingFilter". Again, a difference is now made between - empty and nil return strings, which we now apply here too. - (-bareFetchFields:from:to:title:component:additionalFilters:, - (-fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:): - make use of the new semantics to the above method. - - * SoObjects/SOGo/SOGoGCSFolder.m (-aclSQLListingFilter): new - overridable method designed to return a filter to SQL queries that - avoids requesting records that are not meant to be visible to the - active user. Replaces and extends -[SOGoAppointmentFolder - _privacySqlString] with the additional convention that returning a - nil string will prevent any query at all. - (-toOneRelationshipKeys): new overriden method (see below). Make - use of the new aclSQLListingFilter method to retrieve records so - that unaccessible records are not even listed. - - * SoObjects/SOGo/SOGoFolder.m (-fetchContentObjectNames): removed - this useless alias to "toOneRelationshipKeys". - - * Tests/Integration/all.py: disable multilanguage tests by - default, reverting the "disbale-languages" cmd-line parameter to - "enable-languages". - - * Tests/Integration/webdavlib.py (WebDAVClient.__init__): made - "username" and "password" parameters optional to enable anonymous - connections. Also, M2Crypto.httpslib is imported explicitly only - when an SSL connection is requested. This renders this library - optional. - (WebDAVQuery.set_response): we now make use of the xml.etree API - instead of the one from xml.dom. - (xpath_evaluate): the above change makes this method obsolete - since XPath queries can now be performed directly on returned - elements. - - * SoObjects/SOGo/SOGoCache.m (-setValue:forKey:expire:): display - the memcached error string when an error occurs. - -2010-05-28 Francis Lachapelle - - * UI/MailerUI/UIxMailMainFrame.m (-saveColumnsStateAction): new - method to save the relative sizes of the columns widths. It will - also save the columns order when the web interface supports it. - - * UI/WebServerResources/SOGoResizableTable.js (saveColumnsState): idem. - -2010-05-28 Wolfgang Sourdeau - - * UI/WebServerResources/UIxComponentEditor.js: - (findDeleteAddress): new function that returns the properly - formatter full email of the delegate attendee. - (findAttendeeWithFieldValue): new function that wanders through - the list of attendees and returns the one that has the field - passed as parameter equal to the value passed as parameter. - -2010-05-27 Wolfgang Sourdeau - - * UI/MailerUI/WOContext+UIxMailer.m - (-mailEnvelopeAddressFormatter): declare result as - UIxEnvelopeAddressFormatter. - - * UI/MailerUI/UIxMailListActions.m (-getHeadersAction): - "addressFormatter" really is a UIxEnvelopeAddressFormatter. - - * UI/WebServerResources/UIxAttendeesEditor.js: (prepareAttendees): - automatically append a new attendee line when the window is loaded - and no attendee is present in the list yet. - -2010-05-27 Francis Lachapelle - - * UI/MailerUI/UIxMailListActions.m: renamed from - UIxMailListview.m. Associated .wox was removed and converted to a - WODirectAction. - (-getSortedUIDsAction): new method that returns a JSON - array with all the messages UIDs of the mailbox, sorted as requested. - (-getHeadersAction): new method that returns a JSON dictionary of - the headers of requested messages UIDs. - - * UI/Common/WODirectAction+SOGo.m (-pageResourceManager, - -urlForResourceFilename): methods copied from UIxComponent. - - * UI/WebServerResources/SOGoDataTable.js: new interface to add - "live loading" to a table. - - * UI/WebServerResources/SOGoMailDataSource.js: new class that - dynamically fetches the message headers depending on the requests - from a SOGoDataTable. - - * UI/WebServerResources/SOGoResizableTable.js: new interface to - add resizable headers to a table. - - * UI/WebServerResources/MailerUI.js (initMailer): associates a DIV - with the new SOGoDataTable interface. - (openMailbox): uses the new SOGoMailDataSource class to fetch the - messages list. - (messageListCallback): new function called to populate a row from - the data received from the SOGoDataTable interface and - SOGoMailDataSource class. - (updateMessageListCounter): new function to update the message - counter that appears in the headers table. - (toggleAddressColumn): new - function to toggle the address column header content - (From/To). This column changes depending on the mailbox type - selected (draft, sent or other). - - * UI/WebServerResources/HTMLElement.js (refreshSelectionByIds): - new method to restore the selection based on the elements IDs instead - of the elements themselves. - - * UI/MailerUI/UIxMailMainFrame.m (-showToAddress, - -columnsMetaData, -columnsMetaData, -columnsDisplayOrder, - -columnsOrder, setCurrentColumn, -currentColumn, -columnTitle): - moved those methods from UIxMailListView, since the messages table - is now populated with a JSON representation of the data. - -2010-05-26 Wolfgang Sourdeau - - * UI/WebServerResources/UIxAttendeesEditor.js: - (toggleOfficeHours): removed obsolete method. - (initialiseTimeSlotWidgets): we now initialize the time range - hours to the day start hour and day end hour, respectively, - instead of the event start and end time. - (handleAllDay): we make use of the "dayStartHour" and "dayEndHour" - variables instead of hardcoded values. Also, we hide the time - range widgets when this code is executed. - (availabilityController.onNextSlotClick, - availabilityController.onPreviousSlotClick): ignore clicks when a - request is already active. - -2010-05-25 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoCalendarComponent.m - (_bodyPartForICalObject:): new help method designed to return a - body part representing the event in iso-8859-1 and falling back on - UTF-8 if not possible. - - * SoObjects/Appointments/SOGoAptMailNotification.m (+initialize): - removed obsolete method. - (-viewTZ, setViewTZ): idem. - (-setupValues): the "viewTZ" is now initialized from here, using - the active user's defaults. - - * UI/WebServerResources/SchedulerUIDnD.js: - (SOGoEventDragEventCoordinates.setLocation) - (SOGoEventDragGhostController.setLocation): new self-explanatory - methods. - (SOGoEventDragController.attachToEventCells): now take the event - location SPAN into acccount when drawing the ghost. - -2010-05-21 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAptMailUpdate.m (-valueForProperty:): - set the timezone of date objects to the active user's timezone. - - * UI/WebServerResources/SchedulerUI.js: (resetCategoriesStyles): - fixed an exception occurring when - UserDefaults['SOGoCalendarCategoriesColors'] is undefined. - -2010-05-21 Francis Lachapelle - - * UI/WebServerResources/SchedulerUI.js (onMenuCurrentView): - propagate the click event when right-clicking on an event. - - * UI/WebServerResources/UIxPreferences.js (endEditable, - onColorPickerChoice): those functions will automatically trigger - the reload of the current module (hasChanged is set to 1). - - * UI/WebServerResources/SchedulerUI.js (resetCategoriesStyles): - new method to manage the CSS associated to the event categories. - (newBaseEventDIV): a CSS class is added to the event div if a - category is associated to the event. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-fetchCoreInfosFrom:to:title:component:additionalFilters:): added - c_category field so UIxCalListingActions can fetch it. - -2010-05-20 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUI.js: (newEventDIV): we now add - a span with class "location" when the location field is available. - -2010-05-18 Wolfgang Sourdeau - - * SoObjects/Appointments/iCalEvent+SOGo.m (-quickRecord): extract - the event category into the c_category column. - - * SoObjects/Appointments/iCalToDo+SOGo.m (-quickRecord): extract - the task category into the c_category column. - - * UI/Scheduler/UIxCalListingActions.m (+initialize): added the - new "c_category" field to the list of fields that require - fetching. - - * UI/WebServerResources/SchedulerUI.js (newBaseEventDIV): shifted - field indexes by 1 from the 9th field, which is now the "category" - field. - - * Main/SOGo.m (-dispatchRequest:): send a "SOGoRequestDuration" - header back to the client with the time delta as value when - SOGoDebugRequests is set to YES. - -2010-05-17 Wolfgang Sourdeau - - * UI/WebServerResources/UIxAttendeesEditor.js - (redisplayEventSpans): "event spans" are now stored in a cache to - improve performance. - (availabilityController): new class designed to handle the - interaction with the availability widgets. - (availabilitySession): new class, used by the above, for - triggering availability searchs in the available freebusys. - Listeners should implement the "onRequestComplete" method. - (freeBusyRequest): new class designed to asynchronosly fetch a user - freebusy between specific dates. Makes use of an internal cache - and may trigger ajax requests covering more that the specified - range in order to take advantage of that cache. Listeners should - implement the "onRequestComplete" method. - (_freeBusyCacheEntry): new class, used internally by - "freeBusyRequests" for handling cache entries. - (initializeTimeSlotWidgets): new method that initializes the new - widgets that controls the time range behaviour in the freebusy - searches. - (editorConflictHander): new class that handles time conflicts. - - * UI/Scheduler/UIxCalListingActions.m (-findPossibleSlotAction): - removed action method and submethods since the slot resolution is - now performed directly in javascript to benefit from the freebusy - cache and to improve performance. - - * UI/MainUI/SOGoUserHomePage.m (-readFreeBusyAction): simplified - method by using -[self responseWithStatus:andString:]. - - * UI/WebServerResources/generic.js (log): improved the method's - performance by making use of DOM methods on the "logConsole" - object. - - * UI/WebServerResources/JavascriptAPIExtensions.js - (Date.prototype.clone): new method for copying the Date object - into another instance. - (Date.prototype.deltaDays): new method that returns the number of - days separating the current date with another one passed as - parameter. - (Date.prototype.beginOfDay): new method that returns a new date - instance corresponding to time 00:00 of the current instance. - -2010-05-06 Wolfgang Sourdeau - - * Tests/Integration/test-caldav-scheduling.py - (CalDAVPropertiesTest): new class for testing caldav-specific - properties - (CalDAVPropertiesTest.testDavScheduleCalendarTransparency): new - test method for testing "schedule-calendar-transp". - - * UI/Scheduler/UIxCalendarProperties.m (-includeFreeBusy) - (-setIncludeFreeBusy): new template accessors for the equivalent - methods below. - (-userIsOwner): new accessor that returns whether the current user - is the calendar's owner. - - * SoObjects/Appointments/SOGoFreeBusyObject.m - (-fetchFreeBusyInfosFrom:to:): test whether the listed calendars - must be included in the freebusy. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-setIncludeInFreeBusy, -includeInFreeBusy): new accessors that - determines whether the current calendar is included in the - computing of its owner's freebusy. - (-davScheduleCalendarTransparency) - (-setDavScheduleCalendarTransparency:): equivalent DAV accessors - for the above. - -2010-05-05 Francis Lachapelle - - * UI/WebServerResources/SchedulerUI.js (tasksListCallback): - refresh the tasks list when receiving the AJAX response instead of - emptying the list before sending the AJAX request. - -2010-05-05 Wolfgang Sourdeau - - * UI/WebServerResources/UIxAttendeesEditor.js (onContactKeydown): - the code for the "enter" and "tab" has been merged, since it was - similar. We also resolve individual contacts from list entries. - (resolveListAttendees): new function that fetches the indivual - entries from contacts lists. - (resolveListAttendeesCallback): callback for the above, that - create rows and input fields corresponding to the returned - entries, and trigger a contact search on each of them. - (performSearch): take an "input" field as argument since - "attendeesEditor.currentField" is no longer used. - (performSearchCallbacks): roles and partstats are now stored in - individual attributes rather than in the element class. We also - now behave differently depending on whether the event owner is - returned or another type of user, in order to match Lightning's - behaviour. - (newAttendee): no longer a callback, and now takes an optional - argument that indicates with attendee row precedes the one being - created. Also the new row is returned. - (checkAttendee): no longer a callback. Now takes an "input" - argument. - (onInputBlur): new callback that invokes "checkAttendee" and - handle the cleanup of the entries menu. - (displayFreeBusyForNode): use DOM methods rather than "innerHTML" - to modify the cell contents. - (updateFreeBusyDataCallback): freebusy requests are no longer - sequential. - (prepareAttendees): we now modify the DOM attributes rather than - the HTML attributes. - - * UI/Contacts/UIxListView.m (-propertiesAction): we now invoke - -[self responseWithStatus:andJSONRepresentation:] to build the - resulting WOResponse. - - * UI/Contacts/UIxContactFoldersView.m (-allContactSearchAction): - the type of returned component can now be deduced from the value - of "c_component" rather than from the c_name extension... Also, we - avoid autoreleasing variables where it's not needed. - (-contactSearchAction): removed obsolete method. - - * SoObjects/Contacts/SOGoContactGCSFolder.m (+initialize): new - method initializing "folderListingFields" as a static NSArray - rather than as macro. Added "c_component" to the list of fields to - retrieve. - - * UI/Scheduler/UIxComponentEditor.m (-ownerLogin): new accessor - the differenciate between the type of users in the list of - attendees. - - * UI/WebServerResources/UIxAttendeesEditor.js - (performSearchCallback): differenciate between the organizer user - and other attendees, as in Lightning. - - * UI/WebServerResources/UIxAppointmentEditor.js - (setupAttendeeNode): removed useless calls to $(). - - * UI/Scheduler/UIxComponentEditor.m - (-ownerIsAttendee:andClientObject:) - (delegateIsAttendee:andClientObject:): handle the case where the - user is found but has no RSVP or one with "FALSE" as value. - (-userHasRSVP): renamed from "userIsAttendee", since we don't - enable users without a RSVP set as "TRUE" to repond to - invitations. - (-currentAttendeeClasses): new method. - - * UI/MailPartViewers/UIxMailPartICalActions.m (-tentativeAction): - new action method for the "TENTATIVE" partstat. - - * SoObjects/Appointments/iCalEntityObject+SOGo.m - (-userIsParticipant:): renamed to "userIsAttendee:". We now - request the list of attendees rather than the list of - participants. - (-userAsParticipant:): renamed to "userAsAttendee:". Again, we - return the attendee matching the user, whether he/she is a - participant or not. - - * SoObjects/SOGo/iCalEntityObject+Utilities.[hm]: removed useless - module, since it implemented methods already found elsewhere. - -2010-05-04 Wolfgang Sourdeau - - * UI/WebServerResources/ContactsUI.js (initContacts): we must - configure the ab toolbar even when in popup mode, provided - "tabsContainer" does resolve to an existing element since the - script will be included for utility windows too. - -2010-05-04 Francis Lachapelle - - * SoObjects/Contacts/SOGoContactSourceFolder.m - (-lookupName:inContext:acquire:): verify the result of - lookupContactEntry as it will not necessarily return a contact. - * Updated version number to 1.2.2. - -2010-04-28 Wolfgang Sourdeau - - * Tools/sogo-tool.m (setupUserDefaults): new function that sets up - a few parameters on the user defaults. Notably, we override the - values for "SOGoLDAPQueryLimit" and "SOGoLDAPQueryTimeout" so that - they do not limit the amount of records that can be exported. - - * Tools/SOGoToolBackup.m (-proceed): we empty the autorelease pool - every 10 iterations to avoid an excess of unreleased LDAP - connections. - -2010-04-26 Ludovic Marcotte - - * Modified all folder/ACL templates in order - to remove (ie., comment out) broken links. - -2010-04-23 Wolfgang Sourdeau - - * Tests/Integration/test-webdav.py - (WebDAVTest.testPrincipalPropertySearch): new test method for - testing the "principal-property-search" REPORT on SOGo. - - * Tests/Integration/webdavlib.py: added copyright notice - (WebDAVPrincipalPropertySearch): new class that handles the - "principal-property-search" REPORT. - - * Main/SOGo+DAV.m (-davPrincipalPropertySearch:): restored method. - - * SoObjects/SOGo/SOGoUserFolder.m (-collectionDavKey:matches:): - moved this tester method for REPORT queries from SOGo+DAV.m. - - * Tools/SOGoSockDOperation.m (-_performSearch): we now support an - additional identifier in the object DN, for specifying specific - objects. - (_appendEntry:toResult:): we take the additional particle into - account when building the dn. Also, we add the "uid" field for - LDAP compliance. - - * SoObjects/Contacts/SOGoContactSourceFolder.m - (_flattenedRecord:): new method with the repetitive code from - _flattenedRecords. Snipped to offer the same functionality with - single records. - (-lookupContactWithName:): implemented this method to ensure - compatibility with SOGoGCSFolder (and ). - - * SoObjects/Contacts/SOGoContactGCSFolder.m - (_qualifierForFilter:): adjusted qualifiers to perform the same - search that Thundebird perform in its local abooks. - (-lookupContactWithName:): fixed method to use an equality - qualifier. Simplified code by reducing the amount of required - variables. - -2010-04-22 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m (-renameTo:): when the active - user is a super user, we modify the real owner's version of the - displayname. - - * Tests/Integration/webdavlib.py - (_WD_XMLTreeElement.appendSubtree): added handling of unicode - subtrees - -2010-04-22 Francis Lachapelle - - * Tests/Unit/TestiCalRecurrenceCalculator.m: new test module for - iCalRecurrenceRule. Added full test method for - recurrenceRangesWithinCalendarDateRange:. - -2010-04-21 Wolfgang Sourdeau - - * Main/SOGo+DAV.m: commented out incomplete code for handling - DAV:principal-property-search - -2010-04-20 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUser.m (-mailAccounts): use the user's first - email address as displayname for the mail account. Also, we avoid - autoreleasing objects that do not required to. - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m - (-startElement:namespace:rawName:attributes:): "ignoreContent" is - no longer a BOOL but an int, and was renamed to "ignoredContent". - This enables to fix a bug where an ignored content tag could be - "unignored" by being closed more than once, triggering the passing - of further content though the sanitizer. - Also, we now rename the "classid" and "data" attributes of "object" - elements to prevent cross-site scripting. - (+initialize): "applet", "frame", "frameset" and "iframe" a now - banned tags too. - -2010-04-19 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoWebAppointmentFolder.m (-setReloadOnLogin:) - (-reloadOnLogin): new accessors to the "AutoReloadedWebCalendars" - settings for the "Calendar" module. - - * UI/Scheduler/UIxCalendarProperties.m (-setReloadOnLogin:) - (-reloadOnLogin): new accessors. - - * SoObjects/Appointments/SOGoAppointmentFolders.m - (-reloadWebCalendars:): moved method from - UI/Scheduler/UIxCalMainActions.m and added a boolean parameter to - it indicating whether the "reload on login" setting should be - honoured or ignored. - -2010-04-19 Francis Lachapelle - - * UI/Scheduler/UIxComponentEditor.m (-_loadRRules): added support - for all the rules that can be defined from the Web interface: - custom yearly/monthly/daily rules. - (-_handleCustomRRule:): idem. - - * UI/WebServerResources/UIxRecurrenceEditor.js: added support for - custom monthly and yearly occurrences. - - * UI/Scheduler/UIxCalListingActions.m (:_fixDates): the recurrence - ID must be adjusted even when in the month view. - - * UI/Scheduler/UIxAppointmentEditor.m (-viewAction): no longer - necessary to adjust event date with the daylight saving time. - -2010-04-19 Wolfgang Sourdeau - - * UI/Contacts/UIxContactFolderActions.m (-exportAction): improved - method by providing the encoded filename of the address book - following rfc2047. Make the "uids" parameter optional: when - omitted, the address book is exported completely. - - * UI/WebServerResources/ContactsUI.js (getMenus): added entry for - exporting the address books, slightly reorganized the entries. - (onAddressBooksMenuPrepareVisibility): grey out the "export" entry - for LDAP address books. - (onAddressBookExport): new callback for exporting addressbooks - from the contextual menu. - - * UI/WebServerResources/generic.js (URLForFolderID): avoid double - slashes in the URL returned for personal folders. - -2010-04-16 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoCalendarComponent.m - (-lookupOccurence:): the looked up occurrence might be the master - event. - - * UI/WebServerResources/UIxMailPopupView.js (initPopupMailer): we - assign window.messageUID from here now (by concatenating - "mailboxName" and "messageName", as it will disappear if the - window is reloaded. - -2010-04-15 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUI.js (onDocumentKeydown): when - deleting an event, we must make sure that the even dialog - disappears, as it the case with the click on the corresponding - toolbar button. - - * Tools/SOGoToolRemove.m: new sogo-tool utility to remove user - data from the database. - - * Tools/SOGoSockDOperation.m (_appendEntry:toResult:): include - "telephonenumber" in the entry information. - -2010-04-14 Wolfgang Sourdeau - - * UI/WebServerResources/MailerUI.js (onMenuArchiveFolder): new - menu callback method that invokes "exportFolder" on the target - mailbox. - (saveAs): we use "window.location.href" instead of "window.open" - when exporting messages, as it avoids the flickering of opening an - ephemeral window. - - * UI/MailerUI/UIxMailFolderActions.m (-exportFolderAction): new - action that triggers the archiving of the selected folder. - - * SoObjects/Mailer/SOGoMailFolder.m - (-archiveUIDs:inArchiveNamed:inContext:): new version of - "-archiveUIDs:inContext:" taking an optional archive name as - argument, to be used as the filename of the attachment in the mime - headers of the response. Fixed a bug naming the messages following - their identifier's address rather than their identifier. We now - encode the provided filename as a qp utf-8 string when needed. - (-archiveAllMessagesInContext:): new method that uses the above - method for archiving all the messages in an archive named after - the folder's IMAP name. - - * UI/WebServerResources/SchedulerUI.js (onDocumentKeydown): new - callback method for handling keypresses. Initial code handles - event/task deletion. - - * UI/WebServerResources/generic.js (onRowClick): fixed a typo. - -2010-04-13 Wolfgang Sourdeau - - * UI/WebServerResources/UIxContactEditor.js (initEditorForm): we - need to instantiate a tabs controller here too. - -2010-04-12 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoProxyAuthenticator.m (-passwordInContext:): - use the "authorization" header to determine the password of the - user, if any. - - * SoObjects/Appointments/SOGoAptMailReceipt.m (-getSubject) - (-getBody): taken methods from old version of - SOGoAptMailNotification, to avoid a crash regarding a lock of - method override. - - * UI/WebServerResources/SOGoTabsController.js: new js module for - handling tabs, replacing non-object code from generic.js. Added - handling of tab overflows, with the appearance of two left/right - buttons to make them scroll. - -2010-04-09 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartICalActions.m - (_eventObjectWithUID:forUser:): fixed a typo that would cause the - found event to never be returned. - (-updateUserStatusAction): return a 404 status code when the - corresponding event is not found. - - * SoObjects/Mailer/SOGoMailFolder.m (-aclsForUser:): don't fetch - ACL when the current user is not the mailbox owner. Also, we don't - set default viewing roles when the uid is not the active user. - - * SoObjects/SOGo/SOGoObject.m (-labelForKey:): restored method. - - * SoObjects/Appointments/SOGoAptMailUpdate.m, - SoObjects/Appointments/SOGoAptMailInvitation.m, - SoObjects/Appointments/SOGoAptMailICalReply.m, - SoObjects/Appointments/SOGoAptMailDeletion.m: revamped to make use - of language dictionaries rather than language-specific classes. - This hugely simplifies the code and ease the job of implementing - languages for SOGo. - - * SoObjects/SOGo/SOGoObject.m (-labelForKey:) removed method, - obsoleted by the new one below. - - * SoObjects/SOGo/NSObject+Utilities.m (-labelForKey:inContext:): - new method that enables the querying of module based language - dictionaries from non SoComponent instances. - - * Tests/Integration/utilities.py (TestUtility.fetchUserInfo): same - as below. - - * Tests/Integration/test-webdav.py - (WebDAVTest.testExpandProperty): same as below - - * Tests/Integration/test-caldav-scheduling.py (fetchUserInfo): - accept empty displayname property. - - * Tests/Integration/test-maildav.py: temporarily disabled test - -2010-04-08 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailEditor.m (-fromEMails, -from): make use of - the new _emailFromIdentity: method. - (_emailFromIdentity:): new method that returns a from header - compliant with rfc822. - -2010-04-07 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartICalActions.m - (_eventObjectWithUID:forUser:): we check that the target event - exists only in the specified user's calendar, as it may already - exists in subcribed calendars belonging to other attendees. - - * SoObjects/Mailer/SOGoMailFolder.m (-toManyRelationshipKeys): we - now check if the mailbox exists before returning the message - identifiers. - (-lookupName:inContext:acquire:): we no longer check whether the - folder exists as it causes problems when it is a "noselect" parent - folder. Existence of folders is thus checked only when messages - are accessed. - - * SoObjects/Mailer/SOGoMailAccount.m - (_appendNamespace:toFolders:): it may happen that the namespace - "folders" have already been added via the list command, therefore - we now ensure that the folder names do not already exist before - adding them to the array. - -2010-04-06 Wolfgang Sourdeau - - * UI/WebServerResources/UIxPreferences.js (prototypeIfyFilters): - we don't attempt to duplicate the rules if they don't exist. - (copyFilter): same as above. - - * UI/WebServerResources/UIxFilterEditor.js (setupFilterViews): we - execute the callback for the match type SELECT in order to show or - hide the rules area depending on its initial value. - (onRuleAddClick): when the rules array does not exist, we must - create it. - -2010-04-05 Ludovic Marcotte - - * UI/WebServerResources/SOGoRootPage.js - We now correctly use our rounded value for the - expire value when using ppolicy. - - * UI/Contacts/UIxContactEditor.m - We now use URL: in cards w/o a home/work preferred - value as a home URL. - - * UI/Contacts/UIxContactEditor.m - We now fallback to TEL;VOICE: when neither HOME - or WORK are defined. We set that value as the - WORK telephone number in this particular case. - -2010-04-02 Francis Lachapelle - - * SoObjects/Appointments/SOGoCalendarComponent.m - (-sendEMailUsingTemplateNamed:forObject:previousObject:toAttendees:): - when looking for the organizer email, we now rely on the previous - event when the organizer is not defined in the new event. This is - important when the organizer is deleting the only attendee of an event. - - * UI/WebServerResources/SchedulerUI.js (onClickableCellsDblClick): - hack to ignore double-click in the scrollbar in the month view & - fix for Firefox. - -2010-04-02 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailAccount.m (-updateFilters): we ensure - the active script is deactivated so that we can delete it on - Dovecot. This enables scripts to be deleted when all the filters - are disabled. - - * UI/Scheduler/UIxCalListingActions.m - (_fillFreeBusy:forUid:fromDate:): fixed a crash occuring when the - length of an event would happen after the period covered by the - freebusy. - -2010-03-31 Wolfgang Sourdeau - - * Tools/sogo-slapd-sockd.m, Tools/SOGoSockDOperation.m, - Tools/SOGoSockDScanner.m, Tools/SOGoSockD.m: new modules - implementing the sockd backend tool for slapd. - - * Tools/sogo-tool.m (-run): return a proper return code rather - than "NO". - -2010-03-31 Francis Lachapelle - - * SoObjects/Mailer/SOGoDraftObject.m (+initialize): updated the - User-Agent header with the proper version. - - * UI/WebServerResources/SchedulerUIDnD.js (onDragStart): don't - start the dragging when the target element has a scrollbar. - -2010-03-30 Wolfgang Sourdeau - - * SoObjects/Contacts/SOGoContactSourceFolder.m - (-lookupName:inContext:acquire:): lookup the object in the - "childRecords" cache prior to fetching it from the source. If the - latter happens, the resulting record is cached. - (-lookupContactsWithFilter:sortBy:ordering:): populate the - "childRecords" cache with resulting records to avoid further - lookups of the same data. - - * SoObjects/SOGo/LDAPSource.m - (-changePasswordForLogin:oldPassword:newPassword:perr:): fixed a - typo that could potentially cause crashes. - -2010-03-29 Ludovic Marcotte - - SoObjects/Appointments/SOGoWebAppointmentFolder.m - We no longer use the NSData's method to load - the data as GNUstep will be caching it. - -2010-03-28 Ludovic Marcotte - - * Translated to French all the ppolicy stuff - -2010-03-26 Ludovic Marcotte - - * Updated the documentation with regard to - the passwordPolicy setting and deprecated - the WOApplicationRedirectURL setting. - -2010-03-25 Wolfgang Sourdeau - - * UI/PreferencesUI/UIxPreferences.m (-setHasChanged:) - (-hasChanged): restored accessors. - (-defaultAction): when "hasChanged" is YES, we request a reload of - the parent window. This feature was carelessly removed recently. - -2010-03-25 Francis Lachapelle - - * UI/WebServerResources/UIxContactsUserFolders.js - (onFolderSearchKeyDown, buildUsersTree): change color of search - text to red when no result returned from server. - -2010-03-24 Ludovic Marcotte - - * Added a patch from Christophe Palanche and - Guillaume Schreiner which makes the SOGo - cache code usable with repcached - (http://repcached.lab.klab.org/) - - * SOPE/NGCards/versitCardsSaxDriver/VSSaxDriver.m - (- _parseLine:) fixed incorrrect handling - of QP-encoded attributes. - - * SoObjects/SOGo/SQLSource.m - we now properly - escape quotes for SQL parameters coming from - user's input. - -2010-03-22 Ludovic Marcotte - - * SoObjects/Mailer/SOGoDraftObject.m - we strip - the bcc header prior to sending mails. - -2010-03-22 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalListingActions.m - (_fetchFields:forComponentOfType:): fix dates only in day-based - views or for all-day events. - - * Tests/Unit/TestiCalTimeZonePeriod.m: new test module for - iCalTimeZonePeriod. Added full test method for - _occurenceForDate:byRRule:. - - * Tests/Unit/SOGoTestRunner.m (-init): messages must be - initialized to a mutable array. - -2010-03-19 Ludovic Marcotte - - * Added the SOGoiPhoneForceAllDayTransparency - preference (and its associated code to handle - it in SOGoAppointmentObject.m) to force - transparency on all-day events coming from - the iPhone-OS based devices. - -2010-03-18 Ludovic Marcotte - - * Replaced SOGoUIxUserCanChangePassword with - SOGoPasswordChangeEnabled - - * Removed unused prefs / code. - -2010-03-15 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserFolder.m (-davUsersQuery): we invoke - "prepareDAVResponse" only when there is content to return. - - * UI/Scheduler/UIxCalListingActions.m (_fixDates:): the events - appearing in the month view needs to have their dates fixed too. - Also, the algorithm was lightly simplified. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-initWithName:inContainer:): "davTimeLimitSeconds" and - "davTimeHalfLimitSeconds" were erroneously reverted to 0 after - initialization. - - * UI/WebServerResources/SchedulerUIDnD.js (onDragStart): typo. - - * UI/WebServerResources/SchedulerUI.js (_setupEventsDragAndDrop): - we were setting up drag controllers only for events belonging to - the current user. Now that we handle the "editable" flag, this - had become a limitation. - -2010-03-14 Ludovic Marcotte - - * Improved the password policy code. All corner - cases should now be handled correctly. - -2010-03-12 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentObject.m - (-newOccurenceWithID): moved timezone handling code from - UIxAppointmentEditor to here. Simplified that code. - -2010-03-11 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserFolder.m (_davFetchUsersMatching:): we - were still using the "info" field from the result set for extra - user info, however that field as been renamed "c_info" a couple of - months ago. - - * UI/WebServerResources/generic.js (SetLogMessage): we must attach - the message to the container even when the message is null. - -2010-03-10 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUI.js (updateCalendarProperties): - the displayname can now also be set by subscribers, in their own - environment. - - * UI/Scheduler/UIxCalendarProperties.m (-setCalendarName:): this - action is now unconditional. - (-calendarNameIsDisabled): removed obsolete accessor. - - * SoObjects/SOGo/SOGoGCSFolder.m - (-setFolderPropertyValue:inCategory:): new setter for properties - pertaining to the ACTIVE user (who may or may not be the owner). - (-folderPropertyValueInCategory:): getter corollary to the new - method above. - (-_fetchDisplayNameFromSubscriber): new method for getting the - display name of the folder for the active user. - (renameTo:): split the method in an instance for the owner and - another one for subscribers. Respectively: _ownerRenameTo: and - _subscriberRenameTo:. The latter invoke the new methods above. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (_setCalendarProperty:forKey:): replaced method with a new - and more generic accessor from SOGoGCSFolder - "setFolderPropertyValue:inCategory:". - -2010-03-09 Wolfgang Sourdeau - - * UI/Common/WODirectAction+SOGo.m - (-responseWithStatus:andJSONRepresentation:): we now add the - "application/json" content type to the response object. - - * UI/SOGoUI/UIxComponent.m - (-responseWithStatus:andJSONRepresentation:): we now add the - "application/json" content type to the response object. - - * UI/MainUI/SOGoUserHomePage.m (_usersResponseForResults:): we now - return a JSON response with an encoded array of arrays. - - * UI/WebServerResources/UIxContactsUserFolders.js - (onFolderSearchKeyDown): same as below. - (addUsersLineToTree): the responses for user search queries are - now JSON-encoded arrays, which avoids a lot of parsing issues and - reduces the size of the code. - - * UI/WebServerResources/generic.js (IsCharacterKey): new helper - function that returns whether the pressed keycode is one that - changes the content of input fields. - (onSearchKeyDown): simplified method by making use of the new - function above. - (onSearchBlur): clear the timer if the field is empty, to avoid a - useless search on the ghost phrase. - -2010-03-08 Wolfgang Sourdeau - - * UI/WebServerResources/generic.js (onSearchKeyDown): set the - search timeout to 500 ms instead of 1 sec. - - * UI/WebServerResources/UIxContactsUserFolders.js - (onFolderSearchKeyDown): move the start of the animation to - onSearchFormSubmit. - - * UI/WebServerResources/generic.js (createDialog): new method - designed to provide a normalized interface for creating popup - dialogs with DOM methods. - (createButton): same as above for buttons. - (SetLogMessage): new normalizing method for putting typed log - message in specified containers via DOM methods. - - * UI/WebServerResources/SOGoRootPage.js: added code for popping up - a password change dialog whenever one is required by the server. - - * UI/MainUI/SOGoRootPage.m (_responseWithLDAPPolicyError:): new - method for returning password change and login-based LDAP policy - errors. - - * UI/WebServerResources/PasswordPolicy.js: new module that handle - the password change protocol and error codes. - - * UI/WebServerResources/UIxPreferences.js - (onComposeMessagesTypeChange): we now do the proper widget - wizardry via DOM methods to alternate between the text-based or - html-based editor for changing the user's signature when the - message format is switched between "text" and "html". - (onChoiceChanged): removed obsolete callback. - - * UI/PreferencesUI/UIxPreferences.m (-init): removed the - "hasChanged" and "composeMessageTypeHasChanged" ivars, as they are - no longer needed. - (-setHasChanged, -hasChanged): removed obsolete accessors. - (-defaultAction): simplified method as we no longer have to manage - the handling of the change of message format from here. - -2010-03-08 Ludovic Marcotte - - * Added SoObjects/SOGo/SOGoConstants.{h,m} - a new file - that will hold eventually all SOGo constants. - - * Reworked the authentication code to use a generic - method for password authentication (LDAP + SQL). - - * Added password change support - - * Updated the SOPE patchset which now includes - password-policy support. - -2010-03-05 Wolfgang Sourdeau - - * SoObjects/SOGo/NSString+DAV.m (-davSetterName): enhanced so that - DAV properties directely passed as parameters (and not as dav - method names deduced from DAVPropMap.plist) are handled properly - too. - - * SoObjects/SOGo/SOGoUserFolder.m (-setDavSignature:): new - accessor for setting the - {urn:inverse:params:xml:ns:inverse-dav}signature property via DAV. - -2010-03-02 Wolfgang Sourdeau - - * UI/PreferencesUI/UIxPreferences.m (-nameLabel, -colorLabel): - removed useless methods. - - * SoObjects/SOGo/SOGoUserDefaults.m (-sieveFilters) - (-setSieveFilters:): new accessors. - - * SoObjects/SOGo/SOGoDomainDefaults.m (-sieveScriptEnabled): new - accessor. - - * SoObjects/Mailer/SOGoSieveConverter.m: new class for producing - sieve scripts from user defaults. - - * UI/PreferencesUI/UIxFilterEditor.m: new template class for - editing sieve scripts. - - * UI/WebServerResources/generic.js (_): new gettextable equivalent - of "getLabel". - -2010-03-01 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoDomainDefaults.m (-imapFolderSeparator): new - method. - -2010-03-01 Francis Lachapelle - - * UI/WebServerResources/UIxMailEditor.js (-clickedEditorSend): - fixed wrong condition that would result in refusing to send a - message after having clicked on the Save button. - -2010-02-23 Ludovic Marcotte - - * Added a patch from Adam Yearout - to fix OpenSUSE compilation issues. - - * Added a patch from dev@ib.pl to make the memcached port - being used by SOGo configurable using the SOGoMemcachedPort - default option. - -2010-02-19 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalListingActions.m - (_fetchFields:forComponentOfType:): mark events of remote - calendars as non-editable. - - * UI/Common/UIxPageFrame.m (-userIdentification): ancient - "userEmail" method, with a more generic name. Also we now return - the user's complete name. - - * SoObjects/Mailer/SOGoMailAccount.m (-imapAclConformsToIMAPExt:) - now based on the server's capability string. - - * UI/MailerUI/UIxMailFolderActions.m (-createFolderAction): we - check if the clientObject responds to "aboluteImap4Name", - otherwise the subscription is made to the folderName alone. - - * Main/SOGo.m (-run): moved initialization logs from +initialize - here, so that they are output to the redirected output stream. - Added version number to "starting" line. - -2010-02-18 Ludovic Marcotte - - * UI/MailerUI/UIxMailFolderActions.m: Modified the - code so that we correctly subscribe/unsubscribe to - the folders (old/new) when renaming or deleting - a folder. Also corrected the creation of subfolders - by using -absoluteImap4Name. - -2010-02-18 Wolfgang Sourdeau - - * Tools/SOGoToolRestore.m (+initialize): removed method. - (-run): make use of the newly publicized SOGoProductLoader for - loading needed products. - - * SoObjects/SOGo/SOGoProductLoader.m (-loadAllProducts): new name - for "loadProducts". Do not list product directories where no - products were loaded. - (-loadProducts:): new method accepting an array of products to - load from SOGo library directories. - - * SoObjects/SOGo/SOGoBuild.m: moved from Main/build.h to here. - - * SoObjects/SOGo/SOGoProductLoader.m: moved from Main/ to here. - - * UI/MainUI/SOGoRootPage.m (-_casDefaultAction): when the local - cache has expired, we create a "cas-location" cookie before - redirecting to the CAS login page and we redirect the user back to - that page when the login has been completed. This way, the - event creation window or any AJAX request would seamlessly restart - where "interrupted" by the login process. - - * SoObjects/Appointments/SOGoCalendarComponent.m - (-sendEMailUsingTemplateNamed:forObject:previousObject:toAttendees:): - added a few headers to the ical attachment that could help - work-around bugs occurring with Outlook: content-transfer-encoding - = qp. Moreover a \r\n is added to the iCalString. - - * SoObjects/SOGo/SOGoCache.m: worked around in bug in GCC - occurring with libmemcached >= 0.37 by making the servers and - handle ivars static globals. - -2010-02-17 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUI.js - (updateEventFromDraggingCallback): invoke refreshEventsAndDisplay - instead of changeCalendarDisplay alone. - -2010-02-16 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUI.js (onMenuCurrentView): we - hide the "eventDialog" when the menu pops up. - - * UI/WebServerResources/UIxColorPicker.js (onChooseColor): the - colour window is now closed once the user has made his choice. - -2010-02-15 Wolfgang Sourdeau - - * UI/WebServerResources/generic.js (getTarget): ensure the - returned target has been initialized with prototype extensions. - - * UI/WebServerResources/SchedulerUI.js (gotoToday): set the - selected day to the today date. - - * UI/WebServerResources/SchedulerUIDnD.js - (SOGoEventDragGhostController.showGhosts): ghosts now also have an - "eventInside" DIV to contain the title and draw the border. This - avoids the overflow of extra pixels added to the DIV heights for - start and end ghosts. - (SOGoEventDragController.attachToDayNode): we determine whether - the event cell are for an invitation, in which case the dragging - event will be aborted even though the user is technically the - "owner" of the represented event. - -2010-02-13 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUI.js (attachDragControllers): we - only attach handlers to subnodes of #calendarHeader DIV.days, not - ..DIV.dayLabels. - (adjustCalendarHeaderDIV): adapted for IE. - -2010-02-12 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalMonthView.m (-currentDayId): new method. - (-currentDayNumber): new method. - - * UI/Scheduler/UIxCalDayTable.m (-currentHourId): new method. - (-currentAllDayId): new method. - (-currentDayId): new method. - (-currentHourLineId): removed method because hourlines are no - longer present in the template. - (-currentDayNumber): new accessor, used in javascript to recover - selection faster when the currently selected date is no longer - available. - - * UI/WebServerResources/SchedulerUIDnD.js (ScrollController.init): - enhanced scrolling by setting a limit of 6 steps rather than 2. - - * UI/WebServerResources/SchedulerUI.js (newEventDIV): the right - limit of event cells is setup using the "right" attribute rather - than "width", to avoid issues with cell borders. - (adjustCalendarHeaderDIV): new method that setups the proper - ¨right" attribute for the "calendarHeader" element on non-IE - browsers. This reduces the amount of hacks and failed attempts to - take the day view scrollbar into account. - (changeWeekCalendarDisplayOfSelectedDay): check the class of DIV - elements to avoid using fixed references that might change over - time and cause exceptions. - (onViewEventCallback): use prototype-expanded objects to avoid - exceptions on IE. - -2010-02-11 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUIDnD.js: adapted code for - all-day events and monthly view. Added code to avoid modifying - events when the pointer is out of the draggable zone. - - * UI/WebServerResources/SchedulerUI.js: adapted code for - all-day events and monthly view. - - * UI/Scheduler/UIxAppointmentActions.m (-adjustAction): we now - handle all-day events. - -2010-02-10 Wolfgang Sourdeau - - * UI/WebServerResources/SOGoRootPage.js (initLogin): discard the - login cookie with the appName set as cookie path. - - * UI/WebServerResources/SchedulerUI.js (newEvent): removed the - useless "sender" parameter and added "day", "hour" and "duration" - parameters to obtain a more generic method. - (newEventFromWidget): new method the previous "newEvent" incarnation. - (minutesToHM): new method that converts an amount of minutes into - a string value suitable for an "hm" query parameter. - (newEventFromDragging): new method suitable as a drag and drop - callback for creating events. - (updateEventFromDragging): new method suitable as a drag and drop - callback for adjusting events. - (_setupEventsDragAndDrop): new method that setups drag and drop - controllers for instances of events per calendar. - (attachDragControllers): new method that instantiate a drag and - drop controller for each day column. - - * UI/Scheduler/UIxCalListingActions.m - (_fillBlocks:withEvent:withNumber:): work around the situation - where the event start would occur after its end, causing a crash. - Still emits a warning. - - * UI/Scheduler/UIxCalDayTable.m (-currentHourLineId): new method - replacing "currentHourLineClass". The hour identifier now being - the value of the element id, the hourline classes are populated - from the template itself. - - * UI/WebServerResources/generic.js (generateQueryString): adjusted - method to take only "string" and "number" typed values into - account when constructing URL parameters. - - * UI/WebServerResources/SchedulerUIDnD.js: new js module with - classes implementing drag and drop of events. - - * UI/Scheduler/UIxOccurenceDialog.m (-confirmAdjustmentMethod): - new method for displaying a dialog suitable for start and duration - adjustments. - - * UI/Scheduler/UIxAppointmentActions.m (-adjustAction): new method - that takes a "days", a "start" and a "duration" relative - parameters to adjust the current event or occurrence. - - * UI/Scheduler/UIxAppointmentActions.[hm]: new module implementing - a WODirectAction class for ajax calls for appointments. - -2010-02-08 Francis Lachapelle - - * UI/Contacts/UIxContactFoldersView.m (-verticalDragHandleStyle): - new method (was missing), borrowed from UIxCalMainView.m. - (-horizontalDragHandleStyle): idem. - (contactsListContentStyle): idem. - - * UI/WebServerResources/ContactsUI.js (-onAddressBookRemove): - avoid selecting the personal addressbook prior to obtaining the - user's answer. - - * UI/MailerUI/UIxMailListView.m (-messageSize): improved - formatting of message size. - -2010-02-03 Wolfgang Sourdeau - - * UI/MainUI/SOGoRootPage.m (-_standardDefaultAction): add an - ending "/" to the active url to avoid a mismatch with the login - cookie path. - -2010-02-02 Wolfgang Sourdeau - - * SoObjects/Contacts/SOGoContactLDIFEntry.m - (-initWithName:withLDIFEntry:inContainer:): removed "name" ivar - which had the same purpose as "nameInContainer". We also invoke - [self initWithName:inContainer:] rather than [self init]. - Incidentally this fixes a leak. - - * SoObjects/Mailer/SOGoMailBodyPart.m (-imap4URL): we assign our - "imap4URL" ivar so that it can be access directly in order - methods. - - * Tests/Integration/test-davacl.py - (DAVCalendarAclTest._testEventDAVAcl): test - current-user-privilege-set on tasks too. - - * SoObjects/Appointments/SOGoCalendarComponent.m - (+webdavAclManager): moved method from SOGoAppointmentObject, so - that tasks can benefit from it too. - - * SoObjects/Appointments/SOGoAppointmentObject.m - (+webdavAclManager): view-whole-component and view-date-and-time - are now independent and children of "all". "read" is declared as - equivalent to the new "SOGoDAVReadPermission". This hack avoids - problems with ACL hierarchy. - - * Tests/Integration/test-davacl.py (DAVCalendarAclTest._putTask): - new method that create tasks in the test collection based on a - template. - (DAVCalendarAclTest._currentUserPrivilegeSet): new method that - request the {DAV:}current-user-privilege-set property on the - specified DAV resource. Also checks whether the request expectedly - fails or succeeds. - (DAVCalendarAclTest._comparePrivilegeSets): new helper method to - compare to arrays. - (DAVCalendarAclTest._testCollectionDAVAcl): new test helper method - for ensure that DAV permissions are conform to the SOGo - permissions on collections. - (DAVCalendarAclTest._testEventDAVAcl): same as above for events. - -2010-01-30 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoWebAuthenticator.h: conforms to - SOGoAuthenticator protocol. - - * SoObjects/SOGo/SOGoDAVAuthenticator.h: conforms to - SOGoAuthenticator protocol. - - * SoObjects/SOGo/SOGoProxyAuthenticator.m - (-imapPasswordInContext:forServer:forceRenew:): added method. - Returns nil when renew is set to YES so that no real retry occurs - (convention: null password is NO password) but returns an empty - string by default. - - * SoObjects/SOGo/SOGoUserFolder.m (-ownerInContext:): invoke - setOwner: to retain user. - - * SoObjects/SOGo/SOGoObject.m (-initWithName:inContainer:): - ownerInContext: already retains "owner". - - * Main/SOGoProductLoader.m (-loadProducts): attempt to free some - memory after "loadAllProducts" is invoked, which consumes a lot of - RAM. - -2010-01-28 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoSystemDefaults.m (-CASServiceURL) - (-authenticationType): new accessors. - - * SoObjects/SOGo/SOGoObject.m (+globallyUniqueObjectId): fixed to - use the result of "random" rather than the function pointer. - - * SoObjects/SOGo/SOGoCache.m (-setValue:forKey:expire) - (-setValue:forKey:, -valueForKey:, -removeValueForKey:): new - accessors. - (-CASTicketFromIdentifier:, -CASSessionWithTicket:) - (-setCASSession:withTicket:forIdentifier:): new accessors enabling - the CAS session management. - (-CASPGTIdFromPGTIOU:, -setCASPGTId:forPGTIOU:): new accessors - enabling proxy ticket management (see casProxyAction below). - - * UI/MainUI/SOGoUserHomePage.m (-logoffAction): we now pass the - request application name as cookie path. - - * UI/MainUI/SOGoRootPage.m (-casProxyAction): new method invoked - by the CAS server when authenticating the SOGo server during a - proxy request. - (-_casDefaultAction): new "defaultAction" method executed in CAS mode. - - * UI/Common/UIxPageFrame.m (-canLogoff): return NO in CAS mode. - - * SoObjects/SOGo/SOGoWebAuthenticator.m (-checkLogin:password:) - when authentication type is set to "cas", the password is the - ticket identifying the CAS session. We therefore check if the - login and the session login match. - (-imapPasswordInContext:forServer:forceRenew:): new method that - returns the "password" to use for IMAP connections. In CAS mode, - a proxy ticket is fetched with the current CAS session. In - standard mode, we still use the current user's password. The - "forceRenew:" parameter enables the fetching of a new proxy ticket - if the current one has expired. - (-setupAuthFailResponse:withReason:inContext:): we know invoke - "defaultAction" on the SOGoRootPage instance to make sure all the - cookies and CAS tickets are taken into account. - We now pass the request application name as cookie path. - - * SoObjects/SOGo/SOGoCASSession.[hm]: new class module - implementing the class in charge of CAS authentication and proxy - transactions. - -2010-01-27 Wolfgang Sourdeau - - * Tools/SOGoToolBackup.m (-fetchUserIDs): retain allUsers to avoid - a release between the pool rotation. - -2010-01-25 Francis Lachapelle - - * UI/WebServerResources/SchedulerUI.js - (restoreCurrentDaySelection): fixed selection of current day in - mini-calendar. - * Updated version number to 1.2.0. - -2010-01-24 Ludovic Marcotte - - * Reorganized the layout of automated tests. - -2010-01-22 Francis Lachapelle - - * UI/Contacts/UIxListEditor.m (-references): avoid printing the - email address between brackets if not defined. - - * UI/Contacts/UIxListView.m (-itemHasEmail): new method that - returns YES if the current list item has an email address. - -2010-01-22 Wolfgang Sourdeau - - * UI/WebServerResources/MailerUI.js (composeNewMessage): fixed - potential js error in IE when no mailbox is selected. - - * Tools/SOGoToolRestore.m (+initialize): we need to invoke - [iCalEntityObject+SOGo initializeSOGoExtensions], otherwise the - extraction of quick records will cause a crash because some global - variables won't be initialized. - -2010-01-21 Francis Lachapelle - - * UI/Scheduler/UIxCalListingActions.m - (_fetchFields:ofComponentType:): added field ownerIsOrganizer which - identifies whether or not the calendar owner is the organizer of - the event. Also added the field erasable which identifies if the - active user can delete objects in the current calendar. - * UI/WebServerResources/SchedulerUI.js - (-_deleteCalendarEventBlocks): when the organizer deletes an - event, also delete the event in the calendars of the attendees, if - visible. Also, don't allow to delete an event if the user can't - erase objects in the calendar. - (-_deleteCalendarEventCache:): new function to update the events cache. - -2010-01-20 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentInboxFolder.m - (-davCalendarFreeBusySet): only advertise the collections owned by - the inbox's owner. - (-davScheduleDefaultCalendarURL): new caldav accessor. - - * SoObjects/Appointments/SOGoAppointmentFolders.m - (-toManyRelationShipKeys): unconditionnally display the inbox - collection. - (-lookupName:inContext:acquire:): accepts "inbox" even when the - active user is not the owner. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-davResourceType): unconditionnally advertise "personal" as - schedule-outbox. - - * UI/WebServerResources/scriptaculous.js: modified to use - ResourcesURL as base loading URL. - - * UI/WebServerResources/UIxAclEditor.js (saveAcls): removed - method. - (nodeForUser): don't add a checkbox if "canSubscribeUsers" is - false. - - * UI/Common/UIxAclEditor.m (-canSubscribeUsers): new accessor that - returns whether the clientObject has the required method to - subscribe users. - - * UI/PreferencesUI/UIxPreferences.m (-itemTimeFormatTexts): the - default time format is not taken from the domain defaults rather - than the user locale. - -2010-01-19 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolders.m - (-hasProxyCalendarsWithWriteAccess:forUserWithLogin:) - (-proxySubscribersWithWriteAccess) - (-addProxySubscribers:withWriteAccess:) - (removeProxySubscribers:withWriteAccess:): prevent caldav-proxy - operations on the owner's subscribed resources. - - * UI/Common/UIxFolderActions.m (-subscribeUsersAction): new web - method that enables resource owners to subscribe other users to - their resources from the acl editor. - - * UI/Common/UIxAclEditor.m (-currentUserIsSubscribed) - (-folderID): new accessors. - - * Tests/utilities.py (TestACLUtility.(un)subscribe): added utility - methods. - - * Tests/test-ical.py (iCalTest.testCalendarProxy2): test the - behaviour of the ical proxy mechanisms when subscriptions and - access rights are modified. - - * SoObjects/SOGo/SOGoUserSettings.m (-subscribedCalendars) - (-subscribedAddressBooks): new accessors. - (-setCalendarProxyUsers:withWriteAccess:) - (-setCalendarProxySubscriptionUsers:withWriteAccess:) removed accessors. - - * SoObjects/Appointments/SOGoUser+Appointments.m - (-adjustProxySubscriptionToUser:remove:forWriteAccess:) removed - methods. - (-hasSubscribedToCalendar:): new method that returns whether a - user has subscribed to a calendar resource. Might be a duplicate - of [SOGoGCSFolder userIsSubscriber:]. - - * SoObjects/Appointments/SOGoAppointmentFolders.m - (-adjustProxyRolesForUsers:remove:forWriteAccess:) - (-adjustProxySubscriptionsForUsers:remove:forWriteAccess:): - removed methods. - (-hasProxyCalendarsWithWriteAccess:forUserWithLogin:): new method - that returns whether the user passed as parameter should be - returned in the list of subscribers corresponding to the proper - write access. - (-proxySubscribersWithWriteAccess:) new method that returns the - list of users that have a proxy access to the current account. - (-addProxySubscribers:withWriteAccess:,-removeProxySubscribers:withWriteAccess:) - setters for the above method. - - * UI/WebServerResources/ContactsUI.js (initContacts): fixed a bug - causing a null exception error on IE7 when the window is not the - main window, and is therefore missing the "uploadCancel" and - "uploadOK" elements. - -2010-01-18 Wolfgang Sourdeau - - * Tests/utilities.py: new module implementing utility classes and - methods that are used in different test cases. - - * Main/sogod.m (main): set the "GNUSTEP_STRING_ENCODING" - environment variable to NSUTF8StringEncoding to properly decode - the user defaults strings in UTF8. - -2010-01-15 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserSettings.m - (-setCalendarProxyUsers:withWriteAccess:) - (calendarProxyUsersWithWriteAccess:) - (setCalendarProxySubscriptionUsers:withWriteAccess:) - (calendarProxySubscriptionUsersWithWriteAccess:): "Read" and - "Write" were inverted. - -2010-01-14 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (+webdavAclManager): fixed "read-free-busy" namespace declaration. - - * SoObjects/SOGo/SOGoObject.m (-davPrincipalCollectionSet): when - used with iCal 4, we provide a "DAV" header with the proper - compliance classes, since iCal 4 doesn't want to use OPTIONS. - - * Tests/test-webdav.py (WebDAVTest.testExpandProperty): new method - to test the new "expand-propery" code in SOGo. - - * SoObjects/SOGo/SOGoFolder.m (-davExpandProperty): new method to - handle the "expand-property" REPORT. - - * SoObjects/Appointments/SOGoCalendarProxy.m: - adapted module to new code for handling chosen calendars - delegation. - - * Main/SOGo+DAV.[hm): new category module for handling dav methods - pertaining to /SOGo/dav/ as the principal-collection-set. Now - implements 3 methods that were previously found in SOGoUserFolder - categories. - - * SoObjects/Appointments/SOGoUser+Appointments.[hm]: new category - module. - - * SoObjects/Appointments/SOGoAppointmentInboxFolder.[hm]: new - class module that implements the basic "schedule-inbox" - collection mechanisms, enough to let iCal work properly. To be - completed for full invitation handling. - - * SoObjects/SOGo/SOGoObject.m (-lookupObjectAtDAVUrl:): new method - that enables DAV reports to lookup objects based on the urls - passed in their parameters. - (-davURLAsString): simplified method by making it recurse from its - top parent. - (-setRoles:forUsers:): treat a list of users at once. - (-davPrincipalMatch): removed method since it really pertains to - /SOGo/dav, which the correct principal-collection-set. - - * SoObjects/SOGo/SOGoParentFolder.m (-initSubcribedSubFolders): - enable the super user to see any user's subscriptions. This - enables a new set of tests to work properly in super user mode. - (-appendSubscribedSources): consequently to the above, the - references must be based on the owner user rather than the current - user. - - * SoObjects/SOGo/SOGoUser.m: removed commented out methods. - - * SoObjects/SOGo/SOGoUserSettings.m (-setProxiedCalendars) - (-setCalendarProxyUsers:withWriteAccess:): - (-setCalendarProxySubscriptionUsers:withWriteAccess:): new method - for handling caldav-proxy related settings. - - * SoObjects/SOGo/SOGoWebDAVAclManager.m (_registerChild:of:): only - emits a warning of the specified parent cannot be found, instead - of crashing. - - * SoObjects/SOGo/WOResponse+SOGo.m (-prepareDAVResponse): new - method with common code for DAV responses generated from SOGo. - - * Tests/webdavlib.py (WebDAVPROPPATCH): new class implementing the - "PROPPATCH" method. - (WebDAVExpandProperty): new class implementing the - "expand-property" REPORT. - (_WD_XMLTreeElement.appendSubtree): new method that enables the - addition of a tree of objects from a dictionary passed as - parameter. - - * Tests/test-ical.py: new test script for tesing iCal-related - behaviours. - - * Tools/SOGoToolBackup.m (-extractUserPreferences:intoRecord:): - fixed compilation warning. - -2010-01-13 Francis Lachapelle - - * UI/WebServerResources/ContactsUI.js (-fixSearchFieldPosition): - replaced this function by the equivalent CSS definition. - (-initContacts): initialized import buttons even for "popup" mode. - -2010-01-12 Ludovic Marcotte - - * SoObjects/SOGo/NSString+Utilities.m - We retain the autoreleased strings static variable - to avoir random issues with the -fromCSSIdentifier method - - * Updated the Moz guide for the updateLink part of - the updates.php script. - -2010-01-11 Ludovic Marcotte - - * UI/Contacts/UIxContactFolderActions.m (-importVcardData:): - We now support multiple vCards in the same file during - the import process - -2010-01-08 Ludovic Marcotte - - * SoObjects/SOGo/LDAPSource.{h,m} - bindFields is now - an array instead of a list of strings separated by commas. - Updated the Installation & Configuration Guide to reflect - this change. - -2010-01-08 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalDateLabel.m: dropped useless module. - - * UnitTests/SOGoTestRunner.m: separated class "SOGoTestRunner" - from sogo-tests.m. Moved reporting and logging methods from - SOGoTest into SOGoTestRunner.m - - * SoObjects/SOGo/NSString+Utilities.m (-_setupCSSEscaping): we - must initialize cssEscapingCount before using it. Also, fixed a - typo preventing the character buffer from being initialized - completely. - -2010-01-07 Francis Lachapelle - - * SoObjects/SOGo/NSString+Utilities.m (-asCSSIdentifier): replaced - %lc by %C. - (-fromCSSIdentifier): idem. - -2010-01-07 Wolfgang Sourdeau - - * SoObjects/SOGo/NSString+Utilities.m (-fromCSSIdentifier): speed - things up a little bit by checking whether the current character - is '_', possibly announcing an escaped sequence, anything else - being treated regularly. - - * SoObjects/SOGo/NSDictionary+BSJSONAdditions.m - (-jsonStringFromString:): convert "\" to "\\" rather than "\n". - - * SoObjects/SOGo/NSScanner+BSJSONAdditions.m (-scanJSONString): we - now accept lowercase characters in characters coded in UCN. - - * UnitTests/TestBSJSONAdditions.m: new unit test for - BSJSONAdditions. - - * UnitTests/SOGoTest.m: base class for our unit test testcases. - Similar to JUnit and family. - - * UnitTests/sogo-tests.m: main executable for our Objective-C test - framework. - -2010-01-06 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUI.js (onViewEventCallback): - simplified lookup of "P" elements by groupings them in an array. - This also fixes a bug where all the returned information would not - be displayed. Also, we make use of the "calendar" field, which was - not used before. - - * UI/Scheduler/UIxAppointmentEditor.m (-newAction): new events - have an ".ics" extension instead of ".vcf". - - * UI/Scheduler/UIxCalMainView.m (-_setupContext): only invoked once - per instance. - (-checkDefaultModulePreference): synchronize the user defaults - after the login module was modified. - - * UI/Scheduler/UIxDatePicker.m - (-takeValuesFromRequest:inContext:): we set the new date to the - user's timezone and recompute the proper offset compare to the - system timezone, which may differ from it. - - * SoObjects/Appointments/iCalEntityObject+SOGo.m - (-quickRecordDateAsNumber:withOffset:forAllDay:): we only need to - compute the delta between the user's timezone and UTC rather than - the system timezone. - - * SoObjects/Mailer/SOGoMailNamespace.m - (-lookupName:inContext:acquire:): overriden method because the - namespace "folders" cannot be created and cannot contain messages. - - * SoObjects/Mailer/SOGoMailAccount.m - (-otherUsersFolderNamespaces): new method that returns all the - namespace "folders" in the "other user" namespace. Replaces the - old "otherUsersFolderName" method. - (-sharedFolderNamespaces): same as above for the "shared" - namespace. - - * SoObjects/SOGo/SOGoDomainDefaults.m (-otherUsersFolderName) - (-sharedFolderName): removed obsolete methods. - -2010-01-05 Wolfgang Sourdeau - - * UI/WebServerResources/MailerUI.js (Mailbox): "this.name" is now - an escaped form of the mailbox name, that can thus be used to - generate folder URLs. - (Mailbox.findMailboxByName): escape the name passed as parameter - prior to doing a search. - - * UI/WebServerResources/JavascriptAPIExtensions.js - (asCSSIdentifier): use two arrays rather than an "Object" in order - to improve performance. - - * SoObjects/SOGo/NSString+Utilities.m (-fromCSSIdentifier): new - method that converts an escaped string back to a normal one. - (-asCSSIdentifier): no longer use "replaceString:withString:" in - order to avoid parsing the string multiple times. This probably - enhance performances a bit and also avoid double-encoding - problems. - - * SoObjects/SOGo/NSArray+Utilities.m (-resultsOfSelector): new - method that applies a selector on the contained objects and - collect the result objects in a new array. - - * SoObjects/Mailer/SOGoMailFolder.m - (-lookupName:inContext:acquire:): we must check and create the - current folder even if the looked up key is a subfolder or a web - method. - - * SOPE/sope-patchset-r1664.diff: new patchset replacing - -r1660.diff. - Added code to handle IMAP namespaces. - -2010-01-04 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailForward.m (-): we use - -[SOGoUserDefaults mailComposeMessageType] instead of querying the - defaults key, so that the fallbacking mechanism between the - different preference layers can be used. - -2009-12-26 Ludovic Marcotte - - * SoObjects/SOGo/SOGoMailer.m (_smtpSendData: - toRecipients:sender:): We now honor the 'port' - part in the SMTP server address. So one can now - specify hostname:port (like localhost:587) as - a value of SOGoSMTPServer. This fixes - http://www.sogo.nu/bugs/view.php?id=201 - - * SoObjects/Mailer/SOGoMailForward.m (init): - Now consider SOGoMailComposeMessageType instead - of ComposeMessagesType when checking if we are - using HTML mails composition mode. This fixes - http://www.sogo.nu/bugs/view.php?id=280 - -2009-12-25 Ludovic Marcotte - - * Tools/SOGoToolBackup.m (-fetchUserIDs:): - We now use a local autorelease pool and flush - it after every 100 requests to the LDAP (or - other source type) server. - -2009-12-23 Ludovic Marcotte - - * UI/Scheduler/UIxCalView.m - Don't call -configureFormatters in -init as it'll - invoke labelForKey prior to setPage: - resulting - in the wrong resources manager being selected. - This fixes: http://www.sogo.nu/bugs/view.php?id=286 - - * UI/Templates/ContactsUI/UIxContactFoldersView.wox - UI/Templates/SchedulerUI/UIxCalMainView.wox - Modified the uploadForm in those two templates (to add - const:href="") in order to avoid SOPE sessions being - created upon access to the calendar or address book module. - This fixes: http://www.sogo.nu/bugs/view.php?id=208 - - * SoObjects/SOGo/NSDictionary+Utilities.m (-userRecordAsLDIFEntry) - We skip the "isGroup" attribute from the list of attributes - to include during LDIF generation. This fixes: - http://www.sogo.nu/bugs/view.php?id=221 - - * UI/WebServerResources/SchedulerUI.js - we also invoke - refreshTasks() in onCalendarReload(). This fixes: - http://www.sogo.nu/bugs/view.php?id=250 - -2009-12-22 Ludovic Marcotte - - * Removed all the Kolab-related stuff (more specifically, - associated mail part viewers) - - * Removed all references to "anais" stuff. - - * SoObjects/Mailer/SOGoMailFolder.m (-deleteUIDs:inContext:): - we check if we aren't in the Trash folder already before try to - copy over deleted messages. - - * We now offer a way to delete events from the context menu - in all calendar views. - -2009-12-22 Francis Lachapelle - - * UI/Scheduler/UIxAppointmentEditor.m (-viewAction): added - calendar name in returned dictionary. - -2009-12-22 Wolfgang Sourdeau - - * Tests/test-webdav.py (WebDAVTest.testPrincipalCollectionSet2): - fixed test to use the proper collection URL as expected value, - rather that the freebusy.ifb resource URL. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (_appendComponentProperties:matchingFilters:toResponse:) - (_appendComponentProperties:matchingURLs:toResponse:): ensure that - baseURL ends with "/". - -2009-12-21 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserFolder.m (-fetchContentObjectNames): - fixed a potential crash by removing the "static" attribute of the - "cos" local variable. - -2009-12-19 Ludovic Marcotte - - * SoObjects/Appointments/SOGoUserFolder+Appointments.m - (_davPersonalCalendarURL): We make sure we handle the - presence or not of the trailing slash when we call - -davURLAsString on the parent object. See - http://www.sogo.nu/bugs/view.php?id=74 for - all details. - -2009-12-14 Ludovic Marcotte - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m - Dropped the use of NGMimeType and we now use - the same string decoding method as used - for text/plain parts. - -2009-12-14 Wolfgang Sourdeau - - * Tools/SOGoToolRemoveDoubles.m (-processFolder:ofUser:withFoM:): - same as below. - - * Tools/SOGoToolCheckDoubles.m (-processIndexResults:withFoM:): - same as below. - - * SoObjects/Mailer/NSString+Mail.m - (-stringByConvertingCRLNToHTML): invokde [NSString UTF8String] - rather than cStringUsingEncoding: NSUTF8StringEncoding, since the - latter provokes a crash that the former doesn't. - - * UI/Common/UIxPageFrame.m (_stringsForFramework:): use the system - default when the active user does not resolve. - -2009-12-11 Ludovic Marcotte - - * Added a patch from Albrecht Gebhardt - that offers a "Reload" button in the Web contacts management - module. - -2009-12-11 Wolfgang Sourdeau - - * UI/PreferencesUI/UIxPreferences.m (-setUserShortDateFormat:): - fixed handling of the value "default", which actually should - unset the value in the user defaults. - -2009-12-09 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserFolder.m (-toManyRelationShipKeys) - (-lookupName:inContext:acquire:): fixed typo preventing access to - Contacts module. - -2009-12-08 Wolfgang Sourdeau - - * SoObjects/SOGo/WORequest+SOGo.m (-handledByDefaultHandler): - return "not isSoWebDAVRequest". - - * Main/SOGo.m (-lookupName:inContext:acquire:): ensure the web - access is enabled or the request is a DAV request before - proceeding. - - * SoObjects/SOGo/SOGoUserFolder.m (-toManyRelationShipKeys) - (-fetchContentObjectNames): ensure the proper dav access is - enabled in order before listing the related objects. - - * SoObjects/SOGo/SOGoSystemDefaults.m (-isWebAccessEnabled) - (-isCalendarDAVAccessEnabled, isAddressBookDAVAccessEnabled): new - self-explanatory accessors. - - * Main/SOGo.m (-davURLAsString): we ensure that the url ends with - "/" since the /SOGo object is a collection and the caller may rely - on this. - -2009-12-07 Wolfgang Sourdeau - - * UI/PreferencesUI/UIxPreferences.m (-defaultAction): - setVacationOptions: and setForwardOptions: are now set from here. - - * SoObjects/SOGo/SOGoDomainDefaults.m (-forwardEnabled) - (-vacationEnabled): we must query "SOGoForwardEnabled" and - "SOGoVacationEnabled", respectively. - -2009-12-03 Francis Lachapelle - - * SoObjects/SOGo/iCalEntityObject+Utilities.m (-findParticipant:): - we now search in all attendees, including attendees with role - NON-PARTICIPANT. - -2009-12-02 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserDefaults.m (+initialize): we need to - initialize the profile class from the constructor as this method - may be invoked before all modules are loaded. - - * SoObjects/SOGo/SOGoSource.h: added new "SOGoDNSource" protocol - as a child protocol of "SOGoSource". - - * SoObjects/SOGo/SOGoUserManager.m: added new - "SOGoUserManagerRegistry" class that handles the mapping between - source types and their corresponding classes. - (-[SOGoUserManager registryClass]): new method that returns the - class name of the registry class, which can be overriden to handle - other types. - -2009-12-01 Ludovic Marcotte - - * Reworked the calendar's categories (introduced - the "Meeting" category). - -2009-12-01 Wolfgang Sourdeau - - * UI/Scheduler/UIxComponentEditor.m (-categoryList): the returned - list is now sorted, except if the category of the event was not - always present in the list (kept on top). - - * UI/PreferencesUI/UIxPreferences.m (-categoryList): simplified - method by returning only the array of defined categories from the - user defaults or those defined in the Localizable.strings and sort - the resulting array. - (-categoryColor): new accessor that return the color associated - with the value in the "category" ivar, if not exists, we return - the default from SOGoCalendarDefaultCategoryColor. - (-setCategoriesValue): simplified method since we now receive a - dictionary. The dictionary is now transferred as a JSON object - rather than a property list. - - * SoObjects/SOGo/SOGoUserDefaults.m - (-setCalendarCategoriesColors:, -calendarCategoriesColors): - SOGoCalendarCategoriesColors is now a dictionary. The values are - migrated in _migrateCalendarCategories. - - * SoObjects/SOGo/SOGoDomainDefaults.m - (-calendarDefaultCategoryColor): new accessor for the domain - default SOGoCalendarDefaultCategoryColor. - - * SoObjects/SOGo/SOGoDefaultsSource.m (-boolForKey:) - (-floatForKey:, -integerForKey:, -dataForKey:, -stringForKey:) - (-dictionaryForKey:, -arrayForKey:, -stringArrayForKey:): added - type checking and warnings. - -2009-11-30 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoDefaultsSource.m (-setBool:forKey:): we - encode boolean values as integers to avoid confusing the boolean - objective-c parsers when reading values coming back from the JS - code. - - * UI/WebServerResources/SchedulerUI.js (initCalendars): the - "ShowCompletedTasks" parameter is in the UserSettings dictionary. - - * SoObjects/SOGo/SOGoDefaultsSource.m - (-migrateOldDefaultsWithDictionary:): when migrating between two - existing keys, the new value is automatically overwritten with the - old one, since it causes a problem with the values inherited from - SOGoDefaults.plist. - -2009-11-29 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserManager.m - (-authenticationSourceIDsInDomain:): now takes a domain argument. - Contrarily to contact sources, specifying a domain will cause the - generic sources to be ignored. - (-fetchUsersMatching:inDomain:): now takes a domain argument. - - * SoObjects/SOGo/LDAPSource.m (-initFromUDSource:inDomain): - removed handing of "domain attribute", since the underlying - mechanism causes complex code for an unrealistic case. - -2009-11-28 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserSettings.m: new class module designed to - be the counterpart to SOGoUserDefaults.m. - - * UI/PreferencesUI/UIxPreferences.m (-): "hours" is now a static - variable, rather than an ivar. - - * UI/MainUI/SOGoRootPage.m (+initialize): the supportedLanguages - are not available from the SOGoSystemDefaults - (SOGoDefaults.plist). - - * UI/MailerUI/UIxMailView.m (+initialize): we never used - "SOGoDontUseETagsForMailViewer". - - * UI/MailerUI/UIxMailEditor.m (+initialize): we never used - "SOGoShowInternetMarker" and "SOGoInternetMailHeaders". - - * SoObjects/Mailer/SOGoDraftObject.m (+initialize): - "TextPlainType" was never used. - - * SoObjects/SOGo/SOGoSystemDefaults.m: new class module handling - the getting of system (or "application") defaults, as well as - default values for users and domains. - - * SoObjects/SOGo/SOGoDomainDefaults.m: new class module handling - the getting of domain defaults, as well as default values for for - users belonging to the corresponding domain. - - * SoObjects/SOGo/SOGoUserDefaults.m: new class module handling - the setting and getting of user defaults. - - * SoObjects/SOGo/SOGoLDAPDefaults.h: new protocol module for the - handling of "recursive" ldap defaults. - - * SoObjects/SOGo/SOGoDefaultsSource.m: new module class acting as - a proxy between NSDictionary, NSUserDefaults and SOGoUserProfile, - enabling the possibility of hierarchy and fallbacks. - - * SoObjects/SOGo/SOGoUserProfile.m: new name for SOGoUserDefaults. - (-arrayForKey:, -stringForKey:, -dataForKey:, -boolForKey:) - (-floatForKey:): removed obsolete methods (as well as their setter - counterparts). - - * SoObjects/SOGo/SOGoSQLUserProfile.m: new class module for - handling the SQL backend of the SOGoUserProfile. - - * UI/SOGoUI/WOContext+UIx.m: removed obsolete class. - -2009-11-27 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserDefaults.m (-fetchJSONProfileFromDB): the - isNew flag depends on the presence of the row in the database - rather than on the existence of the value. - -2009-11-26 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserDefaults.m (-synchronize): avoid fetching - the values from the database/the cache when they are successfully - stored. - (-fetchJSONProfileFromDB): sql-quoted quote characters do not - apply here. Therefore we no longer need to unescape them. - - * SoObjects/SOGo/SOGoCache.m (_cacheValues:ofType:forLogin:): we - also fill the local cache with the new value to avoid ignoring it - next time the cache is invoked. - - * SoObjects/SOGo/NSDictionary+BSJSONAdditions.m - (+dictionaryWithJSONString:): method moved from NSDictionary into - NSMutableDictionary for consistency. - -2009-11-26 Ludovic Marcotte - - * SoObjects/Mailer/SOGoMailObject+Draft.m - (_fetchFileAttachmentKey:intoArray:withPath:): we - try to also use basic types (application/, audio/, ...) - when forwarding a mail with attachments and no - Content-Disposition header (or filename) was found. This - avoid losing attachments when forwarding mails. - * UI/PreferencesUI/UIxPreferences.m - We retain/release properly the vacationOptions and - forwardOptions ivars. - -2009-11-24 Francis Lachapelle - - * SoObjects/Mailer/NSData+Mail.m (-decodedHeader): renamed from - decodedSubject. The decoding algorithm is now recursive. - - * SoObjects/Mailer/NSString+Mail.m (-decodedHeader): renamed from - decodedSubject. The string is now decoded by parts. - -2009-11-24 Ludovic Marcotte - - * SoObjects/SOGo/SOGoGroup.m - Initialize the local var entry to nil to avoid - a crash if only one SQL source was specified - - * SoObjects/SOGo/SQLSource.m - Properly invoke cancelFetch on cusors that can return - more than one value (prior to releasing the channel) - -2009-11-23 Wolfgang Sourdeau - - * Tools/sogo-tool.m (main): we check "SOGoUserSources" rather than - the obsolete "SOGoLDAPSources". - -2009-11-20 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoDAVAuthenticator.m (-init): removed method, - removed the "SOGoAuthenticationMethod" user default, which was - never used. - - * SoObjects/SOGo/SOGoWebAuthenticator.m (-init): removed method, - removed the "SOGoAuthenticationMethod" user default, which was - never used. - - * SoObjects/SOGo/SOGoProxyAuthenticator.m (-init): removed method, - removed the "SOGoAuthenticationMethod" user default, which was - never used. - - * Main/sogod.m (prepareUserDefaults): replaces - "convertOldSOGoDomain", automatically set WOMessageUseUTF8, - WOParsersUseUTF8 and NGUseUTF8AsURLEncoding to YES in the user - defaults. - - * SoObjects/SOGo/SOGoUserDefaults.m (_sqlJsonRepresentation:): the - escaping of "\\" was done in the wrong direction. - (-storeJSONProfileInDB:): we commit the transaction to avoid a - lock on the profile table. - -2009-11-19 Francis Lachapelle - - * SoObjects/Mailer/SOGoMailReply.m (-messageBody): don't try to - remove the bottom signature when replying to an email, in order to - avoid situations where a previous message follows the last signature. - -2009-11-19 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserDefaults.m (-fetchJSONProfileFromDB): - extracted the conversion of property list values to JSON values - into a new separate method (-_convertPListToJSON:), that will be - invoked by -jsonRepresentation. - - * SoObjects/SOGo/SQLSource.m (-checkLogin:andPassword:): - (_lookupContactEntry:considerEmail:, -allEntryIDS) - (_lookupContactEntry:consideringEmail:, fetchContactsMatching:): - check whether the channel is valid before using it or report an - error otherwise. Also, we release the channel after our - operations, to avoid creating hundreds of biglions of useless - and stalled connections. - - * SoObjects/SOGo/SOGoUser.m (-userDefaults, -userSettings): the - cache handling has now been put in the SOGoUserDefaults class. - (-primaryUserDefaults, -primaryUserSettings): removed useless - methods. - (-userDefaultsClassName): added accessor to allow different - classes. - - * SoObjects/SOGo/SOGoUserDefaults.m (-primaryFetchProfile): split - method to separate the cache data and the db data. We know invoke - the "jsonRepresentation" method, which is the real data accessor - now. - (-primaryStoreProfile): user profile data is now serialized as a - JSON string in order to avoid constant conversions between the - plist and the json formats, from and to the cache. - (-jsonRepresentation): we now handle the cache data from here, as - it made more sense and reduces the code size in SOGoUser.m. - (-fetchProfile): now a void method. - (-storeJSONProfileInDB:): new method that handles the DB portion - of primaryStoreProfile, providing a corollary to - fetchJSONProfileFromDB. - - * SoObjects/SOGo/SOGoCache.m (+initialize): the memcached host can - now be configured using the "SOGoMemCachedHost" user default. The - method now contains initialization code for global vars that used - to be in -init instead. - (-userSettingsForLogin:,-userDefaultsForLogin:,-userAttributesForLogin:): - refactoring: those accessors now only return an NSString - associated with their respective key. There is no longer any - dictionary de-/serialization occuring in SOGoCache. - - * SoObjects/SOGo/SOGoParentFolder.m (-subFolders): we raise the - exceptions we get only if the current request is a PROPFIND. This - avoids a useless restart of SOGo when the database is down during - the execution of other requests. - - * Tools/sogo-tool.m (main): we now check that the SOGo - configuration is valid and consequently that the tool runs under - the same account as SOGo. - - * UI/Scheduler/UIxComponentEditor.m (-_handleAttendeeData): make - direct use of the JSON constructor of NSDictionary rather than - instantiating an NSScanner. This simplifies the code. - -2009-11-18 Wolfgang Sourdeau - - * SoObjects/SOGo/NSString+Utilities.m (-isJSONString): new utility - method that determines whether the current string is a json - document. - - * SoObjects/SOGo/NSDictionary+BSJSONAdditions.m - (+dictionaryWithJSONString:): this constructor now explicitly - returns an NSMutableDictionary to avoid messing with mutable - copies and useless allocation/deallocation in the callers. - - * Main/SOGo.m (+initialize): removed the "debugObjectAllocation" global - variable since "debugLeaks" has the same meaning. Instantiate a - "SOGoStartupLogger" object in order to avoid using NSLog when the - parent process is starting, in order to work-around the caching of - the pid in NSLog. - -2009-11-16 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoCache.m: "cache", "users" and "localCache" - are now regular ivars. "sharedCache" is now located within the - "sharedCache" constructor. "killCache" is now an instance method. - -2009-11-10 Francis Lachapelle - - * UI/Scheduler/UIxComponentEditor.m (-_handleAttendeesEdition): - avoid scanning JSON when there's no attendee. - -2009-11-10 Wolfgang Sourdeau - - * UI/SOGoUI/UIxComponent.m (-applicationPath): new method that - really returns the name of the WO application. - (-modulePath): renamed the old applicationPath method to be more - accurate about its purpose. - -2009-11-07 Ludovic Marcotte - - * SoObjects/SOGo/SOGoCache.m - if we get a JSON - error when trying to convert our string coming - from memcached, we don't store it to the cache - and we log the error. - * Modified the code so we always use lower-case - headers prior to sending mails. This is to avoid - an uber-lameness in SOPE. Also added warnings - around that code so we can get rid of SOPE-mime, - we'll do things cleanly. - -2009-11-06 Wolfgang Sourdeau - - * UI/WebServerResources/UIxPreferences.js (_setupEvents): we check - whether "categoriesValue" resolves properly before assigning it - a new value. - -2009-11-05 Francis Lachapelle - - * Scripts/updates.php: Minor changes to support when PHP short_open_tag - parameter is set to Off. - - * UI/WebServerResources/ContactsUI.js (getMenus): activated the - list creation option of the addresbooks contextual menu. - - * UI/WebServerResources/SOGoRootPage.js (onFieldKeyDown): don't - submit the form if no password is typed. - -2009-11-04 Francis Lachapelle - - * Major refresh of CSS stylesheets. - * UI/WebServerResources/SOGoAutoCompletion.js - (performSearchCallback): fixed position of popup menu when used in - the contacts list editor. - -2009-11-04 Wolfgang Sourdeau - - * SoObjects/SOGo/NSDictionary+Utilities.m - (+dictionaryFromStringsFile:): instantiate autoreleased objects. - - * SoObjects/SOGo/NSArray+Utilities.m (-jsonRepresentation): - instantiate autoreleased objects. - -2009-10-30 Francis Lachapelle - - * UI/WebServerResources/SchedulerUI.js: the events list is now - refreshed in the AJAX callback. This avoid seeing an empty table - while refreshing the events list. - - * UI/WebServerResources/UIxPreferences.js - (addDefaultEmailAddresses): fixed issue in vacation tab when - adding the defaults values to a empty list. - - * UI/WebServerResources/UIxComponentEditor.js - (onComponentEditorClose): new method that closes definition popup - windows associated to the event (attendees/recurrence/reminder). - -2009-10-28 Francis Lachapelle - - * UI/Contacts/UIxContactView.m (-primaryEmail, -secondaryEmail): - remove double-quotes from FN attribute to avoid JavaScript errors. - - * UI/WebServerResources/UIxMailToSelection.js: removed duplicated - functionality in addressFieldLostFocus. Removed the ability to set - an auto-completion text field to read-only. - - * UI/WebServerResources/UIxListEditor.js: refactoring. - - * UI/WebServerResources/ContactsUI.js: Improved text of import - cards dialog. - - * UI/WebServerResources/SchedulerUI.js: Improved text of import - events dialog. - - * UI/Contacts/UIxListEditor.m (-setReferencesValue:): rewrote - method since only the contacts IDs are received from the web - interface. The names and emails are retrieve from the addressbook. - - * SoObjects/Contacts/SOGoContactGCSFolder.m - (-lookupContactWithName): new method that returns a dictionary - with the attributes of a contact. - - * SoObjects/Appointments/SOGoAppointmentObject.m - (-changeParticipationStatus:withDelegate:forRecurrenceId:): added - exception when delegated user is the organizer. - -2009-10-28 Ludovic Marcotte - - * UI/MailPartViewers/UIxMailPartICalActions.m - (_setupChosenEventAndEventObject:) - we now - correctly save the event contained in the mail - when clicking on Accept/Decline/Delegate into - the user's calendar if it's not in there already. - -2009-10-27 Cyril Robert - - * UI/Common/UIxPageFrame.m (userEmail): Added to display the user's email - address in the linkBanner. - * UI/Contacts/UIxListView.m - (itemHref, itemName, itemEmail): Added to allow clickable email addresses in - UIxListView. - (itemText): Removed, no longer needed. - -2009-10-27 Ludovic Marcotte - - * SoObjects/SOGo/SOGoGCSFolder.m (create) - We send the advisory to the owner of the newly - created collection, not the currently logged on - user (which might be different). The sender will - nevertheless be the currently logged on user, as - it's this particular user that triggered the - creation of the collection. - * Documentation/SOGo Installation Guide.odt - Updated to set WOUseRelativeURLs to YES instead - of NO by default. - * We now correctly lowercase the SOGoLDAPContactInfoAttribute - attribute everywhere. - -2009-10-26 Francis Lachapelle - - * UI/WebServerResources/ContactsUI.js - (onContactDeleteEventCallback): fixed retrieval of card name when - deletion is not possible (caused by a possible bug in prototype.js). - (setEventsOnAddressBook): don't observe the double-click event on - addressbooks not owned by the user. - -2009-10-25 Ludovic Marcotte - - * Fixed many compilation warnings - * Updated the Mobile Device Configuration Guide - in order to document the iPhone OS 3.x configuration - settings (iPhone / iPod) - * UI/Scheduler/UIxComponentEditor.m (_handleCustomRRule:) - Improved the robustness of the code. - -2009-10-24 Ludovic Marcotte - - * Updated the Czech translation - patch from - Milos Wimmer - * Added a French translation of the new Vacation - and Forward preference tabs. - * Updated the French translation in the - Administration module. - * Updated the French translation of the Calendar - properties window. - * Updated the French translation with regard to - event delegation support. - * UI/Scheduler/UIxCalListingActions.m - We now handle BOOL as real BOOL when storing them - in the prefs instead of going with NSNumber. No - need to do that and our JSON generator/parser - will handle this properly. This avoid a dump - crash when toying with the "Show completed tasks" - toggle in the calendar module. - -2009-10-23 Wolfgang Sourdeau - - * SoObjects/Contacts/SOGoContactSourceFolder.m - (-initWithName:andDisplayName:inContainer:): use the source name - when the displayname is nil. - - * SoObjects/SOGo/SOGoUserManager.m (_registerSource:): added - sanity checks and warnings to the user. - -2009-10-23 Ludovic Marcotte - - * SoObjects/SOGo/SOGoUserFolder.m (-subFoldersFromFolder:) - Addded a check to NOT return web calendars in this query. - -2009-10-23 Francis Lachapelle - - * UI/MailerUI/UIxMailMainFrame.m (-formattedMailtoString:): fixed - the case when dealing with a NGVCardReference (from a list) with - no FN attribute and no N attribute. - (-composeAction): fixed the case when dealing with a contact with - no email address. - (-composeAction): fixed the case when dealing with a contact from - an LDAP source. - - * UI/Scheduler/UIxComponentEditor.m (-calendarList): added proper - verification of deletion rights on the current calendar and - creation rights on other calendars. - -2009-10-22 Ludovic Marcotte - - * SoObjects/SOGo/SOGoUserManager.m - Modified so that we throw a warning when there are - no authentication sources defined. - - * Updated all guides in preparation for the release. - -2009-10-21 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-davCalendarTimeZone): new DAV accessor that returns the - user's timezone. - - * SoObjects/Appointments/SOGoUserFolder+Appointments.m - (-davCalendarScheduleInboxURL, davCalendarScheduleOutboxURL): - return nil if used with iCal 4. - - * SoObjects/SOGo/SOGoContentObject.m (-davResourceType): removed - useless method. - - * SoObjects/SOGo/SOGoObject.m (-davURLAsString): new method that - returns the resource url as a string, by taking WOUseRelativeURLs - into account. - - * SoObjects/SOGo/WORequest+SOGo.m (-isICal4): new method that - determines whether to work-around iCal4 calamities. - -2009-10-21 Francis Lachapelle - - * UI/Scheduler/UIxCalListingActions.m - (-_loadScheduleLimitsForUsers:): we must not consider users not - part of the system (no uid). - - * UI/WebServerResources/UIxAttendeesEditor.js - (redisplayFreeBusyZone): removed logic around start/end - minutes. It was breaking the display of an event spanning multiple days. - -2009-10-20 Ludovic Marcotte - - * Added missing timezones - * SoObjects/SOGo/SOGoParentFolder.m: - -davCreateCollection:inContext: - We check, prior to creating the resource, if - where we create it is a supported target. - * SOPE/NGCards/iCalTimeZonePeriod.m - -_occurenceForDate:byRRule: - We correctly compute the number of shifting days - during DST changes. - -2009-10-19 Francis Lachapelle - - * SoObjects/SOGo/NSCalendarDate+SOGo.m: lower the values of - secondsOfDistantFuture and secondsOfDistantPast to solve a problem - with 64bit environment. - - * UI/Scheduler/UIxAppointmentEditor.m - (-startDateIsEqualToEndDate): new method that returns whether or - not the start date is identical to the end date (used for all-day events). - -2009-10-19 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentObject.m - (saveComponent:) - in case of an update, we check - if no organizer was specified when handling - attendees addition to the event. - -2009-10-17 Ludovic Marcotte - - * UI/WebServerResources/UIxListEditor.js (endEditable): - We use "uname" instead of "name" when reading back the - values from the autocompletion code. - -2009-10-16 Francis Lachapelle - - * UI/WebServerResources/SchedulerUI.js (eventsListCallback): don't - set the hour attribute for all-day events. - (changeCalendarDisplay): enable auto-scroll when scrolling - to an event (!). - (refreshCalendarEventsCallback): idem. - (scrollDayView): don't scroll when selecting an all-day event. - - * UI/Scheduler/UIxComponentEditor.m (-_loadRRules): the repeat - rule interval can be set unconditionally for weekly rules. When an - end date or repeat count is defined, the rule must be considered - "custom" in the web interface. - (_handleCustomRRule:): fixed a bug that would set a day mask even - when it was not defined. The day mask is optional in the RRULE definition. - -2009-10-15 Cyril Robert - - * SoObjects/Appointments/SOGoAppointmentFolders.m - (+webdavAclManager): Added to fix issues with iPhones (3.1.2) - * SoObjects/Appointments/SOGoAppointmentFolder.m - (+webdavAclManager): Changed write-properties and write-content to - non-abstract, and set the equivalent for write-content to - SoPerm_AddDocumentsImagesAndFiles - * SoObjects/SOGo/SOGoWebDAVAclManager.m (-copyWithZone:): Added to allow - object copy (useful for SOGoAppointmentFolders) - -2009-10-15 Ludovic Marcotte - - * Added SOPE/NGCards/TimeZones/* - generated from - the official Olson databases. This is to allow SOGo - to include VTIMEZONE components on _new_ events or - tasks, which fix the problem we had with - recurring events over DST changes. - * SOPE/NGCards/iCalTimeZone.m - Introduced a cache for timezone files and added - a method to get it based on its name - * UI/Scheduler/UIxAppointmentEditor.m - UI/Scheduler/UIxTaskEditor.m - Modified the event/task editor to properly - add the timezone component for new events/tasks - * Updated the sogo.spec file to include the - new timezone files. - -2009-10-15 Francis Lachapelle - - * UI/WebServerResources/AdministrationUI.js (help): new function - to display the help from the toolbar instead of the module title. - -2009-10-15 Ludovic Marcotte - - * UI/MailerUI/UIxMailAccountActions.m - We check if the server supports quota prior to asking for - the value. The patchset has also been updated for faster - access of the server's capabilities. - -2009-10-14 Francis Lachapelle - - * UI/PreferencesUI/UIxPreferences.m (-defaultEmailAddresses): new - method that returns a string representation of all the user's - email addresses. - - * UI/WebServerResources/UIxPreferences.js - (addDefaultEmailAddresses): new function that make sure all of the - user's default email addresses appear in the addresses textarea of - the vacation tab. - - * UI/WebServerResources/SchedulerUI.js (changeCalendarDisplay): - don't highlight the day selection when in the day view. - (eventsListCallback): don't popup event window when - double-clicking on D&T events in the top list of the calendar module. - - * UI/Scheduler/UIxCalListingActions.m (_fixDates:): start/end - dates must be adjust for DST only when dealing with the day based - view. No change is required for the month view, except for the - recurrence IDs. - - * UI/Scheduler/UIxComponentEditor.m (-getEventRWType): the user - is not an attendee when dealing with web calendars. - (-_toolbarForOwner:andClientObject:): no toolbar should appear - when dealing with web calendars. - -2009-10-14 Ludovic Marcotte - - * UI/Scheduler/UIxCalMainActions.m - We store the string value of the URL in our - prefs, not the NSURL instance. - -2009-10-13 Ludovic Marcotte - - * SoObjects/SOGo/NSDictionary+BSJSONAdditions.m - Fixed the objCType comparison on GNUstep for boolean - values - we must consider 'c' and 'C'. - * SoObjects/SOGo/SOGoCache.m - Introduce a localCache static variable to avoid going - to memcached all the time. We'll cache values during - the request and flush them after. - * SoObjects/SOGo/SOGoUser.m - Modified -userDefaults to set the timezone when prefs - have first been set. - * SoObjects/SOGo/SOGoUserDefaults.m - Reworked the logic in order to use the correct UPDATE/INSERT - statement when prefs exist or not. Also cleaned up the - types definition. - * UI/PreferencesUI/UIxPreferences.m - Removed worthless NSLog() call. - -2009-10-13 Francis Lachapelle - - * UI/WebServerResources/MailerUI.js (-ICalendarButtonCallback): - delegate the execution of this method to the parent when called - from a popup window. This way, popups are properly reloaded when necessary. - - * SoObjects/Appointments/SOGoAppointmentObject.m (- - _handleAttendee:withDelegate:ownerUser:statusChange:inEvent:): - added proper initialization of variable. - -2009-10-13 Wolfgang Sourdeau - - * UI/Scheduler/UIxComponentEditor.m (-setComponent:): we invoke - _loadAttendee only when "jsonAttendees" is not set, even though - that condition should always be true. - - * UI/PreferencesUI/UIxPreferences.m (-setCategoriesValue): we use - [self errorWithFormat:] rather than NSLog to output - deserialization errors. - - * UI/Scheduler/UIxAppointmentEditor.m (-delegateAction): same as - below. - - * UI/MailPartViewers/UIxMailPartICalActions.m (-delegateAction): - delegatedAttendee is autoreleased to avoid a leak. - - * SoObjects/SOGo/LDAPSource.m (-dealloc): we release the - "searchAttributes" ivar, even though LDAPSource instances are - never deallocated. - - * SoObjects/Mailer/SOGoMailObject+Draft.m (-contentForEditing): - "keys" must be autoreleased to avoid a leak. - - * UI/Common/UIxAclEditor.m (-setUserUIDs): we need to retain the - array of user ids to avoid a zombie. - - * UI/Common/UIxPageFrame.m (-dealloc): we release - additionalCSSFiles to avoid a leak. - -2009-10-12 Ludovic Marcotte - - * Updated patchset to support properly windows-1250 - charset instead of fallbacking stupidly to iso-8859-1 - * Updated version number to 1.1.0 - * Fixed type for the "Administration" module - -2009-10-10 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartICalActions.m (-_emailEvent): - "eventString" is now released to avoid a leak. - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m (-dealloc): ignoreTag - is released, to avoid a leak if the HTML content was not compliant. - - * UI/Contacts/UIxListView.m (-checkListReferences): the copy of - "card" must be released once put in the "invalid" array, in order - to avoid a leak. - - * Main/SOGo.m (-init): released "rm" when no longer needed. - (-dispatchRequest:): simplified leak catching code. - -2009-10-09 Francis Lachapelle - - * UI/PreferencesUI/UIxPreferences.m (+initialize, -init, - -isVacationEnabled, -setEnableVacation:, -enableVacation, - -setAutoReplyText:, -autoReplyText, -setAutoReplyEmailAddresses:, - -autoReplyEmailAddresses, -daysBetweenResponsesList, - -setDaysBetweenResponses:, -daysBetweenResponses, - -setIgnoreLists:. -ignoreLists, -isForwardEnabled, - -setEnableForward:, -enableForward, -setForwardAddress:, - -forwardAddress, -setForwardKeepCopy:, -forwardKeepCopy): added - web elements to set an auto-reply message and forward address in - the preferences window. - (-inTheOffice, setInTheOffice:): removed useless methods. - -2009-10-08 Ludovic Marcotte - - * Added filters support (Vacation and Forward) which - can be enabled using the SOGoVacationEnabled and - SOGoForwardEnabled defaults. One Sieve right now is - support and we assume the Sieve server is the same - as the IMAP server, running on port 2000. - * Cleaned up everything related to the old Sieve stuff - which was now useless with our new implementation. - -2009-10-08 Francis Lachapelle - - * UI/PreferencesUI/UIxPreferences.m (-shortDateFormatsList): added - "default" option. - (-itemShortDateFormatText): added formatting for "default" option. - (-userShortDateFormat): falls back to "default" if not set for the user. - (-setUserShortDateFormat): removes user default if set to - "default". - (-longDateFormatsList, -itemLongDateFormatText, - -userLongDateFormat, -setUserLongDateFormat): new "default" option - support, like for the short date format. - (- timeFormatsList, -itemTimeFormatText, -setUserTimeFormat): new - "default" option support, like for the short date format. - -2009-10-08 Wolfgang Sourdeau - - * SoObjects/SOGo/LDAPSource.m (-_searchAttributes): we already - have knowledge of the LDAPContactInfoAttribute so we no longer - need to fetch it from the user defaults. - - * SoObjects/Contacts/SOGoContactLDIFEntry.m - (-initWithName:withLDIFEntry:inContainer:): we no longer retain - "container" in order to avoid a leak. - (-vCard): we now use the "VCARD" profile, all in upper case. We - first resolve the full name using "c_cn", which is the special key - used by the LDAP sources to access the fullname attribute. - - * Tests/webdavlib.py (MailDAVMailQuery._initSort): now handles the - "order" attribute from the "ascending" parameter. - - * Tests/test-maildav.py (DAVMailCollectionTest._testSort): added a - boolean "ascending" parameter that defaults to True. - (DAVMailCollectionTest.testREPORTMailQueryFilters): method - replacing the filter part of testREPORTMailQuery. - (DAVMailCollectionTest.testREPORTMailQuerySort): method - replacing the sort part of testREPORTMailQuery. - - * SoObjects/Mailer/SOGoMailFolder.m (_sortElementIsAscending:): - new method that determines whether the sort ordering is ascending - or not. - (_sortOrderingsFromSortElement:): new method relacing - "_mailSortingFromSortElement:", that returns an array of - EOSortOrdering instances based on the "sort" element passed as - parameter. - -2009-10-07 Cyril Robert - - * SoObjects/Mailer/EOQualifier+MailDAV.m - (buildQualifierFromFilters:): Now returns an EOQualifier, fixed - qualifier formats and constructor, refactored to regroup code. - * Tests/test-maildav.py (testREPORTMailQuery): Disabled a few - tests that don't pass for now. - * SoObjects/Mailer/EOQualifier+MailDAV.m (buildQualifierFromFilters:): - Removed, everything is now done in (qualifierFromMailDAVMailFilters:). - (qualifierFromMailDAVMailFilters:): Removed all parentheses in - qualifier. - * SoObjects/Mailer/EOQualifier+MailDAV.m - (qualifierFromMailDAVMailFilters:): Fixed segfault when there are - no filters. - -2009-10-07 Francis Lachapelle - - * UI/Scheduler/UIxCalListingActions.m - (-_fetchFields:forComponentOfType:): the _fixDate method must not - be called when in the month view. - -2009-10-07 Wolfgang Sourdeau - - * Tests/webdavlib.py (MailDAVMailQuery._initSort): we now accept - multiple sort parameters. - - * Tests/test-maildav.py (DAVMailCollectionTest._testSort): new - method to test sorting messages. - (DAVMailCollectionTest.testREPORTMailQuery): added some tests for - "SORT". - - * SoObjects/SOGo/SOGoParentFolder.m (-hasLocalSubfolderNamed): - rewritten parts of the method to better fit our coding standards. - Exported method in the SOGoParentFolder.h to avoid warnings where - it's used. - - * SoObjects/Appointments/SOGoAppointmentFolders.m - (_fetchPersonalFolders:withChannel:): we now skip unexisting - folders declared in the list of web folder ids to avoid problems. - When such id is found, it is also reported in the logs to inform - the administrator of this inconsistency. - -2009-10-06 Cyril Robert - - * SoObjects/Mailer/EOQualifier+MailDAV.m (_formattedDate:): New method to - format a date correctly for imap search qualifiers. - (buildQualifierFromFilters:): Fixed selectors in qualifier strings, and - fixed date formatting. - * SoObjects/Mailer/SOGoMailFolder.m - (_fetchMessageProperties:matchingQualifier:andSorting:): Implementation. - (_davPropstatsWithProperties:andMethodSelectors:fromMessage:): Implementation. - (_appendProperties:fromMessages:toResponse:): Implementation. - -2009-10-06 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailFolder.m (_appendMessageData:usingId): - we no longer need to unselect the folder where the "append" - happens since it worked around a deeper bug in sope-mime which has - been fixed in the patchset. - - * SoObjects/SOGo/SOGoGCSFolder.m - (-createChildComponentWithRecord:): made method public. - (-createChildComponentWithName:andContent:): made method public. - - * SoObjects/SOGo/NSArray+DAV.m (-asDAVPropstatWithStatus:): new - method that creates a "PROPSTAT" element with the specified - status. - -2009-10-06 Francis Lachapelle - - * SoObjects/SOGo/SOGoUser.m (_timeValue): improved parsing to - support single integers (not only the XY:00 form). - (-timeFormat): returns the user's time format or system - (SOGoTimeFormat) default if not defined. - (-replyPlacement): honor the system defaults (SOGoMailReplyPlacement). - (-signaturePlacement): honor the system defaults - (SOGoMailSignaturePlacement). - (-messageForwarding): honor the system defaults (SOGoMailMessageForwarding). - - * SoObjects/Mailer/SOGoMailObject+Draft.m (-contentForReply): - reply and signature placement properly honors system defaults - (SOGoMailReplyPlacement and SOGoMailSignaturePlacement). - - * UI/PreferencesUI/UIxPreferences.m (-userTimeFormat): honor the - system defaults through the SOGoUser class. - (-userDayStartTime): idem. - (-userDayEndTime): idem. - (-userMessageForwarding): idem. - (-repyPlacement): idem. - (-signaturePlacement): idem. - - * UI/Scheduler/UIxCalDayTable.m (-hoursToDisplay): honor the - system defaults through the SOGoUser class. - - * UI/WebServerResources/UIxPreferences.js (-initPreferences): fix - to properly set the initial status of the signature placement - select field. - -2009-10-05 Wolfgang Sourdeau - - * Tests/test-maildav.py (DAVMailCollectionTest._testFilter): fixed - to use the "test-dav-mail" folder name as collection during the - tests. - - * SoObjects/Mailer/SOGoMailFolder.m (-davMailQuery): new method - implementing the "mail-query" REPORT for Inverse's maildav - protocol. - (-parseDAVRequestedProperties:): new method making use of the - "davIMAPFieldsTable" method below for parsing fields in the - mail-query request. - (-_mailSortingFromSortElement:): new method to parse the "sort" - element of mail-query requests. - (-_fetchMessageProperties:matchingQualifier:andSorting:): new - stub for a method that will fetch the IMAP messages based on the - criteria found above. - (-_appendProperties:fromMessages:toResponse:) new stub for a - method that will add the content of the resulting set of message - properties to the DAV response. - -2009-10-05 Cyril Robert - - * SoObjects/Mailer/SOGoMailFolder.m (-davIMAPFieldsTable): new - method designed to match maildav properties on mail objects with - IMAP fields, for PROPFIND and REPORT methods. - - * Tests/test-webdavlib.py: Added new tests for the URL parser / regexp. - - * Tests/webdavlib.py: Fixed errors in the URL regexp. - - * SoObjects/Mailer/EOQualifier+MailDAV.m: New category to generate IMAP - qualifiers from DAV filters. (REPORT) - (buildQualifierFromFilters:): Formatted dates using [NSCalendarDate - rfc822DateString]. Added NOT and extra fields. - -2009-10-04 Ludovic Marcotte - - * Adjusted the Welsh and Dutch templates for - mail invitations - we were missing classes resulting - in crashers. - -2009-10-02 Wolfgang Sourdeau - - * Tests/webdavlib.py (MailDAVMailQuery): new class that implements - the "mail-query" DAV REPORT. - (WebDAVQuery._initProperties): new helper methods invoked by - PROPFIND and REPORT classes at initialization to format the "prop" - part of their query. - (HTTPUnparsedURL._parse): accept more valid URL characters. - - * Tests/test-maildav.py - (DAVMailCollectionTest.testREPORTMailQuery): new method with - initial tests for "mail-query" report. - -2009-10-01 Cyril Robert - - * SoObjects/Mailer/SOGoMailObject.m: Added methods required for PROPFIND / - REPORT: _fetchProperty:, _hasFlag:, _emailAddressesFrom:, davDate, - hasAttachment, read, textDescription, cc, from, inReplyTo, messageId, - received, references, davDisplayName, to - * Tests/test-maildav.py (testPROPFIND): Added tests for the new MailDAV - PROPFIND. - * UI/PreferencesUI/UIxPreferences.m (languages, language, setLanguage:, - languageText): Added to support changing the language from the Preferences - dialog. - -2009-10-01 Cyril Robert - - * SoObjects/Mailer/SOGoMailFolder.m - (-appendMessage:inContext:usingId:): we no longer instantiate the - message to check whether it exists since we trust the fact that we - would receive an error from NGImap if the creation failed. - -2009-10-01 Wolfgang Sourdeau - - * Tests/test-webdavlib.py: new test script for testing the - webdavlib library itself. - (HTTPUnparsedURLTest.testURLParse): new test case for the new - HTTPUnparsedURL class. - - * Tests/webdavlib.py (HTTPUnparsedURL): new utility class for - consistently parsing url strings - - * Tests/test-maildav.py (DAVMailCollectionTest.testPUT): fixed to - delete the test collection prior to the test - - * SoObjects/Appointments/SOGoAppointmentFolders.m - (-proxyFoldersWithWriteAccess:): return an autoreleased - "proxyFolders" to avoid a leak. - - * Tests/test-maildav.py (DAVMailCollectionTest._putMessage): - messages have "message/rfc822" mime-type. - (DAVMailCollectionTest.setUp): use servername - -2009-09-30 Wolfgang Sourdeau - - * SoObjects/SOGo/LDAPSource.m (-init): removed "ldapConnection" - ivar, since we now always use it as an autoreleased local value. - (-_ldapConnection): modified implementation of - "_initLDAPConnection" that now returns an autoreleased instance of - NGLdapConnection or nil. - - * UI/MailerUI/UIxMailMainFrame.m (-_setupContext): if - "moduleSettings" is non-nil, we don't reset it in the user - defaults. - (-composeAction): autorelease "addresses" to avoid a leak. - -2009-09-29 Cyril Robert - - * SoObjects/Mailer/SOGoMailFolder.m (PUTAction:, _appendMessageData:usingId:): - Added new methods to enable MailDAV PUT on a collection. - * SoObjects/Mailer/SOGoMailBaseObject.m (IMAP4IDFromAppendResult:): Moved - here, since SOGoDraftObject and SOGoMailFolder need it. - * SoObjects/Mailer/SOGoDraftObject.m (_IMAP4IDFromAppendResult): Removed, - replaced by [SOGoMailBaseObject IMAP4IDFromAppendResult:]. - * SoObjects/SOGo/SOGoObject.m: Changed file extension from "mail" to "eml". - * SoObjects/Mailer/SOGoMailAccount.m: Added accountName to fix errors in MailDAV. - * SoObjects/Mailer/SOGoMailAccounts.m: Added management for account names - to fix errors in MailDAV. - * SoObjects/Mailer/SOGoMailFolder.m (appendMessage:): Added this method to - facilitate the PUT from a SOGoMailObject. - * SoObjects/Mailer/SOGoMailObject.m (PUTAction:): Added to enable MailDAV - PUT on a non-existing object. - * UI/MailerUI/UIxMailMainFrame.m (mailAccounts): Changed the return value to - include both the account name and display name. - * UI/MailerUI/UIxMailMainFrame.m: Fixed an error when composing from the - Address Book module. - -2009-09-29 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoObject.m (SOGoSelectorForPropertyGetter) - (SOGoSelectorForPropertySetter): fixed a case where propSel should - be initialized to NULL. - - * SoObjects/SOGo/SOGoGroup.m (-members): we now cache the array of - members as an ivar. - (-hasMemberWithUID): new self-explicit method. - - * SoObjects/SOGo/SOGoGCSFolder.m - (_fetchAclsForUser:forObjectAtPath:): refactored method to make it - actually work for group searches, without unitialized data and to - clarify code. - - * SoObjects/SOGo/SOGoObject.m - (_urlPreferringParticle:overThisOne:): instead of risking - confusion between SOPE, NSURL and friends, we revert this change - (see below) and choose other ways to avoid escaping of "@", "%", - etc... - - * SoObjects/SOGo/NSString+Utilities.m (-stringByEscapingURLPart): - (revert) removed useless method. - -2009-09-28 Cyril Robert - - * SoObjects/Appointments/SOGoAptMailInvitation.m: Added Spanish definition. - * SoObjects/Appointments/SOGoAptMailICalReply.m: Added Spanish definition. - * SoObjects/Appointments/SOGoAptMailDeletion.m: Added Spanish definition. - * SoObjects/Appointments/SOGoAptMailUpdate.m: Added Spanish definition. - * SoObjects/SOGo/NSString+Utilities.m (stringByEscapingURLPart): Added to - fix the URL parts for MailDAV - * SoObjects/Mailer/SOGoMailAccount.m (toManyRelationshipKeys): Added the - "folder" prefix for MailDAV compatibility. - * SoObjects/SOGo/SOGoObject.m (_urlPreferringParticle:): Fixed URL escaping - to make paths work in MailDAV. - -2009-09-28 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUser.m (+initialize): avoid a crash when - SOGoProfileURL is not set. - -2009-09-27 Ludovic Marcotte - - * Reworked the UIxMailPartSignedViewer to inherit - from UIxMailPartMixedViewer. - * UI/WebServerResources/SchedulerUI.js - We allow empty calendar imports. - * Avoid assumptions for .ics presence on URL - subscriptions. - -2009-09-25 Ludovic Marcotte - - * Renamed SoObjects/Contacts/SOGoContactLDAPFolder to - SoObjects/Contacts/SOGoContactSourceFolder - * Renamed SoObjects/SOGo/LDAPUserManager to - SoObjects/SOGo/SOGoserManager.m - * Added SoObjects/SOGo/SOGoSource.h and - SoObjects/SOGo/SQLSource.{h,m} - We now support authentication and address book sources - coming from a SQL database. This can be used concurrently - with LDAP sources. Modified many classes to reflect this - change. - * SoObjects/SOGo/LDAPSource.m - We trim the bind field value prior to adding it to our - LDAP search filter. - * UI/MailPartViewers/UIxMailPartSignedViewer.m and friends: - We now show more information on the S/MIME encoded messages. - We also handle correctly multipart/alternative messages. - -2009-09-24 Cyril Robert - - * SoObjects/Appointments/SOGoAppointmentFolder.m (bareFetchFields:): Handled - the Exception when all conditions are nil. - * SoObjects/Contacts/NGVCard+SOGo.m (ldifString): Made corrections - reflecting from the fixes in NGVCard to properly format an address. - -2009-09-23 Cyril Robert - - * SoObjects/Appointments/SOGoAppointmentFolder.m (importComponent:): Fixed - addition of BEGIN/END block. - * SoObjects/Appointments/SOGoWebAppointmentFolder.m (deleteAllContent): - Created deleteAllContent to be able to change it in the store bundle. - * UI/Scheduler/UIxCalMainActions.m (addWebCalendarAction): Small improvement. - -2009-09-23 Wolfgang Sourdeau - - * UI/WebServerResources/SOGoAutoCompletion.js - (SOGoAutoCompletionInterface.onKeyDown): (needs review) we don't - overwrite the input's name attributes with the "uname". Otherwise - the form will not have the correct data when submitted and the - to/cc/bcc fields will be ignored. - -2009-09-23 Ludovic Marcotte - - * UI/PreferencesUI/UIxPreferences.m - We now fallback to the default system selected day. - -2009-09-22 Ludovic Marcotte - - * Updated the documentation for the Invisible -> Flagged - mail column change. - * SoObjects/Contacts/NGVCard+SOGo.m - better error-handling. - -2009-09-22 Cyril Robert - - * UI/Scheduler/UIxCalFolderActions.m (exportAction): Used - bareFetchFields from SOGoAppointmentFolder instead of fetchFields - from SOGoGCSFolder. - -2009-09-22 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailObject.m (-fetchPlainTextParts:): - handle the fact that the "fetch" key in a RawResponse (NGHashMap) - may not be the only response. Since [NGHashMap objectForKey:] - returns only the first one, we use the new "flattenedDictionaries" - to make sure we can retrieve all requested keys. - - * SoObjects/SOGo/NSArray+Utilities.m (-flattenedDictionaries): new - method that merges the keys and values of all contained - dictionaries into one single dictionary. - - * Tests/webdavlib.py (_WD_XMLTreeElement.__init__): added a new - optional parameter "attributes" that enables the setting of - element attributes during the rendering of the element. - - * Tests/webdavlib.py (CalDAVCalendarQuery): new subclass of - WebDAVReport that handles "calendar-query" reports. - - * UI/MailerUI/UIxMailListView.m (+initialize): new method - initialized the two new global NSArray: defaultColumnOrder - (hardcoded values), udColumnOrder (system default values). - (-columnsDisplayOrder): we now cache the resulting set of keys. - We also test for the presence of invalid keys by comparing the - configured array with the hardcoded one above. - (-setCurrentColumn:, currentColumn): new accessors. - -2009-09-21 Ludovic Marcotte - - * SOPE/NGCards/versitCardsSaxDriver/VSSaxDriver.m - Avoid lameness when handling QP-encoded content. - -2009-09-21 Wolfgang Sourdeau - - * UI/WebServerResources/MailerUI.js (updateMailboxTreeInPage): - we assign the "quotaIndicator" to the quota DIV and when replacing - it, we ensure the DIV doesn't already exists. - -2009-09-21 Cyril Robert - - * UI/Scheduler/UIxCalMainActions.m (displayNameForUrl:): The calendar's - display name is extracted from the URL for web calendars. - * UI/Scheduler/UIxCalendarProperties.m (webCalendarURL, isWebCalendar): - Added new methods to display a web calendar's url in the properties dialog. - -2009-09-21 Ludovic Marcotte - - * Updated the contact import text to be more - precise with regard to support input formats. - -2009-09-19 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserDefaults.m - (-initWithTableURL:uid:fieldName:): removed the "shouldPropagete" - parameter. - (-primaryStoreProfile): we now propagate the values in the cache - unconditionally. - - * SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): - the trust no longer prevent user settings and defaults to - propagate in the cache, since we no longer use gdnc for it. - -2009-09-18 Wolfgang Sourdeau - - * UI/WebServerResources/generic.js (onLoadHandler): don't trigger - the alarm refresh if the "calendarBannerLink" link is not - available (when calendar is disabled). - - * UI/WebServerResources/UIxPreferences.js (initPreferences) - (savePreferences): don't bother with the categoriesList if it's - not accessible (when calendar is disabled). - -2009-09-17 Wolfgang Sourdeau - - * Tests/test-config.py: new functional test to validate the test - configuration file. - - * UI/PreferencesUI/UIxPreferences.m (-userComposeMessagesType): - return a default value of @"text" if the default compose type has - never been changed by the user. Otherwise, saving the preferences - will never enable the window to be closed since the new value will - always be different from nil. - -2009-09-17 Cyril Robert - - * UI/Contacts/UIxListEditor.m: Renamed "name" to "listName" - -2009-09-16 Ludovic Marcotte - - * Updated the ICS import text to be more specific - * We now warn for no SSL bundle in GNUstep when - trying to load a remote ICS file and it's failing - over SSL. It's a guess but it's better than nothing. - -2009-09-16 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m (-lookupName:inContext:acquire:): - instanciated objects may be queried twice during the same session, - before being saved into the database. Therefore we cache them to - avoid losing their version number. - - * UI/WebServerResources/AdministrationUI.js, - UI/WebServerResources/ContactsUI.js, - UI/WebServerResources/MailerUI.js, - UI/WebServerResources/MailerUIdTree.js, - UI/WebServerResources/SchedulerUI.js, - UI/WebServerResources/UIxAclEditor.js, - UI/WebServerResources/UIxCalendarProperties.js, - UI/WebServerResources/UIxComponentEditor.js, - UI/WebServerResources/UIxContactsUserFolders.js, - UI/WebServerResources/UIxMailEditor.js, - UI/WebServerResources/UIxPreferences.js, - UI/WebServerResources/UIxTaskEditor.js, - UI/WebServerResources/generic.js: renamed the function "label" to - "getLabel" to avoid overriding local function variables. - -2009-09-14 Wolfgang Sourdeau - - * UI/WebServerResources/MailerUI.js (configureLoadImagesButton): - retrieve all "img" elements with an "unsafe-src" attribute and - remember them in an array attached to $("messageContent"). We also - void using "delete" on the stored array because IE 7 is too dumb. - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m - (-startElement:namespace:rawName:attributes:): treat tag names as - lowercase (xhtml compliance). Replace all "src" tagnames with - "unsafe-src" for distant images. No longer take an "unsafe" url - parameter into account. - - * UI/MailPartViewers/UIxMailPartSignedViewer.[hm]: new module - class that implements the viewer for multipart/signed messages. - - * UI/WebServerResources/MailerUI.js (configureSignatureFlagImage): - new method that check whether the message being displayed is - signed and if so, displays the proper image depending on the - validation status. - -2009-09-14 Cyril Robert - - * UI/Common/UIxPageFrame.m (commonLocalizableStrings): clabels are no longer - necessary in popup windows. - -2009-09-13 Wolfgang Sourdeau - - * UI/WebServerResources/SOGoRootPage.js (onLoginClick): avoid - setting an empty string as value to "document.cookie" since this - will actually create a cookie. - - * UI/MainUI/SOGoUserHomePage.m (-logoffAction): fixed a typo in - the "cache-control" header. - - * Main/SOGo.m (-sessionIDFromRequest:): overriden method that - returns nil to avoid any session cookie to be set by SOPE. - -2009-09-11 Cyril Robert - - * UI/Contacts/UIxContactFoldersView.m (allContactSearchAction): Added - support for excludeLists, to prevent listing vList entries. - -2009-09-11 Wolfgang Sourdeau - - * UI/MainUI/SOGoUserHomePage.m (-logoffAction): adjusted to handle - the case where then authenticator doesn't handle authentication - cookies. In such cases, this method should theorically never be - invoked though. - - * UI/Common/UIxPageFrame.m (-canLogoff): new bool accessor that - returns whether the current authenticator handles user - disconnection or not, in which case we hide the "logoff" link in - the UIxPageFrame. - - * SoObjects/SOGo/SOGoCache.m (-registerUser:withName:): adjusted - method to take an additional "userName" parameter in order to - store users with the username used at login time rather than their - user id. This is especially useful when using indirect binds. - - * SoObjects/SOGo/LDAPSource.m (-_qualifierForUIDFilter:): we - include the bindFields in the request if they are specified in the - configuration. - - * Main/SOGo.m (-authenticatorInContext:): we no return an instance - of SOGoProxyAuthenticator if "SOGoTrustProxyAuthentication" is - set in the configuration. - - * SoObjects/SOGo/SOGoProxyAuthenticator.[mh]: new class module - that defines an authenticator that unconditionnaly trusts and - handle authentication done proxy-side. SOGo uses that - authenticator when the "SOGoTrustProxyAuthentication" user default - is set. The username is taken from the "x-webobjects-remote-user" - http header, you may have to adapt your proxy configuration - accordingly. - -2009-09-10 Francis Lachapelle - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -_handleAttendeesEdition]): the attendees list is now submited as - a JSON string. - ([UIxComponentEditor -_loadAttendees]): constructs a dictionary - with the attendees' information that will be passed as a JSON - string to the template. - - * UI/MailPartViewers/UIxMailPartICalViewer.m - ([UIxMailPartICalViewer -currentAttendeeClass]): new method that - returns the attendee's partstat as the CSS class and adds - "attendeeUser" if the attendee is the active user. - - * UI/MailPartViewers/UIxMailPartICalActions.m (-): added delegateAction. - - * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView - -allContactSearchAction]): added the possibility to pass the form - parameter "excludeLists" in order to avoid returning groups. - - * SoObjects/SOGo/LDAPSource.m ([LDAPSource - _convertLDAPEntryToContact:]): added a key named "isList" to the - data representation of the LDAP entry if it matches specific objectClasses. - - * SoObjects/Appointments/SOGoAptMailICalReply.m - ([SOGoAptMailICalReply -getBody]): trim spaces before returning - the body. - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject - -_handleAttendee:withDelegate:ownerUser:statusChange:inEvent:]): - added support for invitation delegation. - ([SOGoAppointementObject - -_updateAttendee:withDelegate:ownerUser:forEventUID:withRecurrenceId:withSequence:forUID:shouldAddSentBy:]): - fixed the case of chained delegates. - ([SOGoAppointmentObject - -changeParticipationStatus:withDelegate:forRecurrenceId:]): when - delegating an invitation, verify that the delegated is not already - a participant nor a group of users. - -2009-09-10 Cyril Robert - - * SoObjects/Appointments/SOGoWebAppointmentFolder.m: New - SOGoAppointmentFolder subclass to manage iCal subscriptions. - * UI/Scheduler/UIxCalMainActions.m: New action class to handle actions on - the main calendar. - * SoObjects/Appointments/SOGoAppointmentFolder.m (importCalendar:): New - method to import everything from an iCalCalendar. (Refactoring from - UIxCalFolderActions) - * SoObjects/Appointments/SOGoAppointmentFolders.m (webCalendarIds): New - method to get uids of web calendar folders. - (_fetchPersonalFolders: withChannel:): Wrap the parent method to replace web - calendar folders with the correct class: SOGoWebAppointmentFolder. It also - removes invalid references in the WebCalendars setting. - * UI/Scheduler/UIxCalFolderActions.m (importAction): Moved a big part of the - method to [SOGoAppointmentFolder importCalendar:]. - * SoObjects/Appointments/SOGoWebAppointmentFolder.m (delete): Wrap the - parent method to remove the calendar for the user's settings. - * SoObjects/Appointments/SOGoWebAppointmentFolder.m: Added some error - management, for when the url is invalid / not ical / etc. - * SoObjects/SOGo/SOGoGCSFolder.m (_fetchAclsForUser: forObjectAtPath:): - Ignore group acls if we found acls for the user. - * UI/Contacts/UIxListView.m (propertiesAction): Added to list references - from a vList. - -2009-09-10 Wolfgang Sourdeau - - * UI/Scheduler/UIxComponentEditor.m (-setComment,comment): - properly substitute the form-provided "\r\n" sequences with "\n" - sequences and vice-versa. - -2009-09-09 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-_getMaxStartDate): do not compute the start date if the active - user is a super user. - (_enforceTimeLimitOnFilter:withStartDate:andEndDate:): same as - above. - - * SoObjects/SOGo/SOGoUser.m (-rolesForObject:inContext:): directly - invoke [self isSuperUser] - -2009-09-09 Cyril Robert - - * Tools/NSDictionary+SOGoTool.m: Removed, all methods were moved to - SoObjects/NSDictionary+Utilities.m, or SoObjects/NSString+Utilities.m - * UI/Contacts/UIxContactFolderActions.m: New class to handle actions on a - single contacts folder. (import/export) - * UI/Scheduler/UIxCalFolderActions.m: New class to handle actions on a - single agenda folder. (import/export) - * SoObjects/SOGo/NSDictionary+Utilities.m: Added userRecordAsLDIFEntry. - * SoObjects/SOGo/NSString+Utilities.m: Added methods useful for - userRecordAsLDIFEntry. - * UI/Contacts/UIxContactsListView.m: Removed import/export actions - * UI/Scheduler/UIxCalView.m: Removed import/export actions - * SoObjects/Contacts/NGVCard+SOGo.m: Added a new category to remove a - circular dependency issue. - * SoObjects/Contacts/NGVList+SOGo.m: Added a new category to remove a - circular dependency issue. - * UI/Contacts/UIxContactFolderActions.m: Changed import instructions to use - the new category. - -2009-09-03 Cyril Robert - - * UI/Contacts/UIxContactsListView.m: Added ldif / vcard import - * UI/Contacts/UIxContactsListView.m: Changed return types to know how many - cards were imported. - -2009-09-02 Cyril Robert - - * UI/Contacts/UIxContactsListView.m (exportAction): Added to support export. - * UI/Scheduler/UIxCalView.m (exportAction): Added to support export. - * SoObjects/Appointments/SOGoAppointmentFolder.m (importComponent): Added to - support import. - * UI/Scheduler/UIxCalView.m (importAction): Added to support import. - -2009-08-27 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoCalendarProxy.[hm]: new class module - implementing the caldav proxy collections mentionned below. This - is a subclass of SOGoFolder. - - * SoObjects/SOGo/WORequest+SOGo.m (-isAppleDAVWithSubstring:): new - method. - (-isICal): new method. - - * SoObjects/SOGo/SOGoUserFolder.m - (-calendarProxy:withWriteAccess:): new method that instantiate a - proxy collections for read and write delegations. - - * SoObjects/SOGo/SOGoParentFolder.m (-initSubscribedFolders): we - now make use of appendSubcribedSources with which we shared code. - - * SoObjects/SOGo/SOGoGCSFolder.m (-subscribeUser:reallyDo:): new - simplified and published version of - subscribe:inTheNamesOf:fromMailInvitation:inContext:. - - * SoObjects/SOGo/SOGoFolder.m (-davGroupMemberSet) - (davGroupMembership): new DAV accessors that return an empty - array. - - * SoObjects/Appointments/SOGoUserFolder+Appointments.m - (-davGroupMembership): new DAV accessor. - - * SoObjects/Appointments/SOGoAppointmentFolders.m - (-toManyRelationshipKeys): overriden method for iCal: we don't - list the folders to which the current user is subscribed to - (because the iCal paradigm now requires calendar proxying), we - don't list the folders to which a delegator has subscribed to - either nor any of his/her secondary calendars. - (-proxyFoldersWithWriteAccess:): new methods that returns the list - of personal folder on which we are allowed to act as a proxy. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-requiredProxyRolesWithWriteAccess:): new method that returnes - the roles required for read/write proxying of users. - (-proxySubscribersWithWriteAccess:) - (setProxySubscribers:withWriteAccess:): new accessors making use - of the new method above. - - * Tests/test-caldav-scheduling.py: new set of tests for CalDAV - scheduling (iTIP-over-DAV) operations. Implemented 9 scenarios for - invitation delegation. - - * SoObjects/Appointments/SOGoAppointmentObject.m - (_updateAttendee:withDelegate:ownerUser:forEventUID:withRecurrenceId:): - added "withDelegate:" parameter in order to be able to add or - remove the delegate corresponding to the attendee delegation. We - also adjust the "delegated-to:" and "delegated-from:" in the - corresponding attendee element from the event copy. - (-postCalDAVReplyTo:from:): deduce the delegate from the matching - attendee and pass it as parameter to subsequent method calls. - (-takeAttendeeStatus:withDelegate:from:withRecurrenceId:) - (changeParticipationStatus:withDelegate:forRecurrenceId:): take a - new "withDelegate:" parameter. - - * Tests/webdavlib.py (HTTPQuery.__init__): the content-type is no - longer passed as parameter and should be directly set by the - client as an attribute. - (HTTPSimpleQuery.prepare_headers): new method to enable - query-specific headers. - (CalDAVPOST.__init__): new query type - -2009-08-26 Wolfgang Sourdeau - - * UI/MainUI/SOGoUserHomePage.m (-defaultAction): when the user has - never logged in or switched module, the SOGoUIxLastModule - preference would never be set, causing a crash when the moduleURL - was created, because of a nil parameter. Also, the "defaultModule" - global variable was set to the userDefinedModule, which is - simply wrong as the global variable impacts all the users and need - to be kept intact. - - * SoObjects/Appointments/SOGoAptMailReceipt.[hm]: new module - containing the template code for sending event receipts. - -2009-08-25 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUser.m (+userWithLogin:): new constructor - designed to avoid the need to pass a nil role parameter. - - * SoObjects/Appointments/SOGoCalendarComponent.m - (-sendReceiptEmailUsingTemplateNamed:forObject:to:) new method - that enables the sending of receipts to an event modifier in case - of an invitation, modification or deletion. - -2009-08-25 Cyril Robert - - * SoObjects/Contacts/SOGoContactGCSList.m (copyToFolder): Implementation to - support copying lists. - * UI/Scheduler/UIxCalDayTable.m: Added support for TimeFormat default. - -2009-08-24 Cyril Robert - - * UI/MailerUI/UIxMailMainFrame.m: Refactoring + added vLists support. - * UI/Contacts/UIxListEditor.m: Implementation. - * UI/Contacts/UIxContactsListView.m (contactSearchAction): added to support - search in a single folder. - -2009-08-21 Cyril Robert - - * UI/Contacts/UIxListView.m: Implementation, allows VLISTs to be displayed. - * UI/Contacts/UIxListView.m (checkListReferences): Added list integrity - verification (make sure all references are valid). - -2009-08-21 Wolfgang Sourdeau - - * Tests/webdavlib.py (WebDAVQuery.xpath_evaluate): new method to - facilitate xpath evaluation from tests. - -2009-08-20 Cyril Robert - - * UI/Common/UIxParentFolderActions.m (createFolderAction): Mantis 2040: - return a 409 code when a folder with the same name exists. - * SoObjects/SOGo/SOGoParentFolder.m (hasLocalSubFolderNamed): Added for - Mantis 2040. - * UI/Scheduler/UIxDatePicker.m: Fix to use user-defined format, if any. - Mantis 1911. - * UI/Scheduler/UIxDatePicker.m: Removed changes from 1911: too many issues. - * UI/Scheduler/UIxCalFilterPanel.m (selectedFilter): Added support for - CalendarDefaultFilter user default. Mantis 112 - * UI/Scheduler/UIxCalListingActions.m (checkFilterValue): Added to support - CalendarDefaultFilter user default. Mantis 112 - * SoObjects/SOGo/SOGoUser.m: Changed "signature" setting's place: MailSignature - Mantis 113. - * UI/PreferencesUI/UIxPreferences.m: Support for MailSignature setting. - Mantis 113. - * SoObjects/SOGo/SOGoUser.m (migrateSignature): Added. Mantis 113. - * SoObjects/SOGo/LDAPUserManager.m: Changed addObjectUniquely to addObject. - Mantis 113. - -2009-08-19 Cyril Robert - - * UI/MainUI/SOGoUserHomePage.m (defaultAction): Added support for SOGoUIxDefaultModule - * UI/PreferencesUI/UIxPreferences.m: Added: availableModules, - itemModuleText, userDefaultModule, setUserDefaultModule to support - SOGoUIxDefaultModule in the preferences UI. - * UI/Contacts/UIxContactFoldersView.m (checkDefaultModulePreference): Added - to support "Last" SOGoUIxDefaultModule value. - * UI/MailerUI/UIxMailListView.m (checkDefaultModulePreference): Added to - support "Last" SOGoUIxDefaultModule value. - * UI/Scheduler/UIxCalMainView.m (checkDefaultModulePreference): Added to - support "Last" SOGoUIxDefaultModule value. - * UI/MailerUI/UIxMailListView.m (isMessageFlagged): Added for Mantis 1428 - * UI/MailerUI/UIxMailActions.m (markMessageFlaggedAction, - markMessageUnflaggedAction): Added to support flagging - * UI/MailerUI/UIxMailListView.m: Renamed Invisible to Flagged - * UI/MailerUI/UIxMailMainFrame.m: Renamed Invisible to Flagged - -2009-08-19 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoObject.m (-parseETagList:): greatly - simplified method by using the "trimmedComponents" utility method. - - * SoObjects/SOGo/SOGoContentObject.m (-PUTAction:): removed "new" - hack. Sanitized var names. - -2009-08-18 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m - (-initializeQuickTablesAclsInContext:): don't give the right to - view everything to users who can delete objects. This may cause - deletion from working from a web method, but everyone who uses - such as configuration will probably use DAV instead. - -2009-08-18 Francis Lachapelle - - * UI/Scheduler/UIxCalendarProperties.m ([UIxCalendarProperties - -allCalendarSyncTags]): new method that returns a concatenated - string of all the sync tags of the other calendars. - ([UIxCalendarProperties -mustSynchronize]): new method that - returns true if the calendar must be synchronized, ie if it's the - personal calendar. - ([UIxCalendarProperties -synchronizeCalendar]): new method that - returns true if the calendar must be synchronized or is set to be synchronized. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -_setCalendarProperty:forKey:]): new - common method for all methods that need to set a property in the - user's settings. - -2009-08-17 Cyril Robert - - * UI/Scheduler/UIxCalListingActions.m: Added support for new user default: - ShowCompletedTasks. - -2009-08-17 Ludovic Marcotte - - * SoObjects/SOGo/LDAPSource.m - Safety check in case no objectClass attribute is returned - from the LDAP server - * Updated NEWS file - -2009-08-14 Francis Lachapelle - - * UI/AdministrationUI/UIxAdministration.m: new administration - module. Initial functionalities are limited to ACLs management. - -2009-08-14 Wolfgang Sourdeau - - * Tools/SOGoToolBackup.m (-parseArguments): modified to either - accept "ALL" or a list of identifiers as arguments. - - * Tools/SOGoToolRestore.m: new "sogo-tool" utility that restores - the specified user data previously created by the "backup" - command. - (+initialize): load the "Appointments.SOGo" and "Contacts.SOGo" - bundle in order to access some categories found therein that are - used by OGoContentStore. - (-parseModeArguments) mode arguments are now put at the beginning - of the command parameter string. Added "-F" mode that acts - "destructivelly". Added "-l" mode that enables the listing of - folders previously backed up. - (-createFolder:withFM:): new method that enables the restoration - of folders that were previously deleted. - - * Tools/SOGoToolBackup.m (-extractUserPreferences:intoRecord:): we - must extract the values of the user defaults in order to put them - in the record dictionary. Putting the defaults themselves will - only produce serialized strings. - -2009-08-13 Wolfgang Sourdeau - - * SoObjects/SOGo/LDAPSource.m: the objectClass are now all added - to the return user records. - - * Tools/NSDictionary+SOGoTool.m (-userRecordAsLDIFEntry): new - method that converts a user record as returned by LDAPSource to a - compliant LDIF entry. - - * Tools/NSDictionary+SOGoTool.[hm]: new category module. - - * Tools/SOGoToolBackup.m: new "sogo-tool" utility that backs up - user data following the file-format specified in README.backup - - * Tools/SOGoToolRemoveDoubles.m: new "sogo-tool" utility method - implementing the old "sogo-contacts-removedoubles" utility. - - * Tools/SOGoToolCheckDoubles.m: new "sogo-tool" utility method - implementing the old "sogo-contacts-checkdoubles" utility. - - * Tools/SOGoTool.m: new class module implementing the base class - for all management modules for "sogo-tool". - - * Tools/sogo-tool.m: new command-line tool that offers a generic - utility for SOGo administration. - -2009-08-12 Francis Lachapelle - - * UI/MainUI/Version (SUBMINOR_VERSION): 1.0.4 release. - -2009-08-11 Wolfgang Sourdeau - - * UI/Scheduler/UIxComponentEditor.m - (-takeValuesFromRequest:inContext:): same as below, for the organizer. - - * SoObjects/Appointments/SOGoAppointmentObject.m - (-changeParticipationStatus:forRecurrenceId): when setting the - "SENT-BY" attribute value, we need to use "setValue:0.." instead - "addValue:" to avoid invalid accumulation of values. - -2009-08-11 Francis Lachapelle - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -_handleOrganizer]): remove organizer when the event has no attendee. - ([UIxComponentEditor -_toolbarForOwner:andClientObject:]): return - the proper toolbar when editing the occurrence of a repeating event. - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -saveComponent:]): when removing a single - attendee from an event, the organizer is no longer defined; - therefore, we must check if the owner is the organizer of the - previous version of the event, not the new event. - -2009-08-10 Ludovic Marcotte - - * SoObjects/SOGo/LDAPUserManager.m - Fixed an issue where the LDAP entries wouldn't be - cached properly in memcached. - -2009-08-10 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction): - modified to handle the case where the active user has the "respond - to" permission, in which case we grab the copy of the iCalendar - which is already in the DB and modify the partstats thereof based - on the entries found in the uploaded iCalendar. The latter is - discarded silently to avoid any further change. - - * SoObjects/Appointments/iCalEntityObject+SOGo.m - (-userAsParticipant): new method that returns the "PARTICIPANT" - entity of the SOGoUser passed as parameter, if found. - - * Tests/webdavlib.py (WebDAVClient._prepare_headers): fixed a typo - causing the "depth" parameter to never be issued in query heades. - - * SoObjects/Appointments/SOGoAppointmentObject.m - (+webdavAclManager): don't register "respond-to-component" as - abstract, otherwise it won't appear in the returned list. - -2009-08-07 Wolfgang Sourdeau - - * Tests/test-davacl.py: added tests for the Contacts module. - - * Tests/all.py: modified to load and run all the test modules - found in the current directory, as long as they are prefixed by - "test-". - -2009-08-06 Wolfgang Sourdeau - - * Tests/davacl.py: new functional testsuite for DAV acls on - Calendar collections, most rights and featured are covered. - Possible improvements are mentionned in the "TODO" section. - - * SoObjects/Appointments/SOGoCalendarComponent.m (-aclsForUser:): - don't adjust roles based on the component access class if the - component is new. - - * Tests/webdavlib.py (WebDAVClient._prepare_headers): we don't set - the "content-length" header if the body is None. - (HTTPSimpleQuery.render): method must take a "self" parameter. - (WebDAVCalendarMultiget.__init__): added transaction class. - -2009-08-06 Francis Lachapelle - - * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences - -defaultAction]): if the compose message type (HTML or plain text) - has changed, reload the page (don't close it). This is a fix for a - bug with disabling or enabling the CKEDITOR dynamically (in JavaScript). - -2009-08-05 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m (-davSyncCollection): enhanced to - return a DAV error with the "valid-sync-token" condition tag when - a token is provided while the collection is empty. - - * SoObjects/SOGo/WOResponse+SOGo.m: new class module. - (-appendDAVError:): utility method that adds and formats the XML - body of a DAV error, with the error condition passed as argument. - -2009-08-05 Ludovic Marcotte - - * Added missing files for Hungarian translation - * Fixed the reply / forward ops for many translations - -2009-08-03 Ludovic Marcotte - - * Dropped the current caching subsystem based on - GNUstep's DO and replaced it with memcached. This - is much more efficient and scalable than DO and will - also prevent obscure libffi/libffcall crashes on - various platforms. - -2009-08-03 Francis Lachapelle - - * UI/Scheduler/UIxCalView.m ([UIxCalView -setCurrentView:]): avoid - writing the user defaults if the current view hasn't change. - -2009-07-29 Francis Lachapelle - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -hasAttendees]): new method used to show organizer only if the event - has attenddes (read-only view). - - * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor - -taskStartDateTimeText]): new method to return a localized - description of the start date and time. - ([UIxTasEditor -taskDueDateTimeText]): idem for the due date and - time. - ([UIxTaskEditor -statusDateText]): idem for the status (task - completed) date. - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor -reply]): - the participation status of the calendar's owner is now returned - instead of the participation status of the active user. - ([UIxComponentEditor -getDateFor:]): deleted, no longer needed. - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -aptStartDateText]): new method to return a localized description - of the start date. - ([UIxAppointmentEditor -aptStartDateTimeText]): idem for the start - date and time. - ([UIxAppointmentEditor -aptEndDateTimeText]): idem for the end - date and time. - -2009-07-29 Cyril Robert - - * SoObjects/Contacts/SOGoContactGCSFolder.m: Added c_o as a search field. - -2009-07-27 Francis Lachapelle - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -roleForComponentsWithAccessClass:forUser:]): now returns an empty - string when user is owner of the calendar. - -2009-07-23 Cyril Robert - - * UI/Scheduler/UIxComponentEditor.m (repeatLabel), (ownerIsAttendee), - (delegateIsAttendee), (eventIsReadOnly), (startDateString), (endDateString): - Added for Mantis 78. - -2009-07-23 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-davPOSTRequest:withContentType:inContext:) we use a simple comma - as recipient separator but with trim the resulting elements. - - * SoObjects/SOGo/NSArray+Utilities.m (-trimmedComponents): new - method that returns a trimmed/stripped version of the strings - contained in the array. - -2009-07-22 Cyril Robert - - * UI/Scheduler/UIxCalListingActions.m: Added "editable" field to tasks, so - that the UI can disable the checkboxes next to them. - -2009-07-22 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoUserFolder+Appointments.m - (-davCalendarScheduleInboxURL, -davCalendarScheduleOutboxURL) - (-davDropboxHomeURL, -davNotificationsURL): proxied methods to a - common accessor. - -2009-07-21 Cyril Robert - - * UI/Scheduler/UIxCalendarProperties.m: Prevent doing anything when not - executing @"saveProperties". Added wrapper methods for - showCalendarTasks/Alarms. Added reloadTasks var. - * SoObjects/Appointments/SOGoAppointmentFolder.m: Added - (set/showCalendarTasks), (set/showCalendarAlarms) - * SoObjects/SOGo/SOGoGCSFolder.m: Added dicts to cleanup on unsubscribe. - * UI/Scheduler/UIxCalListingActions.m: Added support for - showCalendarAlarms/Tasks. - -2009-07-21 Francis Lachapelle - - * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart - -stringByEscapingURL]): the UTF-8 encoding is now specified for the - filename of an attachment. - -2009-07-20 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-caldavFreeBusyRequest:): the list of recipients is now deduced - from the list of attendees specified in the VFREEBUSY. - -2009-07-20 Cyril Robert - - * SoObjects/Appointments/SOGoAppointmentFolder.m (davResourceType): Removed - a few things for the iPhone calDAV sync (schedule-inbox, schedule-outbox, - vevent-collection, vtodo-collection). - * SoObjects/SOGo/WORequest+SOGo.m (isIPhone): Added new method to detect - iPhone's DAV client. - -2009-07-20 Francis Lachapelle - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:): - avoid returning repeating events when no end date is - defined. Ultimately, we should return the first occurrence of - repeating events when no end date is defined and therefore, move - the logic into iCalRecurrenceCalculators. - -2009-07-19 Wolfgang Sourdeau - - * UI/SOGoUI/UIxComponent.m (-responseWithStatus:): revert the - default content-type to text/plain; charset=utf-8. - - * UI/WebServerResources/SchedulerUI.js: initialize the - "listFilter" global var depending on the value of the filter - popup. - - * UI/Scheduler/UIxCalFilterPanel.m (-selectedFilter): return - "view_today" as default filter. - -2009-07-17 Francis Lachapelle - - * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView - -mailerContactsAction]): restored method lost with - UIxContactsListViewContainer. - -2009-07-17 Cyril Robert - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (freebusyResponseForRecipient): Removed CDATA tag - * SoObjects/Appointments/SOGoFreeBusyObject.m (iCalPersonWithUID): Removed - setCn, since iCal fails when present. - -2009-07-16 Francis Lachapelle - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject -setOwner:]): update - ivar activeUserIsOwner when changing owner. - -2009-07-16 Cyril Robert - - * UI/PreferencesUI/UIxPreferences.m: Added categories, categoriesValue, - setCategoriesValue to allow editing of calendar categories. - * UI/Scheduler/UIxComponentEditor.m: Made modifications to fetch categories - from user defaults, if they exist. - -2009-07-15 Wolfgang Sourdeau - - * UI/Scheduler/UIxComponentEditor.m (-categoryList): insert the - category of the current component in the list, don't convert it - to upper case and sort the resulting list alphabetically. - -2009-07-14 Cyril Robert - - * UI/Scheduler/UIxComponentEditor.m: Added a default title for - vevents and vtodos - -2009-07-14 Francis Lachapelle - - * UI/SOGoUI/UIxComponent.m ([UIxComponent -buildDate]): moved - method from UIxPageFrame. - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent _updateRecurrenceIDsWithEvent:]): fixed a - crash that occurs when saving a recurrent task with - originalCalendar not initialized. - -2009-07-14 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoUserFolder+Appointments.m - (-davCalendarUserAddressSet): we return the "MAILTO:" prefix in - lower case instead. - - * SoObjects/Appointments/SOGoAppointmentFolders.m - (-davCalendarComponentSet): new method, copied from - SOGoAppointmentFolder. - -2009-07-10 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoContentObject.m (-davResourceType): new - resource that returns an empty string for DAV compliance. - -2009-07-09 Cyril Robert - - * UI/MailPartViewers/UIxMailRenderingContext.m: Display .tiff as - attachments, some browsers don't support tiff. - * SoObjects/Mailer/SOGoDraftObject.m: Fixed content type for multipart - messages. - -2009-07-07 Francis Lachapelle - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -attach:]): new method to return the ATTACH property of the - component. - ([UIxComponentEditor -setAttach:]): associated setter method. - - * iCalEntityObject.m ([iCalEntityObject -attach]): new method to return the - ATTACH property of the component as a URL. - ([iCalEntityObject -setAttach:]): new method to set the ATTACH property. - -2009-07-07 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-additionalWebdavSyncFilters): overriden method for returning a - clause that takes the DAV time limit into account. - - * SoObjects/SOGo/SOGoGCSFolder.m (-davSyncCollection:): added the - ability to specify additional filters for elements that must be - returned. - (-additionalWebdavSyncFilters): new method that returns a - parametrable where clause for reset queries. - -2009-07-07 Cyril Robert - - * UI/WebServerResources/MailerUI.js: Fixed Drag&Drop issue (header was - draggable) - * UI/WebServerResources/ContactsUI.js: Fixed Drag&Drop issue (header was - draggable) - * UI/WebServerResources/MailerUI.js: Revert - * UI/WebServerResources/ContactsUI.js: Revert - * UI/WebServerResources/MailerUI.js: Fixed Mantis #45 - * UI/WebServerResources/ContactsUI.js: Fixed Mantis #45 - * UI/MailerUI/UIxMailListView.m: Made "Size" column sortable - * SoObjects/SOGo/SOGoGCSFolder.m: Fixed Mantis #48 - -2009-07-03 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalListingActions.m (-eventsBlocksAction): added - sanity checks to avoid crashes when quick fields were wrongly - parsed. - - * SoObjects/SOGo/LDAPUserManager.m (_fillContactMailRecords:): if - the user uid contains a "@", we set it directly as system email - rather than suffixing it with the default mail domain. - -2009-07-02 Francis Lachapelle - - * UI/MailerUI/UIxMailListView.m ([UIxMailListView - -columnsDisplayOrder]): added the size column to the default columns. - -2009-07-02 Cyril Robert - - * UI/MailerUI/UIxMailFolderActions.m: Added auto-subscribe on imap folder - creation. - -2009-07-01 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-lookupName:inContext:acquire:): handle "AsTask" and - "AsAppointment" url suffix only for the default "so" handler. - -2009-07-01 Cyril Robert - - * SoObjects/SOGo/SOGoGCSFolder.m: Remove color from user settings on - unsubscribe. - * SoObjects/SOGo/SOGoGCSFolder.m: Re-fixed to also remove from InactiveFolders - and FolderSyncTags. - * UI/MailerUI/UIxMailFolderActions.m (_trashedURLOfFolder:withCO:): Fixed - issue when deleting a folder with the same name as one already in the Trash. - -2009-06-30 Francis Lachapelle - - * UI/MailPartViewers/UIxMailPartICalActions.m - ([UIxMailPartICalActions -addToCalendarAction]): new method to add - a calendar from an invitation (used to work?!). - - * SoObjects/SOGo/NSString+Utilities.m ([NSString - -_handleURLs:textToMatch:prefix:inRanges:]): fixed offset - of range after replacement. - - * SoObjects/SOGo/NSArray+Utilities.m ([NSArray - -hasRangeIntersection:]): fixed error in range comparison. - -2009-06-30 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-davCalendarMultiget, -davCalendarQuery): certain dav attribute - methods do not necessitate additional fields, we declare their - corresponding fields to "". Also, we make sure those fake fields - are not specified in the SQL query and we ensure all the fields - are only requested once each. - (-davCalendarComponentSet): we need to retain the returned - array to avoid a crash during the next access to the attribute. - -2009-06-30 Cyril Robert - - * UI/WebServerResources/MailerUI.js: Added drag & drop support! - * UI/MailPartViewers/UIxMailPartHTMLViewer.m: Removed an extra NSLog - * UI/MailerUI/UIxMailListView.m: Added support for "Size" column, fixed a - bug when number of columns != 7. - -2009-06-29 Cyril Robert - - * UI/WebServerResources/ContactsUI.js: Added drag & drop support - * UI/WebServerResources/ContactsUI.js: Disabled drag & drop for lists - -2009-06-29 Francis Lachapelle - - * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder - -initSubFolders]): system folders (LDAP sources) are now loaded - unconditionally. - ([SOGoFolderParent -initSubscribedSubFolders]): new method to load - only subscribed folders. - ([SOGoParent -lookupName:inContext:acquire:]): we now properly - lookup in subscribed folders. - ([SOGoParentFolder -subFolders]): since the subscribed folders are - now stored in its own dictionary, we must return keys from both - dictionaries. - -2009-06-26 Francis Lachapelle - - * UI/Contacts/UIxContactsListViewContainer.[hm]: this class was - removed along with the template and moved to UIxContactFoldersView. - -2009-06-26 Cyril Robert - - * UI/WebServerResources/UIxPreferences.js: Fixed a bug when - ComposeMessagesType isn't set, removed an "alert" - -2009-06-25 Cyril Robert - - * SoObjects/Mailer/SOGoMailReply.m: Added proper blockquote - * UI/WebServerResources/UIxMailEditor.js: Use CKeditor - * SoObjects/Mailer/SOGoMailForward.m: Added htmlComposition property, - changed almost all methods to escape what needsto be escaped. - * UI/WebServerResources/UIxPreferences.js: Fixed CKeditor toggle issue - -2009-06-23 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m (-davSyncCollection:): certain - dav attribute methods do not necessitate additional fields, we - declare their corresponding fields to "". Also, we make sure those - fake fields are not specified in the SQL query and we ensure all - the fields are only requested once each. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (+initialize): we no longer need reportQueryFields nor - reducedReportQueryFields. - (-davCalendarQuery:,-davCalendarMultiget:): automatically include - "c_component" in the requested fields, so that items can be - instantiated properly. - -2009-06-23 Cyril Robert - - * SoObjects/Mailer/NSString+Mail.m (stringByConvertingCRLNToHTML): Added - * UI/MailPartViewers/UIxMailPartTextViewer.m (stringByConvertingCRLNToHTML): - Removed - * SoObjects/Mailer/SOGoDraftObject.m: Added support for html content type - * SoObjects/Mailer/SOGoMailObject+Draft.m: Added support for html content - type in mail reply - * SoObjects/Mailer/SOGoMailReply.m: Added support for html in mail editor - * UI/PreferencesUI/UIxPreferences.m: Added option to se content type for - mail editing - * UI/WebServerResources/GNUmakefile: Added fckeditor entry - * UI/WebServerResources/UIxMailEditor.js: Plugged-in FCKEditor - * UI/WebServerResources/UIxPreferences.js: Plugged-in FCKEditor, handle html - toggle for signature box - -2009-06-19 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m (-davSyncCollection:): deleted - records are always ignored when fetching fields from the quick - table, we thus need to make two separate queries. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-davResourceType): return the "schedule-inbox" and - "schedule-inbox" caldav types when the user is the owner and the - collection is its personal calendar. - (-davCalendarComponentSet): new method that returns VEVENT and - VTODO. - - * SoObjects/SOGo/SOGoGCSFolder.m (davSyncCollection:): new method - that implements the draft webdav sync specification - (http://ietfreport.isoc.org/idref/draft-daboo-webdav-sync/). - - * SoObjects/SOGo/NSString+DAV.m (asWebDAVTupleWithContent:): new - method that returns a DAV dictionary from a flat DAV element (self) - string and a content. - - * SoObjects/SOGo/NSArray+DAV.m (asWebDavStringWithNamespaces:): we - no longer use an NSEnumerator in order to be a bit faster. - -2009-06-18 Wolfgang Sourdeau - - * SoObjects/SOGo/DOMNode+SOGo.m - (-flatPropertyNameOfSubElements): new method that returns - flattened ({namespace}tag) names of the first direct child - elements. - - * SoObjects/SOGo/SOGoGCSFolder.m (-davSQLFieldsTable): new method - that returns a correspondance table between requested dav - properties and SQL fields required to answer them. - (-parseDAVRequestedProperties:): new method derived from a similar - one in SOGoAppointmentFolder which will return a dictionary of DAV - properties that are requested as well as their corresponding SQL - fields. - - * SoObjects/SOGo/DOMNode+SOGo.[hm]: new category module that - implement helper methods for DOM processing. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (davCalendarQuery:): specify default values for "start" and "end" - whenever one of them is missing. - -2009-06-17 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-fetchFields:...): don't use the privacySqlString twice. - The component parameter MUST be a NSString from now on. Fixed a - syntax problem in the where clause occuring when vtodo components - were requested. - - * UI/MailPartViewers/UIxMailPartICalViewer.m (-storedEventObject): - use the new "storedEventFetched" bool ivar to specify whether we - already attempted to fetch the event from the user calendars. - - * SoObjects/SOGo/SOGoUser.m (-rolesForObject:inContext:): do not - query the acls for the object if the current user is its owner. - - * SoObjects/SOGo/SOGoParentFolder.m (-initSubFoldersMatching:): - renamed from "initSubFolders". Take a string argument that, if - specified, will stop the search of folders when the name can be - found in the folders list. - -2009-06-16 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-davCalendarQuery:, davCalendarMultiget:): we now fetch the only - fields that are required by the DAV query from the database - tables. - (-bareFetchFields:from:to:title:component:additionalFilters:,fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:): - optimized the privacy SQL string to a single where clause based on - the tables computed in initializeQuickTablesAclsInContext:. - - * SoObjects/Appointments/SOGoCalendarComponent.m (-valuesForKeys:) - overriden method to speed up PROPFIND requests. - -2009-06-15 Wolfgang Sourdeau - - * SoObjects/SOGo/NSArray+Utilities.m (-hasRangeIntersection): - modified to use the range pointers rather than serialized - representations. - -2009-06-15 Francis Lachapelle - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -_appendCycleException:firstInstanceCalendarDateRange:fromRow:forRange:toArray:]): - for exceptions in the date range, add the boolean key - "isException" to the dictionary. - (-_flattenCycleRecords:fetchRange:): renamed method (was - -fixupCyclicRecords:fetchRange:). - -2009-06-12 Francis Lachapelle - - * UI/Contacts/UIxContactEditor.m ([UIxContactEditor - -addressBooksList]): LDAP-based addressbooks must not be - editable, even for super users. - -2009-06-11 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserFolder.m (-davUserQuery:): do not return - the user information for the current user. - - * UI/MainUI/SOGoUserHomePage.m (-usersSearchAction): do not return - the user information for the current user. - (-foldersSearchAction): the method only search folders for the - owner of the current folder. The "user" parameter has thus been - removed. - -2009-06-10 Wolfgang Sourdeau - - * SoObjects/SOGo/NSString+Utilities.m (-stringByDetectingURLs): - fixed a leak. Fixed a crash on GNUstep by using arrays of pointers - to NSRange instead of converting/parsing them to/from NSString. - - * SoObjects/SOGo/NSArray+Utilities.m (-addRange): removed method. - (-addNonNSObject:withSize:copy:): new helper method to add object - pointers to arrays. - (-freeNonNSObjects): new helper method to release the above object - pointers. - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m: fixed rendering of - CSS content containing comment characters. Ignore certain HTML - tags that can alter the appearance of the SOGo display altogether - (SCRIPT, LINK, BASE, META, TITLE). - -2009-06-09 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoFreeBusyObject.m - (-iCalStringForFreeBusyInfos:withMethod:andUID:andOrganizer:from:to:): - accept additional "UID" and "organizer" parameters that will be set as - attributes on the reported freebusy object. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-freebusyResponseForRecipient:withUser:andCalendarData:): expose - the calendar-data as as !CDATA element. - - * SoObjects/SOGo/SOGoWebDAVValue.m - (-asWebDavStringWithNamespaces): new overriden method to enable - the passing of unescapable strings. - -2009-06-09 Francis Lachapelle - - * UI/Scheduler/UIxCalView.m ([UIxCalView -setCurrentView:]): new - method to save the user's current view in her/his settings. - - * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView -currentView]): - returns the active user's last calendar view. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -_sqlStringRangeFromto:]): dates are not - necessarily defined in case of vTODOs; don't apply the range - constraint when dates are null so the SQL query return tasks. - ([SOGoAppointmentFolder - -fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:]): - recurrent tasks are now returned as normal components and are - shown in the web interface. They are not flatten as recurrent - events are. - -2009-06-08 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m (-davCollectionTag): moved method - from SOGoAppointmentFolder since we will need it for contacts - folders as well. - -2009-06-08 Cyril Robert - - * SoObjects/Appointments/SOGoAppointmentFolder.m: Added c_cycleenddate in - dav date limitation. Added c_cycleenddate = NULL - -2009-06-05 Cyril Robert - - * UI/Scheduler/UIxCalListingActions.m: Added support to ignore - office hours. - * UI/Templates/SchedulerUI/UIxAttendeesEditor.wox: Removed old commented-out - buttons, added text as a proper string. - * UI/WebServerResources/UIxAttendeesEditor.js: Fixed scrolling issues, - added support for "onlyOfficeHours" checkbox - -2009-06-04 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailObject+Draft.m: add a default - attachment path of "1" when path is nil and thus unique. - - * UI/SOGoUI/UIxComponent.m (-_parseQueryString:): fixed handling - of bad charsets in the parameters encoding. Invalid values will be - discarded. - - * SoObjects/Contacts/SOGoContactGCSFolder.m - (-lookupContactsWithFilter:sortBy:ordering:): same as below. - - * SoObjects/SOGo/LDAPSource.m: properly escaped user-entered - strings which may contain quotes and thereby mess up the LDAP - queries. - -2009-06-04 Cyril Robert - - * UI/Scheduler/UIxCalListingActions.m: Added everything needed for the - findSlot action. Fixes for allday & multiday events. - - * UI/WebServerResources/UIxAttendeesEditor.js: Added everything needed for - the findSlot action. Fixes for allday events. Fixed scrolling issues - - * UI/Scheduler/UIxCalListingActions.h (findPossibleSlotAction): Added header. - -2009-06-03 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m - (-initializeQuickTablesAclsInContext:): new method that - initializes the new "userCanAccessAllObjects" ivar. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - (-initWithName:inContainer:): added new - "userCanAccessObjectsClassifiedAs" ivar (array of bools) to - quickly determine whether a user can access a component - informations. - (-initializeQuickTablesAclsInContext:): new method that - initializes the new ivar above. - (-davCalendarQuery:, -davCalendarMultiget:): invoke the new method - above. - - * Main/NSException+Stacktrace.m, SOPE/NGCards/NGCardsSaxHandler.m, - SOPE/NGCards/NSString+NGCards.m, - SOPE/NGCards/versitCardsSaxDriver/VSSaxDriver.m, - SoObjects/Appointments/SOGoAppointmentFolder.m, - SoObjects/SOGo/NSArray+Utilities.m, - SoObjects/SOGo/SOGoGCSFolder.m, - SoObjects/SOGo/SOGoLDAPUserDefaults.m, - UI/MailPartViewers/UIxMailPartTextViewer.m, - UI/MainUI/SOGoUserHomePage.m, UI/Scheduler/UIxCalListingActions.m: - replaced all invocations of "malloc", "realloc", "free" by similar - invocations to NSZoneMalloc, NSZoneRealloc and NSZoneFree. - - * SoObjects/Appointments/SOGoAppointmentFolder.m (+initialize): - removed obsolete security declarations. - (-davCalendarQuery, -davCalendarMultiget): delegate conversion of - "properties" NSArray to C array to submethods. Those submethods - now pass a count parameter to properly evaluate the amount of - responses instead of the static 100 value. Make use of - NSZoneMalloc instead of malloc. - - * Tools/sogo-contacts-removedoubles.m: added code to avoid - removing cards referenced in vlists. - -2009-06-02 Francis Lachapelle - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -postCalDAVEventRequestTo:from:]): remove - alarms from invitation and set organizer of master event when - dealing with a recurrent event. - -2009-06-02 Wolfgang Sourdeau - - * Tools/sogo-contacts-removedoubles.m: new maintenance utility - that removes double records in specified addressbooks. - - * Tools/sogo-contacts-checkdoubles.m: new maintenance utility that - helps determine which contact folders need cleanup. - -2009-06-02 Cyril Robert - - * SoObjects/Appointments/SOGoAppointmentFolder.m (_enforceTimeLimitOnFilter): - Rewrote algorithm, fixed cyclic events issue. - * UI/WebServerResources/UIxAttendeesEditor.js: Fixed update bug on "enter" - * UI/Templates/SchedulerUI/UIxAttendeesEditor.wox: Removed next/prev hour - and zoom buttons - -2009-06-02 Ludovic Marcotte - - * Updated the documentation (version change, Russian - language addition and documentation of the WOApplicationRedirectURL - parameter) - -2009-06-01 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailFolderActions.m (-deleteFolderAction): - renamed to deleteAction to match the methods in UI/Common/*Actions.m - - * UI/Common/UIxFolderActions.m (-): removed useless method since - SOGoFolders can use the "delete" web method to achieve the same result. - - * SoObjects/SOGo/SOGoPermissions.m: declared new "Delete Object" - permission. - -2009-06-01 Cyril Robert - - * UI/WebServerResources/UIxContactsUserFolders.js (onSearchFormSubmit): - Fixed encoding issue/crash. - * SoObjects/Appointments/SOGoAppointmentFolder.m (_parseCalendarFilter): - Added support for default SOGoDAVCalendarStartTimeLimit, which is the - maximum number of days for dav queries. - Added: _enforceTimeLimitOnFilter, _getMaxStartDate and _getStartTimeLimit - -2009-05-30 Ludovic Marcotte - - * Modified SOGoCalendarComponent.m so that we - explicitely add the MIME-Version header when - sending out invitation messages. - -2009-05-23 Ludovic Marcotte - - * Added Russian tranlation - patch from - Alex Kabakaev - -2009-05-22 Francis Lachapelle - - * Main/sogod.m (main): verify if the default parameter - WOApplicationRedirectURL is defined and if so, removed any - trailing slash. - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -_toolbarForOwner:andClientObject:]): ignore the participation - status for tasks so the usual edition toolbar appears. - -2009-05-21 Ludovic Marcotte - - * Regenerated the SOPE patchset so we now correctly - support the windows-1251 charset - * UI/MailPartViewers/UIxMailPartHTMLViewer.m - We now correctly support the koi8-r and windows-1251 - encodings when decoding HTML mails. - -2009-05-19 Francis Lachapelle - - * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount - -allFolderPaths]): if the user default "showSubscribedFoldersOnly" - is not defined for the user, use the application default - "SOGoMailShowSubscribedFoldersOnly". - - * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences - -showSubscribedFoldersOnly]): return the user default or the - application default if not defined. - ([UIxPreferences-setShowSubscribedFoldersOnly]): when false, set - the user default parameter "showSubscribedFoldersOnly" to NO - instead of removing the entry. This will ensure user defaults are - taking precedence over application defaults. - -2009-05-15 Francis Lachapelle - - * SOPE/sope-ldap/NGLdap/NGLdapConnection.m: added methods - primaryFetchMailboxHierarchyForURL:onlySubscribedFolders: and - allFoldersForURL:onlySubscribedFolders: to offer the possibility - to use the IMAP command LSUB instead of LIST. - - * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount - -allFolderPaths]): return only subscribed folders if user default - "showSubscribedFoldersOnly" is true. - - * SoObjects/SOGo/SOGoUserDefaults.m ([SOGoUserDefaults - -setObject:forKey:]): fix an issue when calling removeObjectForKey - and value is nil. - - * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences - -setShowSubscribedFoldersOnly:]): setter for the user default - "showSubscribedFoldersOnly". - -2009-05-12 Francis Lachapelle - - * SoObjects/SOGo/LDAPSource.m ([LDAPSource -initFromSource:]): - retrieves the user default attribute "IMAPHostFieldName" so the - IMAP server name can be fetched from the LDAP directory. - ([LDAPSource -_fillEmailsOfEntry:intoContactEntry:]): if a IMAP - hostname field is specified for the source, retrieve the LDAP - attribute and set the value to the key "c_imaphostname". - - * SoObjects/Mailer/SOGoMailAccount.m (SOGoMailAccount - -_urlHostString]): the IMAP server name is now retrieved from the - SOGoUser object and no longer hardcoded to the fallbackIMAP4Server - user default. - - * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager - -_fillContactInfosForUser:withUIDorEmail:]): now fills the user - attributes dictionary with the IMAP hostname if specified and defined. - -2009-05-06 Francis Lachapelle - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - -removeAclsForUsers:atObjectPath:]): verify if user is a group and - prefix the UID with "@" if so. - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent -expandGroupsInEvent:]): new method from - the code that was in [SOGoAppointmentObject -_handleAddedUsers:] - and [SOGoAppointmentObject -_PUTAction:] that expands the groups - among the attendees of the passed event. - -2009-05-05 Francis Lachapelle - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser - +userWithLogin:roles:trust:]): don't set the roles if the passed - roles are not defined. - -2009-05-03 Francis Lachapelle - - * UI/Common/UIxUserRightsEditor.m ([UIxUserRightsEditor - -_initRights:]): add the "@" prefix to groups UID. - - * SoObjects/SOGo/SOGoGroup.m ([SOGoGroup +groupWithIdentifier:]): - returns a SOGoGroup instance matching the specified UID value or - nil if no group is found. - ([+groupWithEmail:]): idem for the specified email address. - ([-members]): now properly search among all LDAP sources for the - members of the group. - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - -_fetchAclsForUser:forObjectAtPath:]): also search for entries - prefixed by a "@" corresponding to group entries. For those - entries, find the members and add the ACLs if the user if part of - the group. - ([-setRoles:forUser:forObjectAtPath:]): prefix the UID with the - "@" character when dealing with a group. - - * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager - -getLoginForDN:]): searches among all defined LDAP sources and - returns the UIDFieldName value for the requested DN. - ([-contactInfosForUserWithUIDorEmail:]): prior to perform the - search, removes the "@" prefix used to identified groups in the - ACL tables. - - * SoObjects/SOGo/LDAPSource.m ([LDAPSource -lookupLoginByDN:]): - returns the UIDFieldName value for the requested DN. - ([-lookupGroupEntryByUID:]): returns the LDAP entry corresponding - to a group (ie with an objectClass of member, uniqueMember, - memberUid, or memberOf) for the requested UID. - ([-lookupGroupEntryByEmail]): idem for the requested email address. - ([-lookupGroupEntryByAttribute:andValue:]): idem for the specified - value for the specified attribute. - ([-baseDN]): accessor for the base DN. - - * UI/Common/UIxAclEditor.m ([UIxAclEditor -_displayNameForUID:]): - removes the "@" prefix before looking up for the CN and email address. - -2009-05-01 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -PUTAction:]): Slightly optimized - and we now consider the "X-SOGo: NoGroupsDecomposition" - special header. - -2009-04-30 Ludovic Marcotte - - * Added SoObjects/SOGo/SOGoGroup.{h.m} and - modified the LDAPSource, LDAPUserManager, SOGoAppoinmentObject - in order to add initial groups support which decomposes - groups to members when events are saved. - -2009-04-27 Francis Lachapelle - - * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions - -_fillBlocks:withEvent:withNumber:]:): fixed index of recurrence - ID. - -2009-04-22 Francis Lachapelle - - * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions - -alarmsListAction]): only return the alarms active for the next 48 - hours and exclude any recurring event (for now). - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -viewAction]): if the form parameter "resetAlarm" is true, set the - property X-WebStatus to "triggered" in the event's alarm. - - * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -viewAction]): new - method that returns some of the task properties. Currently only - used for the alarms. Behavior is similar to UIxAppointmentEditor. - - * SoObjects/Appointments/iCalEvent+SOGo.m ([iCalEvent - -quickRecord]): don't update the c_nextalarm field if the event is - recurrent or if the property X-WebStatus is set to "triggered" in - the alarm's trigger definition. - - * SoObjects/Appointments/iCalToDo+SOGo.m ([iCalToDo - -quickRecord]): idem. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -fetchAlarmInfosFrom:to:]): new method - that returns attributes of events and todos for which there's an - active alarm within the next 48 hours. - -2009-04-21 Ludovic Marcotte - - * Added Welsh translation - patches from the - National Library of Wales. - * Regenerated the SOPE patchset so that we correctly - handle Oracle's reconnection problems on RAC. We now - try by default 3 times before giving up when there - is a failover to an other node part of the RAC. - * Dropped old ChangeLog files and combined them - in ChangeLog.old - * Dropped old NOTES files - * Added Scripts/sql-update-101_to_102.sh to update - the database schema for the 1.0.2 release - * Scripts/sogod-wrapper - updted this script to - handle the TNS_NAMES environment variable for - Oracle RAC. - * Added the possibility to disable cache propagation - in SOGoCache (together with SOGoUser and SOGoUserDefaults) - in order to greatly reduce gdnc contention when a massive - amount of operations are performed by the SOGo super-usernames - * SoObjects/SOGo/SOGoGCSFolder.m: We avoid cache - propagation when subscribing users to resources as - a superuser. - * UI/Scheduler/UIxCalListingActions.{h,m}: Added - -alarmsListAction so that we correctly return the upcoming - alarms. It does NOT yet handle correctly recurring components. - -2009-04-21 Francis Lachapelle - - * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor - -takeValuesFromRequest:inContext:]): removes any alarm if the - vTodo doesn't have a due date. - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -_loadAlarms]): new method to extract the first alarm of the component. - - * SoObjects/Appointments/iCalEvent+SOGo.m ([iCalEvent - -quickRecord]): added support for an event's alarm. The database - field "c_nextalarm" must first be added to all tables. - -2009-04-13 Ludovic Marcotte - - * SoObjects/SOGo/LDAPSource.m: cleaned up and - also correctly implemented -lookupContactEntry. - * SoObjects/Contacts/SOGoContactLDAPFolder.m: - we now use the correctly implemented -lookupContactEntry - method instead of -lookupContactEntryWithUIDorEmail - * Regenerated the SOPE patchset to include a fix - for Oracle RAC. - -2009-04-09 Ludovic Marcotte - - * Reverted previous patch and provided the correct - fix in SOGoMailFolder: -postData:flags: - * Fixed the compilation of unit tests for NGCards. - * SoObjects/Mailer/SOGoMailFolder.m: Added -displayName - which returns -nameInContainer to avoid crashes when - sending ACL changes notifications for email folders. - -2009-04-09 Francis Lachapelle - - * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject - -sendMail]): create the Sent folder if it doesn't exist. - -2009-04-07 Cyril Robert - - * UI/Common/UIxPageFrame.m (isCompatibleBrowser): Fixed Safari 3 issue, - was only accepting 4+ - -2009-04-06 Ludovic Marcotte - - * Improved the sogod-wrapper script in order to - consider the IP address that can be specified - in the WOPort user default. Patch from - Romain LE DISEZ - * SoObjects/SOGo/LDAPSource.{h.m}: Now possible to - specify a scope for LDAP operations. Patch from - Yann Cezard - -2009-04-02 Wolfgang Sourdeau - - * SoObjects/SOGo/LDAPSource.m: we now support an "encryption" - parameter, having either a value of "ssl" or "starttls" to define - the type of encryption to be used, if any. - -2009-04-01 Ludovic Marcotte - - * Dropped worthless tools - * Fixed tons of compiler warnings - * SoObjects/Contacts/SOGoContactLDAPFolder.m - ([SOGoContactLDAPFolder appendObject:withBaseURL: - toREPORTResponse:]): We now check if we've got - an exception when looking up contacts and the LDAP-part - of SOGo is misconfigured and warn the admin (by adding - a log entry) about it. - -2009-03-31 Francis Lachapelle - - * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions - _fetchFieldsforComponentOfType:]): the method _fixDates must be - called even for the month view. - -2009-03-25 Francis Lachapelle - - * UI/Common/UIxPageFrame.m ([UIxPageFrame -siteFavicon]): new - method to allow the customization of the site favicon through the - user defaults SOGoFaviconRelativeURL. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser -language]): must retain - the ivar language to avoid a crash if the language is retrieved - from the user agent header returned by the browser. - -2009-03-24 Wolfgang Sourdeau - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -takeValuesFromRequest:_rqinContext:_ctx]): ensure the values - meant to construct the custom recurrence rule are consistent. - - * UI/Scheduler/UIxCalMainView.m: if the module settings key - exists, do not reset it. - -2009-03-24 Ludovic Marcotte - - * UI/MailerUI/UIxMailListView.m - ([UIxMailListView messages)]: - Adjusted the sort so it's a little bit faster - and correctly work in case the server returns us - the FETCH response in an order different that what - we asked for. - -2009-03-24 Francis Lachapelle - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser -invalidateLanguage]): - new method to invalidate the language ivar. - - * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -connectAction]): must - invalidate user's language ivar when it changes. - - * SoObjects/SOGo/SOGoCache.m ([SOGoCache - -_userDefaultsHaveChanged:]): must invalidate the user's language - ivar when the defaults change. - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent - -sendEMailUsingTemplateNamed:forObject:previousObject:toAttendees:]): - no longer send a deletion notification to an attendee who already - declined the meeting. - - * UI/MailPartViewers/UIxMailPartICalActions.m - ([UIxMailPartICalActions -_eventObjectWithUID:forUser:]): when - looking for an event for a specific user, we now search into all - the user's calendar folders. - - * UI/MailPartViewers/UIxMailPartICalViewer.m - ([UIxMailPartICalViewer -startCalendarDate]): new method that returns - the start date with the proper timezone. - ([-endCalendarDate]): idem for the end date. - ([-startDate]): new method that returns a formatted string of the - start date. - ([-endDate]): idem for the end date. Also take care of all-day events. - ([-startTime]): new method that returns a formatted string ot the - start time. - ([-endTime]): idem for the end time. - ([-isEndDateOnSameDay]): must subtract 1 second from end date when - it's a all-day event. - -2009-03-24 Wolfgang Sourdeau - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -_loadAttendees]): make use of autoreleased strings to avoid a leak. - ([UIxComponentEditor -dealloc]): release componentCalendar. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser - -_prepareDefaultMailAccounts]): return an autoreleased array to - avoid a leak. - - * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions - -initWithRequest:newRequest]): retain dateFormatter, since it is - released in -dealloc. - ([UIxCalListingActions -dealloc]): do not release startDate and - endDate since they are not retained. - -2009-03-23 Francis Lachapelle - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -_lookupEvent:forUID:]): when looking for - an event for a specific user, we now search into all the user's - calendar folders. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -lookupCalendarFoldersForUID:]): new - method that returns an array of a user's calendar folders - excluding the subscriptions. - -2009-03-23 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - -subscribe:reallyDoinTheNamesOf:delegatedUsersfromMailInvitation:isMailInvitationinContext:localContext]): - when the user preferences didn't already contain a key matching - the current module name, the subscriptions would not work. We thus - create one if none exists yet. - - * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders - -appendSystemSources]): modified the return type and returns nil, - to match the new SOGoParentFolder definition of the method. - Otherwise, a confusion is created on the stack. - -2009-03-23 Ludovic Marcotte - - * SoObjects/SOGo/SOGoUser.m: - Don't retain/release the language ivar. - -2009-03-22 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser -language]): cache the - language in an ivar again, that is reset when the user settings or - defaults have been loaded successfully. - ([SOGoUser -userDefaults]): invoke "fetchProfile" on the defaults - instance, in order to validate the DB connection. - -2009-03-21 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser - -initWithLogin:newLoginroles:newRoles]): removed "mailAccounts" ivar. - ([-mailAccounts]): no longer cache the mailAccounts info in an ivar. - -2009-03-20 Ludovic Marcotte - - * SoObjects/SOGo/SOGoUserDefaults.{h,m} - We are now way quicker to react when the database - is down. - -2009-03-20 Wolfgang Sourdeau - - * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView - -allContactSearchAction]): trap @"SOGoDBException" and return nil - in that case. - - * SoObjects/SOGo/SOGoUserDefaults.m ([SOGoUserDefaults - -jsonRepresentation]): return "{}" if values is nil (due to a DB - connection error). - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser -userDefaults]): ensure the - values are not nil before putting them in the cache. This fixes an - exception occuring for setting a nil key in a dictionary. - ([SOGoUser -userSettings]): same as above. - ([SOGoUser -userDefaults]): if "value" is null, meaning that - database connectivity has failed, don't try to set default values, - which would trigger other connection tries. - -2009-03-19 Francis Lachapelle - - * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions - -_fetchFields:forComponentOfType:]): the _fixDates method doesn't - have to be called for the month view. - -2009-03-19 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder - -foldersOfType:folderTypeforUID:uid]): now also returns the owner - of the folders in the folder dictionary. - ([SOGoUserFolder -davCollectionQuery:queryContext]): works again - for multiple users if the DAV:owner property is specified in the - query. The response is formatted in a way that is compatible with - both the 0.8x and 0.9x SOGo extensions. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser - -homeFolderInContext:context]): no longer put the home folder in - cache, since it uses an context that is freed and invalidated - afterwards, which can cause crashes. - -2009-03-19 Ludovic Marcotte - - * Updated the sope.spec file wrt to changes - related to 0.9 -> 1.0 - * Updated the SOGo documentation to also reflect - the version change. - -2009-03-19 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserFolder.m: initialize max to the correct value. - -2009-03-18 Francis Lachapelle - - * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -version]): new method - that returns the application version. - - * SOPE/NGCards/iCalDateTime.m ([iCalDateTime -dateTime]): when not - defined, the timezone is now guessed from the date of the current object. - -2009-03-18 Ludovic Marcotte - - * Updated the documentation for the SOGo - update server. - * Enabled support for Konqueror. We use the - Safari 'exceptions' in the JavaScript code. - * Main/SOGo.m: Corrected a small mistake in previous - commit wrt sogod-0.9 > sogod change - * Updated the NEWS file for the release - -2009-03-18 Wolfgang Sourdeau - - * SoObjects/Contacts/SOGoContactLDIFEntry.m ([SOGoContactLDIFEntry - -vCard]): same as below. - - * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject - -iCalStringForFreeBusyInfos:_infoswithMethod:methodfrom:_startDateto:_endDate]): - same as below. - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent -calendar:create:secure]): specify - "-//Inverse inc./SOGo 1.0//EN" as PRODID. - - * Main/sogod.m (convertOldSOGoDomain): new function that convert - the old "sogod-0.9" NSUserDefaults domain to "sogod". - - * Main/SOGoProductLoader.m ([SOGoProductLoader - +sogoMajorVersion]): removed useless method. - ([SOGoProductLoader +sogoMinorVersion]): removed useless method. - ([SOGoProductLoader -init]): productDirectoryName is no longer an - ivar but a static string. - ([SOGoProductLoader -productSearchPathes]): removed FHS paths from - search paths. - - * Main/SOGo.m ([SOGo -name]): returns "SOGo". - - * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder - -appendPersonalSources]): returns an NSException. - ([SOGoParentFolder -appendSystemSources]): same as above. - ([SOGoParentFolder -appendSubscribedSources]): same as above. - ([SOGoParentFolder - -lookupName:nameinContext:lookupContextacquire:acquire]): if - initSubfolders returns an exception, this probably means a db - error occured, so we log the exception reason and return a 503. - ([SOGoParentFolder -subFolders]): this method is invoked when a - PROPFIND is made on the current collection. If a DB error occurs, - we raise it to prevent SOPE from returning a 207 status code. - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder - -lookupName:_keyinContext:_ctxacquire:_flag]): no longer invoke - the _accessDeniedPage when accessing the module is forbidden to - the current user. Instead, returns an HTTP exception with code - 404. - -2009-03-17 Ludovic Marcotte - - * Documentation/SOGo Installation Guide.odt - Updated to mention MySQL and to refer as 1.0 - as the version number - * Scripts/sogo-init.d-debian and - Scripts/sogo-init.d-redhat - We now kill gdnc (only processes belonging to - the sogo user) when stopping sogod. - -2009-03-16 Ludovic Marcotte - - * SoObjects/SOGo/LDAPSource.m: We now support - the specification of a filter. Also updated - the installation guide to document this new parameter - * sogo.spec: Modified so that we use our tmpwatch - script from /etc/cron.daily - -2009-03-16 Francis Lachapelle - - * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions - -_fixDates:]): moved corrections for daylight saving time in this - new method. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -fixupCycleRecord:_recordcycleRange:_rfirstInstanceCalendarDateRange:_firforViewRange:_viewRange]): - propagate the start date of the cycle so it can be used later to - adjust the timezone. - * ([SOGoAppointmentFolder - -_appendCycleException:firstInstanceCalendarDateRange:fromRow:forRange:toArray:]): idem . - -2009-03-16 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -occurence:occ]): create the occurence - with the first calendar event as master. - - * SoObjects/Appointments/SOGoTaskObject.m ([SOGoTaskObject - -occurence:occ]): create the occurence with the first calendar - task as master. - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent - -lookupName:lookupNameinContext:localContextacquire:acquire]): - initialize "isNewComponent" to NO if it's not, to avoid problems - with unitialized memory. - - * SoObjects/SOGo/LDAPSource.m ([LDAPSource - -setBaseDN:newBaseDNIDField:newIDFieldCNField:newCNFieldUIDField:newUIDFieldmailFields:newMailFieldsandBindFields:newBindFields]): - bug setting the CN and UID field only if they were set before, - rather than checking their value passed as parameter. - -2009-03-13 Ludovic Marcotte - - * Optimized the IMAP client code to avoid - unnecessary STATUS calls. - -2009-03-12 Ludovic Marcotte - - * Updated the SOPE patchset in order to - fix a bug in NGMimeBodyParser. - * Updated again the SOPE patchset to enable - MySQL support. - -2009-03-11 Francis Lachapelle - - * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage - -readFreeBusyAction]): we now set the content-type to "text/plain" - to fix issues with nginx. - - * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView - -contactSearchAction]): idem. - -2009-03-11 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentFolder.m - We now correctly escape caracters that can be - present in the filename prior to initalizing - the NSURL instance. - * UI/MailerUI/UIxMailAccountActions.m - We correctly intialize the "unseen" variable - to nil in _statusFolders. - -2009-03-09 Ludovic Marcotte - - * Documentation/SOGo Installation Guide.odt - Added two examples for default ACL. - * Updated the SOPE patchset - -2009-03-08 Ludovic Marcotte - - * Updated the SOGo Mozilla Thunderbird Configuration - guide to add a note that WOApplicationRedirectURL - MUST match the updateURL in extensions.rdf from - SOGo Integrator - -2009-03-05 Ludovic Marcotte - - * Updated prototype to the latest development version - in order to fix an IE7 bug related to the DOM load event - * Improved the mod_proxy/mod_proxy_balancer configuration - -2009-03-04 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoLDAPUserDefaultsBootstrap.m: new module for - the libSOGoNSUserDefaults.so.1 library built when enabling - ldap-based configuration. - - * Main/sogod.m (BootstrapNSUserDefaults): added function to load a - library named "libSOGoNSUserDefaults.so.1" which would bootstrap - the NSUserDefaults class with an arbitrary "pose class". - -2009-03-04 Ludovic Marcotte - - * Fixed a small issue when fetching parts where - the encoding could be nil and subsequently, the - path couldn't be set. - -2009-03-03 Ludovic Marcotte - - * Fixed various small issues with the SOGo - cache subsystem. - -2009-03-03 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable -dayClasses]): - fixed the way the number of the current day is deduced, - independently from the timezone (d. saving time or not). - -2009-03-02 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoComponentOccurence.m - ([SOGoComponentOccurence -setComponent:newComponent]): retain the - component's parent instead of the component itself, which is - already retain by its parent anyway. See 2009-02-06 from me below. - ([SOGoComponentOccurence -setMasterComponent:newMaster]): no - longer retain the "master" occurence since its parent is already - retained. - -2009-03-02 Ludovic Marcotte - - * SoObjects/SOGo/SOGoObject.m - ([SOGoObject -davRecordForUser:parameters:]): - Don't initialize the SOGoUser variable of - nocn AND noemail are passed. - * Dropped Protocols/* from the repository. - * Added missing Dutch wox templates - -2009-02-23 Ludovic Marcotte - - * Updated German translation. Patch from - Alexander Greiner-Baer - * Added Italian translation. Patch from - Marco Lertora - * Combined the various caches and moved the logic - towards the SOGoCache class. Deprecated the - SOGoLDAPUserManagerCleanupInterval defaults. - Now only SOGoCacheCleanupInterval should be used. - -2009-02-19 Francis Lachapelle - - * UI/Contacts/UIxContactsListView.m ([UIxContactsListView - -defaultSortKey]): replaced "displayName" by "c_cn", following - changes made on 2009-02-06. - - * UI/Common/WODirectAction+SOGo.m ([WODirectAction - -responseWithStatus:]): set the default type so Firefox doesn't - complain when using nginx with SOGo. - -2009-02-17 Ludovic Marcotte - - * SoObjects/Contacts/SOGoContactLDIFEntry.m ([SOGoContactLDIFEntry - -vCard]): We now correctly handle most address fields coming from - an LDAP server during the generation of the vCard. - -2009-02-17 Francis Lachapelle - - * UI/MailerUI/UIxMailListView.m ([UIxMailListView -messages]): - forced ordering of messages based on sorted UIDs. - - * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView - -allContactSearchAction]): replaced references to "displayName" by - "c_cn", following changes made on 2009-02-06. - - * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder - -_qualifierForFilter:]): changed search in email address to match - search behavior of Thunderbird. - - * SoObjects/SOGo/LDAPSource.m ([LDAPSource -_qualifierForFilter:]): idem. - -2009-02-16 Ludovic Marcotte - - * Updated Dutch translation - patch from - Robert-Jan van Baal - -2009-02-09 Wolfgang Sourdeau - - * SoObjects/Contacts/SOGoContactLDAPFolder.m - ([SOGoContactLDAPFolder - -appendObject:objectwithBaseURL:baseURLtoREPORTResponse:r]): don't - lookup the returned object if its c_name has no length. - -2009-02-06 Francis Lachapelle - - * SoObjects/Contacts/SOGoUserFolder+Contacts.[hm]: new class to - add CardDAV stuff. Currently only implements the - addressbook-home-set report from the principal URL. - -2009-02-06 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -fetchFields:_fieldsfrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filtersincludeProtectedInformation:_includeProtectedInformation]): - added the "c_cycleinfo" and "c_cycleenddate" fields to the list of - fields that should not be stripped when removing protected informations. - - * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -dealloc]) - ([UIxTaskEditor -todo]): same as below (apts). - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -event]): retain the event parent calendar object instead of the - event itself. - ([UIxAppointmentEditor -dealloc]): release the above calendar. - - * UI/MailPartViewers/UIxMailPartICalViewer.m - ([UIxMailPartICalViewer -dealloc]): no longer release "inEvent" - since it does not need to be retained. - - * Main/SOGo.m ([SOGo +initialize]): added handling of the - "SOGoDebugLeaks" configuration variable. - ([SOGo -dispatchRequest:_request]): log the classes of instances - that were leaked between the handling of the request, if - SOGoDebugLeaks is set. - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - -aclsForUser:uidforObjectAtPath:objectPathArray]): cache an empty - array if not acl have been returned for the specified user. - - * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder - -lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]): - same as below. - ([SOGoContactGCSFolder -fixupContactRecord:contactRecord]): new - method that initializes c_mail, c_screenname, c_o, - c_telephonenumber to empty strings if not found. - - * SoObjects/Contacts/SOGoContactLDAPFolder.m - ([SOGoContactLDAPFolder - -lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]): - no longer make use of the displayName, mail, screenName, phone and - org intermediary keys. - - * UI/Contacts/UIxContactsListView.m ([-currentCName]): removed - useless method. - -2009-02-05 Francis Lachapelle - - * UI/SOGoUI/UIxComponent.m ([UIxComponent -responseWithStatus:): - we now set the content-type to "text/plain" to fix issues with nginx. - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m - ([UIxMailPartHTMLViewer - -startElement:namespace:rawName:attributes:]): the base tag must be ignored. - -2009-01-22 Ludovic Marcotte - - * Updated the Apache section in the installation - and configuration guide - * Apache/SOGo.conf - Updated to use mod_proxy and mod_proxy_balancer - instead of mod_ngobjweb. We now also distribute - requests across three sogod processes. - * sogo.spec - Removed mod_ngobjweb from the build dependancies - -2009-01-21 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -fixupRecord:_record]): removed the unused - isAllDay local variable. - ([SOGoAppointmentFolder -fixupRecords:records]): removed the - unused "fetchRange:" argument. - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - +folderWithSubscriptionReference:referenceinContainer:aContainer]): - same as below. - - * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -realNameInContainer]): - escape the owner name as a potential CSS identifier. - - * SoObjects/SOGo/NSString+Utilities.m ([NSString - -asCSSIdentifier]): escape the "_" character first. - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - -subscribe:reallyDoinTheNamesOf:delegatedUsersfromMailInvitation:isMailInvitationinContext:localContext]): - explicitly set the content-type of the response to text/plain with - charset='utf-8' to work-around a bug in Firefox, complaining about - a hypothetical text/xml content he does not receive. - * UI/Common/WODirectAction+SOGo.m ([WODirectAction - -responseWith204]): - same as above. - -2009-01-19 Ludovic Marcotte - - * Main/SOGo.m - We check if we have an empty configuration upon startup - and warn the user about this. - -2009-01-16 Wolfgang Sourdeau - - * SoObjects/SOGo/NSString+Utilities.m ([NSString - -asCSSIdentifier]): new method returning a "safe" CSS identifier - based on the original string. - -2009-01-13 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser -userDefaults]): make use - of more explicit names for the variables used. Invoke a new [self - primaryUserDefaults] that fetches the defaults from the database, - so as to separate that mechanism from the caching mechanisme. - ([SOGoUser -userSettings]): same as above. - -2009-01-09 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject - -aclUsers]): fixed method to invoke [container - aclUsersForObjectAtPath:] with the resulting path as argument - instead of the path itself. - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - -sendFolderAdvisoryTemplate:template]): the condition check for - sending folder advisories has been moved here. - ([SOGoGCSFolder -sendFolderAdvisoryTemplate:template]): now a - public method. - -2009-01-07 Ludovic Marcotte - - * Added Documentation/SOGo Mobile Devices Configuration.odt - * Fixed typos in the Intallation & Configuration guide - * Added Documentation/SOGo Mozilla Thunderbird Configuration.odt - -2009-01-07 Francis Lachapelle - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -_handleCustomRRule:]): set the proper timezone for the end date. - ([UIxComponentEditor -_loadRRules]): idem. - ([UIxComponentEditor -init): instantiates an UIxDatePicker object - to retrieve the proper date format. - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -saveAction]): for recurrent events with an end date, the method - _adjustRecurrentRules must be called unconditionally. This fixes - the missing occurence on the last day. - ([UIxAppointmentEditor -_adjustRecurrentRules]): fixed adjustment - of end date by using the proper timezone. - -2009-01-07 Wolfgang Sourdeau - - * SoObjects/SOGo/NSString+Utilities.m ([NSString - -doubleQuotedString]): new method that returns a double-quoted and - properly escaped version of the string. Since it's the same - algorithm used in jsonRepresentation, the latter is now calling - this new method. - -2009-01-06 Ludovic Marcotte - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent -_filterComponent:]): - We now set the proper component summary just like - we do in the Web UI when 'securing' the - returned component. Also adjusted the Localizable.strings - files accordingly. - -2008-12-30 Ludovic Marcotte - - * Dropped the following files: - UI/Scheduler/UIxAppointmentProposal.m - UI/Scheduler/UIxTaskProposal.m - * SoObjects/Appointments/SOGoAppointmentFolder.m - SoObjects/Contacts/SOGoContactGCSFolder.m - UI/WebServerResources/SchedulerUI.js - Fixed the escaping of characters and associated - search methods. - * SoObjects/SOGo/SOGoGCSFolder.m - ([SOGoGCSFolder aclsForUser:forObjectAtPath:]): - Added two new defaults to control the default - ACLs when none are specified: - SOGoCalendarDefaultRoles and SOGoContactsDefaultRoles - They are both arrays in which we set strings, - for example : - SOGoCalendarDefaultRoles = ("ObjectCreator", "PublicViewer"); - SOGoContactsDefaultRoles = ("ObjectEditor"); - -2008-12-30 Francis Lachapelle - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -newOccurenceWithID:]): fixed the start - date when returning an occurrence of an all-day event. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -fixupCycleRecord:cycleRange:firstInstanceCalendarDateRange:forViewRange:]): - Fixed the start/end dates and recurrence id of events that span a - time period where the daylight saving time changes. - ([SOGoAppointmentFolder - -_appendCycleException:firstInstanceCalendarDateRange:fromRow:forRange:toArray:]): - idem. - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -defaultAction]): idem. - ([UIxAppointmentEditor -viewAction]): idem. - -2008-12-30 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions - -eventsBlocksAction]): fixed a crash occuring in the rare - situation where an event end date would be inferior than its start - date. - -2008-12-23 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentFolder.{h,m} - Added an additional parameter to fetchFields:... - so that we can avoid stripping relevant information. - This is useful when verifying the freebusy of - meeting participants as we must not strip the - c_partstates/c_partmails fields. - * SoObjects/SOGo/SOGoObject.{h,m} - We now permit two parameters during the user-list - REPORT in order to avoid LDAP lookups. - -2008-12-23 Francis Lachapelle - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -_adjustRecurrentRules]): new method to adjust the until date of a - recurrent rule using the start time of the event. - -2008-12-21 Ludovic Marcotte - - * Added the "sent-by" field to all invitation - update templates. - -2008-12-19 Francis Lachapelle - - * iCalWeeklyRecurrenceCalculator.m ([iCalDailyRecurrenceCalculator - -recurrenceRangesWithinCalendarDateRange:_r]): rewrote method to - handle timezones. Removed usage of julian numbers. - - * iCalDailyRecurrenceCalculator.m ([iCalWeeklyRecurrenceCalculator - -recurrenceRangesWithinCalendarDateRange:_r]): idem. Also fixed - the handling of intervals. - -2008-12-19 Wolfgang Sourdeau - - * UI/Common/UIxPageFrame.m ([UIxPageFrame -userSettings]): new - accessor method to avoid loading the user settings with an - additional json request. - ([UIxPageFrame -userDefaults]): same as above for user defaults. - -2008-12-17 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder - -lookupName:nameinContext:lookupContextacquire:acquire]): we avoid - getting subscribed sources if not needed, which reduces the amount - of requests to the database. - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -dealloc]): we release componentCalendar here to avoid a leak - (since if set, it was through a call to ASSIGN()). - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -setComponent:newComponent]): since componentCalendar is released - at deallocation, we need to retain it, and to release the previous - value to avoid a leak... - -2008-12-15 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject +webdavAclManager]): - same as below. - ([SOGoObject -doesRetainContainer]): return "NO" here in order to - avoid leaks. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder +webdavAclManager]): same as below. - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject +webdavAclManager]): same as below. - - * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder +webdavAclManager]): - same as below. - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - +webdavAclManager]): same as below. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject +webdavAclManager]): - same as below. - - * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder - +webdavAclManager]): declare singleton as static to avoid leaking. - -2008-12-15 Ludovic Marcotte - - * Updated german translations - patch from - Alexander Greiner-Baer - * SoObjects/Contacts/SOGoContactLDIFEntry.m - ([SOGoContactLDIFEntry -vCard]): We now force - the usage of the SOGoLDAPContactInfoAttribute, - if defined, over "description" when generating - the "NOTE" attribute. - * SoObjects/SOGo/SOGoObject.m - Optimized a bit and we also now support setting - roles, or adding/removing roles for multiple users - at once. - -2008-12-14 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -_buildStripFieldsFromFields:]): - Don't strip the c_isopaque for the DAndTViewer role. - -2008-12-09 Francis Lachapelle - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -_handleUpdatedEvent:fromOldEvent:]): if - the sequence doesn't change, attendees will no longer receive a - notification by email. - ([SOGoAppointmentObject - -_updateAttendee:ownerUser:forEventUID:withRecurrenceId:withSequence:forUID:shouldAddSentBy:]): - if an attendee accepts all events, on the master event of a - repeating event will be updated; occurrences will no longer be affected. - ([SOGoAppointmentObject -postCalDAVEventRequestTo:from:]): when - dealing with an occurrence of a repeating event, the function now - proprly update each attendee's calendar. - ([SOGoAppointmentObject - -takeAttendeeStatus:from:withRecurrenceId:]): fixed handling of an - occurrence of a repeating event. - ([SOGoAppointmentObject -postCalDAVEventReplyTo:from:]): idem. - -2008-12-08 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder bareFetchFields:...]): we now - correctly handle the privacy SQL string w/o loosing - the previously defined filters. - -2008-12-05 Francis Lachapelle - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent -_updateRecurrenceIDsWithEvent:]): fixed - modification of the new event and added adjustement of the - exception dates. - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject - -_removeEventFromUID:owner:withRecurrenceId:]): for a repeating - event, the occurrence was not properly removed. - - * SoObjects/Appointments/SOGoComponentOccurence.m - ([SOGoComponentOccurence -prepareDelete]): for a repeating event, - the exception date was not added and the occurence was not - properly deleted. - - * UI/MailPartViewers/UIxMailPartICalViewer.m - ([UIxMailPartICalViewer -isEventStoredInCalendar]): when dealing - with an occurrence of a repeating event, the function now properly - verify the presence of the occurence and not only the event. - -2008-12-05 Ludovic Marcotte - - * SOPE/NGCards/NSString+NGCards.m - We avoid escaping the comma during content generation - * SOPE/NGCards/iCalDailyRecurrenceCalculator.m - Fixed RRULE lamenesses. - -2008-12-04 Ludovic Marcotte - - * Fixed a typ in SoObjects/SOGo/SOGoCache.m - that would lead to a crash - -2008-12-03 Francis Lachapelle - - * UI/MailPartViewers/UIxMailPartICalViewer.m - ([UIxMailPartICalViewer -storedEvent]): returns the occurence of - the repeating event if recurrenceId is defined. - - * UI/MailPartViewers/UIxMailPartICalActions.m - ([UIxMailPartICalActions -_setupChosenEventAndEventObject:]): - fixed comparison of the calendar and email event when dealing with - an occurence of a repeating event. - ([UIxMailPartICalActions -_updateAttendee:ownerUser:forEventUID:withRecurrenceId:forUID:shouldAddSentBy:]): - fixed handling of status update for one occurence of a repeating event. - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -saveComponent:]): fixed handling of an - occurence modification (resulting a properly written email sent to - attendees). - ([SOGoAppointmentObject - _removeEventFromUID:owner:withRecurrenceId]:): fixed handling of - an occurrence deletion. In this case an exception date must be - added to the event. - -2008-12-02 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentFolder.m - Modified to handle correctly the classification - of events when fetching the etags in order to - not return unaccessible components. - -2008-12-01 Ludovic Marcotte - - * Improved the cache sync process and added - safetiness using a db transaction. - -2008-12-01 Francis Lachapelle - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -prepareDeleteOccurence:]): fixed handling - of occurence deletion by an attendee. - ([-changeParticipationStatus: forRecurrenceId:]): fixed handling - of changing the attendee's status when no occurrence was - previously defined. - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -takeValuesFromRequest: inContext:]): replaced pulldown - transparency menu by a checkbox (Show Time as Free). - -2008-12-01 Ludovic Marcotte - - * We now try to match the c_name and c_uid - when creating events from the Web interface. - This can avoid creating duplicate events - with IMIP when calendar refreshes haven't occured - before the accept/decline/tentative actions. - -2008-11-29 Ludovic Marcotte - - * Updated german translation - patch from - Alexander Greiner-Baer - -2008-11-28 Ludovic Marcotte - - * We no longer show the previous/new location - if it's empty in the invitation update templates. - -2008-11-26 Ludovic Marcotte - - * SoObjects/SOGo/SOGoGCSFolder.m - We correctly wrap ACL additions around a - database transaction. - * Updated the code wrt acting on behalf of - someone else to speed up things and also to - honor the participation status of the one acting - on behalf of someone else. - -2008-11-26 Ludovic Marcotte - - * SoObjects/SOGo/SOGoGCSFolder.m - We escape the ' character in the folder name - before trying to set it. - * SoObjects/Appointments/SOGoAppointmentObject.m - We now handle the originator/organizer correctly - when posting CalDAV messages. - -2008-11-24 Ludovic Marcotte - - * We now sort the results in the subsription window - -2008-11-24 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder - -toManyRelationshipKeys]): return the subfolders in the order by - which they appear in the web interface, to avoid confusing - Lighting with its Inbox management and so that the folders appear - in an ordered way. - -2008-11-23 Wolfgang Sourdeau - - * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage - -usersSearchAction]): new method, derived from the previous - version of foldersSearchAction, but that only returns username and - contact info about matching users. - ([SOGoUserHomePage -foldersSearchAction]): new implementation that - returns the folders available for subscription of the only user - passed as parameter. - -2008-11-23 Ludovic Marcotte - - * UI/Scheduler/UIxComponentEditor.m - _loadAttendees - We set the name to the rfc822 email address if the - cn is not available. This avoid NOT showing attendees - from the Web interface when only the email address - was specified from the attendee list. - -2008-11-23 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder - -davCollectionQuery:queryContext]): simplified method by returning - only the folders with the specified type that are shared by the - owner of the current user folder. The folder owner is now - identified correctly with his personal folder principal. - ([SOGoUserFolder -davUserQuery:queryContext]): when an LDAP info - attribute is available for the user, we return it too. - - * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager - +initialize]): we need to retain the LDAPContactInfoAttribute - static var, to avoid a zombie. - ([LDAPUserManager -fetchContactsMatching:filter]) - ([LDAPUserManager -fetchUsersMatching:filter]): the info attribute - is returned if the related entry does NOT contain it yet: the test - was reverted. - -2008-11-22 Ludovic Marcotte - - * Modified the invitation "update" templates - to display the summar in the email subject. - * Commented out a premature optimization in - SOGoAppointmentFolder.m - -2008-11-20 Ludovic Marcotte - - * Fixed a crash issue in SOGoCache - we don't - replaced the cached object. - * Reworked the freebusy code to ignore c_status - and rather consider the values of the particpant - states (accepted/needs-action/declined) - -2008-11-18 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentObject.m - Modified postCalDAVEventRequestTo: from: to handle - invitation updates from normal ones. - -2008-11-17 Ludovic Marcotte - - * Added back the appointment update notification - templates from RC8 and updated them. - * SoObjects/Appointments/SOGoAppointmentFolder.m - Greatly improved the speed of getetag calls - * SoObjects/SOGo/SOGoGCSFolder.m - We now allow multiple users subscribe/unsubscribe - requests during one DAV call. - -2008-11-13 Ludovic Marcotte - - * SoObjects/Appointments/SOGoAppointmentObject.m - We now remove the SENT-BY when updating attendees - if it's the attendee himself that changes his - particpation status - * SoObjects/SOGo/SOGoUserFolder.m - Improve the comparison of strings by rather using - URL objects. - * SOPE/NGCards/CardVersitRenderer.m - We now properly quote attribute values if they - contain an ':' in them - * SoObjects/Appointments/iCalPerson+SOGo.m - Fixed the check for quoted SENT-BY - * Updated the iCal invitation replies to take - the SENT-BY into account. - -2008-11-11 Ludovic Marcotte - - * Fixed a couple of issues in the new pref caching - subsystem. - * Cleaned up the caching code and activated - distributed notifications by default. - -2008-10-29 Francis Lachapelle - - * SoObjects/SOGo/SOGoUser.m ([-userDefaults]): added support for - system-wide defaults for ReplyPlacement, SignaturePlacement, - MessageForwarding, and MessageCheck. - -2008-10-23 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoMailer.m ([SOGoMailer - -sendMailData:datatoRecipients:recipientssender:sender]): don't - HELO the server after connecting, since the connectToHost: method - already has "EHLO"'d it after the connection was established. - - * UI/MailerUI/UIxMailMainFrame.m ([-quotaSupport]): removed - useless method. - - * SoObjects/SOGo/NSArray+Utilities.m ([NSArray - -objectsForKey:keynotFoundMarker:marker]): added a - "notFoundMarker:" parameter to the "objectsForKey:" method. When - the marker is nil and no match is found in the current dictionary, - the entry is ignored. - -2008-10-21 Wolfgang Sourdeau - - * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView - -contactSearchAction]): fixed typing of "contacts", which actually - is an NSArray. - -2008-10-17 Francis Lachapelle - - * UI/Common/UIxPageFrame.m ([NSString userLanguage]): returns the - user's language. Used to make this information available through - JavaScript. - -2008-10-16 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject -davURL]) - ([SOGoObject -soURL]): adjusted last change by checking that the - port returned initially is not nil before initializing the - returned NSURL. - -2008-10-15 Francis Lachapelle - - * UI/Contacts/UIxContactEditor.m ([_setupEmailFields]): avoid - setting the work mail if only the home mail is defined. - - * OGoContentStore/OCSContactFieldExtractor.m ([NSMutableDictionary - extractQuickFieldsFromVCard:vCard]): set email address to an empty - string if not defined. - - * UI/Contacts/UIxContactFoldersView.m ([WOActionResults - allContactSearchAction]): returned array is now properly - initialized if no result is found. - -2008-10-15 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailListView.m ([UIxMailListView - -columnsDisplayOrder]): slightly optimized method by reducing the - amount of method calls. Initialized userDefinedOrder as an - NSMutableArray instead of an NSArray. Fixed indentation. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject -davURL]) - ([SOGoObject -soURL]): appended the port number to the hostname - used to construct the NSURL instance. - -2008-10-03 Francis Lachapelle - - * UI/MainUI/SOGoUserHomePage.m ([WOResponse - _foldersResponseForResults]): include the value of the attribute value - from user defaults SOGoLDAPContactInfoAttribute. - - * UI/Contacts/UIxContactFoldersView.m ([WOActionResults - allContactSearchAction]): return a dictionary with the found - contacts and the original search string. - ([WOActionResults contactSearchAction]): idem. - - * SoObjects/SOGo/LDAPUserManager.m ([NSArray - _compactAndCompleteContacts:]): add the attribute from user - defaults SOGoLDAPContactInfoAttribute for each returned contact. - - * SoObjects/SOGo/LDAPSource.m ([EOQualifier _qualifierForFilter: - ]): the filter doesn't match only the beginning of the attribute's - value anymore. - ([NSArray _searchAttributes]): add the attribute from user - defaults SOGoLDAPContactInfoAttribute if not already included. - - * SoObjects/Contacts/SOGoContactLDAPFolder.m ([NSArray - _flattenedRecords]): added the key "contactInfo" with the value of - the attribute from user defaults SOGoLDAPContactInfoAttribute. - - * UI/Contacts/UIxContactFoldersView.m ([NSDictionary - _responseForResults:]): returns a dictionary instead of a - WOResponse. Currently only called by contactSearchAction. - -2008-10-03 Cyril Robert - * SoObjects/Mailer/SOGoMailFolder.m - Added copyUIDs and moveUIDs - - * UI/MailerUI/UIxMailActions.m - Removed copyAction and moveAction - - * UI/MailerUI/UIxMailFolderActions.m - Added copyMessagesAction and moveMessagesAction - - * UI/WebServerResources/MailerUI.js - Removed _onMailboxMenuAction - Modified onMailboxMenuCopy and onMailboxMenuMove - - Copying/Moving messages is now done with one POST. - Fixed bug #1893 - -2008-10-02 Cyril Robert - - * SoObjects/Mailer/SOGoMailFolder.m - Modified zip command acces path, defaults to /usr/bin/zip, - overwritable by sogo defaults - - * UI/MailPartViewers/UIxMailPartViewer.m - Added - (NSString *) mimeImageUrl to get an icon path for attachments - - * UI/MailerUI/UIxMailListView.m - Added: - - (NSArray *) columnsDisplayOrder - Returns the current columns order, either from sogo defaults or user defaults. - - (NSDictionary *) columnsMetaData - Returns an array of metadata (id, class) for columns header. - - * UI/MailerUI/UIxMailMainFrame.m - Added - (NSString *) defaultColumnsOrder to get the order from a js call. - - Summary: - * Columns in UIxMailListView can now be changed - * "Priority" column is smaller - * Path to zip command now configurable - * Fixed a js bug (loadImagesButton is null) - * Attachments now have an icon according to their mimetype - -2008-10-01 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent - -sendEMailUsingTemplateNamed:newPageNameforObject:objecttoAttendees:attendees]): - changed method to only accept one event from now on, since we - actually use less information with the Lightning-inspired - templates than before. - - * SoObjects/Appointments/SOGoAptMailNotification.m ([-homePageURL]) - ([-setHomePageURL:newhomePageURL], [-appointmentURL], [-viewTZ]) - ([-setViewTZ:newViewTZ]): removed obsolete accessors. - - * SoObjects/Appointments/SOGoAptMailICalReply.m - ([SOGoAptMailICalReply -attendeeName]): new method returning the - cn of the attendee. - -2008-09-30 Ludovic Marcotte - - * Implemented external loading of images - in HTML mails the same way Thunderbird does it. - -2008-09-30 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoLDAPUserDefaults.m ([SOGoLDAPUserDefaults - -objectForKey:key]): properly handle arrays of record references. - - * SoObjects/SOGo/SOGoLDAPUserDefaults.m ([SOGoLDAPUserDefaults - -objectForKey:key]): added support for dn+attribute lookup. The - lookup syntax has been generalized by testing for "ref-dn" instead - of "dict-dn". Make use of only non-deprecated LDAP functions. - -2008-09-30 Cyril Robert - - * SoObjects/Mailer/SOGoDraftsFolder.m - Moved userSpoolFolderPath method to SOGoMailFolder.m - * SoObjects/Mailer/SOGoMailFolder.h - * SoObjects/Mailer/SOGoMailFolder.m - Added userSpoolFolderPath from SOGoDraftsFolder - Added archiveUIDs method to create an archive from email uids - * UI/MailerUI/UIxMailFolderActions.h - * UI/MailerUI/UIxMailFolderActions.m - Added saveMessagesAction method to handle the /saveMessages call - * UI/MailerUI/product.plist - Added a definition for saveMessages - -2008-09-28 Ludovic Marcotte - - * Modified the following files: - SoObjects/Mailer/SOGoDraftObject.m - UI/MailerUI/Dutch.lproj/Localizable.strings - UI/MailerUI/English.lproj/Localizable.strings - UI/MailerUI/French.lproj/Localizable.strings - UI/MailerUI/German.lproj/Localizable.strings - UI/MailerUI/Italian.lproj/Localizable.strings - UI/MailerUI/Spanish.lproj/Localizable.strings - UI/MailerUI/Toolbars/SOGoDraftObject.toolbar - UI/MailerUI/UIxMailEditor.m - UI/MailerUI/UIxMailListView.m - UI/Templates/MailerUI/UIxMailEditor.wox - UI/Templates/MailerUI/UIxMailListView.wox - UI/WebServerResources/UIxMailEditor.js - in order to add support for X-Priority in emails. - * Regenerated the sope-patchset in order to add - capabilities to parse BODY[HEADER.FIELDS ...] responses. - -2008-09-26 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoLDAPUserDefaults.m ([SOGoLDAPUserDefaults - -objectForKey:key]): implemented overriden method by using c types - and methods to avoid recursive calls from objective-c methods. - -2008-09-25 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoLDAPUserDefaults.[hm]: new class module - designed to substitute the system NSUserDefaults system with - access to an LDAP directory. - -2008-09-22 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder - -deleteUIDs:uidsinContext:localContext]): explicitly select the - current mailbox. - -2008-09-22 Ludovic Marcotte - - * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions - -deleteMessagesAction]): make use of the new SOGoFolder's - deleteUIDs:inContext: method described below. - - * UI/MailerUI/UIxMailActions.m ([-trashAction]): removed web method. - - * SoObjects/Mailer/SOGoMailObject.m ([-trashInContext:_ctx]): - removed method, obsoleted by the new "deletedUIDS:..." method - described below. - - * SoObjects/Mailer/SOGoMailManager.[hm]: removed all methods - except -copyMailURL:srcurltoFolderURL:desturlpassword:pwd, which - is the only one still used. - - * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder - -deleteUIDs:uidsinContext:localContext]): new method enabling the - deletion of many IMAP uids in one batch. - -2008-09-22 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -davCollectionTag]): do not ignore deleted - records when "computing" the ctag. Also, the EOSpecification - instance should not be static, otherwise any subsequent queries - will be based on the ctag of the first calendar ever queried. - - * SoObjects/SOGo/NSString+Utilities.m ([NSString - -asQPSubjectString:encoding]): replace spaces with underscore - characters to comply with rfc 2047. - -2008-09-17 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer - -decodedFlatContent]): same as below... - - * SoObjects/Mailer/NSData+Mail.m ([NSData - -bodyDataFromEncoding:encoding]): invoke - "dataByDecodingQuotedPrintableTransferEncoding" on the NSData - instance to avoid decoding "_" chars. - -2008-09-17 Francis Lachapelle - - * UI/MailerUI/UIxMailAccountActions.m ([WOResponse - -listMailboxesAction]): also returns the inbox quota, wrapped in a - new dictionary with keys "mailboxes" and "quotas". Uses the new user - default "SOGoSoftQuotaRatio" to force a quota and ignore the one - returned by the IMAP server. - -2008-09-17 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject - -fetchAttachmentIds]): if the parts have no filename associated - with them, we still return the prefix url so that we still can - access the attachment from HTML messages. - -2008-09-11 Wolfgang Sourdeau - - * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage -logoffAction]): - log the username performing the logoff operation. - - * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -connectAction]): log - success information about current attempt. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject - -lookupName:lookupNameinContext:localContextacquire:acquire]): do - not use the object returned by "bindToObject:inContext:". - Otherwise the clientObject isn't set in the context. - -2008-09-10 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartAlternativeViewer.m - ([UIxMailPartAlternativeViewer -selectChildInfo]): give precedence - on multipart/mixed parts over text/* parts. - - * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject - -isValidAttachmentName:filename]): accept all filenames except - ".", ".." and those that contain "/". Any other is valid and will - be accepted. - -2008-09-08 Ludovic Marcotte - - * SoObjects/SOGo/LDAPSource.m ([LDAPSource - -checkLogin:loginToCheckandPassword:passwordToCheck]) - ([LDAPSource -allEntryIDs]) - ([LDAPSource -fetchContactsMatching:match]) - ([LDAPSource -lookupContactEntry:entryID]) - ([LDAPSource -lookupContactEntryWithUIDorEmail:uid]): catch any - LDAP connection failure exception and return an empty result if - such as situation has happened. - -2008-09-05 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailReply.m: made class a child of - SOGoMailForward, since we need to access more or less the same - fields from the original message, especially in outlook reply mode. - ([SOGoMailReply -setOutlookMode:newOutlookMode]): new accessor - defining in which mode we are. - - * SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject - -contentForReply]): if the reply style is outlook, then we use the - content generated for inline forwarding. - ([SOGoMailObject -useOutlookStyleReplies]): new method that - indicates whether the ud key "SOGoMailUseOutlookStyleReplies". - - * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder - -expungeLastMarkedFolder]): do not perform the expunge if the - marked folder is the current folder. - -2008-09-04 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartAlternativeViewer.m - ([UIxMailPartAlternativeViewer -selectPartIndexFromTypes:]): give - precedence on multipart/related parts. - - * UI/MailPartViewers/UIxMailRenderingContext.m - ([UIxMailRenderingContext -viewerForBodyInfo:_info]): add the - mixed viewer as the viewer for "multipart/digest" content. - - * UI/MailPartViewers/UIxMailPartTextViewer.m (convertChars): - fixed a buffer overflow. Incremented the buffer size to 8192. - -2008-09-02 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailManager.m ([NGImap - -copyMailURL:toFolderURL:password:]): do not compare the urls - based on the instance that NGImap4ConnectionManager returns, - because disabling the pooling will generate a bad result, even - though the host:port pairs are the same. - -2008-09-01 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailView.m ([UIxMailView - -appendToResponse:_responseinContext:_ctx]): no longer invoke - [NGImap4Client logout], since this is now handled by the - NGImap4Connection manager (or not). - - * UI/MailerUI/UIxMailActions.m ([UIxMailActions - -markMessageUnreadAction]): no longer make use of [SOGoMailFolder - unselect]. - ([UIxMailActions -markMessageReadAction]): idem. - - * SoObjects/Mailer/SOGoMailFolder.m ([-unselect]): removed method - since we no longer need it. - - * SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject - -dealloc]): release "imap4". If the IMAP4 connection pooling is - disabled, the object will otherwise never be released. - - * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount - +initialize]): use the user default "SOGoFallbackIMAP4Server" to - override the value of "serverName" from the actual user settings. - Fallback to "localhost" if value is unset. - - * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount - -imap4URLString]): use the value of SOGoFallbackIMAP4Server, as - mentionne above. - - * UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -from]): retain the - initialized value of from, otherwise we create a future zombie. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject - -initWithName:_nameinContainer:_container]): we no longer retain - the context, to avoid making a circular reference. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser - -initWithLogin:newLoginroles:newRoles]): moved the core from init - here. - ([-init]): removed method. - -2008-08-29 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailView.m ([UIxMailView - -appendToResponse:_responseinContext:_ctx]): logout from the imap - connectin once the response has been appended. - -2008-08-29 Ludovic Marcotte - - * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject - -addRecipients:recipientstoArray:array]): same as below. - - * SoObjects/Mailer/SOGoDraftObject.m: - ([SOGoDraftObject -addEMailsOfAddresses:_addrstoArray:_ma]): test - if the returned email is nil before adding it to the array. - -2008-08-28 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailActions.m ([UIxMailActions - -markMessageUnreadAction]): unselect the mailbox after the operation. - ([UIxMailActions -markMessageReadAction]): same as above. - - * UI/MailPartViewers/UIxMailPartICalViewer.m - ([UIxMailPartICalViewer -hasCalendarAccess]): new method that - returns whether the current user has access to the calendar - module, so that buttons can be hidden. - -2008-08-27 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart - -lookupImap4BodyPartKey:inContext:]): if the "parts" object is not - found, we try "body"->"parts". - -2008-08-26 Francis Lachapelle - - * UI/MailerUI/UIxMailMainFrame.m ([composeAction]): build the - contact's fullname from its card's attribute "n" if "fn" is - not defined. - - * UI/Contacts/UIxContactView.m ([fullName]): idem. - - * UI/Contacts/UIxContactEditor.m ([addressBooksList]): new - method to retrieve the address books to which the user can write. - ([saveAction]): if the user change the destination address - book, the contact is now correctly moved to it. - - * UI/Scheduler/UIxAppointmentEditor.m ([viewAction]): new - method that returns a JSON representation of an event. - - * UI/Scheduler/UIxAppointmentEditor.m ([newAction]): removed - the rights validation from the product.plist to this method so - the user redirect to the proper folder if rights are insufficient. - - * UI/Scheduler/UIxTaskEditor.m ([newAction]): idem. - - * UI/Contacts/UIxContactEditor.m ([newAction]): idem. - - * UI/Scheduler/UIxCalendarSelector.m ([calendars]): removed - the roles as they are no longer verified through JavaScript. - - * SoObjects/SOGo/SOGoFolder.m - ([_compareByNameInContainer:otherFolder]): fixed an order - problem with the personal folders. - - * SoObjects/SOGo/NSString+Utilities.m - ([_rangeOfURLInRange:refRange]): added some ending characters. - ([_handleURLs:selfCopy textToMatch:match prefix:prefix - inRanges:ranges]): fixed the parsing so URLs are properly identified. - - * UI/MailerUI/UIxMailAccountActions.m ([-composeAction]): - added support to define the subject through the URL. - -2008-08-26 Wolfgang Sourdeau - - * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -setUserName:_value]) - ([SOGoRootPage -userName]): removed accessors, since the - corresponding ivar is not used and was removed too. - - * UI/SOGoUI/UIxComponent.m ([-shortUserNameForDisplay]): no longer - make use of the "wrongusernamepassword" hack. - - * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -connectAction]): return - HTTP code 403 if the username and the password passed in the - request are not valid. - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder - -lookupName:_keyinContext:_ctxacquire:_flag]): whenever a user has - no access to the specified module, a response with code 403 and - the content of "UIxModuleAccessDenied" will be generated. - - * UI/SOGoUI/UIxModuleAccessDenied.[hm]: new template module - displaying an error message. - -2008-08-22 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailRenderingContext.m - ([UIxMailRenderingContext -viewerForBodyInfo:_info]): display - parts with a bodyId as an attachment. - - * UI/Contacts/UIxContactView.m ([UIxContactView -workUrl]) - ([UIxContactView -homeUrl]): the test for the presence of a - protocol was inverted, causing the output of wrong urls anyway... - - * SoObjects/Contacts/SOGoContactLDIFEntry.m ([SOGoContactLDIFEntry - -vCard]): replaced query for field "notes" with "description". - Added support for Mozilla custom fields 1 to 4. - - * SoObjects/Mailer/SOGoHTMLMailBodyPart.[hm]: new class module - implementing the HTML content body parts. - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m - ([UIxMailPartExternalHTMLViewer -init]): new class derived from - UIxMailPartHTMLViewer but which as as a full page wrapper. - -2008-08-22 Ludovic Marcotte - - * Modified SoObjects/Mailer/NSData+Mail.m - -decodedSubject so we correctly implement decoding - instead of relying on the broken SOPE implementation. - -2008-08-21 Ludovic Marcotte - - * SoObjects/SOGo/LDAPUserManager.m - Renamed the SOGOLDAPUserManagerCleanupInterval defaults to - SOGoLDAPUserManagerCleanupInterval. - We correctly add our timer to the runloop and fixed - a typo in the selector name. - -2008-08-21 Wolfgang Sourdeau - - * SoObjects/SOGo/NSString+Utilities.m ([NSString - -caseInsensitiveMatches:match]): new method that helps matching - strings against patterns. - -2008-08-21 Ludovic Marcotte - - * Updated the icons to use those from Thunderbird 2 - and from Lightning 0.9. Also added those new files : - - UI/WebServerResources/tbtv_account_17x17.png - UI/WebServerResources/tbtv_drafts_17x17.png - UI/WebServerResources/tbtv_inbox_17x17.png - UI/WebServerResources/tbtv_leaf_corner_17x17.png - UI/WebServerResources/tbtv_sent_17x17.png - UI/WebServerResources/tbtv_trash_17x17.png - - Dropped : - - UI/WebServerResources/tbtv_account_17x17.gif - UI/WebServerResources/tbtv_drafts_17x17.gif - UI/WebServerResources/tbtv_inbox_17x17.gif - UI/WebServerResources/tbtv_leaf_corner_17x17.gif - UI/WebServerResources/tbtv_sent_17x17.gif - UI/WebServerResources/tbtv_trash_17x17.gif - -2008-08-20 Wolfgang Sourdeau - - * UI/PreferencesUI/UIxAdditionalPreferences.[hm]: new template - class that enables the user to append links or other infos needed - to change preferences not handled by SOGo. The tab will display - when setting the ud key "SOGoUIxAdditionalPreferences" to YES. - -2008-08-19 Wolfgang Sourdeau - - * UI/MainUI/SOGoBrowsersPanel.[hm]: new template class that helps - displaying a choice of browsers compatible with SOGo. The code was - extracted from UIxPageFrame. - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -viewAction]): apply the user's timezone to the startdate before - formatting it. - -2008-08-18 Ludovic Marcotte - - * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject - -mimeHeaderMapWithHeaders:_headers]): properly quote atoms in mail - addresses. - - * UI/MailPartViewers/UIxMailPartMessageViewer.m - ([UIxMailPartMessageViewer -formattedComponents:components]): - don't report nil components. - -2008-08-13 Wolfgang Sourdeau - - * SoObjects/Appointments/iCalEventChanges+SOGo.m - ([iCalEventChanges -sequenceShouldBeIncreased]): added summary and - comment. - - * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager - -contactInfosForUserWithUIDorEmail:uid]): only use the - authentication sources. - -2008-08-11 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoComponentOccurence.m - ([SOGoComponentOccurence - +occurenceWithComponent:newComponentwithMasterComponent:newMasterinContainer:newContainer]): - seconds is now a NSTimeInterval instead of an int, to avoid - casting problems on the PowerPC architecture. - -2008-08-10 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartICalViewer.m - ([UIxMailPartICalViewer -currentUserAttendee]): select the most - recent event. - - * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject -copyToFolder:newFolder]) - ([SOGoContentObject -moveToFolder:newFolder]): new operation methods. - -2008-08-10 Ludovic Marcotte - - * UI/Contacts/UIxContactView.m ([UIxContactView -homeUrl]) - ([UIxContactView -workUrl]): prefixes the urls with "http://" if - not already prefixed. - -2008-08-09 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoComponentOccurence.m - ([SOGoComponentOccurence -changeParticipationStatus:newPartStat]): - implemented proxy method. - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent - -sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]): - the sender email is always the one of the owner, even though the - action might be done by a delegate. If the case, we setup the - "SENT-BY" parameter of the organizer field. - ([SOGoCalendarComponent -sendResponseToOrganizer]): If needed, - setup the "SENT-BY" parameter of the attendee field. - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -toolbar]): changed algoritm so that a delegate would really see - what the owner would, depending on his/her rights. - - * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart - -lookupImap4BodyPartKey:inContext:]): find a class based on the - mime type of the subpart described by the partInfo. - - * SoObjects/Appointments/iCalEntityObject+SOGo.m - ([iCalEntityObject - -quickRecordDateAsNumber:_datewithOffset:offsetforAllDay:allDay]): - changed the type of "seconds" to NSTimeInterval to avoid casting - errors on PPC. - - * UI/MailPartViewers/UIxMailPartICalActions.m ([UIxMailPartICalActions -updateUserStatusAction]) - ([UIxMailPartICalActions -acceptAction]) - ([UIxMailPartICalActions -declineAction]): if the event doesn't - exist in the user table, declare it as new. - -2008-08-07 Wolfgang Sourdeau - - * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager - -fetchContactsMatching:filter]): fetch entries matching filter - only in addressbooks. - ([LDAPUserManager -fetchUsersMatching:filter]): same as above for - authentication sources only. - - * SoObjects/Appointments/SOGoUserFolder+Appointments.m - ([SOGoUserFolder -davCalendarUserAddressSet]): the addresses - returned should be those of the owner and not of the current user. - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject +webdavAclManager]): declare DAV:write as - equivalent of ..._ModifyComponent (instead of DAV:write-content). - -2008-08-05 Wolfgang Sourdeau - - * UI/Contacts/UIxContactEditor.m ([UIxContactEditor -isNew]): - invoke "isNew" to the client object only if it is an instance of - SOGoContentObject... - -2008-08-04 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent -calendar:create:secure]): we now return a - deep copy of the current calendar element, so that further - modifications do not impact the original copy. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser +initialize]): same as - below. - - * Main/SOGo.m ([SOGo -run]): rename AgenorProfileURL to - SOGoProfileURL automagically. - -2008-07-29 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions - -eventsBlocksAction]): return event blocks with the serial number - of the event they refer to in the events list (first array) rather - than their cname, so that specific occurences can be - differenciated. - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder - -davUserQuery:queryContext]): make searches only in user - repositories and not in addressbooks. - -2008-07-28 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalMonthView.m ([UIxCalMonthView - -weeksToDisplay]): add one day to the computed delta, because - there is always at least one week displayed. - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder - -foldersOfType:typematchingUID:uid]): make searches only in user - repositories and not in addressbooks. - - * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager - -fetchUsersMatching:filter]): new method allowing to make searches - only in user repositories. - -2008-07-25 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView -dayStartHour]): - new getter for computing the default scroll point in the day and - week views. - - * UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable - -clickableHourCellClass]): the "dayEndHour" is the hour where the - outOfDay class starts. - - * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -hasChanged]) - ([UIxPreferences -setHasChanged:newHasChanged]): new accessors - method for a new hidden input field that is set to 1 if the values - have changed and require a refresh of the main window. - - * SoObjects/SOGo/AgenorUserDefaults.[hm]: renamed module class and - class moduel to SOGoUserDefaults. - - * Main/SOGo.m ([SOGo -run]): the table referred to as - "AgenorProfileURL" is now referred to as "SOGoProfileURL". - -2008-07-24 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoWebAuthenticator.m ([SOGoWebAuthenticator -checkLogin:_loginpassword:_pwd]), - SoObjects/SOGo/SOGoDAVAuthenticator.m ([SOGoDAVAuthenticator -checkLogin:_loginpassword:_pwd]): - disable "bypass" authentification method, since it doesn't work anyway. - - * SoObjects/SOGo/SOGoWebAuthenticator.m ([SOGoWebAuthenticator -init]), - SoObjects/SOGo/SOGoDAVAuthenticator.m ([SOGoDAVAuthenticator - -init]): use "SOGoAuthenticationMethod" first, since - "SOGoAuthentificationMethod" was a typo. If none are specified, - fallback on "LDAP". - -2008-07-23 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent -secureContentAsString]): use a mutable - copy of the calendar in order to be able to modify it, otherwise - SOGo crashes. - ([-isFolderish]): removed method, so that the components won't be - listed as DAV collections. - -2008-07-21 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject - -PUTAction:_ctx]): when the object is new, return 201. Otherwise, - return 204 as success code. - -2008-07-18 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalWeekView.m ([UIxCalWeekView -startDate]): - same as below. - - * UI/Scheduler/UIxCalMonthView.m ([UIxCalMonthView - -weeksToDisplay]): use the user's first day of week to chose the - day to start the series. - ([UIxCalMonthView -dayCellClasses]): take the user's first day of - week into account. - ([UIxCalMonthView -endDate]): same as above. - - * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView - -firstDayOfWeek]): new template accessor. - - * UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable - -currentHourLineClass]): new template accessor. - ([UIxCalDayTable -clickableHourCellClass]): add the class - 'outOfDay' when the current hour is out of the user's day start - and end hour ranges. - - * UI/Scheduler/UIxCalDateSelector.m ([UIxCalDateSelector - -firstDayOfWeek]): new template accessor. - - * UI/Scheduler/UIxAttendeesEditor.m ([UIxAttendeesEditor -dayStartHour]) - ([UIxAttendeesEditor -dayEndHour]): new template accessors. - - * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -newStartDate]), - UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -newStartDate]): take the user-configured day start hour into account. - - * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences - -firstWeekList]): no longer list the option that enables the - hiding of week numbers. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser -firstDayOfWeek]) - ([SOGoUser -firstDayOfWeekForDate:date]) - ([SOGoUser -dayOfWeekForDate:date], [SOGoUser -dayStartHour]) - ([SOGoUser -dayEndHour]) - ([SOGoUser -firstWeekOfYearForDate:date]) - ([SOGoUser -weekNumberForDate:date]): new methods that help take - the calendar-related user preferences into account. - -2008-07-17 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalMonthView.m ([UIxCalMonthView - -weeksToDisplay]): we now display rows of weeks rather than columns - of week days. - - * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions - -eventsBlocksAction]): event blocks now that the "c_recurrence_id" - virtual field into account. - - * UI/Common/UIxObjectActions.m ([UIxObjectActions -deleteAction]): - new action method, moved from UIxContactView so that it is - generalized to all SOGoObjects. - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent -init]): we now save the calendar to avoid - multiple parsing and instantiation of children components. - ([SOGoCalendarComponent -toOneRelationshipKeys]): declare - components as children. - ([SOGoCalendarComponent - -lookupName:lookupNameinContext:localContextacquire:acquire]): - handle the search for components and their occurences. - ([SOGoCalendarComponent -saveComponent:newObject]): added code to - update recurrence ids whenever the user saves a new version of the - master component. - - * SoObjects/Appointments/SOGoAppointmentObject.m ([SOGoAppointmentObject -occurence:occ]) - ([SOGoAppointmentObject -newOccurenceWithID:recID]) - ([SOGoAppointmentObject -prepareDeleteOccurence:occurence]): new - methods to handle occurences. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -fixupCycleRecord:_recordcycleRange:_r]): - declare a new "c_recurrence_id" field, that will be overwritten - with further exception occurences. - - * UI/Scheduler/UIxOccurenceDialog.[hm]: new dialog asking whether - to edit/delete all occurences of a recurrent event or only the one - selected. - - * SoObjects/Appointments/SOGoComponentOccurence.[hm]: super class - of new classes belows. - - * SoObjects/Appointments/SOGoAppointmentOccurence.[hm]: new class - module that handle occurences within events. - - * SoObjects/Appointments/SOGoTaskOccurence.[hm]: new class - module that handle occurences within todos. - -2008-07-16 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions - -eventsBlocksAction]): take user participation status into account - again. - - * SoObjects/Appointments/iCalEntityObject+SOGo.m - ([iCalEntityObject - -quickRecordDateAsNumber:_datewithOffset:offsetforAllDay:allDay]): - enhanced method to do the special computations for all day events. - -2008-07-16 Francis Lachapelle - - * UI/Contacts/UIxContactEditor.m ([BOOL isNew]) - ([void setAddressBookItem:_item]) - ([id addressBookItem]) - ([NSArray addressBooksList]) - ([SOGoContactFolder componentAddressBook]) - ([NSString addressBookDisplayName]): new methods to allow the - selection of the destination address book when creating a new contact. - -2008-07-15 Wolfgang Sourdeau - - * UI/Scheduler/NSDictionary+Scheduler.m: new category module that - implement helper methods for the Scheduler module. - ([NSDictionary -compareEventByStart:otherEvent]): new method that - compares event block dictionaries based on their value for - "start". - - * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions - -eventsBlocksAction]): new web method that returns the list of - events as well as the precomputed blocks of events, whether "all - day" or not. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -fetchCoreInfosFrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filters]): - requests "c_iscycle". - -2008-07-15 Francis Lachapelle - - * UI/Contacts/UIxContactFolderActions.m: new class for actions - on contacts of a specific address book. - - * UI/Contacts/UIxContactFolderActions.m - ([NSException _moveContacts:toFolder:andKeepCopy:]): private method to - move and optionnaly copy one or many contacts to another - address book. - - * UI/Contacts/UIxContactFolderActions.m ([WOActionResults - copyAction]): copy one or many contacts to another address book. - - * UI/Contacts/UIxContactFolderActions.m ([WOActionResults - moveAction]): move one or many contacts to another address book. - -2008-07-14 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject - -setIsNew:newIsNew]): new setter that declares the record as new, - since it is no longer so by default. - - * SoObjects/Appointments/SOGoAppointmentFolder.m ([SOGoAppointmentFolder -davCalendarOrder]) - ([SOGoAppointmentFolder -setDavCalendarOrder:newColor]): new - accessors to handle Apple's "calendar-order" property. - - * SoObjects/Appointments/iCalRepeatableEntityObject+SOGo.m - ([iCalRepeatableEntityObject -cycleInfo]): exception dates are now - returned as an array of strings. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -fixupCyclicRecords:_recordsfetchRange:_r]): fix an infinite loop - occuring when the exception date was not the first date in the list. - -2008-07-11 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -fetchFields:_fieldsfrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filters]): - take exceptional modifications into account. - - * SoObjects/Appointments/iCalToDo+SOGo.m: new class module with - category methods for iCalToDo. - ([iCalToDo -quickRecord]): same as for method below. - - * SoObjects/Appointments/iCalEvent+SOGo.m ([iCalEvent - -quickRecord]): new method taken from OCSiCalFieldExtractor. - -2008-07-10 Wolfgang Sourdeau - - * SoObjects/SOGo/NSString+DAV.m ([NSString -asWebDAVTuple]): new - method that parses a webdav tag in the form "{ns:}tag" and returns - a dictionary. - - * SoObjects/Appointments/SOGoUserFolder+Appointments.m - ([SOGoUserFolder -davPrincipalPropertySearch:queryContext]): new - method to answer to "principal-property-search" report. - - * SoObjects/Appointments/SOGoAppointmentFolders.m - ([SOGoAppointmentFolders -davComplianceClassesInContext:]): new - method that declares "calendar-access" and "calendar-schedule". - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent - -sendIMIPReplyForEvent:eventto:recipient]): new method, derived from - sendResponseToOrganizer but more generic. - ([SOGoCalendarComponent -sendResponseToOrganizer]): make use of - the new method mentionne above. - -2008-07-09 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolders.m ([SOGoAppointmentFolders -davCreateCalendarCollection:newNameinContext:createContext]): - new method that execute a "MKCALENDAR" request. - - * SoObjects/SOGo/SOGoObject.m (SOGoSelectorForPropertyGetter): new - function that returns the selector for the getter method for the - specified property. - (SOGoSelectorForPropertySetter): same as above for the setter - method. - - * SoObjects/SOGo/WORequest+SOGo.m ([WORequest - -davPatchedPropertiesWithTopTag:topTag]): new category method to - help with parsing properties modified or removed from PROPPATCH - methods and alike. - - * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject - -PUTAction:_ctx]): increment the version number only if the record - is not new. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -davCalendarFreeBusySet]): new method that - returns the HREF to the calendars involved in the user's freebusy. - ([SOGoAppointmentFolder - -setDavCalendarFreeBusySet:newFreeBusySet]): new method that - PRETENDS to modify the list of calendars mentionned above. - ([SOGoAppointmentFolder - -caldavEventRequest:eventwithContent:iCalStringfrom:originatorto:recipients]): - add support for the "CANCEL" method. - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -postCalDAVEventCancelTo:recipients]): new - method that implements support for the CalDAV "CANCEL" method for - POSTs. - - * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject - -PUTAction:_ctx]): the version passed to - saveContentString:baseVersion: is the current value of "version". - If the operation is succesful, the version is incremented from - here since no refresh is done from GCS. The returned etag has thus - now the correct value. - -2008-07-09 Francis Lachapelle - - * UI/MailerUI/UIxMailMainFrame.m ([WOActionResults - composeAction]): added support to specify an address book and - one more many contact IDs. - -2008-07-08 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -caldavEventRequest:eventwithContent:iCalStringfrom:originatorto:recipients]): - simplified method since REPLY and REQUEST posts are very similar. - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -postCalDAVEventReplyTo:recipients]): new - method that handle CalDAV REPLY posts by updating the event in the - table of the SOGo users and send the reply by email as well. - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent - -sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]): - take the current user as originator rather than the object's owner. - -2008-07-07 Francis Lachapelle - - * UI/Contacts/UIxContactFoldersView.m ([WOActionResults - allContactSearchAction]): new method to search contacts among - all address books. - -2008-07-04 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject - -POSTAction:localContext]): take the content type as well as the - request and pass them as parameter to the new method below. - ([SOGoObject - -davPOSTRequest:requestwithContentType:cTypeinContext:localContext]): - new method designed to handle POST requests on DAV objects. - -2008-06-30 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -caldavEventRequest:eventfrom:originatorto:recipients]): handle - caldav replies. - ([SOGoAppointmentFolder -lookupComponentByUID:uid]): new method - that returns an event search by uid. - - * SoObjects/Appointments/SOGoUserFolder+Appointments.m ([SOGoUserFolder -davCalendarHomeSet]) - ([SOGoUserFolder -davCalendarScheduleInboxURL]) - ([SOGoUserFolder -davCalendarScheduleOutboxURL]) - ([SOGoUserFolder -davDropboxHomeURL]) - ([SOGoUserFolder -davNotificationsURL]): new methods for - supporting the caldav-schedule draft extension to CalDAV. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -davComplianceClassesInContext:]): append - "calendar-schedule" to the list. - ([SOGoAppointmentFolder -POSTAction:localContext]): new method to - handle POST CalDAV requests. - ([SOGoAppointmentFolder -davCollectionTag]): new method. - - * SoObjects/Contacts/SOGoContactLDAPFolder.m - ([SOGoContactLDAPFolder - -lookupName:objectNameinContext:lookupContextacquire:acquire]): - use lookupContactentryWithUIDorEmail to make sure we use the ID - field specified in the user defaults to match the username, and - that the users can be found using their email. - -2008-06-27 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject - -contentAsString]): add the ending interval to "today" instead of - to the start date. - ([SOGoFreeBusyObject - -contentAsStringWithMethod:methodfrom:_startDateto:_endDate]): new - method that accepts a method parameter to specify in the returned - iCalendar object. - -2008-06-23 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject -labelForKey:key]): - enhanced method to request the user language, his/her browser - languages and the system language as fallback. - - * UI/Contacts/UIxContactsListViewContainer.m - ([-currentContactFolderName]): no longer interprets the name of - the personal folder, since the default name is now localized at - creation time. - -2008-06-20 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalendarProperties.m ([UIxCalendarProperties -calendarSyncTag]) - ([UIxCalendarProperties -setCalendarSyncTag:newTag]): new - accessors to retrieve and set the calendar tags from the template. - - * SoObjects/Appointments/SOGoAppointmentFolder.m ([SOGoAppointmentFolder -syncTag]) - ([SOGoAppointmentFolder -setSyncTag:newSyncTag]): new accessors - that retrieves and set the calendar tags. - - * UI/Contacts/UIxContactEditor.m ([UIxContactEditor - -canCreateOrModify]): new overriden method that checks whether the - current clientObject is an instance of SOGoContactLDIFEntry before - returning the super method. This is to avoid the case where the - "save" button would appear because the user is listed as a super - user, which owns everything. - -2008-06-19 Wolfgang Sourdeau - - * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage - -readFreeBusyAction]): accelerated the process of rendering free - busy information by using ptr** instead of NSArray. - - * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject - +initialize]): initialize the default interval based on the new - "SOGoFreeBusyDefaultInterval" user default array. - ([SOGoFreeBusyObject - -fetchFreeBusyInfosFrom:startDateto:endDate]): fetch the events - from all the owner calendars. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -fetchFields:_fieldsfrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filters]): - add processed recurrent events to the list of records. - ([SOGoAppointmentFolder - -fetchFreeBusyInfosFrom:_startDateto:_endDate]): request the - "c_cycleinfo" field in order for the recurrent events to be taken - into account. - -2008-06-13 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([-fetchContentObjectNames]): removed useless method. - ([-fetchAllSOGoAppointments]): removed useless method. - ([SOGoAppointmentFolder - -fetchCoreInfosFrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filters]): - retrieve the fields required for object instantiation and cache - the resulting records. - ([SOGoAppointmentFolder - -bareFetchFields:fieldsfrom:startDateto:endDatetitle:titlecomponent:componentadditionalFilters:filters]): - new method based on the non-bare part but simpler and without the - handling of cyclic records. - ([SOGoAppointmentFolder -davCalendarQuery:queryContext]) - ([SOGoAppointmentFolder -davCalendarMultiget:queryContext]): - optimized those methods by replacing often-used NSArray instances - with arrays of ptr** and by removing utility submethods when - useful. - - * SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry - -vCard]): use the new "content" ivar. - - * SoObjects/Contacts/SOGoContactGCSFolder.m - ([-deduceObjectForName:inContext:]): removed method since the - object type is now deduced in the parent class. - ([SOGoContactGCSFolder -objectClassForResourceNamed:name]): new - overriden method. - - * SoObjects/SOGo/SOGoGCSFolder.m - ([-fetchContentStringsAndNamesOfAllObjects]): removed useless method. - ([SOGoGCSFolder - -lookupName:keyinContext:localContextacquire:acquire]): added new - overriden method, to fetch all the required metadata and content - for basic handling of SOGoContentObjects. - ([SOGoGCSFolder -fetchContentObjectNames]): prefetch and cache all - the metadata and content of children objects since this method is - used by the PROPFIND operation, which will likely require children - instantiation. - ([SOGoGCSFolder -objectClassForComponentName:componentName]): new - mandatory method for subclasses. - ([SOGoGCSFolder -objectClassForContent:content]): new mandator - method for subclasses. - ([SOGoGCSFolder - -lookupName:keyinContext:localContextacquire:acquire]): fetch and - cache the requested child object record. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject - -ownerInContext:localContext]): set a new ivar: activeUserIsOwner - to reduce method calls. - - * Main/SOGo.m ([SOGo -dispatchRequest:_request]): we now report - the time taken by the request, if the "SOGoDebugRequests" user - default is set. - - * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject - +objectWithRecord:objectRecordinContainer:newContainer]): new - constructor that instantiate an object based on the data found in - the corresponding database record. - ([SOGoContentObject -setOCSPath:newOCSPath]): removed this method and - other OCS related ones, since we no longer fetch the record data - from here. Indeed, the object is now built from within its - container, so that caches can be created and queries avoided. - - * SoObjects/SOGo/NSArray+Utilities.m ([NSArray - -asPointersOfObjects]): new method that transforms an NSArray into - an array of ptr**; - -2008-06-02 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartICalViewer.m - ([UIxMailPartICalViewer -canOriginalEventBeUpdated]): new template - accessor that return whether the use status has changed in the - original reply and if its sequence number concurs. - - * UI/MailPartViewers/UIxMailPartICalActions.m - ([UIxMailPartICalActions -updateUserStatusAction]): we accept the - modification if the sequence number from the reply is equal or - SUPERIOR (for Lightning bugs), rather than inferior, where the - reply is obsolete anyway. - -2008-05-31 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder - +initialize]): new method where we read the three new defaults - variables "SOGoIMAPAclStyle", "SOGoIMAPAclUsernamesAreQuoted", - "SOGoIMAPAclConformsToIMAPExt". - ([SOGoMailFolder +imapAclStyle]): new method that returns the rfc - number to which the imap server conforms to regarding the acl. - ([SOGoMailFolder -aclsForUser:uid]): added right 'c' and 'd' from - rfc2086. - ([SOGoMailFolder -setRoles:rolesforUser:uid]): convert SOGo - permissions to the acl rights conforming to the RFC configured - with SOGoIMAPAclStyle. - ([SOGoMailFolder -aclUsers]): unquote usernames if - "SOGoIMAPAclUsernamesAreQuoted" is set. Remove usernames listed as - special usernames in - http://www.tools.ietf.org/wg/imapext/draft-ietf-imapext-acl/ if - "SOGoIMAPAclConformsToIMAPExt" is set. - - * UI/MailerUI/UIxMailUserRightsEditor.m ([UIxMailUserRightsEditor conformsToRFC4314]): new template getter. - -2008-05-22 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder - -davCollectionQuery:queryContext]): fixed the owner url returned - in the list so that it matches what the regular davOwner method - returns. - - * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions - -renameFolderAction]): select the INBOX folder before renaming the - target folder. - - * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -loginSuffix]): new - method that returns the login suffix configured in the user - defaults. - ([SOGoRootPage -hasLoginSuffix]): returns whether a login suffix - has been configured in the user defaults. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser -mailAccounts]): request - the user login to the imap server from the LDAP user manager. - - * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager - -getImapLoginForUID:uid]): new method that returns the user - identifier to use when login to the imap server, in case it's not - the ldap uid. This is configurable through the boolean user - default "SOGoForceIMAPLoginWithEmail". - - * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject - -sendMail]): the email passed as parameter to sendmail is now the - bare user email. - -2008-05-21 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions - -deleteFolderAction]): select the INBOX folder before removing the - target folder, so that Courier does not complain about the current - mailbox being in use. - -2008-05-16 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - -subscribe:reallyDoinTheNameOf:delegatedUserfromMailInvitation:isMailInvitationinContext:localContext]): - published method. - ([-folderReference]): no longer distingish between the user owned - and the subscribed folders. - - * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -compare:otherFolder]): - no longer use the "_" in the folder's nameInContainer. - - * UI/Common/UIxFolderActions.m ([UIxFolderActions -subscribeAction]) - ([UIxFolderActions -unsubscribeAction]): use the client object's - method for un-/subscribing. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject - -pathArrayToSOGoObject]): removed useless method. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -davCalendarQuery:queryContext]): added - partial support for the "text-match" caldav directive. - -2008-05-15 Wolfgang Sourdeau - - * UI/Contacts/UIxContactFoldersView.m ([-newAction]): removed - useless method. - -2008-05-05 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject - -davAclQuery:queryContext]): parse the names only of element nodes. - - * UI/Common/UIxFolderActions.m ([UIxFolderActions -activateFolderAction]) - ([UIxFolderActions -deactivateFolderAction]): reversed the logic - and remove or add the folder name from/into the 'InactiveFolders' - settings key. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -create]): no longer write the folder name - in the 'ActiveFolders' settings key. - ([-isActive]): returns whether the folder is NOT listed in the - 'InactiveFolders' settings key. - -2008-05-02 Wolfgang Sourdeau - - * Main/SOGo.m ([SOGo -davURL], [SOGo -soURL]): copied methods from - SOGoObject. - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder - -davDisplayName]): new overriden method to provide a display name - to the users principal. - - * SoObjects/SOGo/SOGoPermissions.[hm]: removed the "Save Acls" - permission since its purposes matches SOPE's "Change Permissions". - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - +webdavAclManager]): new overriden method. - - * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder - +webdavAclManager]): new overriden method. - - * UI/MailPartViewers/UIxMailPartTextViewer.m (convertChars): do - not cast pointers to unsigned int to avoid problems with big - endian archs. - - * SoObjects/Contacts/SOGoContactLDAPFolder.m ([-davNamespaces]): - removed method. - - * SoObjects/Contacts/SOGoContactGCSFolder.m ([-davNamespaces]): - removed method. - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - +webdavAclManager]): new overriden method. - - * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder +webdavAclManager]): - new overriden method. - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject +webdavAclManager]): new overriden method. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder +webdavAclManager]): new overriden method. - ([-davNamespaces]): removed method. - ([-lookupGroupFolderForUIDs:_uidsinContext:]) - ([-lookupGroupCalendarFolderForUIDs:_uidsinContext:_ctx]): - disabled methods. - - * SoObjects/SOGo/SOGoWebDAVAclManager.[hm]: new class module that - implements the rendering of DAV acl trees as well as their mapping - from SOGo permissions. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject +initialize]): libSOGo - is now a framework, so we can simplify the loading of the DAVReportMap. - ([-lookupGroupsFolder]): disabled method. - ([SOGoObject -davOwner], [SOGoObject -davAclRestrictions]) - ([SOGoObject -davPrincipalCollectionSet]) - ([SOGoObject -davCurrentUserPrivilegeSet]) - ([SOGoObject -davSupportedPrivilegeSet], [SOGoObject -davAcl]) - ([SOGoObject -davPrincipalMatch:localContext]) - ([SOGoObject -davSupportedReportSet]): (re-)implemented dav - methods with our new dav rendering paradigm. - ([-davNamespaces]): removed method. - ([SOGoObject -domNode:nodegetChildNodesByType:type]): new helper - method to help subclass with parsing dav requests, especially wrt - REPORT ones. - ([SOGoObject +webdavAclManager]): new overridable method that - returns a properly configured DAV acl manager (see above). - - * SoObjects/Appointments/SOGoUserFolder+Appointments.[hm]: new - category module that implements DAV methods required by CalDAV. - - * UI/SOGoUI/UIxComponent.m ([UIxComponent -applicationPath]): - disabled all mentions of "SOGoGroupFolder*". - - * SoObjects/SOGo/SOGoDAVRendererTypes.[hm]: removed subclass - module, superseded by the new method mentionned below. - - * SoObjects/SOGo/SOGoWebDAVValue.m ([SOGoWebDAVValue - -stringForTag:_keyrawName:setTaginContext:contextprefixes:prefixes]): - a simple wrapper that returns an uninterpreted NSString to SOPE. - - * SoObjects/SOGo/NSArray+DAV.[hm], - * SoObjects/SOGo/NSDictionary+DAV.[hm], - * SoObjects/SOGo/NSObject+DAV.[hm], - * SoObjects/SOGo/NSString+DAV.[hm], - * SoObjects/SOGo/NSURL+DAV.[hm]: new class category modules that - handle the correct generation of DAV entries, with namespace - accounting. Those were implemented to enable the use of a simple - SoWebDAVValue as the root of the resulting string, thereby - avoiding the xml escaping done by SOPE when returning a real NSString. - -2008-04-25 Wolfgang Sourdeau - - * SoObjects/SOGo/LDAPSource.m ([LDAPSource -fetchContactsMatching:match]) - ([LDAPSource -lookupContactEntryWithUIDorEmail:uid]): take all the - mail fields into account when doing a search. - -2008-04-23 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject +initialize]): the - module is now a framework and we now load the new DAVReportMap - description file. - ([-davOwner]): the principal URL is now based on the DAV - application URL. - ([SOGoObject - -lookupName:lookupNameinContext:localContextacquire:acquire]): we - now lookup report methods from here (code from SOGoFolder). The - method has changed to refer to the new DAVReportMAP description - file in order to resolve the lookups on self. - ([SOGoObject -davSupportedReportSet]): implemented the new - "supported-report-set" dav method, based on the new mechanism - described above. - - * SoObjects/SOGo/SOGoFolder.m: REPORT lookups are now done - directly from SOGoObject. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser - -initWithLogin:newLoginroles:newRoles]): we make sure realUID is - not an empty string. - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder - -davResourceType]): we declare self as a "principal". - - * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject - -davContentLength]): the content length should is now based on the - UTF-8 encoding. - -2008-04-22 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalendarSelector.m ([UIxCalendarSelector - -contrastingTextColor]): new method (code taken from Lightning) - that returns a foreground color easily readible based on the - brightness of the background color. - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - -setDavDisplayName:newName]): deny the renaming of the folder if - not owner. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject - -davSetProperties:setPropsremovePropertiesNamed:removedPropsinContext:localContext]): - certain properties should be authorized when not owner. - -2008-04-21 Wolfgang Sourdeau - - * UI/Scheduler/UIxColorPicker.[hm]: new class module that - implements a javascript-based color picker. - - * UI/Scheduler/UIxCalendarProperties.[hm]: new class module that - implements the interface for renaming and recoloring the - calendars. - -2008-04-15 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m - ([_UIxHTMLMailContentHandler -characters:_charslength:_len]) - ([_UIxHTMLMailContentHandler -comment:_charslength:_len]): don't - cast the unichar data to char, to avoid issues with endianness - which prevents the CSS from being parsed properly. - - * UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -isMailReply]): new - method that returns the JS values "true" or "false" as strings is - the mail has a non-null count of recipients. - -2008-04-14 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m ([SOGoAppointmentFolder -davCalendarQuery:queryContext]) - ([SOGoAppointmentFolder -davCalendarMultiget:queryContext]): - deduce the cname of objects even if we are using hostless urls. - -2008-03-31 Wolfgang Sourdeau - - * UI/SOGoUI/SOGoACLAdvisory.m ([SOGoACLAdvisory -resourceName]): - use the resource display name instead of its "nameInContainer". - -2008-03-28 Wolfgang Sourdeau - - * SoObjects/Contacts/SOGoContactLDIFEntry.m ([SOGoContactLDIFEntry - -isFolderish]): new overriden method. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -appendObject:objectproperties:propertieswithBaseURL:baseURLtoComplexResponse:r]): - check whether the current user has access to the objects returned - before including their properties. - -2008-03-27 Wolfgang Sourdeau - - * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults - -primaryFetchProfile]): we unescape the fetched value before - constructing the NSDictionary. - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -setComponent:newComponent]): the weeks start on sunday in - OpenStep and are indexed from 0. - -2008-03-25 Wolfgang Sourdeau - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -takeValuesFromRequest:_rqinContext:_ctx]): treat the regular - monthly recurrences as all others. - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - -davSetProperties:setPropsremovePropertiesNamed:removedPropsinContext:localContext]): - returns an exception if the property to modify is not - "davDisplayName" and if the current user has not the owner role - over the current collection. - -2008-03-25 Francis Lachapelle - - * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView - -verticalDragHandleStyle]): CSS style wrt to position of drag - handle saved by current user. - ([UIxCalMainView -horizontalDragHandleStyle]): idem. - ([UIxCalMainView -eventsListViewStyle]): idem. - - * UI/Contacts/UIxContactsListViewContainer.m - ([UIxContactsListViewContainer -verticalDragHandleStyle]): CSS - style wrt to position of drag handle saved by current user. - ([UIxContactsListViewContainer -horizontalDragHandleStyle]): idem. - ([UIxContactsListViewContainer -contactsListContentStyle]): idem. - - * UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame - -verticalDragHandleStyle]): CSS style wrt to position of drag - handle saved by current user. - ([UIxMailMainFrame -horizontalDragHandleStyle]): idem. - ([UIxMailMainFrame -mailboxContentStyle]): idem. - -2008-03-18 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -davCalendarMultiget:queryContext]): - implemented new CalDAV method. - ([SOGoAppointmentFolder -davCalendarQuery:queryContext]): - refactored method to return exactly the properties requested in - the query and to share code with the new method above. - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent -davCalendarData]): added method for - better CalDAV compliance. - -2008-03-17 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject - -davAclQuery:queryContext]): declare the "text/xml" mime type only - when the content is not empty. Otherwise, returns no mime type at - all and set the status code to 204. - -2008-03-10 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalMonthViewOld.m ([UIxCalMonthViewOld - -endDate]): removed useless method. - - * SoObjects/SOGo/NSCalendarDate+SOGo.m - ([-dayOfWeeK:_dayoffsetFromSunday:_offset]): removed useless - method. - ([-sundayOfWeek]): removed useless method. - -2008-03-07 Wolfgang Sourdeau - - * OGoContentStore/OCSContactFieldExtractor.m - ([OCSContactFieldExtractor -extractQuickFieldsFromVList:vList]): - new method to handle extraction of quick information from the - VLIST components. I.e.: the display name of the card. - - * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder - -isValidContentName:name]): moved method from - SOGoAppointmentFolder's isValidAppointmentName. - - * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder -objectClassForContent:content]) - ([SOGoContactGCSFolder -deduceObjectForName:inContext:]) - ([SOGoContactGCSFolder -requestNamedIsHandledLater:name]) - ([SOGoContactGCSFolder -lookupName:inContext:acquire:]): those - methods were modified to match the ones in SOGoAppointmentFolder, - in order to manage both vcard and vlist components. - - * SoObjects/Contacts/SOGoContactGCSList.[hm]: new class module - that implements the list counterpart to VCARD: VLIST. - - * UI/Contacts/UIxContactEditor.m ([UIxContactEditor -saveURL]): - new accessor that returns the url + "saveAsContact". - ([UIxContactEditor - -shouldTakeValuesFromRequest:requestinContext:context]): changed - method to match the one from the event and todo editor module. - ([UIxContactEditor -editActionName]): changed to "editAsContact". - ([UIxContactEditor -newAction]): changed method to match the one - from the event and todo editor module. - - * UI/Contacts/UIxListView.m: new view module for the VLIST format - components. - - * UI/Contacts/UIxListEditor.m: new edition module for the VLIST - format components. - - * SoObjects/Contacts/SOGoContactGCSList.m: new controller module - for the VLIST format. - -2008-03-04 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject -isFolderish]): new - parent method, meant to be overriden. - ([SOGoObject -davIsCollection]): moved method from SOGoFolder up - to this parent class. - -2008-02-25 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - -davSubscribe:queryContext]): implemented subscribing users other - that the current one, if the user doing the operation is a superuser. - ([SOGoGCSFolder -davUnsubscribe:queryContext]): same as above for - unsubscription. - -2008-02-22 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder - -davUserQuery:queryContext]): new method for the "user-query" - inverse DAV method. - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - -aclUsersForObjectAtPath:objectPathArray]): return unique uids. - - * SoObjects/SOGo/SOGoFolder.m ([-davNamespaces]): removed method. - - * SoObjects/SOGo/SOGoDAVRendererTypes.h (SoWebDAVValue): added - SOGoDAVDictionary webdav value class. - - * SoObjects/SOGo/NSArray+Utilities.m ([NSArray -uniqueObjects]): - new method that returns unique occurences of the objects. - - * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder - -davNamespaces]): same as below. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -davNamespaces]): take the parents - namespaces into account. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject -addUserInAcls:uid]): - new method. - ([SOGoObject -removeUserFromAcls:uid]): new methods (see below). - ([SOGoObject -davNamespaces]): declare the - "urn:inverse:params:xml:ns:inverse-dav" namespace. - ([SOGoObject -davRecordForUser:user]) - ([SOGoObject -davAclQuery:queryContext]): new methods to answer to - the "user-list", "roles", "set-roles", "add-user", "remove-user" - inverse DAV methods. - - * UI/Common/UIxObjectActions.m ([UIxObjectActions -addUserInAclsAction]) - ([UIxObjectActions -removeUserFromAclsAction]): moved the core of - those methods into SOGoObject and translate its result into an - appropriate HTTP status. - -2008-02-20 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder -davInverseACL]): - first implementation of a DAV interface to SOGo roles. Returns the - result in JSON. - -2008-02-14 Wolfgang Sourdeau - - * GNUmakefile: migrated to GNUstep Make 2. - -2008-02-12 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject - -iCalStringForFreeBusyInfos:_infosfrom:_startDateto:_endDate]): we - no longer invoke [container login], since this method has been - removed. Instead we invoke ownerInContext:. - - * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder - -fetchContentObjectNames]): new model method for all subclasses. - This will be removed in the future since toOneRelationshipKeys - must be sufficient. - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - -defaultFilenameExtension]): removed useless method. - ([-toOneRelationshipKeys]): moved method into SOGoFolder.m. - -2008-02-08 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartICalViewer.m - ([UIxMailPartICalViewer -currentUserAttendee]): new method that - returns the current user as an attendee representation in the - displayed event, if found. - - * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount - -_urlHostString]): replace "@" with %40 AFTER invoking - stringByEscapingURL. - - * SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject - -isBodyPartKey:key]): hacked a little bit to test for the length - of the key trimmed from its bordering digits. So if the key - contains only digits, we consider it to be a body part key. There - is room for improvement but we can consider this will be accurate - in 99.99% of the cases. Also, removed the context parameter which - was useless. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject - -davComplianceClassesInContext:localContext]): new method, - declaring "access-control" in the compliance classes. - -2008-02-07 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount - -imap4URLString]): compose the mail hostname part of the url by - escaping the username. This is part of the fix below. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser -mailAccounts]): if the - loginname for the default mail account contains an "@", it should - be url-escaped to avoid confusing NSURL. - ([SOGoUser -accountWithName:accountName]): new method that wanders - the accounts list and returns the one that matches the name passed - as parameter, if found. - - * SoObjects/SOGo/SOGoUserFolder.m ([-login]): removed useless - method. - ([SOGoUserFolder -ownerInContext:_ctx]): compute the owner name - from a SOGoUser instance initialized with the nameInContainer as - initial login name. This way, all the objects belonging to the - corresponding user will be accessible with all the fields - mentionned in the "bindFields" LDAP settings value. - ([SOGoUserFolder -privateCalendars:keyinContext:localContext]) - ([SOGoUserFolder -privateContacts:_keyinContext:_ctx]): use -[self - ownerInContext:] to determine the OCS path. - - * SoObjects/Mailer/SOGoSharedMailAccount.[hm]: removed useless - module. - - * SoObjects/Mailer/SOGoSharedInboxFolder.[hm]: removed useless - module. - - * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences - -setSignature:newSignature]): invoke -[SOGoUser saveMailAccounts] - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser -defaultIdentity]): method - moved from UIxPreferences.m. - ([SOGoUser -saveMailAccounts]): new methods that save the - "MailAccounts" preference in the user settings. - - * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager - +initialize]): issue a warning whenever "SOGoDefaultMailDomain" - is not configured in the user defaults, setting it to "localhost" - by default. - ([LDAPUserManager +defaultMailDomainIsConfigured]): new method - that returns whether "SOGoDefaultMailDomain" is configured. - -2008-02-06 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder -ocsFolder]): - send an email only when not in a dav request. - ([SOGoGCSFolder -delete]): same as above. - - * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount - -supportsQuotas]): test quota support by querying the server - capability. - -2008-02-05 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartICalActions.m - ([UIxMailPartICalActions -acceptAction]) - ([UIxMailPartICalActions -declineAction]): define the organizer of - the event as one of the reply-to or from addresses whenever the - organizer is not specified in those Outlook invitations. - -2008-02-01 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame - -quotaSupport]): new json string that lists the quota support - among the user's mail accounts. - - * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount - -supportsQuotas]): new method that returns whether the current - account server has support for quotas. - -2008-01-29 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - -davSetProperties:setPropsremovePropertiesNamed:removedPropsinContext:localContext]): - new method that takes the displayname into account. - - * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder - -davCreateCollection:pathInfoinContext:localContext]): new method - that acts as a proxy to newFolderWithName:andNameInContainer:. - -2008-01-28 Wolfgang Sourdeau - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -takeValuesFromRequest:_rqinContext:_ctx]): make use of the << - operator to handle the day masks in custom rules. - -2008-01-24 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser - +userWithLogin:newLoginroles:newRoles]): test if the user is well - initialized before registering it with the SOGo cache. - ([SOGoUser -initWithLogin:newLoginroles:newRoles]): returns a user - only if the realUID has been found, otherwise we dealloc self and - return nil. - - * SoObjects/Appointments/SOGoAppointmentFolder.m: if c_cycleinfo - is an NSNull instance, we consider it to be empty and return - automatically with an error message in the log. - - * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor - -extractQuickFieldsFromTodo:_task]): handle recurrence info in - tasks. - - * UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer - -pathToAttachment]): in the case where the client object is not a - mail body part (when the message IS the attachment), we append 0 - to generate the url, instead of the filename. - -2008-01-22 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatetitle:titlecomponent:_component]): - change the algorithm a little bit to compare the roles of the - current users to see if he is an "owner" instead of solely - checking its login name. This enables the users listed as - "SuperUsers" to be considered as owners and see everything as - expected. - -2008-01-18 Wolfgang Sourdeau - - * SoObjects/Contacts/SOGoFolder+CardDAV.m ([SOGoFolder - -davAddressbookQuery:queryContext]): when empty values are fed to - SOGo, their dictionary should be explicitly set to nil. - -2008-01-16 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoCache.m ([SOGoCache - -registerObject:objectwithName:nameinContainer:container]): - register the object and its parents too. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser - +userWithLogin:newLoginroles:newRoles]): try to retrieve the - specified user from the SOGoCache. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject - -lookupName:lookupNameinContext:localContextacquire:acquire]): try - to retrieve the object specified from the cache and returns it if - it exists. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -lookupName:inContext:acquire:]): cache - the result in the SOGoCache. - - * Main/SOGo.m ([SOGo -dispatchRequest:_request]): initialize and - kill the shared cache before and after the connection processing. - - * SoObjects/SOGo/SOGoCache.[hm]: new cache module implementing a - per-connection cache mechanism. - -2008-01-16 Ludovic Marcotte - - * Minor adjustments / bug fixes to previous commit. - -2008-01-14 Ludovic Marcotte - - * Added files related to the custom recurrence - editor of the SOGo Web interface. The CSS - needs to be done correctly. - - * Fixed a bug in the daily recurrence generator. - We now consider the byDayMask, if any. - - * Moved the repeat/reminder code to the - UIxComponentEditor class / template. - - * Added a few JavaScript methods to HTMLElement.js - -2008-01-08 Francis Lachapelle - - * UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions - -composeAction]): the mailto form parameter can now be a - comma-separated list of email addresses. - -2007-12-21 Ludovic Marcotte - - * UI/Contacts/UIxContactView.m - Modified -secondaryEmail so that we always get - the "last" email address in case no preferred - one was specified in the vCard. Also fixed - a memory leak in this method. - -2007-12-20 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject - -aclsForUser:uid]): removed useless ACL checks on the current - object to reduce DB usage. - -2007-12-17 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -attachmentNames]): - initialize "attachmentNames" if it was NOT initialized... I think - this was a typo. - - * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject - -fetchMailForForwarding:sourceMail]): append the signature to - mails forwarded as attachment. - - * UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer - -clientPart]): new method that returns the corresponding - SOGoMailPart instance. - ([UIxMailPartViewer -pathToAttachment]): simplified method, ensure - the filename is present. If the part has none, create one with the - "Untitled-" prefix. Add an extension if none is found. - - * UI/MailPartViewers/UIxMailPartImageViewer.m - ([UIxMailPartImageViewer -pathToImage]): removed method since it - implementents exactly the same functionality as - [UIxMailPartViewer -pathToAttachment]. - - * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart - -filename]): new method that returns the filename to the current - part by taking the different mime implementations into account. - [SOGoMailBodyPart -isBodyPartKey:inContext:]: commented out method - because we need to handle the part recognition in a different way, - by using the prefix "part" for example. One day we will do that. - - * UI/Scheduler/NSArray+Scheduler.m ([NSMutableArray - -reverseArray]): new category method. - -2007-12-17 Francis Lachapelle - - * UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame - -composeAction]): fixed URL when no recipient is specified. - -2007-12-14 Ludovic Marcotte - - * SoObjects/Appointments/SOGoCalendarComponent.m - We set headers in lowercase so that they get properly - encoded by SOPE. - - * SoObjects/Mailer/SOGoDraftObject.m - Minor cleanups. - -2007-12-13 Francis Lachapelle - - * UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame -saveFoldersStateAction]) - ([UIxMailMainFrame -getFoldersStateAction]): new methods to get - and set the folders state of the user's web view. - -2007-12-13 Wolfgang Sourdeau - - * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -crashAction]): new - action methods that generates a segmentation faults. - ([SOGoRootPage -exceptionAction]): new method that returns an - exception object. - ([SOGoRootPage -raisedExceptionAction]): new method that raises an - exception without returning it. - - * UI/SOGoUI/UIxComponent.m ([UIxComponent -responseWithStatus:status]) - ([UIxComponent -responseWithStatus:statusandString:contentString]) - ([UIxComponent -responseWithStatus:statusandJSONRepresentation:contentObject]) - ([UIxComponent -responseWith204]): new utility methods. - - * UI/Common/WODirectAction+SOGo.m ([WODirectAction - -responseWithStatus:statusandString:contentString]) - ([WODirectAction - -responseWithStatus:statusandJSONRepresentation:contentObject]): - new utility methods. - - * SoObjects/SOGo/NSScanner+BSJSONAdditions.m ([NSScanner - -scanJSONStringDelimiterString]): new category module taken from - BSJSONAdditions 1.3. - - * SoObjects/SOGo/NSDictionary+BSJSONAdditions.[hm]: new category - module taken from BSJSONAdditions 1.3. - http://blakeseely.com/downloads.html - -2007-12-12 Wolfgang Sourdeau - - * SoObjects/SOGo/NSString+Utilities.m ([NSString - -stringByDetectingURLs]): we now go back until the real start of - the found url. - - * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject - -fetchAttachmentIds]): new method that wanders through the mail - structure to collect the attachment content ids and to associate - them with their url. - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m - ([_UIxHTMLMailContentHandler - -startElement:_localNamenamespace:_nsrawName:_rawNameattributes:_attributes]): - the content-ids are now enclosed between "<>" before retrieval - from the attachment dictionary. - ([UIxMailPartHTMLViewer -cssContent]) - ([UIxMailPartHTMLViewer -flatContentAsString]): the content-ids - are now fetch from the clientobject (an instance of - SOGoMailObject) with the new "fetchAttachmentIds" method. - -2007-12-12 Francis Lachapelle - - * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions - -eventsListAction]): added the state of the calendar's owner with - respect to the current event. - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -_loadAttendees]): added the retrieval of attendees state on - current event. - -2007-12-12 Ludovic Marcotte - - * UI/MailPartViewers/UIxMailRenderingContext.{h,m} - Removed template caching which added very little - and created re-entrant issues. - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m - Added a hack (and stated so in the source file) - to avoid what seems to be a bug in libxml. - -2007-12-12 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject - -davCreationDate]) - ([SOGoContentObject -davLastModified]) - ([SOGoContentObject -davContentLength]): implemented dav methods. - -2007-12-10 Francis Lachapelle - - * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart - -GETAction:]): when asAttachment is set to true, the header - "content-disposition" is set to "attachment" so browsers like IE - and Safari properly asks the user to save the file. - -2007-12-10 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m - ([UIxMailPartHTMLViewer -flatContentAsString]): when in - UIxMailPartAlternative, scan the filenames of potential cid at the - same level as our parent. - -2007-12-07 Wolfgang Sourdeau - - * Main/SOGo.m ([SOGo -run]): the table creation script now have a - @{tableName} substitution variable to be substitued with the real - table name obtained from the configuration variables. - -2007-12-07 Ludovic Marcotte - - * UI/MailPartViewers/UIxMailRenderingContext.m - We treat multipart/appledouble like multipart/mixed - for now. That allows the user to save both parts. - - * Corrected typos in Localizable.string files. - -2007-12-06 Wolfgang Sourdeau - - * UI/Common/UIxAclEditor.m ([-currentUserIsOwner]): replaced - method with -canModifyAcls that invokes the security manager - instead for the permission "SaveAcls" on the client object. - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent -contentAsString]): securize the returned content. - ([SOGoCalendarComponent -aclsForUser:uid]): check whether the user - is an organizer or a participant as well. - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -changeParticipationStatus:_status]): the - user we should change the status of is not the active user but the - owner of the object. This is for delegation. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -fetchContentObjectNames]): fetch the - elements through the fetchFields:from:to:title:component: method - method, so that the result is already filtered depending on the - acl. - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -toolbar]): if the current user is a delegate, take the permission - "ModifyComponent" into account. Also, do not let him/her modify an - event for which he/she is the organizer. - - * SoObjects/Contacts/SOGoContactLDAPFolder.m - ([SOGoContactLDAPFolder -davResourceType]): declared as a carddav - addressbook collection. - - * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder - -davResourceType]): declared as a carddav addressbook collection. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject -davLastModified]): - override SoObject's implementation. Otherwise a localized date is returned. - - * UI/Common/UIxPageFrame.m ([UIxPageFrame -isCalendar]) - ([UIxPageFrame -isContacts], [UIxPageFrame -isMail]): getters to - determine which module is the current one. - -2007-12-06 Francis Lachapelle - - * UI/Scheduler/NSArray+Scheduler.m ([NSArray -compareEventsTitleAscending:otherEvent]) - ([NSArray -compareEventsLocationAscending:otherEvent]) - ([NSArray -compareEventsEndDateAscending:otherEvent]) - ([NSArray -reversedArray]): new methods that sort an array of - events depending of various parameters. - - * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions - -eventsListAction]): added support for sorting events. - -2007-12-06 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -saveAction]) - ([UIxMailEditor -sendAction]): make sure that the attachments - having the same filename are correctly sequenced (ex: base.ext, - base-1.ext, base-2.ext). - - * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart - -fetchBLOB]): added support for quoted-printable decoding. Also, - we return nil if the type is not supported. - -2007-12-05 Wolfgang Sourdeau - - * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -newAction]): - create task obejcts with the .ics extension. - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -newAction]): create appointment objects with the .ics extension. - - * UI/Contacts/UIxContactEditor.m ([UIxContactEditor -newAction]): - create objects with the .vcf extension. - - * Main/NSException+Stacktrace.m: added missing symbols from - NSException.m and NSDebug.m (GNUstep). - - * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage - -foldersSearchAction]): make use of the new search methods in - SOGoUserFolder (see below). - - * UI/Contacts/UIxContactFoldersView.m ([-foldersSearchAction]): - moved method into ../MainUI/SOGoUserHomePage.m. - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder - -foldersOfType:folderTypeforUID:uid]): only return folders owned - by the specified user. - -2007-12-05 Francis Lachapelle - - * SoObjects/Mailer/SOGoDraftObject.m: the condition for replyToAll - has to be done later to avoid duplicated to and cc addresses. - -2007-12-04 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -davCalendarQuery:queryContext]): fixed a leak. - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder -davSubscribe:localContext]) - ([SOGoGCSFolder -davUnsubscribe:localContext]): subscribe an - unsubscribe from DAV-based accesses. We could be compatible with - Microsoft's extensions but we have no need for a "subcription id", - so we implement our own. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject - -POSTAction:localContext]): new method to intercept DAV POSTs, - which we now use to implement certain custom commands such as - "subscribe" and "unsubscribe". - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder - -davNamespaces]): declare the - "urn:inverse:params:xml:ns:inverse-dav" xml ns. - ([SOGoUserFolder -foldersOfType:folderTypeforUID:uid]): new method - designed to replace the UIxContactFoldersView.m mechanism for - displaying folders to subcribe to, as a common code base for both - Web and DAV-based subscriptions. - ([SOGoUserFolder -foldersOfType:typematchingUID:uid]): same as - above. - ([SOGoUserFolder -davCollectionQuery:queryContext]): new method - that implement a custom DAV-based protocol query for querying - folder based on specified attributes. - -2007-12-03 Ludovic Marcotte - - * Main/NSException+Stacktrace.{h,m} - new files - to handle automatic stack trace generation - upon an uncaught exception. - - * Updated the templates and Localizable.string files - to fix typos and add new strings. - - * SoObjects/Mailer/SOGoMailBodyPart.m - Fixed attachment retreival when the first character - is a digit. - - * SoObjects/SOGo/SOGoGCSFolder.m - Fixed the sending of emails when folders are created/removed. - Notifications are sent if the defaults SOGoFoldersSendEMailNotifications - is set to YES. - - * UI/Common/UIxUserRightsEditor.m - * UI/Templates/SOGoACLEnglishModificationAdvisory.wox - * UI/Templates/SOGoACLFrenchModificationAdvisory.wox - * UI/Templates/SOGoACLGermanModificationAdvisory.wox - Added the capabilities to email notifications when ACLs have - changed on a DAV collection or an IMAP mailbox. Also added - new templates (3 .wox) to deal with this. - - * UI/WebServerResources/ContactsUI.js - UI/WebServerResources/SchedulerUI.js - Added warnings on operations w/o selection. - -2007-11-30 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder - -appendSubscribedSources]): don't include sources for which we - don't have the SOGoPerm_AccessObject permission. - - * SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate - -rfc822DateString]): we want positive timezones to be specified - with a leading "+" too. - -2007-11-29 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - +folderWithSubscriptionReference:referenceinContainer:aContainer]): - return nil if the subscribed folder has no display name (meaning - it no longer exists). - - * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder - -appendPersonalSources]): don't include sources which are no - longer existing. - - * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject - -ocsPathOfContainer]): return the intended value, not that of - ocsPath... - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent -sendResponseToOrganizer]): send the - message only of sendEMailNotifications is set. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject -subscriptionRoles]): - new method that returns the roles that qualifies for adding the - special "authorized subscribed" sogo role. - -2007-11-27 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject - -aclsForUser:uid]): copy all the roles from the container. If the - object is new, make sure the roles contain "ObjectEditor" if and - only if "ObjectCreator" is present. - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - -aclsForUser:uid]): no longer take the "ObjectReader" role into - account. - - * UI/Common/UIxFolderActions.m ([UIxFolderActions - -canAccessContentAction]): always return HTTP status 204. We want - this because we are relying on the SOPE access control manager to - grant access to this method. This requires a fine-tuned access - control in SOGo itself... - - * UI/Contacts/UIxContactsUserRightsEditor.m ([-userCanReadObjects]) - ([-setUserCanReadObjects:userCanReadObjects]): removed methods. - - * UI/MailerUI/UIxMailUserRightsEditor.m ([UIxMailUserRightsEditor - -updateRights]): no longer take the "ObjectReader" role into account. - ([-userCanReadMails], [-setUserCanReadMails:userCanReadMails]): - removed methods. - - * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject - -fetchFreeBusyInfosFrom:_startDateto:_endDate]): specify context - when looking up the Calendar folder. - -2007-11-26 Wolfgang Sourdeau - - * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -todo]): same as below. - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -event]): create the event if it doesn't exist. - - * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -userHasCalendarAccess]) - ([UIxPreferences -userHasMailAccess]): same as below, for - displaying preference tabs. - - * UI/Common/UIxPageFrame.m ([UIxPageFrame - -userHasCalendarAccess]): new accessor for the link banner. - ([UIxPageFrame -userHasMailAccess]): same as above. - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder - -toManyRelationshipKeys]): do not report the path to modules to - which the user has no access. No longer cache this information - statically, the array will be generated at each call. - ([SOGoUserFolder -lookupName:_keyinContext:_ctxacquire:_flag]): - ignore the path to modules to which the user has no access. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser -canAccessModule:module]): - new method that returns whether the user has access to the - specified module. - - * SoObjects/SOGo/LDAPSource.m ([LDAPSource - -initFromUDSource:udSource]): take a new parameter named - 'ModulesContraints' that defines a set of constraints for - accessing specified named modules. This is an optout, meaning the - modules will be present unless a constraint is specified. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -roleForComponentsWithAccessClass:accessClassforUser:uid]): cache - acl to reduce method calls. - ([SOGoAppointmentFolder - -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatetitle:titlecomponent:_component]): - if the user is not the current user, we strip the useless info - from the meta data. - - * UI/Common/WODirectAction+SOGo.m ([WODirectAction - -labelForKey:key]): new category method. - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -event]): same as below. - - * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -todo]): request a - secured version of the component. - - * UI/MailPartViewers/UIxMailPartViewer.m - ([-fallbackStringEncoding]): removed method. - ([UIxMailPartViewer -flatContentAsString]): we no longer use [self - fallbackStringEncoding]. Instead we directly specify - NSISOLatin1StringEncoding if UTF-8 has failed. - - * UI/MailPartViewers/UIxMailPartICalViewer.m - ([-fallbackStringEncoding]): removed method. - -2007-11-25 Ludovic Marcotte - - * SoObjects/Mailer/SOGoMailForward.m - Use [sourceMail decodedSubject] instead of [sourceMail subject] - Signature fix in -signature - see the comment - for SOGoMailReply. - - * SoObjects/Mailer/SOGoMailObject.m - Improved -stringFromData: to try UTF-8 then fallback to Latin1 - - * SoObjects/Mailer/SOGoMailReply.m - Modified -messageBody to strip the signature from the reply. - Also modified -signature to add "-- \n%@" instead of the - broken ""--\r\n%@" pattern. - - * UI/MailPartViewers/UIxMailPartAlternativeViewer.m - We now favor text/calendar parts over text/html and - text/plain parts when viewing a multipart/alternative mail. - This allows us to show the email invitations coming from - Microsoft Outlook. - - * UI/MailerUI/UIxMailAccountActions.m - Signature fix in -composeAction - see the comment - for SOGoMailReply. - - * UI/MailPartViewers/UIxMailPartViewer.m - Modified -flatContentAsString to use UTF-8 as the - default fallback encoding for 8-bit content. - - * SoObjects/Mailer/SOGoDraftObject.m - Modified _fillInReplyAddresses:replyToAll:envelope: - so that if there's no recipient, we add at least - ourself to the list. - Fixed a mem leak in the same method. - -2007-11-22 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailRenderingContext.m - ([UIxMailRenderingContext -viewerForBodyInfo:_info]): same as below. - - * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject - -plainTextContentFetchKeys]): same as below. - - * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart - +bodyPartClassForMimeType:mimeTypeinContext:_ctx]): accept the - application/ics type from Google Calendar. - - * SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate - +distantFuture]): rewrote method to return an object that is - compatible with NSCalendarDate, unlike the implementation in - GNUstep. - ([NSCalendarDate +distantPast]): same as above. - -2007-11-21 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m: fixed infinite loop - when charset is us-ascii, match it to ascii rather than none. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatetitle:titlecomponent:_component]): - added search on the c_title column too. - - * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions - -eventsListAction]): take the "search" url parameter into account. - ([UIxCalListingActions -eventsListAction]): fetch events matching - the title filter too. - - * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -connectAction]): the - user infos are now posted as "application/x-www-form-urlencoded". - So we have to have like a form has been posted. - -2007-11-21 Francis Lachapelle - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -calendarList]): also returns the calendar of the current - event. This is required so the proper calender is selected when - you view an event to which you don't have write access. - - * UI/Common/UIxAclEditor.m ([UIxAclEditor -currentUserIsOwner]): - also returns true for super users. - -2007-11-21 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject - -lookupImap4BodyPartKey:inContext:]): return a correct body part - when "0" is requested, taking its mime-type into account. - - * UI/MailPartViewers/UIxMailRenderingContext.m - ([UIxMailRenderingContext -flatContentForPartPath:_partPath]): - return content for part "0", which would be the message body. - -2007-11-20 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m - ([_UIxHTMLMailContentHandler - -setContentEncoding:newContentEncoding]): new method that - specifies an xml charset to return to the parser. - ([UIxMailPartHTMLViewer -flatContentAsString]): specifies the - charset to the content handler before parsing. - - * SoObjects/Appointments/SOGoAppointmentObject.m: don't take an - empty c_name as a valid response when looking up an event. Create - one in that case instead. - -2007-11-19 Wolfgang Sourdeau - - * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -signature]): - returns the signature for the default identity of the default - accouunt... - ([UIxPreferences -setSignature:newSignature]): accessor that sets - the default signature. - - * UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions - -composeAction]): append the message signature to the new draft. - - * SoObjects/Mailer/SOGoMailReply.m ([SOGoMailReply -signature]): - same as above. - - * SoObjects/Mailer/SOGoMailForward.m ([SOGoMailForward - -signature]): new method that takes the user's signature and put - it at the end of the message, if exists. - - * UI/Common/UIxPageFrame.m ([UIxPageFrame -isSuperUser]): new - accessor that forwards the call to the active user. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser -signature]): returns the - user default signature. - ([SOGoUser -isSuperUser]): declares whether the user is listed - among the super users. - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -setComponent:newComponent]): retain the component object. - ([UIxComponentEditor -organizerIdentity]): new accessor method to - handle list of possible organizers. - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -event]): retain the returned event object. - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -saveComponent:newEvent]): reset the - organizer only if there are no attendees AND the owner of the - component is not the organizer him-/herself. - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -toolbar]): rewrote in a way that ensures that each case is - handled properly. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser -isEqual:otherUser]): new - override method. - - * UI/Scheduler/UIxTaskEditor.m ([-acceptAction]) - ([-declineAction]): commented out unused methods. - - * UI/MailPartViewers/UIxMailPartICalActions.m - ([UIxMailPartICalActions -deleteFromCalendarAction]): actually - delete the found object. - -2007-11-18 Ludovic Marcotte - - * SoObjects/Mailer/SOGoMailBodyPart.m - SoObjects/Mailer/SOGoMailObject.m - UI/MailPartViewers/UIxMailPartViewer.m - Added support of messages containing non-textual - content and no parts. - - * UI/MailerUI/UIxMailView.m - SoObjects/Mailer/SOGoMailObject.m - UI/Templates/MailerUI/UIxMailView.wox - Added support for the Reply-To header upon - message display. - -2007-11-18 Wolfgang Sourdeau - - * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -saveAction]): - invoke saveComponent:. - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor -hasOrganizer]) - ([UIxComponentEditor -organizerName]): new template accessor - related to displaying the event's organizer. - ([-containsConflict:_component]): removed method. - ([UIxComponentEditor -takeValuesFromRequest:_rqinContext:_ctx]): - set RSVP to "TRUE" on each attendee. - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -saveAction]): invoke saveComponent:. - - * UI/MailPartViewers/UIxMailPartICalViewer.m - ([UIxMailPartICalViewer -isLoggedInUserTheOrganizer]): make use of - the -userIsOrganizer: category method. - ([-isLoggedInUserAnAttendee]): make use of -userIsParticipant:. - ([UIxMailPartICalViewer -hasSenderStatusChanged]): new template - accessor that determines whether the "Update" button should be - displayed. - - * UI/MailPartViewers/UIxMailPartICalActions.m - ([UIxMailPartICalActions -deleteFromCalendarAction]): implemented - action. - ([UIxMailPartICalActions -updateUserStatusAction]): implemented - action. - - * UI/Common/UIxPageFrame.m ([UIxPageFrame - -setCssFiles:newCSSFiles]): new accessor that enables the - sub-templates to specify extra CSS files to load. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser - -homeFolderInContext:context]): cache the home folder of the user - object instead of the current user. - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - -deleteEntriesWithIds:ids]): invokes the "prepareDelete" optional - method if the child object implements it. - - * SoObjects/SOGo/SOGoContentObject.m ([-setContentString:]) - removed method. - - * SoObjects/SOGo/LDAPSource.m ([LDAPSource - -setBaseDN:newBaseDNIDField:newIDFieldCNField:newCNFieldUIDField:newUIDFieldmailFields:newMailFieldsandBindFields:newBindFields]): - take a new "mailFields" parameter defining an array of fields - where to look at when searching the user's emails. It defaults to - the standard "mail" LDAP field. - - * SoObjects/Appointments/SOGoAptMailICalReply.[hm]: new - SoComponent implementing a template for ITIP replies. - - * SoObjects/Appointments/iCalPerson+SOGo.m ([iCalPerson - -mailAddress]): new method that returns a properly formatted email - address for the specified person entry. - ([iCalPerson -uid]): new method that tests whether the user is - known to the system and if so, returns its user id. - - * SoObjects/Appointments/iCalPerson+SOGo.[hm]: new category module. - - * SoObjects/Appointments/iCalEventChanges+SOGo.m - ([iCalEventChanges -sequenceShouldBeIncreased]): determine whether - the changes involved need a sequence inscrease, based on the - RFC2446 (ITIP). - - * SoObjects/Appointments/iCalEventChanges+SOGo.[hm]: new category - module. - - * SoObjects/Appointments/iCalEvent+SOGo.m ([iCalEvent - -isStillRelevant]): new overriden method determining the relevance - of the current event based on its end date. - - * SoObjects/Appointments/iCalEvent+SOGo.[hm]: new category module. - - * SoObjects/Appointments/iCalEntityObject+SOGo.m - ([iCalEntityObject -attendeeUIDs]): new category methods that - returns an array containing the uids of the system-know attendees. - ([iCalEntityObject -isStillRelevant]): new template method. - ([iCalEntityObject -itipEntryWithMethod:method]): clone the - current entry calendar with the specified ITIP method. - ([iCalEntityObject -attendeesWithoutUser:user]): returns an array - of attendees while making sure the specified user is not listed. - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([SOGoCalendarComponent -calendar:create:secure]): new name for - -calendar:. Added a "secure" parameter that specifies whether a - stripped calendar instance is needed or not. Also, we no longer - cache the content to simplify handling of new data. - ([SOGoCalendarComponent -component:create:secure]): same as above. - ([SOGoCalendarComponent - -sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]): - test whether the component is "still relevant" before sending an - email... - ([SOGoCalendarComponent -sendResponseToOrganizer]): new method for - sending ITIP replies. - ([SOGoCalendarComponent -getUIDsForICalPerson:iCalPerson]): - removed method. Replaced with -[iCalPerson uid] category method. - - * SoObjects/Appointments/SOGoAppointmentObject.[hm]: rewrote - class. No longer override saveContentString:, - saveContentString:baseSequence:, .... Implemented the - saveComponent: and the prepareDelete methods instead. Those - methods are called only from the web methods. This avoids the - risks related to email sending and changes propagation. - - * UI/Common/UIxTabItem.m: removed useless class module. - - * UI/Common/UIxTabView.[hm]: removed useless class module. - - * UI/Common/UIxPrintPageFrame.m: removed useless class module. - - * UI/Common/UIxAppNavView.m: removed useless class module. - -2007-11-16 Ludovic Marcotte - - * SoObjects/Mailer/SOGoMailBaseObject.m - Fixed typo. - - * SoObjects/Mailer/SOGoMailBodyPart.m - We also grok image/jpeg and return the SOGoMailBodyPart - for attachments fetching. - - * SoObjects/Mailer/SOGoMailObject+Draft.m - Prevent a crash in case body decoding failed during - a reply. - - * SoObjects/Mailer/SOGoMailObject.m - Improved body decoding during a reply to also try - latin1 as an encoding. - - * UI/MailPartViewers/UIxMailRenderingContext.m - Greatly improved the display mechanisms for emails. - Also properly consider the content disposition for - most content types. - - * UI/MailerUI/UIxMailToSelection.m - Removed worthless code. - - * UI/WebServerResources/MailerUI.css - CSS fix for table views. - -2007-11-15 Ludovic Marcotte - - * UI/WebServerResources/MailerUI.js - We now check for empty selection and warn the - user about it when deleting messages - - * SoObjects/Mailer/SOGoDraftObject.m - Correctly check for the presence of a subject - before attempting to forward a message from - the Drafts folder. - - * SoObjects/Mailer/SOGoMailObject+Draft.m - We no longer use "[Fwd: ]" but simply "Fwd:" - when forwarding email messages. - - * SoObjects/SOGo/SOGoUser.m - Modified the default forwarding format to be - inline instead of "attachment". - - * SoObjects/Mailer/SOGoDraftObject.m - We now create and use a NGMimeContentDispositionHeaderField - in order to avoid encoding the whole Content-Disposition - header in case a non-ASCII char is present! - -2007-11-13 Wolfgang Sourdeau - - * SoObjects/SOGo/iCalEntityObject+Utilities.m ([iCalEntityObject - -findParticipant:user]): new method based on the one removed from - SOGoCalendarComponent below. - - * SoObjects/SOGo/iCalEntityObject+Utilities.[hm]: new category - module for iCalEntityObject. - - * SoObjects/Appointments/SOGoCalendarComponent.m - ([-findParticipant:user]): removed method. - - * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject - -setContentString:newContent]): new accessor method. - ([SOGoContentObject - -saveContentString:newContentbaseVersion:newBaseVersion]): invoke - -[self setContentString:]. - - * UI/MailPartViewers/UIxMailPartICalViewer.m - ([UIxMailPartICalViewer -authorativeEvent]): returns the most - up-to-date event. - ([-isLoggedInUserTheOrganizer]): make use of -[SOGoUser - hasEmail:]. - - * UI/MailPartViewers/UIxMailPartTextViewer.m ([NSString - -stringByConvertingCRLNToHTML]): fixed crashes due to overflows in - temporary buffer we are handing. - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -setComponent:newComponent]): check that newComponent is non-nil - before replacing the default values. - ([UIxComponentEditor -calendarList]): privacy is already an ivar. - We don't need to refetch it. - -2007-11-12 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject - -fetchMailForReplying:sourceMailtoAll:toAll]): remove the current - user from the list of recipients and make sure no other address is - counted twice. - - * UI/MailPartViewers/UIxMailPartTextViewer.m ([NSString - -stringByConvertingCRLNToHTML]): build the returned NSString - without the ending \0. - -2007-11-09 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartICalViewer.m - ([UIxMailPartICalViewer -acceptLink]) - ([UIxMailPartICalViewer -declineLink]) - ([UIxMailPartICalViewer -tentativeLink]): removed useless methods. - - * UI/MailPartViewers/UIxMailPartICalAction.m - ([UIxMailPartICalAction -addToCalendarAction]) - ([UIxMailPartICalAction -deleteFromCalendarAction]): new stub - methods. - - * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject - -lookupImap4BodyPartKey:]): make use of the new method below. - - * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart - +bodyPartClassForMimeType:mimeTypeinContext:_ctx]): new method - that returns an appropriate Class depending on a given mime type. - - * UI/SOGoUI/UIxComponent.m ([UIxComponent -canCreateOrModify]): - new boolean accessor that determines whether someone can create - (i.e. modify a new entry) or modify an existing entry. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject - -lookupName:lookupNameinContext:localContextacquire:acquire]): - overriden method to bind looked up keys to So methods but by - avoiding a call to toOneRelationshipKeys. This will be the top - method of the chain, meant to override SoObject's behaviour. - - * SoObjects/Contacts/SOGoContactLDAPFolder.m - ([SOGoContactLDAPFolder - -lookupName:objectNameinContext:lookupContextacquire:acquire]): - removed hack to prevent [super lookupName...] to read the entire - LDAP directory when looking up a record. - -2007-11-08 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder - +folderWithSubscriptionReference:referenceinContainer:aContainer]): - fixed a leak. - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m - ([UIxMailPartHTMLViewer -_attachmentIds]): the reference was one - character too short, which cause the images not to be displayed - sometimes and crashes to happen whenever the references on a - message were wrong (due to bugs in SOPE). - - * UI/MailerUI/UIxMailListView.m ([UIxMailListView - -hasMessageAttachment]): consider an attachment any content that - has a non-nil disposition. - - * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder - -newFolderWithName:nameandNameInContainer:newNameInContainer]): - fixed method to make use of the parameters instead of the useless - remains that weren't even initialized. - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -saveContentString:_iCalbaseSequence:_v]): - don't propagate the event among the attendees if this is not an - "so" request. - ([SOGoAppointmentObject -deleteWithBaseSequence:]): same as above. - - * Main/SOGo.m ([SOGo -authenticatorInContext:context]): make use - of the new category method below. - - * SoObjects/SOGo/WORequest+SOGo.m ([WORequest - -handledByDefaultHandler]): new method that returns whether this - is an "so" or alike request. - - * SoObjects/SOGo/WORequest+SOGo.[hm]: new category module. - - * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder - -newFolderWithName:nameandNameInContainer:newNameInContainer]): - write the new folder's name in the folder cache. - - * UI/Scheduler/UIxCalendarSelector.m ([UIxCalendarSelector - -calendars]): same as below. - - * UI/Contacts/UIxContactsListViewContainer.m - ([UIxContactsListViewContainer -currentContactFolderName]): - translate the display name if its the default one. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -create]): overriden method that invokes - its ancestor and then activate itself within the user settings. - - * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder - -appendPersonalSources]): when the user is the owner of the - current folder, we create the "personal" folder if it doesn't - exist by invoking "create". - - * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults - -primaryFetchProfile]): when no row is returned, we initialize - "values" to a new dictionary. This solves a bug where the defaults - would not be initialized properly. - -2007-11-07 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoGCSFolder.m ([-compare:otherFolder]): method - moved into the SOGoFolder class. - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -saveContentString:_iCalinUIDs:_uids]): - simplified method by directly building a similar appointment - object with the current folder as container. - - * SoObjects/Contacts/SOGoContactLDAPFolder.m - ([SOGoContactLDAPFolder - -appendObject:objectwithBaseURL:baseURLtoREPORTResponse:r]): - take the content of an object returned by - lookupName:inContext:acquire: instead of the dictionary passed as - parameter since it represents a flattened entry return by - lookupContactsWithFilter... - - * SoObjects/Contacts/SOGoFolder+CardDAV.m: NSObject+CardDAV - category renamed to SOGoFolder+CardDAV. - - * SoObjects/SOGo/SOGoParentFolder.m: no longer a subclass of - SOGoObject, but of SOGoFolder instead. - - * SoObjects/SOGo/SOGoUserFolder.m: no longer a subclass of - SOGoGCSFolder, but of SOGoFolder instead. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -lookupCalendarFolderForUID:uid]): fixed - to take the new SOGoParentFolder class into account. Also, create - the personal folder if it doesn't exist. - - * SoObjects/SOGo/SOGoFolder.[hm]: new class module implementing - the parent of all SOGo containers. - - * SoObjects/SOGo/SOGoGCSFolder.[hm]: SOGoFolder class renamed to - SOGoGCSFolder. - -2007-11-06 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailToSelection.m ([UIxMailToSelection - -getAddressesFromFormValues:_dict]): take NSString and NSArray - values. Ignore addresses with a length of 0. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser -mailAccounts]): we now - fetch the accounts from the user defaults and create default - values if missing. - -2007-11-05 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartTextViewer.m - ([UIxMailPartTextViewer -flatContentAsString]): re-added - conversion of line-break to sequences of HTML "BR", with a fast - algorithm in C. - - * UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer - -flatContentAsString]): simplified method now that we know - -[NSString stringWithData:usingEncodingNamed:] has a more robust - implementation. - - * UI/MailerUI/UIxMailListView.m ([UIxMailListView - -showToAddress]): the answer is cached. - - * UI/Common/UIxObjectActions.m ([UIxObjectActions +initialize]): - read "SOGoACLsSendEMailNotifications" from the user defaults to - determiner whether to send an email when a user is added or - removed from an object's acl. - - * SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject - -contentForEditing]): make sure the htmlContent flag is set to NO - when we select the textual part. Also we select only the relevant - keys for fetching. - - * UI/MailerUI/WOContext+UIxMailer.m ([-mailSubjectFormatter]): - removed method. - - * UI/MailerUI/UIxMailView.m ([UIxMailView -messageSubject]): new - method replacing -objectTitle, written like the ones below. - - * UI/MailerUI/UIxMailListView.m ([UIxMailListView - -messageSubject]): rewrote method to act the one below. - - * UI/MailPartViewers/UIxMailPartMessageViewer.m - ([UIxMailPartMessageViewer -messageSubject]): new method that - returns the decoded mail subject or "Untitled" if the subject is - empty. - - * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject - -decodedSubject]): new method that invoke -decodedSubject from the - NSString and NSData class, depending on the identity of the - subject obtained from the envelope. - - * SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject - -subjectForReply]): take the value of -[SOGoMail decodedSubject] - instead of the subject of the envelope. - ([SOGoMailObject -filenameForForward]): same as above. - ([SOGoMailObject -subjectForForward]): same as above. - - * SoObjects/Mailer/NSString+Mail.m ([NSString -decodedSubject]): - same as below for NSString. - - * SoObjects/Mailer/NSData+Mail.m ([NSData -decodedSubject]): new - method that decodes the subject of a mail taken as an NSData - instance. Handling the exceptions and the badly formatted headers. - - * UI/MailerUI/UIxSubjectFormatter.[hm]: dropped class module. - -2007-11-04 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder - -deleteEntriesWithIds:ids]): make sure the objects returned by - lookupName:... are not instances of NSException. - -2007-11-03 Ludovic Marcotte - - * UI/Scheduler/UIxAppointmentEditor.m - Fixed monthly recurrences support. - -2007-11-01 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -deleteWithBaseSequence:]): an email was - sent when modifying an event, when the event was considered - relevant. The same thing is now implemented for event deletion. - - * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults - -primaryFetchProfile]): make sure that the deserialized "values" - is an instance of NSMutableDictionary, otherwise we override it - with one. - - * SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject - -contentForReply]): make use of the SOGoMailReply WO page. - - * SoObjects/Mailer/SOGoMailReply.[hm]: new class module copied - from SOGoMailForward to handle mail replies instead. Only three - methods remaining: date, from and messageBody. The latter is - quoted properly. - - * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject - -fetchMailForForwarding:sourceMail]): fetch attachments for - forwarded messages. - - * UI/MailerUI/UIxMailListView.m ([UIxMailListView - -hasMessageAttachment]): initialize hasAttachment with "NO" to - avoid false positives. - - * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor -extractQuickFieldsFromEvent:_event]) - ([OCSiCalFieldExtractor -extractQuickFieldsFromTodo:_task]): - set title to an empty string where the event/task summary is null. - - * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject - -setHeaders:newHeaders]): make sure there is a message id in the - headers dictionary, if not, generate one. - ([SOGoDraftObject -fetchMailForEditing:sourceMail]): retrieve the - message id from the existing draft. - ([SOGoDraftObject -mimeHeaderMapWithHeaders:_headers]): store the - message id in the header map. - - * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions - -deleteFolderAction]): no longer prefix the target folder with - "folder". - - * UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions - -listMailboxesAction]): base the folder type on the folder - traversal path. - - * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder - -lookupName:_keyinContext:acquire:_acquire]): compare the full - traversal to the potential looked up folder with the special - folder names and return an object with the appropriate - SOGoMailFolder subclass. - - * SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject - -traversalFromMailAccount]): don't prepend the whole string with - "/". - - * SoObjects/Mailer/SOGoMailAccount.m - ([-lookupSentFolder:_keyinContext:_ctx]) - ([-lookupDraftsFolder:_keyinContext:_ctx]) - ([-lookupTrashFolder:_keyinContext:_ctx]) - ([-lookupFiltersFolder:_key:_ctx]): removed methods. - ([SOGoMailAccount -inboxFolderNameInContext:]) - ([SOGoMailAccount -draftsFolderNameInContext:_ctx]) - ([SOGoMailAccount -sentFolderNameInContext:]) - ([SOGoMailAccount -trashFolderNameInContext:]): no longer prefixes - the resulting name with "prefix" since we might return a nested - foldername. - ([SOGoMailAccount -allFolderPaths]): prefixes all special folder - names with "/". Sorts the resulting folder list with - localizedCaseInsensitiveCompare: instead of - caseInsensitiveCompare:. No longer use the -[lookupXXX] methods - that were removed, instead, we choose the appropriate class - depending on the folder name. And since we are in SOGoMailAccount, - we don't have to compute a traversal path to match the key with - the foldernames. - ([SOGoMailAccount - -folderWithTraversal:traversalandClassName:className]): new method - that returns an instance of the specified SOGoMailFolder subclass, - based on the traversal path passed as parameter. - ([SOGoMailAccount -inboxFolderInContext:_ctx]) - ([SOGoMailAccount -draftsFolderInContext:_ctx]) - ([-sentFolderInContext:_ctx]) - ([SOGoMailAccount -trashFolderInContext:_ctx]): invoke the new - -folderWithTraversal:andClassName: method described above. - - * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults - -primaryFetchProfile]): make use of -[NSPropertyListSerialization - propertyListFromData:mutabilityOption:format:errorDescription:] to - deserialize the plist. Removed variant for libFoundation since it - should support the above. - ([AgenorUserDefaults -generateSQLForInsert]) - ([AgenorUserDefaults -generateSQLForUpdate]): make use of - -[NSPropertyListSerialization - dataFromPropertyList:format:errorDescription:] to serialize the - plist. Removed variant for libFoundation since it should support - the above. Escape the backslashes from the resulting string. - -2007-10-31 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailFolder.[hm]: added a new subclass of - SOGoMailFolder: SOGoMailSpecialFolder. - - * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount - -traversalFromMailAccount]): overridden method that returns the - initialized mutable string. - ([SOGoMailAccount -allFolderPaths]): take the special folder paths - with -traversalFromMailAccount and reposition them at the - beginning of the list. By creating the special folders during that - request, we also make sure that the folder exists thanks to the - new initialisation method of the new "SOGoSpecialMailFolder" - class. - ([SOGoMailAccount -lookupSentFolder:_keyinContext:_ctx]): new - method. - ([SOGoMailAccount -lookupTrashFolder:_keyinContext:_ctx]): new - method. - ([SOGoMailAccount -lookupName:_keyinContext:acquire:_flag]): no - longer use lookupImap4Folder. - ([SOGoMailAccount -lookupImap4Folder:_keyinContext:_ctx]): removed - method. - - * SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject - -traversalFromMailAccount]): new method that returns the full - IMAP4 path to the object. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser +initialize]): retain - "superUsernames" after fetching it from the ud. - -2007-10-30 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions - -eventsListAction]): substitude the start and end date with their - UTC counterpart, taking into account the offset from UTC related - to those dates instead of the current one. This renders - -[UIxCalMainView -userUTCOffset] obsolete because the computings - that occured in javascript are now done server-side. - - * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView -userUTCOffset]): - removed obsolete method. - - * SoObjects/Mailer/NSString+Mail.m ([NSString -htmlToText]): new - method converting html content to plain text. - - * SoObjects/Mailer/NSString+Mail.[hm]: new category module - enhancing NSString with utility methods pertaining to mail handling. - - * SoObjects/Mailer/SOGoMailObject.m - ([-shouldFetchPartOfType:_typesubtype:_subtype]): removed obsolete method. - ([SOGoMailObject - -addRequiredKeysOfStructure:infopath:ptoArray:keysacceptedTypes:types]): - modified method to be always recursive and to take an array of the - accepted mime-types as parameter. The returned array now contains - the mime-type as well as the part keys. - - * SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject - -contentForEditingOnParts:_prtskeys:_k]): removed obsolete method. - ([SOGoMailObject -contentForEditing]): rewrote method to take into - account the first text/plain part or the first text/html part - converted to text/plain with our new -[NSString htmlToText] - category method. - - * UI/MailerUI/UIxMailActions.m ([-replyToAllAction]): invoke - "replyToAll:" with YES as parameter instead of NO. - -2007-10-29 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart - -davContentType]): ignore any possible parameter taken from the - mime-info of the body part. - - * UI/MailerUI/UIxMailListView.m ([UIxMailListView - -lastFirstMessageNumber]): new accessor that returns the first - message number of the last series of messages. - ([UIxMailListView -fetchKeys]): request the bodystructure for each - listed message. - ([UIxMailListView -hasMessageAttachment]): extract the attachment - information from the message bodystructure. - -2007-10-26 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart - -GETAction:]): use the "application/octet-stream" mime type for - elements of type "application/x-xpinstall" to avoid confusing - Firefox. - - * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -messageCheckList]) - ([UIxPreferences -itemMessageCheckText]) - ([UIxPreferences -userMessageCheck]) - ([UIxPreferences -setUserMessageCheck:newMessageCheck]): new - methods for handling the retrieval of new messages automatically. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser -messageCheck]): new method - that returns the interval of time between automatic message - retrievals. - - * UI/MailerUI/UIxMailListView.m ([UIxMailListView - -defaultAction]): now expunges the last folder marked for expunge. - - * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject - -trashInContext:_ctx]): now marks the container folder for - expunge. - - * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder - -markForExpunge]): new method that marks the folder for the next - automatic expunge operation in the user settings. - ([SOGoMailFolder -expungeLastMarkedFolder]): new methods that - takes the last folder marked for expunge, expunges it and removes - it from the user settings, if it exists. - -2007-10-25 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailListView.m ([UIxMailListView - -messageSubjectCellStyleClass]): added support for replied, - forwarded, forwarded and replied mails. - - * SoObjects/Mailer/NSData+Mail.m ([NSData - -bodyDataFromEncoding:encoding]): new utility method that decodes - the NSData instance properly depending on the encoding string - passed as parameter. - - * SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject - -fetchFileAttachmentKeys]): fetch the attachment encoding as well. - - * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject - -stringForData:_datapartInfo:_info]): simplified by invoking - -bodyDataFromEncoding: from our new NSData category methods. - - * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject - -fetchMailForEditing:sourceMail]): work-around a bug in SOPE-mime - where only the body part of the first of the keys fetched was - returned. Also decodes the body parts properly following their - encoding. - - * SoObjects/Mailer/NSData+Mail.[hm]: new extension module that - extends the NSData class with utility methods useful for handling - mail. - -2007-10-23 Wolfgang Sourdeau - - * SoObjects/SOGo/NSArray+Utilities.m - ([NSArray -stringsWithFormat:format]): replace instances of NSNull - with empty strings. - - * SoObjects/SOGo/NSDictionary+Utilities.m ([NSDictionary - -keysWithFormat:keyFormat]): replace instances of NSNull with - empty strings. - - * SoObjects/Contacts/SOGoContactLDAPFolder.m: if "displayName" is - empty, use "c_cn" instead. - - * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount -inboxFolderInContext:_ctx]) - ([SOGoMailAccount -draftsFolderInContext:_ctx]) - ([SOGoMailAccount -sentFolderInContext:_ctx]): no longer make use - of the "SOGoSpecialFoldersInRoot" user defaults. The folders will - no always be specified from the root instead of sometimes from the - INBOX. - -2007-10-22 Wolfgang Sourdeau - - * UI/Common/UIxPageFrame.m ([UIxPageFrame -commonLocalizableStrings]) - ([UIxPageFrame -productLocalizableStrings]): invoke the new - +[SOGoUser language] method if the user is nil. - - * SoObjects/SOGo/SOGoUser.m ([SOGoUser +language]): new method - that returns any generically-found language. - ([SoUser -language]): modified to call the above. - ([SOGoUser -language]): modified to call the above if the user - language has a null length. - - * SoObjects/Contacts/SOGoContactLDIFEntry.m ([SOGoContactLDIFEntry - -davEntityTag]): modified to return the "hash" of the vCard string. - - * UI/MailerUI/UIxMailActions.m ([UIxMailActions - -removeAllLabelsAction]): new method that removes all label flags - from the associated message. - ([UIxMailActions -addLabel1Action] - [UIxMailActions -addLabel2Action] - [UIxMailActions -addLabel3Action - [UIxMailActions -addLabel4Action] - [UIxMailActions -addLabel5Action]): new methods that adds label - flags to the associated message. - ([UIxMailActions -removeLabel1Action] - [UIxMailActions -removeLabel2Action] - [UIxMailActions -removeLabel3Action - [UIxMailActions -removeLabel4Action] - [UIxMailActions -removeLabel5Action]): new methods that removes - label flags from the associated message. - - * UI/MailerUI/UIxMailListView.m ([UIxMailListView -msgLabels]): - new accessor that returns the labels associated with the message. - - * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder - -allFolderPaths]): new method that returns all the paths of all - the subfolders of the folder object. - ([SOGoMailFolder -allFolderURLs]): new method replacing - subfoldersURL. - - * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject - -aclsForUser:uid]): object inherits the 'SOGoRole_ObjectEditor' - role from its parent folder. - -2007-10-19 Francis Lachapelle - - * SoObjects/SOGo/SOGoUser.m - ([SOGoUser -rolesForObject:objectinContext:context]): allow - multiple super usernames to be defined. The user default - SOGoSuperUsername is renamed SOGoSuperUsernames and must be - an array. - -2007-10-18 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoWebAuthenticator.m ([SOGoWebAuthenticator - -userInContext:]): override the super method by returning - anonymous if the super returns nil. - - * UI/Common/UIxPageFrame.m ([UIxPageFrame - -productLocalizableStrings]): new method that returns the - product-specific translation dictionary as a JSON hash. - ([UIxPageFrame -commonLocalizableStrings]): same as above but for - the "Common" framework. - ([UIxPageFrame -setJsFiles:newJSFiles]): new setter that enables - the requestor components to require additional Javascript files. - This is useful now that all the scripts are loaded at the end of - the HTML code. - ([UIxPageFrame -additionalJSFiles]): new getter related to the - above. - -2007-10-17 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailActions.m ([UIxMailActions -copyAction]): - implemented new web method. - - * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject - -copyToFolderNamed:folderNameinContext:]): new method with the - code cut/pasted from -moveToFolderNamed:inContext:. - ([SOGoMailObject -moveToFolderNamed:folderNameinContext:]): - modified to use the code from -copyToFolderNamed:inContext:, which - is common between the two actions. - - * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount -draftsFolderNameInContext:_ctx]) - ([SOGoMailAccount -sentFolderNameInContext:]) - ([SOGoMailAccount -trashFolderNameInContext:]): modified to take - the user settings into account. - - * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions -setAsDraftsFolderAction]) - ([UIxMailFolderActions -setAsSentFolderAction]) - ([UIxMailFolderActions -setAsTrashFolderAction]): new web methods - that change the purpose of the active folder to "Sent", "Drafts" - or "Trash". - - * UI/SOGoUI/SOGoACLAdvisory.m ([SOGoACLAdvisory -subject]): - returns the subject as quoted-printable. - - * UI/SOGoUI/SOGoACLAdvisory.[hm]: added two intermediary classes: - SOGoACLAdditionAdvisory and SOGoACLRemovalAdvisory implementing - the "aclMethod" method for the subsequent language-dependent - subclasses. - - * UI/SOGoUI/SOGoFolderAdvisory.m ([SOGoFolderAdvisory -subject]): - returns the subject as quoted-printable. - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -dealloc]): release item, aptStartDate and aptEndDate. - -2007-10-16 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder - -initWithName:newNameinContainer:newContainer]): the owner of a - shared folder is set to "nobody" by default. - - * UI/Common/UIxAclEditor.m ([UIxAclEditor -hasOwner]): new method - that returns whether the object has an owner or not. - -2007-10-15 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -ocsFolder]): create - the folder even if the current user is not its owner. - -2007-10-10 Ludovic Marcotte - - * We now send advisory emails when folders - are created / deleted. - - * Fixed the sending of advisory emails upon - ACL changes on folders. - -2007-10-10 Ludovic Marcotte - - * UI/Scheduler/UIxComponentEditor.m - Implemented event/task priority support. - - * SoObjects/Contacts/SOGoContactGCSFolder.m - Added CardDAV support. - - * SoObjects/SOGo/LDAPUserManager.m and SOGoUser.m - Implemented From: based on LDAP results based on - the MailFieldNames attribute (an array) specified - in every LDAP-based authentication sources. - - * UI/MailPartViewers/UIxMailPartTextViewer.m and - UI/WebServerResources/MailerUI.css - We avoid replacing "\r\n" and "\n" with
and - rather use CSS capabilities for proper formatting. - This is _WAY_ faster on very large mails. - -2007-10-10 Francis Lachapelle - - * UI/Scheduler/UIxComponentEditor.m - ([UIxComponentEditor -componentCalendar]): returns the calendar - object of the current event. - -2007-10-05 Ludovic Marcotte - - * UI/WebServerResources/MailerUI.js - We check if at least one message is selected - before performing a Reply/Reply All/Forward - - * SoObjects/Appointments/SOGoAppointmentFolder.m - and others - implemented support for recurring - events (with some known limitations right now, - all soon to be fixed). - -2007-10-04 Francis Lachapelle - - * Main/SOGo.m ([SOGo -isUserName:_keyinContext:_ctx]): removed - the constraint that a username can't start with a digit. - -2007-10-02 Francis Lachapelle - - * Moved SOPE/sope-gdl1/GDLContentStore from the default trunk - repository to Inverse's branch. - -2007-09-28 Francis Lachapelle - - * SoObjects/Mailer/SOGoDraftObject.m - ([SOGoDraftObject -isValidAttachmentName:_name]): removed - constraint on space in file name. - ([SOGoDraftObject -saveAttachment:_attachwithMetadata:metadata]): - now removes from file name all characters preceding a backslash. - This happens with IE7 because the complete attachment file path - is sent. - -2007-09-25 Francis Lachapelle - - * SoObjects/Appointments/SOGoAptMailNotification.m - ([SOGoAptMailNotification -appointmentURL]): set personal as the - default calendar where to add the event. - - * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage +initialize]): - activate the SOGoUIxDefaultModule user defaults. - -2007-09-21 Francis Lachapelle - - * UI/SOGoUI/UIxComponent.m - ([UIxComponent -shortUserNameForDisplay]): returns the string - "wrongusernamepassword" when authentication failed. - -2007-09-17 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartICalViewer.m - ([UIxMailPartICalViewer -calendarFolder]): returns the "personal" - entry of the Calendars parent folder. - - * UI/MailerUI/UIxMailListView.m ([UIxMailListView - -messageSubject]): new accessor method to work-around a problem - within SOPE where a subject could be returned as an NSData. - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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. - ([SOGoMailObject -moveToFolderNamed:folderNameinContext:]): same - as above. - - * UI/MailerUI/UIxMailView.m ([-deleteAction]): removed method. - ([-trashAction]): moved method into UIxMailActions. - ([-moveAction]): moved method into UIxMailActions. - -2007-09-07 Wolfgang Sourdeau - - * UI/MailPartViewers/UIxMailPartHTMLViewer.m - ([_UIxHTMLMailContentHandler - -endElement:_localNamenamespace:_nsrawName:_rawName]): remove HTML - comments from the CSS code, do not add the CSS code to the body - content and remove references of body from the CSS declarations. - ([UIxMailPartHTMLViewer -cssContent]): new accessor method. - ([UIxMailPartHTMLViewer -flatContentAsString]): separated code - common with cssContent in a different method and invoke it only - once. - - * UI/MainUI/SOGoRootPage.[hm]: made a subclass of UIxComponent - instead of UIxPageFrame. - -2007-09-06 Wolfgang Sourdeau - - * UI/MainUI/SOGoRootPage.m ([-defaultAction]): commented out. - ([-appendToResponse:responseinContext:ctx]): commented out. - ([SOGoRootPage -connectURL]): new accessor that returns the full - url the the "connect" method. - ([-connectAction]): rewrote method to return a properly formatted - auth. cookie based on the username and password passed as - parameter. - - * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage -logoffAction]): - set the value of the cookie to "discard" and set its expiration - date to yesterday. - - * SoObjects/SOGo/SOGoWebAuthenticator.m ([SOGoWebAuthenticator - -preprocessCredentialsInContext:context]): consider the user - anonymous if the cookie value is "discard". - ([SOGoWebAuthenticator - -setupAuthFailResponse:responsewithReason:reasoninContext:context]): - set the expiration date of the cookie to yesterday. - - * UI/SOGoUI/UIxComponent.m ([UIxComponent -applicationPath]): - returns the path to the application if the clientObject is not a - SOGoObject. - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder +initialize]): - moved the requirement of authentication from the SOGo application - class to here. - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -saveContentString:_iCalbaseSequence:_v]): - check whether the new appointment object is still relevant before - sending a notification. - -2007-09-05 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoWebAuthenticator.m ([SOGoWebAuthenticator - -setupAuthFailResponse:responsewithReason:reasoninContext:context]): - render the login page through the SoDefaultRenderer. - - * UI/MainUI/SOGoRootPage.m ([SOGoRootPage - -isPublicInContext:localContext]): new overriden method that - returns YES. - - * UI/Scheduler/UIxCalendarSelector.m ([UIxCalendarSelector - -currentCalendarLogin]): replace css-unsafe characters with _. - - * UI/SOGoUI/UIxComponent.m ([UIxComponent - -shortUserNameForDisplay]): simplified method. - ([-user]): removed method since [context activeUser] is as useful. - -2007-09-04 Wolfgang Sourdeau - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * UI/SOGoElements/SOGoIEConditional.m: new extension module class - to handle "" 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView _responseForResults:]): - has to return only one element. - -2007-08-01 Wolfgang Sourdeau - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions - -quotasAction]): new method that returns a json representation of - the mailbox quotas. - -2007-07-10 Wolfgang Sourdeau - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * Main/sogod.m (main): prevent SOGo from running as root. - -2007-06-19 Wolfgang Sourdeau - - * 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 - - * SoObjects/SOGo/SOGoLRUCache.m: removed unused module. - -2007-06-13 Wolfgang Sourdeau - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder - -primaryFetchMailboxInfo]): useless method. Removed. - -2007-05-28 Wolfgang Sourdeau - - * 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 - - * 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 - - * 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 - - * 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 @"". - - * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject - -defaultUserID]): overriden method to return @"". - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * UI/Common/UIxAclEditor.m ([UIxAclEditor -currentUserIsOwner]): - new method with an explicit name. - -2007-05-03 Wolfgang Sourdeau - - * 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 - - * 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 - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -_privacySqlString]): the string for the - "freebusy" special user should only require opaque elements. - -2007-04-25 Wolfgang Sourdeau - - * 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 - - * 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 - - * 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 - - * 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 - - * Main/SOGo.m ([SOGo +initialize]): on GNUstep, trigger some - debugging facilities when the SOGoDebugObjectAllocation user - default is set. - -2007-04-11 Wolfgang Sourdeau - - * 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 - - * 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 - - * UI/Contacts/UIxContactsListView.m ([UIxContactsListView - -selectorComponentClass]): restored method. - -2007-04-03 Wolfgang Sourdeau - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * 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 - - * SoObjects/Mailer/SOGoMailFolder.m: priorize the lookup of - folders before doing the one on messages. - -2007-02-08 Wolfgang Sourdeau - - * 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 - - * UI/Scheduler/English.lproj/Localizable.strings: fixed typo for - "Agendas" - -2007-02-05 Wolfgang Sourdeau - - * 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 - - * 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 - - * 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. - -2007-01-30 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailListView.m ([UIxMailListView - -defaultAction]): invoke "flushMailCaches" on [self clientObject] - so that the mailbox cache is refreshed everytime the user presses - on "get mail". I doubt a mailbox cache really is useful in general - anyway. - -2007-01-26 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator - -userInContext:]): if the lookup is on "freebusy.ifb" and the - username is "anonymous" the user is automatically set to - "freebusy". - -2007-01-12 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator - -checkLogin:_loginpassword:_pwd]): authorize special "freebusy" - user with password "freebusy". - - * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject - -contentAsString]): the default timerange is now 14 days before - currentday and 1 month after. - -2007-01-08 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -appendObject:objectwithBaseURL:baseURLtoREPORTResponse:r]): - escape the record string in a way suitable with XML encoding. - -2007-01-05 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUI.js: fixed a bug where the - calendar view would not be updated properly. - -2007-01-04 Wolfgang Sourdeau - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -newStartDate]): fix the handling of the component start date - depending on the "hm" and the "day" parameters. - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder - -roleOfUser:uidinContext:context]): set role of current user to - "Assistant" if the object that is accessed is "freebusy.ifb". - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -lookupCalendarFolderForUID:uid]): method - moved from UI/Scheduler/UIxCalView:calendarFolderForUID:. - ([SOGoAppointmentFolder - -lookupCalendarFoldersForUIDs:_uidsinContext:]): now use the new - lookupCalendarFolderForUID: method, which doesn't do security - checks. - -2007-01-03 Wolfgang Sourdeau - - * UI/Common/UIxAclEditor.m ([UIxAclEditor -assistantsValue]): new - accessor that returns the comma-separated list of users with role - "Assistant". - ([UIxAclEditor -delegatesValue]): same as above for "Delegate". - ([UIxAclEditor -_prepareUsers]): there is no longer a concept of - "checkedUsers". Instead, each user is either classified in the - list of assistants or the list of delegates. - -2006-12-22 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame - -composeAction]): method imported from removed container modules. - ([UIxMailMainFrame -mailFolderName]): method imported from removed - container modules. - - * UI/MailerUI/UIxMailPopupView.m: a new special popup component - for wrapping UIxMailView with the "popupview" action. - - * UI/MailerUI/UIxMailAccountView.m: renamed to UIxMailSplashView, - since its the component that displays the same splash screen than - the one in Thunderbird/Icedove. - - * UI/MailerUI/UIxMailAccountViewContainer.[hm], - UI/MailerUI/UI/MailerUI/UIxMailAccountsView.m, - UI/MailerUI/UIxMailListViewContainer.[hm], - UI/MailerUI/UIxMailViewContainer.[hm]: removed - -2006-12-20 Wolfgang Sourdeau - - * UI/WebServerResources/HTMLElement.js: replaced the functional - selectNode() and deselectNode() functions with select() and - deselect() methods of HTMLElement. - - * UI/WebServerResources/ContactsUI.js: cleanup, most of the - events are initialized from here now instead of in the HTML code. - - * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView - -checkRightsAction]): new method similar to the one with the same - name in UIxCalMainView.m. - - * UI/Common/UIxAclEditor.m ([UIxAclEditor -saveAclsAction]): added - code to handle the publishing of freebusy information. - -2006-12-19 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView - -checkRightsAction]): new action method that returns a - comma-separated list of boolean values matching the right of the - current user to "view" (as a permission) each foreign calendar - stored in his preferences. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject -setOwner:newOwner]): - new method that sets a customOwner, which can be returned with - ownerInContext it set. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): no longer set the owner of elements here. - -2006-12-15 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserFolder.m: same as for SOGoContactFolders - below, but for the Contacts and Calendar collections. - - * SoObjects/SOGo/SOGoAclsFolder.m: convert the class to user the - new acl facilities method from sope-gdl/GCSFolder.m. - - * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders - -roleOfUser:uidinContext:context]): new method that returns - SOGoRole_Assistant when the user is an assistant or a delegate on - the "personal" ab object. This is so that setting roles on the - SOGoContactFolders object is not required. - -2006-12-14 Wolfgang Sourdeau - - * Main/SOGo.m: declare "Freebusy" permissions for the top objects. - - * UI/Contacts/UIxContactsAclsSelection.m: new component specific - to the handling of the user selection for the acls. - - * SoObjects/SOGo/SOGoPermissions.[hm]: new module that extends the - values from SoPermissions with ones specific to SOGo. - - * SoObjects/SOGo/SOGoAclsFolder.[hm]: new class module that - handles the storage for the acls. - - * SoObjects/Appointments/SOGoCalendarComponent.[hm]: new parent - class for SOGoAppointmentObject and SOGoTaskObject. - - * UI/Common/UIxAclEditor.[hm]: new component that provides a - general editor for folder acls. - - * SoObjects/SOGo/NSString+Utilities.[hm]: old "NSString+URL" - renamed. - ([NSString -davMethodToObjC]): method that returns the method name - for a DAV property implementation. - - * SoObjects/SOGo/NSArray+Utilities.m: new extension module to - NSArray. - ([NSArray -stringsWithFormat:format]): new method that returns - formatted occurences of the strings stored in the array. - - * SoObjects/SOGo/SOGoDAVRendererTypes.m ([SOGoDAVSet - +davSetWithArray:newValuesofValuesTaggedAs:newValueTag]): a new - subclass module of SoWebDAVValue that supports collections of - properties of the same type. - -2006-11-21 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount - -lookupFolder:ofClassNamed:inContext:]): added the ability to - configure the name of the SOGoDraftFolders with the ud var - "SOGoDraftsFolderName". - -2006-11-17 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject - -userTimeZone:username]): new method that returns the timezone for - the specified user depending on his preferences and the server - defaults - - * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject - -stringForData:partInfo:]): take the encoding into account and - translate the text to "normal" before processing the charset data. - -2006-11-15 Wolfgang Sourdeau - - * UI/WebServerResources/generic.js: the progress indicator is on - when loading the page so we turn it off, and we turn it back on - whenever we switch to another module... - - * UI/WebServerResources/SchedulerUI.js: make sure the day view - synchronization mechanism works everywhere. - - * UI/WebServerResources/generic.js: the log window is not only - visible when UIxDebugEnabled is set. - - * UI/WebServerResources/SchedulerUI.js: the month overview's day - cells are now initialized with the DOM event interface methods - instead of with html attributes. - - * UI/Templates/MailerUI/UIxMailView.wox: don't display useless - headers (should be made configurable at some point)... - - * OGoContentStore/sql/generate-folderinfo-sql-for-users.sh: drop - "not null" constraint on startdate, enddate, isopaque, - participants and partmails. - -2006-11-14 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable - -hoursToDisplay]): prevent a crash by retaining the - "hoursToDisplay" array after it's created. - ([UIxCalDayTable -clickableHourCellClass]): new method for the new - clickable hours DIV. - - * UI/WebServerResources/SchedulerUI.js: made the event - participation status modification asynchronous, which also fixes a - bug where the window would sometimes close before the accept or - decline action was completed. Also, adapted the event handling - related to the days or weeks view with the new DIV-based layout. - - * UI/Scheduler/UIxCalInlineAptView.m: same as the first below... - - * UI/Scheduler/UIxCalDayTable.m: enhanced to provide the new - DIV-based presentation of the days and weeks. - - * SoObjects/Appointments/SOGoTaskObject.m: same as below... - - * SoObjects/Appointments/SOGoAppointmentObject.m: lookupName:... - might return an exception so we have to handle it if we don't - wanna crash... - -2006-11-13 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUI.js: updated the list - initialization code to use the new event management scheme, adding - what was missing to be able to delete events and tasks again. - - * UI/WebServerResources/MailerUI.js: added code to activate the - "Get mails" button. Fixed a bug which prevented messages to be - deleted. - - * UI/WebServerResources/UIxFreeBusyUserSelector.js: handle tab - navigation and focus handling of INPUTs. - -2006-11-10 Wolfgang Sourdeau - - * UI/WebServerResources/MailerUI.js: added code to handle the - possible drag and drop events to manager in the mail module. - Moving messages, opening parent folders, ... - - * UI/WebServerResources/SOGoDragAndDrop.js: new file containing - the drag and drop manager as well as the interface to HTMLElement - to trigger drag and drop events. - - * UI/MailerUI/UIxMailView.m ([UIxMailView -moveAction]): new - action to move the current message to the mailbox named after the - value of parameter "tofolder". - - * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject - -moveToFolderNamed:folderNameinContext:]): new method base on - -trashInContext:. - -2006-11-09 Wolfgang Sourdeau - - * UI/WebServerResources/generic.js: added and activated many - "load" handlers to configure generic widgets used across the - modules. More events are now handled in a DOM-fashion way instead - of by setting the relative attributes in the templates. - - * UI/Templates/UIxSortableTableHeader.wox: all the events are - declared from the javascript DOM onload handlers. - - * UI/Templates/UIxPageFrame.wox: load the new SOGoDragHandles.js - library. - - * UI/Templates/MailerUI/UIxMailListView.wox: all the events are - declared from the javascript DOM onload handlers. - - * UI/MailerUI/UIxMailListView.m: removed all the JS methods since - we want everything to be separated from each other, as much as - possible. - - * UI/WebServerResources/SOGoDragHandles.js: new module containing - the "SOGoDragHandlesInterface", implementing methods that can be - attributed to DIV so that they can be used as drag handles. - - * SoObjects/Mailer/SOGoDraftObject.m ([NSString - -asQPSubjectString]): initialize the tmp strings with '0' to make - sure they don't contain garbage. - -2006-11-08 Wolfgang Sourdeau - - * UI/WebServerResources/MailerUI.js: register the messageList - table as a dragging source and the leaf of the navigation tree as - dnd destinations to the DNDManager. - - * UI/WebServerResources/generic.js: initialize tabs from the - "unload" event listener that is added programmatically instead of - from the template... Also, added the new DNDManager object. - - * UI/WebServerResources/HTMLTableElement.js: added code to - simulate XUL drag n drop events. This code will possibly be moved - to HTMLElement.js instead later... - - * SoObjects/Contacts/SOGoContactLDAPFolder.m - ([SOGoContactLDAPFolder -_qualifierForFilter:filter]): same as - below. - - * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder - -_qualifierForFilter:filter]): only search records which starts - with the specified pattern. - -2006-11-07 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoDraftObject.m ([NSString - -asQPSubjectString]): new method that returns the special QP - string with its qp declaration for email subjects. - ([SOGoDraftObject -bodyPartForText]) - ([SOGoDraftObject -mimeMessageForContentWithHeaderMap:]): don't - double-encode data in UTF-8. - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -newStartDate]): new method to determine the start date depending - on the URL parameters, the current day and the current time. - ([UIxComponentEditor -toolbar]): new method to determine the - filename of the toolbar that should be drawn depending on the - ownership and the list of attendees of the task/event wrt to the - current user... - - * UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl - -setDayStartHour:aStartHour]): adjust the minutes to the next - quarter of hour, if not already set to a quarter. - - * UI/WebServerResources/UIxAppointmentEditor.js, - UI/WebServerResources/UIxTaskEditor.js: added code to manage start - date change. - -2006-11-03 Wolfgang Sourdeau - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -loadValuesFromComponent:component]): handles access class - (privacy) and status. - - * UI/Contacts/UIxContactsListViewContainer.m - ([UIxContactsListViewContainer -additionalFolders]): return nil if - [self additionalAddressBooks] returns an empty string. - -2006-11-02 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalMonthView.m ([UIxCalMonthView - rangesOf7Days]): enhanced and debugged algorithm to feed the array - with slices where the first day is still in the requested month. - - * UI/Templates/UIxPageFrame.wox: the logConsole is created only on - non-popup pages. - - * UI/SOGoUI/SOGoAptFormatter.m: added code to handle the display - of events in the day boxes of the calendar's monthly view. - - * SoObjects/Appointments/SOGoTaskObject.m ([SOGoTaskObject - -davContentType]): declare "text/calendar". - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -davContentType]): declare - "text/calendar". - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -lookupName:inContext:acquire:]): certain - HTTP methods are handled by SOPE and requires nil to be returned, - this method now invokes the new - "requestNamedIsHandledLater:inContext:" method to check that. - ([SOGoAppointmentFolder - -requestNamedIsHandledLater:nameinContext:context]): new methods - that returns "YES" only for the "OPTIONS" http method (for now...). - ([SOGoAppointmentFolder -davComplianceClassesInContext:]): - overloaded method to append the "access-control" and - "calendar-access" DAV abilities to the initial declaration. - - * UI/Scheduler/UIxCalMonthView.[hm]: rewritten module entirely to - imitate the look of Sunbird/Lightning's monthly view. - - * UI/Scheduler/UIxCalMonthView.[hm]: renamed to - UIxCalMonthViewOld.[hm]. - -2006-11-01 Wolfgang Sourdeau - - * UI/Scheduler/UIxFreeBusyUserSelectorTable.m - ([UIxFreeBusyUserSelectorTable -currentContactHasStatus]): new - method. - ([UIxFreeBusyUserSelectorTable -currentContactStatusImage]): - returns an image name based on the participation status of the - current attendee. - - * UI/WebServerResources/SchedulerUI.js: same strip down as for - generic.js below. - - * UI/Contacts/UIxContactsListViewContainer.m ([UIxContactsListViewContainer -additionalAddressBooks]) - ([UIxContactsListViewContainer -additionalFolders]) - ([UIxContactsListViewContainer -setCurrentAdditionalFolder:newCurrentAdditionalFolder]) - ([UIxContactsListViewContainer -currentAdditionalFolder]): new - methods to handle the external addressbooks a user has subscribed - too, by retriving them from his preferences. - - * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView - -updateAdditionalAddressBooksAction]): new method that updates the - user settings with the list of addressbook he has subscribed to. - - * UI/Contacts/UIxContactsAddressBooksSelection.m: new component - module for the address book selector. - - * UI/Templates/ContactsUI/UIxContactsListViewContainer.wox: added - a toolbar with two buttons ("add" and "remove") to manage the - additional addressbooks a user might subscribe to. - - * UI/WebServerResources/ContactsUI.js: added code to handle - "external addressbooks" from the Javascript point-of-view, by - extending existing methods and adding code for the "add ab" and - "remove ab" buttons. - - * UI/WebServerResources/generic.js: moved extensions methods to - DOM elements to separate files for better clarity. - - * UI/Common/UIxPageFrame.m ([UIxPageFrame -pageContentClasses]): - new method that returns "pageContent" as class, but also "popup" - for the DIV where the page content lies, so that we can manipulate - the content of popup's with CSS identifiers. - -2006-10-31 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalInlineAptView.m ([UIxCalInlineAptView - -displayStyle]): new method that returns a string containing the - css style relative to the current appointment cell. This code is - currently inactive but might be reused later. - - * UI/WebServerResources/SchedulerUI.js: added code to handle the - display of the selected day (the day pointed by the mouse, or the - current day when changing the view). - - * UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable - -dayCellClasses]): new method that returns a string containing the - css classes applicable to the current cell, depending on the - position of the day in the week, the day of today and the - requested day. - - * UI/Scheduler/UIxCalCalendarsListView.m ([UIxCalCalendarsListView - -currentContactAptBorder]): new method that returns the - appropriate border color for the specified user. - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject - -saveContentString:contentStringbaseVersion:baseVersion]): - overloaded method that parse new events and detects if they have - an organizer or not. If they are new and have no organizer set - (Sunbird/Lightning...), the owner of the event is set as - organizer. - - * SoObjects/Appointments/iCalEntityObject+Agenor.[hm]: new - category that provides facility methods and interfaces to the - AgenorUserManager. - - * SoObjects/Contacts/product.plist: give full access to ANY - authenticated user, not just the owner (to every objects...). - -2006-10-30 Wolfgang Sourdeau - - * UI/WebServerResources/UIxFreeBusyUserSelector.js: make sure - every replica widgets are declared as such to their master - counterpart. Take the days into account when displaying the time - range taken by the appointment. - - * UI/Scheduler/UIxComponent+Agenor.m ([UIxComponent - -getICalPersonsFromValue:selectorValue]): method taken from - UIxFreeBusyUserSelector, that is shared both by - UIxFreeBusyUserSelector and UIxFreeBusyUserSelectorTable. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): reverted to search algorithm to search for events happening outside 0 or 1 (at most) boundary of the timerange. - - * UI/Scheduler/UIxFreeBusyUserSelectorTable.[hm]: new subcomponent - derived and taken as a subset of UIxFreeBusyUserSelector that - implements the table part of the FreeBusy view. Most of the - methods of UIxFreeBusyUserSelector relative to that table were - moved into UIxFreeBusyUserSelectorTable, which can also be used as - a standalone view for AJAX operations. - -2006-10-27 Wolfgang Sourdeau - - * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry - -vCard]): change reverted. - - * UI/Contacts/UIxContactEditor.m: check whether the client contact - folder has selector "globallyUniqueObjectId" before calling that - method. - - * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry - -vCard]): the "setVClass" NGVCard method really is "setClass" - instead. - - * SoObjects/Contacts/SOGoContactLDAPFolder.m - ([SOGoContactLDAPFolder -_searchAttributes]): fixed typo to - request the "streetAddress" instead of the "streetaddress". - ([SOGoContactLDAPFolder -_qualifierForFilter:filter]): lookup - mails that *contain*, and not just *start with* the search - pattern. - - * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry - -vCard]): mark address returned from LDAP as the work address. - - * UI/Templates/SchedulerUI/UIxCalInlineAptView.wox: made the whole - span covered with the anchor, not only the textual information - within. - - * UI/Templates/SchedulerUI/UIxCalMainView.wox: specify the type - argument (event or task) to newEvent in the appointmentListMenu. - Make the appointmentsListView display the appointmentsListMenu. - - * UI/SOGoUI/SOGoAptFormatter.m: enlarge the text size limit from - 12 to 50 before displaying "...". - ([SOGoAptFormatter -fullDetailsForApt::]): display location only - if its length > 0, whether location itself is nil or not... - ([SOGoAptFormatter -tooltipForApt::_refDate]): display information - of which the length > 0. - -2006-10-26 Wolfgang Sourdeau - - * UI/WebServerResources/UIxAppointmentEditor.js: correctly handles - french and ISO dates. - - * UI/Scheduler/UIxFreeBusyUserSelector.[hm]: added code an ivars - from UIxContactSelector to handle contact lists (current and - additional contacts). - - * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage - -_freeBusyAsText]): added handling of an "additional"-named query - parameter that describe the number of additional days after - enddate that should be returned. - - * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView - -_responseForResults:results]): give priority to results with - "c_uid" fields. If none returned, use the first contact received. - - * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor - -extractQuickFieldsFromEvent:_event]): changed "TENTATIVE" code to - 2 and "CANCELLED" to 0. - -2006-10-25 Wolfgang Sourdeau - - * UI/WebServerResources/UIxAppointmentEditor.js: handle conversion - of start and end dates to short string dates. - - * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage - -readFreeBusyAction]): new method that returns an array of numbers - corresponding to the state in the freebusy of each "quarter of an - hour" between the "sday" and "eday" date parameters passed in the - url. This permits to handle the display of the freebusy with Ajax - mechanisms. - ([SOGoUserHomePage -_freeBusyAsText]): add 2 days to the end date - since the free busy displays 2 days ahead. - - * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView - -contactSearchAction]): new action that returns the uid and the - username + email of the user whose name contain the value of the - "search" url parameter. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -fetchFreebusyInfosFrom:_startDateto:_endDate]): added fields - useful for the computing of the status of the freebusy. - - * UI/Scheduler/UIxFreeBusyUserSelector.m ([UIxFreeBusyUserSelector - -init]): new component that incarnates a user selector for events - inspired by the new one found in Thunderbird Lightning. - -2006-10-23 Wolfgang Sourdeau - - * UI/WebServerResources/generic.js: added code to enable or - disable anchor visually (following our internal algorithm). - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor -init]): - added new "url" ivar with its classic accessors. - ([UIxComponentEditor -urlButtonClasses]): new method that returns - the class strings for the url button on the appointment/task - editor (depending on the validity of the url). - - * UI/Templates/SchedulerUI/UIxTaskEditor.wox, - UI/Templates/SchedulerUI/UIxAppointmentEditor.wox: start rewriting - the template to match the Lightning's new task/appointment editor. - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor -saveValuesIntoAppointment:_appointment]): initialize url from the components'url. - - * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -saveValuesIntoTask:_task]): initialize url from the components'url. - -2006-10-20 Wolfgang Sourdeau - - * SoObjects/Contacts/SOGoContactLDAPFolder.m - ([SOGoContactLDAPFolder - -lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]): perform the searchs on objects which start with instead of contain the lookup key. - - * SoObjects/Appointments/SOGoAptMailNotification.[hm]: work on - iCalEntityObject instances instead of just iCalEvent's. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): set ownership of returned records by adding an "owner" key to the resulting dictionaries. - - * SoObjects/SOGo/NSObject+Owner.[hm]: removed module since it's a - bad way of handling ownership that way. - - * SoObjects/Contacts/SOGoContactLDAPFolder.m - ([SOGoContactLDAPFolder -_qualifierForFilter:filter]): search also - on "cn", just like Mozilla. - -2006-10-19 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailToSelection.m ([UIxMailToSelection -to]): - "to" should be retained, otherwise it will be autoreleased and a - crash will occur. - - * UI/Contacts/UIxContactEditor.m ([UIxContactEditor - -writeAction]): updated method to fetch the card before initing - the snapshot. - - * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor - -extractQuickFieldsFromTodo:_task]): fixed to use NSNull instead - of NSNotFound. - - * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor - -iCalStringTemplate]): start and due date are now optional. - - * UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl - -setDayStartHour:aStartHour]): added a new "isDisabled" ivar with - appropriate accessors to be settable through the templates. - - * UI/Scheduler/UIxDatePicker.m ([UIxDatePicker -init]): added a - new "isDisabled" ivar with appropriate accessors to be - settable through the templates. - - * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor - -availableCalendars]): new method that list the calendars to which - the user has subscribed. - ([UIxComponentEditor -componentOwner]): returns the owner of the - editted object. - - * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor - -extractQuickFieldsFromTodo:_task]): set the start and enddate of - quickentries to null whenever each or all of them are null, by - providing an impossible timestamp from with NSNotFound as value. - -2006-10-18 Wolfgang Sourdeau - - * UI/WebServerResources/UIxMailEditor.js: update the algorithm - that handles the creation of new fields with the new APIs and the - new node structure on the page. - - * UI/Scheduler/UIxAppointmentEditor.m, - UI/Scheduler/UIxTaskEditor.m: - refactored to user UIxComponentEditor as parent class. - - * UI/Scheduler/UIxComponentEditor.[hm]: new class module - containing the methods common to the UIxTaskEditor and the - UIxAppointmentEditor. - -2006-10-17 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -doCalendarQuery:context]): now supports - the handling of time-ranges. - - * UI/WebServerResources/ContactsUI.js: specify a notification type as - parameters when onConfirmContactSelection in invoked. - - * UI/WebServerResources/generic.js: specify a notification type as - parameters when onContactRemove in invoked. - - * UI/WebServerResources/SchedulerUI.js: when the user deselects - all calendars, select his entry. - -2006-10-16 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUI.js: edit and delete events - with their owner-relative urls. Generate a correct entry in the - css color table when a user is added to the calendars list. Put - the same color next to the user id. - - * UI/WebServerResources/generic.js: implemented some new helper - methods. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -deleteEntriesWithIds:ids]): don't delete - entries if their owner is not the current user. - - * UI/Scheduler/UIxCalInlineAptView.m ([UIxCalInlineAptView - -displayClasses]): return the correct class for the current event - representation depending on its owner. - - * UI/Scheduler/UIxCalCalendarsListView.m: added method to create - and associate a color for each user login depending on its - position in the list. - - * UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView - -currentRowCSSClass]): return the correct class for the current - row depending on the owner of the event. - - * UI/Contacts/UIxContactSelector.m ([UIxContactSelector - -setColors:colors]): new method to associate a color table with - each user in the list. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): associate each returned record with the owner of the table they are retrieved from. - - * SoObjects/SOGo/NSObject+Owner.[hm]: new extension module to - NSObject to associate an instance with a user. - -2006-10-13 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUI.js: added handling of multiple - calendars. - - * UI/WebServerResources/ContactsUI.js: added handling of - notification of changes to contact selectors. - - * UI/WebServerResources/generic.js: added handling of notification - of changes to contact selectors. - - * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView - -updateCalendarsAction]): proxy method to update the user - preference table with the new selected calendar uids. - - * UI/Contacts/UIxContactsListView.m ([UIxContactsListView - -calendarsContactsAction]): new method. - - * UI/Contacts/UIxContactSelector.m ([UIxContactSelector -setCheckedBoxes:boxes]) - ([UIxContactSelector -setHasCheckBoxes:aBool]) - ([UIxContactSelector -isCheckBoxChecked]): new accessors method to - permit the drawing of checkboxes instead of card icons. - - * UI/Scheduler/UIxCalCalendarsListView.m: new component class that - wrap a selector the the "Calendars" tab. - - * UI/Contacts/UIxContactsCalendarsSelection.m: buttons for the - new user calendar selector. - -2006-10-12 Wolfgang Sourdeau - - * UI/Templates/SchedulerUI/UIxAppointmentEditor.wox: time ranges - may cover hour 0 to hour 23. - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -iCalStringFromQueryParameter:format:]): dates explicitly set to - utc tz. - - * UI/WebServerResources/SchedulerUI.js: manage both lists of - objects wrt to the toolbar actions. - - * UI/WebServerResources/generic.js: added code to the "String" - class to decode number-encoded char entities. - - * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView - -batchDeleteAction]): new method to delete selected entries in the - lists. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -deleteEntriesWithIds:ids]): new method - that delete identified entries in batch. - - * UI/SOGoUI/UIxComponent.m ([UIxComponent - -jsCloseWithRefreshMethod:methodName]): new method with explicit purpose. - - * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -saveAction]), - UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -saveAction]), UI/MailerUI/UIxMailEditor.m ([UIxMailEditor - -sendAction]), UI/Contacts/UIxContactEditor.m ([UIxContactEditor - -saveAction]): - return a UIxJSClose component if everything went fine. - - * UI/Scheduler/UIxTaskEditor.h: interface extracted from - UIxTaskEditor.m. - - * UI/Scheduler/UIxAppointmentEditor.h: interface extracted from - UIxAppointmentEditor.m. - - * UI/Common/UIxJSClose.[hm]: new UIxComponent designed to display - a very light page with javascript code to close a window, by - calling a method on the opener if specified. This component is - designed to work as a response to form postings. - -2006-10-11 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoTaskObject.[hm]: clone of - SOGoAppointmentObject adapted for the handling of tasks. - - * SoObjects/Appointments/NSArray+Appointments.[hm]: category - extracted from SOGoAppointmentObject. - - * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor - -saveUrl]): returns the url needed to POST the new form to. - redirect the user to /editAsAppointment instead of /edit, - so that SOGoAppointmentFolder can return the correct object type. - - * SoObjects/SOGo/NSObject+AptComparison.m ([NSObject - -compareAptsAscending:_other]): accept empty start or end dates. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder - -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): added a "component" parameter to match the query against the specified component types. Made startDate and endDate optional by ignoring them altogether in the query whenever one of them is nil. - ([SOGoAppointmentFolder -doCalendarQuery:context]): fetch - components of type "vtodo" as well as "vevent". - ([SOGoAppointmentFolder -lookupName:inContext:acquire:]): if the - url specified ends with AsTask or AsAppointment, returns the - an object of the appropriate class, otherwise deduce it from its - content if the HTTP method is "PUT", otherwise read its type from - the quick table. - - * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor - -extractQuickFieldsFromTodo:_task]): extract quick fields from - tasks. - - * UI/Scheduler/UIxCalView.m ([UIxCalView - -fetchCoreAppointmentsInfos]): replacement methods for - fetchCoreInfos but by retrieving object with component "vevent". - ([UIxCalView -fetchCoreTasksInfos]): same as above for "vtodo" - components. - - * UI/Scheduler/UIxCalTasksListView.[hm]: clone of - UIxCalAptListView adapted for the handling of tasks. - - * UI/Scheduler/UIxTaskProposal.[hm], - UI/Scheduler/UIxTaskView.[hm], UI/Scheduler/UIxTaskEditor.[hm]: - clones of the UIxAppointment* classes for the handling of tasks. - - * UI/WebServerResources/UIxTaskEditor.js: clone of - UIxAppointmentEditor adapted for the handling of tasks. - - * UI/WebServerResources/SchedulerUI.js: added support for tasks. - Scroll the daily view to the appropriate hour when an appointment - is selected in the appointments list. - -2006-10-05 Wolfgang Sourdeau - - * UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl - -setDayStartHour:aStartHour]): specifies the user timezone on the - given date. - - * UI/Scheduler/UIxAppointmentEditor.m: indicate DTSTAMP with "GMT" - as timezone. - - * SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate -adjustedDate]) - ([NSCalendarDate -driftedDate]): methods made useless by a better - comprehension of the NSTimeZone API... - -2006-10-04 Wolfgang Sourdeau - - * UI/SOGoUI/UIxComponent.m ([UIxComponent -selectedDate]): call - new methods from the NSCalendarDate methods. - - * SoObjects/SOGo/NSCalendarDate+SOGo.m: module replacing and - extending UI/Scheduler/NSCalendarDate+Scheduler.m. - ([NSCalendarDate - +dateFromShortDateString:dateStringandShortTimeString:timeStringinTimeZone:timeZone]): new method that generates a date from two short string formatted as follow: "yyyymmdd" and "hhmm". Thismethod replaces a similar method from UIxComponent (noted below). - ([NSCalendarDate -adjustedDate]): this method returns another - instance set to the correct hour after the original date was set - from a non-GMT timezone. This date can be used for storage. - ([NSCalendarDate -driftedDate]): this method does exactly the - opposite of -adjutedDate, that is, it enables the method - hourOfDay, minuteOfHour etc... to return the values according to - the original date's timezone. This date CANNOT be used for storage. - - * UI/Scheduler/NSCalendarDate+Scheduler.m ([NSCalendarDate - -shortDateString]): new method that will return a "short date - string" (yyyymmdd) from a calendar date object. - - * UI/SOGoUI/UIxComponent.m ([UIxComponent - -_cDateFromShortDateString:dateStringandShortTimeString:timeString]): new method to compute the selected date from the "day" and "hm" query parameters (if found). This method replaces the old algorithm that was found in the "selectedDate" method. - - * Main/sogod.m (main): initialize the NSTimeZone's defaultTimeZone - to the value of SOGoServerTimeZone or "Canada/Eastern" if not found. - -2006-10-03 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUI.js: added code to scroll the - view of the day at the height of hour 8:00. - - * UI/Scheduler/UIxCalView.m ([UIxCalView -dayStartHour]): returns 0. - ([UIxCalView -dayEndHour]): returns 24. - - * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView -defaultAction]) - ([UIxContactFoldersView -newAction]): invoke - _selectActionForApplication: on self with the proper attribute too. - - * UI/Contacts/UIxContactsSelectionViewContainer.m: removed since - we now use the action mechanism in UIxContactsListView to keep the - same view for the contact selectors and the regular contact view. - - * UI/Contacts/UIxContactsListViewContainer.[hm]: replaces - UIxContactsListViewContainerBase.[hm] - - * UI/Contacts/UIxContactsListView.[hm]: replaces UIxContactsListViewBase.[hm] - - * UI/WebServerResources/generic.js: generalized emailstring - handling functions. Generalized address book access functions. - - * UI/Contacts/UIxContactsListViewBase.m ([UIxContactsListViewBase - -isPopup]): return YES if the "popup" query parameter is set. - - * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView - -defaultAction]): keep the url parameters when redirecting. - ([UIxContactFoldersView -selectForSchedulerAction]) - ([UIxContactFoldersView -selectForMailerAction]): new action - methods for the /scheduler-contacts and /mailer-contacts invocations. - - * SoObjects/SOGo/SOGoObject.m: compose the action url using the - newly available NSString+URL category. - - * SoObjects/SOGo/NSDictionary+URL.m ([NSDictionary - -asURLParameters]): handle dictionary entries which could be - instances of NSArray rather than NSString. - - * SoObjects/SOGo/NSString+URL.m ([NSString - -composeURLWithAction:actionparameters:urlParametersandHash:useHash]): when composing the url, remove the encoded parameters first since they will be added later. - ([NSString -urlWithoutParameters]): new method that returns the - url without its parameters. - - * SoObjects/SOGo/NSString+iCal.h: deleted obsolete file. - - * SoObjects/SOGo/NSDictionary+URL.[hm], - UI/SOGoUI/NSString+URL.[hm]: moved from UI/SOGoUI/. - - * UI/WebServerResources/UIxMailEditor.js: add support for - additions of different types (to, cc, bcc) of recipients from the - address book. - - * UI/Common/UIxPageFrame.m ([UIxPageFrame -doctype]): added the - " - - * UI/WebServerResources/ContactsUI.js: hide the current contact - whenever the user changes of contact folder. - - * UI/WebServerResources/UIxContactEditor.js: the contact UID is - now provided by the template when loading the page. - - * SoObjects/SOGo/AgenorUserManager.m ([AgenorUserManager - -iCalPersonWithUid:uid]): new method taken from removed module - 'iCalPerson+UIx'; - -2006-09-28 Wolfgang Sourdeau - - * UI/Scheduler/UIxAppointmentView.m ([UIxAppointmentView - -categoriesAsString]): same as below. - - * UI/Scheduler/UIxAppointmentEditor.m: adapted by using the new - vcalendar API's iCalEvent instead of the removed SOGoAppointment. - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -calendarFromContent:cnt]): new helper method. - ([SOGoAppointmentObject -firstEventFromCalendar:calendar]): new - helper method. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -doCalendarQuery:context]): added a - hackish test to detect whether the request concernes VEVENT's or - anything else. Return events only in the former case. - ([SOGoAppointmentFolder - -fetchOverviewInfosFrom:_startDateto:_endDate]): retrieve the - c_name quickfield so that the calendar list can identify the - appointments with their complete "filename". - - * OGoContentStore/OCSiCalFieldExtractor.m: use CardGroup's - groupsOfClass:fromSource: to parse the given vcalendar. - - * UI/Scheduler/iCalRecurrenceRule+SOGo.m: removed obsolete class. - - * UI/Scheduler/SOGoAppointment+UIx.h: removed obsolete class. - - * SoObjects/SOGo/SOGoAppointmentICalRenderer.[hm]: removed - obsolete class. - - * SoObjects/SOGo/SOGoAppointment.[hm]: removed obsolete class. - -2006-09-26 Wolfgang Sourdeau - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -lookupName:inContext:acquire:]): be - sensitive to the CalDAV method names. - ([SOGoAppointmentFolder -doCalendarQuery:context]): method for the - "calendar-query" CalDAV method name. - - * UI/WebServerResources/ContactsUI.js: removed a lot of useless - code coming originally from MailerUI.js. - - * UI/WebServerResources/UIxContactEditor.js: imitate the - Thunderbird address book by completing the display name with the - content of the first and last name fields, until the display name - is modified manually. - - * UI/WebServerResources/generic.js: added a "trim" method to the - String class. - - * UI/Contacts/UIxContactsListViewBase.m ([UIxContactsListViewBase - -displayName]): new method that returns the display name from "cn" - or from the "displayName" key if found. - - * UI/Contacts/UIxContactEditor.m ([UIxContactEditor - -initSnapshot]): check if "[card n]" returns anything to avoid a - crash. - - * UI/Common/UIxPageFrame.m ([UIxPageFrame -doctype]): new method - that returns an unparsed doctype definition for the pages. - - * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry - -vCard]): set the card's fn to attribute "displayName" if found - before "cn". - -2006-09-20 Wolfgang Sourdeau - - * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry - -vCard]): handle the "streetAddress" and "l" fields. - - * UI/Templates/MailerUI/UIxMailEditor.wox: arranged the message - header fields by converting the tables to DIVs and SPANs. - - * UI/WebServerResources/generic.css: attempted unification of font - families and size across all the elements. changed the - logConsole's "position" from "fixed" to "absolute" to avoid - performance issues. - -2006-09-19 Wolfgang Sourdeau - - * UI/WebServerResources/ContactsUI.js (uixDeleteSelectedContacts): - empty the contact view when the current contact is being deleted. - - * UI/WebServerResources/MailerUI.js (newContactFromEmail): fully - parse the email field and provide the address full name if found - as the "contactFN" parameter. - - * UI/WebServerResources/generic.js (openMailTo): do not give a - name to the opened window so that serveral ones can be opened at - the same time. - - * UI/MailPartViewers/UIxMailPartTextViewer.m - ([UIxMailPartTextViewer -flatContentAsString]): override method by - replacing carriage returns with "
" in the result string from - super's implementation. - - * UI/Contacts/UIxContactView.m ([UIxContactView - -_urlOfType:aType]): don't manage non-mailto urls through - javascript, let the user decide what's best for him. - - * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView - -newAction]): transfer all the query parameters by using the - "asURLParameters"'s result string from [self queryParameters]. - - * UI/Contacts/UIxContactEditor.m ([UIxContactEditor - -initSnapshot]): retrieve "contactEmail" and "contactFN" from the - query parameters and put their values (if any) into the snapshot. - - * UI/Contacts/UIxContactView.m ([UIxContactView -note]): convert - carriage-returns to "
". - ([UIxContactView -workCompany]): explicitly initialize company to - nil if org is nil or empty. - - * UI/WebServerResources/UIxContactEditor.js: updated validation - code after we added and renamed some fields. - - * UI/WebServerResources/ContactsUI.js: added code to cache contact - cards and to handle card updates. - -2006-09-18 Wolfgang Sourdeau - - * UI/Contacts/UIxContactView.m ([UIxContactView -hasOtherInfos]): - test the length of the returned string since they will never be - nil. - - * UI/Contacts/UIxContactEditor.m ([UIxContactEditor -saveAction]): - return self if the process went successful, returns an exception - otherwise (and only otherwise...). - - * OGoContentStore/OCSContactFieldExtractor.m - ([OCSContactFieldExtractor -extractQuickFieldsFromVCard:_vCard]): - adapted method to the new VCard api. Since the cards are stored in - vcard format, we no longer deal with a dictionary but with a - NGVCard object... - -2006-09-15 Wolfgang Sourdeau - - * UI/Contacts/UIxContactView.m ([UIxContactView -preferredEmail]): - return a string with a "mailto" url. - ([UIxContactView -_urlOfType:aType]): generic method to return a - url string with a html anchor pointing to it. - - * UI/Contacts/UIxContactEditor.[hm]: UIxContactEditorBase renamed - since subclass "UIxContactEditor" did nothing. Implemented code to - display and modify the values parsed from the vcards, displayed in - a way similar to the Thunderbird addressbook. - - * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry - -save]): new dummy method. - - * SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry - -save]): made method void. - -2006-09-13 Wolfgang Sourdeau - - * UI/Contacts/UIxContactView.m: added many wrapper methods to - display blocks of data à la Thunderbird Addressbook. If data is - available, those wrappers (around the NGVCard methods) will - enclose the results in a proper HTML output with the correct label - (if present), otherwise it will return an empty string. - ([UIxContactView -vcardAction]): new action to return the contact - as text/vcard (for exporting). - - * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry - +contactEntryWithName:aNamewithLDAPEntry:anEntryinContainer:aContainer]): adapted the mapping of the LDIF data with the new NGVCard API. - - * SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry - -vCard]): create a new NGVCard instance when no data is available - and retain it. - ([SOGoContactGCSEntry -save]): save the vCard using the new - "versitString" API method/message. - - * UI/Contacts/UIxContactView.h: separated interface from - UIxContactView.m. - - * UI/WebServerResources/ContactsUI.js: add-ed code to download card - views and display them beneath the list. - -2006-09-08 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject -userTimeZone]): retain - the timezone even when it's the server timezone. - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder - -privateContacts:inContext:]): no long configure the calendar - object with the user's timezone since it's now accessible - application-wide throught the SOGoObject methods. - - * UI/SOGoUI/UIxComponent.[hm]: removed the "viewTimeZone" ivar and - method. Removed the "backendTimeZone" method. - - * UI/MainUI/SOGoUserHomePage.[hm]: made a subclass of UIxComponent - instead of SoComponent. - - * SoObjects/Appointments/SOGoAppointmentObject.m: - ([SOGoAppointmentObject -viewTimeZoneForPerson:_person]): returns - [self serverTimeZone] instead of "EST" (which was removed). - - * SoObjects/Appointments/SOGoAppointmentFolder.[hm]: removed the - "timeZone" ivar and its accessors. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject -serverTimeZone]): new - centralized method returing the timezone configured in the - userdefaults db or "Canada/Eastern" if missing. - ([SOGoObject -userTimeZone]): new centralized method returing the - timezone of the current user or the server timezone if missing - from the user configuration table. - -2006-09-07 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUI.js: implemented caching of - date selectors. - - * UI/SOGoUI/UIxComponent.m ([UIxComponent -userFolderPath]): - return a path based on the object's context instead of the first - level in SOGo's object hierarchy... - -2006-09-06 Wolfgang Sourdeau - - * UI/Templates/SchedulerUI/UIxCalDayTable.wox: day columns can now - be clicked. - - * UI/Templates/SchedulerUI/UIxCalDateSelector.wox: pass the user's - timezone ([self viewTimeZone]) to the WEMonthOverview component to - avoid a confusion with the days. - - * UI/Templates/SchedulerUI/UIxCalInlineAptView.wox: appointments - can now be clicked. - - * UI/WebServerResources/SchedulerUI.js: implemented a mechanism to - imitate Sunbird's synchronization between the 3 visible views. - - * UI/SOGoUI/UIxComponent.m ([UIxComponent -selectedDate]): make - sure the numbers in dateString are formatted so as to take 4 chars - for the year and 2 for the day and the month, otherwise - NSCalendarDate will return a nil date. - ([UIxComponent -applicationPath]): return a path based on the - object's context instead of the second level in SOGo's object - hierarchy... - -2006-09-05 Wolfgang Sourdeau - - * UI/SOGoUI/UIxComponent.m ([UIxComponent -selectedDate]): add the - user's timezone abbreviation to the date string passed as parameter to - NSCalendarDate to generate an accurate date instance. Do the same - when no date is specified and today is chosen. - - * UI/WebServerResources/UIxAppointmentEditor.js: convert the - form's time values to integers before comparing them. - - * UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView -currentStartTime]) - ([UIxCalAptListView -currentEndTime]): initialize the resulting - dates timezone with [self viewTimeZone]. - - * UI/SOGoUI/UIxComponent.m ([UIxComponent -init]): new - "viewTimeZone" ivar destined to hold an instance of the user's - timezone in memory. - ([UIxComponent -viewTimeZone]): take the timezone from the user's - prefs. - -2006-08-30 Wolfgang Sourdeau - - * UI/Templates/SchedulerUI/UIxAppointmentEditor.wox: completely - rearranged the layout. - - * UI/WebServerResources/UIxAppointmentEditor.js: added code to - manage showing and hiding appointment details. - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder - -privateContacts:inContext:]): init the SOGoAppointmentFolder's - timezone by taking the current user's timezone setting. - - * SoObjects/Appointments/SOGoAptMailNotification.m: same as below. - - * SoObjects/Appointments/SOGoAppointmentObject.m - ([SOGoAppointmentObject -changeParticipationStatus:inContext:]): - set default timezone to EST, although this code should be - rewritten to handle a system and a user default value. - - * UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl - -takeValuesFromRequest:_rqinContext:_ctx]): enhanced method to - take the values from the hour and minute INPUTs when data is - POSTed since we no longer use the UIxTimeSelector component. - ([UIxTimeDateControl -selectableHours]) - ([UIxTimeDateControl -selectableMinutes]): new methods used by the - template SELECTs to display reasonable and acceptable values - instead of all the possibilities. - - * UI/WebServerResources/generic.js: adapted code for the new - implementation of the UIxContactSelector component (added a - "remove" button, removed the previous INPUT and replaced them with - links of class "button"). - - * UI/Scheduler/UIxTimeDateControl.h: separated interface from - UIxTimeDateControl.m. - - * UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable -currentAppointmentDay]) - ([UIxCalDayTable -currentAppointmentHour]): new methods that - returns correctly formatted values used as attributes for JS code. - - * UI/Contacts/UIxContactSelector.m ([UIxContactSelector - -initialContactsAsString]): renamed implementation of - initialParticipants. - ([UIxContactSelector -currentContactId]) - ([UIxContactSelector -currentContactName]): new methods used when - listing the initial contacts in the widget. Currently, both return - the person's cn but the latter should ultimately return a user - fullname. - - * UI/Contacts/UIxContactSelector.h: separated interface from - UIxContactSelector.m. - - * UI/Scheduler/UIxDatePickerScript.[hm]: component removed since - all javascript code is now put in Scheduler.js/generic.js. - - * UI/Scheduler/NSCalendarDate+UIx.[hm]: category removed, code - moved into NSCalendarDate+Scheduler instead. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -setTimeZone:newTZ]): new method to - configure the timezone from SOGoUserFolder when the instance is - being created. - ([SOGoAppointmentFolder -viewTimeZone]): MET was removed. Returns - the value of the new "timezone" ivar. - -2006-08-25 Wolfgang Sourdeau - - * UI/WebServerResources/SchedulerUI.{css,js}: added a tabview with - the date selector in the first page and the container of the - future calendar selector in the second page. - - * UI/WebServerResources/generic.js: added code for handling tabbed - views. - - * UI/Common/UIxPageFrame.m ([UIxPageFrame -productFrameworkName]): - returns the bundle name associated to the current running product. - -2006-08-24 Wolfgang Sourdeau - - * UI/WebServerResources/UIxAppointmentEditor.js: fixed the AJAX - exception by invoking a timeout on the opener rather than invoking - the list refresh method. - - * UI/Scheduler/UIxCalDayView.m ([UIxCalDayView -labelForDay]): - removed method. - - * UI/Scheduler/UIxCalWeekView.m ([UIxCalWeekView -weekBeforePrevWeekQueryParameters]) - ([UIxCalWeekView -prevWeekQueryParameters]) - ([UIxCalWeekView -nextWeekQueryParameters]) - ([UIxCalWeekView -weekAfterNextWeekQueryParameters]): new methods - that return the dates relatively to the current day. - ([UIxCalWeekView -lastWeekName]) - ([UIxCalWeekView -currentWeekName]) - ([UIxCalWeekView -nextWeekName]) - ([UIxCalWeekView -weekAfterNextWeekName]) - ([UIxCalWeekView -_weekNumberWithOffsetFromToday:offset]): new - methods that returns the label for the corresponding weeks. - - * UI/Scheduler/UIxCalDayTable.[hm]: new class module/component - used by UIxCalDayView and UIxCalWeekView to display the events - occuring in one or more days. - -2006-08-22 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalMainView.m: extended class to populate the - entries in the new "monthMenu" and "yearMenu". - - * UI/Scheduler/UIxCalDayView.m ([UIxCalDayView -labelForDay]): new - method to return the current day as a string formatted depending - on the current locale. - - * UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView -startDate]) - ([UIxCalAptListView -endDate]): "today" is now the default filter - for displayed events. - ([UIxCalAptListView -currentSerialDay]): new method returning the - date of the current enumerated appointment in serial form - (yyyymmdd). - - * UI/WebServerResources/SchedulerUI.js: added code to select the - relevant day when an appointment is selected. Added code to popup - a month and a year menu whenever the header entries are clicked in - the calendar widget. - - * UI/WebServerResources/generic.js: made addClassName and - removeClassName methods of HTMLElement. - -2006-08-21 Wolfgang Sourdeau - - * UI/WebServerResources/MailerUI.js: fixed the contact creation - from email addresses. - - * UI/WebServerResources/generic.js: centralized the search-related - functions here since the same code was used across the 3 - applications. - - * UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView -startDate]) - ([UIxCalAptListView -endDate]): return the required dates needed - depending on the value given to the "filterpopup" url parameter. - - * UI/Common/UIxToolbar.m ([UIxToolbar -buttonLabel]): reduced the - code by invoking UIxComponent's labelForKey:. - - * UI/SOGoUI/UIxComponent.m ([UIxComponent -labelForKey:]): use - [self pageResourceManager] instead of [self resourceManager]. - - * UI/Contacts/UIxContactEditorBase.m: invokes - globallyUniqueObjectId on the clientobject's class instead of the - hardcoded "SOGoFolder". - - * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView - -newAction]): redirect the "new" action to the personal (default) - contact folder. - - * SoObjects/SOGo/SOGoObject.m ([SOGoObject - +objectWithName:inContainer:]): new constructor. - - * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder - -lookupContactWithId:recordId]): always create a contact object, - even if it does not exist. - -2006-08-18 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalMainView.[hm]: new class to serve as a pseudo - component that lays out the different components of SOGoCalendar. - Only serves as an Objective-C counterpart to its xml template. - - * UI/Scheduler/UIxCalInlineMonthOverview.h: interface extracted - from its .m file. - - * UI/Scheduler/UIxCalFilterPanel.[hm]: new class designed to - display a widget to handle the information displayed in the - appointments list. Not currently used, lacks implementation. - - * UI/Scheduler/UIxCalDateSelector.[hm]: new class designed to - display a calendar as a dynamic widget from where one can select - the current visible day. - - * UI/Scheduler/NSCalendarDate+Scheduler.[hm]: category code - extracted from UIxCalInlineMonthOverview.m. - - * UI/Scheduler/UIxDatePicker.m: removed the jsPopup, jsCode and - calendarPageURL methods. The javascript code is handled by .js - files as much as possible... - - * UI/WebServerResources/ContactsUI.js, - UI/WebServerResources/MailerUI.js: adapted to the code refactoring - in generic.js. - - * UI/WebServerResources/SchedulerUI.js: implemented functions to - handle the new widgets. XmlHTTPRequest code taken from - MailerUI.js. - - * UI/WebServerResources/generic.js: put some functions related to - element selections as methods to HTMLElement and HTMLTableElement. - - * UI/Scheduler/UIxCalAptListView.[hm]: new class designed to - display the list of appointments (embodies the code-size of - UIxCalAptListView; answers to the "aptlist" method). - -2006-08-15 Wolfgang Sourdeau - - * UI/Scheduler/UIxCalWeekOverview.m ([UIxCalWeekOverview - -correctURLAction]): new short action method replacing the method - below by taking far less code. - - * SoObjects/Appointments/SOGoAppointmentFolder.m - ([SOGoAppointmentFolder -GETAction:]): removed method. Replaced - with an action in the view-related code. - - * UI/Scheduler/UIxAppointmentEditor.m: invoke - "stringByEscapingHTMLString" on the resulting value to avoid - issues with accented characters. - ([-jsCode]): removed method since the javascript code was merged - into SchedulerUI.js. - -2006-08-14 Wolfgang Sourdeau - - * UI/Scheduler/iCalPerson+UIx.m ([iCalPerson +personWithUid:]): - new class method that returns an iCalPerson based on the UID given - as param. - - * UI/Contacts/UIxContactsListViewContainerBase.m: - UIxContactsListViewContainer renamed to serve as a base class for - the contact lists in both the contact editor and the contact - selectors. - - * SoObjects/Contacts/SOGoContactLDAPFolder.m - ([SOGoContactLDAPFolder - -LDAPSetHostname:setPort:setBindDN:setBindPW:setContactIdentifier: - setUserIdentifier:setRootDN:]): an LDAP field specifying the - loginname of the users can now be specified. - - * UI/WebServerResources/generic.js: added code to manage contact - lists through the new implementation of the UIxContactSelector. - - * UI/Templates: put the templates related to SchedulerUI in its - own directory. - - * SoObjects/Contacts/NGLdapEntry+Contact.m ([NGLdapEntry - -asDictionaryWithAttributeNames:withUID:andCName:cName]): add an - entry for "uid" with the field name representing the login name of - the user in the corresponding LDAP branch. - -2006-08-10 Wolfgang Sourdeau - - * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder - -lookupName:_keyinContext:_ctxacquire:_flag]): when the HTTP - request is a PUT, always create an entry, even if we're not sure - it does exist. - -2006-08-09 Wolfgang Sourdeau - - * UI/WebServerResources/ContactsUI.js: implemented live-search. - - * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders - -appendSystemSourcesInContext:context]): populated method with - code that creates entries mapped to instances SOGoContactFolder, - based on the configuration found in the NSUserDefaults under the - key "SOGoLDAPAddressBooks". - ([SOGoContactFolders - -lookupName:nameinContext:contextacquire:acquire]): - "contactsources" do not exist anymore, SOGoContactFolder was split - into two classes: SOGoContactGCSFolder and SOGoContactLDAPFolder - and one protocol: SOGOContactFolder, instead. - ([SOGoContactFolders -contactFolders]): new accessor used by the - views of SOGoContactXXXFolder to list the possible sources. - - * SoObjects/Contacts/SOGoContactObject.h: new protocol that - defines the methods that UIxContactsView, ..Editor and so on... - can expect. - - * SoObjects/Contacts/SOGoContactFolder.h: new protocol that - defines the methods that UIxContactsListViewBase expects as well - as the data fields returned in the contact lists. - - * SoObjects/Contacts/SOGoContactLDAPFolder.[hm]: new class that - returns entries an LDAP server. Conforms to the new - SOGOContactFolder protocol. - - * SoObjects/Contacts/SOGoContactLDAPEntry.[hm]: new class that - returns a vCard based on contact entries from an LDAP server. - Conforms to the new SOGOContactObject protocol. - - * SoObjects/Contacts/NGVCardSimpleValue+Contact.m - ([NGVCardSimpleValue -vCardEntryString]): generates the correct - entry for the textual representation of the vCard. - - * SoObjects/Contacts/NGVCardSimpleValue+Contact.[hm]: new class - extension. - - * SoObjects/Contacts/SOGoContactGCSEntry.[hm]: new module name of - "SOGoContactObject". - - * SoObjects/Contacts/NGVCard+Contact.m ([NGVCard -asString]): new - method that generates a textual representation of the vcard. - - * SoObjects/Contacts/NGVCard+Contact.[hm]: new class extension. - - * SoObjects/Contacts/SOGoContactGCSFolder.[hm]: new module name of - "SOGoContactFolder". - - * SoObjects/Contacts/SOGoContactSource.h, - SoObjects/Contacts/SOGoPersonalAB.[hm]: unused classes and - protocols. - - * SoObjects/Contacts/NGLdapEntry+Contact.m ([NGLdapEntry - -singleAttributeWithName:key]): new method that returns the first - object associated with an ldap key (where generally one value is - returned by key). - ([NGLdapEntry - -asDictionaryWithAttributeNames:attributeNamesandCName:cName]): - map the entry into an NSDictionary for processing by - UIxContactsListViewBase.m with the least possible overhead. - - * SoObjects/Contacts/NGLdapEntry+Contact.[hm]: new class - extension. - -2006-08-04 Wolfgang Sourdeau - - * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder - -privateContacts:inContext:]): now returns an instance of - SOGoContactFolders. - - * UI/Contacts/UIxContactsListViewContainer.m - ([UIxContactsListViewContainer -contactFolderName]): new method to - return the absolute path to the current contact folder, called - from within the template. - - * UI/Templates/ContactsUI/UIxContactsListViewContainer.wox: added - JS code to initialize the 'currentContactFolder' generic var. - - * SoObjects/Contacts/SOGoContactFolder.m ([SOGoContactFolder - +contactFolderWithSource:inContainer:andName:]): new class - method meant to return an instance connected to the specified - source. Currently useless but won't be anymore in the next few - days. - - * SoObjects/SOGo/SOGoUserFolder.h: commented out declaration of - the "lookupFreeBusyObject" method since it does not exist. - - * UI/Contacts/UIxContactFoldersView.[hm]: new class module serving - as a "view" for the SOGoContactFolders object. Does nothing but - redirect the browser to the URL of the personal address book of - the user. It does not even have a template. - - * SoObjects/Contacts/SOGoPersonalAB.[hm]: new class module - implementing the SOGoContactSource protocol. Does nothing - currently but will be used to implement access to the personal - address book of the user stored in the SOGo database. - - * SoObjects/Contacts/SOGoContactSource.h: new "SOGoContactSource" - protocol defining an API common to all possible types of contact - sources. - - * SoObjects/Contacts/SOGoContactFolders.[hm]: new class module - serving as the root of the contact folders available to the - current user. Correctly lists the contact sources in webdav. - -2006-08-03 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailAccountsView.m ([UIxMailAccountsView - -composeAction]): new action method that permits external object - to write a message from the default (primary) account. - - * UI/Contacts/UIxContactEditorBase.m ([UIxContactEditorBase - -initSnapshot]): new method with code taken from "defaultAction" - but needed for others. - ([UIxContactEditorBase -writeAction]): new action designed to - compose the correct URL needed to obtain the MailerUI's email - editor with the correct "mailto" parameter. - - * UI/Common/UIxSortableTableHeader.m: moved from MailerUI to - Common so that other modules can use it. - - * UI/Contacts/UIxContactsListViewContainer.m: container to make it - easier to manage both ajax and non-ajax requests. - - * UI/Contacts/UIxContactsFilterPanel.m: clone of - UIxMailFilterPanel, but applicable to contact lists. - - * SoObjects/Contacts/NSDictionary+Contact.m ([NSDictionary - -vcardContentFromSOGoContactRecord]): use the new standard methods - created for each type of entry. If a line is determined to not - contain information, it will be skipped. - - * SoObjects/SOGo/AgenorUserManager.m ([AgenorUserManager - +initialize]): init defaultMailDomain with the user default - "SOGoDefaultMailDomain". - -2006-08-02 Wolfgang Sourdeau - - * UI/Contacts/UIxContactEditorBase.m ([UIxContactEditorBase - -saveAction]): reorganized methods to only have ONE return point. - Invoke saveRecord: directly on the clientObject instead of - saveContentString, which does the same thing anyway. - - * SoObjects/Contacts/NSDictionary+Contact.m - ([NSDictionary -vcardContentFromSOGoContactRecord]): extension - method to convert the dictionary returned with the user submission - to a record in VCARD format to be stored in the database. - -2006-08-01 Wolfgang Sourdeau - - * UI/WebServerResources/MailerUI.js: when opening the context menu - of the message list, select the message below the mouse cursor and - deselect the other selected messages temporarily. This mimics the - behaviour of Thunderbird for that matter and was already - implemented for the entries of the folder tree. - - * UI/MailerUI/UIxMailFolderMenu.m ([UIxMailFolderMenu - -iconForMenuItem]): new method that returns the fully qualified - relative URL to the icon representing the mailbox, or the default - mailbox icon if needed. - - * UI/SOGoUI/UIxComponent.m ([UIxComponent - -urlForResourceFilename:filename]): automatically return an empty - string whenever the filename passed as argument is nil. - - * UI/WebServerResources/MailerUI.js: open the mailboxes with the - "desc" parameter set to 1 so that they are sorted in descending - order by default. Also, added "onHeaderClick()", triggered by - clicking on the message list header elements. - - * UI/MailerUI/UIxMailSortableTableHeader.m - ([UIxMailSortableTableHeader -isSortedDescending]): same as below. - - * UI/MailerUI/UIxMailListView.m ([UIxMailListView - -isSortedDescending]): defaults to "YES" when the sort order is - not specified. - -2006-07-31 Wolfgang Sourdeau - - * UI/WebServerResources/MailerUI.js: - - message cache: set the max num of cached messages to 20. Limit - the cached message size to 30000 bytes. - - ajax: when a message request is called while one is already - being performed, the latter will be cancelled. Idem when - retrieving the content of a mailbox. - - folder tree: when a mailbox is selected because of the URL - requested (initMailboxSelection), the dtree is expanded throughout - the mailbox entry's parent hierarchy to ensure it is made visible - when the page is being displayed. (new function: expandUpperTree). - - mailbox loading: when loading a mailbox where a message was - previously selected, we invoke its url with the "pageforuid" - parameter correctly specified. During callback processing, we scan - the table for the related row and reselect it. - Also, the message area is set blank before loading any mailbox. - - * UI/MailerUI/UIxMailListView.m ([UIxMailListView - -defaultAction]): if the "pageforuid" parameter is passed in the - url, take its value and invoke [self firstMessageOfPageFor:] - consequently to deduce the first message to display. Otherwise, - set it to "idx", otherwise set it to 0. - ([UIxMailListView -firstMessageOfPageFor:]): new method - that determines the first message of the page where the message - passed as parameter is contained. - - * UI/WebServerResources/UIxMailListView.js: removed this module, - its code was put in MailerUI.js instead. - -2006-07-28 Wolfgang Sourdeau - - * UI/MailerUI/UIxMailFolderMenu.m: a descendent of UIxMailTree - which returns the nodes for the parent specified in "parentMenu". - Used to generate the javascript code for the folder dtree. - - * UI/Templates/MailerUI/UIxMailPanelFrame.wox: the components - using that container-template are now using UIxMailMainFrame - since UIxMailPanelFrame had no real interest. File removed. - - * UI/WebServerResources/dtree.{css,js}: new files to handle - javascript-generated mailbox tree. Modified from original version - by integrating the previous code with the one we are using for - selections and mailbox handling. Minor visual enhancements too... - -2006-07-25 Wolfgang Sourdeau - - * SoObjects/Mailer/SOGoUser+Mail.m: if only one identity is to be - returned, put it in an NSArray before returning it (fixes - bug#217). - -2006-07-24 Wolfgang Sourdeau - - * UI/SOGoUI/NSString+URL.m ([NSString -hostlessURL]): new method - that returns a url string stripped from its "http://hostname" - prefix. - - * UI/SOGoUI/NSDictionary+URL.[hm]: moved from UI/Common. - - * UI/SOGoUI/NSString+URL.[hm]: moved from UI/Common. - -2006-07-17 Wolfgang Sourdeau - - * UI/MailerUI/WOContext+UIxMailer.m ([WOContext - -mailDateFormatter]): retrieve the timezone from the user settings - and pass it to the returned dateFormatter. Also, the dateFormatter - is kept in a static variable to avoid useless - creations/destructions. - - * UI/MailerUI/UIxMailFormatter.m ([UIxMailDateFormatter - -setTimeZone:newTimeZone]): new accessor to specify the timezone. - - * UI/MailerUI/UIxMailFilterPanel.m ([UIxMailFilterPanel -setSearchCriteria:]) - ([UIxMailFilterPanel -searchCriteria]): new methods, similar to - s/Criteria/Text/ to handle the "criteria" form parameter. - -2006-07-11 Wolfgang Sourdeau - - * UI/WebServerResources/uix.css: enhanced the toolbar appearance - to integrate better with the firefox look&feel. Added entries for - the new "menu" DIV class (popup menus). - - * UI/WebServerResources/generic.js: added "sanitizeMailTo" which - takes any chunk of text as param, detects the user email and the - optional first and last names and return them in a well-formatted - way. Renamed "getSelection" to "getSelectedNodes" to avoid a - namespace conflict. Added "onMenuClick(node, event, menuId)" to - handle popup menus through "onclick" element attributes (node = - this, event = event and menuId = name of the menu DIV id to - popup). - - * UI/Contacts/UIxContactEditorBase.m ([UIxContactEditorBase - -snapshot]): add an entry for "email" into the snapshot - dictionary if a "contactEmail" URL parameter was detected and if - the entry for "email" is empty. - - * UI/Contacts/Toolbars/SOGoContactFolder.toolbar: the "new card" - button now invokes the newContact() js function in ContactsUI.js - instead of opening "new" directly. newContact() pops up a window - stripped from its navigation bar. - - * UI/Contacts/ContactsUI.js: new module specific to the ContactsUI - bundle (AddressBook). - - * UI/Templates/MailerUI/UIxMailView.wox: added a div of class - "menu" and id "addressMenu" have the header email addresses - display it with the new menu code in generic.js. - - * UI/Templates/MailerUI/UIxMailPanelFrame.wox: same as below + - replaced the body tables with a div of class "pageContent" - (standardization across the page templates). - - * UI/Templates/MailerUI/UIxMailMainFrame.wox: include - productJavaScriptURL and pageJavaScriptURL (conditionnally) since - those are now inherited from UIxPageFrame. - - * UI/MailerUI/UIxMailView.js: new file specific to UIxMailView. - - * UI/MailerUI/UIxMailToSelection.m ([UIxMailToSelection -to]): if - a "mailto" URL parameter is detected and the "to" array is empty, - initialize "to" with the value of "mailto" before returning it. - - * UI/MailerUI/UIxMailEditorAction.m ([UIxMailEditorAction - -composeAction]): rewrote method in a cleaner way and with usage - of the URL extensions to NSString and NSDictionary (see below). - Also, if a "mailto" url parameter is detected, pass it to the - redirected url. - - * UI/MailerUI/UIxMailMainFrame.m: subclassed from UIxPageFrame to - reduce code. - - * UI/Common/NSDictionary+URL.m ([NSDictionary -asURLParameters]): - returns a parameter string to add to a base URL. - - * UI/Common/NSString+URL.m ([NSString - -composeURLWithAction:parameters:andHash:useHash]): new method to - compose a complete URL from an object URL with parameters and an - optional '#' character. - - * UI/Common/UIxPageFrame.h: separated interface from - UIxPageFrame.m. - -2006-07-07 Wsourdeau Sourdeau - - * UI/Scheduler/UIxAppointmentEditor.m: returns yes to "isPopup"; - - * UI/WebServerResources/generic.js: added code to manage - selections within HTML containers. - - * UI/Common/UIxPageFrame.m ([UIxPageFrame -productJavaScriptURL]): - added method to determine the possible URL for a product-specific - javascript filename of the forme .js. - ([UIxPageFrame -hasProductSpecificJavaScript]): new method. - ([UIxPageFrame -isPopup]): new method to determine whether the - application navigator bar should be displayed (main page) or not - (popup page). - - * SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator - -LDAPCheckLogin:_loginpassword:_pwd]): new method to authenticate - the user through LDAP. - -2006-07-06 Wolfgang Sourdeau - - * The toolbar code from the MailerUI product was taken, renamed as - "UIxToolBar" and put into UI/Common. Toolbar plists were created - for the Contacts and Scheduler products and put in their respectir - Toolbars/ subdirectories. Finally, - UI/Templates/{UIxToolbarButton,UIxToolbarSeparator}.wox, and - UI/Common/{UIxToolbarButton,UIxToolbarSeparator}.m were removed - and an invocation to the UIxToolbar component was put at the top - of UI/Templaces/UIxPageFrame.wox. - - * UI/Common/UIxToolbar.m: new "isLastGroup" method to determine - within the templates whether a separator should be displayed. - - * UI/Common/UIxToolbar.m ([UIxToolbar -hasButtons]): new method - that returns NO if the toolbar is empty. - -2006-07-05 Wolfgang Sourdeau - - * UI/Templates/UIxPageFrame.wox: replaced central table with a DIV. - - * UI/Common/UIxToolbarSeparator.m, UI/Common/UIxToolbarButton.m: - new toolbar objects. - - * UI/Templates/UIxPageFrame.wox: use the exact html code as below. - - * UI/Templates/MailerUI/UIxMailMainFrame.wox: redone the - linkbanner as a DIV instead of a TABLE. - - * UI/MailerUI/UIxMailMainFrame.m [UIxMailMainFrame - showLinkBanner]: - returns 'YES' to request the display of the navigation bar between - applets. - -2006-06-15 ludovic@inverse.ca - - * It's now possible to set the default - domain using for email using the - SOGoDefaultMailDomain preference key. - -2006-06-15 ludovic@inverse.ca - - * Initial import of SOGo from trunk. - diff --git a/ChangeLog.old b/ChangeLog.old index 2ba8ca549..39edf5975 100644 --- a/ChangeLog.old +++ b/ChangeLog.old @@ -1,5655 +1,22644 @@ +2012-09-16 Francis Lachapelle -2005-03-03 Marcus Mueller + * UI/WebServerResources/dtree.js (s): when selecting a node, + also select the parent so the entire row is highlighted. - * UIxCalWeekOverview.wox: some pretty printing +2012-09-13 Ludovic Marcotte -2005-02-17 Marcus Mueller + * Fixed bug #1942. We now set the app name to "SOGo" + for the Samba/OpenChange application so wox are properly + found by SOPE. - * common.make: removed dependency to removed libSOGoLogic +2012-09-12 Ludovic Marcotte -2004-10-15 Marcus Mueller + * OpenChange/MAPIStoreTasksMessage.m: added a way to get + the PidTagBody of a task. This could be generalized eventually + with the code in MAPIStoreAppointmentWrapper. + * OpenChange/MAPIStoreMessage.m (-saveMessage): added a safety + check to avoid a crash when first accepting invitations on + a newly created profile. - * common.make: updates for inline compilation, removed compatibility - for gstep-make < 1.10 +2012-09-07 Francis Lachapelle -2004-09-07 Marcus Mueller + * UI/WebServerResources/SchedulerUI.js (tasksListCallback): list + the tasks in a table, along the events table. + (saveTabState): save which of the events or the tasks tab is + selected. - * README: Update with information regarding localization + * UI/WebServerResources/SOGoTabsController.js + (attachToTabsContainer): select and show the active tab if it's + defined. -2004-08-26 Marcus Mueller + * UI/WebServerResources/HTMLTableElement.js (getSelectedRows): + accept calling this method from a "tbody". - * Added "Mailer" product. + * UI/Scheduler/UIxCalMainView.m (-saveSelectedListAction): new + method to save the name of the selected tab (events or tasks). + (-eventsTabClass): return "active" if the selected tab was "events". + (-tasksTabClass): idem for "tasks". -2004-08-25 Marcus Mueller + * UI/Scheduler/UIxCalListingActions.m (-tasksListAction): added + more quick fields, including the calendar name, location, category + and a formatted version of the due date. - * Added "Contacts" product. +2012-09-07 Wolfgang Sourdeau -2004-08-10 Marcus Mueller + * OpenChange/MAPIStoreContext.m (CompleteURLFromMapistoreURI): + mapistore uris are already escaped. + (-getRootFolder:withFID:): all urls are now escaped, both in NSURL + and in NSString forms, whether they are used to return a mapitore + root uri or a indexing record. - * Added "Anais" product. + * OpenChange/NSString+MAPIStore.m + (-stringByReplacingPercentEscapesUsingEncoding:): we now return + nil for non-ascii strings. -2004-07-07 Marcus Mueller +2012-09-06 Wolfgang Sourdeau - * Replaced all occurrences of zidestoreui.css with uix.css + * OpenChange/NSString+MAPIStore.m + (-stringByReplacingPercentEscapesUsingEncoding:): reimplemented + method properly, to work-around the weird behaviour of the + original in GNUstep. -2004-06-30 Marcus Mueller + * OpenChange/MAPIStoreMailContext.m + (+listContextsForUser:withTDBIndexing:inMemCtx:): we escape the + url string of non-ascii folder names. + (+createRootSecondaryFolderWithFID:andName:forUser:): same as + above. + (+*): reverted all of the above. - * SOGoUI: moved over from Common to ease build dependencies. + * OpenChange/MAPIStoreMailVolatileMessage.m + (FillMessageHeadersFromProperties): build a recipient list for the + "from" field from the list stored in the value for "orig" in the + recipients dict. + (FillMessageHeadersFromProperties): now take a "withBcc" parameter + that defines whether the "bcc" field must be ignored in the header. + (_generateMailDataWithBcc:): the above code enables use to remove + the search and replace hack required to remove the "bcc" header in + the message text. -2004-06-30 Marcus Mueller +2012-09-05 Wolfgang Sourdeau - * Scheduler/UIxAppointmentEditor.m: improved -saveAction. Does - everything in a complete manner now - except for saving which isn't - done at all. + * OpenChange/MAPIStoreMailMessage.m (-getMessageData:inMemCtx:): + property return recipients from all the "from", "to", "cc" and + "bcc" header fields. -2004-06-30 Helge Hess + * OpenChange/MAPIStoreCalendarAttachment.m + (-getPidTagDisplayName:inMemCtx:): return an allocated value, + since returned values must be assigned to another parent. - * Scheduler/UIxAppointmentEditor.m: made the hack more hackish to work - on MacOSX +2012-09-04 Francis Lachapelle -2004-06-28 Marcus Mueller + * SoObjects/SOGo/WORequest+SOGo.m (-isMacOSXAddressBookApp): + recognize OS X 10.8 useragent. + (-isICal4): idem. - * Common/UIxComponent.[hm]: moved -ownMethodName here. +2012-08-28 Jean Raby - * Scheduler/UIxCalView.[hm]: removed -ownMethodName, moved to - UIxComponent (reuse). + * Scripts/openchange_cleanup.py: + New script to clean an openchange user profile - * Scheduler/UIxAppointmentView.[hm]: first "draft" of view component. - The look of OGo is resembled closely, but most features are still - missing. +2012-08-27 Francis Lachapelle -2004-06-28 Marcus Mueller + * SoObjects/Appointments/SOGoAptMailInvitation.m, + SoObjects/Appointments/SOGoAptMailNotification.m, + SoObjects/Appointments/SOGoAptMailDeletion.m, + SoObjects/Appointments/SOGoAptMailUpdate.m, + SoObjects/Appointments/SOGoAptMailICalReply.m, + SoObjects/Appointments/SOGoCalendarComponent.m: send HTML messages + instead of text/plain. - * Scheduler/GNUmakefile.preamble: links against libSOGoLogic now. + * UI/WebServerResources/generic.js (openMailTo): mail addresses + must now be separated by semi-colons and not commas. This allow + display names to contain commas. + + * UI/WebServerResources/SchedulerUI.js (tasksListCallback): prefix + tasks with a color box instead of changing the task's background color. + + * UI/Scheduler/UIxCalListingActions.m + (-_getStatusClassForStatusCode:andEndDateStamp::): set the + timezone of the due date to the user's timezone to properly + identify tasks due today. - * Scheduler/UIxAppointmentView.m, Scheduler/UIxAppointmentView.wox: - test of iCal object. +2012-08-27 Ludovic Marcotte + + * SoObjects/Appointments/iCalPerson+SOGo.m (mailAddress): + We now properly add double-quotes if we find a comma and + the person's name isn't already double-quoted. Fixes #1649 + +2012-08-24 Francis Lachapelle -2004-06-23 Marcus Mueller + * UI/MailPartViewers/UIxMailPartHTMLViewer.m (-_sanitizeContent): + fix invalid void tags to insure proper HTML decoding. Fixes #1581. + +2012-08-23 Ludovic Marcotte + + * SoObjects/Mailer/SOGoMailFolder.m - added safety + checks around the ACL code so we don't crash if + we can't read the ACLs. - * UIxCalMonthOverview.[m,wox]: completed month view. Turned out to - be much more difficult to improve with style sheets than expected. - Requires version 4.2.45 of WEExtensions. +2012-08-21 Wolfgang Sourdeau -2004-06-22 Marcus Mueller + * OpenChange/MAPIStoreFolder.m (-getPidTagAccessLevel) + (-getPidTagRights, -getPidTagAccessControlListData): fixed + methods. - * Refactoring: Renamed everything from OGo to UIx in order to avoid - nameclashes (happens on OSX related to NGBundleManager) + * OpenChange/MAPIStoreMessage.m + (-getPidTagDeleteAfterSubmit:inMemCtx:): moved from + MAPIStoreMailMessage. - * Refactoring 2: Moved methods from UIxWeekOverview to UIxCalView. + * OpenChange/MAPIStoreContactsMessage.m + (-getPidTagAlternateRecipientAllowed:inMemCtx:) + (-getPidTagMessageFlags:inMemCtx:) + (-getPidTagDeleteAfterSubmit:inMemCtx:): new getters. - * Highlighting in UIxWeekOverview works now. + * OpenChange/MAPIStoreGCSFolder.m + (-setChangeKey:forMessageWithKey:): removed useless method. + (-updateVersionsForMessageWithKey:withChangeKey:): set the change + key provided by the client as member of the predecessor + changelist, but never as the actual change key for the object. + This hopefully fixes the issue where Outlook deletes objects that + have a different change list than what they expect. -2004-06-22 Helge Hess +2012-08-17 Wolfgang Sourdeau - * Common/GNUmakefile.preamble: fixed linking for OGo gstep-make + * OpenChange/MAPIStoreCalendarMessage.m + (-getPidTagMessageClass:inMemCtx:): return + "IPM.Schedule.Meeting.Request" when the owner user is an attendee. -2004-06-21 Helge Hess + * OpenChange/MAPIStoreAppointmentWrapper.m + (-getPidLidAppointmentNotAllowPropose:inMemCtx): new getter that + always return "YES", in order to disallow counter proposals. - * Scheduler/OGoCalWeekOverview.m: fixed syntax errors + * OpenChange/MAPIStoreContext.m (-getPath:ofFMID:inMemCtx:): + properly escape urls containing non-ascii chars. + (-getRootFoldeR:withFID:): idem. -2004-06-18 Marcus Mueller +2012-08-16 Wolfgang Sourdeau - * Implemented proper calendar in week overview. Highlighting isn't - enabled, yet. + * OpenChange/MAPIStoreCalendarMessage.m + (-getMessageData:inMemCtx:): when a "recipients" records is + available in the properties, we must return that list instead of + the list of attendees since it will be the most recent one. + (_fixupAppointmentObjectWithUID::): when an appointment had been + deleted, we first attempt to resurrect it from the database before + reinstantiating it, which allows the event synchronisation to + happen properly in [SOGoAppointmentObject + updateContentWithCalendar:fromRequest:]. -2004-06-18 Marcus Mueller + * OpenChange/MAPIStoreMapping.m (_updateFolderWithURL:withURL:): + we retain and release "oldURL" to avoid releasing it when it + is replaced in the list of urls to modify. - * Common/OGoComponent.[hm]: new component which serves as a base - component for calendar components now. Knows how to deal with - queryParameters and offers url construction method(s). + * OpenChange/MAPIStoreAppointmentWrapper.m + (-getPidTagInternetCodepage:inMemCtx:): new getter for a property + that is sometimes requested. + (-getPidTagBody:inMemCtx:): we return an empty string when no + "description"/"comment" is actually present. - * All existing components have been rewritten to use queryParameters - instead of hardcoded strings where this is feasible. This provides - future extensibility and flexibility. +2012-08-15 Wolfgang Sourdeau - * Handling of dates has been fixed to center around the use of a - 'day' parameter. startDate/endDate are coupled to this, but - don't override it as it's the duty of the individual view to set - its (feasible) ranges accordingly. The new behaviour is noticable - in the calendar selection tabview instantly, as it now replicates - what OGo does. + * OpenChange/MAPIStoreMailFolder.m (-addProperties:): make use of + the new methods below when a mail folder has been renamed, as this + operation affects the url of mail objects. -2004-06-16 Marcus Mueller + * OpenChange/SOGoMAPIDBObject.m (-setNameInContainer): update the + object record in the database to reflect the change of folder + name. - * Common/OGoAppNavView.m: construct URL correctly. + * OpenChange/MAPIStoreMailContext.m (-updateURLWithFolderName): + change the folder name used in the context url to use the new + folder name after a rename operation, so that further invocations + of -url will return the right url. - * Common/OGoPageFrame.m: display login correctly. + * OpenChange/MAPIStoreMailFolder.m + (-moveCopyToFolder:withNewName:isMove:isRecursive:): implemented + IMAP-based copy operation, for speed. + (-addProperties): restored the ability to rename IMAP folders by + properly updating the fid/url mapping with our new methods. - * Common/calendar.css: cosmetic changes. +2012-08-14 Wolfgang Sourdeau - * Scheduler/OGoCalSelectTab.m: always display mondayOfWeek. + * OpenChange/MAPIStoreFolder.m (-moveToFolder:withNewName:): + renamed to "moveCopyToFolder:withNewName:isMove:isRecursive:", + with the ability to specify whether the operation is a move or + copy operation and whether it is recursive or not (for copy). - * Scheduler/OGoCalBackForthNavView.m: created. + * OpenChange/MAPIStoreSOGo.m (sogo_folder_move_folder): if + "target_folder_object", we do not attempt to access the + corresponding instance member. -2004-06-16 Marcus Mueller + * OpenChange/MAPIStoreMailFolder.m (- + moveCopyMessagesWithMIDs:andCount:fromFolder:withMIDs:andChangeKeys:wantCopy:): + do not attempt to access targetChangeKeys when NULL, to avoid a + SEGFAULT. - * Common/zidestoreui.css: new style for button_auto. +2012-08-14 Jean Raby - * Scheduler/OGoCalView.[hm]: API for completing hrefs with necessary - query parts. + * OpenChange/GNUmakefile: use version_info[{0,1}] instead of + version_info.{major,minor} when checking for legacy version + of python since these named attributes where added in python2.7 - * Scheduler/OGoCalWeekView.m: bugfix for startDate. +2012-08-13 Wolfgang Sourdeau - * Scheduler/product.plist: added still missing views -> point to - weekoverview for the time being. - -2004-06-15 Marcus Mueller + * OpenChange/MAPIStoreSOGo.m (sogo_properties_get_uri): removed + useless backend method. - * Common/UIxTabView.m: removed class from
tag, removed rendering - of headerFooter (what's that good for anyways?) + * OpenChange/MAPIStoreFolder.m (-createFolder:withRow:andFID:): + append a "/" to the new folder url when registering with the + url/id mapper. - * Several resources which resolved to wrong products added statically - in templates. + * OpenChange/MAPIStoreDBFolder.m (-moveToFolder:withNewName:): + implemented method. - * Cosmetic changes in templates. + * OpenChange/MAPIStoreMailFolder.m (-moveToFolder:withNewName:): + invoke changePathTo: on the dbFolder. -2004-06-14 Helge Hess + * OpenChange/SOGoMAPIDBFolder.m (-changePathTo:): overriden method + in order to update children records too. - * Scheduler/OGoCalMonthOverview.wox: added missing rsrc namespace + * OpenChange/SOGoMAPIDBObject.m (-performBatchSQLQueries:) new + method to perform void queries under a transaction. + (-changePathTo:) new method that updates the references for the + object record in the dbfs table. -2004-06-14 Helge Hess + * SoObjects/SOGo/NSString+Utilities.m + (-stringByReplacingPrefix:withPrefix:): new self-explicit method. - * Common/common.h: fixed a gcc 3.4 warning + * OpenChange/SOGoMAPIDBFolder.m + (-childKeysOfType:includeDeleted:matchingQualifier:andSortOrderings:): + records now have a c_parent_path column in order to avoid fetch + the children of children due to the nature of our "LIKE" clause. -2004-06-14 Helge Hess + * OpenChange/SOGoMAPIDBObject.m (-save): records now have a + c_parent_path. - * added aggregate project for UI-X + * OpenChange/MAPIStoreMailFolder.m (-supportsSubFolders): + overriden method to return YES. -2004-06-14 Marcus Mueller +2012-08-12 Wolfgang Sourdeau - * Common/calendar.css: new date_label (unused) + * OpenChange/MAPIStoreMailFolder.m (-moveToFolder:withName:): if + the new name is not provided (unlikely), the computed new name + must not have the "folder" prefix. + We now also make use of -[MAPIStoreMapping updateID:withURL:] to + change the references in the mapping database. - * Scheduler/OGoCalSelectTab.m: finished all labels + * OpenChange/MAPIStoreFolder.m (-objectId): folder keys always end + with a "/" by convention. - * Scheduler/OGoCalDateLabel.m, Scheduler/OGoCalDateLabel.wox: new - component for rendering the correct date label based on startDate, - endDate and selection + * OpenChange/MAPIStoreMapping.m (-updateID:withURL:): new method + that perform a change of url on container and leaf entries. - * Scheduler/OGoCalMonthView.m: prev/next month corrected +2012-08-10 Wolfgang Sourdeau - * Scheduler/OGoCalMonthOverview.wox: uses date label and tabs now + * OpenChange/MAPIStoreSOGo.m (sogo_properties_get_uri): new + backend method. - * Scheduler/OGoCalWeekOverview.wox: completed layout +2012-08-10 Ludovic Marcotte - * Scheduler/GNUmakefile: new component added + * Changed OpenChange/SOGoMAPIDBObject.m so we use + GNUstep's binary encoding - which is an order or + magnitude faster at encoding data than any other formats. -2004-06-14 Marcus Mueller +2012-08-10 Wolfgang Sourdeau - * Common/UIxTabView.[hm]: more stylesheet support via headerStyle - and bodyStyle bindings. - - * Common/zidestoreui.css: styles for tabs, resembling OGo look. + * OpenChange/MAPIStoreSOGo.m (sogo_folder_move_folder) + (sogo_folder_copy_folder): the object on which the backend method + is invoked is now the folder being moved rather than its parent. - * Scheduler/OGoCalSelectTab.m: implemented dateLabel (for testing). +2012-08-09 Wolfgang Sourdeau - * Scheduler/OGoCalSelectTab.wox: corrected selection binding namespace. + * OpenChange/MAPIStoreMailFolder.m + (-moveFolderWithFID:fromFolder:withNewName:): first implementation + for IMAP folders. -2004-06-08 Helge Hess + * OpenChange/MAPIStoreSOGo.m (sogo_folder_move_folder) + (sogo_folder_copy_folder): new backend methods. + (sogo_folder_move_folder): do not instantiate an NSString from a + NULL "new_folder_name" parameter. - * Scheduler/NOTES: added class hierarchy +2012-08-08 Wolfgang Sourdeau - * */common.h, GNUmakefile.preamble.: fixed for OSX compile + * OpenChange/MAPIStoreCalendarMessage.m (-save): generate a + "nameInContainer" for the new object iif it is not set yet. If + set, we generate a new UID from it instead. -2004-06-08 Marcus Mueller + * OpenChange/MAPIStoreMessage.m (-saveMessage): make sure that the + PidTagChangeKey and PidTagChangeNumber props are no longer set in + the properties dict after the save occurred. - * Common/images: added a bunch of images from OGo + * OpenChange/MAPIApplication.m (-shouldSetupSignalHandlers): + overriden method by returning "NO". -2004-06-07 Marcus Mueller +2012-08-07 Wolfgang Sourdeau - * Custom/GNUmakefile: changed ZIDESTORE to include installed version - (ZideStore12). Removed post install hooks. + * SoObjects/Appointments/SOGoAptMailNotification.m (-setupValues): + test whether each value is non-nil before adding it to the + dictionary. - * Custom/GNUmakefile.postamble: new file, post install hooks and - xmllint for .wox. + * OpenChange/MAPIStoreMailVolatileMessage.m (-save): restored + registration of message url when saved. -2004-06-07 Marcus Mueller +2012-08-06 Wolfgang Sourdeau - * Scheduler/GNUmakefile: changed ZIDESTORE to include installed version - (ZideStore12). Removed post install hooks. + * OpenChange/MAPIStoreRecurrenceUtils.m (-[iCalRecurrenceRule + fillRecurrencePattern:withEvent:inTimeZone:inMemCtx:]): fixed a + crash occurring when the exception has no recurrence-id and + ignore the specific occurrence. - * Scheduler/GNUmakefile.postamble: post install hooks updated for - GNUSTEP_BUILD_DIR. + * OpenChange/MAPIStoreMailVolatileMessage.m (MakeMessageBody): + take "attachmentParts" parameter, deduced from the ivar with the + corresponding name. -2004-06-03 Helge Hess + * OpenChange/MAPIStoreSOGoObject.m (-objectId): force generation + of objectId by parent, whether it is a folder or not. - * Scheduler/OGoCalWeekOverview.m: moved navigation URL generation to - superclass (now generic because we use the 'ownMethodName'). Could - even be moved to OGoCalView? - - * Scheduler/OGoCalMonthView.m: added next/prev month URL generation - methods, calculate startdate from form value +2012-08-07 Francis Lachapelle - * Scheduler/OGoCalView.m: added -ownMethodName method to return the - last path component of the request URL (the SOPE method), eg - 'weekoverview' for OGoCalWeekView, added - -dateNavigationURLWithNewStartDate: method to calculate 'startDate' - URLs (should be improved to include existing query parameters!) + * UI/Contacts/UIxListEditor.m (-setReferencesValue:): check for + duplicates in the new list, not in the previous version. - * Scheduler/OGoCalWeekOverview.m: minor tweaks ;-) +2012-08-03 Jean Raby -2004-06-03 Marcus Mueller + * SoObjects/SOGo/LDAPSource.m (changePasswordForLogin): + if userPasswordAlgorithm was not set or was set to "none", + use the plaintext password directly instead of using '{none}plaintext' + which isn't valid. - * Scheduler/OGoCalWeekView.m: construct startDate from formValue, - otherwise use current week's monday as startDate. +2012-08-02 Ludovic Marcotte - * Scheduler/OGoCalWeekOverview.wox: switch back/forth + * OpenChange/MAPIStoreUserContext.m (-_readUserPassword:) + We now read per-user passwords instead of relying on + a global file. - * Scheduler/OGoCalWeekOverview.m: provide URLs for switching back/forth - weekoverview. +2012-07-31 Jean Raby - * Scheduler/OGoCalView.[hm]: methods for converting dates into strings - and vice versa. + * sogo.spec: + Treat logrotate file as a config file (noreplace) - * Scheduler/OGoAppointmentView.m, Scheduler/OGoCalView.m: fixed include +2012-07-31 Francis Lachapelle - * ChangeLog: created -2005-07-30 Helge Hess + * SoObjects/SOGo/SOGoSieveManager.m + (-sieveScriptWithRequirements:): filters must not be conditional + to each other. - * v0.9.22 +2012-07-26 Wolfgang Sourdeau - * UIxKolabPartContactViewer.m: added accessors for multi-value fields + * OpenChange/iCalTimeZone+MAPIStore.[hm]: new category module. + (-asTimeZoneStructInMemCtx:): new method that returns a struct + TimeZoneStruct as a binary blob from an iCalTimeZone object. - * UIxKolabPartViewer.m: added item + * OpenChange/MAPIStoreAppointmentWrapper.m + (-getPidLidTimeZoneStruct:inMemCtx:): new property getter that + returns the equivalent of the iCalTimeZone of the current event. - * UIxKolabPartViewer.m: cache parsed DOM document (v0.9.21) +2012-07-25 Wolfgang Sourdeau - * v0.9.20 - - * UIxMailPartViewer.m: added ability to use a fallback string encoding - in case the default one or the one specified in the content-type did - fail (this can happen with Outlook iCal mails ...). + * OpenChange/MAPIStoreDBFolder.m (-createFolder:withFID:andKey:): + invoke "reloadIfNeeded" on the created folder object in order to + initialize it. - * UIxMailPartICalViewer.m: hardened against missing content data, use - Latin-1 as a fallback encoding in case the part encoding didn't work - out. - - * prepared MIME part viewers for Kolab XML types - - * UIxMailRenderingContext.m: prepared some support for Kolab types in - IMAP4 (v0.9.19) - -2005-07-27 Helge Hess - - * English.lproj/Localizable.strings: added a missing semicolon - (v0.9.18) - -2005-07-23 Helge Hess +2012-07-25 Francis Lachapelle - * UIxMailPartICalViewer.m: fixed include path for new hierarchy - (v0.9.17) + * SoObjects/Mailer/SOGoMailFolder.m + (-deleteUIDs:useTrashFolder:inContext:): fixed comparison with the + trash folder name when using subfolders (ex: INBOX/Trash). -2005-07-18 Helge Hess + * SoObjects/SOGo/SOGoSieveManager.m + (-updateFiltersForLogin:authname:password:account:): write the + filters before the vacation auto-reply. - * UIxMailRenderingContext.m: show text/plain and text/html attachments - which have "filename" set in the content-disposition using the link - viewer (#1468) (v0.9.16) + * SoObjects/Appointments/SOGoCalendarComponent.m + (-sendEMailUsingTemplateNamed:forObject:previousObject:toAttendees:withType:): + fixed the from header when the updated event has no mode organizer. -2005-07-18 Helge Hess + * UI/WebServerResources/MailerUI.js (initMailer): define default + columns widths when not set. - * UIxMailRenderingContext.m: map multipart/report mimetype to use the - multipart/mixed viewer, map message/delivery-status mimetype to use - the link viewer (v0.9.15) +2012-07-24 Wolfgang Sourdeau - * v0.9.14 + * OpenChange/MAPIStoreUserContext.m + (-initWithUsername:andTDBIndexing:): attempt to read the user + password from a property list. - * UIxMailPartICalViewer.m: replaced some methods with label bindings + * OpenChange/samba-get-config.py: new utility taking a samba + configuration variable and prints the value on stdout - * English.lproj/Localizable.strings: added more strings +2012-07-24 Francis Lachapelle - * UIxMailPartICalViewer.m: added -attendeeStatusLabel to produce a - readable and localized part-stat (v0.9.13) + * UI/WebServerResources/UIxPreferences.js (savePreferences): + validate the email address of the sender mail and reply-to fields. -2005-07-18 Helge Hess +2012-07-23 Jean Raby + * debian*/sogo.logrotate: + drop distro specific log rotate scripts + * debian*/sogo.install + * debian*/rules : + Use the logrotate script from Scripts/. - * UIxMailPartICalViewer.m: added code to support iMIP REPLY messages - (v0.9.12) +2012-07-20 Ludovic Marcotte -2005-07-15 Helge Hess + * UI/MailPartViewers/UIxMailRenderingContext.m + (_shouldDisplayAsAttachment:): refactored to consider + the "bodyId" parameter only for non text/* parts. - * v0.9.11 - - * added UIxMailPartICalAction for calendar part related link actions - (no actions implemented yet) - - * UIxMailPartViewer.m: added preferred extensions for iCalendar and - vCard mime types, moved in -pathToAttachment from - UIxMailPartLinkViewer (returns a nice download-link), added - -pathToAttachmentObject method (returns a plain link to the part - SoObject) - - * UIxMailPartLinkViewer.m: moved -pathToAttachment method to baseclass +2012-07-20 Francis Lachapelle - * UIxMailPartICalViewer.m: added method to retrieve the authorative - event (DB before mail), added a method to return an organizer display - name (with appropriate fallbacks) (v0.9.10) + * UI/WebServerResources/MailerUI.js (onEmailTo): append the email + address from the href attribute if it doesn't appear in the link content. - * UIxMailPartICalViewer.m: rewrote not to use SOGoAppointment and to - use iCalCalendar instead (v0.9.9) + * UI/MailPartViewers/UIxMailPartHTMLViewer.m + (-startElement:namespace:rawName:attributes:): don't skip "mailto:" + href. - * UIxMailSizeFormatter.m, UIxMailPartMixedViewer.m, - UIxMailPartICalViewer.m, UIxMailPartAlternativeViewer.m, - UIxMailPartViewer.m: fixed gcc 4.0 warnings (v0.9.8) + * SoObjects/Appointments/SOGoAptMailReceipt.m (aptSummary-): new + method that returns a properly formatted string of the event title + with respect to the current operation (creation/deletion/update). -2005-07-14 Helge Hess +2012-07-20 Wolfgang Sourdeau - * UIxMailPartICalViewer.m: properly reset part caches when the - part-path changes, added methods to check whether the event is - already stored in the calendar of the login-user, added methods to - check whether the login-user is the organizer (v0.9.7) + * OpenChange/NSObject+MAPIStore.m (-getSMTPAddrType:inMemCtx:): + new helper getter. -2005-07-08 Helge Hess + * OpenChange/MAPIStoreSOGo.m + (sogo_message_attachment_create_embedded_message): new backend method. - * UIxMailPartViewer.m: added '8bit' as a known MIME encoding (v0.9.6) + * OpenChange/NSObject+MAPIStore.m + (+fillAvailableProperties:withExclusions:): new method that fills + an existing array of properties with properties existing in + another class, as long as they are not listed in the array of + exclusions. -2005-07-06 Helge Hess + * OpenChange/MAPIStoreObject.m (-init): assigned a mutable array + to "proxies" + (-canGetProperty:): test the proxies for the availability of + properties so that -getAvailableProperties:inMemCtx: can return an + accurate result. - * UIxMailRenderingContext.m: fixed a bug when rendering nested - multiparts (cannot be cached) (v0.9.5) + * OpenChange/MAPIStoreMessage.m (-getPidTagSubject:inMemCtx:): now + compute the return value based on PidTagNormalizedSubject and + PidTagSubjectPrefix as PidTagSubject is never actually set from + the client. -2005-06-24 Helge Hess +2012-07-19 Wolfgang Sourdeau - * UIxMailPartLinkViewer.m: fixed an exception on Cocoa when a mail is - composed from just the HTML body (v0.9.4) + * OpenChange/MAPIStoreObject.m (-nameInContainer): moved method + from MAPIStoreSOGoObject and made mandatory for subclasses. + (-url): new methed moved from MAPIStoreSOGoObject. -2005-02-21 Helge Hess + * OpenChange/MAPIStoreAppointmentWrapper.m: now a subclass of + MAPIStoreObjectProxy. - * prepared HTML and iCal mail part viewers (0.9.3) + * OpenChange/MAPIStoreCalendarMessage.m + (-initWithSOGoObject:inContainer:): we now register our + appointment wrapper as a proxy. -2005-02-20 Helge Hess + * OpenChange/MAPIStoreObject.m (-addProxy:): new method that keeps + proxy objects in the new "proxies" ivar. + (-getProperty:withTag:inMemCtx:): added code that pass the request + to the available object proxies, when the property getters have + not been found in the local class. - * moved in UIxMailSizeFormatter (v0.9.2) + * OpenChange/MAPIStoreObjectProxy.[hm]: new class module that + provide a facility for providing property getters in the name of + another class, working around the fact that Objective-C does not + provide multiple-inheritance. -2005-02-18 Helge Hess + * OpenChange/NSObject+MAPIStore.m + (+getAvailableProperties:inMemCtx:) + (-getAvailableProperties:inMemCtx:, canGetProperty:): methods + moved from MAPIStoreObject.m - * created ChangeLog -2005-08-01 Helge Hess +2012-07-18 Wolfgang Sourdeau - * product.plist: moved security declarations of core classes to the - +initialize method of the classes, - add SOGo application object methods in a category (was a class) - (v0.9.2) + * OpenChange/MAPIStoreCalendarFolder.m (-createMessage): attach a + WOContext to the newEntry in order to enable page templates + resolution when notifications are sent. - * created UI/MainUI product bundle from sources in Main (v0.9.1) + * OpenChange/MAPIApplication.m (-init): a WEResourceManager is + setup for the application so that page templates can be properly + be initialized. -2005-07-30 Helge Hess + * OpenChange/MAPIStoreDBMessage.m (-objectVersion): shift the + version number by 16 bits, instead of doing it in -save. + (-save): don t swap the bytes of the version number as it would + return a wrong change number and a wrong change key for DB objects. - * mailer.js: use standard 'view' instead of 'tb.view' method +2012-07-20 Wolfgang Sourdeau -2005-07-22 Helge Hess + * OpenChange/NSObject+MAPIStore.m (-getSMTPAddrType:inMemCtx:): + new helper getter. - * mailer-toolbar.css: fixed send and attach buttons to use 24x24 images + * OpenChange/MAPIStoreSOGo.m + (sogo_message_attachment_create_embedded_message): new backend method. -2005-07-22 Marcus Mueller + * OpenChange/NSObject+MAPIStore.m + (+fillAvailableProperties:withExclusions:): new method that fills + an existing array of properties with properties existing in + another class, as long as they are not listed in the array of + exclusions. - * mailer.js: added labels for error messages + * OpenChange/MAPIStoreObject.m (-init): assigned a mutable array + to "proxies" + (-canGetProperty:): test the proxies for the availability of + properties so that -getAvailableProperties:inMemCtx: can return an + accurate result. - * mailer.js: added validation of recipients + * OpenChange/MAPIStoreMessage.m (-getPidTagSubject:inMemCtx:): now + compute the return value based on PidTagNormalizedSubject and + PidTagSubjectPrefix as PidTagSubject is never actually set from + the client. - * layout2or3_xlib.js: added (currently used by UIxMailToEditor for - height calculation) - - * layout2or3_xlib.txt: added, contains documentation/license for - layout2or3_xlib.js + * SoObjects/Appointments/SOGoAppointmentFolder.m + (_appendCycleException:firstInstanceCalendarDateRange:fromRow:forRange:withTimeZone:toArray:): + return immediately if the occurrence does not have a valid + recurrence-id. + +2012-07-20 Francis Lachapelle + + * UI/WebServerResources/MailerUI.js (onEmailTo): append the email + address from the href attribute if it doesn't appear in the link content. + + * UI/MailPartViewers/UIxMailPartHTMLViewer.m + (-startElement:namespace:rawName:attributes:): don't skip "mailto:" + href. + + * SoObjects/Appointments/SOGoAptMailReceipt.m (aptSummary-): new + method that returns a properly formatted string of the event title + with respect to the current operation (creation/deletion/update). + +2012-07-19 Wolfgang Sourdeau + + * OpenChange/MAPIStoreObject.m (-nameInContainer): moved method + from MAPIStoreSOGoObject and made mandatory for subclasses. + (-url): new methed moved from MAPIStoreSOGoObject. + + * OpenChange/MAPIStoreAppointmentWrapper.m: now a subclass of + MAPIStoreObjectProxy. + + * OpenChange/MAPIStoreCalendarMessage.m + (-initWithSOGoObject:inContainer:): we now register our + appointment wrapper as a proxy. + + * OpenChange/MAPIStoreObject.m (-addProxy:): new method that keeps + proxy objects in the new "proxies" ivar. + (-getProperty:withTag:inMemCtx:): added code that pass the request + to the available object proxies, when the property getters have + not been found in the local class. + + * OpenChange/MAPIStoreObjectProxy.[hm]: new class module that + provide a facility for providing property getters in the name of + another class, working around the fact that Objective-C does not + provide multiple-inheritance. + + * OpenChange/NSObject+MAPIStore.m + (+getAvailableProperties:inMemCtx:) + (-getAvailableProperties:inMemCtx:, canGetProperty:): methods + moved from MAPIStoreObject.m + +2012-07-18 Wolfgang Sourdeau + + * OpenChange/MAPIStoreCalendarFolder.m (-createMessage): attach a + WOContext to the newEntry in order to enable page templates + resolution when notifications are sent. + + * OpenChange/MAPIApplication.m (-init): a WEResourceManager is + setup for the application so that page templates can be properly + be initialized. + + * OpenChange/MAPIStoreDBMessage.m (-objectVersion): shift the + version number by 16 bits, instead of doing it in -save. + (-save): don t swap the bytes of the version number as it would + return a wrong change number and a wrong change key for DB objects. + +2012-07-18 Ludovic Marcotte + + * SoObjects/Appointments/SOGoAppointmentObject.m + (_setupResponseInRequestCalendar:): we now return the + calendar read from the database and not use the one + from the request anymore, as it can override properties + other than participation status changes. + +2012-07-18 Jean Raby + * Tests/Integration/config.py.in: New config parameter: webCalendarURL + * Tests/Integration/webdavlib.py(HTTPPOST,HTTPGET): + Allow cookies in post and get requests. + * Tests/Integration/test-ui-posts.py: New test class + Currently contains only one test case which exercises addWebCalendar + + * SoObjects/Appointments/GNUmakefile: + use -Wl,--no-as-needed when linking. Fixes #1863 + + * Scripts/sql-update-1.3.16_to_1.3.17-mysql.sh + * Scripts/sql-update-1.3.16_to_1.3.17.sh: + New scripts to expand c_cycleinfo to mediumtext or varchar(1000000) + The field was expanded around 1.3.3. + See http://www.sogo.nu/bugs/view.php?id=1848 + +2012-07-16 Wolfgang Sourdeau + + * Tests/Integration/webdavlib.py (WebDAVQuery.set_response): make + use of xml.etree.cElementTree for speed and avoid using a + cStringIO altogether by directly passing the content string. + + * Tests/Integration/test-davacl.py (DAVCalendarSuperUserAclTest._getEvent) + (DAVCalendarAclTest._getEvent): ensure that the resulting event + does not contain any "\r" char as the XML parser would anyway + strip them. + +2012-07-13 Wolfgang Sourdeau - * mailer-compose.css: fixed padding for table entries + * SoObjects/Appointments/SOGoAppointmentObject.m + (-updateContentWithCalendar:fromRequest:): new method spawned from + the previous incarnation of PUTRequest:, designed to centralize + all the processed performed on an iCalendar instance, new or + derived from the original. + (-changeParticipationStatus:withDelegate:forRecurrenceId:): + reorganized the method workflow by not testing "calendar" as it is + guaranteed to be returned. Also, we save the iCalendar object from + here, as we cannot invoke the method above, which would reinvoke + this method in loop in the current state of the code. - * mailer.js: moved layout2or3_xlib JavaScript to own file + * SoObjects/Appointments/SOGoCalendarComponent.m + (-lookupOccurrence:): now a virtual method forcing the use by + subclasses of the new methods below. + (-saveCalendar:): new method that enables the saving of an + iCalendar object. -2005-07-21 Helge Hess + * SoObjects/Appointments/iCalCalendar+SOGo.m: new category module. + (-eventWithRecurrenceId, -todoWithRecurrenceId): new method that + return as recurrence based on the id passed as parameter. - * mailer.css: moved compose styles to own file, mailer-compose.css + * Tests/Integration/test-caldav-scheduling.py + (CalDAVSchedulingTest.setUp): use the proper password for + attendee1_delegate. - * mailer-toolbar.css: fixed positioning for 24x24 icons +2012-07-12 Jean Raby - * mailer.css: moved toolbar to own file, mailer-toolbar.css + * SoObjects/Mailer/SOGoMailForward.m (from, to, cc, reply-to): + mailHeaders returns an array if there are multiple headers of the same type. + Handle this case to correctly show multiple from, to, cc and reply-to headers + in mail replies/forwards instead of crashing. -2005-07-21 Marcus Mueller +2012-07-11 Ludovic Marcotte - * tbtb_anais.png: new icon for Anais + * Finished the implementation and testing of the two + new defaults. Also added documentation in the SOGo Installation + and Configuration Guide. - * mailer.css: added tbicon_anais for Anais icon + * Updated UI/Templates/SchedulerUI/UIxCalendarProperties.wox to not + show the notification options if it's a web calendar or if the active + user isn't the owner of the calendar. -2005-07-21 Helge Hess + * Added strings to translate and cleaned up the template to send + HTML mails instead of text/plain. - * mailer.js: fixed a Linux Firefox issue with using POST in - XMLHttpRequest (must pass an empty string for a send, not 'null') +2012-07-10 Wolfgang Sourdeau - * mailer.js: fixed a bug with calling the opener on errors + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-davNotifyOnPersonalModifications) + (-setDavNotifyOnPersonalModifications:) + (-davNotifyOnExternalModifications) + (-setDavNotifyOnExternalModifications:) + (-davNotifyUserOnPersonalModifications) + (-setDavNotifyUserOnPersonalModifications:) + (-davNotifiedUserOnPersonalModifications) + (-setDavNotifiedUserOnPersonalModifications:): new dav accessors. -2005-07-20 Helge Hess - * mailer.js: use POST instead of GET for toggling the mail read flag, - aded uixDeleteSelectedMessages() function to bulk delete mails from - the selection + * SoObjects/SOGo/SOGoObject.m (-davBooleanForResult:): new method + that returns a valid DAV boolean from a BOOL. + (-isValidDAVBoolean:): new method that validates the value as a + DAV boolean. + (-resultForDAVBoolean:): new method that returns a BOOL from a DAV + boolean. - * UIxAppointmentEditor.js: properly use getDate() instead of getDay() - for date comparison (#1478) +2012-07-09 Ludovic Marcotte - * UIxAppointmentEditor.js: properly validate startdate/enddate so that - startdate is always before the enddate (#1478) + * Dropped old templates (SOGoAptMailDeletionReceipt.wox + SOGoAptMailInvitationReceipt.wox and SOGoAptMailUpdateReceipt.wox) + which are in fact replaced by SOGoAptMailReceipt.wox. File added + to the repository. -2005-07-18 Helge Hess + * Dropped SOGoAppointmentSendEMailReceipts - * generic.js: added regex for email field checks + * Added two new domain defaults: SOGoNotifyOnPersonalModifications + and SOGoNotifyOnExternalModifications. They allow users to be notified + when modifying their own calendars or when someone else to it. These + defaults are over-writable by users from their calendar properties window. - * uix.css: added .homepagefont class (as it was used in the deprecated - uix.css inside Common + * Implemented the code related to the two new defaults together with a + third option - which is to notify a specific person when one modifies + his/her calendar. This commit is partial as more testing is required + and some code changes to trigger the right notifications. -2005-07-12 Helge Hess +2012-07-09 Jean Raby - * mailer.js: increased size of compose panel by 40px to avoid scrolling - when recipients are added + * Tools/SOGoToolUserPreferences.m: + use printf() instead of NSLog to print out user preferences. + Makes it easier to grep. -2005-03-02 Helge Hess + * UI/WebServerResources/generic.js (onSearchFormSubmit): + Restore behavior of a single dot (.) in the search field (wildcard search) - * generic.js: fixed a JS bug + * UI/WebServerResources/SchedulerUI.js (onMenuRawEvent, onMenuRawTask): + New callback to show the event/task content from the menu -2005-02-24 Helge Hess + * UI/Scheduler/UIxComponentEditor.m (rawAction): + New method that returns the object's raw content in a WOResponse. - * generic.js: added query dict parsing and generation functions + * UI/Templates/SchedulerUI/UIxCal{Day,Month,Main,Week}View.wox: + New contextual menu item: Show Raw Source - * created ChangeLog -2005-07-30 Helge Hess + * UI/WebServerResources/ContactsUI.js (onMenuRawContact): + Rework to use calendar/ics/raw - * v0.9.173 + * UI/Contacts/UIxContactFolderActions.m (rawAction): + Removed / moved to UI/Contacts/UIxContactActions.m - * product.plist: removed tb.view methods (just use 'view' instead) + * UI/Contacts/UIxContactActions.m (rawAction): + New method that returns the object's raw content in a WOResponse. -2005-07-26 Helge Hess + * UI/Templates/ContactsUI/UIxContactFoldersView.wox: + Show vCard content -> Show Raw Source - * UIxMailTree.m: improved block debugging (v0.9.172) -2005-07-23 Helge Hess +2012-07-05 Jean Raby - * v0.9.171 + * UI/WebServerResources/generic.js (openGenericWindow): + New method that opens a simple new window. - * UIxMailMainFrame.m: disabled Agenor app banner + * UI/WebServerResources/ContactsUI.js (onMenuRawContact): + New callback to show the vCard content from the menu. - * UIxMailToSelection.m, UIxMailFormatter.m: fixed gcc 4.0 warnings + * UI/WebServerResources/ContactsUI.js (onContactMenuPrepareVisibility): + Enable the export and raw functions only on vcards contacts. -2005-07-22 Helge Hess + * UI/Templates/ContactsUI/UIxContactFoldersView.wox: + New contextual menu item: Show vCard content - * v0.9.170 + * UI/Contacts/UIxContactFolderActions.m (rawAction): + New method that returns the raw contact data for all the contact uids provided - * UIxMailEditor.m: the mail editor now presets the proper 'from' based - on the 'account' query parameter - - * UIxMailEditorAction.m: the compose action now adds the current - account as a query parameter when calling the compose panel - -2005-07-22 Marcus Mueller + * UI/Contacts/UIxContactView.m (secondaryEmail): + function renamed to secondaryEmails. It now returns all addresses + instead of the first one found in the vcard. - * English.lproj/Localizable.strings: added error labels for JavaScript - (v0.9.169) + * UI/Templates/ContactsUI/UIxContactView.wox: + Show all addresses returned from secondaryEmails. + This still need some css tweaks. -2005-07-22 Helge Hess +2012-07-01 Wolfgang Sourdeau - * UIxMailEditor.m: implemented identity based Sent folders (tied to - 'from' email address). The old url-attached Sent folder can be - enabled using 'SOGoUseLocationBasedSentFolder') (v0.9.168) + * OpenChange/MAPIStoreRecurrenceUtils.m + (-setupRecurrenceWithMasterEntity:fromRecurrencePattern:): add + exception dates to master entity based on the + "DeletedInstanceDates" member of the struct. + (-fillRecurrencePattern:withEvent:inTimeZone:inMemCtx:): new name + for fillRecurrencePattern:withStartDate:andEndDate:, add exception + dates to struct. -2005-07-21 Helge Hess + * OpenChange/NSDate+MAPIStore.m (NSDateCompare): new comparison + function for sorting array of NSDate instances. - * UIxMailMainFrame.m: fixed banner positioning for 24x24 (v0.9.167) +2012-06-30 Wolfgang Sourdeau - * UIxMailMainFrame.m: fixed positioning for 24x24 icons (v0.9.166) + * OpenChange/NSObject+MAPIStore.h: renamed + MAPIStoreTallocWrapper.MAPIStoreSOGoObject to .instance, to avoid + confusion in certain versions of GCC with our new class type. -2005-07-21 Marcus Mueller +2012-06-29 Jean Raby - * Toolbars/SOGoDraftObject.toolbar: new Anais css (v0.9.165) + * SoObjects/SOGo/WORequest+SOGo.[mh] + (-isAndroid): new method to detect whether the + request has been performed from an android client - * UIxMailEditor.m: fetch attachment names and provide initial style - information to left/right side of editor component (v0.9.164) + * SoObjects/Contacts/SOGoContactFolders.m (appendSystemSources): + Let sogo append system sources if the request comes from an android + client even if its user agent matches the IPhoneAddressBook -2005-07-21 Helge Hess +2012-06-29 Wolfgang Sourdeau - * UIxMailListView.m: load JavaScript from a file (UIxMailListView.js) - instead of embedding it into the page (v0.9.163) + * OpenChange/MAPIStoreSOGo.m + (sogo_message_attachment_open_embedded_message): added the "mode" + parameter. - * UIxMailView.m: do not fetch full message info for 304 existance - checks but rather call -doesMailExist (v0.9.162) + * OpenChange/SOGoMAPIDBObject.m: new class module that replaced + SOGoMAPIFSMessage. -2005-07-20 Helge Hess + * OpenChange/SOGoMAPIDBFolder.m: new class module that replaced + SOGoMAPIFSFolder. - * removed 'stop' buttons from toolbars (v0.9.161) +2012-06-28 Wolfgang Sourdeau - * v0.9.160 + * SoObjects/SOGo/SOGoObject.m (-initWithName:inContainer:): make + sure that "_name" is neither nil nor empty. - * Toolbars/SOGoMailFolder.toolbar: added bulk-delete button, removed - expunge button +2012-06-27 Jean Raby - * UIxMailView.m: added fragile base class check, send a constant etag - for the mail viewer, do not deliver content in the defaultAction in - case the etag didn't change, added jsonly support to trashAction + * SoObjects/Appointments/SOGoAppointmentObject.m + (PUTAction:): detect conflicting event UID and + deny the request accordingly. - * UIxMailToolbar.m: use -resourceLookupLanguages, use - pageResourceManager instead of the toolbar component resourcemanager - for evaluating labels +2012-06-21 Ludovic Marcotte - * product.plist: map getMail on the accounts folder to a noop action - (#1491) (v0.9.159) - - * UIxMailMainFrame.m: added UIxMailPanelFrame class for panels opened - by the main frame (v0.9.158) + * Added the SOGoSearchMinimumWordLength domain + default which controls the minimal length required + before trigging server-side search operations for + attendee completion, contact searches, etc. The + default value is 2, which means search operations + are trigged once the 3rd character is typed. - * UIxMailView.m: show delete button if delete is allowed but trashing - isn't (#1444) (v0.9.157) +2012-06-20 Ludovic Marcotte - * v0.9.156 + * SoObjects/Appointments/SOGoAppointmentObject.m + (-_handleResourcesConflicts:forEvent:): We now + handle correctly recurring events overlapping other + recurring events. - * product.plist: moved more complex toolbar configs to own resource - files +2012-06-19 Ludovic Marcotte - * UIxMailToolbar.m: added ability to place toolbars in separate plist - files + * SoObjects/Appointments/SOGoAppointmentFolder.m (-importCalendar:): + We now handle correctly floating events by forcing the use of + the user's timezone. -2005-07-19 Marcus Mueller + * SoObjects/Appointments/SOGoCalendarComponent.m (-expandGroupsInEvent:): + We now remove all attendees that are equal (email-based comparison) to + the event's organizer instead of only for decomposed groups. - * v0.9.155 +2012-06-12 Wolfgang Sourdeau - * UIxMailToSelection.m: externalized JavaScript + * SoObjects/SOGo/SOGoGroup.m + (+groupWithValue:andSourceSelector:inDomain:): handle the case + the value of "objectclass" is actually an NSString instance, + otherwise causing a crash with the NSArray methods. - * product.plist: added new JavaScript files as public resources +2012-06-04 Francis Lachapelle -2005-07-19 Helge Hess + * UI/WebServerResources/UIxFilterEditor.js (savePreferences): + don't validate filters if they are not visible (when matching all + incoming messages). - * UIxMailEditor.m: do not complain on drafts not being found when the - delete action is triggered (#1489) (v0.9.154) + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-_appendCycleException:firstInstanceCalendarDateRange:fromRow:forRange:withTimeZone:toArray:): + adjust recurrence id according to timezone when dealing with a + floating all-day event. - * UIxMailAccountView.m: directly check the ACL of the Inbox to check - permissions (the Inbox will return NO on isCreateAllowed when being - used by altnamespace ...) (#1472) (v0.9.153) +2012-06-01 Francis Lachapelle -2005-07-19 Marcus Mueller + * SoObjects/SOGo/NSString+Utilities.m + (-_handleURLs:textToMatch:prefix:inRanges:): don't reset the + prefix for the subsequent matching strings. This fixes links in + messages with multiple email addresses, some of which already + prefixed by "mailto;". - * UIxMailAddressbook.m: don't restrict the Anais 'nature' flag anymore - (v0.9.152) +2012-06-01 Wolfgang Sourdeau -2005-07-19 Helge Hess + * OpenChange/*: fixed build errors with gcc-4.7 - * v0.9.151 + * UI/MailPartViewers/UIxMailPartAlternativeViewer.m + (-childPartName): fixed a potential crash by building the NSString + from the integer itself, with the proper format string. - * UIxMailAccountView.m: fixed a warning + * SoObjects/SOGo/NSString+Crypto.m + (-isEqualToCrypted:withDefaultScheme:): invoke "intValue" rather + than "integerValue" on the encoding number as the int type is not + crucial and it breaks the build with old versions of GNUstep. - * UIxMailEditor.m: removed SOGoInternetDetectQualifier code (reuse - shared Internet-detect functionality) + * SoObjects/SOGo/NSString+Crypto.[hm]: new module that provides + category methods for returning encrypted passwords strings and + their encryption algorithm. -2005-07-18 Helge Hess +2012-05-31 Ludovic Marcotte - * UIxMailMainFrame.m: create a proper form action URL which preserves - query parameters (sort field) but removes search/filter values - (v0.9.150) + * SoObjects/SOGo/SOGoGroup.m - we now handle lowercase + all attribute names + * SoObject/SOGo/LDAPSource.m - moved the lowercasing + of attributes to SOPE. + * Added patch from bug #1608. This add many more password + schemes for SQL authentication. + * SoObject/Mailer/SOGoMailFolder.m (-_readMailboxACL): we + now create the mailbox if we are trying to read ACL of + a deleted mailbox. + * UI/MailerUI/UIxMailEditor.m (-personalContactInfos): we check + if the folder still exist and if the database isn't down + before performing any address books search operations. + * UI/MailerUI/UIxMailMainFrame.m (-unseenCountFolders): we no + longer fill up the list of mailboxes to with the ones that are + targets for "fileinto" methods if Sieve scripts aren't enabled + in SOGo's domain defaults. - * UIxMailSortableTableHeader.m: improved handling of multivalue form - keys (v0.9.149) +2012-05-29 Francis Lachapelle - * UIxMailAccountView.m: added method to check whether folder-create - button should be visible on the account folder view (checks INBOX for - the ACL, does check the alt-namespace default), - added method for folder-creation in root (v0.9.148) + * UI/WebServerResources/UIxMailEditor.js (validateEditorInput): + merged with onValidate. + (onValidate): don't force the subject to be defined, but alert + the user. -2005-07-18 Marcus Mueller + * UI/MailerUI/UIxMailView.m (-messageSubject): don't set the + subject to "Untitled" if it's not set. - * v0.9.147 + * UI/MailPartViewers/UIxMailPartMessageViewer.m (-messageSubject): idem. - * UIxMailToSelection.m: fixed ordering of parameters for the current - Anais version - - * UIxMailAddressbook.m: fixed parameters being passed on to Anais for - the current Anais version + * UI/MailerUI/UIxMailEditor.m (-validateForSend): don't force the + subject to be defined. -2005-07-18 Helge Hess + * SoObjects/Mailer/SOGoMailObject+Draft.m (-subjectForReply): make + sure subject is a defined value to avoid "null" strings in the + reply message. - * UIxMailListView.m: improved error handling (display a JavaScript - alert panel showing the issue instead of SOPE exception rendering) - (v0.9.146) +2012-05-28 Francis Lachapelle -2005-07-18 Marcus Mueller + * UI/WebServerResources/SchedulerUI.js (validateUploadForm): hide + Cancel button when the form is valid and disable the Submit button. - * UIxMailToSelection.m: changed behavior for adding/removing text - fields and changing focus (v0.9.145) + * UI/WebServerResources/ContactsUI.js (validateUploadForm): idem. -2005-07-18 Helge Hess +2012-05-24 Jean Raby - * product.plist: properly bind a 'getMail' method to the account - folder (fixes #1470) (v0.9.144) + * debian*/rules: Restart sogod after pkg upgrade (dh_installinit -R) + * Scripts/sogo-init.d-*: add support for conditional restart. + Patch from Romain Le Disez + * sogo.spec: Restart sogod during post installation if it was already running - * UIxSubjectFormatter.m: fixed a stupid bug in subject handling leading - to an infinite loop in the QP processing, hardened against QP loops - (v0.9.143) + * Apache/SOGo.conf: + Use mod_expires to allow long term caching of static content. (1 year) + Note that from now on, a resource's URL _must_ change to let the client + reload it. This is now done automatically for 'rsrc' in the wox templates, + but must be done manually for files referenced from css and js. -2005-07-18 Marcus Mueller +2012-05-23 Wolfgang Sourdeau - * UIxMailEditor.m: removed -emailForUser usage and replaced with - 'official' activeUser API (v0.9.142) + * UI/WebServerResources/generic.js + (clickEventWrapper.button_clickEventWrappe): don't invoke + "preventDefault" on elements that do not have a tagName of "A". -2005-07-15 Helge Hess +2012-05-18 Jean Raby - * product.plist: only enable folder add/remove buttons when the user - has the 'c' permission on the IMAP folder (#1456) (v0.9.141) + * SoObjects/Mailer/SOGoDraftObject.m (bodyPartForAttachmentWithName): + Merge back lost code to handle encoding of binary and rcf822 attachments. -2005-07-14 Helge Hess +2012-05-15 Wolfgang Sourdeau - * UIxMailAccountView.m: removed methods to detect whether the - clientObject is a shared account (done by the clientObject itself) - (v0.9.140) + * OpenChange/gen-property-selectors.py: the use of the "{}" to + construct a set is only valid on py2.7 therefore we make use of + set([]) instead. -2005-07-12 Helge Hess +2012-05-15 Jean Raby - * UIxMailEditor.m: perform some validation plus error handling prior - trying to send a mail (check whether we have recipients, check - whether the subject is set) (#1451) (v0.9.139) + * SoObjects/Appointments/SOGoAppointmentObject.m (_handleResourcesConflicts): + Deny access to resources if the resource's ACL don't allow the organizer + to read its freebusy info. + Without this, sogo would always auto-accept invitations from 'unprivileged' + users, potentially bypassing the multiplebooking parameter. - * UIxMailEditor.m: properly determine from-email addresses (v0.9.138) +2012-05-14 Wolfgang Sourdeau - * UIxMailEditor.m: use new SoUser API instead of AgenorUserManager - (v0.9.137) + * OpenChange/gen-property-selectors.py: "bannedProps" is now a + set, for faster lookups. -2005-07-11 Helge Hess + * UI/WebServerResources/UIxContactsUserFolders.js: folder ids are + in the form "user:module/folder", therefore we must remove the + first char, which is a slash. - * UIxMailMainFrame.m: generate proper URLs for jumping to Calendar, - HomePage etc (#1448) (v0.9.136) + * UI/WebServerResources/generic.js (subscribeToFolder): prepend a + "/" to the folder name, as it comes originally in the form + user:module/folder. -2005-07-08 Helge Hess + * UI/WebServerResources/UIxPreferences.js (initMailAccounts) + (displayMailAccount): getElementsByTagName seems too standard for + IE, we use $$() now so that we can invoke "each" on the result set + without triggering an exception. - * UIxMailEditor.m: added from-selection popup, list discovery via - AgenorUserManager (aka LDAP) (v0.9.135) +2012-05-09 Jean Raby -2005-07-08 Helge Hess + * SoObjects/Appointments/SOGoAppointmentObject.m (PUTAction): + Delete bitrotten code that could end up duplicating attendees. + Behavior exposed by the new caldav tests - * UIxMailEditor.m: use WOContext method from libSOGo to detect - Internet access (v0.9.134) + * Tests/Integration/config.py.in + * Tests/Integration/test-caldav-scheduling.py + * Tests/Integration/test-ical.py + * Tests/Integration/test-davacl.py: + Use an unprivileged webdavclient where possible. + This would have uncovered the resources calendar autocreation bug. -2005-07-08 Helge Hess + * Tests/Integration/test-caldav-scheduling.py: + New tests to excercise somewhat fragile code in dav autoscheduling. - * UIxMailMainFrame.m: added help button and extra space for that in the - toolbar (v0.9.133) - -2005-07-08 Helge Hess +2012-05-09 Jean Raby - * UIxMailMainFrame.m: added "link" banner to jump to the other SOGo - tools, disable the banner in case the tree is disabled (since that - hints that a new window without the frame is being used, eg the - compose panel), added some more CSS classes instead of inline style - declarations (v0.9.132) + * SoObject/SOGo/SOGoParentFolder.m (_createPersonalFolder): + Automatically create the folder if its owner is a resource. + (not if the active user is a resource) -2005-07-08 Helge Hess +2012-05-09 Ludovic Marcotte - * prepared ACL editors (v0.9.131) + * SoObjects/Mailer/SOGoDraftObject.m - don't encode message/rfc822 + parts in base64 - it's not allowed. -2005-07-07 Helge Hess +2012-05-08 Francis Lachapelle - * v0.9.130 - - * UIxMailListView.m: implemented empty-trash action + * UI/WebServerResources/ContactsUI.js (configureDraggables) + (configureDroppables, startDragging, whileDragging, stopDragging) + (dropAction): drag'n'drop is how handle by jQuery instead of Scriptaculous. - * product.plist: added a reduced toolbar when being on the trash folder - (no reply/fwd etc, but added an empty trash button) - -2005-07-07 Helge Hess + * UI/WebServerResources/MailerUI.js (configureDraggables) + (configureDroppables, startDragging, whileDragging, stopDragging) + (dropAction): idem. - * v0.9.129 - - * UIxMailAccountView.m: added code to better display shared accounts + * UI/WebServerResources/generic.js (onCloseButtonClick) + (showPromptDialog, showSelectDialog, showAuthenticationDialog) + (disposeDialog, _disposeDialog): idem. - * UIxMailTree.m: moved IMAP4 connection string => label code to a - NSString category - -2005-07-07 Helge Hess + * UI/WebServerResources/SOGoRootPage.js (initLogin): idem. - * UIxMailTree.m: properly display share names in account list (show - name of share instead of the cut-off account login). Added some - improved heuristics to determine a viably short name (v0.9.128) + * UI/Contacts/UIxContactView.m (-primaryEmail): in the mailto + link, remove double-quotes and escape single-quotes from the fullname. + (-secondaryEmail): idem. -2005-07-07 Helge Hess +2012-05-04 Wolfgang Sourdeau - * UIxMailView.m, product.plist: added -trash button and action - (v0.9.127) + * OpenChange/MAPIStoreSOGo.m: register and unregister current + thread before and after each backend operation, in order to avoid + issues in multithreaded environment. -2005-07-06 Helge Hess +2012-05-01 Wolfgang Sourdeau - * product.plist: hide expunge button on mail folder when deleting is - disallowed (v0.9.126) + * UI/WebServerResources/generic.js (accessToSubscribedFolder): use + the last part of the string as folder identifier. Otherwise we end + up with the module name. -2005-07-06 Helge Hess + * SoObjects/Mailer/SOGoDraftObject.m + (-bodyPartForAttachmentWithName:): attach rfc822 content as + with base64 encoding, just as any other non-text data. - * v0.9.125 +2012-04-30 Ludovic Marcotte - * UIxMailToolbar.m: added ability to disable toolbar buttons in case an - operation is not allowed (eg an object got deleted) + * SoObjects/SOGo/SOGoDomainDefaults.{h,m} - added + -hideSystemEMail that honors SOGoHideSystemEMail. + Right now, this variable is limited only to + the calendar-user-address-set response but can/will be + extended later. - * product.plist: added 'isSafe=NO' markers to unsafe HTTP methods in - toolbar, added 'enabled' binding for 'delete' button + * SoObjects/Appointments/SOGoUserFolder+Appointments.m + (-davCalendarUserAddressSet): Modified to honor + SOGoHideSystemEMail domain default. - * v0.9.124 + * SoObjects/Mailer/SOGoDraftObject.m (-lookupName:...): + We prioritize the lookup of the "Drafts" folder over the + "Sent" one if both are matching. - * UIxMailView.m: improved error handling in case the delete flag could - not be set + * SoObjects/Mailer/SOGoMailFolder.m: Same as above. - * UIxMailMainFrame.m: added -hasErrorText / -errorText / - -errorAlertJavaScript methods to deal with errors encoded in the - 'error' form parameter -2005-03-24 Helge Hess +2012-04-25 Jean Raby - * v0.9.123 - - * UIxMailListView.m: added create/delete folder operations - - * product.plist: added folder-add/delete buttons in toolbar + * SoObjects/Mailer/SOGoDraftObject.m + (-updateFromLDIFRecord:): carry the c_info attribute + in vcards through the x-sogo-contactinfo attribute. + This functionality was lost a while ago. + We used to use the NOTE attribute for this. From now on, + the sogo-connector.autoComplete.commentAttribute have to be set to + 'unprocessed:x-sogo-contactinfo' instead of 'Notes'. -2005-03-23 Marcus Mueller - * renamed "default.strings" to "Localizable.strings" (v0.9.122) +2012-04-25 Wolfgang Sourdeau -2005-02-23 Helge Hess + * UI/PreferencesUI/UIxPreferences.m (_extractMainIdentity:): save + the custom full name even when the configured custom email has the + same value as the system value. - * mailer.js: split into multiple files (v0.9.121) + * SoObjects/SOGo/SOGoUser.m (-appendSystemMailAccount): append + custom identity even though only the full name has a custom value. -2005-02-22 Helge Hess + * SoObjects/Mailer/SOGoDraftObject.m + (-bodyPartForAttachmentWithName:): force conversion of rfc822 + content to quoted-printable, since it would otherwise risk passing + 8bit data via the "APPEND" command. - * UIxMailMainFrame.m: added ability not to generate the HTML frame - (v0.9.120) +2012-04-24 Wolfgang Sourdeau -2005-02-20 Helge Hess + * UI/WebServerResources/SchedulerUI.js (updateCalendarStatus): if + "event" is set, we set its returnValue to true, to avoid a bug + occurring since the use of "clickEventWrapper". + (resizeCalendarHeaderDIV): new function that resizes the all-day + event containers progressively. + (_drawCalendarAllDayEvents, _deleteCalendarEventBlocks): invoke + the above. - * moved UIxMailSizeFormatter to MailPartViewers (v0.9.119) + * UI/WebServerResources/HTMLElement.js: get "HTMLCollection" + and "NodeList" classes by class rather than by direct reference. -2005-02-18 Helge Hess + * UI/WebServerResources/generic.js (clickEventWrapper): pass the + value of "this" to the invoked callback. - * mailer.js: added HTML escape/unescape functions (v0.9.118) +2012-04-24 Ludovic Marcotte - * moved mail part viewers to own product (MailPartViewers) (v0.9.117) + * SOPE/GDLContentStore/GCSFolder.m (-writeContent:toName:baseVersion:): + We now keep track of the saved version for all callers. Also updated + all callers to reflect that change. -2005-02-17 Helge Hess + * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:) + Took some of the logic from SOGoContentObject's -PUTAction: to + avoid etag mismatches. - * UIxMailSortableTableHeader.m: properly inherit from SoComponent, so - that resource lookup works (v0.9.116) +2012-04-23 Ludovic Marcotte -2005-02-16 Helge Hess + * SoObjects/Appointments/SOGoAppointmentObject.m: We now + automatically add/remove attendees to recurrence exceptions + when they are being added to the master event. Also + fixed -PUTAction: so that we fetch the organizer of a recurrence + exception when the master doesn't have a copy of it. - * added automatic search field posting (v0.9.115) + * SoObjects/Appointments/SOGoAppointmentOccurence.m: added + -componentTag to avoid server crash. - * mailer.js: fixed a row highlighting bug (v0.9.114) +2012-04-20 Wolfgang Sourdeau - * product.plist: fixed compose button in mail viewer (v0.9.113) + * UI/WebServerResources/SchedulerUI.js (onCalendarReload): invoke + changerCalendarDisplay when no web calendars are present... -2005-02-15 Helge Hess + * UI/WebServerResources/HTMLElement.js: enhanced both + HTMLCollection and NodeList with the "Enumerable" interface. - * UIxMailListView.wox: added a pointer cursor for rows and enabled an - on-click message opener on some cells (v0.9.112) + * UI/WebServerResources/UIxPreferences.js (displayMailAccount): + disable the "fullName" and "email" input fields of the first + account only when SOGoMailCustomFromEnabled is NO. - * UIxMailListView.wox: added message row highlighting (v0.9.111) + * UI/PreferencesUI/UIxPreferences.m (_extractMainIdentity:): the + custom values for "fullName" and "email" are now registered in the + user defaults, if "email" is different from all the values + returned by the user directory AND if SOGoMailCustomFromEnabled is + YES. - * UIxMailAccountView.wox, UIxMailAccountsView.wox: added a title-div - to fix layout (v0.9.110) + * SoObjects/SOGo/SOGoUserDefaults.m (-setMailCustomFullName:) + (-mailCustomFullName): new accessors for the new + "SOGoMailCustomFullName" user default. + (-setMailCustomEmail:, -mailCustomEmail): new accessors for the + new "SOGoMailCustomEmail" user default. -2005-02-14 Helge Hess + * SoObjects/SOGo/SOGoDomainDefaults.m (-mailCustomFromEnabled): + new getter for the "SOGoMailCustomFromEnabled" domain default. - * mailer.js: use 'tb.view' instead of 'view' to show a page (v0.9.109) + * SoObjects/Mailer/SOGoDraftObject.m + (-mimeHeaderMapWithHeaders:excluding:) take the new "replyTo" + header into account. - * UIxMailTree.m: always stop tree on user folder (v0.9.108) - - * v0.9.107 - - * product.plist: mapped 'namespaced' "tb.view" SOPE method to the same - methods like "view". This allows us to use "tb.view" inside the - mailer without clashing with other UIs on top of the same SoObjects + * SoObjects/SOGo/SOGoUser.m (-_appendSystemMailAccount): specify + the value of "SOGoMailReplyTo" in the "replyTo" field of each + identity, if present. + When "SOGoMailCustomFromEnabled" is YES and the user has set + a value for "SOGoMailCustomEmail", a first identity is created and + set at the first position in the list, based on that value and on + "SOGoMailCustomFullName". + + * SoObjects/SOGo/SOGoUserDefaults.m (-setMailReplyTo:) + (-mailReplyTo:): accessors for the "SOGoMailReplyTo" user default. + +2012-04-19 Ludovic Marcotte + + * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:) + We now handle cases where the last attendee AND the organizer + is removed from the event during a PUT action (happens when + you delete the last attendee of an event with iCal). This used + to crash sogod. + * SoObjects/Appointments/SOGoAppointmentFolder.m (-importCalendar:) + Fixed the import process of broken all-day events (#1055) + +2012-04-19 Francis Lachapelle + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-importCalendar:): associate occurrences of a repeating event to + its master vcalendar to avoid duplicated events when importing a .ics. + +2012-04-19 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoParentFolder.m (-appendSubscribedSources): + ensure the array set as values in the settings dicts are not nil + prior to setting them. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:): + fix the date condition for cycle record, by using c_cycleenddate + instead of c_enddate. + +2012-04-18 Ludovic Marcotte - * UIxMailTree.m: use Inbox icon for SOGoMailAccount and - SOGoMailAccounts folders, added ability to specify a - 'treeFolderAction' (relative URL to be triggered by clicks) + * SoObjects/Appointments/SOGoAppointmentObject.m (-_handleResourcesConflicts: ...): + We now handle recurring appointments by fetching the freebusy information for one full + year from the date of the event. Also improved the conflict + reporting messages. - * v0.9.106 - - * UIxMailFilterPanel.wox: improved CSS styling of the search field + * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:): + update the versit string in the request when updating the event, in + case a resource auto-accepted the event + + * SoObjects/SOGo/SOGoGCSFolder.m: renamed -subscribeUser:reallydo: to + subscribeUserOrGroup:reallydo and we now handle group subscriptions. + Refactored all callers. + + * SoObjects/SOGo/SOGoParentFolder.m (-_appendSubscribedSource:): now returns a + BOOL if the permission are still valid or not + + * SoObjects/SOGo/SOGoParentFolder.m (-appendSubscribedSources): consumes the + returned value from -_appendSubscribedSource: and cleans up SubscribedFolders + and FolderDisplayNames accordingly in the user's settings. + + * SoObjects/SOGo/SOGoUserManager.m (-_fillContactInfosForUser: ...): we now + set the isGroup attribute as we need this for quick groups + resolving. + +2012-04-18 Wolfgang Sourdeau + + * UI/WebServerResources/generic.js (showAuthenticationDialog): new + dialog providing an interface for requesting a username and a + password to acallback passed as parameter. + (accessToSubscribedFolder): fixed method to return the proper url + for folders owned by the active user. + + * UI/WebServerResources/SchedulerUI.js (reloadWebCalendars): now + invokes "reloadAction" on every web calendar foldar, in a chain of + simultaneous requests. + (reloadWebCalendar): new function invoking "reloadAction" on a + single cal folder. + (reloadWebCalendarCallback): callback for the above invocation + that takes care of refreshing the views at the end of a refresh + chain, if present, and when useful. + + * UI/Scheduler/UIxCalFolderActions.m (reloadAction): new web + method that applies only to SOGoWebAppointmentFolder instances and + which returns a JSON representation of the result returned by + -[SOGoWebAppointmentFolder loadWebCalendar]. This method replaces + -[UIxCalMainActions -reloadWebCalendars]. + (setCredentialsAction): new web method acting as a proxy for + -[SOGoWebAppointmentFolder setUsername:andPassword:]. + + * UI/WebServerResources/generic.js (clickEventWrapper): new + function that returns a wrapper function for click callbacks which + invokes "preventDefault" on the "event" parameter before it is + passed to the real callback. - * UIxMailTree.wox: fixed display of special mail icons if a folder - has subfolders and is open (in short: the 'cornerIcon' binding is - properly set) + * UI/Scheduler/UIxCalMainActions.m + (-reloadWebCalendarsAndRedirectAction): removed obsolete method. + (-reloadWebCalendars): removed obsolete method. - * v0.9.105 - - * UIxMailTree.m: fixed handling of root nodes (properly display all - children of the root node) - - * UIxMailTreeBlock.m: generate a description - - * UIxMailMainFrame.m, UIxMailTree.m: made root class of tree - configurable using 'SOGoMailTreeRootClass' default - -2005-02-13 Helge Hess + * SoObjects/Appointments/SOGoAppointmentFolders.m + (-newWebCalendarWithName:atURL:): perform sanity checks on the url + parameter. - * mailer.css: added left-padding to treecell to make it look better - (v0.9.104) + * SoObjects/Appointments/SOGoWebAppointmentFolder.m + (-setUsername:andPassword:): new method that associate an + encrypted login pair for authenticating to remove calendars. + (-loadWebCalendar): rewrote method to make use of curl, thereby + permitting HTTP authentication. A NSDictionary containing + different informations about the connection is not returned, + including the HTTP status and an error tag, when required. - * UIxMailListView.wox: added mark read/unread without page refresh - using XMLHttpRequest (v0.9.103) + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-importCalendar:): journals and freebusys are not + supported. - * product.plist, UIxMailListView.wox, mailer.js: added bulk - reply/replyall/forward (v0.9.102) +2012-04-16 Jean Raby -2005-02-12 Helge Hess + * SOPE/NGCards/iCalMonthlyRecurrenceCalculator.m + (-recurrenceRangesWithinCalendarDateRange:): + Fix of by one error. (bug #1772) - * UIxMailMainFrame.m: fixed page form processing if the active URL - does not specify a method name (ends with /) (v0.9.101) +2012-04-16 Wolfgang Sourdeau - * v0.9.100 + * SoObjects/SOGo/NSString+Utilities.m (-encryptWithKey:) + (-decryptWithKey:): new methods providing symmetric encryption of + strings. - * added support for filter popup (OGo bug #1210) - - * UIxMailListView: moved filter selection to an own component + * Tests/Unit/SOGoTestRunner.m (-run): do not empty the pool after + each test. - * v0.9.99 +2012-04-13 Wolfgang Sourdeau - * product.plist: also map index method of mail folder to - UIxMailListView + * SoObjects/Appointments/SOGoAppointmentFolder.m (-bareFetchFields: ...), + (-fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:): + restored c-style escaping of sql-style escaping of quote characters. + (-davCalendarShowAlarms, setDavCalendarShowAlarms:): new proxy dav + accessors for "showCalendarAlarms" and "setShowCalendarAlarms:". - * UIxMailListView.m: added subject/sender searching (OGo bug #1209) +2012-04-12 Wolfgang Sourdeau -2005-02-10 Helge Hess + * SoObjects/SOGo/SOGoGCSFolder.m (-componentSQLFilter): new + overridable method that enables passing filters for + toOneRelationshipKeys from subclasses. - * UIxMailPartLinkViewer.wox, UIxMailPartMessageViewer.wox: added - missing 'label' namespace declaration (v0.9.98) + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-davCalendarComponentSet): componentSet is now an ivar. Include + VTODO only with showCalendarTasks returns YES. + (-davResourceType): return vtodo-collection only when + showCalendarTasks returns YES. -2005-02-09 Helge Hess + * UI/Scheduler/UIxCalListingActions.m + (_fetchFields:forComponentOfType:): do not check for + "showCalendarTasks" since it is now handled at the + SOGoApopintmentFolder level. - * UIxMailReplyAction.m: implemented a content-reply (v0.9.97) + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-bareFetchFields: ..., + (-fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:): + make use of a mutable array to define the global WHERE clause, by + joining the elements with " AND ". + (-additionalWebdavSyncFilters): don't include 'vtodo' components + when -[self showCalendarTasks] returns NO. -2005-02-08 Helge Hess +2012-04-11 Francis Lachapelle - * v0.9.96 + * UI/WebServerResources/ContactsUI.js (onDocumentKeydown): don't + trap keyboard input when inside a textarea. - * UIxMailPartMessageViewer.m: fixed for multivalue from fields +2012-04-05 Wolfgang Sourdeau - * UIxMailEditorAction.m, product.plist: split editor action in multiple - classes + * SoObjects/SOGo/NSString+Utilities.m (-objectFromJSONString): + added a work-around for JSON strings that were escaped one too + many time, in previous versions of sope-gdl1-xxx. - * v0.9.95 +2012-04-04 Jean Raby - * product.plist: do not use clickedEditorDelete() JS function for - draft delete but just call the link - - * UIxMailEditor.m: a successful draft delete now returns the window - closer and refreshes the opener - - * mailer.js now reloads the opener for editor-save and editor-delete - functions (does not properly work since the form load is async) - - * UIxMailEditorAction.m, product.plist: implemented simple - reply/reply-all processing (subject and recipient handling is in - place, content quoting is pending) - - * v0.9.94 + * Added a new tool: 'sogo-tool expire-sessions' + Along with the associated new cronjob, this allows + user sessions expiration without a custom script. - * UIxMailListView.m: properly show "to" address in tableview for - Sent folder + * While there, sort tools in sogo-tool output - * UIxMailView.m: fixed for new 'from' API +2012-04-03 Francis Lachapelle - * v0.9.93 + * Tools/SOGoToolRemoveDoubles.m (-removeDoublesFromFolder) + (-amountOfFilledQuickFields): lowered the case of the + telephonenumber table fieldname. - * mailer.js: work on the read-mail marking code, properly change the - icon div + * OGoContentStore/OCSContactFieldExtractor.m + (-extractQuickFieldsFromVCard): idem. - * UIxMailListView.m: changed handling of unread mail flags +2012-03-30 Wolfgang Sourdeau - * UIxMailView.wox: use the new markMailReadInWindow function to mark - a mail read in the mail list + * OpenChange/MAPIStoreCalendarMessage.m (-save): remove comment if + content is "\n". -2005-02-07 Helge Hess + * OpenChange/MAPIStoreTasksMessage.m (-save): do not reset fields + that have not been passed in the properties array, since only + RopDeleteProperties should remove them. + Remove comment if content is "\n". - * v0.9.92 - - * UIxMailView.m: properly refresh mail list after a mail got deleted + * OpenChange/MAPIStoreObject.m (-addPropertiesFromRow:): dates are + now all converted to the user's timezone, even though it just + inverts the problem we currently have. - * UIxMailWindowCloser.m: added ability to refresh the opener window - prior closing the panel + * OpenChange/MAPIApplication.m (-init): utcTZ is now initialized + here. - * UIxMailView.wox: triggers opener callback to mark a mail as read - - * mailer.js: added refreshOpener() function which refreshes the - panel that opened the current window, added triggerOpenerCallback() - function which triggers a URL given in the "openerurl" query - parameter on the opener window + * OpenChange/MAPIStoreTypes.[hm]: new host module for utcTZ. - * UIxMailEditor.m: disabled Internet warning in the mail editor per - default, can be enabled using the 'SOGoShowInternetMarker' default, - made Internet header detection qualifier configurable, see README - (SOGoInternetDetectQualifier string default), when the request is - from the Internet, add headers as specified in the - 'SOGoInternetMailHeaders' dictionary default (v0.9.91) + * OpenChange/MAPIStoreUserContext.m (-timeZone): new method that + returns the timezone of an owner user. - * UIxMailTree.m: added support for special folder icons (v0.9.90) + * OpenChange/MAPIStoreObject.m (-ownerTimeZone): removed method, + replaced with the one above. - * v0.9.89 +2012-03-29 Francis Lachapelle - * UIxMailTree.m: made special folder names localizable + * UI/WebServerResources/UIxPreferences.js (savePreferences): fixed + validation of end date of vacation of message when not using ISO + format (currently limited to French). - * English.lproj/default.strings: added some folder translations + * UI/WebServerResources/ContactsUI.js (startDragging): create an + overlapping safety block (div) to avoid possible selection of the + underlying text. -2005-02-06 Helge Hess + * UI/WebServerResources/MailerUI.js (startDragging): idem. - * v0.9.88 +2012-03-29 Francis Lachapelle - * UIxMailTree.m: some code cleanups, does not use -fetchSubfolders of - SOGoObject anymore (to be useful for any object) + * UI/WebServerResources/UIxPreferences.js (savePreferences): fixed + validation of end date of vacation of message when not using ISO + format (currently limited to French). - * UIxMailMainFrame.wox: made "Folders" title localizable + * UI/WebServerResources/ContactsUI.js (startDragging): create an + overlapping safety block (div) to avoid possible selection of the + underlying text. - * UIxMailListView.wox: removed some superflous section + * UI/WebServerResources/MailerUI.js (startDragging): idem. -2005-01-31 Helge Hess +2012-03-28 Wolfgang Sourdeau - * UIxMailView.m: implemented 'expunge' action (delete button in the - toolbar) (v0.9.87) + * SoObjects/Contacts/SOGoFolder+CardDAV.m (_isValidFilter:): + accept "email" as filter name. + (_appendObject:withBaseURL:toREPORTResponse:): fixed the ordering + of XML elements as the address*-data props where put outside of + the tree. - * UIxMailView.m, UIxMailRenderingContext.m: moved more bulk fetching - to SoObject (v0.9.86) + * SoObjects/SOGo/LDAPSource.m (-allEntryIDs): take the _filter + ivar into account. - * UIxMailView.m: moved plain/text bulkfetch method to SoObjects/Mailer, - since its general purpose (v0.9.85) +2012-03-28 Wolfgang Sourdeau - * v0.9.84 + * OpenChange/SOGoMAPIFSMessage.m + (_readFileChangesDataWithDate:andInode:): use the inode number + rather than the filesize as change indicator since a new file is + created each time the dictionary is written to disk, thanks to the + "atomically" flag. + (-save): write the file atomically. - * UIxMailView.m: properly recurse into message/rfc822 bodies for flat - content fetches + * SoObjects/Contacts/SOGoFolder+CardDAV.m (_isValidFilter:): + accept "email" as filter name. + (_appendObject:withBaseURL:toREPORTResponse:): fixed the ordering + of XML elements as the address*-data props where put outside of + the tree. - * UIxMailView.m, UIxMailPartMessageViewer.m: added links for email - addresses (currently mailto://) + * SoObjects/SOGo/LDAPSource.m (-allEntryIDs): take the _filter + ivar into account. -2005-01-30 Helge Hess - - * v0.9.83 - - * UIxMailRenderingContext.m: activate UIxMailPartMessageViewer for - message/rfc822 contents +2012-03-27 Wolfgang Sourdeau - * added a UIxMailPartMessageViewer for displaying embedded (eg - forwarded) MIME messages + * SoObjects/Contacts/SOGoContactFolders.m + (-lookupName:inContext:acquire:): overriden method that enables + the lookup of hidden public sources with iOS devices. - * v0.9.82 - - * UIxMailPartLinkViewer.m: prefix filenames which start with a digit, - properly escape attachment names + * SoObjects/Contacts/SOGoContactLDIFEntry.m (-davAddressData): new + getter similar to davCalendarData. - * UIxMailPartImageViewer.m (UIxMailPartViewer): append image extension - to attachments - - * v0.9.81 - - * UIxSieveEditor.m: call proper save method in Sieve SoObject - - * UIxMailEditor.m: added 'SOGoMailEditorKeepTmpFile' default to debug - MIME generation + * SoObjects/Contacts/SOGoContactSourceFolder.m + (-davAddressbookMultiget): new REPORT handler based on + -[SOGoAppointmentFolder davCalendarMultiget]. - * v0.9.80 + * SoObjects/Contacts/SOGoUserFolder+Contacts.m + (-davDirectoryGateway): new getter that returns the url to the + first available directory source. + (-davResourceType): declare resource as "directory" (carddav). - * UIxMailEditorAction.m: work on forwarding and reply - - * UIxFilterList.wox, UIxMailAccountView.wox, UIxMailAccountsView.wox, - UIxSieveEditor.wox: fixed title (needs localization) +2012-03-27 Wolfgang Sourdeau - * UIxMailMainFrame.m: always generate title as given by the parent - component (titles need to get fixed!), was fixed to OpenGroupware.org - before unless in debug mode - - * UIxMailEditor.m: use new storeInfo API, generate a proper panelTitle - (needs localization) + * SoObjects/Contacts/SOGoContactFolders.m + (-lookupName:inContext:acquire:): overriden method that enables + the lookup of hidden public sources with iOS devices. - * UIxMailEditorAttach.m: use new attachment API + * SoObjects/Contacts/SOGoContactLDIFEntry.m (-davAddressData): new + getter similar to davCalendarData. - * UIxMailView.wox: remoted link to screenshot, use mail subject as - title + * SoObjects/Contacts/SOGoContactSourceFolder.m + (-davAddressbookMultiget): new REPORT handler based on + -[SOGoAppointmentFolder davCalendarMultiget]. - * UIxMailListView.m: disabled a log + * SoObjects/Contacts/SOGoUserFolder+Contacts.m + (-davDirectoryGateway): new getter that returns the url to the + first available directory source. + (-davResourceType): declare resource as "directory" (carddav). -2005-01-28 Helge Hess +2012-03-26 Wolfgang Sourdeau - * v0.9.79 + * OpenChange/MAPIStoreTasksMessage.m (-save): take PR_HTML as + possible value for the COMMENT field, as as with + MAPIStoreCalendarMessages. - * UIxMailEditor.wox: localized 'Subject' label, shows 'non-intranet' - marker if 'MinequProvenance' HTTP header is not set to 'intranet' + * OpenChange/MAPIApplication.m (-init): removed hack pertaining to + UnixSignalHandler since the class no longer exists. - * mailer.css: added marker for internet-mails (#1153) +2012-03-23 Francis Lachapelle - * v0.9.78 + * Tools/SOGoToolUserPreferences.m (-run): we now take the proper + argument when setting the user defaults from the command-line. - * UIxMailListView.m: properly mark deleted mails using line-through +2012-03-22 Francis Lachapelle - * UIxMailView.m: close mail viewer if mail delete was successful + * UI/MailerUI/UIxMailFolderActions.m (-emptyTrashAction:): we now + unsubscribe from the folders found in the trash. - * mailer.css: added style classes for deleted cells +2012-03-22 Wolfgang Sourdeau - * UIxMailEditor.m: moved some Sent folder lookup to SOGoMailAccount + * OpenChange/MAPIStoreTasksMessage.m (-save): + PidLidPercentComplete is a double, that we need to convert in + order to obtain the proper value. - * v0.9.77 +2012-03-21 Wolfgang Sourdeau - * added UIxMailSizeFormatter to render big file size numbers with some - M or K suffix + * SoObjects/SOGo/SOGoUserManager.m (_compactAndCompleteContacts:): + if "mail" is an array, all values are added to "c_emails". - * UIxMailPartViewer.m: added methods to retrieve filename, file - extension and file size formatter + * SoObjects/Contacts/SOGoContactSourceFolder.m + (_flattenedRecord:): if "mail" is an array, we only take the first + value of it. - * UIxMailSortableTableHeader.m: minor code cleanups + * SoObjects/Contacts/SOGoContactLDIFEntry.m (-simplifiedRecord): + new record guaranteeing that all array values have been stripped + and converted to strings. -2005-01-27 Helge Hess +2012-03-20 Francis Lachapelle - * started attachment (download) viewer (#1074) (v0.9.76) + * SoObjects/Mailer/SOGoMailObject+Draft.m + (_contentForEditingFromKeys:): prefer the HTML part over the text + part when composing HTML messages. -2005-01-26 Helge Hess +2012-03-20 Wolfgang Sourdeau - * v0.9.75 + * SoObjects/SOGo/SOGoUserFolder.m (-davLastName, -davFirstName): + quick and dirty implementation of those getters. - * UIxMailEditor.m: copy sent mails to INBOX/Sent folder, fixes issue - #1054 + * OpenChange/MAPIStoreAppointmentWrapper.m (-_setupITIPContext): + ensure method is uppercase. - * product.plist: disabled unsupported delete button in mailviewer + * OpenChange/MAPIStoreCalendarMessage.m + (-getPidLidAppointmentSequence:inMemCtx:): new getter. + (-save): properly initialize CREATED, LAST-MODIFIED, DTSTAMP and + SEQUENCE from MAPI properties. - * UIxMailListView.wox: removed unused mail checkboxes and folder-tree - popup (#1211) (v0.9.74) + * OpenChange/MAPIStoreAppointmentWrapper.m + (-getPidLidAppointmentSequence:inMemCtx:): new getter. - * disabled some unsupported buttons and template elements (#1209, - #1210, #1207, #1208) (v0.9.73) + * OpenChange/NSDate+MAPIStore.m (-isNever): new accessor for dates + occurring in 4500. -2005-01-26 Marcus Mueller + * OpenChange/MAPIStoreTypes.m (MAPIChangeKeyGUIDCompare): NSData + arguments passed as "id" due to the pickiness of some versions of + gcc. - * v0.9.72 +2012-03-19 Wolfgang Sourdeau - * UIxMailWindowCloser.{m,wox}: new component which closes the window - in its "onLoad". + * Main/SOGo+DAV.m (_fillCollections:where:matches:inContext:): + added bogosupport for + "{http://calendarserver.org/ns/}email-address-set". + (_principalCollectionsMatching:inContext:): relationship between + search criteria is now and "OR" rathern than an "AND". - * UIxMailEditor.m: close window after successful send by opening - UIxMailWindowCloser. This fixes SOGo Bug #1053. + * SoObjects/Appointments/SOGoUserFolder+Appointments.m + (-davCalendarUserType, -davEmailAddressSet): new DAV accessors. -2005-01-07 Marcus Mueller + * OpenChange/MAPIStoreCalendarMessage.m (-save): check recipients + even if PidLidAppointmentStateFlags is nil or 0, since all that + matters is that the "recipients" dict be present in the properties + dictionary. - * {English/French}.lproj/default.strings: changed encoding from - ISO-Latin-1 to UTF-8, which is now the default (v0.9.71) + * OpenChange/SOGoMAPIFSMessage.m (-init): init 2 new ivars: + fileSize and lastModificationTime. + (-properties): check the current file size and last modification + time against cached values and reload the props file if anything + changed. + (-creationTime, -lastModificationTime): new return type: NSDate + instead of NSCalendarDate. -2004-12-08 Marcus Mueller +2012-03-16 Wolfgang Sourdeau - * UIxMailTree.m, UIxMailEditor.m, UIxMailPartViewer.m, - UIxEnvelopeAddressFormatter.m, UIxMailToolbar.m, - UIxMailRenderingContext.m, UIxMailEditorAttach.m, - UIxSubjectFormatter.m, UIxMailPartAlternativeViewer.m: - changed to use NGLogging (v0.9.70) + * OpenChange/MAPIStoreGCSFolder.m + (-predecessorChangeListForMessageWithKey:): same as below. + (-setChangeKey:forMessageWithKey:): synchronise the version cache + if the message entry is not found. + (-updateVersionsForMessageWithKey:withChangeKey:): new method, + common to all GCS messages, that updates the folder cache and + insert the PidTagChangeKey provided by the client during the save + operations. -2004-12-03 Helge Hess + * OpenChange/MAPIStoreMailFolder.m + (-predecessorChangeListForMessageWithKey:): the returned list must + be binary ordered by GUID (as specified in the SPEC). We now do so + using the new function below. + (-getPidTagMessageClass:inMemCtx:): removed method, as folders are + not supposed to return a PidTagMessageClass attribute. - * v0.9.69 + * OpenChange/MAPIStoreTypes.m (MAPICNCompare): added as void * + parameter so that the function can be used as a comparator + function in NSArray sort methods. + (MAPIChangeKeyGUIDCompare): new comparator function to compare the + GUID of two change key streams. - * UIxFilterList.m: added support for script creation + * OpenChange/MAPIStoreGCSMessage.m (-updateVersions): new proxy + method for -[MAPIStoreGCSFolder + updateVersionsForMessageWithKey:withChangeKey:]. - * v0.9.68 - - * UIxFilterList.m: added ability to trigger new editor - - * started UIxSieveEditor - - * UIxFilterList.wox: minor fix to table layout (v0.9.67) - -2004-11-28 Helge Hess + * OpenChange/MAPIStoreGCSBaseContext.m + (+createRootSecondaryFolderWithFID:andName:forUser:): setup the + userContext in the MAPIApp object. - * UIxFilterList.m: use toOneRelationshipKeys to retrieve the filters - being displayed (v0.9.66) + * OpenChange/MAPIStoreMailContext.m + (+createRootSecondaryFolderWithFID:andName:forUser:): setup the + userContext in the MAPIApp object. -2004-11-27 Helge Hess + * OpenChange/MAPIStoreContactsFolder.m + (-getPidTagDefaultPostMessageClass:inMemCtx:): new getter. - * v0.9.65 - - * added first (empty) version of filter list page - - * UIxMailEditorAttach.m: fixed a warning + * OpenChange/MAPIStoreCalendarFolder.m + (-getPidTagDefaultPostMessageClass:inMemCtx:): new getter. - * UIxMailAccountView.wox, product.plist: cleaned up account page (links - work now), added a compose button (v0.9.64) + * OpenChange/MAPIStoreTasksFolder.m + (-getPidTagDefaultPostMessageClass:inMemCtx:): new getter. -2004-11-15 Marcus Mueller + * OpenChange/MAPIStoreFolder.m + (-getPidTagDefaultPostMessageClass:inMemCtx:): new getter. - * UIxMailEditor.m: properly set "From" header (v0.9.63) + * OpenChange/MAPIStoreMessage.m + (-getPidTagMessageStatus:inMemCtx:): removed useless getter. -2004-11-11 Helge Hess + * OpenChange/MAPIStoreSOGo.m (sogo_backend_init): check for + "SOGoDebugLeaks" in the user defaults and activate GSDebug + allocation utilities. - * UIxMailListView.wox: added sample move popup (v0.9.62) + * OpenChange/NSData+MAPIStore.m (+dataWithChangeKeyGUID:andCnt:): + new method replacing _dataFromChangeKeyGUID:andCnt: from + MAPIStore{GCS,Mail}Folder. + +2012-03-16 Jean Raby -2004-11-09 Helge Hess + * sogo.spec debian/sogo.postint: upon installation, update timestamp + on WebServerResources/* to let the webserver know the files changed. + Should fix issues where browsers would use a locally cached version + of a resource when the sogo package have just been upgraded. - * UIxMailListView.m: added support for toggling read/unread flags - (v0.9.61) +2012-03-15 Francis Lachapelle + + * UI/WebServerResources/generic.js (onPreferencesClick): don't + allow the user to open the preferences window multiple times. + + * UI/WebServerResources/SOGoDragHandles.js (enableRightSafety): + new method to display a "safety" block on top of the right block + when dragging the handle. This fixes a problem when the right + block contains an instance of CKEditor. + +2012-03-14 Francis Lachapelle + + * UI/MailerUI/UIxMailFolderActions.m (-deleteAction): we now + unconditionaly unsubscribe from the folder and subscribe to the + folder moved to the trash. + + * SoObjects/Mailer/SOGoMailFolder.m (-renameTo): idem. + + * UI/WebServerResources/UIxPreferences.js (focusCKEditor) + (hideSignature): new functions to wait until the CKEditor is ready + before performing certain actions. Fixes a problem with IE. + + * UI/WebServerResources/SOGoTimePicker.js (position): new method + to be able to recompute the position of the widget. + + * UI/WebServerResources/UIxAppointmentEditor.js + (refreshAttendees): when changing the attendees, we recompute the + position of the time pickers because the attendees link could + shift up or down the time fields. + +2012-03-13 Francis Lachapelle + + * UI/WebServerResources/UIxFilterEditor.js (savePreferences): + only save the filters if there's at least one rule and one action defined. + + * UI/WebServerResources/ContactsUI.js (configureDraggables): + increased the delay before starting drag and drop. + + * UI/WebServerResources/MailerUI.js (configureDraggables): idem. + + * UI/WebServerResources/UIxAclEditor.js (addUser): fixed + positioning of new user. + +2012-03-13 Wolfgang Sourdeau + + * OpenChange/MAPIStoreCalendarFolder.m + (-getPidTagDefaultPostMessageClass:inMemCtx:): new getter. + + * OpenChange/MAPIStoreFolder.m + (_modifyPermissionEntryForUser:withRoles:isAddition:withACLFolder:): + skip any modification when user is nil. + (_usernameFromEntryId:): when the bytes array is nil or is empty, + we return a nil username. + (-modifyPermissions:withCount:andFlags:): ignore the presence of + certain fields but not others depending on the requested + modification. - * UIxMailTree.m: added tree navigation code from SoObjects (v0.9.60) +2012-03-12 Francis Lachapelle - * UIxMailTree.m: removed unused code (v0.9.59) + * SoObjects/SOGo/WORequest+SOGo.m (-isIPhoneAddressBookApp): catch + the user agent of iOS 5.0.1 on iPad. - * UIxMailListView.m: flush mail caches in the getMail action (v0.9.58) +2012-03-12 Wolfgang Sourdeau -2004-10-29 Helge Hess + * OpenChange/MAPIStoreGCSFolder.m (-lastMessageModificationTime): + force a synchronisation from here to ensure that the cache is + up-to-date. - * UIxMailEditor.m: reenabled deletion of temporary mail files (v0.9.57) + * OpenChange/MAPIStoreTypes.m (_reverseCN): fixed used of ull + constants on 32 bit platforms. -2004-10-28 Helge Hess + * OpenChange/MAPIStoreGCSFolder.m (-componentQualifier): now + provided by the parent class itself. + (-contentComponentQualifier): new method that returns a qualifier + that translated to "c_content like '%BEGIN:XXX%'". This is a hack + to work-around the fact that calendar folders may content both + vevent and vtodo and that c_component, being part of the quick + table, is no longer available when a record is deleted. + (-synchroniseCache): update version values for deleted records + too, by taking into account the fact that their c_version value + might still be 0. Make use of contentComponentQualifier above. + Remove the modified records from the SOGoGCSFolder cache. + (-getDeletedKeysFromChangeNumber:andCN:inTableType:): wander the + list of deleted records and no longer increase the change number, + as this is now done from "synchroniseCache". Also, handle the case + were deleted records might already have been reported by comparing + their change number to the one provided as parameter. The + resulting change number is now guaranteed to be the highest one. + (-component): new subclassable method that returns a string + matching the folder's handled component. + + * OpenChange/MAPIStoreFolder.m + (-getPidTagLocalCommitTimeMax:inMemCtx:): returns + MAPISTORE_ERR_NOT_FOUND if the resulting date is nil. + + * OpenChange/MAPIStoreGCSMessage.m + (-getPidTagPredecessorChangeList:inMemCtx:): when the list is + missing, request a synchronisation from the container as the + message might now have been synchronised yet... + + * OpenChange/MAPIStoreTypes.m (MAPICNCompare): new function that + returns an NSComparisonResult for two change numbers (reverse + format). + +2012-03-11 Wolfgang Sourdeau + + * OpenChange/MAPIStoreCalendarMessage.m + (-getPidLidAppointmentMessageClass:inMemCtx:): returns "IPM.Appointment". + (-getPidLidSideEffects:inMemCtx:): returns the value specified in + OXOCAL, section 2.2.2.2. + (_fixupAppointmentObjectWithUID:): renamed method and made more + generic, in order to handle the case where the response record has + already been deleted. + (-save): handle organizer and attendees more in compliance with + the spec, in order to avoid ending up with an empty event when an + invitation is being replied to. Of course, the documentation + happened to be inexact with regardes to the value of + "PidTagRecipientTrackStatus", which can be 5 even though the user + replied with another value... Also, lowered the priority of + SOGo-specific hacks for setting the organizer. + +2012-03-09 Wolfgang Sourdeau + + * OpenChange/MAPIStoreMailVolatileMessage.m (-submitWithFlags:): + skip any message that is not of class "IPM.Note", in order to + avoid sending invitations or responses. + + * SoObjects/Mailer/SOGoMailFolder.m (-renameTo:): reset the + imap4URL to nil and change the nameInContainer after a successful + operation. + + * OpenChange/MAPIStoreFolder.m + (-getTable:andRowCount:tableType:andHandleId:): if the current + user is not the owner of the folder, the permissions table cannot + be open and MAPISTORE_ERR_DENIED is now returned. + + * SoObjects/Contacts/NGVCard+SOGo.m + (_setupEmailFieldsInLDIFRecord:): the value of card elements were + not properly extracted when no email field were of type "home" or + "work". + +2012-03-08 Francis Lachapelle + + * UI/WebServerResources/generic.js (getTopWindow): extend the + attributes of document.body before calling "hasClassName" to fix + an error with IE9. + +2012-03-08 Wolfgang Sourdeau + + * OpenChange/MAPIStoreFolder.m: commented out key cache ivars + (temporarily). + + * OpenChange/MAPIStoreContext.m (-getRootFolder:inMemCtx:): do not + store the looked up folders when they are not descendants of + SOGoObject. Return MAPISTORE_ERR_NOT_FOUND when the looked up + folder is owner by the current user and MAPISTORE_ERR_DENIED + otherwise. + + * OpenChange/MAPIStoreGCSFolder.m (-synchroniseCache): ensure that + any record that are marked as updated are removed from the record + cache of the corresponding SOGoGCSFolder instance. + + * OpenChange/MAPIStoreFolder.m (-getPidTagSubFolders:inMemCtx:): + invoke [self folderKeys] rather than the corresponding ivar. + + * OpenChange/MAPIStoreTypes.m (NSObjectFromMAPISPropValue) + (NSObjectFromSPropValue): treat PT_ERROR just as PT_LONG. + +2012-03-06 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailFolder.m + (-archiveUIDs:inArchiveNamed:inContext:): output filename is now + escaped without its extension. + + * SoObjects/Contacts/NGVCard+SOGo.m + (-_setupEmailFieldsInLDIFRecord:): simplified code and fixed a bug + where the home mail would be taken for both first and second email + fields when no work mail was present. + +2012-03-02 Wolfgang Sourdeau + + * OpenChange/MAPIStoreAppointmentWrapper.m,, + OpenChange/MAPIStoreAttachment.m, + OpenChange/MAPIStoreCalendarAttachment.m, + OpenChange/MAPIStoreCalendarMessage.m, + OpenChange/MAPIStoreContactsAttachment.m, + OpenChange/MAPIStoreContactsMessage.m, + OpenChange/MAPIStoreFAIMessage.m, + OpenChange/MAPIStoreFSMessageTable.m, + OpenChange/MAPIStoreFolder.m, OpenChange/MAPIStoreFolderTable.m, + OpenChange/MAPIStoreGCSFolder.m, OpenChange/MAPIStoreGCSMessage.m, + OpenChange/MAPIStoreGCSMessageTable.m, + OpenChange/MAPIStoreMailAttachment.m, + OpenChange/MAPIStoreMailFolder.m, + OpenChange/MAPIStoreMailMessage.m, + OpenChange/MAPIStoreMailMessageTable.m, + OpenChange/MAPIStoreMessage.m, OpenChange/MAPIStoreNotesMessage.m, + OpenChange/MAPIStoreObject.m, + OpenChange/MAPIStorePermissionsTable.m, + OpenChange/MAPIStoreTasksMessage.m, + OpenChange/MAPIStoreVolatileMessage.m: updated name of getters to + reflect the new nomenclature. + + * OpenChange/NSArray+MAPIStore.[hm]: updated to new name of + handled structs. + + * OpenChange/gen-property-selectors.py: adapted for new getters + name, based on new property names. Added all new clashing + properties to bannedProps. + +2012-03-02 Jean Raby + + * Scripts/sogo-backup.sh: new script to automate backups. + Updated sogo.cron to include a commented out entry for sogo-backup.sh + Include updates.php in the packages + +2012-03-01 Wolfgang Sourdeau + + * SoObjects/SOGo/LDAPSource.m (_convertRecordToLDAPAttributes): + make sure no field get listed twice in the list of valid field + names by using "removeDoubles". + (_makeLDAPChanges): don't bother checking whether the removed + attributes are strings. + + * SoObjects/SOGo/NSArray+Utilities.m (-[NSMutableArray + removeDoubles]): new method removing doublons. + +2012-03-01 Francis Lachapelle + + * UI/WebServerResources/ContactsUI.js (appendAddressBook): assume + that lists can be created in the new addressbook. + +2012-02-28 Wolfgang Sourdeau + + * OpenChange/MAPIStoreMailFolder.m + (-moveCopyMessagesWithMIDs:andCount:fromFolder:withMIDs:andChangeKeys:wantCopy:): + we sync the version cache with the folder in order to update the + target message change keys, which was causing versioning issues + with Outlook 2010. + + * OpenChange/gen-property-selectors.py: bannedProps is now an + array instead of a dict of "True" values. + Added "PrOabContainerGuid" to bannedProps. + +2012-02-27 Wolfgang Sourdeau + + * OpenChange/MAPIStoreUserContext.m (-rootFolders:): + -[NGImap4Connection enableExtensions:] now takes an array of + strings rather than a single string argument. + +2012-02-24 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailFolder.m: ensure the imap connection is + available before performing certain operations, otherwise return + an exception. This only applies on methods that return an + exception, others were left untouched. + +2012-02-23 Wolfgang Sourdeau + + * OpenChange/MAPIStoreMailContext.m + (+listContextsForUser:withTDBIndexing:inMemCtx:): added back + "trashName". + + * SoObjects/Appointments/SOGoCalendarComponent.m + (-sendEMailUsingTemplateNamed:forObject:previousObject:toAttendees:withType:): + added a "msgType" parameter that is added as value to the new + "x-sogo-message-type" header. + (-sendIMIPReplyForEvent:from:to:): added a "x-sogo-message-type" + to the headers. + + * OpenChange/MAPIStoreMailContext.m + (+listContextForUser:withTDBIndexing:inMemCtx:): make sure special + folders have all the "folder" prefixes appended to their list of + names (for nested folders). + + * OpenChange/MAPIStoreContext.m + (+createRootFolder:withFID:andName:forUser:withRole:): when the + creation of a folder fails in the proper contact, fallback on the + fallback context. + + * SoObjects/Mailer/SOGoMailAccount.m + (-toManyRelationshipKeysWithNamespaces:): for some reason, we were + explicitly returning the drafts folder name in the batch whether + the corresponding folder exists or not, which is useless and + wrong since the folder in question might actually be a child of + another folder. + + * OpenChange/MAPIStoreContext.m (-init): restored "containersBag" + mechanism where root context folders that are deeper than the + first level of their hierarchy needs to have their parent folders + retained. + +2012-02-23 Jean Raby + + * debian/rules: add a symlink to let gdb find debugging symbols + for libSOGo on debian/ubuntu. (gdb bug #9538) + +2012-02-22 Francis Lachapelle - * product.plist: fixed getMail for drafts folder (v0.9.56) + * SoObjects/SOGo/SOGoUserManager.m + (-authenticationSourceIDsInDomain:): when looking for a specific + domain, also return sources that are not associated to a domain. - * UIxMailListView.wox: fixed viewer activation for unread mails - (v0.9.55) + * SoObjects/SOGo/SOGoSource.h + (-lookupContactEntryWithUIDorEmail:inDomain:): changed this method + of the protocol to specify a domain. + (-fetchContactsMatching:inDomain:): idem. -2004-10-28 Helge Hess + * SoObjects/Contacts/SOGoContactFolder.h + (-lookupContactsWithFilter:onCriteria:sortBy:ordering:inDomain:): + changed this method of the protocol to specify a domain. - * UIxMailMoveToPopUp.m: fixed header (v0.9.54) + * UI/WebServerResources/UIxAclEditor.js (addUser): fixed case when + both canSubscribeUsers and isPublicAccessEnabled are disabled. -2004-10-27 Helge Hess + * SoObjects/SOGo/SQLSource.m + (-_lookupContactEntry:considerEmail:inDomain:): if the configuration + parameter DomainFieldName is defined for the source, set the user + domain to the value of this field. + (-fetchContactsMatching:inDomain:): when the configuration parameter + DomainField is defined, limit the results to the entries matching + the specified domain. - * disabled popup until it uses the proper tree (v0.9.53) + * SoObjects/SOGo/SOGoUserManager.m (-sourceIDsInDomain): if the + source is not associated to a domain, set it to the requested + domain. It will be used by sources with dynamic domain assignation. -2004-10-27 Marcus Mueller +2012-02-22 Wolfgang Sourdeau - * UIxMailMoveToPopUp.[m|wox]: component which renders a popup - containing possible destinations for a mail move operation (v0.9.52) + * SoObjects/SOGo/SQLSource.m (_lookupContactEntry:considerEmail:): + make sure the value of column pointer to by _kindField is not nil, + nor an NSNull instance before treating it like a string. + Use the value of "_imapHostField", when available, to map the + "c_imaphostname" value of the contact/user record. + (-init): new "_imapHostField" ivar, holder of the value of + IMAPHostFieldName of the source configuration dictionary. + +2012-02-21 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoSQLUserProfile.m (-fetchJSONProfileFromDB): + removed an escaping hack for Oracle that should no longer be + required after the recent fixes in the Oracle adaptor, and which + was causing bad unescaping of double-escaped backslashes. + + * Tests/Unit/TestSBJsonParser.m (-test_parseJSONString): added a + line for escaped characters. + + * SoObjects/Appointments/SOGoAppointmentFolders.m + (-davEventsDefaultClassification,) + (setDavEventsDefaultClassification:) + (-davTasksDefaultClassification) + (-setDavTasksDefaultClassification:): new DAV accessors for the + default classification preferences. + + * Tests/Integration/test-default-classification.py: new test + module for setting/getting defaults classification preferences. + +2012-02-20 Wolfgang Sourdeau + + * UI/Scheduler/UIxComponentEditor.m (-setComponent:): fetch + default classification from user defauts. + + * UI/PreferencesUI/UIxPreferences.m + (-calendarClassificationsList): new getter for the list of + classifications. + (-itemClassificationText): new i81n getter. + (-setEventsDefaultClassification:, -eventsDefaultClassification) + (-setTasksDefaultClassification:, -tasksDefaultClassification): + new accessors. + + * SoObjects/SOGo/SOGoUserDefaults.m + (-setCalendarEventsDefaultClassification:) + (-calendarEventsDefaultClassification) + (-setCalendarTasksDefaultClassification:) + (-calendarTasksDefaultClassification): new accessors related to + the user-configured default classification of calendar components. + + * UI/Scheduler/UIxComponentEditor.m: s/privacy/classification/g, + which is a better description for the "CLASS" attribute. -2004-10-27 Helge Hess +2012-02-20 Francis Lachapelle - * UIxMailEditor.m: default method returns a redirect to 'edit', added - 'delete' action and button (v0.9.51) + * UI/WebServerResources/UIxMailEditor.js (onWindowResize): we now + make use of the ckeditor javascript api to reszie the container. - * v0.9.50 +2012-02-20 Wolfgang Sourdeau - * UIxMailEditor.m: send mail using draft object + * OpenChange/MAPIStoreGCSFolder.m (-setDisplayName:): new method + that intercept the setting of PR_DISPLAY_NAME_UNICODE following + the mechanism described below. + (-getPrDisplayName:inMemCtx): overriden method. - * UIxMailListView.wox: do not wrap title line + * OpenChange/MAPIStoreGCSBaseContext.m (+folderNameSuffix): new + method that returns an optional suffix to differentiate between + SOGo folders that are common to multiple Outlook folders, in + particular for Calendar and Tasks folder. + (+getFolderDisplayName:): new utility method that returns a + display name with the above suffix added properly. - * UIxMailEditor.m: added send related code (v0.9.49) + * OpenChange/MAPIStoreObject.m (-setMAPIRetainCount) + (-retainCount): removed accessors as well as the corresponding + "mapiRetainCount" ivar as this was part of an unused feature. -2004-10-26 Helge Hess +2012-02-16 Francis Lachapelle - * UIxMailEditorAttach.m: added attachment delete (v0.9.48) + * UI/WebServerResources/UIxAttendeesEditor.js (checkAttendee): + stop observing events on input field before removing the row, + otherwise the blur event is triggered and generates an error. - * UIxMailEditorAttach.wox, mailer.css: work on layout, added delete - action (v0.9.47) +2012-02-14 Francis Lachapelle - * added new UIxMailEditorAttach component to manage draft attachments - (v0.9.46) + * UI/WebServerResources/ContactsUI.js (contactsListCallback): when + restoring selection after the folder refresh, call "selectElement" + on each row. This fixes the contacts selection retrieval when using the + contextual menu. -2004-10-25 Helge Hess +2012-02-14 Wolfgang Sourdeau - * v0.9.45 + * SoObjects/SOGo/SOGoUserManager.m (_compactAndCompleteContacts:): + we make sure that "source" is not nil before assigning it to the + compact record. - * uix.css: replaced invalid "text-color" with "color" - - * UIxMailEditor.wox: bind subject/text, can load/save info object in - draft + * SoObjects/SOGo/SQLSource.m (_lookupContactEntry:considerEmail:): + assign self as value for "source" in the returned record. + (-fetchContactsMatching): same as above. -2004-10-22 Marcus Mueller + * SoObjects/SOGo/SOGoSQLUserProfile.m (_sqlJsonRepresentation:): + removed obsolete method. + (-storeJSONProfileInDB:): we now properly escape the stored value + via the adaptor methods and by using a hacking EOAttribute + instance (FIXME). - * v0.9.44 + * OpenChange/MAPIStoreMailFolder.m (-ensureFolderExists): new + method that attempts to create a folder when it does not exists + and returns NO if that creation failed or YES in any other case. + (-createFolder:withFID:andKey:): rc was never initialized when in + success code. + (-messageKeysMatchingQualifier:andSortOrderings:) + (-folderKeysMatchingQualifier:andSortOrderings:) + (-permissionEntries): invoke "ensureFolderExists" prior to any + operation. - * UIxMailSortableTableHeader.[wox|m]: new component for doing sorting + * OpenChange/MAPIStoreContext.m + (+createRootFolder:withFID:andName:forUser:withRole:): removed the + "andTDBIndexing:" argument. + (+createRootSecondaryFolderWithFID:andName:forUser:): same as + above. - * UIxMailListView.wox: uses UIxMailSortableTableHeader for sorting + * OpenChange/MAPIStoreCalendarMessage.m + (-subscriberCanReadMessage): returns YES when the current role is + ComponentDAndTViewer too. - * UIxMailListView.wox: bugfixes (v0.9.43) +2012-02-13 Wolfgang Sourdeau - * v0.9.42 + * UI/WebServerResources/JavascriptAPIExtensions.js + (String.asCSSIdentifier): escape the "+" character as its going to + be used in a regexp. - * UIxMailListView.wox: sorting, proper handling of sort keys. - NOTE: there's still an unidentified bug of sort keys failing to be - retained on successive paging. +2012-02-13 Wolfgang Sourdeau - * UIxMailListView.m: sorting + * UI/Contacts/UIxContactView.m (-photoURL, -hasPhoto): copied code + from UIxContactEditor, thereby replacing "photosURL". - * Images/title_*: corrected alpha values +2012-02-10 Wolfgang Sourdeau -2004-10-20 Marcus Mueller + * UI/MailPartViewers/UIxMailPartHTMLViewer.m (+initialize): added + all simple tag to "VoidTags", based on list from + http://www.w3.org/TR/html4/index/elements.html. - * v0.9.41 - - * UIxMailListView.wox: localized labels and added some JavaScript - templates for doing nifty row selection + * UI/WebServerResources/JavascriptAPIExtensions.js + (String.asCSSIdentifier): same as below. - * UIxMailListView.m: added JavaScript method (stub only) + * SoObjects/SOGo/NSString+Utilities.m (-setupCSSEscaping): add + "_P_" as escaping sequence for "+". - * English.lproj/default.strings: new localized strings + * UI/MailPartViewers/UIxMailPartHTMLViewer.m (+initialize): added + all simple tag to "VoidTags", based on list from + http://www.w3.org/TR/html4/index/elements.html. -2004-10-13 Helge Hess +2012-02-10 Francis Lachapelle - * v0.9.40 + * UI/WebServerResources/generic.js (openMailTo): recipients are + now a JSON string (see commit of February 2nd). - * product.plist: exported some missing icons + * UI/MailPartViewers/UIxMailPartHTMLViewer.m + (-startElement:namespace:rawName:attributes:): we should not add + end tags to void tags (ex:
). - * UIxMailToSelection.m: some code cleanup +2012-02-08 Francis Lachapelle - * UIxMailEditor.m (UIxComponent): added ivars for values + * SoObjects/SOGo/SOGoGCSFolder.m (+webdavAclManager): must include + "write" in the "current-user-privilege-set" so the latest version + of AddressBook.app (bundled with 10.7.3) knows the personal + addressbook is writable by the owner. -2004-10-13 Marcus Mueller + * UI/WebServerResources/UIxAttendeesEditor.js + (performSearchCallback): set the uid parameter to null instead of + an empty string when the returned contact has no uid (ie, it comes + from a personal addressbook). - * UIxMailToSelection.m: sanitize CN's a bit before using them (v0.9.39) +2012-02-06 Wolfgang Sourdeau - * v0.9.38 + * SoObjects/SOGo/LDAPSource.m: escape built DNs using the new + -[NSString escapedForLDAPDN] method. - * UIxMailToSelection.[wox|m]: removed superfluous debug messages +2012-02-03 Francis Lachapelle - * UIxMailAdressbook.[wox|m]: redirect cover for Addressbook and Anais + * UI/WebServerResources/UIxMailEditor.js (onRemoveAttachments): + instead of extracting the filename from the text nodes under the + list element, we now use the title attribute. This fixes an issue + with IE that would append an extra space to the filename. - * mailer.js: new JavaScript to open Addressbook and Anais windows +2012-02-03 Wolfgang Sourdeau - * product.plist: added Addressbook/Anais entries + * OpenChange/MAPIStoreFolderTable.m + (-evaluatePropertyRestriction:intoQualifier:): overriden method to + always return true for restrictions on PR_CHANGE_NUM, in order to + help the fxics mechanism. -2004-10-12 Marcus Mueller + * OpenChange/MAPIStoreFolder.m (-deleteFolder): cleanup the caches + in order to let the folder disappear. - * v0.9.37 + * OpenChange/MAPIStoreSOGo.m (sogo_backend_create_root_folder): + new backend method. - * UIxMailToSelection.[wox|m]: stable version with heavily improved - JavaScript code. + * OpenChange/MAPIStoreFolder.m (-createFolder:withFID:andKey:): + modified method to return a enum mapistore_error, in order to + better determine of the failures that occur. - * English.lproj/default.strings: new localizable strings + * OpenChange/MAPIStoreMailFolder.m (-deleteFolder): overriden method. -2004-10-12 Helge Hess + * SoObjects/Mailer/SOGoMailFolder.m (-exists): new method that + returns whether an IMAP folder exists or not yet. - * UIxMailEditor.m: enabled -takeValuesFromRequest: (v0.9.36) +2012-02-02 Francis Lachapelle -2004-10-12 Marcus Mueller + * UI/MailerUI/UIxMailMainFrame.m (-composeAction): recipient + addresses are now passed as a JSON-formatted string. - * UIxMailToSelection.[m|wox]: parse given arguments and conditionally - split lists. Dynamically create tables and JavaScript. (v0.9.35) + * UI/MailerUI/UIxMailAccountActions.m (-composeAction): the + received "mailto" parameter is now a JSON-formatted string; we + parse it accordingly. - * UIxMailToSelection.wox: minor update (v0.9.34) +2012-02-01 Wolfgang Sourdeau - * v0.9.33 + * OpenChange/MAPIStoreUserContext.m (-destroy): dont't release + "username" as it is not initially retained. + (+userContextWithUsername:andTDBIndexing:): the resulting instance + is cached in the table from here instead. - * UIxMailToSelection.[wox|m]: updated + * OpenChange/MAPIStoreTable.m (-destroyHandle:): skih operation if + the handle parameter is 0. - * English.lproj/default.strings: new localizable strings + * OpenChange/SOGoMAPIFSMessage.m (-delete): returns the exception + rather than raising it. - * v0.9.32 + * OpenChange/SOGoMAPIFSFolder.m (-delete): new method that removes + the directory from the filesystem. - * UIxMailEditor.wox: changed API for UIxMailToSelection - - * UIxMailToSelection.[wox|m]: new component template + * OpenChange/MAPIStoreGCSFolder.m (-deleteFolder): overriden method. - * English.lproj/default.strings: new localizable strings + * OpenChange/MAPIStoreFolder.m (-deleteFolder): implemented method. - * README: updated + * SoObjects/SOGo/SOGoParentFolder.m (-removeSubFolder): new method + that removes a subfolder entry from the folder cache. -2004-10-12 Helge Hess + * OpenChange/MAPIApplication.m (-setUserContext:): do not retain + the user context. - * v0.9.31 +2012-02-01 Francis Lachapelle - * mailer.js: prepared JavaScript functions for editor + * UI/WebServerResources/UIxCalUserRightsEditor.js (onUpdateACL): + added some serious warnings when giving access rights to any + authenticated users or public access. - * UIxMailMainFrame.wox: embed all content in a form called 'pageform' + * UI/WebServerResources/UIxMailUserRightsEditor.js (onUpdateACL): idem. -2004-10-11 Helge Hess + * UI/WebServerResources/UIxContactsUserRightsEditor.js (onUpdateACL): idem. - * v0.9.30 + * UI/Common/UIxUserRightsEditor.m (-folderName): new method that + returns the folder display name. + (-userDisplayName): now also return the names of anonymous and + authenticated users. - * UIxMailEditor.wox: moved recipient selection to an own component - (UIxMailToSelection) +2012-01-31 Francis Lachapelle - * UIxMailMainFrame.wox: fixed script link + * SoObjects/SOGo/WOResourceManager+SOGo.m + (-pathToLocaleForLanguageNamed:): if the language has a CamelCase + form, add the first part to the lookup languages. - * v0.9.29 +2012-01-31 Wolfgang Sourdeau - * product.plist: trigger UIxMailEditorAction for compose instead of - returning the mail editor page, mapped missing toolbar actions + * OpenChange/MAPIStoreMailContext.m + (+listContextsForUser:withTDBIndexing:inMemCtx:): now returns + secondary folders. + (+[MAPIStoreOutboxContext + listContextsForUser:withTDBIndexing:inMemCtx:]): overridden method + in outbox-specific class. - * UIxMailEditorAction.m: implemented -compose as a redirect to a new - object in the account draft folder +2012-01-30 Wolfgang Sourdeau - * UIxMailListView.wox: reduced subject width to 50% + * OpenChange/MAPIStoreMailFolder.m (-addProperties): overriden + method in order to intercept rename operations. + (-initWithSOGoObject:inContainer:): removed obsolete method. - * mailer.css: added send icon class, icon itself still missing + * OpenChange/MAPIStoreGCSFolder.m (-addProperties): overriden + method in order to intercept rename operations. - * started UIxMailEditorAction object which will contain all the - redirects from the buttons to the mail editor (working on draft - objects in the drafts folder) (v0.9.28) + * SoObjects/Mailer/SOGoMailFolder.m (-renameTo:): new method, + implementing most of the code from [UIxMailFolderActions + renameFolderAction]. -2004-10-10 Helge Hess + * OpenChange/MAPIStoreFallbackContext.m + (+listContextsForUser:withTDBIndexing:inMemCtx:): now returns the + fallback subfolders as secondary contexts (tmp hack). - * product.plist: added some configuration for the drafts folder - (v0.9.27) + * OpenChange/MAPIStoreUserContext.m (-rootFolders): new method + replacing the "...root" methods in way that can match the + MAPIModuleName. -2004-10-06 Helge Hess + * OpenChange/MAPIStoreGCSBaseContext.m + (+listContextsForUser:inMemCtx:): centralized code for all GCS + classes. - * UIxMailListView.m: added support for paper clip icon when messages - are bigger than a certain size (v0.9.26) +2012-01-30 Francis Lachapelle -2004-10-05 Helge Hess + * UI/WebServerResources/UIxCalUserRightsEditor.js (onUpdateACL): + ask confirmation when giving access to all authenticated users or + when giving public access. - * v0.9.25 + * UI/WebServerResources/UIxMailUserRightsEditor.js (onUpdateACL): idem. - * UIxMailListView.m: added sort icons + * UI/WebServerResources/UIxContactsUserRightsEditor.js (onUpdateACL): idem. - * UIxMailEditor.m: more work on editor + * UI/WebServerResources/SchedulerUI.js (onViewEventCallback): + moved start/end time just under the event name. - * mailer.css: added compose div classes + * UI/WebServerResources/generic.js (showConfirmDialog): this + function now accepts two additional arguments to change the + default "yes" and "no" buttons. - * UIxMailListView: removed href for JavaScript onclick links (v0.9.24) +2012-01-29 Wolfgang Sourdeau - * v0.9.23 - - * product.plist: fixed addressbook label - - * UIxMailToolbar: added support for 'onclick' event handlers - - * UIxMailEditor: started editor + * OpenChange/MAPIStoreMailContext.[hm]: removed + "MAPIStoreInboxContext", "MAPIStoreSentItemsContext", + and child folders."MAPIStoreDraftsContext" and + "MAPIStoreOutboxContext" which have made obsolete by the new + provisioning and instantiation mechanisms. - * UIxMailListView.m: added sorting to table view + * OpenChange/MAPIStoreContext.m (-woContext:, -mapping) + (-authenticator): those methods are now part of + MAPIStoreUserContext. + (-setupBaseFolder:): removed method, obsoleted by those below. + (-getRootFolder:withFID:): the "root folder" is now instantiated + by lookups from the root folder provided by the user context and + the chain of folders listed in the context url path. + (-MAPIStoreFolderClass): new method returning the Class object + representing the context's class of objects. + (-rootSOGoFolder): new method that returns the proper root folder + depending on the context's class of objects. - * v0.9.22 + * OpenChange/MAPIStoreFolder.m (-initWithURL:inContext:): all + folders are now instantiated the same way since root objects are + now stored in the MAPIStoreUserContext instancesB. + (-setContext:): new setter to provide a reference to the folder's + mapistore context instance from the topmost parent. + (-setupVersionsMessage:): new helper method invoked during the + folder instantiations, from the moment its parent context has been + made available, which does not occur at the same moment for parent + and child folders... - * UIxMailToolbar.wox: added support for 'target' links + * OpenChange/MAPIApplication.m (-init): removed the "mapiContext" + but added the "userContext" ivars. - * UIxMailEditor.wox: use standard mail frame + * SoObjects/SOGo/SOGoFolder.m (-outlookFolderClass): removed + useless method. - * v0.9.21 + * OpenChange/MAPIStoreUserContext.[hm]: new class for accessing + user data common to all "mapistore contexts" as a singleton: the + same instance is used across all requests until all related + objects have been freed. - * UIxMailTree: made toolbar configurable using 'toolbar' slot on the - clientObject +2012-01-27 Ludovic Marcotte - * product.plist: added toolbar configurations + * SoObjects/Appointments/SOGoAppointmentFolder.m + (bareFetchFields: ...) - we now cache the returned + results - just like for fetchFields:... - * UIxMailMainFrame.wox: moved toolbar to own component + * SoObjects/Appointments/SOGoAppointmentFolderObject.m + (_folderCalenars) - we now ask for the c_content and use + a local autorelease pool to avoid consuming too much memory - * UIxMailListView: added simple navigation (v0.9.20) +2012-01-26 Wolfgang Sourdeau - * v0.9.19 + * OpenChange/MAPIStoreCommonViewsContext.[hm], + OpenChange/MAPIStoreDeferredActionsContext.[hm], + OpenChange/MAPIStoreFreebusyContext.[hm], + OpenChange/MAPIStoreJournalContext.[hm], + OpenChange/MAPIStoreRemindersContext.[hm], + OpenChange/MAPIStoreScheduleContext.[hm], + OpenChange/MAPIStoreSearchContext.[hm], + OpenChange/MAPIStoreShortcutsContext.[hm], + OpenChange/MAPIStoreSpoolerContext.[hm], + OpenChange/MAPIStoreViewsContext.[hm]: deleted obsolete classes. - * UIxMailPartViewer.m: added content decoding for QP, base64 and 7bit, - added proper charset decoding - - * UIxMailPartTextViewer.m: moved content => NSString conversion to - UIxMailPartViewer.m - - * v0.9.18 - - * UIxMailPartViewer.m: added support methods for caches, added -sleep - method - - * added multipart/alternative viewer - - * added Thunderbird message read/unread icons + * OpenChange/MAPIStoreFolder.m (supportsSubFolders): new + overridable method that returns whether the current folder can + contain subfolders, nowithstanding the right of the current user + to create or access them. + + * OpenChange/MAPIStoreSOGo.m (sogo_backend_list_contexts): new + backend method. + + * OpenChange/MAPIStoreContext.m + (+listAllContextsForUser:inMemCtx:): centralized method for + returning all contexts available from all context classes for one + user. + (+listContextsForUser:inMemCtx:): new individual method invoked by + the above. Overridden by concrete subclasses. + +2012-01-26 Ludovic Marcotte + + * SoObjects/SOGo/LDAPSource.{h,m} - now honor + userPasswordAlgorithm when changing the password with + no password-policy. It'll now be encrypted per your + preference. This fixes #755 + +2012-01-25 Ludovic Marcotte + + * SOPE/GDLContentStore/GCSFolder.m - we now use the proper + method to determine column types, avoiding the generation + of broken UPDATE statements on MySQL when snoozing alarms. + +2012-01-24 Francis Lachapelle + + * UI/Scheduler/UIxCalFolderActions.m (-importAction): failback to + latin-1 when utf-8 decoding doesn't work. + +2012-01-19 Francis Lachapelle + + * UI/WebServerResources/UIxMailToSelection.js + (addressFieldChanged): remove commas before testing email regexp. + +2012-01-17 Wolfgang Sourdeau + + * UI/WebServerResources/UIxFilterEditor.js (setupNewFilterData): + mark new filter as active by default. + +2012-01-17 Francis Lachapelle + + * UI/WebServerResources/UIxPreferences.js (initPreferences): When + the mail composer is set to use HTML, the reply position popup + menu is disabled. When switching to text-based message, + the popup menu is now correctly re-enabled. -2004-10-04 Helge Hess +2012-01-16 Wolfgang Sourdeau - * fixed fetching of mails with only text content (v0.9.17) + * SoObjects/SOGo/SQLSource.m (_lookupContactEntry:considerEmail:) + (fetchContactsMatching:): assigned self to the "source" key of the + returned dictionaries. - * added flat body fetches, used in text viewer (v0.9.16) +2012-01-13 Francis Lachapelle - * added MIME content viewer infrastructure (v0.9.15) + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-caldavFreeBusyRequestOnRecipient:withUID:andOrganizer:from:to:): + if the recipient is not associated to a user (from an + authentication source), verify if it is a contact (from an + addressbook source). If it is, SOGoFreeBusyObject will take care + of fetching the freebusy information if the contact is associated + to a MS Exchange server. - * UIxMailView.m: added 'currentAddress' accessors (v0.9.14) + * SoObjects/Appointments/SOGoFreeBusyObject.m + (-iCalPersonWithUID:): if no user is found from an authentication + source, verify if it matches a contact from an addressbook + source. + (-contentAsStringWithMethod:andUID:andOrganizer:andContact:from:to:): + added new parameter "contactID". - * UIxMailView.m: use core infos stored in message SoObject for display - (v0.9.13) + * SoObjects/Appointments/iCalPerson+SOGo.m (-contactIDInContext:): + new method that tries to associated the person's email address to + a contact ID. -2004-10-03 Helge Hess +2012-01-12 Francis Lachapelle - * v0.9.12 + * SoObjects/SOGo/SOGoSource.h (-bindDN, -bindPassword) + (-MSExchangeHostname): new accessors to the SOGoDNSource protocol. - * UIxMailListView.m: fetch size for list + * SoObjects/SOGo/LDAPSource.m (-_convertLDAPEntryToContact:): + added a reference to the instance source in the returned dictionary. - * UIxMailView.m: cache fetched message for transaction, fetch body - structure + * SoObjects/SOGo/SOGoUserManager.m + (-_compactAndCompleteContacts:): keep the source instance in the + returned dictionary. + + * UI/MainUI/SOGoUserHomePage.m (-readFreeBusyAction): the http + post can now include an optional "uid" parameter to perform the + freebusy lookup on the user corresponding to the specified + uid. This covers the special case where we want to query a user + from a contact source (not an authentication source) and for which + external freebusy information is available (currently limited to a + Microsoft Exchange server with Web Services enabled). + + * SoObjects/Appointments/SOGoFreeBusyObject.m + (-fetchFreeBusyInfosFrom:to:forUser:): new method currently + limited perform a SOAP request to a MS Exhange server to retrieve + the freebusy information of a user. + + * UI/Scheduler/UIxComponentEditor.m (-_loadAttendees): when the + attendee's email address doesn't match a user from the + authentication source(s), perform a lookup in the addressbook + source(s). If the email matches a user from a source with a + MSExchangeHostname, return a concatenation of the active user uid + and this contact uid. + + * UI/WebServerResources/UIxAttendeesEditor.js + (performSearchCallback): if a matching contact has the + "isMSExchange" attribute, prefix the uid with the login uid. + (_performAjaxRequest): query the freebusy information from the + login user (/SOGo/so//freebusy.ifb/ajaxRead?uid=) + when a contact uid is specified. Otherwise, perform the query on + the user instance as usual (/SOGo/so//freebusy.ifb/ajaxRead). + +2012-01-12 Wolfgang Sourdeau + + * OpenChange/MAPIStoreCalendarMessage.m (-save): same as below + + ensure that nil fields are removed from non-new instances. + + * OpenChange/MAPIStoreAppointmentWrapper.m + (-getPrStartDate:inMemCtx:, -getPrEndDate:inMemCtx:): remove the + tz offset from dates in all-day events. + + * OpenChange/MAPIStoreTasksMessage.m (-save): the dates provided + by Outlook for start, due and completed are all-day dates, we thus + need to remove the timezone offset from those dates. + +2012-01-11 Wolfgang Sourdeau + + * OpenChange/MAPIStoreGCSMessageTable.m + (_fixedDatePropertyRestriction:inMemCtx:): attached the result to + the memCtx passed as parameter to avoid a leak. + +2012-01-10 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentObject.m + (_requireResponseFromAttendees:): initialize listHasChanged to NO. + + * OpenChange/MAPIStoreMailFolder.m (_parseCOPYUID): the uniString + buffer was allocated one byte too short. + +2012-01-09 Wolfgang Sourdeau + + * OpenChange/NSObject+MAPIStore.m (-getValue:forTag:inMemCtx:): + handle PT_SVREID just as PT_BINARY. + + * OpenChange/MAPIStoreCalendarFolder.m (-exchangeRightsForRoles): + add the freebusy read rights when the user has read permission on + calendar objects. + +2012-01-05 Francis Lachapelle + + * SoObjects/SOGo/SOGoUserManager.m (-_registerSource:inDomain::): + log error when duplicated IDs are found. + +2012-01-04 Wolfgang Sourdeau + + * UI/WebServerResources/ContactsUI.js + (onAddressBooksMenuPrepareVisibility): the "new list", "sharing" and "import" + options are now greyed out properly, depending on the object type + and the new attributes below. + + * UI/Contacts/UIxContactFoldersView.m + (-currentContactFolderAclEditing) + (-currentContactFolderListEditing): new attribute accessors. + + * SoObjects/SOGo/SOGoFolder.m (-sendFolderAdvisoryTemplate:): + moved method from SOGoGCSFolder in order to make it available to + other folder classes. + + * SoObjects/SOGo/LDAPSource.m (-initFromUDSource:inDomain:): use + the new setters for certain ivars + take the new "abOU" key into + account. + (-setListRequiresDot:, -listRequiresDot:, -setSourceID:) + (-setDisplayName, -displayName, -setModifiers:): new accessors. + (-_convertRecordToLDAPAttributes): we now strip object classes that + are not supported by the server prior to remove the related fields. + (-hasUserAddressBooks): new method that returns whether user + addressbooks are supported, i.e. when "abOU" is set. + (-addressBookSourcesForUser:): when "abOU" is set, returns an + array of LDAPSource instances representing the personal + addressbooks of the specified user. + (-addAddressBookSource:withDisplayName:forUser:) + (-renameAddressBookSource:withDisplayName:forUser:) + (-removeAddressBookSource:forUser:): new methods with a + self-explicit name. + + * SoObjects/Contacts/SOGoContactSourceFolder.m + (-setIsPersonalSource, -isPersonalSource): new accessors for the + "isPersonalSource ivar". + (-lookupName:inContext:acquire:): setup the object classes of the + new entries to "inetorgperson" and "mozillaabpersonalpha". + (-lookupContactsWithFilter:onCriteria:sortBy:ordering:): check + whether "listRequiresDot" is set on the current source and return + the full listing if not required. + (-compare:): enhanced to treat personal sources as if they were + regular GCS folders, in order to sort them properly. + (-delete, -renameTo:): implemented method, required for the + corresponding web methods. + (-ownerInContext:) adapted method to personal sources. + + * SoObjects/Contacts/SOGoContactFolders.m (-appendPersonalSource): + overriden method for returning LDAP-based user addresbook sources. + (-newFolderWithName:andNameInContainer:): idem + (-renameLDAPAddressBook:withDisplayName:): new method that enables + the renaming of LDAP-based user addresbook sources. + (-removeLDAPAddressBook:): new method that enables + the removal of LDAP-based user addresbook sources. + +2012-01-03 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoParentFolder.m (-appendPersonalSources): made + method public so that it can be easily overriden in subclasses. + + * SoObjects/SOGo/SOGoUser.m (-authenticationSource): new method + that returned the SOGoSource instance that successfully recognized + the user represented by the current instance. + + * SoObjects/SOGo/SOGoUserManager.m + (_fillContactInfosForUser:withUIDorEmail:inDomain:): we now set + the identifier of the source that authenticated the specified user + as the "SOGoSource" entry of the returned dictionary. + +2012-01-03 Francis Lachapelle + + * SoObjects/Appointments/SOGoAptMailNotification.m (-setupValues): + don't set the start/end times when dealing with an all-day event. + + * SoObjects/Appointments/SOGoAptMailInvitation.m (-getBody): don't + display the start/end times when dealing with an all-day event. + + * SoObjects/Appointments/SOGoAptMailReceipt.m (-_formattedUserDate:): idem. + + * SoObjects/Appointments/SOGoAptMailUpdate.m (-getSubject): idem. + + * SoObjects/Appointments/SOGoAptMailDeletion.m (-getBody): idem. + +2012-01-02 Francis Lachapelle + + * UI/WebServerResources/UIxPreferences.js (getFilterFromEditor): + return a string (JSON) so the data is properly passed to the + opened window with IE7. + + * UI/WebServerResources/UIxFilterEditor.js (ensureFieldValidity): + a field value is always considered invalid when empty. + +2011-12-30 Wolfgang Sourdeau + + * SoObjects/SOGo/LDAPSourceSchema.[hm]: new class module enabling + schema auto-discovery. + + * UI/WebServerResources/UIxContactEditor.js + (validateContactEditor): the birth date is validated slightly + differently, by enabling empty and 2-digit years as well as single + digits months and days. + + * UI/Contacts/UIxContactView.m (-defaultAction, -dealloc): retain + and release the "card" ivar. + (_formattedURL:): the url should be displayed only if it is + non-nil AND non-empty. + (-vcardAction): removed useless method. + + * UI/Contacts/UIxContactEditor.m (init): removed the "snapshot", + "preferredEmail", "card", "photosURL" and "contactCategories" ivars. + (-ldifRecord): new getter that proxy the invocation to the client + object, but by taking the contactEmail and contactFN url + parameters. Replaces the "-snapshot" getter, since the LDIF record + is now directly edited. + (-addressBooksList): the client object container class is no + longer taken into account when fetching the current user's permissions. + (-supportCategories, -supportPhotos): new getters that enables the + categories and photo tabs. + (-setJsonContactCategories:, -jsonContactCategories): now make + use of the special "vcardcategories" parameter found in the + contact LDIF record. + + * SoObjects/SOGo/SQLSource.m (_lookupContactEntry:considerEmail:): + enhanced to copy the "c_XX" fields to unprefixed equivalents. + + * SoObjects/Contacts/NSString+LDIF.m (mustEncodeLDIFValue): new + method, replacing "_isLDIFSafe" in a clearly public manner. + + * SoObjects/SOGo/LDAPSource.m (-[NGLdapEntry _asDictionary]): new + utility method to convert an entry into a "SOGo LDIF record". + (-[NGLdapAttribute _asArrayOrString]): new utility method to + convert an LDAP attribute into a string or an array of strings + when the attribute has one or more values. + (-initFromUDSource:inDomain:): handle the new "modifiers", + "mapping" and "objectClasses" configuration keys, used when the + source instance is used as an addressbook. All LDAP fields are now + converted to lowercase. + (_searchAttributes): removed method as the special "*" attribute + is not costly enough to justify its existence, thereby reducing + code complexity. + (-lookupContactEntry:, -lookupContactEntryWithUIDorEmail:) + (-lookupLoginByDN:): merged common code in the new + -_lookupLDAPEntry: method, that accepts an EOQualifier as argument. + (--addContactEntry:withID:, -updateContactEntry: and + removeContactEntryWithID:): new methods for editing addressbook + sources. + + * SoObjects/Contacts/SOGoContactSourceFolder.m (-source): new + getter for the "source" ivar. + (-lookupName:inContext:acquire:): accept the creation of new LDIF + entries via web methods ending with "AsContact". + (-saveLDIFEntry:, -deleteLDIFEntry:): new proxy methods for the + new SOGoSource -addContactEntry:withID:, -updateContactEntry: and + removeContactEntryWithID: methods, enabling the creation, + modification and deletion of LDAP contacts. + (-aclsForUser:): implemented method based on the array returned by + -[ modifiers]. + + * SoObjects/Contacts/SOGoContactLDIFEntry.m (-vCard): the vcard is + now generated automatically from the LDIF record of the entry, + using the new method provided by NGVCard+SOGo. + (-aclsForUser:): new overriden method similar to the + implementation from SOGoContentObject. - * work on viewer (v0.9.11) + * SoObjects/Contacts/SOGoContactGCSEntry.m (-setLDIFRecord) + (-ldifRecord, -hasPhoto): new accessors required by the + SOGoContactObject protocol. + (-lookupName:inContext:acquire:): return the only photo element + when the "photo" key is requested, if present in the card. + (-save): now returns an NSException, instead of void. - * UIxMailMainFrame.wox: made toolbar floating (v0.9.10) + * SoObjects/Contacts/SOGoContactEntryPhoto.m + (+entryPhotoWithID:inContainer:, -setPhotoID:): removed methods, + since there can only be one PHOTO element per contact. + (-photo): simplified thanks to the constraint mentionned above. -2004-10-02 Helge Hess + * SoObjects/Contacts/NSDictionary+LDIF.m (-ldifRecordAsString): + new method implementing the code previously found in + SOGo/NSDictionary+Utilities.m, in order to produce a textual + representation of an LDIF record. - * more work on UI (v0.9.9) + * SoObjects/Contacts/NSDictionary+LDIF.[hm]: new category module. + + * SoObjects/Contacts/NGVCard+SOGo.m (-asLDIFRecord): new method + implementing the conversion code previously found in + UIxContactEditor, in order to produce an "LDIF record" in the form + of an NSDictionary matching the inetOrgPerson and + mozillaAbPersonAlpha object classes. + (-updateFromLDIFRecord:) reciprocal method to "-asLDIFRecord", + with conversion code moved from UIxContactEditor. + + * SoObjects/Contacts/SOGoFolder+CardDAV.m (_isValidFilter:): make + use of the lowercase instance of the string, which was erroneously + ignored previously. + +2011-12-29 Ludovic Marcotte + + * SoObjects/SOGo/SOGoSQLUserProfile.m (_sqlJsonRepresentation:): + don't escape the / character as it's generating invalid JSON + output on newer versions of PostgreSQL. + + * Dropped all references to "SOGoMailCheckAllUnseenCounts". We + now check all folders for which filters are defined with a + "fileinto" action - even if they are disable. + + * UI/MailerUI/UIxMailAccountActions.m (_jsonFolders:) - we + use a local autorelease pool in the tight loop to avoid consuming + too many LDAP connections during its execution. + +2011-12-23 Francis Lachapelle - * added formatters for mail list (v0.9.8) + * UI/Scheduler/UIxAppointmentEditor.m (-viewAction): the end + date/time is now also returned. - * v0.9.7 + * UI/PreferencesUI/UIxPreferences.m (-vacationEndDate): return + current date when no end date is defined. - * show messages in an IMAP4 folder + * Tools/SOGoToolUserPreferences.m (-run): fixed possible out of + bound exception when parsing arguments. - * mailer.css: remote calendar CSS not required in mailer +2011-12-22 Francis Lachapelle -2004-09-29 Helge Hess + * UI/Scheduler/UIxTaskEditor.m (-takeValuesFromRequest:inContext:): remove alarms + when no start date is defined. - * added toolbar images (v0.9.6) + * UI/WebServerResources/UIxTaskEditor.js (onTimeControlCheck): + disable the reminder popup menu when no start date is defined. - * UIxMailTree.m: use new tree navigation methods in SoObjects (v0.9.5) +2011-12-15 Ludovic Marcotte + + * SoObjects/SOGo/SOGoSieveManager.m - slightly reworked + the code to use NSURL in order to instanciate the SOPE + Sieve code - that permits using TLS. -2004-09-28 Helge Hess +2011-12-14 Francis Lachapelle - * more work on mailer UI, added tree based on WETreeView (v0.9.4) + * UI/WebServerResources/ContactsUI.js (getMenus): register the + function onWindowResize only if it's not already defined. -2004-09-25 Helge Hess +2011-12-12 Wolfgang Sourdeau - * added rsrc namespace declaration to templates (v0.9.3) + * SoObjects/Appointments/iCalEvent+SOGo.m (-quickRecord): set + "c_category" to NULL when empty. -2004-09-20 Helge Hess + * OGoContentStore/OCSContactFieldExtractor.m + (-extractQuickFieldsFromVCard:): same as above. - * work on mailer (v0.9.2) +2011-12-12 Francis Lachapelle -2004-09-01 Marcus Mueller + * Tools/SOGoEAlarmsNotifier.m + (-_sendMessageWithHeaders:content:toAttendee:from:withMailer:): + encode sender and recipient addresses in quoted printatble. - * GNUmakefile.preamble: fixed for gsmake 1.9.2 build (v0.9.1) + * SoObjects/Contacts/SOGoContactGCSFolder.m + (-fixupContactRecord:): fallback on organization name when the + contact has no display name, no firstname, and no lastname. -2004-08-26 Marcus Mueller + * UI/Contacts/UIxContactView.m (-fullName): idem. - * ChangeLog: created -2005-08-02 Helge Hess +2011-12-09 Francis Lachapelle - * v0.9.147 + * UI/MainUI/SOGoRootPage.m (_cookieWithUsername:): the SOGoLogin + cookie now expires in one month. - * UIxComponent+Agenor.m: use SOGoUser methods to get email/cn +2011-12-09 Wolfgang Sourdeau - * UIxAppointmentEditor.m: moved status change operation to SoObject + * UI/SOGoUI/UIxComponent.m (-userHasCalendarAccess) + (-userHasMailAccess): moved from UIxPageFrame. -2005-07-23 Helge Hess + * UI/Common/UIxToolbar.m (-cssClasses): new accessor that + generates the CSS classes dynamically depending on the button + state and it descriptor's cssClass. - * UIxAppointmentPrintview.m, UIxCalDayListview.m: fixed include pathes - for new src hierarchy (v0.9.146) + * UI/WebServerResources/generic.js (parent$): handle the case + where window.opener is null. -2005-07-21 Marcus Mueller +2011-12-08 Wolfgang Sourdeau - * UIxAppointmentView.m: fixed -isMyApt and -canAccessApt to do the - proper things (v0.9.145) + * OpenChange/MAPIStoreFSMessageTable.m + (-evaluatePropertyRestriction:intoQualifier:): interpret filtering + on PR_SUBJECT_UNICODE in order to include + PR_NORMALIZED_SUBJECT_UNICODE and PR_SUBJECT_PREFIX_UNICODE in the + search, as PR_SUBJECT_UNICODE might not actually exist on the FS + messages. - * v0.9.144 + * OpenChange/MAPIStoreObject.m (-addPropertiesFromRow:): perform + test on PT_STRING8 alone after "masking" the ulPropTag with 0xfff, + since PT_XX values are not bitmasks. - * UIxCalInlineAptView.m: reworked the way styles are produced now. - UIxCalInlineAptView gets a lot more information from the appointment - now in order to produce a suitable style for it +2011-12-06 Francis Lachapelle - * UIxCalMonthOverview.m: setup formatter properly for private - appointments + * UI/WebServerResources/ContactsUI.js (contactsListCallback): + Force deselection of all rows when changing addressbook. - * UIxCalView.m: don't generate style information at all - - UIxCalInlineAptView does this now +2011-12-06 Wolfgang Sourdeau -2005-07-20 Helge Hess + * SoObjects/Appointments/iCalEvent+SOGo.m (-firstOccurrenceRange): + same as below. - * UIxAppointmentEditor.m: added fragile base class check (v0.9.143) + * SoObjects/Appointments/SOGoAppointmentFolder.m + (_flattenCycleRecord:forRange:intoArray:): reverted to retrieving + the event start date using the old and buggy method, adapted to + the new NGCards API. - * added a basic German translation (v0.9.142) +2011-12-05 Francis Lachapelle -2005-07-19 Helge Hess + * UI/WebServerResources/MailerUI.js (deleteSelectedMessages) + (onMailboxTreeItemClick, onMessageSelecitionChange) + (configureMessageListEvents): update the message content div only + if it exists (will be hidden in single-window mode). - * UIxDatePicker.m: code cleanups (v0.9.141) + * UI/WebServerResources/UIxContactsUserFolders.js + (initUserFoldersWindow): registered "click" event on new Done button. -2005-07-19 Marcus Mueller + * UI/WebServerResources/UIxMailEditor.js (onContactAdd): show + contacts in a pane instead of a new window. + (onContactFolderChange): new method to update the contacts list + when changing contacts folder from the new popup menu. + (configureDragHandle): new method to allow the new contacts pane + to be resizable. + (onMailEditorResize): was onWindowResize. Now computes the space + used by the search contacts pane. - * v0.9.140 + * UI/WebServerResources/ContactsUI.js (getMenus): the function now + overloads the returning array with the menus defined by the + previously defined function with the same name. Used in + UIxMailEditor.wox that loads both MailerUI.js and ContactsUI.js. + (contactsListCallback): added support for 2-column view. Also + used in mail editor to refresh the new contacts pane. + (initContacts, onContactSelectionChange): don't update contactView when the div + doesn't exist. + (configureDraggables): don't allow drag'n'drop when the folders + list doesn't exist. - * UIxCalView.m: reversed shouldAdd logic in filterAppointments to do - the right thing ... + * UI/MainUI/UIxLoading.m: new class for empty template used when + loading the iframe in single-window mode. - * v0.9.139 +2011-12-05 Wolfgang Sourdeau - * UIxAppointmentEditor.m: fixed automatic participants addition + * UI/Scheduler/UIxComponentEditor.m (-setCategory): ensure that + the new category is reported in the "categories" ivar. - * v0.9.138 + * SoObjects/Appointments/iCalEvent+SOGo.m (-quickRecord): + -[iCalEntityObject categories] returns an NSArray that we need to + convert to a string for the database content. - * UIxCalView.m: renamed 'anaisUIDString' to 'userUIDString' in order - to be independent from the Anais bundle but still provide the same - functionality + * SoObjects/Appointments/iCalToDo+SOGo.m (-quickRecord): + -[iCalEntityObject categories] returns an NSArray that we need to + convert to a string for the database content. -2005-07-19 Helge Hess +2011-12-02 Wolfgang Sourdeau - * UIxAppointmentEditor.m: moved iCalRecurrenceRule to separate file - (v0.9.137) + * OpenChange/MAPIStoreNotesMessage.m + (-getPrMessageClass:inMemCtx:): explicit method. + (-getPrSubject:inMemCtx:): explicit method. -2005-07-18 Marcus Mueller + * OpenChange/MAPIStoreMessage.m (-getPrAccess:inMemCtx:) + (-getPrAccessLevel:inMemCtx:): reimplemented methods in a generic + way just like the MAPIStoreFolder versions. + + * OpenChange/MAPIStoreFSMessage.m (-subscriberCanModifyMessage): + handle the case where the message is being created. + + * OpenChange/MAPIStoreFSFolder.m + (-messageKeysMatchingQualifier:andSortOrderings:): ensure the + active user can read the folder messages before returning them. + +2011-12-01 Wolfgang Sourdeau + + * OpenChange/MAPIStoreFAIMessage.m (-subscriberCanReadMessage) + (-subscriberCanModifyMessage): always return "NO" for subscribers. + + * OpenChange/MAPIStoreFSFolder.m: mapped role strings into + variables. + + * OpenChange/MAPIStoreGCSMessage.m (-getPrAccess:inMemCtx:) + (-getPrAccessLevel:inMemCtx:): return a value based on the ACL + getters below. + + * OpenChange/MAPIStoreFSMessage.m (-subscriberCanReadMessage): + returns YES when the message is of class + "IPM.Microsoft.ScheduleData.FreeBusy", as a hack until freebusy + messages are handled by the backend. + + * OpenChange/MAPIStoreContext.m (_prepareContextClass): now return + the context via a pointer parameter. Return a proper "enum + mapistore_error" value. + + * OpenChange/MAPIStoreCalendarMessage.m (-appointmentWrapper): + pass the owner user as parameter to the appointment wrapper + contructor rather than the active user. + (-save): make use of the owner user coordinates instead of the + ones of the active user. Handle the "sent-by" parameter for the + organizer element. + + * OpenChange/MAPIStoreFolder.m + (-openMessage:withMID:forWriting:inMemCtx:): takes a new + "forWriting:" parameter and make use of subscriberCanModifyMessage + and subscriberCanReadMessage to return a proper error code, if + needed. + + * OpenChange/MAPIStoreSOGo.m (sogo_folder_open_message): added the + "write_access" parameter. + + * OpenChange/MAPIStoreTasksMessage.m: + invoke component:secure: with the secure parameter set to "YES" in + all accessors that requires the iCalTask object. + + * OpenChange/MAPIStoreCalendarMessage.m (-appointmentWrapper): + invoke component:secure: with the secure parameter set to "YES". + + * OpenChange/MAPIStoreTasksMessageTable.m + (-evaluatePropertyRestriction:intoQualifier:): return + MAPIRestrictionStateAlwaysTrue for PR_SENSITIVITY since privacy + filtering is performed internally. + + * OpenChange/MAPIStoreGCSMessageTable.m (-componentQualifier): + removed useless accessor, left over by a previous commit. + + * OpenChange/MAPIStoreGCSFolder.m (-aclQualifier): new accessor + providing an additional qualifier when listing elements of a + table, based on the current user rights. + (-messageKeysMatchingQualifier:andSortOrderings:): make use of the + new -aclQualifier method when the active user is not the owner of + the sogo object. Slightly simplified code by storing all + qualifiers in an array passed as parameter to the EOAndQualifier + constructor. + + * OpenChange/MAPIStoreMessage.m (-subscriberCanReadMessage) + (-subscriberCanModifyMessage): new getters for ACL operations at + the message level. - * UIxCalView.m: provide label "empty title" as -titlePlaceholder for - appointment formatters to enable display of appointments whose - title has not been set (v0.9.136) + * OpenChange/MAPIStoreFolder.m (-subscriberCanCreateMessages) + (-subscriberCanModifyMessages, -subscriberCanReadMessages) + (-subscriberCanDeleteMessages, -subscriberCanCreateSubFolders): + new getters for ACL operations at the folder level. -2005-07-15 Helge Hess +2011-11-30 Wolfgang Sourdeau - * UIxCalScheduleOverview.m, UIxAppointmentView.m, - UIxAppointmentProposal.m, UIxAppointmentEditor.m: fixed gcc 4.0 - warnings (v0.9.135) + * SoObjects/SOGo/SOGoFolder.m + (_expandPropertyResponse:forObject:): set the element in the 404 + bag only if the value is nil to avoid iCal complaining about lack + of support for sharing. - * UIxAppointmentView.h: fixed a Cocoa warning (v0.9.134) + * SoObjects/Appointments/SOGoCalendarProxy.m (+webdavAclManager): + overriden method. + (-davGroupMemberSet, -setDavGroupMemberSet:): instantiate the + "Calendar" object from the result of -[self lookupUserFolder] + instead of "container", since we might attach proxy objects to + other containers. + + * Main/SOGo+DAV.m (-davPrincipalURL): new DAV getter. + (-davPrincipalSearchPropertySet): added "calendar-user-type", even + though it's a lie. + (-davComplianceClassesInContext:): declare + "calendar-query-extended", "extended-mkcol", + "calendarserver-principal-property-search" as additional classes, + even though it's a lie. + + * SoObjects/Appointments/SOGoUserFolder+Appointments.m + (-davCalendarUserAddressSet): make sure each email address is + reported only once, we also return the user principal in the list + (for iCal). + + * SoObjects/SOGo/SOGoObject.m (-davComplianceClassesInContext:): + declare "calendar-query-extended", "extended-mkcol", + "calendarserver-principal-property-search" as additional calendar + classes, even though it's a lie. + (-davCurrentUserPrincipal): new method. + + * SoObjects/Appointments/SOGoAppointmentFolder.m (-davResourceId): + new DAV getter. + + * SoObjects/SOGo/SOGoUserFolder.m (-davResourceId): new DAV getter. + + * SoObjects/SOGo/SOGoFolder.m (-davPrincipalURL): moved from + SOGoUserFolder. + + * SoObjects/SOGo/WORequest+SOGo.m (-isICal, -isICal4): updated for + iCal 5. + + * SoObjects/Appointments/SOGoAppointmentInboxFolder.m + (-davScheduleDefaultCalendarURL): fixed method to return a + properly formatted XML chunk. + (-displayName): returns nameInContainer. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-davCalendarTimeZone): fixed by embedding the VTIMEZONE element + in a VCALENDAR. + +2011-11-29 Wolfgang Sourdeau + + * OpenChange/MAPIStoreTypes.m (NSObjectFromSPropValue): set the + resulting string to @"" when the unicode or string pointers are + NULL. + +2011-11-28 Francis Lachapelle + + * UI/SOGoUI/UIxComponent.m (-singleWindowModeEnabled): new method + that returns true if the single-window mode is enabled. This mode + can be forced by setting the cookie "SOGoWindowMode" to "single". + + * UI/MailerUI/UIxMailEditor.m (-contactFolders) + (-personalContactInfos, -setCurrentFolder:, -currentContactFolderId) + (-currentContactFolderName, -currentContactFolderOwner) + (-currentContactFolderClass): getters/setters for new contacts + pane in the mail editor. + +2011-11-28 Wolfgang Sourdeau + + * OpenChange/MAPIStoreContext.m + (-initFromURL:withConnectionInfo:andTDBIndexing:): assign a + SOGoUser corresponding to the object owner and to the active user + to the "ownerUser" and "activeUser" ivars. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-bareFetchFields:from:to:title:component:additionalFilters:): + we must not attempt to instantiate an EOQualifier with a "nil" + format, otherwise it causes an exception. Settings the qualifier + as nil instead. + +2011-11-24 Francis Lachapelle + + * UI/WebServerResources/ContactsUI.js (resetCategoriesMenu): the + event listener must be on mousedown since click is already + observed by document.body. + +2011-11-23 Wolfgang Sourdeau + + * OpenChange/MAPIStoreContactsMessageTable.m + (-evaluatePropertyRestriction:intoQualifier:): returns + "MAPIRestrictionStateAlwaysTrue" for PR_SENSITIVITY. + + * OpenChange/MAPIStoreContactsMessage.m + (-getPrSensitivity:inMemCtx:): new getter that always returns 0. + +2011-11-22 Wolfgang Sourdeau + + * OpenChange/NSArray+MAPIStore.m (-asMVUnicodeInMemCtx:) renamed + from "asArrayOfUnicodeStringsInCtx". + (-asMVUnicodeInMemCtx:, -asMVLongInMemCtx:): new conversion + methods. + + * OpenChange/MAPIStoreTypes.m (NSObjectFromValuePointer): + simplified method by using set_SPropValue_proptag and + NSObjectFromSPropValue. + + * OpenChange/NSObject+MAPIStore.m (-getValue:forTag:inMemCtx:): + renamed from "getMAPIValue:...". + (-arrayFromMAPIMVLong:, +arrayFromMAPIMVUnicode:) + (+arrayFromMAPIMVString:, +arrayFromMAPIMVBinary:) + (+arrayFromMAPIMVGuid:, +arrayFromMVShort:, +arrayFromMVLong:) + (+arrayFromMVI8:, +arrayFromMVUnicode:, +arrayFromMVString:) + (+arrayFromMVBinary:, +arrayFromMVGuid:, +arrayFromMVFileTime:) + new constructors for multivalue types. + +2011-11-21 Ludovic Marcotte -2005-07-14 Marcus Mueller + * SoObjects/SOGo/WORequest+SOGo.m - for now, we consider iCal 4 + and iCal 5 to be the same and added new strings to recognize + Apple Address Book on Mac OS X 10.7 (Lion) - * v0.9.133 + * SoObjects/Contacts/SOGoContactGCSFolder.m - we now skip list + if we deal with Apple Address Book. If we don't do this and + a "vlist" is present, no card will be displayed at all. - * UIxAppointmentView.m: supports accept/decline from participants - tab now +2011-11-21 Francis Lachapelle - * UIxAppointmentEditor.m: fixed redirect url after accept/decline + * UI/WebServerResources/UIxPreferences.js (initPreferences): + initialize calendar for the new vacation end date optional parameter. - * UIxCalParticipationStatusView.m: added accessor for partStat, so - partStat isn't accidentaly lost + * UI/PreferencesUI/UIxPreferences.m (-enableVacationEndDate) + (-disableVacationEndDate, -setEnableVacationEndDate:) + (-vacationEndDate, -setVacationEndDate:): getters/setters for the + new optional vacation end date. - * UIxCalScheduleOverview.m: is able to suppress rendering of - rejected and accepted foreign appointments now based on formValue +2011-11-20 Wolfgang Sourdeau - * English.lproj/Localizable.strings: new labels for - UIxCalScheduleOverview + * OpenChange/MAPIStoreFolder.m (-lookupFolder:): explicitly set + the MAPIStoreContext's woContext as context to the looked up + folder, although one could expect it to have been set during the + lookup at the SOGo level... -2005-07-14 Helge Hess + * OpenChange/MAPIStoreFSFolder.m (-lookupFolder:): removed useless + overriding of method. - * UIxAppointmentView.m: fixed a small memory leak when creating the - categories string (v0.9.132) + * OpenChange/MAPIStoreMailFolder.m (-[MAPIStoreMailFolder + lookupFolder:]): removed useless overriding of method. + (-[MAPIStoreInboxFolder lookupFolder:]): in altnamespace mode, + perform the same association of the woContext to the looked up + folder as in MAPIStoreFolder. -2005-07-14 Marcus Mueller + * OpenChange/MAPIStoreContext.m + (-initFromURL:withConnectionInfo:andTDBIndexing:): instantiate a + SOGoUser corresponding to the username of the new context and + associated it to the woContext ivar. - * v0.9.131 +2011-11-18 Wolfgang Sourdeau + + * OpenChange/MAPIStoreFolder.m (-permissionEntries): new public + method. + (-modifyPermissions:withCount:andFlags:): new backend op public + method. + (-aclFolder, -rolesForExchangeRights:, -exchangeRightsForRoles:): + new mandatory methods. - * product.plist: removed 'schedule' method from SOGoAppointmentFolder + * OpenChange/SOGoMAPIFSFolder.m (-defaultUserID, -addUserInAcls:) + (-removeAclsForUsers:, -aclUsers, -aclsForUser:) + (-setRoles:forUser:): implemented standard ACL methods. - * v0.9.130 + * OpenChange/MAPIStorePermissionsTable.m + (+[MAPIStorePermissionEntry + entryWithUserId:andMemberId:forFolder:]): constructor now takes a + memberId and the container folder as parameters. + (-[MAPIStorePermissionEntry getPrMemberId:inMemCtx:]): now based + on the new memberId ivar. + (-[MAPIStorePermissionEntry getPrEntryId:inMemCtx:]): now make use + of MAPIStoreInternalEntryId for regular member ids and return an + empty blob for special ones, as specified in oxcperm. + (-[MAPIStorePermissionEntry getPrMemberName:inMemCtx:]): now + returns the real CN of the user for regular member ids and return + @"" or @"Anonymous" for special ones, as specified in oxcperm. + (-[MAPIStorePermissionEntry getPrMemberName:inMemCtx:]): now + returns the real member rights, based on the aclFolder of the + container, using standard SOGo methods. - * UIxCalView.m: removed resourcePath stuff as this isn't used - anywhere anymore (and it shouldn't) + * OpenChange/MAPIStorePermissionsTable.h + (MAPIStorePermissionsEntry): made class public. -2005-07-13 Marcus Mueller + * OpenChange/MAPIStoreSOGo.m (sogo_folder_modify_permissions): new + backend op. + (sogo_backend_init): invoke "disableLocalCache" to avoid the + caching of ACL. - * English.lproj/Localizable.strings: "Schedule" maps to - "Appointment propositions" now (v0.9.129) + * SoObjects/SOGo/SOGoCache.m (-disableLocalCache): new method to + disable the local cache altogether (helper for non-WO access). -2005-07-11 Marcus Mueller +2011-11-17 Wolfgang Sourdeau + + * OpenChange/MAPIStoreSamDBUtils.m: new module containing helpers + pertaining to the SamDB. + (MAPIStoreSamDBUserAttribute): new function that returns the value + of a specified key from a user record matching one simple criteria. + (MAPIStoreInternalEntrydId, MAPIStoreExternalEntryId): moved + functions from MAPIStoreMessage.m. - * UIxCalView.h: added -setAppointments: to the public API - (for subclassers) (v0.9.128) + * OpenChange/MAPIStoreMessage.m (MAPIStoreInternalEntryId): now + takes a ldb_context * parameter pointing to the samdb, which + enables us: 1) to return the real legacyExchangeDN 2) to make use + of sAMAccountName as search parameter for the username. -2005-07-08 Marcus Mueller +2011-11-16 Ludovic Marcotte - * v0.9.127 + * SoObjects/SOGo/SOGoSieveManager.m (-updateFiltersForLogin:...) + We now handle connection exceptions to avoid crashing sogod. - * UIxCalView.[hm]: added -shouldDisplayRejectedAppointments API. Added - toggling of hide/show rejected appointments via form values. Added - new -filterAppointments: method to support filtering of appointments - (currently used for rejected appointments). Fixed -fetchCoreInfos - to use proper accessor method. Fixed aptFlags logic to allow access - to appointments that don't belong to user but which user is invited - to. Cleaned up +initialize a bit. - - * UIxCalWeekListview.m: added comment and slightly changed - -fetchCoreInfos to do the proper thing +2011-11-13 Wolfgang Sourdeau - * English.lproj/Localizable.strings: added labels 'show_rejected_apts' - and 'hide_rejected_apts' + * OpenChange/MAPIStoreContactsMessage.m (-getPrBody:inMemCtx:): + same as below. - * v0.9.126 + * OpenChange/MAPIStoreAppointmentWrapper.m (-getPrBody:inMemCtx:): + removed parsing hack since things are now done properly from + NGCards. - * UIxComponent+Agenor.[hm]: new method -isAccessRestricted, uses the - implementation from WOContext+Agenor in libSOGo. - - * UIxAppointmentView.m: allow editing of appointments that have no - organizer set. + * Tests/Unit/TestVersit.m (-test_rendering, -test_parsing): + adapted to new NGCards data structure and improved to test further + important use cases. - * UIxAppointmentEditor.m: allow editing of appointments that have no - organizer set. Redirect to 'view' URI in case editor is not the - organizer. Fixed a bug where the organizer got accidentaly deleted. +2011-11-10 Wolfgang Sourdeau -2005-07-07 Marcus Mueller + * Tests/Unit/TestVersit.m: new test module for versit parsing and + outputting. - * v0.9.125 +2011-11-09 Wolfgang Sourdeau - * UIxAppointmentEditor.m: Properly preserve organizer of appointments. - This is now also used to validate if user is allowed to edit an - appointment. - - * UIxAppointmentView.m: changed -isMyApt to test on organizer's email - address and user's email address to decide whether he is allowed - to edit the appointment in question. + * OpenChange/MAPIStoreCalendarMessage.m (-save): set the DESCRIPTION + field to the value of PR_BODY_UNICODE or, a textual version of + PR_HTML. COMMENT would be nice later. -2005-07-06 Marcus Mueller + * OpenChange/MAPIStoreAppointmentWrapper.m (-getPrBody:inMemCtx:): + make use of -[NSString asCardAttributeValues]. - * UIxAppointmentProposal.m: changed implementation of - -proposalSearchAction to use the new SOGoFreeBusyObject API - (v0.9.124) + * OpenChange/MAPIStoreContactsMessage.m (-save): set the NOTE + field to the value of PR_BODY_UNICODE or, a textual version of + PR_HTML. -2005-07-05 Marcus Mueller + * OpenChange/MAPIStoreMessage.m (-addProperties): intercept + PR_RTF_COMPRESSED attributes and convert them automatically to a + PR_HTML attribute. - * v0.9.123 + * OpenChange/MAPIStoreVolatileMessage.m (-addProperties:): + transfer the content of the "properties" ivar instead of the + "newProperties" parameter, so as to benefit from treatment that + could have happened in parent classes. - * UIxCalWeekOverview.m, UIxCalWeekColumnsview.m, - UIxCalDayChartview.m, UIxCalDayListview.m, - UIxCalMonthOverview.m, UIxCalDayOverview.m: properly adjust formatter + * OpenChange/MAPIStoreMailVolatileMessage.m + (_generateMailDataWithBcc:): don't write the resulting mail body + to /tmp/mimegen.eml. - * UIxCalDayOverview.m: fixed bugs in -aptsForCurrentDate and properly - override -allDayApts to also display appointments spanning ranges +2011-11-09 Francis Lachapelle - * UIxCalWeekChartview.m: fixed bugs in -isRowActive logic + * UI/WebServerResources/SOGoRootPage.js (onLoginClick): don't + assume that the checkbox rememberLogin is always part of the template. - * UIxCalDayView.m: fixed bugs in filtering and range logic +2011-11-08 Wolfgang Sourdeau - * UIxCalView.m: added a deprecation warning, some code cleanup + * OpenChange/MAPIStoreRecurrenceUtils.m + (-fillRecurrencePattern:withStartDate:andEndDate:): fixed a crash + occurring when no byday mask was specified. We also force a value + for the monthday in the case of a yearly event without a proper + one. - * UIxCalInlineAptView.m: added new 'referenceDate' binding which will - be used with the revised appointment formatter to properly display - time ranges. Also adds 'priority' style information when this can - be found in the appointment. +2011-11-07 Wolfgang Sourdeau - * GNUmakefile: added new image resource + * OpenChange/MAPIStoreFolder.m (-addProperties:): we now override + this method instead of -addPropertiesFromRow:. Also, invoking + resetCache is no longer required since the "properties" ivar is + no longer used in this class. - * images/apt_icon_private.gif: new resource for private appointments + * OpenChange/MAPIStoreObject.m (-addPropertiesFromRow:): now + invokes [self addProperties:] to modify the "properties" ivar, + instead of doing it directly. This enables subclasses to only need + overriding -addProperties:. + (-resetProperties): removed useless method. -2005-03-23 Marcus Mueller + * OpenChange/MAPIStoreVolatileMessage.m (-addPropertiesFromRow:): + removed obsolete overloading of method. - * renamed "default.strings" to "Localizable.strings" (v0.9.122) +2011-11-02 Wolfgang Sourdeau -2005-03-20 Helge Hess + * OpenChange/MAPIStoreMessage.m (-setReadFlag:): make overrides + optional. - * v0.9.121 + * OpenChange/MAPIStoreCalendarMessage.m (-save): handle all day + events based on the value of PidLidAppointmentSubType. + Don't add the timezone component to the vCalendar in that case. + Take PidLidAppointmentStateFlags into account before building the + list of attendees. Take the organizer passed in the recipients + into account when specified. - * UIxCalView.m: removed -calCSSPath (ZideStore specific) +2011-11-01 Francis Lachapelle - * UIxCalDayListview.m: minor code cleanups + * UI/WebServerResources/UIxAclEditor.js (addUser): fixed CSS class + "normal-person" that was replaced by "normal-user". -2005-03-03 Marcus Mueller +2011-11-01 Wolfgang Sourdeau - * UIxCalWeekListview.m: fixed compile warnings (v0.9.120) + * OpenChange/MAPIStoreCalendarMessage.m (-save): added work-around + for setting of organizer as an attendee record. - * UIxCalWeekListview.m: view needs to fetch coreInfos instead of just - overviews because it needs information stored in "partmails". Fixes - SOGo Bug #1248. (v0.9.119) + * OpenChange/MAPIStoreMailMessage.m (-setReadFlag:): implemented + basic method, only dealing with actual setting or unsetting of + "\Seen". -2005-03-02 Marcus Mueller + * OpenChange/MAPIStoreCalendarMessage.m (-setReadFlag:): overriden + with dumb implementation, since it seems to be invoked on this + kind of object. - * UIxCalDateLabel.m: fixed compile warning (v0.9.118) +2011-10-31 Wolfgang Sourdeau -2005-03-01 Marcus Mueller + * OpenChange/MAPIStoreContactsAttachment.m + (-getPrAttachEncoding:inMemCtx:, -getPrAttachFlags:inMemCtx:) + (-getPrAttachmentFlags:inMemCtx:) + (-getPrAttachmentHidden:inMemCtx:) + (-getPrAttachmentLinkid:inMemCtx:, -getPrAttachSize:inMemCtx:): + new getters. - * UIxCalDateLabel.m: fixed heuristics for month label (v0.9.117) + * OpenChange/MAPIStoreSOGo.m (sogo_message_set_read_flag): new + backend op. -2005-02-21 Marcus Mueller + * OpenChange/MAPIStoreMailMessage.m (-_fetchBodyData): fetch body + keys with BODY.PEEK rather than just BODY, to disabled the + automatic setting of the "\Seen" flag. - * v0.9.116 + * SoObjects/Mailer/SOGoMailBodyPart.m (-fetchBLOBWithPeek:): new + method that enables the fetching of body parts either via "BODY" + or "BODY.PEEK". - * UIxTimeDateControl.wox: added code to disable time control on - demand. If given date is nil, substitute today for it - nil dates - are not legal/possible for this control. + * SoObjects/Mailer/SOGoMailObject.m + (-addRequiredKeysOfStructure:path:toArray:acceptedTypes:withPeek:): + added a "withPeek" parameter that enables the fetching of body + parts either via "BODY" or "BODY.PEEK". - * UIxAppointmentEditor.m: correctly (de)serialize until date for - recurrences +2011-10-28 Wolfgang Sourdeau - * English.lproj/default.strings: new strings for recurrence selection, - altered previous strings slightly to match the new UI's purpose + * OpenChange/MAPIStoreMailVolatileMessage.m (_generateMailData): + don't consider "orig" type recipients. + Added "withBCC" parameter. Reorganized code to produce better + mime-compliant messages, in particular with regards to the + handling of multipart/* body parts. Split method in many + specialized submethods for code clarity. + (-getMessageData:inMemCtx:): overriden method for this class. -2005-02-17 Marcus Mueller + * OpenChange/MAPIStoreSOGo.m (sogo_message_modify_recipients): + adapted backend function to the new prototype, where the message + recipients are preparsed and now passed an array of "struct + mapistore_message_recipient", rather than a struct + ModifyRecipientRow. - * v0.9.115 + * OpenChange/MAPIStoreTypes.m (NSObjectFromValuePointer): new + function returning an instance of an appropriate class based on a + property tag and a corresponding value passed as void *. - * cycles.plist: added 'weekday' cycle + * OpenChange/MAPIStoreFSMessage.m (-canGetProperty:): method moved + up in MAPIStoreVolatileMessage. - * UIxAppointmentEditor.m: added representation for 'BYDAY' +2011-10-27 Francis Lachapelle -2005-02-17 Helge Hess + * UI/WebServerResources/UIxAttendeesEditor.js + (performSearchCallback): show a list email address (usually an + LDAP group) unless the list has no email address (usually a + personal contacts list). - * fixed for removal of SOGoLogic (v0.9.114) + * UI/WebServerResources/SOGoRootPage.js (initLogin): added sliding + effect to about box. -2005-02-15 Marcus Mueller - - * UIxCalView.m: removed dead code (v0.9.113) +2011-10-27 Wolfgang Sourdeau -2005-02-12 Marcus Mueller + * OpenChange/MAPIStoreObject.m (-canGetProperty:): new method that + determines whether a property can be requested on a + MAPIStoreObject instance or descendant thereof, in order to take + different ways of fetching properties into account, whether + through a dynamic getter or some dictionary... + (-getAvailableProperties:inMemCtx:): now compute the returned + array based on the result of invocations of -[self + canGetProperty:]. - * v0.9.112 + * OpenChange/MAPIStoreFSMessage.m + (+getAvailableProperties:inMemCtx:): fixed a leak by attaching the + array of enum MAPITAGS to "properties". + (-canGetProperty:): overriden method. - * UIxAppointmentEditor.[wox,m]: added recurrence selection/display. - The current UI is similar to that found in OGo, but inappropriate in - the context of SOGo (SOGo in theory supports all recurrence rules - described in RFC2445, thus needs a more complex UI in order to render - all rules appropriately) + * OpenChange/MAPIStoreVolatileMessage.m: MAPIStoreMemMessage renamed + to MAPIStoreVolatileMessage. + (-getAvailableProperties:inMemCtx:) removed obsolete method. + (-init): creationTime and lastModificationTime are now ivars. + (-lookupAttachment:): implemented manadatory method. - * cycles.plist: property list with predefined recurrence rules for - the UIxAppointmentEditor + * OpenChange/SOGoMAPIVolatileMessage.m: SOGoMAPIMemMessage renamed + to SOGoMAPIVolatileMessage. - * English.lproj/default.strings: new labels for cycles and accompanied - UI +2011-10-26 Francis Lachapelle - * UIxDatePicker.m: Bugfix for format edge case (when date is nil) + * SoObjects/SOGo/SQLSource.m + (-checkLogin:password:perr:expire:grace:): authentication can be + performed against any database column defined in the new + LoginFieldNames defaults parameter. + (-_lookupContactEntry:considerEmail:): idem. -2005-01-26 Marcus Mueller +2011-10-26 Wolfgang Sourdeau - * UIxDatePicker.m: corrected dateFormats for French locale. The - selection mechanism is pretty hackish and should be more generic. - This fixes SOGo Bug #1136. (v0.9.111) + * OpenChange/MAPIStoreFSMessage.m, + OpenChange/MAPIStoreMailVolatileMessage.m: new descendants of + MAPIStoreMemMessage. -2005-01-07 Marcus Mueller + * OpenChange/MAPIStoreDraftsMessage: replaced class with + MAPIStoreMemMessage, enabling the creation of mails from any mail + folder. - * {English/French}.lproj/default.strings: changed encoding from - ISO-Latin-1 to UTF-8, which is now the default (v0.9.110) + * OpenChange/MAPIStoreMessage.m + (-modifyRecipientsWithRows:andCount:andColumns:): take BCC + recipients into account. -2004-12-23 Marcus Mueller + * OpenChange/MAPIStoreMessage.m + (_convertRecipientFromRow:andColumns:): temp hack: make use of + set_mapi_SPropValue_sogo instead of set_mapi_SPropValue, which was + reversed in openchange to the old behaviour. - * v0.9.109 + * OpenChange/MAPIStoreObject.m (-init): renamed "newProperties" + ivar to "properties". + (-addNewProperties:): renamed to "-addProperties:" + (-resetNewProperties:): renamed to "-resetProperties:" + (-setProperties:): renamed to "-addPropertiesFromRow:" - * UIxCalScheduleOverview.[wox,m]: changed the UI to the final proposal - agreed upon by Laurent. - - * English.lproj/default.strings: renamed value for "action", suited to - new UI Layout + * OpenChange/MAPIStoreSOGo.m (sogo_message_create_attachment): + implemented new backend method. -2004-12-22 Marcus Mueller +2011-10-25 Francis Lachapelle - * v0.9.108 + * UI/MainUI/SOGoRootPage.m (-cookieUsername) + (-cookieWithUsername:): getter/setter for the new SOGoLogin + cookie. This is used for the new "Remember username" checkbox that + appears on the login page. - * UIxAppointmentEditor.m: added "check for conflict" checkbox and - appropriate logic. This closes SOGo bug #1069. Localized error - messages. +2011-10-25 Wolfgang Sourdeau - * UIxAppointmentProposal.m: changed fetchCoreInfos... to new - fetchFreebusy... method. + * OpenChange/EOQualifier+MAPIFS.[hm]: now evaluates + SOGoMAPIMemMessage. - * English.lproj/default.strings: provided localized error messages + * OpenChange/SOGoMAPIFSMessage.[hm]: now a subclass of + SOGoMAPIMemMessage. - * UIxCalView.m: rewrite of _fetchCoreInfosForUIDs: to adapt to the - newer API of SoObjects (this was still some old OCS based code). + * OpenChange/MAPIStoreDraftsMessage.m (_saveAttachment:): make use + of MAPIStoreMIME. -2004-12-21 Marcus Mueller + * OpenChange/MAPIStoreMIME.[hm]: new class module implementing a + singleton helper that deduces mime types from file extensions, + based on the content of /etc/mime.types. - * v0.9.107 + * OpenChange/MAPIStoreAttachment.m, + OpenChange/MAPIStoreCalendarAttachment.m, + OpenChange/MAPIStoreMailAttachment.m: replaced the + getProperty:withTag:inMemCtx: method with its switch case to make + use of the more recent dynamic property getters API. - * UIxCalScheduleOverview.wox: only display appropriate buttons for - actions to take - - * UIxCalScheduleOverview.m: cache userParticipationStatus result + * OpenChange/gen-property-selectors.py: added a few exclusions, + which are either undocumented or unused. - * English.lproj/default.strings: changed "action" label +2011-10-24 Wolfgang Sourdeau - * v0.9.106 + * OpenChange/MAPIStoreAttachment.m + (-getProperty:withTag:inMemCtx:): fallback on super's + implementation to benefit from the property getters methods. - * UIxCalScheduleOverview.wox: different visual representation for - actions (requested by Laurent) + * OpenChange/MAPIStoreContactsMessage.m (-getPrBody:inMemCtx:): if + the attribute length is 0, return MAPISTORE_ERR_NOT_FOUND. + (-_fetchAttachmentParts, -getPidLidHasPicture:inMemCtx:) + (-attachmentKeysMatchingQualifier:andSortOrderings:) + (-lookupAttachment:): new methods for retrieving contact pictures + in the VCARD. + (_updatePhotoInVCard:fromProperties:): new method that inserts a + "PHOTO" element in the VCARD depending on the PR_ATTACH_* + properties. - * UIxCalScheduleOverview.m: bugfix for wrong sort orderings + * OpenChange/MAPIStoreContactsAttachment.[hm]: new class module + for handling contact "attachments", that is, contact pictures. -2004-12-18 Marcus Mueller + * OpenChange/plreader.m (PLReaderDumpPListFile): ignore "error" if + the returned property list object is not nil, since "error" might + still be set with GNUstep. - * UIxCalScheduleOverview.[wox,m]: removed workaround for NGObjWeb bug, - code cleanup (v0.9.105) +2011-10-21 Francis Lachapelle -2004-12-17 Marcus Mueller + * SoObjects/SOGo/SOGoUserManager.m + (-_compactAndCompleteContacts:): add the key "isGroup" when defined. - * v0.9.104 + * UI/MainUI/SOGoUserHomePage.m (:_usersForResults:inDomain:): + add a boolean value in the returning array that identifies if the + user is actually a group. - * GNUmakefile: removed UIxAppointmentFormatter + * UI/Common/UIxAclEditor.m (-currentUserClass): return the CSS + class that identifies the user as a single contact or list of contacts. - * UIxAppointmentFormatter.[hm]: removed, never in use + * UI/WebServerResources/UIxContactsUserFolders.js + (addUserLineToTree): extract the new field that is set to 1 when + the user is actually a group. - * UIxCalParticipationStatusView.[wox,m]: new view to display localized - participation status + * UI/WebServerResources/UIxAclEditor.js (addUser): new argument to + to identify the type of user (person or group). - * UIxCalView.m: fetch OverviewInfos instead of CoreInfos (should be - faster) + * UI/WebServerResources/UIxMailToSelection.js + (expandContactListCallback): don't expand contacts without an + email address. - * UIxCalScheduleOverview.[wox,m]: completed the schedule overview, - display participation state for all participants. +2011-10-19 Wolfgang Sourdeau - * product.plist: renamed "reject" to "decline" and moved from - UIxAppointmentView to UIxAppointmentEditor. + * OpenChange/MAPIStoreDraftsMessage.m (-getPrDisplayTo:inMemCtx:) + (-getPrDisplayBcc:inMemCtx:): new getters. - * UIxAppointmentView.m: removed "accept" and "reject" action stubs +2011-10-18 Francis Lachapelle - * UIxAppointmentEditor.[wox,m]: implemented "accept" and "decline". - Changed iCal template a bit, particularly removed getOrganizer - - with every save the organizer was changed also which was horribly - wrong. + * UI/WebServerResources/generic.js (log): fixed an issue with + Firefox and IE when SOGo was opened using a targeted link. -2004-12-16 Marcus Mueller + * SoObjects/Mailer/SOGoMailFolder.m + (-copyUIDs:toFolder:inContext:): now returns the raw IMAP response + when the copy operation failed (most probably something like "Over quota"). - * v0.9.103 +2011-10-17 Wolfgang Sourdeau - * UIxCalScheduleOverview.[wox,m]: the entry point for agenor, - presenting the upcoming schedule to users. This is still incomplete, - but nevertheless functional. + * OpenChange/MAPIStoreSOGo.m (sogo_backend_init): invoke + -[NSProcessInfo initializeWithArguments:count:environment:] in + order to avoid an infinite loop with GNUstep occurring under + strange circumstances. Make use of "samba" as process name. - * English.lproj/default.strings: new localizations for the schedule - view. + * OpenChange/MAPIStoreMapping.m (-initForUsername:withIndexing:): + attach the struct tdb_wrap *indexing to a new memCtx ivar, in + order to make sure its value is retained until the release of the + mapping instance. + +2011-10-14 Wolfgang Sourdeau + + * OpenChange/MAPIStoreGCSMessageTable.m + (-evaluatePropertyRestriction:intoQualifier:): removed useless + condition to avoid warnings with certain versions of gcc. + +2011-10-14 Francis Lachapelle + + * UI/WebServerResources/UIxMailToSelection.js + (addressFieldChanged): we now split on commas only if no email + address is detected. + + * UI/WebServerResources/SOGoMailDataSource.js (load): associated a + unique id to the source using the url and its parameters. + + * UI/WebServerResources/SOGoDataTable.js (render): add the new + source id to the current render id. This should solve incorrect + messages appearing when fast-switching between folders or sort order. + + * SoObjects/SOGo/NSString+Utilities.m (-_rangeOfURLInRange:): + fixed handling of brackets (inequality signs <>). + +2011-10-14 Ludovic Marcotte + + * SoObjects/SOGo/SOGoGCSFolder.m (setRoles:forUser:..) + We now even cache "None" roles. + * SoObjects/Mailer/SOGoMailObject.m (fetchCoreInfos) + We now handle correctly untagged responses. + +2011-10-13 Francis Lachapelle + + * Tools/SOGoToolUserPreferences.m (-run): added possibility to + specify a file (-f filename) when setting a user + default/setting. Removed the constraint of specifying + administrative credentials of the SIeve server when not setting a + parameter related to Sieve. + +2011-10-12 Wolfgang Sourdeau + + * OpenChange/MAPIStoreSOGo.m (sogo_manager_generate_uri): new + backend op. Code from j.kerihuel@openchange.org. - * product.plist: added new actions and schedule view + * OpenChange/MAPIStoreAppointmentWrapper.m + (-initWithICalEvent:andUser:andSenderEmail:inTimeZone:): take a + new "senderEmail" parameter in order to help the process of + deducting the attendee in an invitation message not including a + "METHOD". + (-_setupITIPContextFromAttendees): fixed method to set the method + as "REPLY" when the user is organizer rather than the other way + around. - * UIxCalSelectTab.[wox,m]: added new "Schedule" tab +2011-10-11 Wolfgang Sourdeau - * UIxAppointmentEditor.m: default participants are selected from - current calendarUIDs - that is, if you've selected multiple calendars - and then create a new appointment, all currently viewed calendar - owners are added to the new appointment as default participants. + * OpenChange/MAPIStoreAppointmentWrapper.m (-_setupITIPContext): + new method that contains the common code for determining the ITIP + status of the event and of the attendees. - * UIxAppointmentView.m: added "accept" and "reject" actions - no - function yet. + * OpenChange/MAPIStoreMailMessage.m (-init): "headerMethod" has + become obsolete. + (-getPrIconIndex:inMemCtx:, -getPrMessageClass:inMemCtx:): when + mail is event, forward the invocation to the + MAPIStoreAppointmentWrapper equivalent. - * UIxAppointmentProposal.m: compile fix (v0.9.102) + * OpenChange/MAPIStoreAppointmentWrapper.m + (-getPidLidReminderSet:inMemCtx:) + (-getPidLidReminderDelta:inMemCtx:) + (-getPidLidReminderTime:inMemCtx:) + (-getPidLidReminderSignalTime:inMemCtx:) + (-getPidLidReminderOverride:inMemCtx:) + (-getPidLidReminderType:inMemCtx:) + (-getPidLidReminderPlaySound:inMemCtx:) + (-getPidLidReminderFileParameter:inMemCtx:): implemented those + alarm-related getters (see OXORMDR). + (-getPrIconIndex:inMemCtx:, -getPrMessageClass:inMemCtx:): updated + code to handle REQUEST, REPLY (positive, negative and tentative) + as well as "COUNTER" and "CANCEL". + + * OpenChange/MAPIStoreCalendarMessage.m (_setupAlarmDataInEvent:): + new method invoked from -save that sets VALARM elements on the + current event based on the PidLidReminder* properties. + (-getPidLidReminderSet:inMemCtx:) + (-getPidLidReminderDelta:inMemCtx:) + (-getPidLidReminderTime:inMemCtx:) + (-getPidLidReminderSignalTime:inMemCtx:) + (-getPidLidReminderOverride:inMemCtx:) + (-getPidLidReminderType:inMemCtx:) + (-getPidLidReminderPlaySound:inMemCtx:) + (-getPidLidReminderFileParameter:inMemCtx:): new alarm-related + forwarders to homonymous methods in MAPIStoreAppointmentWrapper. + +2011-10-09 Wolfgang Sourdeau + + * OpenChange/MAPIStoreMailFolder.m (-synchroniseCache): improved + method to only fetch non-deleted messages in part 1, and to + automatically remove message records in part 2, so that we know + when a delete message has already been taken into account with + regards to version numbers. The version number generation having + been moved from getDeletedKeysFromChangeNumber:andCN:inTableType:. + This also fixes the case where the last modification date was + increased when any deleted message was found, because "known + deleted messages" are now ignored. + (-getDeletedKeysFromChangeNumber:andCN:inTableType:) Simplified + method by moving most of it into -synchroniseCache and by + returning the highest deleted modseq reported by the latter. + +2011-10-07 Francis Lachapelle + + * UI/WebServerResources/UIxPreferences.js + (displayAccountSignature): fixed the link to edit the signature + when no signature was defined. + +2011-10-06 Francis Lachapelle + + * UI/WebServerResources/generic.js (getListIndexForFolder): the + personal folder now stays on top, as returned by the server. + +2011-10-04 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoObject.m (-davComplianceClassesInContext:): + take all the supported DAV object classes in charge, in order to + simplify the handling of those on topmost folders. + + * OpenChange/MAPIStoreFolder.m (-deleteMessageWithMID:andFlags:): + invoke "prepareDelete" on the message object when available. + +2011-10-03 Francis Lachapelle + + * UI/WebServerResources/generic.js (snoozeAlarm): new function to + snooze an alarm for a specific number of minutes. + (showAlarmCallback): offer the user to snooze the alarm right + after triggering the browser-native alert. + (showSelectDialog): new function that construct a dialog box with + a popup menu. + + * UI/Scheduler/UIxAppointmentEditor.m (-viewAction): accepts the + new form parameter snoozeAlarm, which delays the alarm to the + specified number of minutes. + + * SoObjects/Appointments/SOGoCalendarComponent.m (-snoozeAlarm:): + new method to set the next alarm of the event in a specified + number of minutes. Only affect the quick table, not the original vCalendar. + +2011-10-03 Ludovic Marcotte + + * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:) + We compare sequence numbers to make sure we correctly accept + invitation replies for the "right" objects + +2011-10-03 Wolfgang Sourdeau + + * OpenChange/MAPIStoreDraftsMessage.m (-submit): unregister id + from mapping after operation. + + * OpenChange/MAPIStoreSOGo.m (sogo_message_modify_recipients): + this backend op now has a "columns" arguments for the user data + row. + +2011-09-30 Wolfgang Sourdeau + + * OpenChange/MAPIStoreMailMessage.m (-getMessageData:inMemCtx:): + same as below. + + * OpenChange/MAPIStoreCalendarMessage.m + (-getMessageData:inMemCtx:): delegated code to + MAPIStoreAppointmentWrapper so that organizers and invitees are + properly reported both in invitation emails and events. + + * OpenChange/MAPIStoreMessage.m (MAPIStoreInternalEntryId) + (MAPIStoreExternalEntryId): new helper functions that return an + NSData with the entry id for the requested user or contact. + (-getMessageData:inMemCtx:): adapted to the new mapistore_message + struct and column handling. + + * OpenChange/NSData+MAPIStore.m (-appendUInt16): new method. + + * OpenChange/EOQualifier+MAPIFS.m (-[EOKeyValueQUalifier + _evaluateMAPIFSMessageProperties:): ensure finalKey is never nil + nor undefined. + +2011-09-27 Wolfgang Sourdeau + + * OpenChange/MAPIStoreFSMessage.m (-getPrChangeKey:inMemCtx:): + first return the value stored in the plist, if present. Otherwise + fallback to the method making use of objectVersion. + + * OpenChange/MAPIStoreSOGo.m (sogo_folder_move_copy_messages): + added the "target_change_keys" parameter. -2004-12-13 Marcus Mueller + * OpenChange/MAPIStoreFolder.m + (-moveCopyMessagesWithMID:fromFolder:withMID:wantCopy:): ensure + the message URL exists in the MAPIStoreMapping, otherwise fail + with MAPISTORE_ERR_NOT_FOUND, to avoid a crash. Passe the target + changeKey as property to the new message. - * v0.9.101 + * OpenChange/MAPIStoreFSMessage.m (-objectVersion): return + 0xff...fff when "version" does not exist in the object properties. - * UIxAppointmentProposal.m: removed inclusion of iCalPerson+UIx.h +2011-09-27 Francis Lachapelle - * iCalPerson+UIx.[hm]: removed -rfc822EMail (moved to NGiCal), changed - implementation of -cnForDisplay (just a cover for -cnWithoutQuotes) + * UI/Common/UIxPageFrame.m (-userHasVacationEnabled): new method + that returns whether the user has an automatic vacation message enabled. - * v0.9.100 - - * UIxAppointmentEditor.m: fixed incorrect redirect location + * SoObjects/SOGo/SOGoUserDefaults.m (-setBusyOffHours): new setter + for the new defaults SOGoBusyOffHours, which defines if periods + outside business hours should be opaque (busy). + (-busyOffHours): getter corollary to the new method above. - * UIxCalWeekListview.m, UIxCalWeekChartview.m: use new formatter option - to correctly format private appointments + * UI/PreferencesUI/UIxPreferences.m (-setBusyOffHours:): new + setter for the new defaults SOGoBusyOffHours. + (-busyOffHours): getter corollary to the new method above. - * v0.9.99 + * SoObjects/Appointments/SOGoFreeBusyObject.m + (-fetchFreeBusyInfosFrom:to:): add off-hours if defaults + SOGoBusyOffHours is true. - * {English,French}.lproj/default.strings: new label - "private appointment", requested by Laurent for agenor. +2011-09-26 Wolfgang Sourdeau - * UIxCalWeekPrintview.m, UIxCalMonthPrintview.m: add label - "private appointment" if apt is not accessible. + * OpenChange/MAPIStoreFolder.m + (-moveCopyMessagesWithMID:fromFolder:withMID:wantCopy:): ensure + that "data" is not NULL before passing it to + set_SPropValue_proptag as it might be converted to a PT_ERROR + value. + (-moveCopyMessageWithMID:fromFolder:withMID:wantCopy:): fixed + method name. Added PR_CHANGE_KEY and PR_PREDECESSOR_CHANGE_LIST to + list of excluded properties. - * UIxCalView.m: set label "private appointment" as privateTitle of - private formatters. + * SoObjects/Mailer/SOGoDraftObject.m (-sendMailAndCopyToSent:): + renamed "sendMail" and made copying the messsage to the sent + folder opetional. + (-sendMail): new method that invokes the above one with "yes". -2004-12-10 Marcus Mueller + * OpenChange/MAPIStoreMemMailMessage.m (-save): fixed "subject" + header, "to" and other recipients. Fixed "content-type", that was + deduced after "message" was generated. Take the client-provided + PR_CHANGE_KEY into account to avoid synchronisation errors. - * v0.9.98 + * OpenChange/MAPIStoreDraftsMessage.m (-_commitProperties): make + use of "PR_SUBJECT_PREFIX_UNICODE" and + "PR_NORMALIZED_SUBJECT_UNICODE" to construct the "subject" header. + (-submit): invoke the new "-sendMailAndCopyToSent:" method with + "NO". - * English.lproj/default.strings: provided additional localizable - strings for event "classification" (private/public). + * OpenChange/MAPIStoreMailMessage.m (-getPrChangeKey:inMemCtx) + (-getPrPredecessorChangeList:inMemCtx): when a record is not + returned, invoke the container's synchroniseCache method, as was + done in -objectVersion. - * UIxAppointmentView.[wox,m], UIxAppointmentEditor.[wox,m]: added - workaround for SOGo bug #1052, private details are hidden now - from others. Also, apts are not editable by non-owners any longer. + * OpenChange/MAPIStoreMailFolder.m (-synchroniseCache): renamed + local var "folderWasModified" to "foundChange", as in + MAPIStoreGCSFolder's version. Fixed a bug where "foundChange" + would be reset to NO when deletes were not found, even if new + elements were detected. - * UIxCalView.[hm]: added formatters for private appointments. Also, - added flags for caching special information about apts (public, - owned) etc. This outphases the use of tooltip.../shortText... - for all calviews (with the exception of printviews). Subclasses - may need to override -configureFormatters to adjust them according - to their needs. +2011-09-23 Francis Lachapelle + + * UI/PreferencesUI/UIxPreferences.m (-defaultCalendarList, -itemCalendarText, + -userDefaultCalendar, -setUserDefaultCalendar:): new methods to + show a popup menu for the new defaults SOGoDefaultCalendar. This + option sets which calendar is used when creating an event or a + task (selected, personal, first enabled). - * UIxCalInlineAptView.[hm]: new view used by all calviews to render - appointments using formatters. + * UI/WebServerResources/SchedulerUI.js (eventsListCallback): + events are always editable and erasable for superusers. + (newEvent): added supported for the new defaults SOGoDefaultCalendar. - * UIxCalDayOverview.wox, UIxCalDayListview.[wox,m], - UIxCalDayChartview.[wox,m], UIxCalDayPrintview.wox, - UIxCalWeekOverview.wox, UIxCalWeekListview.[wox,m], - UIxCalWeekChartview.[wox,m], UIxCalWeekColumnsview.wox, - UIxCalWeekPrintview.[wox.m], UIxCalMonthOverview.wox: - changed to use UIxCalInlineAptView and provided -configureFormatters - which fixes SOGo bug #1052 +2011-09-23 Wolfgang Sourdeau -2004-12-09 Marcus Mueller + * OpenChange/MAPIStoreGCSMessage.m (-getPrChangeKey:inMemCtx:): + first force a synchronisation of the parent cache if the change key + cannot be retrieved and invoke abort if the change key is still + not available afterwards. - * v0.9.97 + * OpenChange/MAPIStoreMailMessage.m (-getPrChangeKey:inMemCtx:): + same as above. - * UIxAppointmentEditor.[wox,m]: provided API and UI for marking an - event as being private or public, public being the default. + * OpenChange/MAPIStoreMailFolder.m (-lastMessageModificationTime): + invoke "synchroniseCache" in order to make sure we return the real + last modification time. + (-synchroniseCache): improved to increment the last modification + time when messages have been deleted. + + * OpenChange/SOGoMAPIFSMessage.m (-mapistoreMessageClass): method + implemented poorly (but work for now) and that differentiates + between the MAPIStoreMessage classes based on certain elements in + their folder path. + + * OpenChange/MAPIStoreFolder.m (-messageClass): removed method, + replaced with the new mechanism below. + + * OpenChange/NSObject+MAPIStore.h (-mapistoreMessageClass): new + category method that returns the proper MAPIStoreMessage wrapper + class from instances of SOGoObject and children classes. - * English.lproj/default.strings: provided additional localizable - strings for event "classification" (private/public). +2011-09-22 Ludovic Marcotte + + * OpenChange/MAPIStoreContactsMessage.m + Added more field mappings (surname, given name, + middle name, etc.) - * UIxAppointmentEditor.m: set 'transparency' of new items to - 'TRANSPARENT' instead of 'OPAQUE'. In agenor FreeBusy information is - constrained by a folder flag instead of individual events, however - the intent is to permit retrieval of FreeBusy information in general. - Please note that the according information isn't properly parsed/set - in loadValues/saveValues as of now - the underlying iCalEvent doesn't - handle this as of now. +2011-09-22 Wolfgang Sourdeau -2004-12-08 Marcus Mueller + * OpenChange/MAPIStoreMailFolder.m (-createMessage): return a MAPIStoreMemMailMessage. + + * OpenChange/SOGoMemMessage.m: new class that only provides a + temporary (memory-based) dictionary of Exchange attributes. + Similar to SOGoMAPIFSMessage except for the ability to save the + dictionary in question. - * v0.9.96 + * OpenChange/MAPIStoreMemMailMessage.m: new class that enables the + saving of composed mail messages, during the different copy + operations. - * UIxCalView.h: made -isMyApt and -aptStyle public. + * OpenChange/MAPIStoreDraftsMessage.m (-getPrChangeKey) + (-getPrPredecessorChangeList:inMemCtx:): return + MAPISTORE_ERR_NOT_FOUND. + (-getPidLidImapDeleted:inMemCtx:, -getPrInternetMessageId:inMemCtx:): same + as above. - * UIxAppointmentPrintview.m: implemented -isMyApt and -aptStyle, used - by UIxAppointmentPrintview.wox + * OpenChange/MAPIStoreMailFolder.m (-[MAPIStoreDraftsFolder + messageClass, createMessage]): restore methods. - * UIxAppointmentPrintview.wox: print summary, location, start/endtime - in italics - fixes SOGo bug #1070 + * OpenChange/MAPIStoreFolder.m + (-moveCopyMessagesWithMIDs:andCount:fromFolder:withMIDs:wantCopy:): + adapted to be invoked from the target folder. + Implemented generic version for specialized folders lacking an + implementation and for copying/moving items across folders of + different types. + (-postNotificationsForMoveCopyMessagesWithMIDs:andMessageURLs:andCount:fromFolder:withMIDs:wantCopy:): + new helper method that performs the whole notification magic for + message moves. - * UIxCalWeekPrintview.m, UIxCalMonthPrintview.m: extended - -shortTextForApt to use different css styles, when -isMyApt returns - NO - fixes SOGo bug #1070 + * OpenChange/MAPIStoreSOGo.m (sogo_folder_move_copy_messages): + adapted to last backend changes. - * UIxCalDayPrintview.[m, wox]: use -aptStyle to print appointments not - belonging to user in italics - fixes SOGo bug #1070 +2011-09-21 Wolfgang Sourdeau - * UIxCalDayOverview.wox, UIxCalDayChartview.wox, UIxCalDayListview.wox - UIxCalWeekOverview.wox, UIxCalWeekListview.wox, - UIxCalWeekChartview.wox, UIxCalWeekColumnsview.wox, - UIxCalMonthOverview.wox, UIxCalYearOverview.wox: - changed layout according to SOGo bug #1071 (v0.9.95) + * OpenChange/MAPIStoreMailFolder.m + (-moveCopyMessagesWithMIDs:andCount:toFolder:withMIDs:wantCopy:): + improved by acting directly on source and dest MIDs, by handling + multiple messages at once and by accepting proper UID ranges in + the COPYUID response. - * UIxAppointmentView.m, UIxDatePicker.m, UIxCalView.m: changed to use - NGLogging (v0.9.94) + * OpenChange/MAPIStoreSOGo.m (sogo_folder_move_copy_messages): + adapted to new backend prototype. -2004-11-08 Helge Hess + * OpenChange/MAPIStoreFolder.m (-createMessage): reverse the + specification of the "mid" parameter as the copy/move hack in + MAPIStoreMailFolder is no longer needed. - * UIxAppointmentPrintview.m: fixed a compile warning (v0.9.93) +2011-09-20 Wolfgang Sourdeau -2004-10-26 Marcus Mueller + * OpenChange/MAPIStoreObject.m (-getReplicaKeyFromGlobCnt:): new + method that returns the same result as + getReplicaKey:fromGlobCnt:inMemCtx: in the form of an NSData + instance. - * UIxAppointmentProposal.wox: uses dayLabelFormat instead of hardcoded - format - fixes SOGo bug #984 (v0.9.92) + * OpenChange/MAPIStoreContactsMessage.m (-save): same as below. -2004-10-18 Marcus Mueller + * OpenChange/MAPIStoreTasksMessage.m (-save): same as below. - * UIxAppointmentPrintview.wox: insertBR for comment adedd (v0.9.91) + * OpenChange/MAPIStoreCalendarMessage.m (-save): set the + PR_CHANGE_KEY to the value passed by the client after the version + cache has been updated a first time. - * UIxAppointmentEditor.wox: added possibility to add resources from - Addressbook (v0.9.90) + * OpenChange/MAPIStoreMailMessage.m (-getPrChangeKey:inMemCtx:, + (-getPrPredecessorChangeList:inMemCtx:): same as below. -2004-10-16 Marcus Mueller + * OpenChange/MAPIStoreGCSMessage.m (-getPrChangeKey:inMemCtx:, + (-getPrPredecessorChangeList:inMemCtx:): wrapper accessors around + the getters defined in MAPIStoreGCSFolder below. - * UIxAppointmentEditor.wox: added "withCN=YES" to resources because - doing otherwise would lead to stripping the CN from resources in - subsequent saves - why would anyone want this to be standard - behavior? (v0.9.89) + * OpenChange/MAPIStoreMailFolder.m + (-setChangeKey:forMessageWithKey:, -changeKeyForMessageWithKey:) + (-predecessorChangeListForMessageWithKey:): same as below. + + * OpenChange/MAPIStoreGCSFolder.m (-changeKeyForMessageWithKey:) + (-predecessorChangeListForMessageWithKey:) + (-setChangeKey:forMessageWithKey: (NSString *) messageKey): new + methods for retrieving or setting the PR_CHANGE_KEY for the + specified record. The PR_PREDECESSOR_CHANGE_LIST is also handled, + albeit set automatically. + + * OpenChange/NSString+MAPIStore.m (+stringWithGUID:) + (-extractGUID:): new wrapper methods around the GUID utility + functions in libndr. + + * OpenChange/NSData+MAPIStore.m (+dataWithXID: asXIDInMemCtx:): + new method to handle XID structs. + (-appendUInt8, -appendUInt32): new methods to easily append + integer values. + +2011-09-19 Ludovic Marcotte + + * OpenChange/MAPIStoreDraftsMessage.m: (_commitProperties) + We now correctly handle the "importance" property + + * Added handling of PR_IMPORTANCE and PidLidBusyStatus + for event objects + +2011-09-14 Ludovic Marcotte + + * SoObjects/Mailer/SOGoMailBaseObject.m: (imap4Connection): + Cache "corruption" bug fix that could lead us to using the + wrong IMAP connection for OpenChange users + + * OpenChange/MAPIStoreMapping.m: (unregisterURLWithID:) + We also remove the keys/values from the indexing database + + * OpenChange/MAPIStoreSOGo.m + RopMoveCopyMessages, RopCopyTo and messages move/copy + notifications support for messages + + * OpenChange/MAPIStoreContactsMessage.m: massive improvements + to support many new properties + + * OpenChange/MAPIStoreTasksMessage.m: massive improvements + to support many new properties + + * OpenChange/MAPIStoreFolder.m: (getPrAccess:inMemCtx:) fixed + permissions issue - we were returning a wrong value leading to + IMAP subfolders not being "writable" + + * SoObject/Mailer/SOGoMailFolder.m (prefetchCoreInfosForMessageKeys:) + Fixed a MAJOR issue regarding keys handling. We should NEVER assume + the untagged IMAP response's order will be the same as the FETCH's one! + + * SoObjects/Mailer/SOGoMailBaseObject.m: (imap4Connection) We now + ensure the context is valid to properly get the user's login by + using the container's context if the current one is nil + + * OpenChange/MAPIStoreMailFolder.m: (moveCopy...) Cleaned up some + code and we now also correctly send notification updates for the + destination folder + +2011-09-04 Ludovic Marcotte + + * OpenChange/MAPIStoreMapping.m: (MAPIStoreMappingTDBTraverse()) + Fixed a major issue regarding the use of strtoll. It was overflowing + keys as they are unsigned long long int. We now make use of strtoull + which fixes the problem and avoids major cache corruption of the + indexing.tdb database (per user). + + * OpenChange/MAPIStoreSOGo.m: Some cleanups to ease current and + future debugging + +2011-08-18 Francis Lachapelle + + * UI/WebServerResources/UIxContactEditor.js + (regenerateCategoriesMenu): register the onMenuClickHandler + function on the mouse down event instead of the click event, since + the contextual menu is hidden on the mouse down event. This fixes + the bug where a predefined category could never be selected from + the combo box. + +2011-08-15 Wolfgang Sourdeau + + * OpenChange/MAPIStoreMailFolder.m + (-[MAPIStoreMailFolder createFolder:withFID:inContainer:): new method + that enables the specification of a SOGo object container. + (-[MAPIStoreMailFolder createFolder:withFID:): rewritten method to make + use of the above. + (-[MAPIStoreInboxFolder createFolder:withFID:): rewritten method to make + use of the above, with the choice container depending on the + "usesAltNamespace" ivar. + (-[MAPIStoreInboxFolder initWithURL:inContext:): overriden method + to initialize the "usesAltNamespace" ivar based on the flags set + on the "INBOX" folder. + (-[MAPIStoreInboxFolder + folderKeysMatchingQualifier:andSortOrderings:]) + (-[MAPIStoreInboxFolder lookupFolder:]): + overriden methods to make use of "usesAltNamespace". + (-[MAPIStoreMailFolder _imapFolderNameRepresentation:): new + private method that combines the SOGo representation of an IMAP + folder leaf, without the "folder" prefix, with the current folder + as parent. + (-[MAPIStoreMailFolder _cleanupSubfolderKeys:): new private method + that tests the list of children keys passed as parameter and + compare each one of them with the special folders: trash, sent and + drafts and those that are found. + (-[MAPIStoreInboxFolder _imapFolderNameRepresentation:): overriden + method by taking the "altnamespace" ivar into account. + + * SoObjects/Mailer/SOGoMailAccount.m + (-toManyRelationshipKeysWithNamespaces:): new method, superseding + "toManyRelationshipKeys" that enables the returning of namespaces + "folders" or not. + + * OpenChange/MAPIStoreMailMessage.m (-objectVersion): updated code + as in MAPIStoreGCSMessage's version. + + * OpenChange/MAPIStoreMailFolder.m (-messageTable): we no longer + cache the table object as we don't want to assign different + handles to the same memory object, causing inconsistencies with + tables instantiated twice with different parameters. + +2011-08-13 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailFolder.m + (-lookupName:inContext:acquire:): fixed a crash occurring when the + key didn't end with ".eml". + +2011-08-12 Wolfgang Sourdeau + + * OpenChange/MAPIStoreMailMessageTable.m + (-getRow:withRowID:andQueryType:inMemCtx:): overriden method to + prefetch the "core infos" of messages that are going to be + fetched. + +2011-08-12 Francis Lachapelle + + * UI/WebServerResources/HTMLElement.js (refreshSelectionByIds): + replaced the call to the Prototype method "down" in favor to a + global access with the element ID. This fixes a multiple-message + selection issue with IE. + +2011-08-12 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailFolder.m + (-prefetchCoreInfosForMessageKeys:): new method that enables the + prefetching and caching of "core infos" for messages. + (-lookupName:inContext:acquire:): looked up messages are now fed + with their cached core infos, if present. + + * SoObjects/Mailer/SOGoMailObject.m: (addFlags:, removeFlags:) + release "coreInfos" rather than flagsCache, which has been + obsoleted. + (_hasFlag:): make use of "coreInfos" to fetch the flags since most + of the time the other infos will be fetch for the same object, + bringing a 30ms speedup per message. + (-setCoreInfos): new accessor that enables setting coreInfos from + an external object. + (+initialize): coreInfoKeys was renamed to SOGoMailCoreInfoKeys + and has now been published. + + * OpenChange/MAPIStoreTable.m (-setHandleId:): only register the + table in the notification cache if the provided handle id is not + null. + + * OpenChange/MAPIStoreCalendarMessage.m (-save): resynchronise the + container cache after the operation. + + * OpenChange/MAPIStoreTasksMessage.m (-save): resynchronise the + container cache after the operation. + + * OpenChange/MAPIStoreContactsMessage.m (-save): resynchronise the + container cache after the operation. + + * OpenChange/MAPIStoreGCSMessage.m (-objectVersion): ensure that a + change number is available when the message is "not new", but + resynchronise the cache in doing so. + + * OpenChange/MAPIStoreSOGo.m (sogo_table_handle_destructor): added + new backend operation. + + * OpenChange/NSAutoreleasePool+MAPIStore: removed module since it + was a lot of code to handle one specific case. + + * OpenChange/MAPIStoreGCSMessageTable.m + (-evaluatePropertyRestriction:intoQualifier:): create a local + talloc context and free it at the end when generating a new date + restriction. + + * OpenChange/plreader.m (-displayKey:withIndentation:): display + alternative hex representation of the keys. + +2011-08-11 Wolfgang Sourdeau + + * OpenChange/MAPIStoreFSFolderTable.[hm]: new module. + + * OpenChange/MAPIStoreFSFolder.m (-folderTable): overriden method + to return a "MAPIStoreFSFolderTable" instance. + (-folderKeysMatchingQualifier:andSortOrderings:): overriden method + in order to evaluate folders by applying the received qualifer to + the properties message. + + * OpenChange/MAPIStoreFolder.m (-objectVersion): implemented + method based on the value provided in the folder props dictionary. + (-propertiesMessage): new getter. -2004-10-14 Marcus Mueller + * OpenChange/MAPIStoreObject.m (-objectVersion): now a mandatory + method for subclasses. - * UIxAppointmentView.wox: insertBR for comments (v0.9.88) +2011-08-10 Wolfgang Sourdeau -2004-10-12 Helge Hess + * OpenChange/MAPIStoreMapping.m + (+mappingForUsername:withIndexing:): modified contrusctor to make + use of a "username" parameter that enable per-user "singletons". + (-increateUseCount, -decreaseUseCount): new accessors that enable + the registration/unregistration of the mapping object from the + singleton registry. + +2011-08-08 Wolfgang Sourdeau + + * OpenChange/MAPIStoreFolder.m (-lookupMessage:): set the WOContext + of the resulting SOGoObject to the value attached to the current + MAPIStoreContext. + + * OpenChange/MAPIStoreCalendarMessageTable.m + (-evaluatePropertyRestriction:intoQualifier:): implemented + searches on PR_OWNER_APPT_ID in order to enable the retrieval of + the requested invitation. + + * OpenChange/MAPIStoreCalendarMessage.m (-save): fixed attendees + handling (only change the attendee partstat) and avoid saving the + event when the newpartstat is "undefined". - * UIxAppointmentProposal.wox: use '1' instead of 'YES' in const - bindings, otherwise running into a MacOSX bug (v0.9.87) + * OpenChange/MAPIStoreAppointmentWrapper.m + (-getPrOwnerApptId:inMemCtx:): properly reimplemented the method + following the spec. + (-getPidLidServerProcessed:inMemCtx:): now returns yes in order to + prevent the client from uselessly updating the event. -2004-10-08 Marcus Mueller + * OpenChange/MAPIStoreMailMessage.m + (-getPrReplyRequested:inMemCtx:): commented out method. + (-getPrResponseRequested:inMemCtx:): returns NO when the message + is an invitation, as the mail handling is performed internally by + SOGo. + (-getPrOwnerApptId:inMemCtx:): properly forwards the call to + MAPIStoreAppointmentWrapper when required. + (-getPidLidMeetingType:inMemCtx:): new method. - * v0.9.86 + * OpenChange/MAPIStoreContext.m (-activeUser): new helper method. - * UIxAppointmentView.[m|wox]: new method to return categories as a - string. + * OpenChange/MAPIStoreSOGo.m (sogo_backend_init): invoke + -activateApplication on the new app in order to make it accessible + via [WOApplication application]. - * UIxAppointmentPrintview.wox: added missing priority and categories. + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-lookupCalendarFoldersForUID:): make use of -[SOGoUser + lookupCalendarFoldersForUID:]. - * UIxAppointmentProposal.wox: also allow selection from private address - book for resources/participants. This might lead to the fact that - contacts can be selected which do not have a calendar at all - there - should be some way of safeguarding this in the Contacts bundle. + * SoObjects/Appointments/SOGoAppointmentObject.m + (_handleAttendee:withDelegate:ownerUser:statusChange:inEvent:): + enable updating the attendee's calendar when a WORequest is not + available at all, for example from OpenChange. -2004-10-06 Marcus Mueller +2011-08-05 Francis Lachapelle - * UIxAppointmentEditor.m: changed iCal template to use RFC2445 - conforming line delimiters. Changed the testAction to aid in - debugging our iCal rendering. (v0.9.85) + * UI/Contacts/UIxContactView.m (-contactCardTitle): removed this + method since we no longer prefix the contact name by a label + ("Card For"). + (-_cardStringWithLabel:value:url:): new method that wraps the + value with an
link with the specified URL type. Used for + telephone numbers. -2004-10-05 Marcus Mueller +2011-08-05 Wolfgang Sourdeau - * v0.9.84 + * OpenChange/MAPIStoreAppointmentWrapper.m + (-getPidLidGlobalObjectId:inMemCtx:) + (-getPidLidCleanGlobalObjectId:inMemCtx:): reimplemented methods + by following the spec carefully (MS-OXICAL: 2.1.3.1.1.20.26). - * SOGoAppointment+UIx.[hm]: new class providing UIx convenience methods + * OpenChange/NSString+MAPIStore.m (-convertHexStringToBytes): new + method that returns an NSData from a string of hex values + represented as text. - * UIxAppointmentView.[m|wox]: added priority and categories +2011-08-04 Wolfgang Sourdeau - * UIxAppointmentEditor.[m|wox]: added priority and categories + * OpenChange/MAPIStoreDraftsMessage.m (-getMessageData:inMemCtx:): + overriden method. + Made module able to handle SOGoMailObject as well, since we can + possibly have such objects as value for sogoObject. + (-getPrImportance:inMemCtx:): overriden method. + (-getPrReceivedByEmailAddress:inMemCtx:): overriden method. + (-getPrSenderEmailAddress:inMemCtx:): overriden method. + (-getPrDisplayCc:inMemCtx:): overriden method. + + * OpenChange/MAPIApplication.m (+isCachingEnabled): new overriden + method that returns "NO" in order to avoid leaking dictionaries + that we don't use since we are not WO-based. + + * OpenChange/MAPIStoreMapping.m (-initWithIndexing:) + (-registerURL:withID:): removed noisy warnings. + + * OpenChange/MAPIStoreSOGo.m (sogo_backend_create_context): + adaoted to new prototype. + +2011-08-02 Wolfgang Sourdeau + + * OpenChange/MAPIStoreFolder.m (-permissionsTable): new method + that returns a permissions table for the current folder. + + * OpenChange/MAPIStorePermissionsTable.[hm]: new class module for + handling permission objects. Currently only provide stub entries + for the "anonymous" and "default" users. + + * OpenChange/MAPIStoreContactsMessageTable.m + (-evaluateContentRestriction:intoQualifier:): overriden method in + order to evaluate PR_MESSAGE_CLASS_UNICODE. + (-evaluatePropertyRestriction:intoQualifier:): added stub support for + PidLidAddressBookProviderArrayType, + PidLidAddressBookProviderEmailList and real support for + PidLidEmail[123]OriginalDisplayName. + + * OpenChange/MAPIStoreTable.m (-operatorFromRestrictionOperator): + code split from -evaluatePropertyRestriction:intoQualifier: and + exposed for external use. + +2011-08-02 Francis Lachapelle + + * UI/WebServerResources/MailerUI.js (_onMenuLabelFlagX): fixed a + bug when changing the flag of multiple messages. + + * UI/WebServerResources/SOGoRootPage.js (onLoginClick): reset + error message (if any) when login in. + +2011-08-01 Wolfgang Sourdeau + + * OpenChange/MAPIStoreFSMessage.m + (-getAvailableProperties:inMemCtx:): take only NSNumber keys into + account. + +2011-07-29 Wolfgang Sourdeau + + * OpenChange/MAPIStoreTable.m (-dealloc): free the list of + columns, otherwise the last list set is leaked. + +2011-07-28 Wolfgang Sourdeau + + * OpenChange/MAPIStoreSOGo.m (sogo_folder_get_deleted_fmids): + implemented new backend method. + + * OpenChange/MAPIStoreTable.m (-loggingPrefix): removed method as + it was causing crashes when the parent object was deallocated. + + * SoObjects/Mailer/SOGoMailFolder.m (-statusForFlags:): new method + that returns the values of flags passed as parameters. + (-fetchUIDsOfVanishedItems:): new method that returns the list of + UID that are reported to have vanished since the specified modseq. + +2011-07-27 Wolfgang Sourdeau + + * OpenChange/MAPIStoreGCSMessageTable.m + (-evaluatePropertyRestriction:intoQualifier:): now handles + PR_CHANGE_NUM using the new methods below. + + * OpenChange/MAPIStoreGCSMessage.m (-objectVersion): overriden + method to make use of -[MAPIStoreGCSFolder + changeNumberForMessageWithKey:]. + + * OpenChange/MAPIStoreGCSFolder.m (-initWithURL:inContext:) + (initWithSOGoObject:inContainer:): initialise the new + "versionsMessage" ivar, pointing to a SOGoMAPIFSMessage object + that includes versioning information. + (-lastMessageModificationTime): return the date value stored in + "versionsMessage". + (-synchroniseCache): new method that updates "versionsMessage" + differentually with versioning data from the server. + (-lastModifiedFromMessageChangeNumber:): new helper method that returns + the corresponding c_lastmodified from a MAPI change number. + (-changeNumberForMessageWithKey:): new helper method that returns the + version number associated with a message. + + * OpenChange/MAPIStoreMailMessageTable.m + (-evaluatePropertyRestriction:intoQualifier:): now handles + PR_CHANGE_NUM using the new methods below. + + * OpenChange/MAPIStoreMailMessage.m (-objectVersion): overriden + method to make use of -[MAPIStoreMailFolder + changeNumberForMessageUID:]. + + * OpenChange/MAPIStoreMailFolder.m (-initWithURL:inContext:) + (initWithSOGoObject:inContainer:): initialise the new + "versionsMessage" ivar, pointing to a SOGoMAPIFSMessage object + that includes versioning information. + (-lastMessageModificationTime): return the date value stored in + "versionsMessage". + (-synchroniseCache): new method that updates "versionsMessage" + differentually with versioning data from the server. + (-modseqFromMessageChangeNumber:): new helper method that returns + the corresponding IMAP "modseq" from a MAPI change number. + (-messageUIDFromMessageKey:): new helper method. + (-changeNumberForMessageUID:): new helper method that returns the + version number associated with a message. + + * OpenChange/MAPIStoreTable.m (-loggingPrefix): overriden method + in order to get more useful informations. + + * OpenChange/MAPIStoreObject.m (-loggingPrefix): overriden method + in order to get more useful informations. + + * OpenChange/MAPIStoreFSMessageTable.m + (-evaluatePropertyRestriction:intoQualifier:): overriden method to + handle PR_CHANGE_NUM, based on the messages version number. + + * OpenChange/MAPIStoreFSMessage.m (-objectVersion): overriden + method to retrieve the object version from the "version" attribute + in the properties list. + (-save): update the "version" attribute in the saved property list + from openchangedb. + + * OpenChange/MAPIStoreAppointmentWrapper.m + (-getPidLidGlobalObjectId:inMemCtx:): work-around certain buggy + events which might now have a "CREATED" element. + + * OpenChange/MAPIStoreContactsMessage.m: commented out + "-getPrOabName:inMemCtx:" and "-getPrOabLangid:inMemCtx:" as they + seem to be useful only for contact lists. + + * OpenChange/MAPIStoreFolder.m + (-faiMessageKeysMatchingQualifier:andSortOrderings:): + reimplemented method to make use of the new method below. + + * OpenChange/SOGoMAPIFSFolder.m + (-toOneRelationshipKeysMatchingQualifier:andSortOrderings:): moved + method from -[MAPIStoreFSFolder + messageKeysMatchingQualifier:andSortOrderings:] in order to make + it available to all the SOGoMAPIFSFolder clients. + + * OpenChange/MAPIStoreContext.m (-getNewChangeNumber): new + utility method that returns a change number from the mapistore db + via the openchangedb API. + + * OpenChange/SOGoMAPIFSMessage.m (-save): serialize the properties + dictionary in binary plist format to avoid GNUstep bugs where + high unsigned long long values are not parsed properly. + (-properties): corrolary to the above change. + + * OpenChange/NSArray+MAPIStore.m (-asArrayOfUnicodeStringsInCtx:): + the return type is now "struct WStringArray_r *". + + * OpenChange/NSString+MAPIStore.m (-asUnicodeInMemCtx): return an + empty string when length == 0, otherwise the resulting pointer + will be NULL. + + * OpenChange/plreader.m: new test tool to dump property lists + independently from their serialization format. + +2011-07-27 Francis Lachapelle + + * SoObjects/SOGo/SOGoUserFolder.m (-ownerInContext:): in case the + user domain is specified in the URL but not in the user login + name, we remove it (user@domain => user). + + * SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): drop + the domain from the login name when loginDomains are enabled but + domain-based UID is disabled. + +2011-07-26 Wolfgang Sourdeau + + * OpenChange/MAPIStoreMailFolderTable.[hm]: removed useless class. + + * OpenChange/MAPIStoreTable.m (-lookupChild:)): new method that + subclasses must override and that a child object matching the + table type. + + * OpenChange/MAPIStoreObject.m (-lookupChild:): removed method as + it was too generic. Each subclass has now its own set of + specialized methods. + (-childKeysMatchingQualiflier:andSortOrderings:) same as above. - * English.lproj/default.strings: new labels + * OpenChange/MAPIStoreMessage.m (-lookupAttachment:): new method, + replacing -[MAPIStoreObject lookupChild:]. + (-attachmentKeysMatchingQualiflier:andSortOrderings:) same as + above, replacing (-[MAPIStoreObject + childKeysMatchingQualiflier:andSortOrderings:]). -2004-09-25 Helge Hess + * OpenChange/MAPIStoreFolder.m (-lookupFolder:, -lookupMessage:) + (-lookupFAIMessage:): new methods, replacing -[MAPIStoreObject + lookupChild:]. + (-messageKeysMatchingQualiflier:andSortOrderings:) same as + above, replacing (-[MAPIStoreObject + childKeysMatchingQualiflier:andSortOrderings:]). + (-faiMessageKeysMatchingQualiflier:andSortOrderings:) same as + above, replacing (-[MAPIStoreObject + childKeysMatchingQualiflier:andSortOrderings:]). + (-folderKeysMatchingQualiflier:andSortOrderings:) same as + above, replacing (-[MAPIStoreObject + childKeysMatchingQualiflier:andSortOrderings:]). - * UIxCalDateLabel.m: minor code cleanups, fixed compilation on MacOSX - (v0.9.83) +2011-07-26 Francis Lachapelle -2004-09-13 Marcus Mueller + * UI/MailerUI/UIxMailListActions.m + (-getUIDsInFolder:withHeaders:): we check if the array of messages + UIDs is nil prior adding it to the returned dictionary. - * English.lproj/default.strings: fixed a missing ';' (v0.9.82) +2011-07-25 Wolfgang Sourdeau -2004-09-10 Marcus Mueller + * SoObjects/Mailer/SOGoMailAccount.m (-hasCapability): new proxy + method that determines whether an IMAP capability is present on + the server. + (-supportsQResync): new method that returns whether the server + supports the "QRESYNC" capability. - * v0.9.81 +2011-07-25 Francis Lachapelle - * GNUmakefile, product.plist: added new image + * UI/MainUI/SOGoRootPage.m (-connectAction): don't add the domain + if domain-based UIDs are not enabled. + (-changePasswordAction): idem. - * images/invisible_space_2.gif: new transparent image used by - UIxWeekListview.wox + * SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): added + test for the ivar "realUID" since it can be undefined if the + corresponding source is down. - * UIxCalDayView.m: rewrote -isCurrentDateInApt: to use - NGCalendarDateRange - - * UIxCalWeekListview.[m|wox]: implemented +2011-07-22 Wolfgang Sourdeau - * UIxCalWeekColumnsview.[m|wox]: implemented + * OpenChange/MAPIStoreSOGo.m (sogo_table_get_row_count): added new + backend operation. - * UIxCalWeekOverview.m: removed impl. of -appointments, moved to - superclass + * Tests/Unit/SaxXMLReaderFactory+SOGoTests.m: new module offering + a category on SaxXMLReaderFactory that enables finding our NGCards + SAX driver in our source directories. - * UIxCalWeekView.m: added impl. of -appointments +2011-07-21 Wolfgang Sourdeau -2004-09-10 Helge Hess + * OpenChange/MAPIStoreMailMessage.m: make use of the new class + below for calendar contents. - * UIxAppointmentPrintview.wox, UIxAppointmentView.wox: added missing - label prefix (v0.9.80) + * OpenChange/MAPIStoreCalendarMessage.m: make use of the new class + below. + (-save): handle invitation replies. -2004-09-09 Marcus Mueller + * OpenChange/MAPIStoreAppointmentWrapper.m: new wrapper class + module that implements the getters for iCalEvent objects. - * v0.9.79 +2011-07-20 Wolfgang Sourdeau - * UIxAppointmentEditor.wox: removed debug output of clientObject, - UIxPageFrame.wox is doing this now. + * OpenChange/MAPIStoreMailMessage.m (-subject): new overridable + accessor common to certain properties. - * UIxCalDayListView.[wox|m]: fixed some wrong assumptions of uid - handling, corrected to use the (now bugfixed) calendarUIDs of - clientObject. + * OpenChange/MAPIStoreObject.m: moved "-getEmptyString:inMemCtx:", + "-getLongZero:inMemCtx:", "-getYes:inMemCtx:", "-getNo:inMemCtx:" + into NSObject+MAPIStore.m -2004-09-07 Marcus Mueller + * OpenChange/MAPIStoreFolder.m (-lookupFolder:, -createMessage:): + assign the parent context woContext to the newly created + SOGoObject to enable access to "activeUser". - * v0.9.78 + * SoObjects/SOGo/SOGoObject.m (-setContext, -context): new + accessors for the "context" ivar. - * UIxCalDayOverview.m, UIxCalDayChartview.m: minor cleanups +2011-07-20 Francis Lachapelle - * UIxCalDayOverview.wox, UIxCalDayChartview.wox: added style - information for appointments, used for colorization (doesn't work - due to style problems - needs to get investigated later on) + * UI/WebServerResources/UIxMailToSelection.js + (addressFieldLostFocus): call addressFieldChanged to validate the + entry and split recipients in multiple fields. - * UIxCalDayListview.[m|wox]: started implementation of list view, - not quite finished. +2011-07-19 Wolfgang Sourdeau -2004-09-06 Marcus Mueller + * OpenChange/MAPIStoreCalendarMessage.m: reordered certain private + methods. + (-ownerTimeZone): moved into MAPIStoreObject. - * UIxAppointmentEditor.wox: fixed incorrect label (v0.9.77) + * OpenChange/MAPIStoreMailMessage.m (-_setupBodyData): new + centralized method that performs the common operations required to + fetch the message body. + (-getPrHtml:inMemCtx,-getPrBody:inMemCtx:): make use of the above + method. -2004-09-01 Marcus Mueller + * SoObjects/SOGo/NSString+Utilities.m + (-countOccurrencesOfString:): new self-explicit method. - * GNUmakefile.preamble: fixed for gsmake 1.9.2 build (v0.9.76) +2011-07-19 Francis Lachapelle -2004-08-31 Marcus Mueller + * SoObjects/SOGo/SOGoUserFolder.m (-_davFetchUsersMatching:): + append the domain to the username when SOGoEnableDomainBasedUID is + set to YES. When using domains, fetch matching users from visible + domains. - * UIxCalView.m: fixed stupid bug (v0.9.75) +2011-07-18 Wolfgang Sourdeau -2004-08-27 Marcus Mueller + * OpenChange/NSString+MAPIStore.m (-asUnicodeInMemCtx:): use an + alternative method to convert the string to a utf8 array of bytes + to avoid an undefined conditional bug in GNUstep. - * v0.9.74 +2011-07-18 Francis Lachapelle - * English.lproj/default.plist: more labels - - * UIxAppointmentView.wox: replaced static strings with labels + * SoObjects/SOGo/SOGoSystemDefaults.m (-enableDomainBasedUID): new + method that returns the boolean value of the new system defaults + SOGoEnableDomainBasedUID if at least one domain is defined. - * UIxAppointmentView.h, UIxCalView.h: exposed some methods + * SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): try to + extract the domain part of the login name only if the new system + defaults SOGoEnableDomainBasedUID is set to YES. If the domain is not + specified but SOGoEnableDomainBasedUID is enabled, add the domain to the + login name. - * product.plist: added "printview" method to SOGoAppointmentObject + * SoObjects/SOGo/SOGoUserManager.m + (-contactInfosForUserWithUIDorEmail): try to extract the domain + part of the login name only if the new system defaults + SOGoEnableDomainBasedUID is set to YES.. - * UIxAppointmentPrintview.[m|wox]: new printview for appointments + * SoObjects/SOGo/SOGoSession.m + (+decodeValue:usingKey:login:domain:password:): idem. -2004-08-27 Helge Hess + * SoObjects/SOGo/SOGoUserManager.m + (-_sourceCheckLogin:andPassword:domain:perr:expire:grace:): the + domain argument is now a pointer so it will be set according to + the matching authentication source. - * UIxAppointmentEditor.m: prepared to share code with contact editor - (v0.9.73) + * UI/MainUI/SOGoUserHomePage.m (-usersSearchAction): only append + the domain to the user's login if the new system defaults + SOGoEnableDomainBasedUID is set to YES. - * UIxCalView.m: minor code cleanups (v0.9.72) +2011-07-15 Wolfgang Sourdeau -2004-08-25 Marcus Mueller + * OpenChange/MAPIStoreSOGo.m (sogo_backend_init): disable the use + of the requests cache as objects are retained by the mapistore as + needed. - * GNUmakefile.preamble: removed NGScripting from dependencies - it's no - longer required (v0.9.71) + * SoObjects/SOGo/SOGoCache.m (-disableRequestsCache): new method + that adds the ability to not put requests object in the cache. - * UIxAppointmentProposal.m: changed -isSecondHalfGreen and - -isSlotRangeGreen due to a bugfix in NGExtensions (v0.9.70) + * OpenChange/MAPIStoreDraftsAttachment.m: removed useless class. - * v0.9.69 + * OpenChange/MAPIStoreMessage.m (-createAttachment): moved method + from MAPIStoreDraftsMessage + (-childKeysMatchingQualifier:andSortOrderings:): same as above. - * UIxAppointmentProposal.m: completed edit functionality. Resources and - participants are now passed as query parameters. - - * UIxAppointmentEditor.m: Resources and Participants are now properly - constructed from existing query parameters. + * OpenChange/*.m: make use of mapistore error code rather than + MAPI ones. -2004-08-24 Marcus Mueller + * OpenChange/MAPIStoreMailMessage.m (-getPrHtml:inMemCtx:): fixed + leak. - * v0.9.68 + * OpenChange/MAPIStoreFolder.m (-createFolder:withRow:andFID:): + fixed referencing of resulting folder. + (+initialize): fixed initialization of MAPIStoreFAIMessageK. + (-getTable:andRowCount:tableType:andHandleId:): properly return + MAPISTORE_ERR_NOT_FOUND for tables that are not handled by the + folder. - * UIxAppointmentEditor.m: added knowledge about "dur" parameter +2011-07-14 Wolfgang Sourdeau - * UIxAppointmentProposal.[m|wox]: added edit functionality, still - incomplete + * OpenChange/MAPIStoreSOGo.m: finalized the new API. - * UIxCalView.[hm]: remove date related query parameter methods, moved - to UIxComponent + * OpenChange/MAPIStoreTable.m: added memory debugging output. - * GNUmakefile.preamble: changes for linking against SOPE 4.3 (v0.9.67) + * OpenChange/NSArray+MAPIStore.m (-asFoldersListInCtx:) removed + useless method. + (-asArrayOfUnicodeStringsInCtx:) properly connect the talloc + hierarchy nodes. -2004-08-16 Marcus Mueller + * OpenChange/MAPIStoreSOGo.m: adapted to latest mapistore_backend + nomenclature. - * AnaisUidSelector.[wox,m]: Added colorizing of login's uid. (v0.9.66) +2011-07-14 Francis Lachapelle -2004-08-16 Helge Hess + * UI/MailerUI/UIxMailListActions.m + (-getUIDsInFolder:withHeaders:): don't add the quota if there's no + quota for the mail account. - * UIxAppointmentProposal.m: small bugfix to range processing (v0.9.65) + * UI/WebServerResources/UIxAttendeesEditor.js (onContactKeydown): + fixed glitch when pressing the tab key from an empty input field. + (onFreeBusyLoadHandler): removed redundant calls that were causing + errors when retrieving the attendees freebusy information. -2004-08-16 Marcus Mueller + * UI/WebServerResources/SOGoTimePicker.js (onChange): specified + the radix when calling parseInt since a string starting with 0 + would be parsed as an octal number. - * UIxTimeDateControl.m: removed a debug log. (v0.9.64) + * UI/WebServerResources/UIxAppointmentEditor.js (validateAptEditor): idem. - * v0.9.63 +2011-07-14 Ludovic Marcotte - * UIxCalView.m: -isMyApt done properly. + * SoObjects/SOGo/SOGoGCSFolder.m (davCollectionTag) + We now correctly cast the sync tag value. - * UIxCalWeekOverview.wox: use extra stylesheet info to colorize other's - appointments differently. +2011-07-13 Francis Lachapelle - * UIxDatePicker.m: removed a debug log. + * UI/WebServerResources/UIxAppointmentEditor.js (handleAllDay) + (_setDate): fixed errors when event lasts all-day. -2004-08-16 Helge Hess + * SoObjects/Mailer/SOGoMailFolder.m + (-deleteUIDs:useTrashFolder:inContext:): the withTrash argument is + now a pointer since the method can modify it when the current + folder is the trash folder. - * UIxAppointmentProposal.m: first working version of proposal (v0.9.62) + * SoObjects/Contacts/SOGoContactSourceFolder.m + (-_flattenedRecord:): added c_component key so the proper icon + appears beside entries in the Web interface. - * UIxAppointmentProposal: proper vertical/horizontal row generation - (v0.9.61) + * UI/WebServerResources/generic.js (_showAlertDialog): added fade + effect when showing or hiding a dialog box. -2004-08-16 Marcus Mueller +2011-07-13 Wolfgang Sourdeau - * UIxAppointmentView.m: fixed redirect in deleteAction. (v0.9.60) + * OpenChange/MAPIStoreContext.m (-init): removed the messages + cache dictionary, as its purpose has been superseeded by the + features of the "POC api". - * v0.9.59 + * OpenChange/MAPIStoreSOGo.m (sogo_op_openmessage) + (sogo_op_createmessage): now return a "poc api"-compatible + object. + (sogo_op_savechangesmessage, sogo_op_submitmessage) + (sogo_op_modifyrecipients): replaced methods with pocop + implementations. + (sogo_op_*attach*): methods to their final form' + (sogo_op_get_fid_by_name): removed obsolete method. + (sogo_op_release_record): removed obsolete method. - * UIxTimeDateControl.m: subclasses from UIxComponent now, hence - -viewTimeZone should work correctly now. + * OpenChange/NSObject+MAPIStore.m (MAPIStoreTallocWrapperDestroy): + the object release now occurs within an NSAutoreleasePool. - * UIxAppointmentProposal.wox, UIxAppointmentEditor.wox: fixed - cancel button urls. + * Tools/sogo-tool.m (main): instantiate SOGoSystemDefaults in + order to properly inject the entries from SOGoDefaults.plist. - * UIxAppointmentProposal.[wox,m]: fixed date/time fields. (v0.9.58) +2011-07-12 Francis Lachapelle -2004-08-16 Helge Hess + * UI/MailerUI/UIxMailFolderActions.m (-batchDeleteAction): we + only return the quota when not using the trash folder. - * UIxAppointmentProposal: added duration popup (v0.9.57) + * SoObjects/SOGo/SOGoFolder.m (-compare:): handle the case when + the display name is not defined. -2004-08-16 Marcus Mueller + * UI/Scheduler/UIxCalListingActions.m + (-_fetchFields:forComponentOfType:): test the calendar name and + set it to an empty string if it's not defined. - * v0.9.56 + * UI/Scheduler/UIxCalendarSelector.m (-calendars): idem. - * UIxTimeDateControl.m: HACK: added correct timeZone. + * UI/WebServerResources/UIxCalendarProperties.js (onOKClick): + refuses to save the properties if the calendar name is empty. -2004-08-16 Helge Hess + * UI/WebServerResources/SchedulerUI.js (updateCalendarProperties): + Create a new text node in case the calendar has no name. - * v0.9.55 +2011-07-12 Wolfgang Sourdeau - * UIxAppointmentProposal.m: load default start/enddates - - * UIxAppointmentEditor.m: add default start/enddates - -2004-08-16 Marcus Mueller + * OpenChange/MAPIStoreFSMessage.m + (+getAvailableProperties:inMemCtx:): added memCtx parameter. - * v0.9.54 + * OpenChange/MAPIStoreSOGo.m: (sogo_op_get_table_property) + (sogo_op_get_available_table_properties) + (sogo_op_set_restrictions,sogo_op_set_sort_order): removed + obsolete methods. - * UIxTimeDateControl.*, UIxTimeSelector.*, UIxDatePicker.*: - fixed. DatePicker expects day, month, year bindings now, - TimeSelector expects hour, minute, second. + * OpenChange/MAPIStoreCalendarMessageTable.m, + OpenChange/MAPIStoreContactsMessageTable.m, + OpenChange/MAPIStoreFAIMessageTable.m, + OpenChange/MAPIStoreFSMessageTable.m, + OpenChange/MAPIStoreMailMessageTable.m, + OpenChange/MAPIStoreTasksMessageTable.m: overriden + "+childObjectClass" to enable "getAvailableProperties:inMemCtx:" + to work properly. -2004-08-16 Helge Hess + * OpenChange/MAPIStoreTable.m + (-getRow:withRowID:andQueryType:inMemCtx:): slight change of + prototype in order to leave the structure initialization to the + backend. - * v0.9.53 +2011-07-11 Francis Lachapelle - * UIxAppointmentProposal: added attendee selectors, added ivars, added - searchProposal action + * UI/Scheduler/UIxAppointmentEditor.m + (-takeValuesFromRequest:inContext:): when switching from an + all-day event to a non-all-day event, we must add the vTimeZone + definition. The opposite is also fixed. - * added green_corner.gif + * SoObjects/Appointments/SOGoComponentOccurence.m + (-prepareDelete): when deleting an occurrence of a floating + all-day event, we must adjust the exception date to the user's timezone. - * iCalPerson+UIx.m: fixed -cnForDisplay to properly check for quotes - prior removing them (v0.9.52) + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-_flattenCycleRecord:forRange:intoArray:): when computing + occurrences of a floating all-day event, we must also ajdust the + exception dates to the user's timezone. -2004-08-15 Helge Hess +2011-07-11 Wolfgang Sourdeau - * UIxAppointmentEditor.m: fixed for new time fields (v0.9.51) + * OpenChange/*: made backend ops consistent with the talloc API, + where resources are allocated in a tree of "talloc contexts". - * fixed time field controls (v0.9.50) + * OpenChange/NSObject+MAPIStore.m (-tallocWrapper:): new method + enabling the wrapping of obj-c objects into talloc structures, in + order to ease memory management. -2004-08-15 Marcus Mueller +2011-07-08 Francis Lachapelle - * v0.9.49 + * UI/MailerUI/UIxMailListActions.m (-getUIDsAndHeadersInFolder) + (-getSortedUIDsAction): both methods now return the inbox quota + along with the other data. - * UIxTimeDateControl.[wox,m]: new component. + * UI/MailerUI/UIxMailFolderActions.m (-batchDeleteAction): return + the inbox quota when the messages were successfully deleted. - * UIxAppointmentProposal.wox: added labels and stuff, work in progress. + * SoObjects/Mailer/SOGoMailFolder.m + (-deleteUIDs:useTrashFolder:inContext:): when not using the trash folder + or when deleting a message within the trash folder, we now expunge the + folder immediately. + + * UI/WebServerResources/SOGoMailDataSource.js (init): quotas + information can now be passed as argument. It will be passed back + to the method "updateQuotas" from MailerUI.js. + +2011-07-08 Wolfgang Sourdeau + + * OpenChange/MAPIStoreContext.m (-openDir:): implemented. + (-closeDir): added useful comments. + (-_tableForFID:andTableType:, -openMessage:withMID:inFID:) + (-createMessageWithMID:inFID:isAssociated:): + (-getProperties:ofTableType:inRow:withMID:): + (-setPropertiesWithFMID:ofTableType:inRow:): + (-deleteMessageWithMID:inFID:withFlags:): make use of the new + folder cache instead of using lookupFolderWithFID:, especially + since the last ones now instantiates, caches and keep a usage + count of the folders. + + * OpenChange/MAPIStoreMailFolder.m (-lastMessageModificationTime): + implemented method by making use of the new -[SOGoMailFolder + mostRecentMessageDate] message, which is currently a more or less + precise way to obtain the mailbox's last modification date. + (-lastModificationTime): removed method. + + * OpenChange/MAPIStoreObject.m (-setMAPIRetainCount:) + (-mapiRetainCount:): moved methods from MAPIStoreMessage. + + * OpenChange/MAPIStoreTable.m + (-evaluateContentRestriction:intoQualifier:): temporarily + commented out code initializing "operator" as this local var is + never used. + + * OpenChange/MAPIStoreFolder.m (-initWithSOstringByAddingPercentEscapesUsingEncodinGoObject:inContainer:): + make use of -[NSString stringByAddingPercentEscapesUsingEncoding:] + to properly escape folder names with non-ascii characters. + + * OpenChange/MAPIStoreFSFolder.m (-createFolder:withFID:): same as + above. + + * OpenChange/MAPIStoreContext.m + (+contextFromURI:withConnectionInfo:andFID:inMemCtx:): same as + above. + + * OpenChange/SOGoMAPIFSFolder.m (-initWithName:inContainer:): + added method to properly initialize the "directory" ivar when + initialized as a subfolder. + + * OpenChange/MAPIStoreMailContext.m: MAPIStoreDeletedItemsContext + is now temporarily a fs-based context. + + * SoObjects/Mailer/SOGoMailFolder.m + (_fetchMessageProperties:matchingQualifier:andSortOrderings::): + properly implement this method, as properties should be an array + instead of a dictionary. + (-mostRecentMessageDate): new method that returns the date of the + last available message. + +2011-07-07 Francis Lachapelle + + * UI/WebServerResources/UIxListEditor.js (endEditable): when a + string doesn't match an existing card, keep the entry but + highlight it in red. + (serializeReferences): when an entry is not associated to a card, + extract the email and fullname from the string to create a new card. + + * UI/Contacts/UIxListEditor.m (-setReferencesValue:): if a card + reference doesn't match a known vCard UID, create a new vCard + like Thunderbird does. + + * UI/MainUI/SOGoUserHomePage.m (-_usersForResults:inDomain:): + fixed bug when the domain was empty. + (-usersSearchAction): idem. + +2011-07-06 Ludovic Marcotte + + * SoObjects/Mailer/NSData+Mail.m (bodyDataFromEncoding:) + Consider "binary" just like 7 or 8bit. + +2011-07-06 Francis Lachapelle + + * UI/WebServerResources/SchedulerUI.js (onShowCompletedTasks) + (updateCalendarStatus): removed exception for Safari version prior + to 3. + +2011-07-05 Ludovic Marcotte + + * UI/MailPartViewers/UIxMailPartICalActions.m + (-_setupChosenEventAndEventObject:) we now correctly + update the right event in the database in order to + update major properties coming from external invitations + during updates. + * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:) + We check if uid is not nil prior comparing it to the + owner. This fixes bug #1323 + * Added patches included in bug #1348 - which now allows + group-based ACLs for IMAP. + * SoObjects/SOGo/SOGoSieveManager.m: Added patch from + bug #1344 - which fixes Sieve script generation errors + for reject filters. + * SOPE/GDLContentStore/GCSFolderManager.m ( + -_reallyCreateFolderWithName:andFolderType:...): Fix + path handling for recent GNUstep base versions. This + fixes bug #1327. + * SoObjects/SOGo/LDAPSource.m (-checkLogin:password:...) + We now make sure to use the original source's bindDN/password + when looking up the user's DN for indirect binds. This should + fix bug #1342. + +2011-07-02 Ludovic Marcotte + + * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:) + We now update the request's content in case we got participants + with status change (for resources, for example) - * English.lproj/default.strings: new labels +2011-06-30 Wolfgang Sourdeau - * UIxTimeSelector.m, UIxDatePicker.m: correct date bindings. + * OpenChange/MAPIStoreSOGo.m (sogo_op_get_folders_list): method + removed from struct mapistore_backend. -2004-08-15 Helge Hess + * OpenChange/MAPIStoreContext.m: the ldb connection handle to + openchange.ldb is now passed via struct mapistore_connection_info. - * v0.9.48 +2011-06-29 Ludovic Marcotte - * UIxAppointmentEditor.m: minor cleanups + * Added get/set/unset capabilities to sogo-tool to set + user's defaults/settings. Refactored some code to be + more cleanly structured. - * UIxAppointmentView.m: added -delete action +2011-06-24 Francis Lachapelle - * UIxAppointmentEditor.m: more decoupling from iCal. Added some error - handling UI code (errorText), date selector is broken (v0.9.47) + * SoObjects/SOGo/SOGoSystemDefaults.m (-loginDomains): new method + that returns the content of the defaults key SOGoLoginDomains, which + is a list of domains that should be selectable from the Web login page. + (-visibleDomainsForDomain:): new method that returns a list of + domains visible from the specified domain and defined by the + defaults key SOGoDomainsVisibility, which is a list of lists of domains. - * v0.9.46 - - * iCalPerson+UIx.m: changed -cnForDisplay method, znek needs to check - it for correctness + * SoObjects/SOGo/SQLSource.m + (-_lookupContactEntry:considerEmail:): when an IMAP login field is + defined, only consider the value from the table if it's not null. - * UIxAppointmentEditor.m: rewrote not to work directly on the parsed - iCalendar appointment but rather track changes in the appointment - itself - - * UIxAppointmentEditor.m: removed now unused methods (due to attendee - selector) (v0.9.45) + * SoObjects/SOGo/SOGoSession.m + (+decodeValue:usingKey:login:domain:password:): now accepts the + form login@domain. The domain must be part of the SOGoLoginDomains. - * v0.9.44 + * SoObjects/SOGo/SOGoUserManager.m + (-getImapLoginForUID:inDomain:): the method now accepts the + user's domain. + (_sourceCheckLogin:andPassword:domain:perr:expire:grace:): idem. + (checkLogin:password:domain:perr:expire:grace:): idem. + (_fillContactInfosForUser:withUIDorEmail:inDomain:): idem. + (-contactInfosForUserWithUIDorEmail:inDomain:): idem. + (-contactInfosForUserWithUIDorEmail:): now accepts the form login@domain. - * UIxAppointmentEditor.m: use new AnaisAttendeeSelector + * SoObjects/SOGo/SOGoWebAuthenticator.m (-checkCredentials:): + perform the authentication in a domain when specified in the + web session. - * UIxAppointmentEditor.m: replaced formattedAptStartDate with a - titleDateFormatter (directly bound to the string element) + * SoObjects/Contacts/SOGoContactFolders.m (-appendSystemSources): + when using domains, append addressbooks from visible domains. -2004-08-15 Marcus Mueller + * SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): now + accepts the form login@domain. + (-loginInDomain): new method. When bound to a domain, it returns + the username part of the login. - * v0.9.43 - - * UIxTimeSelector.[wox,m]: new component for selecting the time part - of a given date. + * UI/MainUI/SOGoUserHomePage.m (-_usersForResults:inDomain:): was + _usersResponseForResults:. Now returns only an array + containing the matching users. + (-usersSearchAction): added the results from the visible domains, + if the defaults key SOGoDomainsVisibility is defined. - * UIxAppointmentEditor.[wox,m]: uses new UIxTimeSelector + * UI/MainUI/SOGoRootPage.m (-connectAction): a domain from the + defaults key SOGoLoginDomains can now be received. -2004-08-15 Helge Hess +2011-06-23 Wolfgang Sourdeau - * v0.9.42 + * OpenChange/MAPIStoreTypes.h: removed PRIx64 definitions, that + can be found in the libc inttypes.h. - * UIxAppointmentEditor.m: minor cleanups +2011-06-20 Francis Lachapelle - * UIxAppointmentProposal.wox: made mockup code dynamic + * UI/WebServerResources/UIxAppointmentEditor.js (_getDate): + retrieve the time using a regexp to insure a valid entry. -2004-08-15 Marcus Mueller + * UI/WebServerResources/MailerUI.js (onMenuEmptyTrashCallback): + when emptying the trash folder, reset the unseen count and reset + the reference to the last selected message. - * v0.9.41 +2011-06-17 Francis Lachapelle - * images/*: new images for UIxDatePicker and skycalendar.html. + * UI/WebServerResources/SOGoTimePicker.js (onChange): the + semi-colon is no longer necessary. Also fixed the update the + widget when manually entering a time. - * French.lproj/skycalendar.*, English.lproj/skycalendar.*: new js - based date picker taken from OGo. - NOTE: these files are currently NOT used/installed due to a bug - in SOPE. Instead, the non-localized versions are used. This will - go away as soon as the bug in SOPE is fixed. + * UI/WebServerResources/MailerUI.js (configureDraggables): added + delay of 100ms before dragging starts. - * skycalendar.js, skycalendar.html: the non-localized versions as a - workaround to the problem described above. +2011-06-17 Ludovic Marcotte - * product.plist: added new images and the non-localized js date picker - as public resources. + * SOPE/NGCards/iCalEvent.m (setAllDayWithStartDate:duration:): + We now correctly remove the duration value in case we're + "converting" the event to an all-day one. This fixes + bug #1312. - * UIxDatePicker.[m,wox], UIxDatePickerScript.[m,wox]: new reusable - component for picking a date fancy style. ;-) Use UIxDatePickerScript - to load the necessary js code once in your component. +2011-06-16 Ludovic Marcotte -2004-08-15 Helge Hess + * UI/Contacts/UIxContactFolderActions.m (importLdifData:): + Fixed folded lines import and base64 encoded values. Patch + from bug #1251 - * v0.9.40 +2011-06-16 Wolfgang Sourdeau - * UIxAppointmentProposal.wox: fixes in mockup code + * OpenChange/MAPIStoreSOGo.m (mapistore_init_backend): accept + double registration seamlessly. - * UIxAppointmentEditor.m: some cleanups + * SoObjects/Mailer/SOGoMailObject.m (-displayName): make use of + the decoded subject. - * v0.9.39 - - * UIxAppointmentProposal.wox: work on page layout + * Tools/SOGoToolRenameUser.m: new sogo-tool module that updates + the references after a change of user id for a specific user. - * UIxAppointmentView.wox, UIxCalWeekOverview.wox: minor cleanups + * SoObjects/SOGo/NSString+Utilities.m (-asSafeSQLString): new + method that properly escape strings passed as values in SQL + queries. -2004-08-15 Marcus Mueller +2011-06-15 Wolfgang Sourdeau - * v0.9.38 + * OpenChange/MAPIStoreSpoolerContext.[hm]: new backend context. - * UIxComponent+Agenor.[hm]: -cnForUser and -emailForUser require the - AgenorUserManager from Logic. +2011-06-14 Francis Lachapelle - * UIxAppointmentEditor.m: refactored -cnForUser and -emailForUser, - moved to extra category. + * UI/WebServerResources/UIxAttendeesEditor.js: adjustments for the + new SOGoTimePicker. - * UIxCalWeekView.wox: added custom style if apt belongs to user. +2011-06-13 Francis Lachapelle - * UIxCalView.m: added some extra logic in redirect, provided extra - style sheet selector for appointments. + * UI/WebServerResources/SOGoTimePicker.js: new interface to add a + time picker widget to an input field. - * GNUmakefile: added new files + * UI/Scheduler/UIxTimeDateControl.m: replaced hours and minutes + popup menu by one input field. -2004-08-14 Marcus Mueller + * UI/WebServerResources/UIxAppointmentEditor.js: idem. - * v0.9.37 + * UI/WebServerResources/UIxTaskEditor.js: idem. - * English.lproj/default.strings: new labels + * UI/Scheduler/UIxAppointmentEditor.m (-newStartDate): round + minutes to the nearest 15-minute. - * UIxAppointmentEditor.m: after save, return to ".." instead of "view" + * UI/Scheduler/UIxTaskEditor.m (-newStartDate): idem. - * UIxAppointmentEditor.wox: added "Cancel" button. +2011-06-08 Francis Lachapelle - * UIxCalView.m: refined behaviour of redirects according to Helge's - request. + * UI/WebServerResources/MailerUI.js (initMailer): added the Thread + column if missing from the columnsOrder user's defaults. -2004-08-14 Marcus Mueller +2011-06-06 Wolfgang Sourdeau - * UIxAppointmentEditor.m: Changed "X-OGo-RESOURCE" into - "NON-PARTICIPANT" (v0.9.36) + * OpenChange/*: + - (context) cached last requested folder and table + - (context) open folders are now cached in an nsdictionary + - getPrLastModificationTime and getPrCreationTime are now + centralized in MAPIStoreObject and rely on mandator lastModificationTime + and creationTime methods on individual subclasses. + - openMessage now takes a "struct mapistore_message **" argument. + - MAPIStoreFSFolder can now create subfolders + - converted MAPIStoreFolder to the new property API, by + implementing one method per property. -2004-08-14 Marcus Mueller + * OpenChange/MAPIStoreMailMessage.m: (-getPrExpiryTime:) removed + method as we don't want the message to appear as "expired". + (-getPrOriginalSensitivity:): uppercased the "o" in "getPrOriginal..." - * UIxAppointmentView.[h,m,wox], UIxAppointmentEditor.[h,m,wox]: - general enhancements, use new API. (v0.9.35) + * OpenChange/MAPIStoreSOGo.m + (sogo_pocop_get_available_table_properties): now takes a + SPropTagArray ** argument. + (sogo_pocop_get_available_properties): same as above. + (sogo_op_get_available_table_properties): new, non-poc operation, + to retrieve the list of available properties from a table. -2004-08-13 Marcus Mueller + * OpenChange/MAPIStoreTable.m (-notifyChangesForChild:): same as below. - * v0.9.34 + * OpenChange/MAPIStoreContext.m + (_saveOrSubmitChangesInMessageWithMID:andFlags:save:): + mapistore_push_notification now takes a struct mapistore_context * + as parameter. + (-deleteMessageWithMID:inFID:withFlags:): same as above. - * UIxCalView.[hm]: use new formatters. +2011-06-06 Francis Lachapelle - * UIxCalDayOverview.m: fixed build warnings. + * UI/WebServerResources/MailerUI.js (configureLinksInMessage): + when a link has the attribute moz-do-not-send set to true, remove + it and force a new mailto href. - * UIxAppointmentEditor.m: added warnings. +2011-06-03 Wolfgang Sourdeau -2004-08-13 Marcus Mueller + * OpenChange/SOGoMAPIFSFolder.m (-creationTime) + (-lastModificationTime): new self-explicit accessors. + (-initWithURL:andTableType:): accept the "MAPISTORE_FOLDER_TABLE", + for storing folder properties. - * v0.9.33 + * OpenChange/SOGoMAPIFSMessage.m (-completeFilename): new method + that returns the full filename for the property list file. + (-appendProperties:) simplified method. + (-save) removed obsolete hack. + (-creationTime, -lastModificationTime): new self-explicit + accessors. - * UIxCalView.m: adjusted shortTextForApt to meet the requirements - specifictions. + * OpenChange/MAPIStoreSOGo.m (sogo_op_opendir): op_opendir no + longer takes the parent fid as parameter. - * UIxCalDayView.m: removed shortTextForApt (moved to superclass). + * OpenChange/MAPIStoreCalendarMessageTable.m + (-sortIdentifierForProperty:): c_isallday and c_creationdate as + mappings for PidLidAppointmentSubType and PR_CREATION_TIME. - * UIxCal*view.wox: escapeHTML="NO" for shortTextForApt. + * OpenChange/MAPIStoreContext.m: MAPIStoreMapping instances are + now per-user instances rather than class singletons. -2004-08-13 Marcus Mueller + * OpenChange/MAPIStoreMapping.m: now makes use of the records + already present in indexing.tdb for building the initial mapping + dictionary. - * v0.9.32 + * OpenChange/MAPIStoreSpoolerContext.[hm]: new context module, + which subclasses MAPIStoreSpoolerContext from + MAPIStoreFSBaseContext rather than MAPIStoreOutboxContext. - * UIxCalView.m: shouldHideWeekend according to new default, - SOGoShouldDisplayWeekend. +2011-06-03 Francis Lachapelle - * UIxCalWeekOverview.wox, UIxCalWeekColumnsview.wox: use new dynamic - value for "hideWeekend" association. + * UI/WebServerResources/generic.js (initMenu): the wrong callbacks + were associated to menu entries when the menu was splitted in + multiple ULs. + (popupSubmenu): fixed the position so it stays beside the menu + entry when the main menu is splitted in multiple ULs. The submenu + will no longer be displayed outside the window viewport. - * NOTES: new "Defaults" section. +2011-06-02 Francis Lachapelle -2004-08-13 Helge Hess + * UI/WebServerResources/generic.js (hideMenu): now fires a custom + event (contextmenu:hide) to properly define a callback function + when a contextual menu is hidden. - * UIxCalWeekColumnsview.wox: hide weekend (requires libWEExtensions - v4.2.52) (v0.9.31) + * UI/WebServerResources/MailerUI.js (onFolderMenuClick): + registered the function onFolderMenuHide on the new event + "contextmenu:hide". This function was never called since it was + relying on an event never triggered ("hideMenu"). -2004-08-13 Marcus Mueller + * UI/WebServerResources/ContactsUI.js (onContactContextMenu): idem. - * UIxAppointmentEditor.[wox|m]: important fix for testing (v0.9.30) + * UI/WebServerResources/UIxPreferences.js (_setupEvents): reload + main page when enabling or disabling mail threads. -2004-08-13 Helge Hess +2011-06-01 Francis Lachapelle - * UIxCalWeekColumnsview.wox: hide weekend (requires libWEExtensions - v4.2.52) (v0.9.30) + * SoObjects/SOGo/SOGoUserDefaults.m (-setMailSortByThreads) + (-mailSortByThreads): new accessors for the "SOGoMailSortByThreads" + user defaults. - * UIxCalWeekOverview.wox: hide weekend (requires libWEExtensions - v4.2.51) (v0.9.29) + * UI/PreferencesUI/UIxPreferences.m (-setSortByThreads) + (sortByThreads): idem. -2004-08-13 Marcus Mueller + * SoObjects/Mailer/SOGoMailFolder.m + (-fetchUIDsMatchingQualifier:sortOrdering:threaded:): new method + to fetch a threaded-view of the folder. - * v0.9.28 + * SoObjects/SOGo/NSArray+Utilities.m (-flattenedArray): added + recurrence to flatten interleaved arrays. - * iCalPerson+UIx.[hm]: more convenience + * SoObjects/Mailer/SOGoMailAccount.m (-updateFilters): write + multiple 'redirect' directives when forwarding to multiple email + addresses. - * UIxAppointmentView.[hm]: display CN's as Names + * UI/MailerUI/UIxMailListActions.m (-threadedUIDs): new method + that returns a flatten representation of messages threads. - * UIxAppointmentEditor.[wox|m]: more functionality, but still - unfinished. You can use it to test appointments, though. + * UI/MailerUI/UIxMailMainFrame.m (-columnsMetaData): added CSS + classnames for the thread column. + (-columnsDisplayOrder): add or remove the thread column depending + on the user's defaults. -2004-08-13 Helge Hess + * UI/MailerUI/UIxMailListActions.m (-getUIDsAndHeadersInFolder) + (-getSortedUIDsAction): added support for threads. - * UIxAppointmentEditor.wox: fixed base URL of form not to include - "save" (v0.9.27) + * UI/WebServerResources/ContactsUI.js (onContactContextMenu): + select row at pointer position when not already selected. - * UIxAppointmentEditor.m: catch a common programming mistake (invoking - a method on a method) (v0.9.26) + * UI/WebServerResources/MailerUI.js: added support for the + threaded view. + (onMessageContextMenu): select row at pointer position when not + already selected. -2004-08-12 Marcus Mueller + * UI/WebServerResources/SOGoMailDataSource.js: added support for + the threaded view. - * UIxAppointmentEditor.[m|wox]: participants are added correctly - now, resources are still lacking from save. (v0.9.25) +2011-05-31 Francis Lachapelle -2004-08-12 Marcus Mueller + * UI/WebServerResources/SchedulerUI.js (initCalendarSelector): use + events delegation in the calendars list. - * v0.9.24 + * UI/WebServerResources/HTMLElement.js (selectElement): if element + has no ID, keep track of it anyway. This fixes an issue when + deleting attachments in the mail composition window. - * Added AnaisUidSelector to all views. Removed worse named -owner - method from all affected views and instead added - -formattedCalendarUIDs to UIxCalView. This is now used by all - print views in their header. + * UI/WebServerResources/UIxMailEditor.js (initMailEditor): use + events delegation in the attachments list. - * UIxCalWeekOverview.m: adjusted endDate properly, if -displayWeekends - returns NO (the default). + * UI/Scheduler/NSArray+Scheduler.m (-compareTasksAscending): sort + the tasks by their name if they are from the same calendar. -2004-08-12 Marcus Mueller +2011-05-31 Wolfgang Sourdeau - * UIxCalView.m: fixed problems with redirect (v0.9.23) + * OpenChange/MAPIStoreTypes.m (NSObjectFromMAPISPropValue) + (NSObjectFromSPropValue): handle PT_I8 properties. -2004-08-12 Helge Hess + * OpenChange/NSObject+MAPIStore.m + (-getMAPIValue:forTag:inMemCtx:): added case to handle PT_I8 + properties via the new method below. - * v0.9.22 + * OpenChange/NSValue+MAPIStore.m (-asI8InMemCtx:): new method that + extracts an uint64_t from an NSNumber. - * UIxAppointmentView.m: properly catch invalid appointment references - and return a 404 (because SOGoAppointmentObject's are created even - for invalid IDs for performance reasons) + * OpenChange/MAPIStoreFallbackContext.[hm]: new class module for + the "fallback" context, used by the OpenChange core to create + contexts that are not specifically handled. - * UIxCalView.m: generate appointment URLs using clientObject (the - appointment folder) + * OpenChange/MAPIStoreSOGo.m (sogo_create_context): a new struct + mapistore_connection_info * is now passed as parameter, which + contains useful data about the current connection. - * more cleanups + * OpenChange/MAPIStoreTable.m: (-deactivate): removed obsolete + method, which was part of a hack anyway. - * added (still empty) proposal component (v0.9.21) + * OpenChange/MAPIStoreObject.m: (-addActiveTable:) + (-removeActiveTable:) removed obsolete methods. - * some code reorganizations, fixed some compile warnings (v0.9.20) + * OpenChange/MAPIStoreFolder.m: (-init) removed obsolete ivars + "activeMessageTables", "activeFAIMessageTables" and "activeFolderTables". + (-activeMessageTables, -activeFAIMessageTables) + (-activeFolderTables, _cleanupTableCaches): make use of the new + MAPIStoreActiveTables class. -2004-08-11 Marcus Mueller + * OpenChange/MAPIStoreActiveTables.[hm]: new class module that + provides a facility for keeping track of all the instantiated + tables. - * v0.9.19 +2011-05-30 Wolfgang Sourdeau - * UIxCalView.m: implements -redirectForUIDsAction to construct a - redirect to a special appointment folder. + * OpenChange/code-MAPIStorePropertySelectors.m + (MAPIStorePropertyGettersForClass): insert the newly created table + in the hash in order to avoid a leak... and to enable it to be + found during the next search. - * product.plist: "show" method is mapped to UIxCalView's - -redirectForUIDsAction. + * SoObjects/SOGo/SOGoContentObject.m (-version, -createDate) + (-lastModified): new accessors that return the value of the + corresponding ivar. -2004-08-11 Marcus Mueller + * SoObjects/SOGo/SOGoGCSFolder.m (-davCollectionTag): base the + return value on the new -[GCSFolder lastModificationDate] method. + (_isValidSyncToken): same as above. - * v0.9.18 + * OpenChange/NSDate+MAPIStore.[hm]: renamed from + NSCalendarDate+MAPIStore.[hm]. Provides the same methods as + before but on NSDate rather than NSCalendarDate. - * UIxCalWeekOverview.wox: added AnaisUidSelector + * OpenChange/gen-property-selectors.py (ParseExchangeHDefinition): + Fixed exclusion of records ending with "Error" and "Unicode". + Also, we now exclude PidTag properties with a value > 0x80000000 + since they may overlap with named properties. + (__main__): replace multi-string with multi-unicode identifiers + too. + (__main__): we output getter indexes as 16 bit hex values, for + consistency. - * English.lproj/default.strings: more labels +2011-05-30 Francis Lachapelle -2004-08-11 Marcus Mueller + * UI/WebServerResources/ContactsUI.js (contactsListCallback): + restored activation of drag'n'drop. + (configureAddressBooks, onFolderSelectionChange) + (appendAddressBook): delegated rows events to the table. + (setEventsOnAddressBook): this function removed following the new event + delegation model. - * v0.9.17 +2011-05-27 Francis Lachapelle - * product.plist: removed "yearprintview" method - this doesn't exist. + * UI/PreferencesUI/UIxPreferences.m (-forwardAddress) + (-setForwardAddress): allow to define multiple forwarding addresses. - * English.lproj/default.strings: more labels (these need to be added - to the French version!) + * UI/WebServerResources/UIxPreferences.js (savePreferences): test + each specified forwarding address. - * UIxAppointmentEditor.[m|wox]: nice Anais integration showing up. ;-) +2011-05-17 Ludovic Marcotte -2004-08-10 Marcus Mueller + * We now remove the /inverse.ca/20101018_1/ identifier + from all NGCards' timezone files. - * v0.9.16 +2011-05-16 Ludovic Marcotte - * UIxAppointmentEditor.wox: pretty printing, use labels where appropriate. + * UI/MailPartViewers/UIxMailPartHTMLViewer.m: Added a + workaround for a libxml's issue where the charset + specified in meta tags have precedence over the one + we "force" when creating the parser. This "bug" has + just been fixed in libxml but it'll take years before + all distributions get that fix. For now, we strip + that tag, unconditionnaly. - * UIxAppointmentEditor.m: uses SOGoDateFormatter now. +2011-05-10 Ludovic Marcotte - * English.lproj/default.strings: added new labels. + * NSDictionary+Utilities.m (userRecordAsLDIFEntry): + Fix to avoid a crash when backing up resources' LDIF entries -2004-08-09 Marcus Mueller +2011-05-06 Francis Lachapelle - * v0.9.15 + * UI/WebServerResources/UIxPreferences.js + (displayAccountSignature): fixed an issue with an HTML signature + that start with a paragraph tag. - * UIxCalWeek*view.wox: added missing queryParameters to mode hrefs. +2011-05-05 Ludovic Marcotte -2004-08-05 Marcus Mueller + * UI/MailerUI/UIxMailAccountActions.m - fixed an issue + with namespace handling in Dovecot. We do not try + to swap the mailbox name, which can correspond to an + username if we are dealing with the top-level mailbox. - * v0.9.14 +2011-05-03 Francis Lachapelle - * UIxCalDayOverview.[hm]: refactored currentDate -> moved to - UIxCalDayView.[hm]. + * UI/WebServerResources/UIxMailEditor.js (createAttachment): show + the attachment name as the list entry's title. - * UIxCalDayView.[hm]: added currentDate and accompanied functionality. + * UI/WebServerResources/generic.js (onRowClick): in some cases + under ID, the event is trigger on the dragging identifier + and must be ignored. - * UIxCalView.[hm]: added -tooltipForApt. + * UI/WebServerResources/MailerUI.js (deleteSelectedMessages): we no + longer wait for the callback before invalidating the caches. + (mailListToggleMessagesRead): idem. - * UIxCalDayChartview.[wox|m]: implemented. +2011-04-28 Ludovic Marcotte - * UIxCalInlineMonthOverview.wox: cosmetic changes. + * SoObjects/SOGo/SQLSource.{h,m}: Added resources support, + just like for LDAP-based sources. + * SoObjects/SOGo/SOGoParentFolder.m (_createPersonalFolder): + We now also autocreate database tables if the "user" + is a resource. - * UIxCalDayOverview.wox, UIxCalWeekOverview.wox, UIxCalMonthOverview.wox: - uses "tooltipForApt" for view hyperlinks. +2011-04-25 Francis Lachapelle -2004-08-02 Marcus Mueller + * UI/WebServerResources/SchedulerUI.js (onFolderUnsubscribeCB): + select the personal calendar to avoid trying creating an event or + a task in the calendar to which the user has just unsubscribed. - * v0.9.13 - - * UIxCalDayPrintview.[m|wox], UIxCalWeekPrintview.[m|wox], - UIxCalMonthPrintview.[m|wox]: finished print views. - - * UIxCalWeekOverview.wox: added numberformat for days. +2011-04-25 Ludovic Marcotte -2004-08-02 Marcus Mueller + * Added the concept of "resources" in SOGo in order + to avoid double-bookings (if not more) and also, handle + auto-accepts. This works for the web interface and + over DAV - generating 403 errors in case of a conflict. - * v0.9.12 - - * UIxCalMonthView.[hm]: fixed a nasty bug. Needed to add -startOfMonth to - overcome the problem associated with -startDate in the context of - month overview. -startDate is necessary for fetching the core infos and - almost always is member of the previous month. Also, -endDate isn't - necessarily in the same month we're talking about. I reworked this and - added some private category to NSCalendarDate which should be moved into - SxCore later on. - - * UIxCalMonthOverview.m: Use -startOfMonth instead of -startDate for all - calculations. +2011-04-21 Ludovic Marcotte - * UIxCalMonthOverview.wox: applied some pretty printing and added some - debugging info (commented out). + * Added the possibility of translating IMAP namespaces + and we now extract the full name the mailbox owner under + the "Other Users" namespace. -2004-07-30 Marcus Mueller +2011-04-21 Francis Lachapelle - * v0.9.11 + * UI/WebServerResources/SchedulerUI.js (deleteEvent): we now show + in the confirmation dialog box which events will be deleted. - * UIxCalDayOverview.h, UIxCalWeekOverview.h: new headers for subclassers. + * UI/WebServerResources/generic.js (createDialog): the legend + argument can now be a string or an element. + (isWebKit): was isSafari; now consider all WebKit-based browsers together. - * UIxCalDayPrintview.[wox|m], UIxCalWeekPrintview.[wox|m], - UIxCalMonthPrintview.[wox|m]: new views for printing. + * UI/WebServerResources/UIxMailToSelection.js: various + improvements to behave like in Thunderbird. - * product.plist: mapped "*printview"'s to appropriate new classes + * UI/WebServerResources/SOGoAutoCompletion.js: idem. -2004-07-29 Marcus Mueller + * UI/WebServerResources/UIxMailEditor.js (initAddresses): was + initTabIndex. We were not handling the tab indexes properly which + was causing incorrect behavior in IE. - * v0.9.10 +2011-04-19 Wolfgang Sourdeau - * UIxCalDayView.m, UIxCalWeekView.m, UIxCalMonthView.m: reversed - previous changes to -startDate/-endDate as these were wrong. - Views have to deal on their own if appointments break the - "usual" time range. Nevertheless we should never drop any - appointments! + * OpenChange/MAPIStoreMailAttachment.m (-): binary properties are + represented by a struct Binary_r. - * UIxCalDayOverview.[wox|m]: refactored dateRanges (moved to - UIxCalDayView) and completed display of all appropriate attributes - (all day appointments, holiday info). + * OpenChange/NSObject+MAPIStore.m + (-getMAPIValue:forTag:inMemCtx:): binary properties are + represented by a struct Binary_r. - * UIxCalDayView.[hm]: fixed dateRanges. + * OpenChange/MAPIStoreTypes.m (NSObjectFromMAPISPropValue) + (NSObjectFromSPropValue): we now support PT_SVREID and handle it + exactly as PT_BINARY. - * UIxCalView.[hm]: implemented -allDayApts and refactored some code. + * OpenChange/MAPIStoreMessage.m (-attachmentTable): as all the + subclasses were using the same MAPIStoreAttachmentTable + implementation, this method now performs the same operation and + thereby no longer requires subclasssing. -2004-07-28 Marcus Mueller + * OpenChange/MAPIStoreObject.m (-getProperty:withTag:): compute + the method selector and pass it as argument to the IMP of the + property getter, as would be with any regular method invocation. - * v0.9.9 + * OpenChange/MAPIStoreMailMessage.m (-getPrBody:): no longer check + the size of the returned content, as streams are now handled + internally by OpenChange. + (-getPrHtml): same as above. - * UIxCalWeekColumnsview.[m|wox]: implemented. + * OpenChange/MAPIStoreTypes.m (NSObjectFromStreamData): removed + helper function as it's no longer used. - * UIxCalWeekCharview.*, UIxCalWeekListview.*, UIxCalDayChartView.*, - UIxCalDayListview.*: enhanced templates. + * OpenChange/MAPIStoreSOGo.m (sogo_op_set_property_from_fd) + (sogo_op_get_property_into_fd): those backend methods are no + longer used, as OpenChange handles the property streams internally + now. - * UIxCalDayView.[hm]: removed -thisMonth and -nextMonth. + * OpenChange/gen-property-selectors.py: added code to generate + MAPIStoreSupportedProperties as the array of properties that are + handled by OpenChange and MAPIStoreSupportedPropertiesCount as the + count of those properties. - * UIxCalView.[hm]: added -thisMonth and -nextMonth + * OpenChange/MAPIStoreObject.m (+getAvailableProperties): ObjC + corollary of the "sogo_pocop_get_available_properties" backend + method. + (-getAvailableProperties): proxy to the class method of the same + name. -2004-07-28 Marcus Mueller + * OpenChange/MAPIStoreTable.m (+childObjectClass): new mandatory + method that returns the Class of the objects represented in the + rows of the table. + (-getAvailableProperties:): ObjC corollary of the + "sogo_pocop_get_available_table_properties" backend method. - * v0.9.8 - - * Renamed all images/icon_apt_* images into images/icon_view_*. for the - sake of simplicity and consistency. + * OpenChange/MAPIStoreSOGo.m + (sogo_pocop_get_available_table_properties): new backend getter + that returns the list of properties that can be queried on the + table rows. + (sogo_pocop_get_available_properties): new backend getter + that returns the list of properties that can be queried on the + discrete object passed as parameter. - * UIxCalInlineMonthOverview.m: fixed problems with a special set of edge - cases where inappropriate style sheets would have been selected. + * OpenChange/code-MAPIStorePropertySelectors.m + (MAPIStorePropertyGettersForClass): use the + "MAPIStoreProeprtyGetter" type rather than IMP as result type. - * UIxCalDayChartview.*, UIxCalDayListview.*: new templates for respective - view modes. Used UIxCalDayOverview as the template for these. - - * UIxCalWeekChartview.*, UIxCalWeekListview.*, UIxCalWeekColumnsview.*: - new templates for respective view modes. Used UIxCalWeekOverview as - the template for these. + * OpenChange/MAPIStoreFolderTable.m (-restrictedChildKeys): no + longer a mandatory method, returns [self childKeys] when not + overriden and issue an error message. - * GNUmakefile: added new templates and classes, changed image names. + * OpenChange/MAPIStoreFolder.m (-createMessage): no longer a + mandatory method. Returns nil when not overriden. - * product.plist: mapped methods to the correct classes. +2011-04-19 Francis Lachapelle -2004-07-26 Marcus Mueller + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-_flattenCycleRecord:forRange:intoArray:): fixed the + verification of the event's timezone. - * v0.9.7 +2011-04-15 Francis Lachapelle - * UIxCalView.[hm]: new methods for defaults access, -dayStartHour, - -dayEndHour and -shouldDisplayWeekend. + * SoObjects/Appointments/iCalEvent+SOGo.m (-firstOccurenceRange): + we now compute the end date by looking at the occurrence + interval. This way, we support events with an end date or a duration. - * UIxCalDayOverview.[m|wox]: added content. CSS isn't 100% proper, yet. + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-_flattenCycleRecord:forRange:intoArray:): also compute the end + date by looking at the occurrence interval. + (-importCalendar:): added a duration to events with no end date nor duration. - * UIxCalWeekView.m, UIxCalMonthView.m: set startDate/endDate properly. + * SoObjects/Appointments/SOGoAppointmentObject.m + (-_adjustEventsInRequest:): new method to verify the vCalendar for + any inconsistency or missing attributes. Currently, it only adds a + duration if no end date nor duration is found. - * UIxAppointmentEditor.m: fixed a subtle bug in -uriAsFormat that - prevented date information from being set properly in newAction:. + * UI/WebServerResources/ckeditor/config.js: Changed the default + enter mode to use BR instead of P. This matches the behavior of Thunderbird. -2004-07-23 Marcus Mueller +2011-04-14 Francis Lachapelle - * v0.9.6 + * UI/WebServerResources/UIxContactEditor.js + (validateContactEditor): now uses the regexp defined in generic.js + (emailRE) to validate the email addresses. This fixes an issue + with valid addresses starting with an underscore (bug #1246). - * GNUmakefile: added UIxCalDayView.[hm] and UIxCalDayOverview.[m|wox] + * UI/MailerUI/UIxMailAccountActions.m (-composeAction): properly decode + submitted recipients and subjects (URL-encoded). - * UIxCalDayView.[hm]: abstract superclass for all day related views. + * SoObjects/SOGo/SOGoUserManager.m (-getImapLoginForUID:): we now + consider the source parameter IMAPLoginFieldName. We continue to support + SOGoForceIMAPLoginWithEmail at the domain/system level. - * UIxCalDayOverview.[m|wox]: new component rendering the day overview. + * SoObjects/SOGo/LDAPSource.m: we can now define a new parameter + named IMAPLoginFieldName to specify which field to use for IMAP + authentication. By default, we use the value of the UIDFieldName. - * UIxCalInlineMonthOverview.[m|wox]: uses new "selectedDayExtraStyle" - binding and implements accompanied logic for its usage. + * SoObjects/SOGo/SQLSource.m + (-checkLogin:password:perr:expire:grace:): if the defaults parameter + authenticationFilter is defined, we add it to the SQL where clause. + (_lookupContactEntry:considerEmail:): we add a new key + (canAuthenticate) to the returned dictionary that specifies if the + user can authenticate or not. We also add c_imaplogin when the + user must authenticate with a different username to the IMAP server. - * product.plist: added 3 dayview methods, all currently pointing to - UIxCalDayOverview. + * SoObjects/SOGo/SOGoUser.m (-canAuthenticate): new method that + returns true if the user can authenticate, based on the + authentication filter associated to the source. -2004-07-22 Marcus Mueller + * SoObjects/SOGo/SOGoGCSFolder.m (-ocsFolder): don't automatically + create the folder if the user can't authenticate. - * v0.9.5 + * UI/Contacts/UIxContactsListActions.m: was + UIxContactsListView.m. The new method contactsListAction now + returns a JSON representation of the addressbook. - * UIxCalInlineMonthOverview.m: new "style" binding for setting the global - style all elements will inherit from. Makes styling much easier. + * UI/Contacts/UIxContactFoldersView.m (-personalContactInfos): new + method used to populate the wox template with the personal + addressbook. The addressbook module is now pre-loaded with it, + eliminating an Ajax query. - * UIxCalYearOverview.wox: uses all appropriate styles now. Slight fixes - to alignment. + * UI/WebServerResources/ContactsUI.js (initContacts): delegate + all events to the table instead of each row. + (contactsListCallback): we now receive a JSON representation of + the contacts and reuse the existing table rows instead of + overwriting the table. - * UIxCalInlineMonthOverview.wox: uses new "style" binding and fixes a bug +2011-04-13 Wolfgang Sourdeau - * UIxCalYearOverview.m: fixed warnings. + * OpenChange/MAPIStoreObject.m: make use of the IMP cache methods + available in MAPIStorePropertySelectors to query object + properties. + * OpenChange/*{Message,Folder}.m: replaced the implementations of + -getProperty:withTag: with equivalent property getter methods. -2004-07-21 Marcus Mueller + * OpenChange/MAPIStoreContext.m (-url): new method that returns + the context url. - * v0.9.4 + * OpenChange/gen-property-selectors.py: new generator script that + outputs MAPIStorePropertySelectors.[hm], which is a helper + module that provides methods for handling of cached + property method IMPs. - * UIxCalMonthOverview.h: new header, required by new - UIxCalInlineMonthOverview component. +2011-04-12 Wolfgang Sourdeau - * UIxCalInlineMonthOverview.[m|wox]: new component rendering a month - overview suitable for inlining in other views. Several calendar - "modes" require this. + * SoObjects/Mailer/SOGoDraftObject.m + (-bodyPartForAttachmentWithName:): don't choose "quoted-printable" + if the mimetype is anything else than "text/plain" or "text/html", + to avoid issues with filenames attached with a wrong mime type. - * UIxCalYearOverview.[m|wox]: new component rendering the year - overview. +2011-04-12 Francis Lachapelle - * product.plist: yearoverview -> new method + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-importCalendar:): we now associate the proper vtimezone to each + event found in the calendar. - * GNUmakefile: added UIxCalInlineMonthOverview.[m|wox] and - UIxCalYearOverview.[m|wox]. +2011-04-11 Francis Lachapelle -2004-07-21 Marcus Mueller + * UI/WebServerResources/UIxMailToSelection.js + (addressFieldLostFocus): split content separated by commas + or semi-colons. - * v0.9.3 +2011-04-08 Wolfgang Sourdeau - * *.wox: Use label associations where appropriate + * Tests/Unit/TestNSString+URLEscaping.m: new test module. + (-test_stringByEscapingURL): new test method for -[NSString + stringByEscapingURL]. - * UIxCalView.m: Use labels for localization + * Tests/Unit/sogo-tests.m (main): added volatile user defaults for + utf8 url encoding. - * UIxCalMonthOverview.m: removed date specific labels, moved - to SOGoUI/UIxComponent.m. +2011-04-07 Francis Lachapelle - * UIxCalDateLabel.m: subclasses from UIxComponent now. Corrected - localization using labels now. + * UI/WebServerResources/MailerUI.js (onMenuRenameFolderConfirm): + encode the folder name in the URL. - * *.lproj/default.strings: new entries +2011-04-06 Wolfgang Sourdeau -2004-07-20 Marcus Mueller + * OpenChange/MAPIStoreMailMessageTable.m + (-evaluateExistRestriction:intoQualifier:): declare that + PR_CLIENT_SUBMIT_TIME always exists on messages, which prevents + Outlook from looping on a search request that always returns the + same unexpected result... - * v0.9.2 +2011-04-05 Wolfgang Sourdeau - * GNUmakefile: added new .lproj resources. + * OpenChange/MAPIStoreCalendarMessage.m (-getProperty:withTag): + restored/implemented PR_START_DATE, PidLidAppointmentStartWhole, + PidLidCommonStart and their "end" equivalent. - * {English,French}.lproj/default.plist: localizable strings for the - Scheduler bundle. + * OpenChange/MAPIStoreMailFolder.m (-createFolder:): implemented + method by adapting old code that was still commented out. + (-folderKeys): implemented method. + (-lookupChild:): overriden method to return a folder object when + the child key is contained in the folder keys. - * UIxCalSelectTab.m, UIxCalWeekOverview.wox, - UIxCalMonthOverview.[m|wox]: changes for using new localization - features. + * OpenChange/MAPIStoreContext.m (_tableForFID:andTableType:): make + use of lookupFolder: to retrieve the right folder based on the FID. + (-setPropertiesWithFMID:ofTableType:inRow:): silently discard by + log the settings of properties on folders. -2004-07-19 Marcus Mueller +2011-04-04 Wolfgang Sourdeau - * UIxAppointmentEditor.m: Use -backendTimeZone from UIxComponent. + * UI/Scheduler/UIxCalListingActions.m + (-_fillBlocks:withEvent:withNumber:): fixed type confusion between + char * and NSString * that could cause a crash under certain + circumstances. -2004-07-07 Marcus Mueller +2011-04-01 Francis Lachapelle - * UIxCalWeekOverview.wox: minor correction + * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:): + when adding a new occurrence, instantiate an occurrence from the + previous calendar in order to perform a proper changes comparison. - * UIxAppointmentEditor.m: fixed handling in -saveAction:. Also, - added code to correctly convert dates into GMT upon storing. +2011-04-01 Wolfgang Sourdeau -2004-07-15 Helge Hess + * Tests/Unit/TestSBJsonParser.m (-test_parseJSONString): input and + expected result are embedded in an array since SBJsonParser needs + a "container" class. + (-test_parseJSONNumber): same as above. - * GNUmakefile.preamble: added proper include pathes to allow "inline" - compilation + * Tests/Integration/all.py: (from Jean Raby) make use of the + "SOGoLanguage" defaults key rather than the old "Language" one. -2004-07-02 Helge Hess + * Tests/Integration/sogoLogin.py: (from Jean Raby) new + authentication module, required by the new session-based code. - * UIxAppointmentView.m: fixup timezone of start/enddate + * Tests/Integration/preferences.py: (from Jean Raby) derive + authentication cookie from the new sogoLogin module. -2004-06-30 Helge Hess + * UI/WebServerResources/SchedulerUI.js (initCalendars): initialize + "showCompletedTaskls" to 0 when the ShowCompletedTasks settings + variable is not available. - * UIxCalWeekOverview.wox, UIxCalMonthOverview.wox: some minor tweaks + * SoObjects/Appointments/SOGoCalendarComponent.m + (-contentAsString): strip alarms from component if the alarms are + disabled on the containing calendar. - * UIxAppointmentView.wox: made the attendee emails clickable + * SoObjects/SOGo/SOGoObject.m (-davComplianceClassesInContext:): + added "calendar-auto-schedule", "calendar-proxy" and "calenderserver-principal-property - * UIxCalView.m: removed -fetchGIDs, moved -fetchCoreInfos to client - object + * Main/SOGo+DAV.m (-davComplianceClassesInContext:): overwritten + with same code as in SOGoObject. + (-davPrincipalCollectionSet): added dav property. - * all files: removed ZideStore references +2011-03-31 Wolfgang Sourdeau - * UIxCalView.h, UIxAppointmentView.h, UIxAppointmentEditor.m, - UIxCalSelectTab.m: include UIxComponent from SOGoUI + * OpenChange/MAPIStoreCalendarMessage.m + (_setupRecurrenceInCalendar:withMasterEvent:fromData:): moved the + code pertaining to the handling of struct RecurrencePattern into + the new module below, in the -[iCalCalendar setupRecurrenceWithMasterEntity: + fromRecurrencePattern:) category method. + (_fillAppointmentRecurrencePattern): moved the + code pertaining to the handling of struct RecurrencePattern into + the new module below, in the -[iCalRecurrenceRule + fillRecurrencePattern:withStartDate:andEndDate:] category method. + (-createAttachment): instantiate a MAPIStoreCalendarAttachment + object. - * removed backend stuff from some sources + * OpenChange/MAPIStoreSOGo.m: added new + "sogo_pocop_open_embedded_message" backend method. - * product.plist: bind things on SOGoAppointmentXXX instead of SX... + * OpenChange/MAPIStoreCalendarAttachment.[hm]: new class module + for handling event attachments or "exceptions". - * GNUmakefile: changed from ZideStore to SOGo + * OpenChange/MAPIStoreMessage.m (-getProperty:withTag:): + handles PR_HASATTACH, previously found in MAPIStoreMailMessage. - * created ChangeLog -2005-07-30 Helge Hess - - * MailerUI/UIxMailView.wox: do not show mail header when accessing a - Kolab mail object - - * MailPartViewers/UIxMailPartImageViewer.wox: fixed 'title' attribute - of image tag (now displays filename) - - * MailerUI/UIxMailMainFrame.wox: use 'view' instead of 'tb.view' to - activate links - -2005-07-26 Helge Hess - - * ContactsUI/UIxContactEditor.wox: removed copy-from-anais button - - * UIxAppointmentProposal.wox, UIxAppointmentEditor.wox: do not try to - use Anais attendee selector (must be replaced) - - * MailerUI: use proper _wosid instead of 'sidinurl' in
tags - -2005-07-22 Marcus Mueller - - * UIxMailPanelFrame.wox: added MailerUI.SOGo strings table for error - messages - - * UIxMailEditor.wox: added inclusion of layout2or3_xlib.js and added - a new id to compose_table - -2005-07-21 Marcus Mueller - - * UIxCalDayOverview.wox, UIxCalDayChartview.wox, UIxCalDayListview.wox, - UIxCalMonthOverview.wox: reworked the style bindings + * OpenChange/MAPIStoreAttachment.m (-nameInContainer): overriden + method to return "aid" in the form of a NSString. + (-mimeAttachTag): new helper method derived from old code in + getProperty:withTag: for subclasses. + (-getProperty:withTag:): handles PR_MID, PR_ATTACH_NUM and + PR_RENDERING_POSITION, previously found in + MAPIStoreMailAttachment. + (-openEmbeddedMessage:withMID:withMAPIStoreMsg:andFlags:): new + backend method. + (-openEmbeddedMessage, -createEmbeddedMessage): new overridable + methods. - * UIxMailToSelection.wox: commented debug output + * OpenChange/MAPIStoreEmbeddedMessage.[hm]: new class module for + attachment embedded messages. - * UIxMailEditor.wox: added inline attachment view which is only - visible if attachments have been added (similar to what is done - in Thunderbird) + * OpenChange/MAPIStoreObject.m (-url): make use of + -[MAPIStoreObject nameInContainer] rather than the equivalent on + SOGoObject to make that code reusable for objects that are not + based on SOGoObject instances. - * UIxMailEditorAttach.wox: added JavaScript reference for dynamically - updating UIxMailEditor + * OpenChange/MAPIStoreRecurrenceUtils.m: new module implementing + methods useful for handling recurrences in events and tasks. - * UIxCalInlineAptView.wox: added indicator to flag recurrent events +2011-03-31 Francis Lachapelle -2005-07-20 Helge Hess + * UI/WebServerResources/MailerUI.js (messageListCallback): put an + non-breaking space in empty cells, not only for IE. - * MailerUI/UIxMailToolbar.wox: properly localize button label + * UI/Contacts/UIxContactView.m (_cardStringWithLabel:value:): + remove useless carriage returns to avoid JavaScript errors in IE7. - * MailerUI: use new UIxMailPanelFrame for panel templates (those which - do not show the folder tree) +2011-03-30 Wolfgang Sourdeau - * MailerUI/UIxMailView.wox: added support for list headers, for the - organization header, for some spam-assassin and virus scanning fields + * UI/MailerUI/UIxMailFolderActions.m (-copyMessagesAction) + (-expungeAction, -emptyTrashAction): use "-mailAccountFolder" in + order to retrieve the account folder as the clientObject may + actually be a nested folder... - * moved remaining mail templates to Templates/MailerUI/ + * UI/WebServerResources/UIxTaskEditor.js (initializeStatusLine): + bind onStatusListChange as callback to "change" rather than + "mouseup" as it otherwise fails to be invoked on Chrome. -2005-07-19 Marcus Mueller + * SoObjects/SOGo/SOGoBuild.m: export new SOGoVersion NSString. - * UIxMailToSelection.wox: changed inclusion of JavaScript to resource - lookup (with a little global stub being the exception) + * Main/SOGo.m (+initialize): moved most initialization code from + -init and -run here since this method is invoked before forking + and data memory is in "copy-on-write" mode, slightly reducing + memory usage of combined SOGo processes. + (+applicationWillStart): new method replacing +initialize. -2005-07-19 Helge Hess +2011-03-30 Francis Lachapelle - * UIxAppointmentEditor.wox: import scheduler labels to the client, - moved validation function to UIxAppointmentEditor.js + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-fetchFreeBusyInfosFrom:to:): we must fetch the c_content in + order to flatten cyclic events. - * UIxAppointmentEditor.wox: use dateformat specific parsing methods - during validation (#1490) + * SoObjects/SOGo/SOGoSystemDefaults.m (-pageTitle): new method to + retrieve the Web page title from the new system defaults "SOGoPageTitle". -2005-07-19 Marcus Mueller + * UI/Common/UIxPageFrame.m (-title): consider the new system + default attribute "SOGoPageTitle". - * AnaisUidSelector.wox: moved JavaScript into component, renamed quite - a lot of stuff to reflect the current implementation +2011-03-29 Francis Lachapelle -2005-07-19 Helge Hess + * SoObjects/Appointments/iCalEvent+SOGo.m + (-updateRecurrenceRulesUntilDate:): shifts the "until dates" of + the recurrence rules of the event with respect to the previous end + date of the event. - * UIxAppointmentEditor.wox: use parsing function from skycalendar.js - to check validity of date fields + * SoObjects/Appointments/SOGoCalendarComponent.m + (-updateComponent: ): splitted method "saveComponent:" to avoid + saving the component multiple times during the same session. - * UIxAppointmentEditor.wox: check whether title is set and raise a - confirm panel if not, check if startdate/enddate are 10 chars long + * SoObjects/Appointments/SOGoAppointmentObject.m (-saveComponent): + make use of the new "updateComponent" method mentioned above. -2005-07-18 Helge Hess + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-_flattenCycleRecord:forRange:intoArray:): when the event has a + timezone, the "until dates" of recurrence rules must be adjusted. - * ContactsUI/UIxContactEditor.wox: validate email field prior form - submit (#1483) + * UI/Scheduler/UIxAppointmentActions.m (-adjustAction): when + modifying an event, also modify the "until dates" of recurrence rules. - * MailerUI/UIxMailMainFrame.wox: removed searchfield.js from + * UI/Scheduler/UIxAppointmentEditor.m (-_adjustRecurrentRules): + the "until date" of finite recurrence rules must be based on the + event end date, not the start date. - * UIxPageFrame.wox: added generic.js to +2011-03-28 Wolfgang Sourdeau - * ContactsUI/UIxContactsListView.wox: fixed a static reference to - /sogod.woa/ + * Tools/SOGoToolRemoveDoubles.m + (-detectDoublesFromRecords:withQuickField:): added a quick field + parameter to enable the use of other fields than just c_mail. -2005-07-18 Marcus Mueller +2011-03-24 Wolfgang Sourdeau - * AnaisUidSelector.wox: added extraAttributes to pass on from - Anais which we need now + * UI/Contacts/UIxContactsListView.m (-currentContactClasses): new + method that returns the classes associated to the current contact. + For now, only the c_component. -2005-07-18 Helge Hess +2011-03-24 Francis Lachapelle - * MailerUI/UIxMailFilterPanel.wox: disabled auto-search field + * UI/MailerUI/UIxMailListActions.m (-imap4SortOrdering): verify + that the sort is defined when rollbacking to the user's settings. -2005-07-18 Marcus Mueller + * SoObjects/SOGo/SQLSource.m (_encryptPassword:): new method to + encrypt a user's password according to the configured algorithm. + (-changePasswordForLogin:oldPassword:newPassword:perr:): + now implemented (thanks to Martin Rabl). - * UIxContactsSelectionView.wox: fixed targets of sort actions and - form processing +2011-03-23 Ludovic Marcotte - * UIxMailAddressbook.wox: changed template text explaining why there's - nothing to be rendered + * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:): + Fix for bug #1092. We were incorrectly looking up + the organizer of an exception to a recurrence and + we were also incorrectly always updating the master + event with the part-state. - * UIxMailToSelection.wox: changed JavaScript functions to be more - generic +2011-03-23 Francis Lachapelle -2005-07-15 Helge Hess + * UI/PreferencesUI/UIxPreferences.m (-timeZonesList): we make use + of the new method [iCalTimeZone knownTimeZoneNames] instead of + [NSTimeZone knownTimeZoneNames] to avoid listing tons of useless timezones. - * MailPartViewers/UIxMailPartICalViewer.wox: prepared support for iMIP - 'method' requests + * UI/PreferencesUI/UIxPreferences.m (-userTimeZone): since we now + offer a limited number of timezones, the user timezone could be + unrecognized. In this case, try to find a timezone with the same + GMT offset. -2005-07-14 Marcus Mueller +2011-03-22 Wolfgang Sourdeau - * UIxCalScheduleOverview.wox: removed functionality for v0.8 on - client's request + * OpenChange/MAPIStoreCalendarMessage.m (-init): new method to + initialize the attachment ivars. + (-ownerTimeZone): new method with common code. + (-getProperty:withTag): (PR_ICON_INDEX) return a more precise icon depending on + the recurring nature of the event as well on its number of + attendees. (PidLidAppointmentStartWhole, + PidLidAppointmentEndWhole) removed properties. (PidLidRecurring, + PidLidIsRecurring), returns YES when recurring. + (PidLidAppointmentRecur) property handles property, by using + -_computeAppointmentRecur and other submethods. - * UIxAppointmentView.wox: added accept/decline functionality in - participants tab + * OpenChange/NSCalendarDate+MAPIStore.m (-asMinutesSince1601): + corollary to +dateFromMinutesSince1601. -2005-07-14 Helge Hess +2011-03-21 Francis Lachapelle - * UIxMailAccountView.wox: directly access the clientObject to get share - information + * Tools/SOGoToolBackup.m (-fetchUserIDs:): when choosing to backup + all users, fetch the users list from the folder info table instead + of the configured sources. This fixes an issue when trying to + retrieve the users from LDAP sources that limit the number + of results. -2005-07-14 Marcus Mueller + * SoObjects/SOGo/LDAPSource.m (:_qualifierForFilter): avoid + duplicated filters on the CN attribute. - * UIxContactsSelectionView.wox: removed hardcoded stylesheet paths, - provided rsrc: driven paths as this works now + * UI/WebServerResources/UIxPreferences.js + (displayAccountSignature): strips the tags and unescape the HTML + to improve readability. - * UIxCalSelectTab.wox: removed 'Schedule' tab. + * UI/WebServerResources/MailerUI.js (updateWindowTitle): new + function used to update the window title with respect to the + currently selected mailbox. - * UIxCalScheduleOverview.wox: rewritten to be a subcomponent instead - of a proper page. This is used by SOGoHomePage now. + * UI/WebServerResources/MailerUI.js (openMailbox): exchanged sort + arrows to match Thunderbird's GUI. -2005-07-13 Marcus Mueller + * UI/MailerUI/UIxMailListActions.m (-imap4SortOrdering): when the + sort is not specified in the request, retrieve the user's previous sort. - * *.wox: fixed all corner_right.gif image resources +2011-03-20 Wolfgang Sourdeau - * UIxAppNavView.wox: traversal path is only shown when debugging app, - instead inserted user's CN as requested + * OpenChange/MAPIStoreCalendarMessage.m + (-_setupRecurrenceInCalendar:withMasterEvent:fromData:): new + method for setting recurrence info from "PidLidAppointmentRecur" + (no exdate, exrule or modified occurrence for now). -2005-07-13 Helge Hess + * OpenChange/NSCalendarDate+MAPIStore.m + (+dateFromMinutesSince1601): new constructor, helpful for MAPI + recurrence structures. - * ContactsUI/UIxContactEditor.wox: disable editing when being used on - a vCard contact + * OpenChange/MAPIStoreCalendarMessageTable.m, + OpenChange/MAPIStoreTasksMessageTable.m, + OpenChange/MAPIStoreContactsMessageTable.m, + OpenChange/MAPIStoreMailMessageTable.m, + OpenChange/MAPIStoreTasksMessage.m, OpenChange/MAPIStoreMessage.m, + OpenChange/MAPIStoreMailMessage.m, + OpenChange/MAPIStoreContactsMessage.m: cast property tags to + uint32_t in switch statements to avoid fatal warnings about + uncovered cases. - * ContactsUI/UIxContactView.wox: added support for displaying vCard - attributes + * UI/Scheduler/UIxComponentEditor.m + (-takeValuesFromRequest:inContext:): added some sanity checks to + avoid crashes when alarm data is not properly entered. - * ContactsUI/UIxContactsListView.wox, UIxMailContactList.wox: changed - to use c_name instead of cName (as required by new GDLContentStore) +2011-03-18 Francis Lachapelle -2005-07-12 Marcus Mueller + * UI/WebServerResources/SchedulerUI.js (initCalendars): we must + set "showCompletedTasks" earlier in order to properly fetch the + tasks upon the first refresh. - * UIxAppointmentEditor.wox: moved the 'checkForConflicts' button near - the 'save' button as requested + * UI/Scheduler/UIxAppointmentEditor.m + (-takeValuesFromRequest:inContext:): we no longer associate a + vTimeZone to start/end dates of an all-day vEvent. -2005-07-08 Marcus Mueller + * UI/Scheduler/UIxCalListingActions.m + (-_fetchFields:forComponentOfType:): we don't add components + outside the covered period. This could happen with all-day events, + since their dates are always GMT. - * UIxCalDayOverview.wox, UIxCalWeekOverview.wox, - UIxCalWeekColumnsview.wox, UIxCalDayChartview.wox, - UIxCalDayListview.wox, UIxCalWeekChartview.wox, - UIxCalMonthOverview.wox, UIxCalWeekListview.wox: - added 'hide/show rejected apts' toggle to all views + * SoObjects/Appointments/iCalEvent+SOGo.m (-quickRecord): an all-day + event usually doesn't have a timezone. However, if it does, we must + convert its dates to GMT. All-day events are "floating", in the + sense that they are timezone-independant. - * UIxPageFrame.wox: added 'headers' to the debug output +2011-03-17 Francis Lachapelle - * UIxAppointmentEditor.wox: removed conditionals from UI as they were - wrongly placed in the template, component does now deal with it + * UI/MailerUI/UIxMailAccountActions.m (-listMailboxesAction): + moved code that fetches the inbox quota to [SOGoMailAccount getInboxQuota]. -2005-07-07 Marcus Mueller + * SoObjects/Mailer/SOGoMailAccount.m (-getInboxQuota): new method + created partially from the method [UIxMailAccountActions listMailboxesAction]. - * UIxPageFrame.wox: added 'Home' and 'Administration' hyperlink + * UI/MailerUI/UIxMailFolderActions.m (-deleteAction) + (-copyMessagesAction, -expungeAction, -emptyTrashAction): we now + return a JSON representation of the inbox quota when these actions + succeeds. + (-quotasAction): removed this method which was no longer used. - * UIxPageFrame.wox: added 'help' hyperlink + * UI/WebServerResources/MailerUI.js (updateQuotas): new function + extracted from updateMailboxTreeInPage. It is called when a folder + operation returns the inbox quota. - * UIxPageFrame.wox: added 'isAccessRestricted' debug output +2011-03-15 Francis Lachapelle - * AnaisUidSelector.wox: changed layout, added new 'me alone' button - as requested + * UI/MailerUI/UIxMailListActions.m (-getMailAction): removed this + method that is no longer used since live-loading. + (-getSortedUIDsAction): restored the call to + expungeLastMarkedFolder so that the last visited folder is + expunged when switching folder. -2005-07-06 Marcus Mueller +2011-03-11 Wolfgang Sourdeau - * UIxCalInlineAptView.wox: add private appointment icon for non-public - appointments that belong to yourself. + * SoObjects/Contacts/SOGoContactFolders.m + (-setDavContactsCategories:): we need to handle the case where the + "category" element has more than one subnode, in particular when + xml entities are used. -2005-07-05 Marcus Mueller +2011-03-11 Francis Lachapelle - * UIxCalDayOverview.wox, UIxCalInlineAptView.wox, - UIxCalWeekOverview.wox, UIxCalWeekColumnsview.wox, - UIxCalDayChartview.wox, UIxCalDayListview.wox, - UIxCalWeekChartview.wox, UIxCalMonthOverview.wox: added referenceDate - bindings for all UIxAptInlineViews + * UI/WebServerResources/HTMLElement.js (onContextMenu): hide the + menu on a mousedown, not a click. This fixes a problem on Webkit browsers. - * UIxAppointmentEditor.wox: added redirect in case user who is not - allowed to edit view tries to do so + * UI/WebServerResources/generic.js: cleanup some event observers + related to contextual menus. -2005-07-04 Marcus Mueller + * UI/WebServerResources/UIxMailEditor.js (initMailEditor): added + the SpellChecker button in the HTML editor toolbar, and disabled + the "check while typing" option (scayt). - * UIxCalDayOverview.wox, UIxCalWeekOverview.wox, - UIxCalWeekColumnsview.wox, UIxCalDayChartview.wox, - UIxAppointmentProposal.wox, UIxCalDayListview.wox, - UIxCalWeekChartview.wox, UIxAppointmentView.wox, - UIxCalMonthOverview.wox, UIxCalWeekListview.wox, - UIxAppointmentEditor.wox: removed printview links (commented out), - removed resources where appropriate (cancelled for version 0.8) + * UI/WebServerResources/ContactsUI.js (initContacts): don't define + the categories contextual menu if the contacts list doesn't + exist. This fixes a problem when adding categories to a contact + using IE7. -2005-06-26 Helge Hess +2011-03-10 Francis Lachapelle - * UIxMailContactEditor.wox: added a hidden field containing the contact - content + * SoObjects/Appointments/SOGoAppointmentFolder.m (-fixupRecord): + the time of all-day events must be adjusted for the user's timezone. -2005-03-23 Marcus Mueller + * UI/WebServerResources/UIxContactEditor.js (initEditorForm): + the input category field doesn't appear if the card is + read-only. Adjusted the code accordingly. - * UIxCalWeekOverview.wox: changed the right corner URL yet again + * UI/WebServerResources/ContactsUI.js + (onCategoriesMenuItemCallback): new callback that refreshes the + displayed card when a category is added or removed. -2005-02-22 Helge Hess +2011-03-10 Wolfgang Sourdeau - * UIxMailMainFrame.wox: removed debug code, use new SOPE container tag - to allow for frameless pages + * UI/WebServerResources/ContactsUI.js (onCategoriesMenuItemClick): + makes use of "encodeURIComponent" rather than "escape" to encode + URL parameters, because for some reason the former takes the + encoding into account and not the latter. -2005-02-21 Marcus Mueller +2011-03-08 Wolfgang Sourdeau - * UIxTimeDateControl.wox: disable time control on demand + * OpenChange/MAPIStoreCalendarMessage.m (-save): accept entries + with an "x500dn" record since they are now properly converted. - * UIxAppointmentEditor.m: correctly visualize until date for - recurrences + * OpenChange/MAPIStoreContext.m (_convertRecipientFromRow:): + properly find out the coordinates of internal users. -2005-02-18 Helge Hess +2011-03-07 Wolfgang Sourdeau - * UIxMailContactList.wox: added prototypical inline edits in a table - view + * OpenChange/MAPIStoreFSFolder.m (-createMessage): fixed typo that + was making contents messages saved in the FAI folder. - * created ChangeLog -2005-08-01 Helge Hess + * OpenChange/MAPIStoreContext.m (_prepareContextClass): now takes + the context fid as argument. - * v0.9.28 - - * moved classes from shared library back to bundle + * OpenChange/MAPIStore*Context.m (+registerFixedMappings): removed + method, made obsolete by the fact that we now receive the context + fid during initialization. - * UIxContactEditorBase.m, UIxContactView.m: fixed some gcc 4.0 warning + * OpenChange/MAPIStoreFAIMessageTable.[hm]: restored class module + in order to reenable proper class testing during notifications. -2005-07-26 Helge Hess + * OpenChange/MAPIStoreTypes.h (MAPIPropertyKey): we now make use + of the full property tag again since the modified properties need + to be reported during notifications. - * English.lproj/Localizable.strings: added a missing semicolon - (v0.9.27) + * OpenChange/MAPIStoreSOGo.m (sogo_pocop_open_table) + (sogo_pocop_set_table_restrictions) + (sogo_pocop_set_table_sort_order): new poc methods. + (sogo_pocop_release): invoke -deactivate on the released object if + it responds to it. -2005-07-19 Helge Hess + * OpenChange/MAPIStoreContext.m (-setRestrictions:withFID:andTableType:getTableStatus:): + (-setSortOrder:withFID:andTableType:getTableStatus:): + (-getTableProperty:withTag:atPosition:withTableType:andQueryType:inFID:): + adversise methods as obsolete in the log for debugging purposes. + (_saveOrSubmitChangesInMessageWithMID:andFlags:save:): added code + to push the relevant folder, message and table notifications. + (-deleteMessageWithMID:inFID:withFlags:): same as above. + (-getTable:andRowCount:withFID:tableType:andHandleId:): new pocop + helper method to instantiate tables. - * UIxContactEditorBase.m: moved copyContact JS code to - UIxContactEditor.js file (v0.9.26) + * OpenChange/MAPIStoreTable.m (-notifyChangesForChild:): new + method that pushes an appropriate table notification with regards + to the child passed as parameters. + (-deactivate): new helper method that enables the table to + unregister itself from its container prior to be released. + (-setHandleId): new helper accessor enabling reporting the table + handle during notifications. -2005-07-18 Helge Hess + * OpenChange/MAPIStoreObject.m (-addActiveTable:) + (-removeActiveTable:): new methods to add or remove tables from + the active table arrays, used later for notifications. + (-resetNewProperties): new method to empty the "newProperties" + dictionary once a "save changes" or a "submit" happened. - * English.lproj/Localizable.strings: added text for invalid emails - (v0.9.25) + * OpenChange/MAPIStore*Folder.m (-messageTable, -messageFAITable, + -folderTable) + * OpenChange/MAPIStore*Message.m (-attachmentTable): no longer + cache the resulting table. -2005-07-13 Helge Hess + * SoObjects/SOGo/SOGoCache.m + (-unregisterObjectWithName:inContainer:): same as below. - * UIxContactEditorBase.m: added a safeguard for vCard contacts - (v0.9.24) + * SoObjects/SOGo/SOGoGCSFolder.m (-removeChildRecordWithName:): + new method to ensure a child records is removed from the cache + when modified or deleted. -2005-06-26 Helge Hess +2011-03-04 Ludovic Marcotte - * created a library containing shared base classes (for - MailerContactsUI) (v0.9.23) + * SoObjects/Appointments/SOGoAppointmentFolder.h/m: + -importCalendar: we now also import the timezone definition + when present + * SoObjects/SOGo/SQLSource.m + We now consider the domain belonging to the SQLSource instance -2005-03-23 Marcus Mueller +2011-02-25 Wolfgang Sourdeau - * renamed "default.strings" to "Localizable.strings" (v0.9.22) + * OpenChange/MAPIStoreMailContext.[hm]: renamed from + MAPIStoreMailBaseContext and merged in all subclass modules due to + their small size. -2005-02-14 Helge Hess +2011-02-24 Wolfgang Sourdeau - * UIxContactEditor.m: moved header file to own file (v0.9.21) + * OpenChange/MAPIStoreTypes.m (NSObjectFromStreamData): convert + read PT_UNICODE stream data as UTF-16. - * UIxContactsListView.m: added ability in code to sort descending if - the desc=1 query parameter is set (v0.9.20) + * OpenChange/MAPIStoreContext.m + (-setProperty:withFMID:ofTableType:fromFile:): considering the + cached message as a MAPIStoreMessage instance instead of NSDictionary. - * UIxContactsListView.h: properly protected header file (v0.9.19) + * OpenChange/MAPIStoreMailMessage.m + (_fetchAttachmentPartsInBodyInfo:withPrefix:): detect attachment + parts based on the existence of the "filename" info parameter. -2004-12-08 Marcus Mueller + * OpenChange/MAPIStoreTable.m: refactored class to be used as an + accessor on MAPIStoreFolder or other MAPIStoreObject derivatives + based on a defined set of methods. Now strictly handle the sorting + and filtering of folder entries, the getting of properties having + been moved to the MAPIStoreMessage classes. - * UIxContactEditor.m: changed to use NGLogging (v0.9.18) + * OpenChange/SOGoMAPIFSMessage.m (-appendProperties:): new name + for "setMAPIProperties:" + (-save): new name for "MAPISave", since those were methods + ususally found in the obsolete category modules. + + * OpenChange/MAPIStoreSOGo.m: + (sogo_pocop_get_attachment_table, sogo_pocop_get_attachment) + (sogo_pocop_create_attachment, sogo_pocop_set_table_columns) + (sogo_pocop_get_table_row, sogo_pocop_get_properties) + (sogo_pocop_set_properties, sogo_pocop_release): new backend + methods (with counterparts in SOGoContext) that are used as part + of the new proof-of-concept API, where objects are accessed + directly from memory instead of needed to be resolved via their + fid, mid or aid identifiers. + + * OpenChange/MAPIStoreAttachment.m: new super class, derived from + MAPIStoreObject and used for MAPI attachment objects. + + * OpenChange/MAPIStoreFolder.m: new super class used as wrapper + around SOGoFolder objects, by decoupling the code previously found + in the SOGo*Context classes and which implement basic and uniform + content key facilities. + + * OpenChange/MAPIStoreMessage.m: new super class used for + wrapper objects replacing the category modules on the SOGoObject. + + * OpenChange/MAPIStoreObject.m: new super class used as base the + MAPI objects counterparts (MAPIStoreMessage, MAPIStoreFolder and + MAPIStoreAttachment). -2004-10-27 Marcus Mueller + * SoObjects/Contacts/SOGoContactGCSEntry.m + (-saveContentString:baseVersion:): release the "card" ivar to + avoid caching issues. - * v0.9.17 + * SoObjects/Appointments/SOGoTaskObject.m + (-saveContentString:baseVersion:): same as below. - * UIxContactEditor.[wox|m]: new parameters "mobile", "departmentNumber" - and "l" passed to callback. Provide proper unescaping to the - callback's parameters. (#985, #987) + * SoObjects/Appointments/SOGoAppointmentObject.m + (-saveComponent:): release fullCalendar, safeCalendar and + originalCalendar after modification to avoid caching issues. - * UIxContactView.wox: properly display new properties, suppress - rendering of "Organization". (#985) + * SoObjects/SOGo/SOGoContentObject.m (-davContentLength): return 0 + when "content" is nil to avoid a value of "(nil)". + (-setMAPIContent:, -MAPIContent): removed obsolete methods (fixed + hack). - * {English.lproj|French.lproj}/default.strings: needed to change some - labels according to new requirements. + * SoObjects/Mailer/SOGoMailObject.m (_hasFlag:): put the flags in + a cache to avoid multiple queries. -2004-10-20 Marcus Mueller +2011-02-24 Francis Lachapelle - * UIxContactsSelectionView.m: several properties provided to the - callback need to be unescaped properly before being passed back. - This is achieved by using the new SOGoJSStringFormatter in SOGoUI. - (v0.9.16) + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-_flattenCycleRecord:forRange:intoArray:): fixed the condition + that checks if the event lasts all-day. -2004-10-14 Marcus Mueller +2011-02-23 Ludovic Marcotte - * UIxContactSelector.m: fixed wrong method name (v0.9.15) + * We now strip the bcc header in SOGoDraftObject instead + of doing it in SOPE. Prior to stripping the bcc header, + we keep a copy of the message for proper saving in the + Sent IMAP folder. -2004-10-12 Marcus Mueller + * Improved the Installation and Configuration Guide regarding + the SQL-based authentication sources (required database columns) + and also the "id" uniqueness of authentication sources in general - * UIxContactSelector.m: moved helpers to UIxComponent (v0.9.14) + * UI/WebServerResources/UIxPreferences.js: + Added many checks in case the Mail module is disabled for + proper behavior of the Preferences panel. -2004-10-08 Marcus Mueller +2011-02-23 Francis Lachapelle - * v0.9.13 + * SoObjects/Mailer/SOGoMailObject.m (-lookupInfoForBodyPart:): we + now compare the path with a string only if it is a string (and not + an array). - * UIxContactsSelectionView.m: pass more (previous empty) parameters - to the JavaScript callback. + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-fixupCycleRecord:cycleRange:firstInstanceCalendarDateRange:withEventTimeZone:): + avoid fixing the timezone if no event timezone is defined. - * UIxContactSelector.m: correctly compute the relative path to the - "Contacts" URL. + * SoObjects/Appointments/SOGoCalendarComponent.m + (-newOccurenceWithID): set the occurrence timezone to the user's + timezone. This fixes an issue when accessing occurrences of a + recurrent event. + +2011-02-22 Francis Lachapelle + + * UI/Scheduler/UIxCalListingActions.m ( + -_fillBlocks:withEvent:withNumber:): don't compute the block if + the end date is before the start date. This fixes a rare segfault that + occurs with recurrent event with multiple exceptions. + +2011-02-17 Francis Lachapelle + + * SoObjects/Contacts/SOGoFolder+CardDAV.m (-parseContactFilter:): + we now consider all DOM elements from the text-match element. This + fixes problems when the query contains one or more HTML entities. + +2011-02-17 Ludovic Marcotte -2004-09-14 Marcus Mueller + * Modified all tools to NOT check for SOGoUserSources + as it'll break if we are in multi-domain with no + master sources defined. + * Modified SOGoAuthenticator: -imapPasswordInContext: ... + to pass the server URL and not the host particle in order + to determine if we are using SSL or not. + +2011-02-16 Francis Lachapelle + + * UI/WebServerResources/UIxPreferences.js (-appendSieveFilterRow): + fixed a bug with IE8 that would not set the "checked" attribute + properly on a checkbox. - * v0.9.12 +2011-02-15 Ludovic Marcotte - * UIxContactEditor.[wox|m]: Copy from Anais functionality + * SoObjects/Appointments/SOGoCalendarComponent.m + We add extra verifications before trying to instantiate + SOGoEMailAlarmsManager in order to make sure + SOGoEnableEMailAlarms was set to YES prior doing this. + This fixes bug #1079. - * UIxContactsSelectionView.m: minor cleanup +2011-02-14 Francis Lachapelle - * {English.lproj,French.lproj}/defaults.plist: new localizable string + * UI/Scheduler/UIxDatePicker.m + (-takeValuesFromRequest:inContext:): we now consider the timezone + offset with respect to the current date, ie we properly consider daylight + saving time offset. + +2011-02-14 Wolfgang Sourdeau - * v0.9.11 + * OpenChange/MAPIStoreFSMessageTable.m + (-getChildProperty:forKey:withTag:): move type conversion code + into NSObject+MAPIStore. - * UIxContactSelector.m: changed width of satellite window to 800px + * OpenChange/NSObject+MAPIStore.[hm]: new category module that + provides type methods common to all NSObject descendants. + + * OpenChange/MAPIStoreContext.m + (-createMessagePropertiesWithMID:inFID:isAssociated:): create a + fake PR_SEARCH_KEY on new message to make Outlook happy when + composing invitations. + (-getProperties:ofTableType:inRow:withMID:): perform property + searches on "live messages" (unsaved ones) as well. + + * OpenChange/MAPIStoreMailMessageTable.m (-restrictedChildKeys): + no longer excluded messages marked with "\Deleted". + (-getChildProperty:forKey:withTag:): display the right icon for + replied, forwarded, read/unread and deleted messages. - * UIxContactsSelectionView.m: hardcoded paths to stylesheets due to - resource lookup problems. + * OpenChange/MAPIStoreMailFolderTable.m + (-getChildProperty:forKey:withTag:): compute propre response for + PR_CONTENT_UNREAD, even though this will work only for subfolders + and mapistore v2, neither of which is supported right now... + + * SoObjects/Mailer/SOGoMailObject.m (-isNewMail, -replied) + (-forwarded, -deleted): new accessors for the \Recent, \Answered, + $Forwarded and \Deleted IMAP flags. + +2011-02-13 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartViewer.m (-decodedFlatContent): + finally make use of the -bodyDataFromEncoding: category method + from NSData+Mail (Mailer module). + (-flatContentAsString): moved charset-decoding code into a new + category method named "-bodyStringFromCharset:" in NSData+Mail + (Mailer module). + + * SoObjects/Mailer/SOGoMailObject.m (-lookupInfoForBodyPart:): + accept "text" as path parameter and return the main bodyStructure + in that case. + + * OpenChange/MAPIStoreMailMessageTable.m + (-getChildProperty:forKey:withTag:): enhanced treatment of + PR_BODY_UNICODE to accept text/plain parts when more than one is + available, by selecting the first one only. This requires the + prior detection of text/html parts in order to exclude the + property or not. + Make use of the category methods offered in NSData+Mail to + properly decode the body data for PR_BODY_UNICODE and PR_HTML. + +2011-02-11 Wolfgang Sourdeau + + * OpenChange/MAPIStoreContext.m + (-getProperties:ofTableType:inRow:withMID:): small code size + optimization. + (-getProperty:withFMID:ofTableType:intoFile:): added support for + NSString values. + + * OpenChange/MAPIStoreMailMessageTable.m + (-getChildProperty:forKey:withTag:): return + MAPI_E_NOT_ENOUGH_MEMORY for values of PR_HTML or PR_BODY_UNICODE + that are larged than 16Kib (arbitrary limit). + + * OpenChange/MAPIStoreCalendarMessageTable.m + (-sortIdentifierForProperty): added support for + PidLidAppointmentEndWhole and PidLidRecurring. + + * OpenChange/MAPIStoreTable.m + (-warnUnhandledProperty:inFunction:): renamed and made method public. + + * OpenChange/MAPIStoreGCSMessageTable.m + (-evaluatePropertyRestriction:intoQualifier:) + took version of method from MAPIStoreTable and modified it to + handle all string comparisons with the "UPPER" operator. + (-_fixedDatePropertyRestriction:): renamed version of + evaluateDatePropertyRestriction:intoQualifier: which now returns a + new restriction instead of repassing it to evaluatePropert... + + * OpenChange/NSAutoreleasePool+MAPIStore.m: new utility module + that enables the reparenting of a talloc pointer to the current + NSAutoreleasePool. + + * OpenChange/MAPIStoreContactsMessageTable.m + (-sortIdentifierForProperty:): implemented basic table for + supporting the sorting implied by the use of the addressbook label + buttons. + + * OpenChange/MAPIStoreTasksMessageTable.m + (-sortIdentifierForProperty:): implemented basic table for + supporting common header sorts from the OL interface. + + * OpenChange/MAPIStoreCalendarMessageTable.m + (-sortIdentifierForProperty:): implemented basic table. + + * OpenChange/MAPIStoreGCSMessageTable.m (-setSordOrder:): + implemented overriden method, making use of the new + "sortIdentifierForProperty:" subclass method for the mapping of + sort fields and SQL fields. + +2011-02-10 Wolfgang Sourdeau + + * OpenChange/MAPIStoreContactsMessageTable.m + (-getChildProperty:forKey:withTag:): added support for the + following props: PR_SEND_INTERNET_ENCODING, PidLidFileUnderId, + PidLidEmail1DisplayName, PidLidEmail1EmailAddress, + PidLidEmail2EmailAddress, PR_ACCOUNT_UNICODE, + PR_CONTACT_EMAIL_ADDRESSES_UNICODE, + PR_EMS_AB_TARGET_ADDRESS_UNICODE, PR_SEARCH_KEY, + PR_MAIL_PERMISSION + + * OpenChange/MAPIStoreMessageTable.m + (-getChildProperty:forKey:withTag:): returns a default value for + PR_ORIG_MESSAGE_CLASS_UNICODE based of PR_MESSAGE_CLASS_UNICODE. + + * OpenChange/NSArray+MAPIStore.m (-asArrayOfUnicodeStringsInCtx:): + new method for returning array of "PT_UNICODE" values. + +2011-02-09 Wolfgang Sourdeau + + * OpenChange/MAPIStoreMessageTable.m + (-getChildProperty:forKey:withTag:): removed PR_MESSAGE_CODEPAGE + and PR_INTERNET_CPID. + + * OpenChange/MAPIStoreMailMessageTable.m + (-getChildProperty:forKey:withTag:): removed non-unicode string + proptags. Added support for case + PR_RCVD_REPRESENTING_ADDRTYPE_UNICODE, + PR_RECEIVED_BY_ADDRTYPE_UNICODE, PR_SENDER_ADDRTYPE_UNICODE, + PR_ORIGINAL_AUTHOR_NAME_UNICODE, PR_SENDER_NAME_UNICODE, + PR_SENDER_EMAIL_ADDRESS_UNICODE, + PR_RECEIVED_BY_EMAIL_ADDRESS_UNICODE and + PR_RCVD_REPRESENTING_EMAIL_ADDRESS_UNICODE. + Removed code returning MAPI_E_NOT_ENOUGH_MEMORY when content + values where larger than 3999 bytes. + (_sortIdentifierForProperty:): enabled sorting on + PR_CLIENT_SUBMIT_TIME. + Added support for PR_INTERNET_CPID, currently returning "utf-8" + only (65001). + +2011-02-07 Wolfgang Sourdeau + + * OpenChange/MAPIStoreNotesMessageTable.m + (-getChildProperty:forKey:withTag:): make PR_SUBJECT_UNICODE an + alias to PR_NORMALIZED_SUBJECT_UNICODE. + + * OpenChange/MAPIStoreMailMessageTable.m + (-getChildProperty:forKey:withTag:): return a proper value for + PR_SUBJECT_PREFIX_UNICODE and PR_NORMALIZED_SUBJECT_UNICODE. + + * OpenChange/MAPIStoreMessageTable.m + (-getChildProperty:forKey:withTag:): now return standard values + (checked against doc) for PR_ORIGINAL_SUBJECT_UNICODE, + PR_CONVERSATION_TOPIC_UNICODE, PR_SUBJECT_PREFIX_UNICODE and + PR_NORMALIZED_SUBJECT_UNICODE, the two latter being common to all + modules except MAPIStoreMailMessageTable. + + * OpenChange/MAPIStoreContext.m (-openMessage:forKey:inTable:): + only return PR_SUBJECT_PREFIX_UNICODE, + PR_NORMALIZED_SUBJECT_UNICODE as those are the only fields + required by the doc. + + * OpenChange/MAPIStoreMailMessageTable.m + (-getChildProperty:forKey:withTag:): handle PR_FLAG_STATUS and + PR_FOLLOWUP_ICON based on the "Flagged" message flag. - * French.lproj/defaults.plist: copied the English strings here + * OpenChange/SOGoMailObject+MAPIStore.m: new category module for + handling IMAP metadata on messages. -2004-09-13 Marcus Mueller + * OpenChange/MAPIStoreDraftsContext.m + (-createMessageOfClass:inFolderAtURL:): implemented method to + avoid a crash when "saving" drafts messages in Outlook. - * v0.9.10 +2011-02-07 Ludovic Marcotte - * UIxContactsListView.h: new header for subclassers + * OpenChange/MAPIStoreDeletedItemsContext.m: now a subclass of + MAPIStoreMailContext and make use of the trash folder as module + folder. - * UIxContactsSelectionView.[m|wox]: new subclass of UIxContactsListView - which is basically the same only in its own window frame to mimic - the appearance of Anais. + * OpenChange/MAPIStoreDraftsContext.m: now a subclass of + MAPIStoreMailContext and make use of the drafts folder as module + folder. - * UIxContactSelector.[m|wox]: component for opening - UIxContactsSelectionView in a separate window +2011-02-06 Wolfgang Sourdeau - * product.plist: new method "select" + * OpenChange/MAPIStoreMailMessageTable.m (-setSordOrder): + overriden method with proper mapping of IMAP sort fields, still + lack handling of categories. -2004-09-03 Marcus Mueller + * OpenChange/MAPIStoreMessageTable.m (-setSortOrder:): implemented + stub method. - * UIxContactView.wox: added some more properties for display (v0.9.9) + * OpenChange/MAPIStoreContext.m + (-setSortOrder:withFID:andTableType:getTableStatus:): implemented + backend method for sorting messages. -2004-09-01 Marcus Mueller + * OpenChange/SOGoMAPIFSMessage.m (-MAPISave): restored old way of + decoding the property dictionary from the property list as the + "new method" was working around that was solved elsewhere and was + causing trouble with value typing. - * GNUmakefile.preamble: fixed for gsmake 1.9.2 build (v0.9.8) - -2004-08-27 Marcus Mueller +2011-02-04 Wolfgang Sourdeau - * v0.9.7 + * OpenChange/SOGoMAPIFSMessage.m (-properties): initialize + properties to an empty dictionary if the initialization from file + failed. - * English.lproj/default.strings: provided labels + * OpenChange/MAPIStoreMailMessageTable.m (-childKeys) + (-restrictedChildKeys): now only return non-deleted elements. - * UIxContactsListView.wox, UIxContactView.wox, UIxContactEditor.wox: - converted static strings into labels + * OpenChange/SOGoMAPIFSMessage.m (-MAPISave): use an alternative + way of producing the property list file as, for some reason, + invoking -writeToFile:atomically: can fail on NSDictionary. -2004-08-27 Helge Hess + * OpenChange/MAPIStoreContext.m + (-deleteMessageWithMID:inFID:withFlags:): we need to invoke + -cleanupCaches on the related table to avoid listing deleted + elements after this operation. - * UIxContactsListView: added simple filtering (v0.9.6) +2011-02-03 Ludovic Marcotte - * UIxContactsListView: added simple sorting (v0.9.5) + * OpenChange/SOGoAppointmentObject+MAPIStore.m + (-setMAPIProperties:): added code to handle attendees. Make use of + the new MAPIContent ivar (temp hack). - * first working version of contacts UI (v0.9.4) + * SoObjects/SOGo/SOGoContentObject.m (-MAPIContent) + (-setMAPIContent:): new accessors for querying/modifying the new + "MAPIContent" ivar, as part of a hack to enable events to be + modified multiple times as one. - * removed GET from product.plist, the SoObject directly implements GET - now and redirects to the view method (v0.9.3) - -2004-08-26 Helge Hess + * OpenChange/MAPIStoreCalendarContext.m + (-openMessage:forKey:inTable:): overriden method to return + attendees as recipients. - * product.plist: more fixes to product.plist (v0.9.2) + * OpenChange/SOGoMAPIFSMessage.m (-delete): implemented method. + (-setMAPIProperties:): append the new properties to the existing + ones instead of replacing them. - * product.plist: fixed package dependency, fixed category name (v0.9.1) + * OpenChange/MAPIStoreTable.m (-setRestrictions:): log the old + restriction when unset. -2004-08-25 Marcus Mueller + * OpenChange/MAPIStoreMapping.m (-unregisterURLWithID:): new + method for removing entries from the mapping dictionaries. - * common.h: new file + * OpenChange/MAPIStoreContext.m + (-deleteMessageWithMID:inFID:withFlags:): implemented backend method. - * UIxContact*: added template views +2011-02-03 Wolfgang Sourdeau - * ChangeLog: created -2005-07-19 Helge Hess + * OpenChange/MAPIStoreContext.m + (_saveOrSubmitChangesInMessageWithMID:andFlags:save:): silently + ignore "IPM.Schedule.Meeting.Request" messages from Outlook + and return a success code. - * UIxPageFrame.m: workaround for an issue with [page name] (page name - gets reset, so we use the page class instead) (v0.9.46) + * SoObjects/SOGo/WOResourceManager+SOGo.m: new category module + defining methods useful to the vanilla and OpenChange frontends. + (-localeForLanguageNamed:): method moved from SOGo.m. - * UIxPageFrame.m: added ability to auto-load per-page JavaScript files - if appropriate resources are available (v0.9.45) +2011-02-01 Ludovic Marcotte -2005-07-18 Helge Hess + * SoObjects/SOGo/NSString+Utilities.h,m: Fixed + the salt for crypt-based encoding - * moved all images and CSS to WebServerResources (v0.9.44) +2011-02-01 Francis Lachapelle - * v0.9.43 + * UI/WebServerResources/scriptaculous/dragdrop.js (-updateDrag:): + fixed JavaScript error with Offset object. This object is now + casted as an array. - * various minor code cleanups + * UI/WebServerResources/MailerUI.js (-startDragging): improved + behavior of drag and drop. - * removed deprecated uix.css (lives in WebServerResources!) +2011-01-28 Francis Lachapelle -2005-07-14 Marcus Mueller + * UI/WebServerResources/MailerUI.js (-onDocumentKeydown): set + the global variables lastClickedRow and lastClickedRowId to fix + the behavior of subsequent selections of multiple messages. + (-configureMessageListEvents): set the table listener on mouseup + instead of mousedown to improve the drag'n'drop experience. - * calendar.css: further refined new css (v0.9.42) +2011-01-27 Francis Lachapelle - * calendar.css, uix.css: added homepagefont and added 'title' class - to use in the scheduler overview (v0.9.41) + * SoObjects/SOGo/LDAPSource.m + (-checkLogin:password:perr:expire:grace:): the caching of the DN + is now performed only if the DN was found. -2005-07-13 Marcus Mueller + * SoObjects/Mailer/SOGoDraftObject.m (-save): we no longer use the + relative URL of the draft folder when it must be created. This + fixes an issue when using a subfolder as the drafts folder. - * English.lproj/Localizable.strings: removed label "You are here" and - provided new label "User" (v0.9.40) +2011-01-26 Francis Lachapelle -2005-07-07 Marcus Mueller + * UI/Scheduler/UIxComponentEditor.m (-setComponent:): retrieve the + organizer from the master component when not present in the + current component. - * v0.9.39 +2011-01-24 Francis Lachapelle - * UIxPageFrame.m: added new - - - * English.lproj/Localizable.strings: added new 'Home' and - 'Administration' labels + * SoObjects/SOGo/LDAPSource.m (_qualifierForFilter:): added + support for the parameter "SearchFieldNames" that can be added to + the source defaults to specify which LDAP attributes to use when + filtering contacts. It defaults to the previous values, ie sn, + displayname, and telephonenumber. - * English.lproj/Localizable.strings: added new 'Help' label (v0.9.38) +2011-01-21 Francis Lachapelle -2005-07-05 Marcus Mueller + * SoObjects/Appointments/iCalRepeatableEntityObject+SOGo.m + (-doesOccurOnDate:): we set the timezone of floating all-day + events to the one of the date passed as argument. - * calendar.css: added appointment priority styles (v0.9.37) + * UI/Scheduler/UIxAppointmentEditor.m (-defaultAction): when + dealing with "floating" start dates (no timezone), we convert it to + the user's timezone. -2005-03-23 Marcus Mueller + * SoObjects/Appointments/SOGoAppointmentFolder.m + (:_flattenCycleRecord:forRange:intoArray:): we must set the + timezone of floating all-day events to the user's timezone. + (_flattenCycleRecords:fetchRange:): Adjust the range so it ends at + midnight. This is necessary when calculating recurrences of all-day events. - * renamed "default.strings" to "Localizable.strings" (v0.9.36) +2011-01-17 Francis Lachapelle -2005-02-10 Helge Hess + * SoObjects/Appointments/SOGoEMailAlarmsManager.m + (-_lookupEntityMatchingRecord:inCalendar:): We check if + recurrenceId is nil prior calling -timeIntervalSince1970. - * GNUmakefile: include ../common.make (v0.9.35) +2011-01-14 Francis Lachapelle -2005-01-24 Marcus Mueller + * SoObjects/Appointments/iCalRepeatableEntityObject+SOGo.m + (-doesOccurOnDate:): exception rules be adjusted to the event's + timezone since the recurrence calculation is also based on the + event's timezone. - * UIxPageFrame.wox: additional debug output (v0.9.34) + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-_flattenCycleRecord:forRange:intoArray:): idem. -2005-01-21 Helge Hess +2011-01-14 Ludovic Marcotte - * UIxTabView.m: fixed an include of WEExtensions (v0.9.33) + * Work on the OpenChange backend: added more property + support such as priority for tasks, events and mails, + secondary email address support for contacts, nickname + and birthday support for contacts and a few more or + some fixes there and there. + * OpenChange/SOGoMAPIFSMessage.m: -MAPISave added a hack + to AVOID saving informations on the fs when dealing + with the "inbox" folder - as it'll crash Outlook upon + next restarts + * Added OpenChange/MAPIStoreNotesMessageTable.{h,m} to + later extend and improve Notes support. + +2011-01-13 Francis Lachapelle -2004-01-07 Marcus Mueller + * SoObjects/Appointments/iCalRepeatableEntityObject+SOGo.m + (-doesOccurOnDate:): the date to verify must be adjusted to the + event's timezone before performing the calculation of the + recurrence rule. - * {English/French}.lproj/default.strings: changed encoding from - ISO-Latin-1 to UTF-8, which is now the default (v0.9.32) + * SoObjects/Appointments/iCalEvent+SOGo.m (-firstOccurenceRange): + extract the original start and end dates from the event, based on + the event's timezone. -2004-12-16 Marcus Mueller + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-fixupCycleRecord:cycleRange:firstInstanceCalendarDateRange:withEventTimeZone:): + the event dates must be first be adjusted to the event's timezone + before being adjusted to the user's timezone. + (-_flattenCycleRecord:forRange:intoArray:): the calculation of the + occurrences must be performed with respect to the event's + timezone, not the user's timezone. - * calendar.css: added CSS for "Schedule" (v0.9.31) + * SoObjects/Appointments/SOGoAppointmentObject.m + (-newOccurenceWithID:): new occurrences are now independant of the + user's timezone. + +2011-01-11 Ludovic Marcotte + + * OpenChange/MAPIStoreContactsMessageTable.m + Added more properties: home/work URL, nickname + and department. + +2011-01-11 Wolfgang Sourdeau + + * OpenChange/SOGoTaskObject+MAPIStore.m (-setMAPIProperties): + release fullCalendar and safeCalendar to force a rebuild of + the root object when next requested. + + * OpenChange/SOGoAppointmentObject+MAPIStore.m (-setMAPIProperties): + idem. + + * OpenChange/MAPIStoreContext.m + (-createMessagePropertiesWithMID:inFID:isAssociated:): added a + retain count handling. + (-releaseRecordWithFMID:ofTableType:): same as above. + (-_saveOrSubmitChangesInMessageWithMID:andFlags:save:): cleanup + table caches even for modifications. + + * OpenChange/MAPIStoreMessageTable.m + (-getChildProperty:forKey:withTag:): fixed PR_ACCESS and + PR_ACCESS_LEVEL to avoid displaying the "read-only" status. + + * OpenChange/MAPIStoreTable.m (-cleanupCaches): remove lastChild + from cache too. + + * OpenChange/MAPIStoreTasksMessageTable.m + (-getChildProperty:forKey:withTag:): fixed typo affecting + PidLidTaskStatus. + + * OpenChange/MAPIStoreContext.m (-openMessage:withMID:inFID:): + create a message dictionary in the message cache in order to + enable modifications. + + * OpenChange/MAPIStoreContactsMessageTable.m + (-_element:ofType:excluding:inCard:): new version of the previous + -_phoneOfType:excluding:inCard: method, which now returns the + requested element rather than it's first value and which enables + the specification of the tag. + (-getChildProperty:forKey:withTag:): added support for + PidLidPostalAddressId, PR_POSTAL_ADDRESS_UNICODE, + PR_POST_OFFICE_BOX_UNICODE, PR_STREET_ADDRESS_UNICODE, + PR_LOCALITY_UNICODE, PR_STATE_OR_PROVINCE_UNICODE, + PR_POSTAL_CODE_UNICODE, PR_COUNTRY_UNICODE, PidLidWorkAddress, + PidLidWorkAddressPostOfficeBox, PidLidWorkAddressStreet, + PidLidWorkAddressCity, PidLidWorkAddressState, + PidLidWorkAddressPostalCode and PidLidWorkAddressCountry. + + * OpenChange/MAPIStoreContext.m (-openMessage:forKey:inTable:): + avoid taking NULL values into account when returning the basic + properties. + + * OpenChange/SOGoContactGCSEntry+MAPIStore.m + (-setMAPIProperties:): added support for work address and its + corresponding addresse label. Preliminary support for + "PidLidPostalAddressId" which enables us to set a certain address + as preferred. + Carefully replace existing handled fields to avoid removing them + during modification. + +2011-01-10 Wolfgang Sourdeau + + * OpenChange/MAPIStoreContext.m (-typeLessTag:): removed method as + types are now determined from openchange core. + +2011-01-07 Wolfgang Sourdeau + + * OpenChange/MAPIStoreContext.m (_typeLessTag:): new method + designed to return a known value type for typeless tags that were + requested via getprops. This abstract the missing type from the + call to getChildProperty:... + + * OpenChange/MAPIStoreMessageTable.m + (-getChildProperty:forKey:withTag:): added generic values for some + standard props. + + * OpenChange/SOGoAppointmentObject+MAPIStore.m: same as below. + + * OpenChange/SOGoTaskObject+MAPIStore.m (-setMAPIProperties:): set + a value for CREATED and DTSTAMP + +2011-01-05 Wolfgang Sourdeau + + * OpenChange/MAPIStoreTasksMessageTable.m + (-getChildProperty:forKey:withTag:): silently returns + MAPI_E_NOT_FOUND when the completion date is not available. Added + stubs for PidLidTaskMode, PidLidTaskFRecurring, + PidLidTaskActualEffort and PidLidTaskEstimatedEffort. + + * OpenChange/MAPIStoreFolderTable.m + (-backendIdentifierForProperty:): new overriden method to avoid an + exception under certain circumstances. + + * OpenChange/SOGoMAPIFSMessage.m (-MAPISave): make use of + "ensureDirectory" on the container folder to avoid errors with + NSDictionary failing to save itself to the filesystem. + + * OpenChange/SOGoMAPIFSFolder.m (-ensureDirectory): method made + public and which ensures that the directory pointed to by the + instances of this class does exist. + + * OpenChange/SOGoContactGCSEntry+MAPIStore.m (-setMAPIProperties): + take "PidLidEmail1EmailAddress" id as key for the contact email + address. + +2011-01-05 Ludovic Marcotte + + * SoObjects/SOGo/SQLSource.m - we now honor the "mail" column + and we also support "MailFieldNames" in the SQL source - which + is essentially and array of column names holding additonnal email + addresses of users (beside the "mail" column). Also updated + the documentation to reflect this change. + +2011-01-05 Francis Lachapelle + + * UI/WebServerResources/SOGoAutoCompletion.js (onKeydown): added + support for the delete key (confirmed value was not reset and + therefore used as the field value when loosing focus). + + * UI/WebServerResources/generic.js (showConfirmDialog): buttons + callbacks must be updated when retrieving dialog box from cache. + +2011-01-03 Wolfgang Sourdeau + + * OpenChange/MAPIStoreContactsMessageTable.m + (-getChildProperty:forKey:withTag:): result the same value for + "PR_SUBJECT" as for "PR_DISPLAY_NAME_UNICODE" instead of a stub + string. + +2010-12-30 Wolfgang Sourdeau + + * OpenChange/MAPIStoreMailMessageTable.m + (-getChildProperty:forKey:withTag:): return "NO" for + PR_REPLY_REQUESTED and PR_RESPONSE_REQUESTED. Commented out + responses for "PidLidHeaderItem" and "PidLidRemoteTransferSize". + Return "PR_ORIGINAL_DISPLAY_TO/CC/BCC_UNICODE" based on their + non-"ORIGINAL" counterpart and return an empty string when + missing. + Modified the return code of "PR_RTF_COMPRESSED" to + "MAPI_E_NOT_FOUND". + + * OpenChange/MAPIStoreTypes.m (NSObjectFromSPropValue) + (NSObjectFromMAPISPropValue): force booleans to be int to avoid + creating EOQualifier values where the strings "YES" or "NO" appear + as a result to "stringValue". + + * OpenChange/SOGoTaskObject+MAPIStore.m + (-setMAPIProperties:): same as below. + + * OpenChange/SOGoAppointmentObject+MAPIStore.m + (-setMAPIProperties:): make use of proper named properties macro + symbols rather than their values, now that they are handled better + in the openchange core. + + * OpenChange/SOGoMAPIFSFolder.m (-initWithURL:andTableType:): + accepts a new "tableType" parameter to store messages in a + different place of the fs folder hierarchy. + + * OpenChange/NSValue+MAPIStore.m (-asDoubleInMemCtx): really + returns a double rather than an uint64_t. + + * OpenChange/MAPIStoreTypes.m (MAPIDoubleValue): new wrapper + methods for generating data of "double" type. + (NSObjectFromMAPISPropValue, NSObjectFromSPropValue): now handle + the PT_CLSID mapi type. + ( + (MAPIStoreDumpMessageProperties): enhanced logging of property + keys. + + * OpenChange/NSData+MAPIStore.m (+dataWithFlatUID) + (-asFlatUIDInMemCtx:, +dataWithGUID:, asGUIDInMemCtx:): new + methods for handling the two GUID mapistore types. + + * OpenChange/MAPIStoreContext.m + (-createMessageOfClass:inFolderAtURL:): renamed from + "-createMessageInFolder:", taking an additional message class + parameter that enables the subclasses to accept or deny a message + creation. + + * OpenChange/EOQualifier+MAPIFS.m (-evaluateMAPIFSMessage:): added + logging for easier debugging. + + * OpenChange/MAPIStoreSentItemsContext.[hm]: class is now derived + from MAPIStoreMailContext and set up its module folder to the + user-configured sentFolder of his/her default account. + + * OpenChange/MAPIStoreMailFolderTable.[hm]: new class module + subclassed from MAPIStoreFolderTable, that provides the interface + for folders in MAPIStoreMailContext. + + * OpenChange/MAPIStoreMailContext.m: Old table methods (see + below) split into the new "MAPIStoreMailMessageTable" class. + (+registerFixedMappings:): changed handled uri to + @"sogo://openchange:openchange@inbox/". + + * OpenChange/MAPIStoreGCSBaseContext.m: Old table methods (see + below) split into the new "MAPIStoreGCSMessageTable" class. + + * OpenChange/MAPIStoreContactsContext.m: Old table methods (see + below) split into the new "MAPIStoreContactsMessageTable" class. + (+registerFixedMappings:): changed handled uri to + @"sogo://openchange:openchange@contacts/". + + * OpenChange/MAPIStoreTasksContext.m: Old table methods (see + below) split into the new "MAPIStoreTasksMessageTable" class. + (+registerFixedMappings:): changed handled uri to + @"sogo://openchange:openchange@tasks/". + + * OpenChange/MAPIStoreCalendarContext.m: Old table methods (see + below) split into the new "MAPIStoreCalendarMessageTable" class. + (+registerFixedMappings:): changed handled uri to + @"sogo://openchange:openchange@calendar/" as we now consider that + the "host" part of the uri names the context that handles it. + + * OpenChange/MAPIStoreFAIMessageTable.[hm]: new class module, + subclassed from MAPIStoreFSMessageTable, that provides the + interface for FAI messages in MAPIStoreContext. + + * OpenChange/MAPIStoreFSBaseContext.[hm]: renamed from + MAPIStoreFileSystemBaseContext. Old table methods (see below) + split into the new "MAPIStoreFSMessageTable" class. + + * OpenChange/MAPIStoreSOGo.m (sogo_op_openmessage): added some + debugging. + (sogo_op_createmessage): takes a new "associated" flag parameter. + + * OpenChange/MAPIStoreContext.m: refactored to extract the table + handling code into a separate class. This enables the introduction + of real classes for contents tables, folder tables and FAI tables, + as well as any other type that could be handled later. Changes: + - new messageTableClass and folderTableClass methods for + determining the class that is appropriate to the current datatype. + - new messageTable, folderTable ivars. + - new faiTable ivar, always an instance of + MAPIStoreFAIMessageTable. + - created MAPIStoreTable, subclassed into MAPIStoreMessageTable + and MAPIStoreFolderTable from which appropriate subclasses are + derived for handling mails, tasks or calendar items. + - renamed + "getMessageTableChildproperty:atURL:withTag:inFolder:withFID:" and + "getFolderTableChildproperty:atURL:withTag:inFolder:withFID:" to + the simpler "getChildProperty:forKey:withTag:" form and moved them + to the MAPIStoreTable class. + - moved "-setRestrictions:" to MAPIStoreTable. + - renamed "getFolderMessageKeys:matchingQualifier:" to + "cachedChildKeys" and "cachedRestrictedChildKeys" and moved them + to MAPIStoreTable. + - moved all the "evaluateRestriction:intoQualifier:" methods to + MAPIStoreTable. + (-createMessagePropertiesWithMID:inFID:isAssociated:): now takes a + "isAssociated" parameter to determine whether the message is part + of the contents table or the fai table. + + * OpenChange/EOBitmaskQualifier.m (-description): new method. + +2010-12-29 Ludovic Marcotte + + * Moved the string encryption code from SoObjects/SOGo/SQLSource.m + to SoObjects/SOGo/NSString+Utilites.m + * SoObjects/SOGo/SOGoUserManager.m: We now store the passwords + in memcached as a SHA1 encrypted string. + +2010-12-28 Ludovic Marcotte + + * Implemented secured sessions. We no longer store in the + browser's cookie the base64 encoded version of username:password + You MUST now set OCSSessionsFolderURL to a value like: + postgresql://sogo:sogo@127.0.0.1:5432/sogo/sogo_sessions_folder + and the database table will be created automatically upon + next SOGo's startup. + +2010-12-23 Ludovic Marcotte + + * Added the /SOGo/so//Calendar/reloadWebCalendarsAndRedirect + action which is particularly useful for WebAuth users + +2010-12-17 Wolfgang Sourdeau + + * OpenChange/MAPIStore*Context.m: added handling of a few more + filters and a few more properties, in particular "named + properties". + +2010-12-14 Wolfgang Sourdeau + + * OpenChange/MAPIStoreContext.m + (-evaluateBitmaskRestriction:intoQualifier:): implemented method. + (-releaseRecordWithFMID:ofTableType:): return MAPI_E_SUCCESS even + when the message passed as parameter was not found. + + * OpenChange/MAPIStoreMailContext.m + (-evaluateContentRestriction:intoQualifier:): new overriden method + handling tests on the PR_MESSAGE_CLASS_UNICODE property. + + * OpenChange/EOQualifier+MAPIFS.m (-[EOBitmaskQualifier + _evaluateMAPIFSMessageProperties:]): new method adapted to the new + class below. + + * OpenChange/EOBitmaskQualifier.[hm]: new class module + implementing a new EOQualifier subclass that's adapted to the MAPI + bitmask restrictions. + +2010-12-14 Ludovic Marcotte + + * Implemented the "bindAsCurrentUser" feature (when + set to the LDAP SOGoUserSources, to YES) which forces + SOGo to use the DN of the currently "requesting" user + to perform all LDAP-related operations + +2010-12-13 Wolfgang Sourdeau + + * OpenChange/EOQualifier+MAPIFS.[hm]: new category module for + evaluating qualifiers with regards to SOGoMAPIFSMessage objects. + + * OpenChange/MAPIStoreGCSBaseContext.[hm]: new class module + containing all the code common to SOGoGCSFolder-based context + classes, in particular with regards to restriction handling. + + * OpenChange/MAPIStoreContext.m (-init): added new + "restrictedMessageCache" dictionary to retain the ids matching the + active restriction filter and "parentFoldersBag" array to retain + folder objects that are parents of the module folder. + + (-getCommonTableChildproperty:atURL:withTag:inFolder:withFID:): + added handling for PR_SEARCH_KEY. + (-evaluateContentRestriction:intoQualifier:) + (-evaluateExistRestriction:intoQualifier:) implemented fallback + code. + (-getTableProperty:withTag:atPosition:withTableType:andQueryType:inFID:): + added the new 'query_type' parameter, as required by the upstream + changes. Adapted the code to check if the active row matches the + filter (live filtering) or to return a pre-filtered set of rows + altogether. + (-releaseRecordWithFMID:ofTableType:) implementation of + op_release_record. + + * OpenChange/MAPIStoreMapping.m (MAPIStoreMappingInitDictionary): + new function used during the instance initialization to fetch + pre-existing ids from tdb index. + + * OpenChange/MAPIStoreTypes.h (MAPIPropertyKey): renamed from + MAPIPropertyNumber, changed behaviour to only take the 2 msb into + account to generate a value key. + + * OpenChange/NSData+MAPIStore.m (-asShortBinaryInMemCtx:): new + corrolary method to +dataWithShortBinary:. + + * OpenChange/MAPIStoreFileSystemBaseContext.[hm]: new base + MAPIStoreContext class that handles requests for objects based on + the SOGoMAPIFSFolder and SOGoMAPIFSMessage classes. + + * MAPIStoreCommonViewsContext.[hm], + MAPIStoreDeferredActionsContext.[hm], + MAPIStoreDeletedItemsContext.[hm], MAPIStoreDraftsContext.[hm], + MAPIStoreFreebusyContext.[hm], MAPIStoreJournalContext.[hm], + MAPIStoreNotesContext.[hm], MAPIStoreRemindersContext.[hm], + MAPIStoreScheduleContext.[hm], MAPIStoreSearchContext.[hm], + MAPIStoreSentItemsContext.[hm], MAPIStoreShortcutsContext.[hm], + MAPIStoreViewsContext.[hm]: + new subclasses of MAPIStoreFileSystemBaseContext. + + * OpenChange/NSValue+MAPIStore.[hm]: new category module for + returning native MAPI types. + + * OpenChange/SOGoMAPIFSFolder.[hm]: new class module that + implements a SOGoFolder subclass that stores and retrives data + to/and from the file system in the form of a plist. + + * OpenChange/SOGoMAPIFSMessage.[hm]: new class module that + implements a SOGoObject subclass that stores and retrives data + to/and from the file system in the form of a plist. + +2010-12-09 Ludovic Marcotte + + * SoObject/SOGo/SQLSource.m - added SHA password + hash support for SQL authentication sources. + * Added patch from bug #1048 + * SoObjects/Mailer/SOGoDraftObject.m: + -mimeHeaderMapWithHeaders:excluding: axed the "replyTo" + code as it was always 'empty', leading to Reply-To being + always set to the From: address, which is rather stupid. + +2010-12-08 Francis Lachapelle + + * UI/WebServerResources/MailerUI.js (onMenuEmptyTrashCallback): + refresh the folders tree if there're folders in the trash. + +2010-12-03 Wolfgang Sourdeau + + * OpenChange/MAPIStoreContext.m + (-setRestrictions:withFMID:andTableType:getTableStatus:): new + backend method that accepts a struct mapi_SRestriction * in order + to filter the table rows. + (-evaluateRestriction:intoQualifier:) + (-evaluateNotRestriction:intoQualifier:) + (-evaluateAndRestriction:intoQualifier:) + (-evaluateOrRestriction:intoQualifier:): new low-level restriction + handlers for converting MAPI restrictions into EOQualifier + equivalents. + (-evaluateContentRestriction:intoQualifier:) + (-evaluatePropertyRestriction:intoQualifier:) + (-evaluateBitmaskRestriction:intoQualifier:) + (-evaluateExistRestriction:intoQualifier:) new overridable + restriction handlers. + (-backendIdentifierForProperty:): new overridable restriction + helper for converting restriction attributes into database or IMAP + fields, depending on the module in use. Used by the topmost + version of -evaluatePropertyRestriction:intoQualifier: for + handling "needs eval" restriction types. + (-saveOrSubmitChangesInMessageWithMID:andFlags:save:) prevent any + creation or modification of messages with a type attribute of + "IPM.Microsoft.FolderDesign.NamedView", at least for now, because + no module is able to handle those view-related messages. + + * OpenChange/MAPIStoreSpoolerContext.m: new experimental subclass + of MAPIStoreOutboxContext. + + * OpenChange/MAPIStoreTypes.m (NSObjectFromMAPISPropValue): new + helper function, similar in semantics to NSObjectFromSPropValue + but taking a struct mapi_SPropValue * as parameter. + + * OpenChange/NSData+MAPIStore.m: (+dataWithShortBinary:): new + constructor for returning an NSData instance from a struct + SBinary_short. + +2010-12-03 Francis Lachapelle + + * UI/WebServerResources/MailerUI.js + (deleteSelectedMessagesCallback): must set the value of + lastClickedRow and lastClickedRowId when selecting the next row. + + * UI/WebServerResources/HTMLElement.js (refreshSelectionByIds): + log invalid references to element IDs. + +2010-12-02 Ludovic Marcotte + + * Main/SOGo+DAV.m - we avoid assuming a range is found + and check for it, returning no location if necessary + +2010-12-01 Wolfgang Sourdeau + + * OpenChange/MAPIStoreContext.m: prevent leaks by adding an + additional mutable array that retains the required parent folders + until deallocation of the context. + (-getCommonTableChildproperty:atURL:withTag:inFolder:withFID:): + log the name of the missing properties for easier diagnostics. + +2010-11-30 Wolfgang Sourdeau + + * OpenChange/MAPIStoreMailContext.m + (-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:): + when the property is larger than 4000 bytes, register it in a + "message" dictionary and return MAPI_E_NOT_ENOUGH_MEMORY so that + it can be fetched later via the streaming mechanism. + + * OpenChange/MAPIStoreTypes.h (MAPIPropertyNumber): changed the + prototype to use an enum MAPITAGS instead of an int32_t. + + * OpenChange/MAPIStoreContext.m + (-getFolderTableChildproperty:atURL:withTag:inFolder:withFID:) + (-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:) + (-getCommonTableChildproperty:atURL:withTag:inFolder:withFID:): + now return an "enum MAPISTATUS" for making debugging easier. + (_createMessageWithMID:inFID:): display an error when the returned + message is nil. + (-getMessageProperties:inRow:atURL:): when an error code is + returned from the getXXXChildProperty.. methods, the tag is set to + its corresponding error tag and the error code is returned as a + long value. + (-getProperty:withFMID:ofTableType:intoFile:): implemented + "op_get_property_into_fd" backend method. + +2010-11-26 Wolfgang Sourdeau + + * OpenChange/MAPIStoreTypes.m (NSObjectFromStreamData): new + function for returning an NSObject from a property tag and a data + pointer. + + * OpenChange/MAPIStoreContext.m + (-setProperty:withFMID:ofTableType:fromFile:): new method + implementing the "set_property_from_fd" backend operation. + +2010-11-24 Wolfgang Sourdeau + + * OpenChange/SOGoDraftObject+MAPIStore.m: new category module. + (-setMAPIProperties,-MAPISubmit,-MAPISave): implemented the MAPI + methods for sending messages. + + * OpenChange/MAPIStoreSOGo.m: (sogo_op_modifyrecipients): new + backend operation. + + * OpenChange/MAPIStoreContext.m: + (-modifyRecipientsWithMID:inRows:withCount:): new method + implementing the new "modifyrecipients" operation. + + * OpenChange/MAPIStoreOutboxContext.m: new class module + implementing the "outbox" folder type, as a subclass of + MAPIStoreMailContext. + (-createMessageInFolder:): new method that returns an instance of + SOGoDraftObject. + +2010-11-23 Francis Lachapelle + + * UI/WebServerResources/SchedulerUI.js (deletePersonalCalendar): + argument is now the list node instead of simply the node id. The + confirmation callback (deletePersonalCalendarConfirm) is binded to + this object. + (deletePersonalCalendarConfirm): unselect and hide the calendar + node in the list until the Ajax call returns. + (deletePersonalCalendarCallback): remove the hidden calendar node + on success and show it when the Ajax call failed. + (drawNowLine): fixed the selection of the target cells. + +2010-11-23 Wolfgang Sourdeau + + * OpenChange/MAPIStoreTypes.m (NSObjectFromSPropValue): added + support for "PT_BINARY". + + * OpenChange/NSData+MAPIStore.m (+dataWithBinary:): new + constructor for generating an NSData instance from a struct + Binary_r *. + + * SoObjects/Mailer/SOGoDraftObject.m (-setIsHTML, -isHTML): new + accessors, which enables the setting of html mode from the caller + rather than from the user defaults. + (-mimeMessageForContentWithHeaderMap:, -bodyPartForText): make use + of "isHTML". + + * UI/MailerUI/UIxMailEditor.m (-setIsHTML, -isHTML): new + accessors. The former sets the "isHTML" ivar based on a previous + request on the latter, which actually returns the value stored in + the user defaults. This enables the user to change composition + type while editing a message without altering the proper logic + underneat. + (-_saveFormInfo): forward the value of "isHTML" to the co. + +2010-11-22 Wolfgang Sourdeau + + * OpenChange/MAPIStoreContext.m + (_prepareContextClass): new static function for clearing up + +contextFromURI:inMemCtx:. + (+registerFixedMappings:): new subclassable method. + (_prepareContextClass): the static mappings are now initialized + from the context class themselves, via the use of an unique + invocation of +registerFixedMappings: when the class is + instantiated first. + (+MAPIModuleName): new method that returns the corresponding + module name for parsing or constructing MAPI urls. + (+initialize): wander the list of subclasses and construct a + static dictionary with the help of the new method above for + further user from +contextFromURI:inMemCtx:. This replaces the + static code therein with a more dynamic approach. + (-submitMessageWithMID:andFlags:): implemented method via a + private method derived from + -saveChangesInMessageWithMID:andFlags:, invoking -MAPISubmit on + the resulting object. + (-saveChangesInMessageWithMID:andFlags:) make use of the same + private method as above, invoking -MAPISave on the resulting + object. + + * OpenChange/SOGoTaskObject+MAPIStore.m (-setMAPIProperties:): the + start date must be taken from the 0x811e0040 property rather than + "PR_START_DATE" (contrary to the event properties), we now handle + the due date (0x811f0040) as well as the task "body", set as + comment. + +2010-11-19 Wolfgang Sourdeau + + * OpenChange/MAPIStoreTasksContext.m (-createMessageInFolder:): + implemented method. + + * OpenChange/SOGoTaskObject+MAPIStore.[hm]: new category + module. + (setMAPIProperties:): partially implemented, in order to be able + to create basic tasks. + + * OpenChange/MAPIStoreFreebusyContext.[hm]: new class module for + the "SCHEDULE+ FREE BUSY" public folder (0x70001). + + * OpenChange/MAPIStoreContext.m + (-setPropertiesWithFMID:type:inRow:): renamed to + -setPropertiesWithFMID:ofTableType:inRow:. + (-getProperties:inRow:withMID:type:): renamed to + -getProperties:ofTableType:inRow:withMID:. + + * OpenChange/MAPIStoreContactsContext.m (-createMessageInFolder:): + mark new entry as new. + + * OpenChange/MAPIStoreCalendarContext.m (-createMessageInFolder:): + implemented method. + + * OpenChange/SOGoAppointmentObject+MAPIStore.[hm]: new category + module for SOGoAppointmentObject. + (setMAPIProperties:): partially implemented, in order to be able + to create basic events. + + * OpenChange/MAPIStoreTypes.m: new helper module designed to + handle type conversion between MAPI types and NS types. + + * OpenChange/NSDate+MAPIStore: renamed back to + NSCalendarDate+MAPIStore. + +2010-11-18 Wolfgang Sourdeau + + * OpenChange/MAPIStoreContactsContext.m (-createMessageInFolder:): + implemented method and returns an instance of SOGoContactGCSEntry. + + * OpenChange/SOGoContactGCSEntry+MAPIStore.m: new category module. + (setMAPIProperties:) new method that resets the properties on the + current object and update the corresponding record in the database. + + * OpenChange/MAPIStoreContext.m + (-setPropertiesOfMessage:fromRow:): check the size of the integers + on the build platform to invoke the right constructor of NSNumber. + (-saveChangesInMessageWithMID:andFlags:): implemented method by + looking up the requested object and creating one via "[self + createMessageInFolder:]" if not exist. Afterwards, the MAPI props + previously passed via setProperties.... are commited into the + created/updated SOGo object. + + * OpenChange/MAPIStoreMailContext.m + (-getMessageProperties:inRow:atURL:): moved method into + MAPIStoreContext.m since it's generic enough to apply to all the + stores. + + * OpenChange/MAPIStoreSOGo.m (sogo_create_context): we now make + sure that the MAPIStoreContext class has been loaded. Otherwise we + return MAPISTORE_ERROR. + + * OpenChange/MAPIApplication.m (-init): most of the setup code has + been moved into MAPIStoreSOGo.m. + + * OpenChange/GNUmakefile: the MAPIStoreSOGo library is now just a + wrapper that loads the new "SOGoBackend" bundle from + SoProductRegistry. -2004-12-09 Marcus Mueller + * SoObjects/SOGo/SOGoContentObject.m (-outlookMessageClass): + removed useless method. + +2010-11-17 Wolfgang Sourdeau + + * Tests/Integration/test-davacl.py (DAVPublicAccessTest.setUp): + renamed "init" method to "setUp" to force reinitialization of the + client objects before each test. + +2010-11-16 Wolfgang Sourdeau + + * UI/WebServerResources/generic.js: (onCASRecoverIFrameLoaded): + the ajax recovery request is now performed from a timeout attached + to the window, to make sure it does not reference the iframe + itself. The iframe is removed from a similar timeout, to avoid + reference errors and a continuous spinning wheel after a recovery + request. + +2010-11-15 Francis Lachapelle - * UIxPageFrame.[wox,m]: added -ownerInContext debug info (v0.9.30) + * UI/WebServerResources/MailerUI.js (refreshMailbox): now calls + refreshUnseenCounts so the unseen count is updated when the user + clicks on the "Get Mail" button. -2004-12-08 Marcus Mueller +2010-11-15 Wolfgang Sourdeau - * calendar.css: added styles for others' appointments in - printviews, so they are easy to distinguish (v0.9.29) + * UI/Scheduler/UIxAppointmentEditor.m (-saveAction): check the + equality of componentCalendar and previousCalendar by comparing + their ocsPath, since the objects themselves might be different + instances when the current user has logged in with a different + identifier than his/her uid. - * UIxTabItem.m: changed to use NGLogging (v0.9.28) +2010-11-12 Francis Lachapelle -2004-10-18 Marcus Mueller + * UI/WebServerResources/MailerUI.js (messageFlagCallback): now + remove the message headers from the cache. - * v0.9.27 + * SoObjects/SOGo/SOGoGCSFolder.m + (-folderPropertyValueInCategory:forUser:): new method that allows + to specify the user from which to fetch the settings. - * UIxPageFrame.wox: added Mail, fixed relative URL composition + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-includeInFreeBusy): the verification is now performed on the + calendar owner's settings instead of the activer user's settings. - * UIxPageFrame.m: removed URL processing, instead uses methods from - UIxComponent +2010-11-11 Francis Lachapelle - * *.lproj/default.strings: added label "Mail" + * UI/WebServerResources/MailerUI.js (deleteSelectedMessages): + don't try to delete message(s) when the selected mailbox is not a + folder. + (deleteSelectedMessagesCallback): when automatically selecting the + next message after deletion, invalidate this message header if it + was unread. + (refreshCurrentFolder): don't refresh the selected mailbox if it's + not a folder. -2004-09-20 Helge Hess + * UI/WebServerResources/SOGoDataTable.js (_emptyTable): now removes + references to previously selected rows. - * UIxPageFrame.m: added item ivar (v0.9.26) +2010-11-10 Francis Lachapelle - * UIxPageFrame.wox: improved debugging section (v0.9.25) + * UI/MailerUI/UIxMailEditor.m (-sendAction): the error message (if + any) is now translated in the HTTP response. -2004-09-10 Marcus Mueller + * SoObjects/SOGo/SOGoMailer.m + (:_smtpSendData:toRecipients:sender:): added exception handling + when the smtp server is not accessible. - * uix.css: new button_submit style for the Anais selector, looks - similar to the mozilla submit button now (v0.9.24) + * UI/WebServerResources/MailerUI.js (openMailbox): improved + behavior when reloading the mailbox. + (onMenuEmptyTrashCallback): new callback exclusive to the "empty + trash" menu option; it deletes the cached data source and refresh + the current folder instead of jumping to the inbox. -2004-09-09 Marcus Mueller +2010-11-08 Ludovic Marcotte - * UIxPageFrame.wox: display clientObject and object traversal stack - if isUIxDebugEnabled is set (v0.9.23) + * SOPE/GDLContentStore/GCSAlarmsFolder.m + We now check for non-nil values before calling + -timeInterval... + * SoObjects/Mailer/SOGoMailAccount.m + We try to fallback to the imap server prior falling + back to localhost -2004-09-01 Helge Hess +2010-11-08 Francis Lachapelle - * GNUmakefile.preamble: removed dependency on libNGScripting (v0.9.22) + * UI/WebServerResources/SOGoDragHandles.js (adjust): for vertical + drag handles, prioritize the top limit rather than the bottom one. -2004-08-27 Marcus Mueller + * UI/WebServerResources/UIxContactEditor.js (onComboButtonClick): + return false so the form is not submitted when the button is clicked. - * v0.9.21 + * UI/WebServerResources/ContactsUI.js + (onCategoriesMenuPrepareVisibility): don't verify the selection if + the list doesn't exist (happens in the contact editor). - * English.lproj/default.strings, French.lproj/default.strings: - dictionaries for labels +2010-11-05 Wolfgang Sourdeau - * UIxPageFrame.wox, UIxAppNavView.wox: replaced constant strings with - labels + * OpenChange/MAPIStoreSOGo.m: added debugging witnesses call to + each method. -2004-08-27 Helge Hess + * OpenChange/MAPIStoreContext.m: added a private category to NSObject. + (+[NSObject objectFromSPropValue:]) new generic constructor for + converting mapi types to NS* types. + (-init): added a new "messages" NSMutableDictionary ivar for + storing messages in constructions. + (-createMessageWithMID:inFID:): implemented method by registering + a new message object in "messages". + (-setPropertiesWithFMID:type:inRow:): implemented the message part + of the method by resolving the message passed as parameter and + passing it to the new setPropertiesOfMessage:fromRow: method. + (-setPropertiesOfMessage:fromRow:): new method that wanders in the + property array of the aRow parameter, converts each member via + +[NSObject objectFromSPropValue:] and stores the result in the + message passed as parameter. - * started UIxSortButton (v0.9.20) + * OpenChange/NSDate+MAPIStore.[hm]: this module now implements a + category for NSDate rather than NSCalendarDate. + (+dateFromFileTime): new method that returns an NSDate from a + struct FILETIME - * v0.9.19 + * SoObjects/Appointments/SOGoAptMailReceipt.m (-getSubject) + (-getBody): invoked setupValues if values is nil to ensure that + the timezone has been set properly. - * UIxPageFrame.wox: navigation below the line, app selection above +2010-11-05 Francis Lachapelle - * uix.css: make 'defaultfont' a generic class + * UI/MailerUI/UIxMailListActions.m (-getSortedUIDsAction): now + accepts the form parameter "no_headers" so only the UIDs are + returned, without the prefetched headers. - * UIxPageFrame.wox: added top-level menu with links for Calendar and - Contacts (v0.9.18) + * UI/WebServerResources/SOGoMailDataSource.js (init): made the + headers argument optional. + (_loadCallback): handled the case when the server doesn't send the + prefetched headers. - * removed old components (UIxAppFrame, Header and Navigation) (v0.9.17) + * UI/WebServerResources/SOGoDataTable.js (_refresh): new method to + force the refresh of the data table with the data of the data source. + (remove): don't update the internal variables (index and count) if + the UID was not found in the data source. -2004-08-24 Maxime Wacker + * UI/WebServerResources/MailerUI.js (openMailbox): when reloading + a mailbox, only fetch the messages UIDs (without the headers). + (loadMessageCallback): only reload the headers if the seen state + has changed. - * GNUmakefile.preamble: fixes for the build process (v0.9.16) +2010-11-04 Ludovic Marcotte -2004-08-16 Marcus Mueller + SoObjects/SOGo/SOGoMailer.m + We stop when we see an invalid recipient and we inform the + client back with what are the invalid recipients - * calendar.css: additional css for Anais uids (v0.9.15) +2010-11-04 Wolfgang Sourdeau - * calendar.css: additional css for other appointments (v0.9.14) + * Tools/SOGoSockDOperation.m (_getFolderWithId:forUser:): invoke + -[SOGoParentFolder lookupPersonalFolder:ignoringRights:] directly, + in order to avoid a useless permission check. -2004-08-14 Marcus Mueller +2010-11-03 Francis Lachapelle - * UIxPageFrame.m: -title returns label for "OpenGroupware.org" when - -isUIxDebugEnabled is NO. (v0.9.13) + * UI/WebServerResources/SOGoDataTable.js (remove): we must + decrement the value of renderedIndex when the row removed is + before the first rendered row. We also call deselect in order to + update the internal array of selected rows IDs. + (refresh): new method to force the recomputation of the top and + bottom padding rows of the table. -2004-08-12 Marcus Mueller +2010-11-03 Wolfgang Sourdeau - * UIxPageFrame.wox: removed left side navigation completely as it - currently doesn't make too much sense and contrasts with the - user interface layout which already has been agreed about (v0.9.12) + * Tests/Integration/teststrings.sh: new utility script to test the + parsability of the localization strings file. -2004-08-12 Marcus Mueller + * UI/WebServerResources/generic.js: (onCASRecoverIFrameLoaded): + go back to the user's page instead of the logoff page. - * UIxWinClose.wox: removed rendering of (X) on Laurent's request - (v0.9.11) +2010-11-02 Ludovic Marcotte -2004-08-11 Marcus Mueller + * Implemented http://sogo.nu/bugs/view.php?id=821 - * UIxPageFrame subclasses from UIxComponent now, removed -SoUser - because it's now in UIxComponent. (v0.9.10) +2010-11-02 Wolfgang Sourdeau -2004-08-11 Marcus Mueller + * SoObjects/SOGo/NSDictionary+BSJSONAdditions.[hm]: + SoObjects/SOGo/NSScanner+BSJSONAdditions.[hm]: removed classes, + obsoleted by the use of the SBJson library. - * UIxPageFrame.wox, UIxAppNavView.m: added labels (v0.9.9) +2010-11-01 Francis Lachapelle -2004-08-11 + * UI/WebServerResources/MailerUI.js (mailListToggleMessagesRead): + we now accepts an element as argument to directly set a message as + read or unread. Also fix the bug of marking multiple messages. + (mailListToggleMessagesFlagged): idem. + (messageListCallback): no more observers are registered on the + rows and cells. All events are delegated to the table. + (onMessageSelectionChange): implemented event delegation on the + table. + (configureMessageListEvents): idem. - * UIxPageFrame: minor fixes to UI (v0.9.8) + * UI/WebServerResources/generic.js (onRowClick): we now accepts an + element as argument, bypassing the event's target element and the + event listener. + + * UI/MailerUI/UIxMailListActions.m (-messageSubject): we now + escape HTML tags in the returned string. + +2010-11-01 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAptMailUpdate.m (-setupValues): avoid + setting values that are already set in SOGoAptMailNotification. -2004-08-05 Marcus Mueller + * SoObjects/Appointments/SOGoAptMailDeletion.m (-getBody): added + the same details as for the meeting invitations. - * calendar.css: commented some styles out, because they don't really do - what I think they should do. Someone with better knowledge of CSS - should look into this. (v0.9.7) + * SoObjects/Appointments/SOGoAptMailNotification.m (-setupValues): + merged setup code from SOGoAptMailInvitation.m. -2004-08-02 Marcus Mueller + * UI/WebServerResources/ContactsUI.js: (resetCategoriesMenu) + (onCategoriesMenuPrepareVisibility, onCategoriesMenuItemClick) + (setCategoryOnNode, unsetCategoryOnNode): new methods designed to + handle the handling of categories directly from the contacts list. - * v0.9.6 + * SoObjects/Contacts/SOGoContactGCSFolder.m (+initialize): we now + return the "c_categories" field too. - * UIxPageFrame.wox: added javascript for onload action, some cosmetics + * UI/Contacts/UIxContactActions.m: new class module implementing + actions on contacts. + (-setCategoryAction, -unsetCategoryAction): new actions. - * calendar.css: added remaining CSS for printviews + * UI/WebServerResources/generic.js (triggerAjaxRequest): invoke + the request callback only when set on the http object. -2004-08-02 Marcus Mueller + * SoObjects/Mailer/SOGoMailBaseObject.m (-_createIMAP4Connection): + we need to initialize newConnection to nil when the return + password is nil. - * UIxPageFrame.wox: removed some navigation items to avoid confusion. - Also applied some pretty printing. (v0.9.5) +2010-10-28 Francis Lachapelle -2004-07-30 Marcus Mueller + * SoObjects/Mailer/SOGoDraftObject.m + (-mimeHeaderMapWithHeaders:excluding:): added the X-Forward header + with the user's IP address, if available and not equal to 'localhost'. - * v0.9.4 +2010-10-28 Wolfgang Sourdeau - * calendar.css: added CSS for printviews + * SoObjects/Appointments/SOGoAppointmentFolders.m + (-_migrateWebCalendarsSettings): fixed a bug where the active + user's login name would be used as comparison prefix, leading to a + corrupted and very long calendar key. Added code to migrate those + previously corrupted keys to their proper form. - * UIxPrintPageFrame.[wox|m]: new wrapper component for all views that - require printing. +2010-10-27 Wolfgang Sourdeau -2004-07-28 Marcus Mueller + * UI/Contacts/UIxContactView.m (-categories): new accessor for + displaying card categories. - * calendar.css: added CSS for weekcolumnsview (v0.9.3) + * UI/WebServerResources/UIxContactEditor.js: (onComboButtonClick): + take the container's scrollTop into account when displaying the + combobox menu. -2004-07-27 Marcus Mueller +2010-10-26 Wolfgang Sourdeau - * v0.9.2 + * SoObjects/Contacts/SOGoContactSourceFolder.m + (-lookupContactsWithFilter:onCriteria:sortBy:ordering:): added the + handling of the new "criteria" parameter, returning an empty set + if no known one has been passed. - * UIxPageFrame.m: added convenience methods to access specific parts - of the URL. + * SoObjects/Contacts/SOGoContactGCSFolder.m + (-lookupContactsWithFilter:onCriteria:sortBy:ordering:): added the + handling of the new "criteria" parameter, returning an empty set + if no known one has been passed. - * UIxPageFrame.wox: fixed navigation URLs. Inserted references to - rootURL where no content is currently available. + * OGoContentStore/OCSContactFieldExtractor.m + (-extractQuickFieldsFromVCard:): we now extract the list of + categories from the vcard. - * UIxAppNavView.m: enhanced construction of navigation url path. + * UI/WebServerResources/UIxPreferences.js: added code to handle + the new "Contacts Options" tab, in particular the contacts + categories. -2004-07-26 Marcus Mueller + * UI/PreferencesUI/UIxPreferences.m (-languageCategories): renamed + to "_languageCalendarCategories" as it is a private method. The + dictionary key has also been renamed to + "calendar_category_labels" since we now handle contact categories + too. + (-calendarCategoriesValue, -setCalendarCategoriesValue:): renamed + from "categories" method. + (-contactsCategoryList, -contactsCategoriesValue) + (-setContactsCategoriesValue:): new methods for handling contacts + categories in the preferences. Transfers are in JSON. - * calendar.css: added styles for dayoverview's content. + * UI/WebServerResources/UIxContactEditor.js: (saveCategories) + (appendCategoryInput, onComboButtonClick, onCategoryInputChange) + (onCategoryInputFocus, regenerateCategoriesMenu) + (onCategoryMenuEntryClick, onEmptyCategoryClick) new methods added + for handling the contact categories. -2004-07-23 Marcus Mueller + * UI/Contacts/UIxContactEditor.m (-dealloc): release + addressBookItem, item, componentAddressBook and contactCategories + ivars. + (-setContactCategories, -contactCategories): new accessors for + getting/setting the contact vcard categories. Transfers are made + in JSON. + (-contactCategoriesList): new accessor to return the list of + categories defined in the preferences, combined with the list of + those found int the contact. - * calendar.css: added styles for dayoverview's calendar. + * SoObjects/SOGo/NSArray+Utilities.m (-mergedArrayWithArray:): new + method that returns the contact of the current array merged with + a unique copy of the objects of the array passed as parameter. + + * SoObjects/SOGo/SOGoUserDefaults.m (-{set}ContactsCategories): + renamed version of the "contactCategories" accessors. + + * SoObjects/SOGo/NSString+Utilities.m (-objectFromJSONString): new + method replacing the one below in a more generic way. I.e. the + method will accept any JSON object as input and not only + dictionaries. + + * SoObjects/SOGo/NSDictionary+BSJSONAdditions.m + (+dictionaryWithJSONString:): removed method, replaced with + the more generic -[NSString objectFromJSONString] in + NSString+Utilities. + +2010-10-25 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUserDefaults.m (-setContactCategories) + (-contactCategories): new accessors for the + "SOGoContactCategories" user default. Accept/return an array of + strings. + + * SoObjects/Contacts/SOGoContactFolders.m + (-setDavContactCategories, -davContactCategories): new accessors + for the new + "{urn:ietf:params:xml:ns:inverse-dav}contact-categories" custom + property. Make use of the new methods above. + +2010-10-25 Francis Lachapelle + + * UI/Contacts/UIxContactFolderActions.m (-importLdifData:): use + lowercase keys for the contact dictionary. + +2010-10-21 Ludovic Marcotte + + * Changes required for http://sogo.nu/bugs/view.php?id=795 + +2010-10-19 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoContentObject.m (-davContentLength): fixed a + potential crash (see http://www.sogo.nu/bugs/view.php?id=915) by + evaluating the length differently. + +2010-10-15 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalListingActions.m (_fixDates:): restored + deleted code, see explanation in the code. + +2010-10-15 Ludovic Marcotte + + * SoObjects/SOGo/SOGoGCSFolder.m - remove the ACL cache + and moved it to SOGoCache with memcached support. Also + modified _setDisplayNameFromRow: to NOT use SOGoUser + instances and it is _very costly_ to do so. + * SoObjects/SOGo/SOGoCache.{h,m} - added support for + caching ACLs locally and in memcached + +2010-10-15 Wolfgang Sourdeau + + * OpenChange/MAPIStoreContext.m (-getPath:ofFMID:withTableType:): + returns a found path IIF the fmid matches the current context. + Print an error message when the cause of mismatch is the lack of + sync with the indexing file. + (-getFoldersList:withFMDI:): returns a list IIF the FMID matches + the current context. + + * OpenChange/MAPIStoreMapping.m (+sharedMapping): singleton + constructor. + +2010-10-14 Wolfgang Sourdeau + + * UI/WebServerResources/generic.js: (triggerAjaxRequest): save the + content in the request object in the case a retry is needed. + (onCASRecoverIFrameLoaded): on the first retry, the content + parameter is passed back to "triggerAjaxRequest". + + * OpenChange/MAPIStoreMailContext.m + (-getMessageProperties:inRow:atURL:): new method. + (-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:): + added responses for PR_BODY, PR_HTML and fake responses for + PR_RTF_COMPRESSED, PR_RTF_IN_SYNC. + + * OpenChange/NSData+MAPIStore.m: new category module. + (-asBinaryInMemCtx:): new method returning a struct Binary_r. + + * OpenChange/MAPIStoreMailContext.m (-openMessage:atURL:): basic + implementation returning the "to" recipients only and a few + unchecked tags. + + * OpenChange/MAPIStoreContext.m (-openMessage:withMID:inFID:): + implemented method by resolving the url corresponding to the MID + and transferring the call to the new subclassable + "openMessage:atURL:" method. + (-openMessage:atURL:): new subclassable method. + (-createMessageWithMID:inFID:) + (-saveChangesInMessageWithMID:andFlags:): + (-submitMessageWithMID:andFlags:): + (-getProperties:inRow:withMID:type:): + (-getFID:byName:inParentFID:) + (-setPropertiesWithMID:type:inRow:) + (-deleteMessageWithMID:withFlags:): return MAPISTORE_ERROR for + those unimplemented methods. + (-getMessageProperties:inRow:atURL:): new subclassable method. + +2010-10-14 Francis Lachapelle + + * UI/WebServerResources/MailerUI.js (updateUnseenCount): used the + method charAt to read a string character instead of accessing it + as an array (was not supported by IE). + (saveAs): fixed a selection bug where only the first message would + be saved. + + * UI/WebServerResources/UIxAttendeesEditor.js + (performSearchCallback): improved autocompletion when changing + field before completion has returned. + + * UI/WebServerResources/UIxMailToSelection.js (fancyAddRow): when + using IE, the input element is now removed and created when cloning + a row. Also convert the onFocus and onBlur attributes to + JavaScript calls. + +2010-10-13 Wolfgang Sourdeau + + * OpenChange/MAPIStoreMapping.m (-registerURL:): commented method out. + (-_setupFixedMapping): new method that registers well-known ids + with well-known urls. + + * OpenChange/MAPIStoreContext.m (+contextFromURI:): no longer + register the URI mapping since the basic ones are always + registered. + (-setURI:andMemCtx:): new method, + replacing setMemCtx, which also stores the context uri in the new + "uri" ivar. + (-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:) + added assertions for context id searches. Make the context id + search without the "sogo://" prefix. + Added missing "break" statement, leading PR_FID to get the value + of PR_MID. + (-parentFID): simply returns fid... + (-getPath:ofFMID:withTableType:): implemented. + (-getFoldersList:withFMID:): new temporary store method, + implemented. + + * OpenChange/NSArray+MAPIStore.m: new category module. + (-asFoldersListInCtx:): new method returning a properly populated + "struct struct indexing_folders_list *" from an array of fids. + + * SoObjects/Mailer/SOGoMailNamespace.m (-toOneRelationshipKeys): + removed method since it seems that certain servers allow messages + to be put in certain "namespace folders" (like Courier IMAP). + + * SoObjects/Mailer/SOGoMailBaseObject.m (-imap4Connection): split + initialization of the connection is the new + "_createIMAP4Connection" method, make use of the cache below. + + * SoObjects/SOGo/SOGoCache.m (-registerIMAP4Connection:forKey:) + (-imap4ConnectionForKey:): new accessors that enabling the + per-request caching of IMAP4 connections, in a valid state or not. + +2010-10-13 Francis Lachapelle + + * SoObjects/SOGo/LDAPSource.m (_qualifierForUIDFilter:): removed + duplicated constraints in the filter when using bind fields. + + * UI/WebServerResources/HTMLElement.js (deselectAll): fixed a bug + where the properties where not removed from the proper element + (table instead of the tbody). + + * UI/Scheduler/NSArray+Scheduler.h: added index constants for + events fields. + (compareEventsCalendarNameAscending): new method to sort by + calendar name. + + * UI/Scheduler/UIxCalListingActions.m: now uses the above + mentioned constants. + (+initialize): added calendar name to events fields. + (eventsListAction): added sort by calendar name. + + * UI/WebServerResources/SchedulerUI.js (eventsListCallback): added + calendar name column. + (onCalendarSelectEvent): improved list selection. + +2010-10-12 Wolfgang Sourdeau + + * OpenChange/MAPIStoreContext.m (-setMemCtx): argument is now of + type "struct mapistore_context *". The new ldbCtx ivar is + iinitialized from here. + (-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:): + added support for PR_MESSAGE_CODEPAGE, PR_MESSAGE_LOCALE_ID, + PR_MESSAGE_FLAGS, PR_MESSAGE_SIZE, PR_MSG_STATUS, + PR_SUBJECT_PREFIX_UNICODE, PR_IMPORTANCE, PR_PRIORITY, + PR_SENSITIVITY. + Add registration of unregistered MID to ldb. + (-getFolderTableChildproperty:atURL:withTag:inFolder:withFID:): + Add registration of unregistered FID to ldb. + + * OpenChange/MAPIStoreCalendarContext.m: added support for case + PR_CREATION_TIME. + + * Scripts/cas-proxy-validate.py: new script that resolve + reentrancy issues occurring when using SOGo in CAS mode, when SOGo + requests a PGT from the CAS server. + +2010-10-11 Wolfgang Sourdeau + + * UI/WebServerResources/UIxAttendeesEditor.js: + (performSearchCallback): same as below. + + * UI/WebServerResources/SOGoAutoCompletion.js: + (SOGoAutoCompletionInterface.performSearchCallback): when the + match string is not found in "completeEmail" (due to a match with a + non-displayed attribute), don't put emphasize anything + graphically. + + * UI/WebServerResources/ContactsUI.js: + (onToolbarWriteToSelectedContacts): display an error message when + no contact is selected rather than composing a new message. Fixed + the method to only have one return point. + + * UI/WebServerResources/generic.js: (triggerAjaxRequest): added an + optional "attempt" argument that enables counting the number of + invocations for an ajax request. + (onCASRecoveryIFrameLoaded): don't repeat a failed request more + than once. + + * UI/WebServerResources/HTMLElement.js: + (Element.getSelectedNodesId): if the element has not + "selectedIds", set "selArray" to an empty array before checking + the "selectedElements" attribute. This enables the caller to not + check for a "null" return value. + +2010-10-08 Francis Lachapelle + + * UI/WebServerResources/generic.js (showConfirmDialog) + (showPromptDialog): keys for cached dialogs are now build from a + combination of the dialog title and label to avoid collisions. + + * UI/WebServerResources/SchedulerUI.js + (deleteEventFromViewCancel): new function loaded if the user + cancel the deletion of an event. It clears the array of events to + delete. + (onCalendarSelectEvent): don't clear the selection if the + contextual menu is going to appear. + + * UI/WebServerResources/ContactsUI.js (onDocumentKeydown): + improved character key identification to fix a bug with some + browsers. + + * UI/WebServerResources/MailerUI.js (onDocumentKeydown): idem. + + * UI/WebServerResources/SchedulerUI.js (onDocumentKeydown): idem. + +2010-10-08 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalDateSelector.m (-viewTimeZone): restored + accessor, required for the proper display of the minimonth. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-removeFolderSettings:withReference:): new method which removes + the settings for keys "FreeBusyExclusions", "FolderColors", + "FolderShowAlarms", "FolderShowTasks", "InactiveFolders", + "FolderSyncTags" and "FolderSynchronize". Code taken from + -[SOGoGCSFolder subscribeUser:reallyDo:]. + + * SoObjects/SOGo/SOGoGCSFolder.m + (-removeFolderSettings:withReference:): new overridable method + which enables the removal of user settings pertaining to a folder + and its type when deleting the folder or unsubscribing from it. + This implementation removes the folder reference from the + "FolderDisplayNames" key. + (-delete): make use of the new method above. + + * UI/WebServerResources/ContactsUI.js: (setEventsOnAddressBook) + enable the "dblclick" event on non-owned addressbooks, except the + public ones (owned by "nobody") + (onAddressBookModify): enable the renaming of non-owned + addressbooks, except the public ones -2004-07-22 Marcus Mueller +2010-10-06 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUser.m (-_appendSystemMailAccount): check + that -[url scheme] and -[url query] are not null before the + comparison, since nil == 0 == NSOrderedSame.... - * calendar.css: complete style for 'yearoverview' and fixed style in - 'monthoverview'. + * OpenChange/MAPIStoreContext.m: + (-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:) + added response for PR_ROW_TYPE (always 1) and PR_DEPTH (always 0). + (MAPIBoolValue, MAPILongValue, MAPILongLongValue): new helpers for + talloc'd C values. -2004-07-16 Helge Hess +2010-10-05 Wolfgang Sourdeau - * UIxAppNavView.m: some fixes to navigation URLs + * OpenChange/MAPIStoreTasksContext.m + (-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:) + implemented the following properties: PR_SUBJECT_UNICODE, + PR_NORMALIZED_SUBJECT_UNICODE, PR_CONVERSATION_TOPIC_UNICODE, + 0x8124000b, 0x81250040, PR_CREATION_TIME, + PR_MESSAGE_DELIVERY_TIME, PR_CLIENT_SUBMIT_TIME, + PR_LOCAL_COMMIT_TIME, PR_LAST_MODIFICATION_TIME, 0x81200003 as + well as stubs for 0x68340003, 0x683a0003, 0x68410003. - * UIxAppNavView.wox: fixed indention +2010-10-01 Wolfgang Sourdeau - * product.plist: properly export uix.css as a public resource + * OpenChange/MAPIStoreTasksContext.[hm]: new mapi context class + for tasks. -2004-07-01 Helge Hess + * OpenChange/SOGoGCSFolder+MAPIStore.m (-componentKeysWithType:): + new method that return the keys of components corresponding to the + type passed as parameter. - * UIxTabView.m: removed JavaScript and the involved access of -session + * OpenChange/SOGoGCSFolder+MAPIStore.[hm]: new category module. -2004-06-30 Helge Hess + * OpenChange/MAPIStoreContext.m (-lookupObject): return nil when + the parsed URL is nil. + (-getFolderMessageKeys:): new subclass method designed to return + the appropriate "message" keys depending on the folder type. - * product.plist: make categories on SOGoObject instead of SxFolder + * SoObjects/SOGo/SOGoObject.m (-displayName): new accessor. - * GNUmakefile: patches for different build/runtime environment +2010-09-30 Wolfgang Sourdeau - * created ChangeLog -2005-08-01 Helge Hess + * UI/WebServerResources/UIxContactsUserFolders.js: + (onConfirmFolderSelection): fixed the regexp used when sanitizing + a username containing a user info field. - * added FHS installation (v0.9.36) + * SoObjects/Mailer/SOGoMailAccount.m (-identities): the account + identities are now kept in an ivar until the account object is + released. Moreoever, we invoke the new + "_appendDelegatorIdentities" method when the account + nameInContainer is "0". + (-_appendDelegatorIdentities): new method that appends the mail + values of all delegators for the owner user. -2005-07-30 Helge Hess + * UI/WebServerResources/MailerUI.js: (onMenuAccountDelegation): + new menu action for showing the new dialog below. + (onAccountIconMenuPrepareVisibility): new setup function. - * SOGoDateFormatter.m: hardened against nil arguments (v0.9.35) + * UI/MailerUI/UIxMailAccountActions.m (-addDelegateAction) + (-removeDelegation): new action methods. -2005-07-21 Marcus Mueller + * SoObjects/Mailer/SOGoUser+Mailer.m: new category module. + (mailDelegators, addMailDelegator, removeMailDelegator): new + accessors. - * UIxComponent.m: changed -userFolderPath to generate the path to the - activeUser, _NOT_ the owner (v0.9.34) + * UI/MailerUI/UIxMailUserDelegationEditor.m: new window for + choosing account delegates -2005-07-20 Helge Hess + * UI/WebServerResources/UIxMailUserDelegationEditor.js: new page + file, derived from UIxAclEditor.js. - * UIxComponent.m: added fragile base class check (v0.9.33) + * SoObjects/SOGo/NSDictionary+BSJSONAdditions.m + (+[NSMutableDictionary dictionaryWithJSONString:]): return nil + directly if the json string is empty. -2005-07-20 Marcus Mueller +2010-09-28 Wolfgang Sourdeau - * UIxComponent.m: changed language lookup to meet the status quo - (v0.9.32) + * SoObjects/SOGo/SOGoUser.m (-_appendSystemMailAccount): cleaned + up method by using NSNumber as class for port and removing useless + tests on nil values. -2005-07-18 Helge Hess + * UI/MailerUI/UIxMailFolderActions.m (-createFolderAction): + modified to make use of -[SOGoMailFolder create]. - * UIxComponent.m: minor code reorgs (v0.9.31) + * SoObjects/Mailer/SOGoMailObject.m (-displayName): new accessor. -2005-07-18 Marcus Mueller + * SoObjects/Mailer/SOGoMailFolder.m (-displayName): fixed accessor + to return the real folder name rather than the nameInContainer, + which is escaped and prefixed with "folder". + (-create): new method intented to align the operations on this + class to the ones in SOGoGCSFolder. - * SOGoAptFormatter.[hm]: added -titlePlaceholder API for properly - formatting appointments without titles (v0.9.30) + * SoObjects/Contacts/SOGoContactGCSEntry.m (-displayName): new + accessor. -2005-07-13 Marcus Mueller +2010-09-24 Ludovic Marcotte - * WOContext+UIx.[hm]: new category to WOContext, currently provides - -isUIxDebugEnabled (v0.9.29) + * Added caching support for LDAP-based groups + * SoObjects/SOGo/LDAPSource.m + Improved SafeLDAPCriteria() to properly escape '%' + * Dropped lots of unnecessary and worthless files -2005-07-08 Marcus Mueller +2010-09-22 Francis Lachapelle - * UIxComponent.m: moved -isAccessRestricted method to - UIxComponent+Agenor (v0.9.28) + * UI/WebServerResources/ContactsUI.js + (onToolbarDeleteSelectedContacts): delete the selected addressbook + if no contact is selected. Also checked if rows is defined + otherwise it would cause an error with Safari. -2005-07-07 Marcus Mueller +2010-09-20 Ludovic Marcotte - * v0.9.27 - - * UIxComponent.m: implicitly set the context's queryPathSeperator - when generating URIs used in redirects + * SoObjects/SOGo/SOGoGCSFolder.m + (+folderWithSubscriptionReference:inContainer:) + We now consider the localIsSubscription when + building the folderName - * v0.9.26 +2010-09-20 Francis Lachapelle - * UIxComponent.m: added method -isAccessRestricted to indicate whether - certain options might have to be disabled due to restrictions - set by the customer + * SoObjects/SOGo/SOGoContentObject.m (-davContentLength): use UTF8 + encoding instead of latin1. -2005-07-06 Helge Hess + * UI/WebServerResources/MailerUI.js (deleteWithoutTrash): new + function used when the messages can't be copied to the trash + folder (usually because the user's mailbox is overquota). - * UIxComponent.m: added method -isInvokedBySafeMethod to check whether - the current HTTP method is a safe one (eg HEAD/GET) (v0.9.25) + * UI/WebServerResources/generic.js (showConfirmDialog): added new + argument variable to overwrite the default callback when user + clicks on the "No" button. -2005-07-05 Marcus Mueller + * SoObjects/Mailer/SOGoMailFolder.m + (-deleteUIDs:useTrashFolder:inContext:): new "useTrashFolder" + argument variable that avoids moving the messages to the trash is + set to YES. - * SOGoAptFormatter.[hm]: new API. -stringForObjectValue: is deprecated - now and should not be used anymore. Formatting needs a referenceDate - in order to properly display time ranges. Time ranges are currently - rendered in SOGoAptFormatter, but this should probably be delegated - to a natural language aware auxiliary (date-)formatter. Also, some - new formatting options have been introduced. (v0.9.24) + * UI/MailerUI/UIxMailFolderActions.m (-batchDeleteAction): now + accepts a new form variable, "withoutTrash". -2005-01-26 Marcus Mueller +2010-09-20 Wolfgang Sourdeau - * SOGoDateFormatter.[hm]: new method -setFrenchDateFormat: to override - the default ISO format. This will be chosen depending on locale - automatically. The full description uses this setting when generating - the appropriate part of the description. (v0.9.23) + * SoObjects/SOGo/LDAPSource.m (-_searchAttributes): added + "IDField" to the search attributes for constructing addressbook + entries with a valid "c_name". -2004-12-17 Marcus Mueller + * Tests/Integration/test-davacl.py + (DAVCalendarPublicAclTest.testCollectionAccessNormalUser): make + use of the fix below when removing the rights for the subscriber + user. - * SOGoAptFormatter.m: remove "appointment" prefix from tooltips - (v0.9.22) + * Tests/Integration/utilities.py (TestACLUtility.setupRights): + when "rights" is None or unspecified, the user is now deleted from + the access list. This enable default roles to take place for the + specified user, which is different from simply removing all its + rights. -2004-12-13 Marcus Mueller +2010-09-17 Wolfgang Sourdeau - * SOGoAptFormatter.[hm]: new option for formatter (v0.9.21) + * Main/SOGo+DAV.m (-davComplianceClassesInContext:): new method to + declares DAV capabilities. - * SOGoAptFormatter.[hm]: added ability to set custom title for private - appointments. (v0.9.20) +2010-09-17 Francis Lachapelle -2004-12-10 Marcus Mueller + * SoObjects/SOGo/SOGoGCSFolder.m (-renameTo:): don't act as the + owner of the folder when user is a superuser. + (-_realAclsForUser:forObjectAtPath:): don't ignore "None" access + right in order to avoid rollbacking to default roles for the + calendar module (SOGoCalendarDefaultRoles) when the user has + specifically no rights. - * SOGoAptFormatter.[hm]: added formatting for private apts, additional - cleanup (v0.9.19) +2010-09-14 Ludovic Marcotte -2004-12-08 Marcus Mueller + * SoObjects/Appointments/SOGoUserFolder+Appointments.m + (_davSpecialCalendarURLWithName:): we do not return + the schedule-inbox-URL if the CAL is iCal and + the owner isn't the current user - * UIxComponent.m: changed to use NGLogging (v0.9.18) +2010-09-14 Wolfgang Sourdeau -2004-10-22 Marcus Mueller + * UI/Common/UIxPageFrame.m (-systemAdditionalJSFiles): new web + accessor for the new method below. - * UIxComponent.m: rewrote handling of queryParameters, these get - constructed lazily now (v0.9.17) + * SoObjects/SOGo/SOGoDomainDefaults.m (-additionalJSFiles): new + accessor for the new "SOGoUIAdditionalJSFiles" user default. -2004-10-20 Marcus Mueller +2010-09-13 Ludovic Marcotte - * SOGoJSStringFormatter.[hm]: new formatter to properly escape certain - strings passed to JavaScript (v0.9.16) - -2004-10-18 Marcus Mueller + * Updated Ukrainian translation - patch from + Oleksa Stasevych + * Updated Italian translation - patch from + Alessio Fattorini (alessio.fattorini@nethesis.it) - * UIxComponent.m: changed the implementation of -ownPath and fixed a - bug in -userFolderPath (v0.9.15) +2010-09-09 Ludovic Marcotte -2004-10-12 Marcus Mueller + * Main/NSException+Stacktrace.m - reworked entirely + so we use the backtrace() function to generate an + interesting backtrace when an exception is raised - * UIxComponent.m: added some helper methods for computing relative - paths within the application (v0.9.14) +2010-09-02 Wolfgang Sourdeau -2004-09-26 Helge Hess + * UI/WebServerResources/generic.js: (recoverRequest): removed + obsolete function. + (onAjaxRequestStateChange): when a recovery request is required, + we now use the new "createCASRecoveryIFrame" function and the + "onCASRecoverIFrameLoaded" to handle the request. - * UIxComponent.m: minor code cleanups (v0.9.13) + * UI/MainUI/SOGoUserHomePage.m (-recoverAction): new method, + returning a simple text-based response with HTTP code 200, + ensuring that the CAS authentication process has succeeded. -2004-09-25 Helge Hess + * UI/MainUI/SOGoRootPage.m (-recoverAction): removed method. - * v0.9.12 +2010-09-02 Francis Lachapelle - * GNUmakefile.preamble: fixed library dependencies (used wrong project - name) + * UI/WebServerResources/generic.js (openMailTo): replaced calls to + encodeURI by encodeURIComponent to make sure symbols such as '?' + and '&' are encoded. - * SOGoAptFormatter.m: minor code cleanups, fixed issue on MacOSX + * SoObjects/SOGo/NSDictionary+URL.m (-asURLParameters): escaped + keys and values using [NSString+misc stringByEscapingURL] from SOPE. -2004-08-26 Helge Hess +2010-09-02 Wolfgang Sourdeau - * v0.9.11 + * UI/Contacts/UIxContactFoldersView.m (-allContactSearchAction): + inverted the contact/list condition test as the vlist test is + faster to execute. - * SOGoDateFormatter.m: minor cleanups + * UI/MailerUI/UIxMailView.m (_receiptMessageHeaderTo:): properly + escape the message subject in QP when needed. - * UIxComponent.m: fixed includes to fix warnings + * UI/WebServerResources/UIxMailEditor.js: + (onMenuCheckReturnReceipt): the function has an event parameter + which we need. This fixes an exception occurring when clicking the + "Options" menu. - * added common.h +2010-09-01 Wolfgang Sourdeau -2004-08-24 Marcus Mueller + * Tests/Unit/SOGoTest.m (-run): fixed build on GNUstep >= 1.20. - * UIxComponent.m: new date related methods moved here from UIxCalView - (v0.9.10) + * UI/MailerUI/UIxMailView.m (-sendMDNAction): new action for + sending an MDN from the confirmation dialog. -2004-08-14 Marcus Mueller + * UI/WebServerResources/MailerUI.js: (handleReturnReceipt): new + function, crafted to be executed both from the main window and the + popup mail window, where the value of the new "shouldAskReceipt" + field is evaluated and where a popup is displayed accordingly. + (onMessageConfirmMDN): new callback function for dialog mentionned + above. - * UIxComponent.m: new method -isUIxDebugEnabled, triggered by new - default "SOGoUIxDebugEnabled" (v0.9.9) + * UI/WebServerResources/JavascriptAPIExtensions.js: + (String.prototype.cssIdToHungarianId) new helper method that + compose the hungarian representation from an identifier where the + parts are separated with a dash, such as css class and id + identifiers. -2004-08-13 Marcus Mueller + * UI/WebServerResources/UIxPreferences.js: added code for handling + prefs pertaining to return receipts. - * v0.9.8 + * UI/MailerUI/UIxMailView.m (-shouldAskReceipt): new accessor that + returns a JS bool string when the current message satisfy the + conditions required for asking the user whether to send a receipt + or not. Additionally, it will send the receipt automatically if + the message category falls in a category where the unconditonnal + send is required as per the user preferences. If "ask" or "always" + is the returned value, the "$MDNSend" flag is automatically set on + the IMAP message, since we want to avoid asking the user twice. - * SOGoAptFormatter.[hm]: added new formatter for appointments. + * UI/PreferencesUI/UIxPreferences.m + (-_extractMainReceiptsPreferences:): new method for extracting + prefs pertaining to return receipts and save them in the user + prefs dictionary. + + * SoObjects/SOGo/SOGoUserDefaults.m (-setAllowUserReceipt:) + (-allowUserReceipt, setUserReceiptNonRecipientAction:) + (userReceiptNonRecipientAction) + (setUserReceiptOutsideDomainAction:) + (userReceiptOutsideDomainAction, setUserReceiptAnyAction:) + (userReceiptAnyAction): new accessors pertaining to return + receipts. + + * SoObjects/SOGo/SOGoUser.m (-_appendSystemMailAccount): append + preferences pertaining to return receipts. + +2010-08-31 Wolfgang Sourdeau + + * SoObjects/SOGo/NSScanner+BSJSONAdditions.m (-scanJSONValue:): + make use of NSUInteger rather than "unsigned int" for length + values. + (-scanJSONNumber:): now scan float numbers too. + + * UI/WebServerResources/UIxMailEditor.js + (onMenuCheckReturnReceipt): new function. + (getMenus): added entries for initializing the new "Options" menu + as well as the "Priority" menu. + + * UI/MailerUI/UIxMailEditor.m (-setReceipt, -receipt): new + accessors for the "receipt" hidden input field, meant to interract + the the "return receipt" entry in the "Options" menu. + (-setReplyTo, -replyTo): removed obsolete methods. + + * SoObjects/Mailer/SOGoDraftObject.m (-setHeaders:) + (-mimeHeaderMapWithHeaders:excluding:): added handling for the + "Disposition-Notification-To" header. + +2010-08-30 Wolfgang Sourdeau + + * Tools/SOGoToolRemoveDoubles.m, UI/MailerUI/UIxMailFormatter.m: + adapted classes to use "NSInteger" and "NSUInteger" instead of + "int" and "unsigned int" for compatibility with versions of + GNUstep base >= 1.20. + +2010-08-27 Francis Lachapelle + + * UI/WebServerResources/SchedulerUI.js (newBaseEventDIV): now adds + icon for event classification (confidential or private). + +2010-08-27 Wolfgang Sourdeau - * UIxComponent.m: added warning. + * UI/WebServerResources/ckeditor/: updated to v3.4. + + * UI/WebServerResources/ckeditor/{ckeditor_source.js,ckeditor_basic_source.js,ckeditor.pack}: + dropped useless files. + + * UI/WebServerResources/UIxPreferences.js: (appendSieveFilterRow): + we bind the "click" event on the activation checkbox rather than + "change", because a certain obsolete browser simply ignores it. + (updateFilterFromEditor): the "filter" argument is replaced with a + JSON-encoded string representing the filter in question. On a + certain obsolete browser, object referencing is so messed up that + closing the "creator" window will suddenly invalidate the created + objects. This solves the voodoo error message "The callee (server + [not server application]) is not available and disappeared; all + connections are invalid." when saving and closing. + (setupMailboxesFromJSON): new method, created due the same issue + as above, that enables the creation of an array from the response + received by the filter editing window. + (updateSieveFilterRow): we avoid removing the activation cb since + further update event would no longer be taken into account. + However we reset its "checked" status to the activation status of + the updated filter. + +2010-08-26 Wolfgang Sourdeau + + * SoObjects/SOGo/NSString+Utilities.m (-asQPSubjectString:): we + use "NGEncodeQuotedPrintableMime" instead of + "dataByEncodingQuotedPrintable" (NGQuotedPrintableCoding), as it's + more suited for email header fields. + + * SoObjects/Mailer/SOGoDraftObject.m (_quoteSpecials:): now work + on single strings. + (_quoteSpecialsInArray:): new method that offers the same + functionality as _quoteSpecials: did before the change above. + + * UI/MailerUI/UIxMailEditor.m (_emailFromIdentity:): the "from" + field is handled in SOGoDraftObject, therefore we don't need to + modify it here, especially since this will alterate the display. + + * Tests/Unit/TestNGMimeAddressHeaderFieldGenerator.m: new test + module for NGMimeAddressHeaderFieldGenerator. + +2010-08-25 Francis Lachapelle + + * UI/WebServerResources/SchedulerUI.js (copyEventToClipboard) + (copyEventFromClipboard, copyEventToPersonalCalendar, copyEvents): + new functions to allow the copy/paste of events. + (selectCalendarEvent): fixed various bugs with the selection of + events. + (onMenuCurrentViewPrepareVisibility): new function to disable the + delete option when no event is selected and to disable the copy + option when the event is owned by the user. + (onDocumentKeydown): added actions for Ctrl-C and Ctrl-V. + (deleteEvent): avoid showing a confirmation dialog with recurrent + events that the user can't erase. + + * UI/WebServerResources/SOGoDataTable.js: Overrided methods from + HTMLElement (selectRange, selectAll) to handle selection based on rows ID. - * GNUmakefile: added SOGoAptFormatter.[hm] -2004-08-11 Marcus Mueller + * UI/WebServerResources/MailerUI.js: selected messages are now + identified by their row ID to handle live loading. - * UIxComponent.[hm]: added -SoUser (v0.9.7) + * UI/WebServerResources/HTMLElement.js (getSelectedNodesId): take + advantage of the selectedIds attribute. + (selectElement): also verify if the element is in the selectedIds + array. + (deselectAll): performance improvement; unselect elements based on + the _selected class. -2004-08-10 Marcus Mueller + * UI/Scheduler/UIxAppointmentActions.m (-copyAction): new method + to copy the appointment to a different calendar. - * v0.9.6 - - * SOGoDateFormatter.[hm]: added fast localizable date formatter. + * SoObjects/Appointments/SOGoCalendarComponent.m + (-copyComponent:toFolder:): was copyToFolder. This new method + accepts a specific calendar component. + (-copyToFolder:): uses the above method with the current calendar. - * GNUmakefile: added SOGoDateFormatter.[hm] +2010-08-25 Wolfgang Sourdeau -2004-07-26 Marcus Mueller + * UI/Contacts/UIxListEditor.m: slightly improved code at various + places. - * UIxComponent.m: added "hm" queryParameter to add hour/minute part to - selectedDate which is necessary for appointment proposals. Removed - all additional stuff from -dateForDateString: and moved this to - -selectedDate. IMHO this is always high-level behaviour which needs to - be refined in the appropriate high-level method, not at conversion - level. (v0.9.5) +2010-08-25 Ludovic Marcotte -2004-07-21 Marcus Mueller + * It's now possible to use SSL or TLS for the + SOGoIMAPServer value. Also updated the documentation + to give samples. Fixed the "port" value save from + the preferences module. - * UIxComponent.[hm]: renamed some of the labels to better reflect the - intention (and to avoid name clashes) (v0.9.4) +2010-08-24 Wolfgang Sourdeau -2004-07-21 Marcus Mueller + * UI/WebServerResources/generic.js: (log): added a hack to enable + child windows to log messages in the log console of the main window. - * UIxComponent.[hm]: date specific labels (weekday names, month names) - (v0.9.3) + * SoObjects/Contacts/SOGoContactGCSList.m (-davAddressData): added + method. + +2010-08-24 Ludovic Marcotte + + * UI/Templates/PreferencesUI/UIxPreferences.wox + Enabled the UI widgets related to SSL/TLS. + SOPE *must* be updated for them to work properly. + +2010-08-23 Wolfgang Sourdeau + + * UI/WebServerResources/UIxMailEditor.js: (clickEditorSend): make + use of the iframe hack for receiving the POST's response and + interpret it as JSON, with error handling. + + * UI/WebServerResources/HTMLElement.js: (Element.allTextContent): + fetch the concatenated text content of the all the child nodes of + the element, recursively. + + * UI/WebServerResources/MailerUI.js: (initMailer): use + "UserSettings" only if we are the main window. + + * UI/MailerUI/UIxMailEditor.m (-sendAction): return a json + representation of the success of the operation, with a message if + an exception was returned. + + * UI/WebServerResources/MailerUI.js: (mailListToggleMessagesRead): + new method, spun from "mailListMarkMessage", which is basically + replaces in a more generic way by acting on all selected messages + in the msg list. + (mailListToggleMessagesFlagged): same as above for + "mailListFlagMessageToggle". + (onMenuToggleMessageRead, onMenuToggleMessageFlag): new menu + callback methods. + (onMarkMenuPrepareVisibility): new visibility method for the + "mark-menu". + (getMenus): activated the "mark as read" and "toggle flag" menu + options of the "mark menu". + +2010-08-20 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoDAVAuthenticator.m (-checkLogin:password:): + same as below. -2004-07-20 Marcus Mueller + * SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): same as + below. - * UIxComponent.[hm]: new method -labelForKey: implemented very similar to - new WOLabelAssociation in SOPE. Also implemented -locale. (v0.9.2) + * SoObjects/SOGo/SOGoGCSFolder.m (_deduceObjectNamesFromURLs:): + accept "@" chars encoded as "%40". + + * SoObjects/Contacts/SOGoContactFolders.m (-appendSystemSources): + append nothing if used from an iPhone. -2004-07-19 Marcus Mueller + * SoObjects/SOGo/SOGoParentFolder.m (-appendPersonalSources): we + now that "owner" is always set properly from the init methods, no + need to invoke ownerInContext: anymore. - * UIxComponent.m: new method -backendTimeZone. + * SoObjects/SOGo/WORequest+SOGo.m (-isMacOSXAddressBookApp): + renamed from "isAddressBookApp". + (-isIPhoneAddressBookApp): new method to detect whether the + request has been performed from the AB of iOS. -2004-07-02 Helge Hess + * SoObjects/SOGo/SOGoFolder.m (-davEntityTag): we no return a + pseudo etag for collections for compatibility with the broken + Apple clients. - * UIxComponent.m: introduced 'viewTimeZone' method and adds some - timezone correction to date methods +2010-08-19 Francis Lachapelle -2004-06-30 Helge Hess + * UI/WebServerResources/generic.js (showConfirmDialog): new + function to replace window.confirm(). - * product.plist: make categories on SOGoObject instead of SxFolder + * UI/WebServerResources/MailerUI.js (onMenuEmptyTrash): delete the + cache of the trash mailbox when called. - * GNUmakefile: patches for different build/runtime environment +2010-08-19 Wolfgang Sourdeau - * created ChangeLog -2005-08-01 Helge Hess + * Tools/sogo-ealarms-notify.m: new tool meant to be executed every + minute from cron for handling email alarms notifications. - * GNUmakefile: added FHS installation of sogod-0.9 (v0.9.41) + * SoObjects/Appointments/SOGoEMailAlarmsManager.[hm]: new GCS + aware singleton class for main email alarms operations on the db. - * SOGo.m: added class security declarations (previously in - product.plist of MainUI), ensure that core SOGo SoClasses are loaded - (v0.9.40) + * SoObjects/Mailer/SOGoMailFolder.m (-deleteUIDs:inContext:): make + the use of the "result" variable clearer by declaring it with a + proper class name and avoiding type confusion within the code. - * v0.9.39 + * UI/WebServerResources/MailerUI.js: (initDnd): removed useless + method. + (onMessageListPrepareVisibility): fixed a bug where the current + mailbox name would be attemptedly taken from the menu target, + while it really should have been deduced from + "Mailer.currentMailbox". + (configureDraggables): we now take all label nodes under + "#mailboxTree" into account and accept them as droppable when they + are not an account node. Also, we associate an account tag with + all of them. + (startDragging): we set the drag classname of the drag handle to + the correct account tag, to avoid visual feedback when hovering + mailboxes from another account. + + * UI/WebServerResources/UIxReminderEditor.js + (initialiseFormValues): added code to configure the "actionList" + if present (email alarms enabled). + (onEditorOkClick): modify the parent's reminderAction, + reminderEmailOrganizer, reminderEmailAttendees when email alarms + are available. "reminderAction" is conditionally set to "display" + otherwise. + + * UI/Scheduler/UIxReminderEditor.m (-emailAlarmsEnabled): new accessor. + + * SoObjects/Appointments/SOGoCalendarComponent.m + (-saveComponent:): invoke SOGoEMailAlarmsManager to register any + email alarms in the saved component. + (-PUTAction:): new super method to perform the same as the above. + (-prepareDelete): new super method. Invoke SOGoEMailAlarmsManager + to unregister any email alarms in the deleted component. + + * UI/Scheduler/UIxComponentEditor.m (-init): added the + "reminderAction", "reminderEmailOrganizer" and + "reminderEmailAttendees" ivars. + (_loadEMailAlarm:) new setup method for setting up parameters that + are specific to email alarms. + (_appendAttendees:toEmailAlarm:,_appendOrganizerToEmailAlarm:): + new method for adding "attendees" to email alarms. + (-emailAlarmsEnabled): new accessor. + + * SoObjects/Appointments/SOGoAppointmentObject.m (-prepareDelete): + we now invoke -[super prepareDelete] since SOGoCalendarComponent + now implements the method. + (-DELETEAction:): invoke -prepareDelete instead of + -prepareDeleteOccurence: since we want -[super prepareDelete] to + be invoked from here too. + + * Main/SOGo.m (-_checkMandatoryTables): added code to create the + alarms table if email alarms are enabled. + + * SoObjects/SOGo/SOGoSystemDefaults.m (-enableEMailAlarms): new + method for the "SOGoEnableEMailAlarms" user default. + +2010-08-19 Francis Lachapelle + + * UI/WebServerResources/generic.js (showPromptDialog): new + function to replace window.prompt(). + +2010-08-13 Wolfgang Sourdeau + + * SoObjects/Appointments/iCalEvent+SOGo.m (-quickRecord): we now + make use of the new -[iCalAlarm nextAlarmDate] method. + + * SoObjects/Appointments/iCalToDo+SOGo.m (-quickRecord): we now + make use of the new -[iCalAlarm nextAlarmDate] method. + +2010-08-12 Wolfgang Sourdeau + + * UI/WebServerResources/MailerUIdTree.js: (getMailboxNode): fixed + method to return unfolded nodes too. + + * UI/WebServerResources/MailerUI.js: (updateUnseenCount): renamed + from "updateStatusFolders" and improved to use DOM methods. + + * UI/WebServerResources/dtree.js: (Node): removed the "hasUnseen" + parameter. + + * UI/MailerUI/UIxMailAccountActions.m (-listMailboxes): make use + of the "application/json" content type in the response. + + * UI/MailerUI/UIxMailFolderActions.m: (-unseenCount): renamed and + moved implementation of the -[UIxMailAccountActions statusFolders] + method, splitted thereof since we now execute the method on all + mail folders. + + * UI/MailerUI/UIxMailMainFrame.m (-defaultColumnsOrder): removed + accessor, made obsolete by the new propagation mechanism of user + defaults. + (-getUnseenCountForAllFolders): new accessor that returns the + value below as a string value. + + * SoObjects/SOGo/SOGoDomainDefaults.m (-mailCheckAllUnseenCounts): + new method returning whether the unseen count of all mailboxes + should be checked. + + * SoObjects/Mailer/SOGoMailAccount.m (-updateFilters): when the + first login attempt fails, we must request a new password to the + authenticator (as intended originally). + + * UI/WebServerResources/generic.js: (onAjaxRequestStateChange): + when using CAS authentication and when the return code is 0 and + when the request status is 4, chances are that the initial ajax + request failed due to the expiration of the CAS ticket entry in + memcached. In FF 3.5 and above, a bug prevents the initial cookie + from being given back to the reauthentication redirect from an + AJAX request. Therefore we open a window that will do this for us + and will close one the authentication has succeeded again. + + * UI/MainUI/SOGoRootPage.m (-revoverAction): new fake action that + perform the CAS redirection and then trigger the respawn of the + initial request. + + * UI/Common/UIxPageFrame.m (-usesCASAuthentication): new accessor + used for recovery of redirected requests. + + * SoObjects/Contacts/SOGoFolder+CardDAV.m: + (_appendObject:withBaseURL:toREPORTResponse:): moved method here + from SOGOContact{GCS,Source}Folder since its implementation was + mostly the same in the two classes and never invoked anywhere + else. + Modified to return both "address-data" and "addressbook-data" + (draft rev < 4) unless we parse the requested props appropriately. + + * SoObjects/Contacts/SOGoContactGCSFolder.m + (-davAddressbookMultiget): new method that responds the + CardDAV addressbook-multiget report. + (-davSQLFieldsTable): new overriden method that adds support for + the CardDAV address-data property. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-davCalendarMultiget:): make use of the new method below. + + * SoObjects/SOGo/SOGoGCSFolder.m + (-performMultigetInContext:inNamespace:): collection-type + independent form of -[SOGoAppointmentFolder davCalendarMultiget:], + moved along with all its private methods. + + * SoObjects/Contacts/SOGoContactFolders.m + (-toManyRelationshipKeys): new overriden method to return only the + personal addressbook when the request is performed by + AddressBook.app. + +2010-08-11 Ludovic Marcotte + + * SoObjects/Appointments/SOGoAppointmentObject.m + Removed all the old calendar-schedule code and + instead, implemented calendar-auto-schedule. The old + code will always succeed and the new code reuses + all the business logic used for the Web interface + of SOGo. + * SOPE/NGCards/iCalRecurrenceRule.m + Modified setInterval: so that when the value is + equal to 1, we do NOT set it. + * UI/WebServerResources/UIxAclEditor.js + In addUserCallback(), we remove the owner of the + resource if it was added. This fixes #682. + * We now correctly encode/decode the '&' + character in the mailbox name when copying and moving + messages and also when opening mailboxes. This + fixes #716. + +2010-08-11 Francis Lachapelle + + * UI/WebServerResources/MailerUI.js (refreshMessage): if the + current mailbox is the sent folder, refresh the mailbox instead of + only the message. + +2010-08-11 Wolfgang Sourdeau + + * UI/WebServerResources/SchedulerUI.js: (initCalendars): avoid + setting "showCompletedTasks" when in a popup, since this needs + access to a UserDefaults dictionary which is not present nor event + required. + + * Main/SOGo+DAV.m (-davCurrentUserPrincipal): new method + implementing the "{DAV:}current-user-principal" property. + + * SoObjects/Contacts/SOGoContactGCSEntry.m (-davAddressData): new + DAV property accessor returning the card content. + + * SoObjects/SOGo/WORequest+SOGo.m (-isAddressBookApp): new + (hackish) test method to determine whether the client is Apple's + AddressBook.app. + + * UI/Common/UIxPageFrame.m (_dictionaryWithKeys:fromSource:): + set an NSNull as value for keys which return no results, in order + to avoid an NSInvalidArgumentException. + +2010-08-10 Francis Lachapelle + + * UI/WebServerResources/generic.js (showAlertDialog): new function + to replace window.alert(). + +2010-08-09 Wolfgang Sourdeau + + * UI/WebServerResources/MailerUI.js (openMailbox): removed the + "updateStatus" parameter, which is never used. + + * UI/WebServerResources/generic.js (log): fixed handling of + messages ending with "\n". + + * UI/Common/UIxPageFrame.m (-setUserDefaultsKeys:) + (-hasUserDefaultsKeys, -setUserSettingsKeys:) + (-hasUserSettingsKeys): new accessor for determining explicitly + which user defaults/settings keys are returned. The new + corresponding ivars are "udKeys" and "usKeys" respectively. + (-userDefaults, -userSettings): rewrote methods to create a + dictionary containing only the requested keys (see above). Since + the source are now explicitly queried, the values can now be + inherited from the domain and system defaults. + + * UI/WebServerResources/UIxFilterEditor.js (loadMailboxes): the + first account is now always identitied with "0", therefore we no + longer need the "firstMailAccount" variable. + + * UI/PreferencesUI/UIxFilterEditor.m (-firstMailAccount): removed + osbolete accessor. + + * UI/WebServerResources/UIxPreferences.js: (onMailAccountAdd) + (onMailAccountDelete): set "hasChanged" to 1 when triggered. + (onColorPickerChoice): don't invoke "onChoiceChanged" as it is an + event callback. + +2010-08-06 Wolfgang Sourdeau + + * UI/WebServerResources/generic.js (reloadPreferences): dropped + useless method. + + * UI/PreferencesUI/UIxPreferences.m (_extractAuxiliaryAccounts:): + since we no longer transfer the user password to the client, the + old password has to be fetched from the old account unless a new + password has been set. + (-mailAccounts): we now strip the passwords from the returned mail + accounts, to avoid transferring them uselessly with a risk of + keeping them in cache. + + * UI/WebServerResources/MailerUI.js: (initMailboxTree): make use + of the new class below and drop all code related to keeping track + of active requests. + + * UI/WebServerResources/generic.js: (AjaxRequestsChain): new class + that implements the chaining of ajax requests. + + * UI/WebServerResources/MailerUI.js: (dropAction): ensure that the + destination mailbox is in the same mail account as the message + being dragged. + (getMenus): arranged menu descriptions as as single statement. + Added "prepareVisibility" callbacks for the "messageListMenu", + "messagesListMenu" and "messageContentMenu" (move/copy ops) and + "inboxIconMenu", "trashIconMenu", "mailboxIconMenu" menus (folder + sharing). + (onMessageListMenuPrepareVisibility): new vis. callback designed + to attach the right folder submenu to the copy and move ops. + (onFolderMenuPrepareVisibility): new vis. cb for disabling the + share of folders for auxiliary accounts. + (updateMailboxMenus): simplified method by removing the first + level of submenus, where the account names used to be. + (openInbox): "openMailbox" only takes 3 parameters. Using "null" + instead of "false" was also pretty lame. + (updateStatusFolders): take the mailbox name as parameter and + arranged for multiple mail accounts. In particular, "unseenCount" + is now a class identifier rather than an element id. + (markMailInWindow): make use of + MailerUIdTreeExtension.getMailboxNode. + + * UI/WebServerResources/ContactsUI.js + (onToolbarDeleteSelectedContacts): use translated labels. + + * UI/WebServerResources/MailerUIdTree.js: + (MailerUIdTreeExtension._addFolderNode): no longer set a SPAN + arroung the unseen count. + (MailerUIdTreeExtension.getMailboxNode): new method returning the + DIV.dTreeNode corresponding to the mailbox name passed as + parameter. + + * UI/WebServerResources/UIxPreferences.js: (_setupEvents): no + longer take any parameter, which simplifies the method, as + removing the "change" observers on input field is not useful. + (initMailAccounts): new method that parses the mail accounts JSON + dictionary, populates the mail account UL and setup related + events. + (onMailAccountInfoChange, onMailIdentityInfoChange) + (onMailIdentitySignatureClick, onMailIdentitySignatureOK) + (createMailAccountLI, onMailAccountEntryClick, displayMailAccount) + (displayAccountSignature, createMailAccount) + (onMailAccountAdd, onMailAccountDelete, saveMailAccounts) + (compactMailAccounts): new methods completing the above. + + * UI/PreferencesUI/UIxPreferences.m (-identitiesList) + (-itemIdentityText, -signature, -setSignature): removed obsolete + methods. + (-defaultAction): when updating filters, we now only need to query + the "0" account since accounts are no longer identified by "name". + (-mailAuxiliaryUserAccountsEnabled): new bool method. + (-setMailAccounts): new accessor that decodes the new mail + accounts dictionary in JSON format and validates it prior to save + it in the user defaults. + (-mailAccounts): new accessor. + + * UI/MailerUI/UIxMailFolderActions.m (_setFolderPurpose:): we now + use the corresponding methods on the SOGoUserDefaults instance + rather than in the user settings (old bug) when setting folders + for the main account. Additionally, we now handle the entries from + auxiliary accounts. + + * UI/MailerUI/UIxMailEditor.m (-fromEmails): the list of + identities is now taken from the corresponding mail account dict. + + * SoObjects/Mailer/SOGoMailForward.m (-signature): same as below. + + * UI/MailerUI/UIxMailAccountActions.m (-composeAction): same as below. + + * SoObjects/Mailer/SOGoDraftObject.m (-fetchMailForForwarding): + the signature is now taken from the original mail's corresponding + account. + + * SoObjects/Mailer/SOGoMailFolder.m + (-copyUIDs:toFolder:inContext:): we now ensure that the operation + is not attempted on two separate accounts. + (-httpURLForAdvisoryToUser): the returned mail account is now + always "0". + + * SoObjects/Mailer/SOGoMailBaseObject.m (-imap4URL): we now add + the "tls=YES" url parameter if the corresponding account + encryption is set to "tls". + (-imap4Login): removed useless method. + (-imap4PasswordRenewed:): now a proxy to the same method on the + instance account folder. + + * SoObjects/Mailer/SOGoMailAccount.m (-identities, -signature) + (encryption): new helper methods that return the corresponding key + in the appropriate mail account dictionary. + (-_migrateFolderWithPurpose:): moved method in SOGoMailAccount.m. + (-_userFolderNameWithPurpose): rewrote method to make use of the + mail account dictionaries. Fallback on the main account of the + auxiliary ones do not have the required entry. + (-imap4PasswordRenewed:): moved method from SOGoMailBaseObject.m + and use the "password" entry in auxiliary account dicts depending + on "nameInContainer". + (-imap4LoginFromHTTP, -imap4Login): removed useless methods. + + * SoObjects/SOGo/SOGoUser.m (-mailAccounts): we now conditionnally + append the array of auxiliary user accounts, if enabled in the + domain defaults. + (-_appendSystemMailAccount): the user main signature and the + sent, drafts, trash folder location are now stored in the account + dictionaries. Added migration code from us to ud from + SOGoMailAccount.m. + + * SoObjects/SOGo/SOGoDomainDefaults.m + (-mailAuxiliaryUserAccountsEnabled): new method returning a BOOL + describing whether the domain users can access auxiliary mail + accounts. + + * SoObjects/SOGo/SOGoUserDefaults.m (-setAuxiliaryMailAccounts:) + (auxiliaryMailAccounts): new methods that receives and returns an + NSArray of NSDictionary describing the user's auxiliary mail + accounts. + + * UI/WebServerResources/HTMLElement.js: (deselectAll): if the + container has a "selectedElements" attribute, then it's no longer + required to wander through the "selectedIds" attribute. This fixes + a strange bug on IE when modifying the selection on LI lists. + +2010-08-05 Francis Lachapelle + + * UI/WebServerResources/SOGoResizableTable.js + (computeColumnsWidths): was previous part of saveColumnsState. + Used when the user hasn't modify the columns widths but the local + "ratios" hash still need to be built. + +2010-08-04 Francis Lachapelle + + * UI/WebServerResources/generic.js (createDialog): when the + position class is set to "none", the dialog will be modal (with a + dimmed background). + + * UI/WebServerResources/ContactsUI.js: replaced window.confirm by + a CSS modal dialog. + +2010-08-04 Wolfgang Sourdeau + + * UI/WebServerResources/RowEditionController.js: + (RowEditionController.startEditing): avoid setting the whole + element class. Make use of addClassName/removeClassName instead, + so that classes added/removed via other evt handlers are not + ignored. + +2010-08-03 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUser.m (-_appendSystemMailAccount): new + private method with the mailbox code split from -[mailAccounts]. + + * UI/WebServerResources/MailerUI.js (composeNewMessage): the first + account is always identified as "0". + + * UI/MailerUI/UIxMailMainFrame.m (-mailAccounts): we now return + tje JSON rep. of a simple and flat array containing the account + display names, since the account are represented with an integer + index. + (-inboxData): we directly fetch the first mail account by using + the "0" key. + (-composeAction): same as above. + + * SoObjects/Mailer/SOGoMailAccount.m (-imap4URLString): the + "nameInContainer" now represents the index of the current account + in the array of user mail accounts, which simplifies this method. + We also handle the "encryption" key, albeit currently unused, and + we now add the port to the url as needed. + (-shortTitle): removed method. + (-davDisplayName): we only need to return the "name" key of the + current account. + + * SoObjects/Mailer/SOGoMailAccounts.m (-mailAccounts): new utility + method that returns the mail account dictionaries corresponding to + the owner. + (-toManyRelationshipKeys): we now identify mail accounts via their + index in the array of accounts, since the order will never vary, + this simplifies the code. + (-lookupName:inContext:acquire:): same as the above. + + * UI/WebServerResources/RowEditionController.js: + RowEditionController.startEditing: keep the "_selected" class + when starting edition, if exists. + RowEditionController.acceptEdition: revert the changes if the new + value is an empty string (might be wrong, though). + RowEditionController.onInputKeyDown: we now handle the tab key + too. + +2010-08-03 Ludovic Marcotte + + * Applied patch for bug #690 + * Applied patch for bug #703 + * Applied patch for bug #714 + * Updated Ukrainian translation - patch from + Oleksa Stasevych + +2010-08-02 Wolfgang Sourdeau + + * UI/WebServerResources/RowEditionController.js: new class module + that implements the handling of editable list items. + + * SoObjects/SOGo/NSNumber+Utilities.m (-jsonRepresentation): + returns "true" or "false" when the initial return value is "YES" + or "NO". - * moved MainUI product bundle to UI/MainUI +2010-07-30 Francis Lachapelle - * SOGo.m: fixed some gcc 4.0 warnings + * UI/WebServerResources/SchedulerUI.js (deleteEvent): improved + the function to delete all selected events cells. + (onSelectAll): improved the function to select all events cells. + (onDocumentKeydown): select all elements upon ctrl-A. + (onCalendarSelectEvent): allow multiple selections. -2005-07-21 Helge Hess + * UI/WebServerResources/HTMLElement.js (selectAll): new method to + select all entries of a list or a table. - * product.plist: protect homepage using SOPE access control (v0.9.38) + * UI/WebServerResources/scriptaculous/dragdrop.js (initDrag): + avoid stopping the event propagation so the blur event is properly + fired on the search input field when it isfocused. - * SOGoRootPage.m: redirect authenticated users to their login page - (v0.9.37) +2010-07-28 Francis Lachapelle -2005-07-21 Marcus Mueller + * UI/WebServerResources/MailerUI.js (deleteCachedMailboxByType, + deletedCachedMailbox): new methods to update the datasources + (mailboxes) cache. - * homepage.js: fixed post to send an empty string instead of null - - this works in Firefox on MacOSX but fails on Windows (v0.9.36) + * UI/WebServerResources/UIxComponentEditor.js (getCalendarOwner): + new function that returns the event organizer or the calendar + owner in case of an event with no organizer yet. -2005-07-20 Marcus Mueller + * UI/Scheduler/UIxComponentEditor.m (-organizerProfile): was + jsonOrganizer. Now caches the resulting dictionary in an ivar. + (-calendarOwnerList): new method called from the wox template and + use to display the event organizer in the edition window of the + attendees. - * v0.9.35 +2010-07-27 Francis Lachapelle + + * UI/WebServerResources/SOGoAutoCompletion.js + (performSearchCallback): minor change on when the popup menu has + to be positioned differently. + +2010-07-22 Ludovic Marcotte + + * Added Migration/Horde/* - scripts used to migrate + the address books and email signatures from Horde to + the SOGo database. + +2010-07-21 Wolfgang Sourdeau + + * UI/WebServerResources/ContactsUI.js: (dropSelectedContacts): + reenabled copying contacts from system (LDAP) addressbooks. + +2010-07-20 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUserFolder.m (_subFoldersFromFolder:): we + need to validate the current user's access to the listed folders + again because of the recent changes on SOGoParentFolder. + + * UI/Contacts/UIxContactFoldersView.m (_subFoldersFromFolder:): + removed unused method. + +2010-07-16 Wolfgang Sourdeau + + * UI/Contacts/UIxContactEditor.m (-photosURL): copy of the method + below. + + * UI/Contacts/UIxContactView.m (-photosURL): new access that + returns the URL to the photos contained in the VCARD, whether + inline or not. + (-tabSelection): removed unused method. + + * SoObjects/Contacts/SOGoContactGCSEntry.m + (-lookupName:inContext:acquire:): new overriden method to handle + "photoX" lookups and return the corrsponding SOGoContactEntryPhoto + instance, if exists. + + * SoObjects/Contacts/SOGoContactEntryPhoto.[hm]: new controller + class for VCARD PHOTO objects. + + * SoObjects/SOGo/SOGoContentObject.m (-davContentLength): fixed a + crash occurring with certain versions of GNUstep by using + NSISOLatin1StringEncoding instead of UTF8. This is actually the + correct way of doing things anyway since we want to return the + length in bytes and not in characters. - * README: updated with new default description +2010-07-16 Ludovic Marcotte - * SOGoUserHomePage.wox: in case user is not authorized to change the - internet access flag, the rendered text is different now + * UI/Contacts/UIxContactView.m + In secondaryEmail, we make sure that we loop + in all available email address and we pick the + first one that doesn't match the primaryEmail + * UI/Contacts/UIxContactEditor.m + UI/Contacts/UIxContactView.m - we make sure, + when excluding a type, that we reset the + local variable to nil since we might exclude + all values in our array. - * English.lproj/Localizable.strings: provide new label for case that - user is not allowed to change internet access +2010-07-16 Wolfgang Sourdeau -2005-07-15 Helge Hess + * SoObjects/Appointments/SOGoAppointmentObject.m + (_handleUpdatedEvent:fromOldEvent:): added handling of delegation + chains when resetting the participation status of the attendees. + Fixes #688. - * GNUmakefile.preamble: fixed Cocoa compilation (v0.9.34) +2010-07-15 Wolfgang Sourdeau -2005-07-14 Helge Hess + * SoObjects/SOGo/SOGoUser.m (-personalCalendarFolderInContext:): + we now make use of -[SOGoParentFolder + lookupPersonalFolder:ignoringRights:] with @"personal" and YES as + arguments. - * moved SOGoUser and SOGoAuthenticator to libSOGo (v0.9.33) + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-lookupCalendarFolderForUID:): removed useless method, which can + be replaced with -[SOGoUser personalCalendarFolderInContext:]. -2005-07-14 Marcus Mueller + * UI/Scheduler/UIxCalListingActions.m + (_aptFolder:withClientObject:): removed unused method. + (_fixDates:): apply fix also for monthly views. - * SOGoUserHomePage.m: vacation message state is now properly being - retrieved from AgenorUserManager (v0.9.32) + * UI/WebServerResources/UIxAppointmentEditor.js + (onComposeToAllAttendees): take the status image DIV into account + when detecting the user fullnames. + (onComposeToUndecidedAttendees): same as above. - * v0.9.31 + * Tests/Integration/test-davacl.py + (DAVCalendarPublicAclTest.testCollectionAccessNormalUser): print + the amount of received hrefs. - * SOGoUserHomePage.[m, wox]: added internet access lock - display/modification and vacation state (currently only faked) + * SoObjects/Appointments/SOGoAppointmentFolders.m + (-folderObjectKeys): we now check the "AccessObject" + right on the returned folders to determine whether their ICS or + XML version should be accessible. - * homepage.js: JavaScript in use on the homepage + * SoObjects/SOGo/SOGoParentFolder.m + (_fetchPersonalFolders:withChannel:): we no longer check access + rights from here as this method is too low level and prevent other + mechanisms from working properly. + (-lookupPersonalFolder:ignoringRights:): new method enabling the + lookup of a user's personal folders only and offering the choice + of respecting (or not) the active user's permission before + returning it. + (-lookupName:inContext:acquire:): we now make use of the above + method when looking up personal folders ("personal" or not). + (-toManyRelationShipKeys): same as lookupName... above. - * English.lproj/Localizable.strings: removed old labels and added a - bunch of new labels + * SoObjects/SOGo/SOGoObject.m (-ignoreRights): new utility method + that determines whether the current object must check access + rights on subobjects. -2005-07-12 Helge Hess - - * v0.9.30 - - * SOGoAuthenticator.m: create SOGoUser objects - - * added 'SOGoUser' object/class as a subclass of SoUser, using this - object various Agenor properties like cn or email can be determined - (will use the AgenorUserManager to retrieve such) +2010-07-14 Wolfgang Sourdeau -2005-07-08 Marcus Mueller + * SoObjects/SOGo/SOGoGCSFolder.m (-aclSQLListingFilter): return an + empty string when the active user is a super user. + (-initializeQuickTablesAclsInContext:): set + "userCanAccessAllObjects" to YES also when the active user is a + super user. - * README: updated for new default 'SOGoAllowsUnrestrictedAccess' + * Tests/Integration/test-davacl.py + (DAVCalendarAclTest._testEventIsSecureVersion): accept a differing + SUMMARY since it will always change depending on the user's + language and is a pain to adapt. + (DAVCalendarPublicAclTest.testCollectionAccessNormalUser): added + code to accept and handle the XML and ICS calendar variants. + (DAVCalendarSuperUserAclTest.__init__): new test access class for + ensuring that super users have full, inconditionnal and complete + access to simple user's collections -2005-07-05 Marcus Mueller +2010-07-13 Wolfgang Sourdeau - * v0.9.29 + * Tests/Integration/test-put.py: new test module executing X puts + based on a number of auto-generated events configured in config.py - * README: updated defaults documentation + * Tests/Integration/ev_generator.py: new module producing + auto-generated events based on a number of days - * SOGo.m: added new default 'SOGoEnableDoubleReleaseCheck' for - debugging of NSAutoreleasePool issues + * Tests/Integration/sogotests.py: new module overriding + certain methods from the "unittest" module in order to + automatically execute the tests in verbose mode and by displaying + a timing of the test execution. -2005-03-28 Helge Hess + * Tests/Integration/test-webdavsync.py (WebdavSyncTest.test): + adapted to suit the new handling of empty collections in SOGo - * SOGoProductLoader.m: do not try to load directories without - extensions (v0.9.28) +2010-07-09 Francis Lachapelle -2005-03-23 Marcus Mueller + * UI/WebServerResources/UIxAttendeesEditor.js (onContactKeydown): + reset left scroll uppon autocompletion (fix for IE). + (onAttendeeResultClick): idem. + (prepareAttendees): add the organizer at the top of the attendees list. - * renamed "default.strings" to "Localizable.strings" (v0.9.27) + * UI/Scheduler/UIxComponentEditor.m (-jsonOrganizer): new method + that returns a JSON representation of a dictionary describing the + organizer of the event. -2005-02-21 Helge Hess +2010-07-07 Francis Lachapelle - * GNUmakefile: properly install bundle in FHS (v0.9.26) + * UI/WebServerResources/HTMLInputElement.js: renamed valueAsDate + as inputAsDate since it conflicts with the DOM attribute with the same + name in HTML5. -2005-02-20 Helge Hess +2010-07-06 Francis Lachapelle - * SOGoProductLoader.m: fixed product loader for FHS and Cocoa (0.9.25) + * SoObjects/SOGo/NSString+Utilities.m (-_setupCSSEscaping): added + the single quote (') in the list of characters to escape. -2005-02-17 Helge Hess + * UI/WebServerResources/JavascriptAPIExtensions.js + (asCSSIdentifier): idem. - * SOGo.m: added a proper application 'name' for the WEResourceManager, - use WEResourceManager per default (v0.9.24) +2010-07-05 Francis Lachapelle -2005-02-12 Marcus Mueller + * UI/WebServerResources/UIxContactEditor.js + (validateContactEditor): added validation of birthdate. - * SOGo.m: corrected incorrect use of logging (v0.9.23) + * UI/WebServerResources/SchedulerUI.js (onCalendarModify): fixed + proper identification of web calendars and adjusted height of + popup window. -2005-02-10 Helge Hess +2010-07-04 Ludovic Marcotte - * GNUmakefile.preamble: fixed linking on MacOSX (v0.9.22) + * In the Contacts module, we prioritize the + WORK number while excluding the FAX one in case + we see the latter before the former. - * v0.9.21 - - * SOGoProductLoader.m: perform properly versioned plugin lookups (load - bundles from Library/SOGo-0.9 instead of Library/SOGo) - - * sogod is now a tool, not a .woa anymore +2010-07-01 Ludovic Marcotte - * SOGo.m: minor cleanup in locale code, removed some dead code - (v0.9.20) + * In the Contacts module, improved the label + of the birthday field. - * GNUmakefile: some support for tool compilation (does not work yet) +2010-06-30 Ludovic Marcotte - * sogod.m: moved application class to own file, started to work on - daemon/product separation (v0.9.19) + * When displaying or editing cards, we make sure + we properly fallback to the homeURL field when + a work value is defined but we also have one other + untagged value defined. -2004-01-07 Marcus Mueller +2010-06-30 Francis Lachapelle - * {English/French}.lproj/default.strings: changed encoding from - ISO-Latin-1 to UTF-8, which is now the default (v0.9.18) + * UI/MailerUI/UIxMailEditor.m (-localeCode): new method that + returns the language two-letter code. Used to set the language in + the CKEditor instance in JavaScript. -2004-12-15 Marcus Mueller + * UI/PreferencesUI/UIxPreferences.m (-localeCode): idem. - * SOGoUserHomePage.m: added defaultAction to redirect to - "Calendar/" (v0.9.17) +2010-06-30 Ludovic Marcotte -2004-12-08 Marcus Mueller + * When displaying cards, we now make sure that + the "service" is non-empty prior creating the + proper field value. - * SOGoProductLoader.m, sogod.m: changed to use NGLogging (v0.9.16) +2010-06-30 Francis Lachapelle -2004-10-19 Marcus Mueller + * UI/WebServerResources/UIxPreferences.js (savePreferences): added + email validation of forward address (if enabled). - * SOGoUserHomePage.[wox|m]: changed hrefs to be computed dynamically - instead of being static (v0.9.15) + * UI/WebServerResources/MailerUI.js (onDocumentKeydown): improved + scrolling when using the arrows keys. -2004-10-18 Marcus Mueller +2010-06-29 Francis Lachapelle - * v0.9.14 + * UI/WebServerResources/UIxCalendarProperties.js + (onLoadCalendarProperties): we now make use of tabs in the + properties window. - * SOGoUserHomePage.wox: Changed label for "eMail" to "Mail" for - consistency - - * *.lproj/default.strings: added label "Mail" + * UI/Scheduler/UIxCalendarProperties.m (-isPublicAccessEnabled): + new method, copied from Common/UIxAclEditor.m. + (-_basePublicCalDAVURL): new method that return the public base + URL of the calendar. + (-publicCalDavURL, -publicWebDavICSURL, -publicWebDavXMLURL): new + methods to return the various public URLs associated to the calendar. -2004-09-26 Helge Hess + * SoObjects/SOGo/SOGoGCSFolder.m (-publicDavURL): new method to + return the public DAV URL of the folder. - * sogod.m: return 404 for favicon.ico queries (v0.9.13) +2010-06-28 Ludovic Marcotte - * fixed title bindings to const: in .wox (should be label:?) (v0.9.12) + * SOPE/sope-patchset-r1664.diff + Fixed the LF/CRLF encoding issue in NGSmtpClient.m + * SOPE/sope-patchset-r1664.diff + We now also consider https connections for WOHTTPURLHandle.m + * SoObjects/Appointments/SOGoWebAppointmentFolder.m + (-loadWebCalendar): + Modified so that we use SOPE's WOHTTPURLHandle class instead + of the NSURL code to fetch remote ICS calendars. This allow + use to support SSL by using SOPE class instead of the SSL + bundle of GNUstep (which is generally not available anywhere). -2004-09-25 Helge Hess +2010-06-28 Francis Lachapelle - * sogod.m: fixed a compile warning on OSX (v0.9.11) + * UI/Contacts/UIxContactEditor.m (-initSnapshot, -_saveSnapshot): + added support for "extended" work/home addresses. -2004-09-20 Helge Hess +2010-06-25 Francis Lachapelle - * SOGoUserHomePage.wox: added link to Mail (v0.9.10) + * UI/MailerUI/UIxMailMainFrame.m (-inboxData): new method used to + avoid an AJAX call when first loading the webmail module. It + returns a dictionary with the UIDs of the inbox folder as well as + the headers of the first few messages. -2004-08-27 Marcus Mueller + * UI/MailerUI/UIxMailListActions.m (-imap4SortOrdering): fixed an + issue that would not save the sorting state when matching the + default sort key but not the sort direction. + (-getUIDsAndHeadersInFolder:): new method that returns all UIDs of + a mail folder and the headers of the first corresponding messages. + (-getHeadersForUIDs:inFolder:): was getHeadersAction. It now + returns an array of arrays instead of an array of + dictionaries. The first array contains the previous dictionary + keys so we can easily reconstruct a dictionary in JavaScript. - * v0.9.9 + * UI/MailerUI/UIxMailEditor.m (-setSourceUID:, -sourceUID, + -setSourceFolder:, -sourceFolder): new methods to keep track of + the source folder replying or forwarding a message. + (-sendAction): now calls the JavaScript function refreshMessage + instead of refreshCurrentMailbox. - * English.lproj/default.strings, French.lproj/default.strings: - dictionaries for labels + * SoObjects/Mailer/SOGoDraftObject.m (-setSourceFolder:, + -setSourceFolderWithMailObject:, -sourceFolder): new methods to + keep track of the source folder replying or forwarding a message. + (-fetchMailForEditing:): fixed the message UID value. - * SOGoUserHomePage.wox: replaced constant strings with labels + * UI/WebServerResources/SOGoMailDataSource.js (remove): new + function that was integrated to invalidate. There are now + splitted. + (init): new function to initialize the data source with + pre-fetched uids and headers. + (getData): if the source is not yet loaded, the function will now + be called by the method _loadCallback. + (_getRemoteDataCallback): headers received from the server are no + formatted as a hash but as an array with the first entry + corresponding the previous hash keys. -2004-08-26 Helge Hess + * UI/WebServerResources/SOGoDataTable.js (initSource): was + setSource which was redefined to received a data source as + argument. + (invalidate): new function to refresh a single row. - * GNUmakefile.preamble: fixed superflous libjs (v0.9.8) + * UI/WebServerResources/MailerUI.js (openMailbox): added caching + of data sources (IMAP folders). The previous selection is now + restored when chaning folders. + (loadMessageCallback): the window is no longer reloaded if the + message doesn't exist; only the proper row is removed. + (refreshMessage): new function called after sending a message. + (onMailboxMenuMove, onMailboxMenuCopy): remove cache of target + folder. -2004-08-11 Helge Hess +2010-06-24 Francis Lachapelle - * added SOGoGroupPage and SOGoGroupsPage (default views for the group - folders) (v0.9.7) + * UI/MailerUI/UIxMailEditor.m (-sendAction): trigger the new + JavaScript function refreshMessage() instead of + refreshCurrentFolder() so we only refresh one row. + +2010-06-23 Francis Lachapelle + + * SoObjects/SOGo/SOGoUserDefaults.m (-language): verify that the + language is part of the supported languages of the system configuration. + + * UI/Scheduler/UIxCalMonthView.m (-init): retrieve the locale + associated to the user's language. + +2010-06-23 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoGCSFolder.m (-_lastModified): new method that + returns the last modified timestamp of the folder. Taken from + previous implementation of davCollectionTag. + (-davCollectionTag): make use of the new method above. + (_isValidSyncToken:): new method that perform a real validation of + the sync token passed as parameter. + (-davSyncCollection): make use of the new method above. + +2010-06-22 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoDAVAuthenticator.m (-checkLogin:andPassword:) + we save the CAS session information to the cache after a + successful authentication/validation. + +2010-06-18 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoDAVAuthenticator.m (-checkLogin:andPassword:) + (imapPasswordInContext:forServer:forceRenew:): when using CAS + authentication, make use of the password as a CAS ticket instead + of as identifier, since we don't make use of those in DAV. + +2010-06-17 Francis Lachapelle + + * UI/WebServerResources/UIxMailToSelection.js + (addressFieldLostFocus): improved intelligence when parsing + recipient. + (expandContactListCallback): we remove the container attribute to + avoid triggering the event autocompletion:changedlist once again. + + * UI/WebServerResources/SOGoAutoCompletion.js (bind): remove the + container attribute for the same reason. + +2010-06-17 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolders.m + (-reloadWebCalendars:): invoke -[self + _migrateWebCalendarsSettings] for when we are executing from a + non-Calendar module. + +2010-06-16 Francis Lachapelle + + * UI/WebServerResources/UIxListEditor.js (onDocumentKeydown): + submit form when pressing the return key. - * sogod.m: do not set SoRootURL manually (v0.9.6) + * UI/WebServerResources/UIxContactEditor.js (onDocumentKeydown): + idem. -2004-08-10 Marcus Mueller + * UI/WebServerResources/SOGoAutoCompletion.js + (performSearchCallback): fixed the position of the popup menu when + the input is within a relatively positioned div (mainly the + contacts list editor). - * French.lproj/Locale: minor changes to capitalization (v0.9.5) +2010-06-16 Wolfgang Sourdeau -2004-07-27 Marcus Mueller + * UI/Scheduler/UIxCalListingActions.m + (_fillBlocks:withEvent:withNumber:): "c_iscycle" and "c_recurrence_id" + have position 13 and 15 instead of 12 and 13, respectively. - * sogod.m: added static SoRootURL to context (v0.9.4) + * SoObjects/Mailer/SOGoDraftObject.m + (_purgeRecipients:fromAddresses:): we need to compare the email + addresses case-insensitively. -2004-07-19 Marcus Mueller +2010-06-15 Wolfgang Sourdeau - * sogod.m, */Locale: converted to UTF-8 for better editability (v0.9.3) + * SoObjects/SOGo/SOGoDAVAuthenticator.m (-checkLogin:password:): + perform authentication in LDAP inconditionnally and fallback on + CAS if enabled for DAV. -2004-07-19 Marcus Mueller +2010-06-14 Francis Lachapelle - * v0.9.2 + * UI/WebServerResources/UIxPreferences.js: Fixed a bug when saving + the preferences while some of the calendar categories are still editable. - * sogod.m: added localization methods. Current locale is put into - WOContext upon first request. All locales are cached in the - application object. +2010-06-11 Wolfgang Sourdeau - * [English,French].lproj: created. Put appropriate Locale - representations here. + * UI/Scheduler/UIxCalMainActions.m (-saveUrl:forCalendar:): + removed method since obsoleted by the code below. - * GNUmakefile: added LANGUAGES and LOCALIZED_RESOURCES. + * SoObjects/Appointments/SOGoWebAppointmentFolder.m + (-loadWebCalendar): removed the URL parameter since it's + read-only. + (-delete): simplified method. - * SOGoRootPage.wox: some debug code (for locales). + * SoObjects/Appointments/SOGoAppointmentFolders.m + (-newWebCalendarWithName:atURL:): new self-explicit method. + (-reloadWebCalendars): we now make use of the @"WebCalendar" name + as a property key. + (_migrateWebCalendarsSettings): new method that converts + WebCalendar entry keys in a format suitable for use as a property + key. - * created ChangeLog. -2005-12-19 Marcus Mueller + * UI/Scheduler/UIxCalFilterPanel.m (+initialize): commented out + the "All Events" option as this could cause a delay too long in IE + when drawing the list. - * GNUMakefile.preamble: provide all necessary library dependencies - for certain broken linkers - this won't harm platforms sporting - more capable linkers (v0.9.33) +2010-06-10 Wolfgang Sourdeau -2005-08-01 Helge Hess + * SoObjects/SOGo/SOGoDAVAuthenticator.m (-checkLogin:password:): + use CAS in proxy mode when SOGoDAVAuthenticationType is set to + "cas". + (-imapPasswordInContext:forServer:forceRenew:): now a copy of the + equivalent method in SOGoWebAuthenticator, when the above + condition is true. - * added FHS installation (v0.9.32) + * UI/Common/UIxPageFrame.m (-logoffPath): reverted previous change + as we now make use of the logoffAction to redirect to the CAS + logout url. -2005-07-26 Helge Hess + * SoObjects/SOGo/SOGoSystemDefaults.m (-davAuthenticationType): + new method similar to -authenticationType. Currently used for CAS + or non-CAS authentication. - * sql: added missing priority quickfield to SQLite tables (v0.9.31) + * UI/MainUI/SOGoUserHomePage.m (-logoffAction): split method in + smaller submethods for the sake of clarity. Also, we provide as + "CAS" mode where the redirection is made to the CAS logout page. -2005-07-13 Helge Hess + * SoObjects/SOGo/SOGoCASSession.m + (+CASSessionWithTicket:fromProxy:): added a new "fromProxy" parameter. + (+CASSessionWithIdentifier:fromProxy:): idem. + (-fetchData): if the session is used by a proxy client, we invoke + "proxyValidate" rather than "serviceValidate". - * OCSContactFieldExtractor.m: do not crash if the content is not a - proper property list, added ability to extract fields from a vCard - (v0.9.30) + * SoObjects/SOGo/SOGoDAVAuthenticator.m (-userInContext:): + reorganized method. -2005-07-12 Helge Hess + * SoObjects/SOGo/NSString+Utilities.m + (-composeURLWithAction:parameters:andHash:): don't attempt to add + parameters if the parameters argument is empty. - * added sql/profile-create.psql to create the user-profile database - table (not strictly related to OCSContentStore) + * UI/Common/UIxPageFrame.m (-canLogoff)): return YES when the + authentication type is set to "cas" and SOGoCASLogoutEnabled is + set. + (-logoffPath): return an href to the CAS service logout URL when + using "cas" as authentication type. -2005-07-05 Marcus Mueller + * SoObjects/SOGo/SOGoSystemDefaults.m (-CASLogoutEnabled): new + method that returns whether the "SOGoCASLogoutEnabled" ud is set. - * iCalEntityObject+OCS.m: fixed stupid extraction bug (v0.9.29) +2010-06-09 Wolfgang Sourdeau -2005-07-05 Helge Hess + * SoObjects/SOGo/SOGoUserFolder.m (_subFoldersFromFolder:): + restore the "owner" record that went bugously missing a few days + ago. - * v0.9.28 + * SoObjects/Appointments/SOGoAppointmentFolderObject.m + (-_folderCalendars): we now fetch the records only covering the + value of SOGoDAVCalendarStartTimeLimit in days with the current + date as the middle of the time range. - * added test_quick_extract.m tool to test the quick-field extraction +2010-06-08 Wolfgang Sourdeau - * OCSiCalFieldExtractor.m: properly deal with the iCal parser returning - just the iCalEvent + * UI/WebServerResources/UIxAttendeesEditor.js + (initializeAttendeeRole): new function that initialize an input's + row appearance based in the associated uid. -2005-07-04 Marcus Mueller + * UI/WebServerResources/SchedulerUI.js: + (onCalendarsMenuPrepareVisibility): the "export" menu option is + now disabled for non-owner users, since the function itself will + not do anything otherwise. + (onCalendarExport): we make use of the URLForFolderId method, + which reduces code size. - * v0.9.27 + * UI/Scheduler/UIxCalFolderActions.m (-exportAction): this web + method is now bound to the ICS folder object, thereby removing + duplicate code. - * iCalEntityObject+OCS.[hm]: new category used by OCSiCalFieldExtractor + * SoObjects/Appointments/SOGoAppointmentFolderObject.m + (-displayName, -davDisplayName): new accessors that are forwarded + to the real folder object. - * OCSiCalFieldExtractor.m: extract priority from iCal event + * UI/WebServerResources/UIxAclEditor.js: (onAclLoadHandler) we + bind the "unload" event rather than "beforeunload", which does not + seem to work on IE. - * appointment.ocs: added priority +2010-06-07 Wolfgang Sourdeau - * sql/generate-folderinfo-sql-for-users.sh: added priority quick field + * UI/WebServerResources/UIxAclEditor.js (onAclLoadHandler): add + tooltips to the special user entries. -2005-03-20 Helge Hess + * UI/Common/UIxAclEditor.m (_displayNameForUID:): + (-ownerName, hasOwner): removed useless methods. + (-currentUserDisplayName): make use of the method below from the um. - * moved most of the code to SOPE 4.5 sope-gdl1/GDLContentStore - (v0.9.26) + * SoObjects/SOGo/SOGoUserManager.m (-getFullEmailForUID:): + enhanced to return a proper string for users with an empty "cn" or + an empty "c_email". -2005-03-07 Helge Hess + * SoObjects/Appointments/SOGoAppointmentFolders.m + (-toOneRelationShipKeys): with a request from iCal, we return + nothing to avoid confusing iCal 3 with non-collection resources. - * appointment.ocs: added missing 'partstates' field (v0.9.25) + * UI/Common/UIxAclEditor.m (-isPublicAccessEnabled): we now expose + the state of public access in order to not show the "anonymous" + user when not needed. -2005-03-04 Helge Hess +2010-06-05 Wolfgang Sourdeau - * v0.9.24 + * UI/Scheduler/UIxCalendarProperties.m (-calDavURL, -webDavICSURL) + (-webDavXMLURL): new accessors for the URL now appearing at the + bottom of the properties page. - * ocs_gensql.m: started tool to create SQL CREATE from ocs model file + * UI/WebServerResources/generic.js (onBodyClickContextMenu): + leave the context menu to appear on "A" elements with a + "clickableLink" class. - * OCSFolderType.m: small change to the factory API, changed to use - NGResourceLocator + * SoObjects/SOGo/SOGoGCSFolder.m (-realDavURL): new method that + returns the the owner version of the URL to the current folder. -2005-03-03 Helge Hess +2010-06-04 Wolfgang Sourdeau - * OCSFolderManager.m: fixed a bug in subfolder listing (v0.9.23) + * UI/Scheduler/UIxCalParticipationStatusView.m: removed obsolete module. -2005-03-01 Marcus Mueller + * UI/Common/UIxUserRightsEditor.m + (-sendACLAdvisoryTemplateForObject:): don't attempt to send a + notification email to the "anonymous" or the default user. - * v0.9.22 + * SoObjects/Appointments/SOGoAppointmentFolderXML.[hm]: same as + below for XML. - * appointment.ocs: added 'cycleenddate' and 'cycleinfo' to address - previous performance issues + * SoObjects/Appointments/SOGoAppointmentFolderICS.[hm]: new class + module that exports personal calendars as one ICS file. - * OCSiCalFieldExtractor.m: set 'cycleenddate' and 'cycleinfo' for - recurrent events. Reverted setting of 'enddate' to the previous - behaviour since 'cycleenddate' is dedicated to the task now - - * iCalRepeatableEntityObject+OCS.[hm]: new category used by the - OCSiCalFieldExtractor to extract cycleInfo in an appropriate format + * SoObjects/Appointments/SOGoAppointmentFolders.m + (-folderObjectKeys): new method that return the "toOne..." keys + mapping XML or ICS representation of calendars. - * sql/generate-folderinfo-sql-for-users.sh, - sql/foldertablecreate-helge-privcal.psql, - sql/foldertablecreate-helge-privcal.sqlite, - sql/generate-folderinfo-sql-for-users-sqlite.sh: adjusted to new - schema +2010-06-03 Ludovic Marcotte -2005-03-01 Helge Hess + * Added Ukrainian translation (first pass) from + Oleksa Stasevych - * OCSFolder.m: added support for storing content and quick info in - the same table (untested) (v0.9.21) +2010-06-03 Wolfgang Sourdeau -2005-02-21 Helge Hess + * UI/WebServerResources/generic.js (CurrentModule): new function + that returns the name of the currently active module. - * v0.9.20 + * UI/WebServerResources/UIxAclEditor.js (addUser): take into + account the fact that the "default roles" button has been replaced + with a new "authenticated users" entry and that we want to keep + that entry at the end of the list. + (nodeForUser): added a "canSubscribe" parameter that determines + whether the "subcribe user" button should be displayed. + (openRightsForUserId): when the user id is "anonymous", the acl + window is reduced by 42 pixels. If the window to display is the + one pertaining to contacts rights, 21 pixels are substracted again. + (openRightsForDefaultUser): removed function. - * OCSFolderManager.m: removed quoting of SQL table and column names - (breaks with SQLite and isn't necessary for PG), fixed URL pooling - for SQLite + * UI/Scheduler/UIxCalUserRightsEditor.m (-objectRights): the list + of rights must be limited to the immutative ones whe the active + user is "anonymous". - * NSURL+OCS.m: use tablename for last path component + * UI/Common/UIxUserRightsEditor.m (-userIsAnonymousUser): new + accessor that returns whether the selected user is "anonymous", in + which case certain UI elements need to be adapted. -2005-02-12 Marcus Mueller + * UI/Common/UIxAclEditor.m (-_prepareUsers): added support for + "anonymous" user id. - * OCSiCalFieldExtractor.m: uses new iCalEvent API to determine correct - 'enddate' for recurrent events. This is an optimization which can - save quite some time for complex rules. (v0.9.19) +2010-06-02 Wolfgang Sourdeau -2004-12-17 Marcus Mueller + * UI/WebServerResources/*.js: replaced all remaining calls to + "getLabel" with calls to "_". - * v0.9.18 + * Tests/Integration/test-davacl.py (DAVPublicAccessTest): new test + class that implements tests strictly related to accessing the + "/public" prefix. + (DAVCalendarPublicAclTest.setUp): new test class that tests the + behaviour of calendar resources with regards to the super user, + a non-owner user, the "anonymous" user and the default user + (for default roles). + + * Tests/Integration/utilities.py (TestACLUtility.setupRights): we + excape the value for the "user" attribute with + xml.sax.saxutils.escape. + + * Tests/Integration/webdavlib.py (HTTPPUT.__init__): added the + "content_type" and "exclusive" optional parameters. The latter + implies the use of the "if-none-match" header. + (WebDAVPUT): removed useless operation class + + * SoObjects/SOGo/WORequest+SOGo.m (-handledByDefaultHandler): + fixed a bug where the -requestHandlerKey method would be invoked + on the "request" (NGHttpRequest) ivar rather than on self. + + * SoObjects/SOGo/SOGoUserFolder.m (_subFoldersFromFolder:): + thanks to the change below, the ACL checking code is no longer + needed here, where we can now concentrate on returning subfolders + metadata. + + * SoObjects/SOGo/SOGoParentFolder.m + (_fetchPersonalFolders:withChannel:): if the active user is not + the owner of the current parent folder, subfolders are returned + only when he/she has permissions set on them even for the + "personal" subfolder. + + * SoObjects/SOGo/SOGoGCSFolder.m (-aclsForUser:forObjectAtPath:): + extracted db code into a new "_realAclsForUser:forObjectAtPath:" + private method. When the "None" special role is returned, we + remove it from the list. Finally, we don't allow fetching default + roles when the specified uid is "anonymous". + + * SoObjects/Contacts/SOGoContactFolders.m (-appendSystemSources): + we now add public sources to the list of folders if and only if + the active user is the owner of the current parent folder. + + * SoObjects/SOGo/SOGoWebAuthenticator.m (-userInContext): if the + returned user has the login "anonymous", we return a corresponding + instance of SOGoUser to make sure methods are never invoked on + SoUser instances. + + * SoObjects/SOGo/SOGoUser.m (-rolesForObject:inContext:): now make + use of the new "isInPublicZone" method of SOGoObject to give the + "PublicUser" role to the unauthenticated user. + + * SoObjects/SOGo/SOGoObject.m (-isInPublicZone): same as below, + but we cache the result in a new "isInPublicZone" ivar. + + * Main/SOGo.m (-lookupName:inContext:acquire): when the "public" + key is requested in DAV mode, we now instantiate a + "SOGoPublicBaseFolder", if the "SOGoEnablePublicAccess" user + default is set. + (-isInPublicZone): new method that always returns "NO" and is + meant to be called from child objects. + + * SoObjects/SOGo/SOGoPublicBaseFolder.m: new class module that + enables anonymous access to resources. Instantiated from the + "SOGo" object. Implements a method "-isInPublicZone" that always + returns "YES". + +2010-06-02 Francis Lachapelle + + * UI/Scheduler/UIxCalListingActions.m (_userStateInEvent): fixed + array indexes that would cause the user participation state to no + longer be returned. + +2010-06-01 Wolfgang Sourdeau + + * SoObjects/SOGo/WORequest+SOGo.m (-handledByDefaultHandler): test + the request handler key instead of invoking isSoWebDAVRequest, + which performs additional and permission tests. + + * Tests/Integration/test-davacl.py + (DAVCalendarAclTest._testRights): reenabled test code even when no + classification rights are available. + + * SoObjects/SOGo/SOGoSystemDefaults.m (-enablePublicAccess): new + accessor for the SOGoEnablePublicAccess boolean user default. + + * SoObjects/SOGo/SOGoUserManager.m + (-contactInfosForUserWithUIDorEmail:): return a fixed dictionary + of information for uid = "anonymous". + + * Tests/Integration/test-*.py: take the API changes in + webdavlib.py into accounts with regards to XPath queries. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-_privacySqlString): renamed to the new standardized + "aclSQLListingFilter". Again, a difference is now made between + empty and nil return strings, which we now apply here too. + (-bareFetchFields:from:to:title:component:additionalFilters:, + (-fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:): + make use of the new semantics to the above method. + + * SoObjects/SOGo/SOGoGCSFolder.m (-aclSQLListingFilter): new + overridable method designed to return a filter to SQL queries that + avoids requesting records that are not meant to be visible to the + active user. Replaces and extends -[SOGoAppointmentFolder + _privacySqlString] with the additional convention that returning a + nil string will prevent any query at all. + (-toOneRelationshipKeys): new overriden method (see below). Make + use of the new aclSQLListingFilter method to retrieve records so + that unaccessible records are not even listed. + + * SoObjects/SOGo/SOGoFolder.m (-fetchContentObjectNames): removed + this useless alias to "toOneRelationshipKeys". + + * Tests/Integration/all.py: disable multilanguage tests by + default, reverting the "disbale-languages" cmd-line parameter to + "enable-languages". + + * Tests/Integration/webdavlib.py (WebDAVClient.__init__): made + "username" and "password" parameters optional to enable anonymous + connections. Also, M2Crypto.httpslib is imported explicitly only + when an SSL connection is requested. This renders this library + optional. + (WebDAVQuery.set_response): we now make use of the xml.etree API + instead of the one from xml.dom. + (xpath_evaluate): the above change makes this method obsolete + since XPath queries can now be performed directly on returned + elements. + + * SoObjects/SOGo/SOGoCache.m (-setValue:forKey:expire:): display + the memcached error string when an error occurs. + +2010-05-28 Francis Lachapelle + + * UI/MailerUI/UIxMailMainFrame.m (-saveColumnsStateAction): new + method to save the relative sizes of the columns widths. It will + also save the columns order when the web interface supports it. + + * UI/WebServerResources/SOGoResizableTable.js (saveColumnsState): idem. + +2010-05-28 Wolfgang Sourdeau + + * UI/WebServerResources/UIxComponentEditor.js: + (findDeleteAddress): new function that returns the properly + formatter full email of the delegate attendee. + (findAttendeeWithFieldValue): new function that wanders through + the list of attendees and returns the one that has the field + passed as parameter equal to the value passed as parameter. + +2010-05-27 Wolfgang Sourdeau + + * UI/MailerUI/WOContext+UIxMailer.m + (-mailEnvelopeAddressFormatter): declare result as + UIxEnvelopeAddressFormatter. + + * UI/MailerUI/UIxMailListActions.m (-getHeadersAction): + "addressFormatter" really is a UIxEnvelopeAddressFormatter. + + * UI/WebServerResources/UIxAttendeesEditor.js: (prepareAttendees): + automatically append a new attendee line when the window is loaded + and no attendee is present in the list yet. + +2010-05-27 Francis Lachapelle + + * UI/MailerUI/UIxMailListActions.m: renamed from + UIxMailListview.m. Associated .wox was removed and converted to a + WODirectAction. + (-getSortedUIDsAction): new method that returns a JSON + array with all the messages UIDs of the mailbox, sorted as requested. + (-getHeadersAction): new method that returns a JSON dictionary of + the headers of requested messages UIDs. + + * UI/Common/WODirectAction+SOGo.m (-pageResourceManager, + -urlForResourceFilename): methods copied from UIxComponent. + + * UI/WebServerResources/SOGoDataTable.js: new interface to add + "live loading" to a table. + + * UI/WebServerResources/SOGoMailDataSource.js: new class that + dynamically fetches the message headers depending on the requests + from a SOGoDataTable. + + * UI/WebServerResources/SOGoResizableTable.js: new interface to + add resizable headers to a table. + + * UI/WebServerResources/MailerUI.js (initMailer): associates a DIV + with the new SOGoDataTable interface. + (openMailbox): uses the new SOGoMailDataSource class to fetch the + messages list. + (messageListCallback): new function called to populate a row from + the data received from the SOGoDataTable interface and + SOGoMailDataSource class. + (updateMessageListCounter): new function to update the message + counter that appears in the headers table. + (toggleAddressColumn): new + function to toggle the address column header content + (From/To). This column changes depending on the mailbox type + selected (draft, sent or other). + + * UI/WebServerResources/HTMLElement.js (refreshSelectionByIds): + new method to restore the selection based on the elements IDs instead + of the elements themselves. + + * UI/MailerUI/UIxMailMainFrame.m (-showToAddress, + -columnsMetaData, -columnsMetaData, -columnsDisplayOrder, + -columnsOrder, setCurrentColumn, -currentColumn, -columnTitle): + moved those methods from UIxMailListView, since the messages table + is now populated with a JSON representation of the data. + +2010-05-26 Wolfgang Sourdeau + + * UI/WebServerResources/UIxAttendeesEditor.js: + (toggleOfficeHours): removed obsolete method. + (initialiseTimeSlotWidgets): we now initialize the time range + hours to the day start hour and day end hour, respectively, + instead of the event start and end time. + (handleAllDay): we make use of the "dayStartHour" and "dayEndHour" + variables instead of hardcoded values. Also, we hide the time + range widgets when this code is executed. + (availabilityController.onNextSlotClick, + availabilityController.onPreviousSlotClick): ignore clicks when a + request is already active. + +2010-05-25 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoCalendarComponent.m + (_bodyPartForICalObject:): new help method designed to return a + body part representing the event in iso-8859-1 and falling back on + UTF-8 if not possible. + + * SoObjects/Appointments/SOGoAptMailNotification.m (+initialize): + removed obsolete method. + (-viewTZ, setViewTZ): idem. + (-setupValues): the "viewTZ" is now initialized from here, using + the active user's defaults. + + * UI/WebServerResources/SchedulerUIDnD.js: + (SOGoEventDragEventCoordinates.setLocation) + (SOGoEventDragGhostController.setLocation): new self-explanatory + methods. + (SOGoEventDragController.attachToEventCells): now take the event + location SPAN into acccount when drawing the ghost. + +2010-05-21 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAptMailUpdate.m (-valueForProperty:): + set the timezone of date objects to the active user's timezone. + + * UI/WebServerResources/SchedulerUI.js: (resetCategoriesStyles): + fixed an exception occurring when + UserDefaults['SOGoCalendarCategoriesColors'] is undefined. + +2010-05-21 Francis Lachapelle + + * UI/WebServerResources/SchedulerUI.js (onMenuCurrentView): + propagate the click event when right-clicking on an event. + + * UI/WebServerResources/UIxPreferences.js (endEditable, + onColorPickerChoice): those functions will automatically trigger + the reload of the current module (hasChanged is set to 1). + + * UI/WebServerResources/SchedulerUI.js (resetCategoriesStyles): + new method to manage the CSS associated to the event categories. + (newBaseEventDIV): a CSS class is added to the event div if a + category is associated to the event. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-fetchCoreInfosFrom:to:title:component:additionalFilters:): added + c_category field so UIxCalListingActions can fetch it. + +2010-05-20 Wolfgang Sourdeau + + * UI/WebServerResources/SchedulerUI.js: (newEventDIV): we now add + a span with class "location" when the location field is available. + +2010-05-18 Wolfgang Sourdeau + + * SoObjects/Appointments/iCalEvent+SOGo.m (-quickRecord): extract + the event category into the c_category column. + + * SoObjects/Appointments/iCalToDo+SOGo.m (-quickRecord): extract + the task category into the c_category column. + + * UI/Scheduler/UIxCalListingActions.m (+initialize): added the + new "c_category" field to the list of fields that require + fetching. + + * UI/WebServerResources/SchedulerUI.js (newBaseEventDIV): shifted + field indexes by 1 from the 9th field, which is now the "category" + field. + + * Main/SOGo.m (-dispatchRequest:): send a "SOGoRequestDuration" + header back to the client with the time delta as value when + SOGoDebugRequests is set to YES. + +2010-05-17 Wolfgang Sourdeau + + * UI/WebServerResources/UIxAttendeesEditor.js + (redisplayEventSpans): "event spans" are now stored in a cache to + improve performance. + (availabilityController): new class designed to handle the + interaction with the availability widgets. + (availabilitySession): new class, used by the above, for + triggering availability searchs in the available freebusys. + Listeners should implement the "onRequestComplete" method. + (freeBusyRequest): new class designed to asynchronosly fetch a user + freebusy between specific dates. Makes use of an internal cache + and may trigger ajax requests covering more that the specified + range in order to take advantage of that cache. Listeners should + implement the "onRequestComplete" method. + (_freeBusyCacheEntry): new class, used internally by + "freeBusyRequests" for handling cache entries. + (initializeTimeSlotWidgets): new method that initializes the new + widgets that controls the time range behaviour in the freebusy + searches. + (editorConflictHander): new class that handles time conflicts. + + * UI/Scheduler/UIxCalListingActions.m (-findPossibleSlotAction): + removed action method and submethods since the slot resolution is + now performed directly in javascript to benefit from the freebusy + cache and to improve performance. + + * UI/MainUI/SOGoUserHomePage.m (-readFreeBusyAction): simplified + method by using -[self responseWithStatus:andString:]. + + * UI/WebServerResources/generic.js (log): improved the method's + performance by making use of DOM methods on the "logConsole" + object. + + * UI/WebServerResources/JavascriptAPIExtensions.js + (Date.prototype.clone): new method for copying the Date object + into another instance. + (Date.prototype.deltaDays): new method that returns the number of + days separating the current date with another one passed as + parameter. + (Date.prototype.beginOfDay): new method that returns a new date + instance corresponding to time 00:00 of the current instance. + +2010-05-06 Wolfgang Sourdeau + + * Tests/Integration/test-caldav-scheduling.py + (CalDAVPropertiesTest): new class for testing caldav-specific + properties + (CalDAVPropertiesTest.testDavScheduleCalendarTransparency): new + test method for testing "schedule-calendar-transp". + + * UI/Scheduler/UIxCalendarProperties.m (-includeFreeBusy) + (-setIncludeFreeBusy): new template accessors for the equivalent + methods below. + (-userIsOwner): new accessor that returns whether the current user + is the calendar's owner. + + * SoObjects/Appointments/SOGoFreeBusyObject.m + (-fetchFreeBusyInfosFrom:to:): test whether the listed calendars + must be included in the freebusy. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-setIncludeInFreeBusy, -includeInFreeBusy): new accessors that + determines whether the current calendar is included in the + computing of its owner's freebusy. + (-davScheduleCalendarTransparency) + (-setDavScheduleCalendarTransparency:): equivalent DAV accessors + for the above. + +2010-05-05 Francis Lachapelle + + * UI/WebServerResources/SchedulerUI.js (tasksListCallback): + refresh the tasks list when receiving the AJAX response instead of + emptying the list before sending the AJAX request. + +2010-05-05 Wolfgang Sourdeau + + * UI/WebServerResources/UIxAttendeesEditor.js (onContactKeydown): + the code for the "enter" and "tab" has been merged, since it was + similar. We also resolve individual contacts from list entries. + (resolveListAttendees): new function that fetches the indivual + entries from contacts lists. + (resolveListAttendeesCallback): callback for the above, that + create rows and input fields corresponding to the returned + entries, and trigger a contact search on each of them. + (performSearch): take an "input" field as argument since + "attendeesEditor.currentField" is no longer used. + (performSearchCallbacks): roles and partstats are now stored in + individual attributes rather than in the element class. We also + now behave differently depending on whether the event owner is + returned or another type of user, in order to match Lightning's + behaviour. + (newAttendee): no longer a callback, and now takes an optional + argument that indicates with attendee row precedes the one being + created. Also the new row is returned. + (checkAttendee): no longer a callback. Now takes an "input" + argument. + (onInputBlur): new callback that invokes "checkAttendee" and + handle the cleanup of the entries menu. + (displayFreeBusyForNode): use DOM methods rather than "innerHTML" + to modify the cell contents. + (updateFreeBusyDataCallback): freebusy requests are no longer + sequential. + (prepareAttendees): we now modify the DOM attributes rather than + the HTML attributes. + + * UI/Contacts/UIxListView.m (-propertiesAction): we now invoke + -[self responseWithStatus:andJSONRepresentation:] to build the + resulting WOResponse. + + * UI/Contacts/UIxContactFoldersView.m (-allContactSearchAction): + the type of returned component can now be deduced from the value + of "c_component" rather than from the c_name extension... Also, we + avoid autoreleasing variables where it's not needed. + (-contactSearchAction): removed obsolete method. + + * SoObjects/Contacts/SOGoContactGCSFolder.m (+initialize): new + method initializing "folderListingFields" as a static NSArray + rather than as macro. Added "c_component" to the list of fields to + retrieve. + + * UI/Scheduler/UIxComponentEditor.m (-ownerLogin): new accessor + the differenciate between the type of users in the list of + attendees. + + * UI/WebServerResources/UIxAttendeesEditor.js + (performSearchCallback): differenciate between the organizer user + and other attendees, as in Lightning. + + * UI/WebServerResources/UIxAppointmentEditor.js + (setupAttendeeNode): removed useless calls to $(). + + * UI/Scheduler/UIxComponentEditor.m + (-ownerIsAttendee:andClientObject:) + (delegateIsAttendee:andClientObject:): handle the case where the + user is found but has no RSVP or one with "FALSE" as value. + (-userHasRSVP): renamed from "userIsAttendee", since we don't + enable users without a RSVP set as "TRUE" to repond to + invitations. + (-currentAttendeeClasses): new method. + + * UI/MailPartViewers/UIxMailPartICalActions.m (-tentativeAction): + new action method for the "TENTATIVE" partstat. + + * SoObjects/Appointments/iCalEntityObject+SOGo.m + (-userIsParticipant:): renamed to "userIsAttendee:". We now + request the list of attendees rather than the list of + participants. + (-userAsParticipant:): renamed to "userAsAttendee:". Again, we + return the attendee matching the user, whether he/she is a + participant or not. + + * SoObjects/SOGo/iCalEntityObject+Utilities.[hm]: removed useless + module, since it implemented methods already found elsewhere. + +2010-05-04 Wolfgang Sourdeau + + * UI/WebServerResources/ContactsUI.js (initContacts): we must + configure the ab toolbar even when in popup mode, provided + "tabsContainer" does resolve to an existing element since the + script will be included for utility windows too. + +2010-05-04 Francis Lachapelle + + * SoObjects/Contacts/SOGoContactSourceFolder.m + (-lookupName:inContext:acquire:): verify the result of + lookupContactEntry as it will not necessarily return a contact. + * Updated version number to 1.2.2. + +2010-04-28 Wolfgang Sourdeau + + * Tools/sogo-tool.m (setupUserDefaults): new function that sets up + a few parameters on the user defaults. Notably, we override the + values for "SOGoLDAPQueryLimit" and "SOGoLDAPQueryTimeout" so that + they do not limit the amount of records that can be exported. + + * Tools/SOGoToolBackup.m (-proceed): we empty the autorelease pool + every 10 iterations to avoid an excess of unreleased LDAP + connections. + +2010-04-26 Ludovic Marcotte + + * Modified all folder/ACL templates in order + to remove (ie., comment out) broken links. + +2010-04-23 Wolfgang Sourdeau + + * Tests/Integration/test-webdav.py + (WebDAVTest.testPrincipalPropertySearch): new test method for + testing the "principal-property-search" REPORT on SOGo. + + * Tests/Integration/webdavlib.py: added copyright notice + (WebDAVPrincipalPropertySearch): new class that handles the + "principal-property-search" REPORT. + + * Main/SOGo+DAV.m (-davPrincipalPropertySearch:): restored method. + + * SoObjects/SOGo/SOGoUserFolder.m (-collectionDavKey:matches:): + moved this tester method for REPORT queries from SOGo+DAV.m. + + * Tools/SOGoSockDOperation.m (-_performSearch): we now support an + additional identifier in the object DN, for specifying specific + objects. + (_appendEntry:toResult:): we take the additional particle into + account when building the dn. Also, we add the "uid" field for + LDAP compliance. - * OCSiCalFieldExtractor.m: extract participants' state + * SoObjects/Contacts/SOGoContactSourceFolder.m + (_flattenedRecord:): new method with the repetitive code from + _flattenedRecords. Snipped to offer the same functionality with + single records. + (-lookupContactWithName:): implemented this method to ensure + compatibility with SOGoGCSFolder (and ). - * sql/generate-folderinfo-sql-for-user.sh, sql/appointment-create.psql, - sql/foldertablecreate-helge-privcal.psql: updated with new schema. + * SoObjects/Contacts/SOGoContactGCSFolder.m + (_qualifierForFilter:): adjusted qualifiers to perform the same + search that Thundebird perform in its local abooks. + (-lookupContactWithName:): fixed method to use an equality + qualifier. Simplified code by reducing the amount of required + variables. -2004-12-15 Marcus Mueller +2010-04-22 Wolfgang Sourdeau - * OCSiCalFieldExtractor.m: partmails + cn's are concatenated by '\n' - now - this directly eliminates any ambiguities. Also, instead of - using 'email' for partmails and orgmail, the extractor uses the - 'rfc822Email' value which strips away any preceeding 'mailto:' - prefix, compacting the representation and speeding up comparison. - Also, "iscycle", "isallday" and "isopaque" are now provided by - NGiCal and thus always extracted (v0.9.17) + * SoObjects/SOGo/SOGoGCSFolder.m (-renameTo:): when the active + user is a super user, we modify the real owner's version of the + displayname. -2004-12-13 Marcus Mueller + * Tests/Integration/webdavlib.py + (_WD_XMLTreeElement.appendSubtree): added handling of unicode + subtrees - * sql/generate-folderinfo-sql-for-user.sh: fixed critical error in - Contacts folder_info, type was 'Appointment' but MUST be 'Contact' - (v0.9.16) +2010-04-22 Francis Lachapelle -2004-12-10 Marcus Mueller + * Tests/Unit/TestiCalRecurrenceCalculator.m: new test module for + iCalRecurrenceRule. Added full test method for + recurrenceRangesWithinCalendarDateRange:. - * sql: updated all generation scripts to the latest version (v0.9.15) +2010-04-21 Wolfgang Sourdeau -2004-12-09 Marcus Mueller + * Main/SOGo+DAV.m: commented out incomplete code for handling + DAV:principal-property-search - * v0.9.14 +2010-04-20 Wolfgang Sourdeau - * appointment.ocs: added "ispublic", "isopaque", "status" and - "orgmail". + * SoObjects/SOGo/SOGoUser.m (-mailAccounts): use the user's first + email address as displayname for the mail account. Also, we avoid + autoreleasing objects that do not required to. - * OCSiCalFieldExtractor.m: updated to extract new fields (see above) + * UI/MailPartViewers/UIxMailPartHTMLViewer.m + (-startElement:namespace:rawName:attributes:): "ignoreContent" is + no longer a BOOL but an int, and was renamed to "ignoredContent". + This enables to fix a bug where an ignored content tag could be + "unignored" by being closed more than once, triggering the passing + of further content though the sanitizer. + Also, we now rename the "classid" and "data" attributes of "object" + elements to prevent cross-site scripting. + (+initialize): "applet", "frame", "frameset" and "iframe" a now + banned tags too. - * sql: updated generate-folderinfo-sql-for-users.sh +2010-04-19 Wolfgang Sourdeau -2004-10-19 Helge Hess + * SoObjects/Appointments/SOGoWebAppointmentFolder.m (-setReloadOnLogin:) + (-reloadOnLogin): new accessors to the "AutoReloadedWebCalendars" + settings for the "Calendar" module. - * OCSFolder.m: added new method -fetchContentsOfAllFiles method which - fetches the contents of all files stored in the folder (required for - iCal generation, such bulk fetches should be avoided if possible!) - (v0.9.13) + * UI/Scheduler/UIxCalendarProperties.m (-setReloadOnLogin:) + (-reloadOnLogin): new accessors. -2004-10-15 Marcus Mueller + * SoObjects/Appointments/SOGoAppointmentFolders.m + (-reloadWebCalendars:): moved method from + UI/Scheduler/UIxCalMainActions.m and added a boolean parameter to + it indicating whether the "reload on login" setting should be + honoured or ignored. - * OCSStringFormatter.[hm]: minor cleanup (v0.9.12) +2010-04-19 Francis Lachapelle - * v0.9.11 + * UI/Scheduler/UIxComponentEditor.m (-_loadRRules): added support + for all the rules that can be defined from the Web interface: + custom yearly/monthly/daily rules. + (-_handleCustomRRule:): idem. - * OCSStringFormatter.[hm]: new class to format strings according to - Database requirements (escaping etc.). + * UI/WebServerResources/UIxRecurrenceEditor.js: added support for + custom monthly and yearly occurrences. - * OCSFolder.m: uses new OCSStringFormatter now. + * UI/Scheduler/UIxCalListingActions.m (:_fixDates): the recurrence + ID must be adjusted even when in the month view. -2004-09-25 Helge Hess + * UI/Scheduler/UIxAppointmentEditor.m (-viewAction): no longer + necessary to adjust event date with the daylight saving time. - * fixed compilation on MacOSX (v0.9.10) +2010-04-19 Wolfgang Sourdeau -2004-09-10 Helge Hess + * UI/Contacts/UIxContactFolderActions.m (-exportAction): improved + method by providing the encoded filename of the address book + following rfc2047. Make the "uids" parameter optional: when + omitted, the address book is exported completely. - * v0.9.9 + * UI/WebServerResources/ContactsUI.js (getMenus): added entry for + exporting the address books, slightly reorganized the entries. + (onAddressBooksMenuPrepareVisibility): grey out the "export" entry + for LDAP address books. + (onAddressBookExport): new callback for exporting addressbooks + from the contextual menu. - * fixed some gcc warnings + * UI/WebServerResources/generic.js (URLForFolderID): avoid double + slashes in the URL returned for personal folders. - * GNUmakefile.preamble: added pathes to compile against an FHS SOPE +2010-04-16 Wolfgang Sourdeau - * OCSiCalFieldExtractor.m: fixed type of sequence iCalEvent field + * SoObjects/Appointments/SOGoCalendarComponent.m + (-lookupOccurence:): the looked up occurrence might be the master + event. -2004-09-01 Marcus Mueller + * UI/WebServerResources/UIxMailPopupView.js (initPopupMailer): we + assign window.messageUID from here now (by concatenating + "mailboxName" and "messageName", as it will disappear if the + window is reloaded. - * GNUmakefile: install type models into $(GNUSTEP_USER_ROOT) (v0.9.8) +2010-04-15 Wolfgang Sourdeau -2004-08-27 Helge Hess + * UI/WebServerResources/SchedulerUI.js (onDocumentKeydown): when + deleting an event, we must make sure that the even dialog + disappears, as it the case with the click on the corresponding + toolbar button. - * v0.9.7 - - * OCSChannelManager.m: use PostgreSQL as adaptor, not PostgreSQL72 - - * OCSFolder.m: added support for doing folder sorting in SQL + * Tools/SOGoToolRemove.m: new sogo-tool utility to remove user + data from the database. -2004-08-26 Helge Hess + * Tools/SOGoSockDOperation.m (_appendEntry:toResult:): include + "telephonenumber" in the entry information. - * v0.9.6 +2010-04-14 Wolfgang Sourdeau - * added OCSContactFieldExtractor - - * sql: added sample contact folder create scripts - - * OCSFolderType.m: read extractor class name from type model + * UI/WebServerResources/MailerUI.js (onMenuArchiveFolder): new + menu callback method that invokes "exportFolder" on the target + mailbox. + (saveAs): we use "window.location.href" instead of "window.open" + when exporting messages, as it avoids the flickering of opening an + ephemeral window. - * OCSFolderManager.m: added contact type model per default (v0.9.5) + * UI/MailerUI/UIxMailFolderActions.m (-exportFolderAction): new + action that triggers the archiving of the selected folder. -2004-08-25 Helge Hess - - * GNUmakefile: automatically install OCSTypeModels (v0.9.4) - -2004-08-15 Helge Hess - - * OCSFolder.m: added content deletion (v0.9.3) - - * OCSFolder.m: added sanity check to store method (v0.9.2) - -2004-08-14 Helge Hess - - * v0.9.1 - - * OCSiCalFieldExtractor.m: extract new quick fields: location, - partmails, sequence (does not yet handle allday and cycle due to - NGiCal restrictions) - - * appointment.ocs, sql/foldertablecreate-helge-privcal.psql, - sql/testapt-agenor-helge-privcal.psql, sql/appointment-create.psql: - added quick fields: isallday, iscycle, location, partmails, sequence - - * started ocs_recreatequick tool intended for recreating a quick table - based on the content table of a folder - -2004-07-20 Helge Hess + * SoObjects/Mailer/SOGoMailFolder.m + (-archiveUIDs:inArchiveNamed:inContext:): new version of + "-archiveUIDs:inContext:" taking an optional archive name as + argument, to be used as the filename of the attachment in the mime + headers of the response. Fixed a bug naming the messages following + their identifier's address rather than their identifier. We now + encode the provided filename as a qp utf-8 string when needed. + (-archiveAllMessagesInContext:): new method that uses the above + method for archiving all the messages in an archive named after + the folder's IMAP name. - * OCSChannelManager.m: fixed a bug in the channel GC which resulted - in an exception during the GC NSTimer + * UI/WebServerResources/SchedulerUI.js (onDocumentKeydown): new + callback method for handling keypresses. Initial code handles + event/task deletion. -2004-07-16 Helge Hess + * UI/WebServerResources/generic.js (onRowClick): fixed a typo. - * improved error handling in various files +2010-04-13 Wolfgang Sourdeau -2004-07-02 Helge Hess + * UI/WebServerResources/UIxContactEditor.js (initEditorForm): we + need to instantiate a tabs controller here too. - * OCSChannelManager.m: added garbage collector for channel pools +2010-04-12 Wolfgang Sourdeau -2004-06-30 Helge Hess + * SoObjects/SOGo/SOGoProxyAuthenticator.m (-passwordInContext:): + use the "authorization" header to determine the password of the + user, if any. - * OCSChannelManager.m: implemented pooling + * SoObjects/Appointments/SOGoAptMailReceipt.m (-getSubject) + (-getBody): taken methods from old version of + SOGoAptMailNotification, to avoid a crash regarding a lock of + method override. - * OCSFolder.m: added quick fetches + * UI/WebServerResources/SOGoTabsController.js: new js module for + handling tabs, replacing non-object code from generic.js. Added + handling of tab overflows, with the appearance of two left/right + buttons to make them scroll. - * GNUmakefile.preamble: fix link path +2010-04-09 Wolfgang Sourdeau - * GNUmakefile (libOGoContentStore_HEADER_FILES_INSTALL_DIR): install - headers in OGoContentStore + * UI/MailPartViewers/UIxMailPartICalActions.m + (_eventObjectWithUID:forUser:): fixed a typo that would cause the + found event to never be returned. + (-updateUserStatusAction): return a 404 status code when the + corresponding event is not found. - * GNUmakefile.preamble (ocs_ls_TOOL_LIBS): added static dependencies - for OSX + * SoObjects/Mailer/SOGoMailFolder.m (-aclsForUser:): don't fetch + ACL when the current user is not the mailbox owner. Also, we don't + set default viewing roles when the uid is not the active user. -2004-06-30 Marcus Mueller + * SoObjects/SOGo/SOGoObject.m (-labelForKey:): restored method. - * ocs_cat.m, ocs_ls.m, ocs_mkdir.m: fixed for gnustep compile. + * SoObjects/Appointments/SOGoAptMailUpdate.m, + SoObjects/Appointments/SOGoAptMailInvitation.m, + SoObjects/Appointments/SOGoAptMailICalReply.m, + SoObjects/Appointments/SOGoAptMailDeletion.m: revamped to make use + of language dictionaries rather than language-specific classes. + This hugely simplifies the code and ease the job of implementing + languages for SOGo. -2004-06-29 Helge Hess + * SoObjects/SOGo/SOGoObject.m (-labelForKey:) removed method, + obsoleted by the new one below. - * created ChangeLog + * SoObjects/SOGo/NSObject+Utilities.m (-labelForKey:inContext:): + new method that enables the querying of module based language + dictionaries from non SoComponent instances. -2005-07-15 Helge Hess + * Tests/Integration/utilities.py (TestUtility.fetchUserInfo): same + as below. - * common.make: fixed for OSX compilation + * Tests/Integration/test-webdav.py + (WebDAVTest.testExpandProperty): same as below -2005-07-12 Marcus Mueller + * Tests/Integration/test-caldav-scheduling.py (fetchUserInfo): + accept empty displayname property. - * common.make: provide default install dir and bundle extension to - WO bundles + * Tests/Integration/test-maildav.py: temporarily disabled test -2005-03-20 Helge Hess +2010-04-08 Wolfgang Sourdeau - * common.make: link against GDLContentStore instead of OGoContentStore + * UI/MailerUI/UIxMailEditor.m (-fromEMails, -from): make use of + the new _emailFromIdentity: method. + (_emailFromIdentity:): new method that returns a from header + compliant with rfc822. -2005-02-24 Helge Hess +2010-04-07 Wolfgang Sourdeau - * common.make (ADDITIONAL_LIB_DIRS): removed SOGoLogic from the linking - path + * UI/MailPartViewers/UIxMailPartICalActions.m + (_eventObjectWithUID:forUser:): we check that the target event + exists only in the specified user's calendar, as it may already + exists in subcribed calendars belonging to other attendees. -2005-02-17 Marcus Mueller + * SoObjects/Mailer/SOGoMailFolder.m (-toManyRelationshipKeys): we + now check if the mailbox exists before returning the message + identifiers. + (-lookupName:inContext:acquire:): we no longer check whether the + folder exists as it causes problems when it is a "noselect" parent + folder. Existence of folders is thus checked only when messages + are accessed. - * common.make: removed dependency to removed libSOGoLogic + * SoObjects/Mailer/SOGoMailAccount.m + (_appendNamespace:toFolders:): it may happen that the namespace + "folders" have already been added via the list command, therefore + we now ensure that the folder names do not already exist before + adding them to the array. -2005-02-15 Marcus Mueller +2010-04-06 Wolfgang Sourdeau - * v0.9.25 + * UI/WebServerResources/UIxPreferences.js (prototypeIfyFilters): + we don't attempt to duplicate the rules if they don't exist. + (copyFilter): same as above. - * GNUmakefile.preamble: added libNGiCal as a dependency + * UI/WebServerResources/UIxFilterEditor.js (setupFilterViews): we + execute the callback for the match type SELECT in order to show or + hide the rules area depending on its initial value. + (onRuleAddClick): when the rules array does not exist, we must + create it. - * Appointments/SOGoAppointmentObject.[hm]: added -event as a - convenience to retrieve a complete iCalEvent from the stored - representation. This is used by SOGoAppointmentFolder to perform - necessary range calculations on recurrent events. +2010-04-05 Ludovic Marcotte - * Appointments/SOGoAppointmentFolder.[hm]: extended -fixupRecord: and - -fixupRecords: to accept a fetchRange: as second parameter. This - is used for cyclic (recurrent) events to determine the required - 'amount' of fixup that needs to be done. During -fixupRecords: its - correctly determined now whether the record describes a recurrent - event - if that's the case, the whole event is retrieved and the - record gets duplicated (memory efficiently) as necessary to resemble - the appropriate fetch information in the desired range. + * UI/WebServerResources/SOGoRootPage.js + We now correctly use our rounded value for the + expire value when using ppolicy. -2004-12-22 Marcus Mueller + * UI/Contacts/UIxContactEditor.m + We now use URL: in cards w/o a home/work preferred + value as a home URL. - * v0.9.24 + * UI/Contacts/UIxContactEditor.m + We now fallback to TEL;VOICE: when neither HOME + or WORK are defined. We set that value as the + WORK telephone number in this particular case. - * Appointments/SOGoAppointmentFolder.[hm]: added -fetchFreebusy... - Removed all -fetchXXXInfosFromFolder: methods. There's a single - method to override now, making the job in SOGoGroupAppointmentFolder - much easier (to understand). +2010-04-02 Francis Lachapelle - * Appointments/SOGoGroupAppointmentFolder.m: added necessary fetch - abstraction. + * SoObjects/Appointments/SOGoCalendarComponent.m + (-sendEMailUsingTemplateNamed:forObject:previousObject:toAttendees:): + when looking for the organizer email, we now rely on the previous + event when the organizer is not defined in the new event. This is + important when the organizer is deleting the only attendee of an event. -2004-12-17 Marcus Mueller + * UI/WebServerResources/SchedulerUI.js (onClickableCellsDblClick): + hack to ignore double-click in the scrollbar in the month view & + fix for Firefox. - * Appointments/SOGoAppointmentFolder.[hm]: added "partstates" to - coreInfos for fetching. Also added new API to fetch a stripped down - version of coreInfos, suitable for overviews. (v0.9.23) +2010-04-02 Wolfgang Sourdeau -2004-12-15 Marcus Mueller + * SoObjects/Mailer/SOGoMailAccount.m (-updateFilters): we ensure + the active script is deactivated so that we can delete it on + Dovecot. This enables scripts to be deleted when all the filters + are disabled. - * Appointments/SOGoAppointmentFolder.m: default redirect is now - "schedule" instead of "weekoverview" (0.9.22) + * UI/Scheduler/UIxCalListingActions.m + (_fillFreeBusy:forUid:fromDate:): fixed a crash occuring when the + length of an event would happen after the period covered by the + freebusy. - * Appointments/SOGoAppointmentFolder.m: cleanup (v0.9.21) +2010-03-31 Wolfgang Sourdeau - * Appointments/SOGoAppointmentFolder.m: compile fix (v0.9.20) + * Tools/sogo-slapd-sockd.m, Tools/SOGoSockDOperation.m, + Tools/SOGoSockDScanner.m, Tools/SOGoSockD.m: new modules + implementing the sockd backend tool for slapd. -2004-12-13 Marcus Mueller + * Tools/sogo-tool.m (-run): return a proper return code rather + than "NO". - * v0.9.19 +2010-03-31 Francis Lachapelle - * Appointments/SOGoAppointmentFolder.[hm]: new method to fetch generic - fields (better suited for freebusy), fixed some "mailto:" prefix - madness + * SoObjects/Mailer/SOGoDraftObject.m (+initialize): updated the + User-Agent header with the proper version. - * Appointments/SOGoAppointmentFolder.m: fixed bug in - -uidsFromICalPersons: (v0.9.18) + * UI/WebServerResources/SchedulerUIDnD.js (onDragStart): don't + start the dragging when the target element has a scrollbar. -2004-12-10 Marcus Mueller +2010-03-30 Wolfgang Sourdeau - * Appointments/SOGoAppointmentFolder.m: added new quickinfo attributes - for fetching (v0.9.17) + * SoObjects/Contacts/SOGoContactSourceFolder.m + (-lookupName:inContext:acquire:): lookup the object in the + "childRecords" cache prior to fetching it from the source. If the + latter happens, the resulting record is cached. + (-lookupContactsWithFilter:sortBy:ordering:): populate the + "childRecords" cache with resulting records to avoid further + lookups of the same data. -2004-12-08 Marcus Mueller + * SoObjects/SOGo/LDAPSource.m + (-changePasswordForLogin:oldPassword:newPassword:perr:): fixed a + typo that could potentially cause crashes. - * GNUmakefile: added Sieve product +2010-03-29 Ludovic Marcotte - * Appointments/SOGoGroupAppointmentFolder.m, - Appointments/SOGoAppointmentFolder.m, SOGo/SOGoContentObject.m, - SOGo/SOGoUserFolder.m: changed to NGLogging. + SoObjects/Appointments/SOGoWebAppointmentFolder.m + We no longer use the NSData's method to load + the data as GNUstep will be caching it. -2004-08-26 Marcus Mueller +2010-03-28 Ludovic Marcotte - * added "Mailer" product + * Translated to French all the ppolicy stuff -2004-08-25 Marcus Mueller +2010-03-26 Ludovic Marcotte - * added "Contacts" product + * Updated the documentation with regard to + the passwordPolicy setting and deprecated + the WOApplicationRedirectURL setting. - * ChangeLog: created -2005-08-01 Helge Hess +2010-03-25 Wolfgang Sourdeau - * added FHS installation (v0.9.70) + * UI/PreferencesUI/UIxPreferences.m (-setHasChanged:) + (-hasChanged): restored accessors. + (-defaultAction): when "hasChanged" is YES, we request a reload of + the parent window. This feature was carelessly removed recently. - * SOGoObject.m: added class security declarations (previously in - product.plist of MainUI) (v0.9.69) +2010-03-25 Francis Lachapelle -2005-07-21 Helge Hess + * UI/WebServerResources/UIxContactsUserFolders.js + (onFolderSearchKeyDown, buildUsersTree): change color of search + text to red when no result returned from server. - * SOGoUser.m: added a method to fetch share/emitter address pairs from - the AgenorUserManager (v0.9.68) +2010-03-24 Ludovic Marcotte - * AgenorUserManager.m: rewrote to use NSMutableDictionary instead of - SOGoLRUCache. Flush caches every hour (configurable using - 'AgenorCacheCheckInterval' default). Added method to retrieve the - shares and the emitter emails in one step. (v0.9.67) + * Added a patch from Christophe Palanche and + Guillaume Schreiner which makes the SOGo + cache code usable with repcached + (http://repcached.lab.klab.org/) -2005-07-20 Helge Hess + * SOPE/NGCards/versitCardsSaxDriver/VSSaxDriver.m + (- _parseLine:) fixed incorrrect handling + of QP-encoded attributes. - * v0.9.66 + * SoObjects/SOGo/SQLSource.m - we now properly + escape quotes for SQL parameters coming from + user's input. - * SOGoContentObject.m: properly quote etag +2010-03-22 Ludovic Marcotte - * SOGoObject.m: changed to check etag when the content is accessed in - WebDAV mode and return a 304 if the tag stayed the same. - Do not strip quotes from etags in if-*match headers. - Properly implement if-none-match for GET requests. + * SoObjects/Mailer/SOGoDraftObject.m - we strip + the bcc header prior to sending mails. - * SOGoContentObject.m: moved generic etag checking to SOGoObject (to - share implementation with Mailer) (v0.9.65) +2010-03-22 Wolfgang Sourdeau -2005-07-19 Marcus Mueller + * UI/Scheduler/UIxCalListingActions.m + (_fetchFields:forComponentOfType:): fix dates only in day-based + views or for all-day events. - * AgenorUserManager.m: properly implemented internet/intranet vacation - message status detection (v0.9.64) + * Tests/Unit/TestiCalTimeZonePeriod.m: new test module for + iCalTimeZonePeriod. Added full test method for + _occurenceForDate:byRRule:. -2005-07-14 Marcus Mueller + * Tests/Unit/SOGoTestRunner.m (-init): messages must be + initialized to a mutable array. - * v0.9.63 +2010-03-19 Ludovic Marcotte - * SOGoAppointment.[hm]: new API to cancel appointments, NSCopying - support + * Added the SOGoiPhoneForceAllDayTransparency + preference (and its associated code to handle + it in SOGoAppointmentObject.m) to force + transparency on all-day events coming from + the iPhone-OS based devices. -2005-07-15 Helge Hess +2010-03-18 Ludovic Marcotte - * v0.9.62 + * Replaced SOGoUIxUserCanChangePassword with + SOGoPasswordChangeEnabled - * SOGoGroupFolder.m, SOGoUser.m: fixed a gcc 4.0 warning + * Removed unused prefs / code. - * GNUmakefile.preamble: properly use SYSTEM_LIB_DIR +2010-03-15 Wolfgang Sourdeau - * v0.9.61 + * SoObjects/SOGo/SOGoUserFolder.m (-davUsersQuery): we invoke + "prepareDAVResponse" only when there is content to return. - * SOGoContentObject.m: fixed a Cocoa warning + * UI/Scheduler/UIxCalListingActions.m (_fixDates:): the events + appearing in the month view needs to have their dates fixed too. + Also, the algorithm was lightly simplified. - * GNUmakefile.preamble: added proper linking flags for OSX + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-initWithName:inContainer:): "davTimeLimitSeconds" and + "davTimeHalfLimitSeconds" were erroneously reverted to 0 after + initialization. -2005-07-14 Marcus Mueller + * UI/WebServerResources/SchedulerUIDnD.js (onDragStart): typo. - * v0.9.60 + * UI/WebServerResources/SchedulerUI.js (_setupEventsDragAndDrop): + we were setting up drag controllers only for events belonging to + the current user. Now that we handle the "editable" flag, this + had become a limitation. - * SOGoAppointment.[hm]: added 'method' and 'userComment' accessors +2010-03-14 Ludovic Marcotte - * SOGoAppointmentICalRenderer.m: properly render 'method' of - appointment if it's set - otherwise assume 'REQUEST' + * Improved the password policy code. All corner + cases should now be handled correctly. -2005-07-14 Helge Hess +2010-03-12 Wolfgang Sourdeau - * SOGoUser.m: added -homeFolderInContext: and - -schedulingCalendarInContext: methods (v0.9.59) + * SoObjects/Appointments/SOGoAppointmentObject.m + (-newOccurenceWithID): moved timezone handling code from + UIxAppointmentEditor to here. Simplified that code. - * moved in SOGoUser and SOGoAuthenticator from Main (v0.9.58) +2010-03-11 Wolfgang Sourdeau -2005-07-14 Marcus Mueller + * SoObjects/SOGo/SOGoUserFolder.m (_davFetchUsersMatching:): we + were still using the "info" field from the result set for extra + user info, however that field as been renamed "c_info" a couple of + months ago. - * AgenorUserManager.[hm]: added accessors and cache for the - 'mineqMelReponse' flag. Please note that the implementation isn't - fully fleshed out because the technical specification isn't correct. - (v0.9.57) + * UI/WebServerResources/generic.js (SetLogMessage): we must attach + the message to the container even when the message is null. - * AgenorUserManager.[hm]: added accessors and cache for the - 'mineqOgoAccesInternet' flag (v0.9.56) +2010-03-10 Wolfgang Sourdeau -2005-07-14 Helge Hess + * UI/WebServerResources/SchedulerUI.js (updateCalendarProperties): + the displayname can now also be set by subscribers, in their own + environment. - * SOGoContentObject.m: added empty davCopy/davMove methods (v0.9.55) + * UI/Scheduler/UIxCalendarProperties.m (-setCalendarName:): this + action is now unconditional. + (-calendarNameIsDisabled): removed obsolete accessor. - * v0.9.54 - - * SOGoContentObject.m: added support for special 'new' key (server will - assign a name and add the new location in a special response header) - - * SOGoFolder.m: added +globallyUniqueObjectId (previously the method - was duplicated in each subclass) - - * SOGoContentObject.m: added transactionally save etag-checks in PUT - (use the etag value as the baseVersion in the content store) - (v0.9.53) + * SoObjects/SOGo/SOGoGCSFolder.m + (-setFolderPropertyValue:inCategory:): new setter for properties + pertaining to the ACTIVE user (who may or may not be the owner). + (-folderPropertyValueInCategory:): getter corollary to the new + method above. + (-_fetchDisplayNameFromSubscriber): new method for getting the + display name of the folder for the active user. + (renameTo:): split the method in an instance for the owner and + another one for subscribers. Respectively: _ownerRenameTo: and + _subscriberRenameTo:. The latter invoke the new methods above. -2005-07-13 Helge Hess + * SoObjects/Appointments/SOGoAppointmentFolder.m + (_setCalendarProperty:forKey:): replaced method with a new + and more generic accessor from SOGoGCSFolder + "setFolderPropertyValue:inCategory:". - * v0.9.52 +2010-03-09 Wolfgang Sourdeau - * SOGoObject.m: properly add etag during a GET (if available) - - * SOGoContentObject.m: generate etag from content object version, added - methods to check request preconditions, check preconditions prior - running a PUT, added new etag after running a PUT - - * SOGoObject.m, SOGoFolder.m: added +version methods to detect fragile - base class issues (v0.9.51) + * UI/Common/WODirectAction+SOGo.m + (-responseWithStatus:andJSONRepresentation:): we now add the + "application/json" content type to the response object. - * SOGoFolder.m: changed to use plain column names (v0.9.50) + * UI/SOGoUI/UIxComponent.m + (-responseWithStatus:andJSONRepresentation:): we now add the + "application/json" content type to the response object. -2005-07-12 Marcus Mueller + * UI/MainUI/SOGoUserHomePage.m (_usersResponseForResults:): we now + return a JSON response with an encoded array of arrays. - * SOGoUserFolder.m: forbid access (403) to SOGoGroupFolders if access - is not from the Intranet (v0.9.49) + * UI/WebServerResources/UIxContactsUserFolders.js + (onFolderSearchKeyDown): same as below. + (addUsersLineToTree): the responses for user search queries are + now JSON-encoded arrays, which avoids a lot of parsing issues and + reduces the size of the code. -2005-07-12 Helge Hess + * UI/WebServerResources/generic.js (IsCharacterKey): new helper + function that returns whether the pressed keycode is one that + changes the content of input fields. + (onSearchKeyDown): simplified method by making use of the new + function above. + (onSearchBlur): clear the timer if the field is empty, to avoid a + useless search on the ghost phrase. - * AgenorUserDefaults.m: added automagic profile row creation (v0.9.48) +2010-03-08 Wolfgang Sourdeau - * AgenorUserDefaults.m: implemented saving of changed profiles - (v0.9.47) + * UI/WebServerResources/generic.js (onSearchKeyDown): set the + search timeout to 500 ms instead of 1 sec. -2005-07-12 Marcus Mueller + * UI/WebServerResources/UIxContactsUserFolders.js + (onFolderSearchKeyDown): move the start of the animation to + onSearchFormSubmit. - * AgenorUserManager.[hm]: new API for extracting UIDs from iCalPersons - (v0.9.46) + * UI/WebServerResources/generic.js (createDialog): new method + designed to provide a normalized interface for creating popup + dialogs with DOM methods. + (createButton): same as above for buttons. + (SetLogMessage): new normalizing method for putting typed log + message in specified containers via DOM methods. -2005-07-12 Helge Hess + * UI/WebServerResources/SOGoRootPage.js: added code for popping up + a password change dialog whenever one is required by the server. - * v0.9.45 - - * AgenorUserDefaults.m: properly fetch profile contents - - * agenor_defaults.m: read operation can now return all defined keys - - * v0.9.44 + * UI/MainUI/SOGoRootPage.m (_responseWithLDAPPolicyError:): new + method for returning password change and login-based LDAP policy + errors. - * AgenorUserDefaults.m: added typed value accessors and proper - initializers - - * AgenorUserManager.m: added 'AgenorProfileURL' default to configure - the database location of the user profile table - - * finished agenor_defaults tool + * UI/WebServerResources/PasswordPolicy.js: new module that handle + the password change protocol and error codes. -2005-07-12 Helge Hess + * UI/WebServerResources/UIxPreferences.js + (onComposeMessagesTypeChange): we now do the proper widget + wizardry via DOM methods to alternate between the text-based or + html-based editor for changing the user's signature when the + message format is switched between "text" and "html". + (onChoiceChanged): removed obsolete callback. - * v0.9.43 + * UI/PreferencesUI/UIxPreferences.m (-init): removed the + "hasChanged" and "composeMessageTypeHasChanged" ivars, as they are + no longer needed. + (-setHasChanged, -hasChanged): removed obsolete accessors. + (-defaultAction): simplified method as we no longer have to manage + the handling of the change of message format from here. - * added agenor_defaults tool to test defaults functionality +2010-03-08 Ludovic Marcotte - * AgenorUserManager.[hm]: added -getUserDefaultsForUID: method to - retrieve the profile of a user (incomplete) + * Added SoObjects/SOGo/SOGoConstants.{h,m} - a new file + that will hold eventually all SOGo constants. - * added AgenorUserDefaults class (incomplete) as a wrapper for the - profile data of Agenor users + * Reworked the authentication code to use a generic + method for password authentication (LDAP + SQL). -2005-07-08 Helge Hess + * Added password change support - * v0.9.42 - - * added agenor_emails4uid tool to check whether the - uid=>allowed-from-mails discovery in AgenorUserManager works - - * AgenorUserManager.m: added -getSharedMailboxEMailsForUID: method to - discover the shared emails the user is allowed to post from, - added caching of shared emails and Cyrus-logins + * Updated the SOPE patchset which now includes + password-policy support. - * WOContext+Agenor.m: use SOGoInternetDetectQualifier for detecting - Internet access level (v0.9.41) +2010-03-05 Wolfgang Sourdeau -2005-07-08 Marcus Mueller + * SoObjects/SOGo/NSString+DAV.m (-davSetterName): enhanced so that + DAV properties directely passed as parameters (and not as dav + method names deduced from DAVPropMap.plist) are handled properly + too. - * WOContext+Agenor.[hm]: new category for discovering if the current - context is via access from the intranet. (v0.9.40) + * SoObjects/SOGo/SOGoUserFolder.m (-setDavSignature:): new + accessor for setting the + {urn:inverse:params:xml:ns:inverse-dav}signature property via DAV. -2005-07-07 Helge Hess - - * added agenor_shares4uid tool to check whether the uid=>shared mailbox - discovery in AgenorUserManager works - - * AgenorUserManager.m: fixed a major string scanning bug in - _serverCandidatesForMineqMelRoutage: method, - added -getSharedMailboxAccountStringsForUID: method to discover - shared IMAP4 accounts (v0.9.39) +2010-03-02 Wolfgang Sourdeau -2005-07-07 Helge Hess + * UI/PreferencesUI/UIxPreferences.m (-nameLabel, -colorLabel): + removed useless methods. - * AgenorUserManager.m: added a simple -description method (v0.9.38) + * SoObjects/SOGo/SOGoUserDefaults.m (-sieveFilters) + (-setSieveFilters:): new accessors. - * added agenor_email2uid.m tool to check whether the email=>uid mapping - in AgenorUserManager works - -2005-07-06 Marcus Mueller + * SoObjects/SOGo/SOGoDomainDefaults.m (-sieveScriptEnabled): new + accessor. - * v0.9.37 + * SoObjects/Mailer/SOGoSieveConverter.m: new class for producing + sieve scripts from user defaults. - * SOGoUserFolder.m: added 'freebusy.ifb' as an object to the - collection for proper display via DAV. + * UI/PreferencesUI/UIxFilterEditor.m: new template class for + editing sieve scripts. - * SOGoAppointmentICalRenderer.m: fixed header inclusion + * UI/WebServerResources/generic.js (_): new gettextable equivalent + of "getLabel". - * AgenorUserManager.[hm]: added proposed future API for discovering - URLs for free/busy information (implementation currently returns - nil) +2010-03-01 Wolfgang Sourdeau -2005-07-05 Marcus Mueller + * SoObjects/SOGo/SOGoDomainDefaults.m (-imapFolderSeparator): new + method. - * SOGoAppointment.m: fixed a wrong -release (v0.9.36) +2010-03-01 Francis Lachapelle -2005-03-25 Helge Hess + * UI/WebServerResources/UIxMailEditor.js (-clickedEditorSend): + fixed wrong condition that would result in refusing to send a + message after having clicked on the Save button. - * SOGoObject.m: fixed DELETEAction to return a boolean if the delete - was successful (required by SoObjectRequestHandler) (v0.9.35) +2010-02-23 Ludovic Marcotte -2005-03-20 Helge Hess + * Added a patch from Adam Yearout + to fix OpenSUSE compilation issues. - * changed to use GDLContentStore (v0.9.34) + * Added a patch from dev@ib.pl to make the memcached port + being used by SOGo configurable using the SOGoMemcachedPort + default option. -2005-03-03 Marcus Mueller +2010-02-19 Wolfgang Sourdeau - * SOGoGroupFolder.m: switched logging to NGLogging (v0.9.33) + * UI/Scheduler/UIxCalListingActions.m + (_fetchFields:forComponentOfType:): mark events of remote + calendars as non-editable. -2005-03-02 Marcus Mueller + * UI/Common/UIxPageFrame.m (-userIdentification): ancient + "userEmail" method, with a more generic name. Also we now return + the user's complete name. - * NSObject+AptComparison.[hm]: new comparison method. This is used - in SOGoAppointmentFolder currently. (v0.9.32) + * SoObjects/Mailer/SOGoMailAccount.m (-imapAclConformsToIMAPExt:) + now based on the server's capability string. -2005-02-20 Helge Hess + * UI/MailerUI/UIxMailFolderActions.m (-createFolderAction): we + check if the clientObject responds to "aboluteImap4Name", + otherwise the subscription is made to the folderName alone. - * AgenorUserManager.m: refactoring of the LDAP fetch code, added the - 'SOGoFallbackIMAP4Server' default to configure the IMAP4 server when - LDAP is disabled (v0.9.31) + * Main/SOGo.m (-run): moved initialization logs from +initialize + here, so that they are output to the redirected output stream. + Added version number to "starting" line. -2005-02-17 Helge Hess +2010-02-18 Ludovic Marcotte - * moved in code from libSOGoLogic (unnecessarily a separate library) - (v0.9.30) + * UI/MailerUI/UIxMailFolderActions.m: Modified the + code so that we correctly subscribe/unsubscribe to + the folders (old/new) when renaming or deleting + a folder. Also corrected the creation of subfolders + by using -absoluteImap4Name. -2005-02-10 Helge Hess +2010-02-18 Wolfgang Sourdeau - * SOGoObject.m: fixed a warning on MacOSX (v0.9.29) + * Tools/SOGoToolRestore.m (+initialize): removed method. + (-run): make use of the newly publicized SOGoProductLoader for + loading needed products. -2005-02-07 Helge Hess + * SoObjects/SOGo/SOGoProductLoader.m (-loadAllProducts): new name + for "loadProducts". Do not list product directories where no + products were loaded. + (-loadProducts:): new method accepting an array of products to + load from SOGo library directories. - * SOGoObject.h: added prototype for GETAction (v0.9.28) + * SoObjects/SOGo/SOGoBuild.m: moved from Main/build.h to here. -2005-02-06 Helge Hess + * SoObjects/SOGo/SOGoProductLoader.m: moved from Main/ to here. - * added -outlookMessageClass / -outlookFolderClass (v0.9.27) + * UI/MainUI/SOGoRootPage.m (-_casDefaultAction): when the local + cache has expired, we create a "cas-location" cookie before + redirecting to the CAS login page and we redirect the user back to + that page when the login has been completed. This way, the + event creation window or any AJAX request would seamlessly restart + where "interrupted" by the login process. -2004-10-19 Helge Hess + * SoObjects/Appointments/SOGoCalendarComponent.m + (-sendEMailUsingTemplateNamed:forObject:previousObject:toAttendees:): + added a few headers to the ical attachment that could help + work-around bugs occurring with Outlook: content-transfer-encoding + = qp. Moreover a \r\n is added to the iCalString. - * SOGoFolder: added method -fetchContentStringsAndNamesOfAllObjects - which fetches the contents of all folders objects (avoid to use this - high overhead method!). Required for iCalendar file generation. - (v0.9.26) + * SoObjects/SOGo/SOGoCache.m: worked around in bug in GCC + occurring with libmemcached >= 0.37 by making the servers and + handle ivars static globals. -2004-10-08 Helge Hess - - * SOGoUserFolder.m: enhanced object lookup so that when a Calendar - is opened with an extensions (eg "Calendar.ics") (v0.9.25) - - * SOGoFolder.m: added facility to define default extensions (v0.9.24) +2010-02-17 Wolfgang Sourdeau - * SOGoObject.m: fixed not implemented return status (501, not 502) - (v0.9.23) - - * SOGoUserFolder.m: do not try to fetch file names in this folder - (v0.9.22) + * UI/WebServerResources/SchedulerUI.js + (updateEventFromDraggingCallback): invoke refreshEventsAndDisplay + instead of changeCalendarDisplay alone. - * v0.9.21 +2010-02-16 Wolfgang Sourdeau - * SOGoContentObject.m: added PUTAction: + * UI/WebServerResources/SchedulerUI.js (onMenuCurrentView): we + hide the "eventDialog" when the menu pops up. - * SOGoObject.m: implemented special WebDAV support in GETAction: + * UI/WebServerResources/UIxColorPicker.js (onChooseColor): the + colour window is now closed once the user has made his choice. - * SOGoFolder.m: added -toOneRelationshipKeys method (enables listing of - contained objects in WebDAV), added container name to logging prefix, - explicitly mark as WebDAV collection +2010-02-15 Wolfgang Sourdeau - * SOGoContentObject.m: mark as WebDAV non-collection + * UI/WebServerResources/generic.js (getTarget): ensure the + returned target has been initialized with prototype extensions. -2004-10-07 Helge Hess + * UI/WebServerResources/SchedulerUI.js (gotoToday): set the + selected day to the today date. - * SOGoUserFolder.m: added toManyRelationshipKeys, marked as WebDAV - collection (v0.9.20) + * UI/WebServerResources/SchedulerUIDnD.js + (SOGoEventDragGhostController.showGhosts): ghosts now also have an + "eventInside" DIV to contain the title and draw the border. This + avoids the overflow of extra pixels added to the DIV heights for + start and end ghosts. + (SOGoEventDragController.attachToDayNode): we determine whether + the event cell are for an invitation, in which case the dragging + event will be aborted even though the user is technically the + "owner" of the represented event. + +2010-02-13 Wolfgang Sourdeau + + * UI/WebServerResources/SchedulerUI.js (attachDragControllers): we + only attach handlers to subnodes of #calendarHeader DIV.days, not + ..DIV.dayLabels. + (adjustCalendarHeaderDIV): adapted for IE. + +2010-02-12 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalMonthView.m (-currentDayId): new method. + (-currentDayNumber): new method. + + * UI/Scheduler/UIxCalDayTable.m (-currentHourId): new method. + (-currentAllDayId): new method. + (-currentDayId): new method. + (-currentHourLineId): removed method because hourlines are no + longer present in the template. + (-currentDayNumber): new accessor, used in javascript to recover + selection faster when the currently selected date is no longer + available. + + * UI/WebServerResources/SchedulerUIDnD.js (ScrollController.init): + enhanced scrolling by setting a limit of 6 steps rather than 2. + + * UI/WebServerResources/SchedulerUI.js (newEventDIV): the right + limit of event cells is setup using the "right" attribute rather + than "width", to avoid issues with cell borders. + (adjustCalendarHeaderDIV): new method that setups the proper + ¨right" attribute for the "calendarHeader" element on non-IE + browsers. This reduces the amount of hacks and failed attempts to + take the day view scrollbar into account. + (changeWeekCalendarDisplayOfSelectedDay): check the class of DIV + elements to avoid using fixed references that might change over + time and cause exceptions. + (onViewEventCallback): use prototype-expanded objects to avoid + exceptions on IE. + +2010-02-11 Wolfgang Sourdeau + + * UI/WebServerResources/SchedulerUIDnD.js: adapted code for + all-day events and monthly view. Added code to avoid modifying + events when the pointer is out of the draggable zone. + + * UI/WebServerResources/SchedulerUI.js: adapted code for + all-day events and monthly view. + + * UI/Scheduler/UIxAppointmentActions.m (-adjustAction): we now + handle all-day events. + +2010-02-10 Wolfgang Sourdeau + + * UI/WebServerResources/SOGoRootPage.js (initLogin): discard the + login cookie with the appName set as cookie path. + + * UI/WebServerResources/SchedulerUI.js (newEvent): removed the + useless "sender" parameter and added "day", "hour" and "duration" + parameters to obtain a more generic method. + (newEventFromWidget): new method the previous "newEvent" incarnation. + (minutesToHM): new method that converts an amount of minutes into + a string value suitable for an "hm" query parameter. + (newEventFromDragging): new method suitable as a drag and drop + callback for creating events. + (updateEventFromDragging): new method suitable as a drag and drop + callback for adjusting events. + (_setupEventsDragAndDrop): new method that setups drag and drop + controllers for instances of events per calendar. + (attachDragControllers): new method that instantiate a drag and + drop controller for each day column. + + * UI/Scheduler/UIxCalListingActions.m + (_fillBlocks:withEvent:withNumber:): work around the situation + where the event start would occur after its end, causing a crash. + Still emits a warning. + + * UI/Scheduler/UIxCalDayTable.m (-currentHourLineId): new method + replacing "currentHourLineClass". The hour identifier now being + the value of the element id, the hourline classes are populated + from the template itself. + + * UI/WebServerResources/generic.js (generateQueryString): adjusted + method to take only "string" and "number" typed values into + account when constructing URL parameters. + + * UI/WebServerResources/SchedulerUIDnD.js: new js module with + classes implementing drag and drop of events. + + * UI/Scheduler/UIxOccurenceDialog.m (-confirmAdjustmentMethod): + new method for displaying a dialog suitable for start and duration + adjustments. + + * UI/Scheduler/UIxAppointmentActions.m (-adjustAction): new method + that takes a "days", a "start" and a "duration" relative + parameters to adjust the current event or occurrence. + + * UI/Scheduler/UIxAppointmentActions.[hm]: new module implementing + a WODirectAction class for ajax calls for appointments. + +2010-02-08 Francis Lachapelle + + * UI/Contacts/UIxContactFoldersView.m (-verticalDragHandleStyle): + new method (was missing), borrowed from UIxCalMainView.m. + (-horizontalDragHandleStyle): idem. + (contactsListContentStyle): idem. + + * UI/WebServerResources/ContactsUI.js (-onAddressBookRemove): + avoid selecting the personal addressbook prior to obtaining the + user's answer. + + * UI/MailerUI/UIxMailListView.m (-messageSize): improved + formatting of message size. + +2010-02-03 Wolfgang Sourdeau + + * UI/MainUI/SOGoRootPage.m (-_standardDefaultAction): add an + ending "/" to the active url to avoid a mismatch with the login + cookie path. + +2010-02-02 Wolfgang Sourdeau + + * SoObjects/Contacts/SOGoContactLDIFEntry.m + (-initWithName:withLDIFEntry:inContainer:): removed "name" ivar + which had the same purpose as "nameInContainer". We also invoke + [self initWithName:inContainer:] rather than [self init]. + Incidentally this fixes a leak. + + * SoObjects/Mailer/SOGoMailBodyPart.m (-imap4URL): we assign our + "imap4URL" ivar so that it can be access directly in order + methods. + + * Tests/Integration/test-davacl.py + (DAVCalendarAclTest._testEventDAVAcl): test + current-user-privilege-set on tasks too. + + * SoObjects/Appointments/SOGoCalendarComponent.m + (+webdavAclManager): moved method from SOGoAppointmentObject, so + that tasks can benefit from it too. + + * SoObjects/Appointments/SOGoAppointmentObject.m + (+webdavAclManager): view-whole-component and view-date-and-time + are now independent and children of "all". "read" is declared as + equivalent to the new "SOGoDAVReadPermission". This hack avoids + problems with ACL hierarchy. + + * Tests/Integration/test-davacl.py (DAVCalendarAclTest._putTask): + new method that create tasks in the test collection based on a + template. + (DAVCalendarAclTest._currentUserPrivilegeSet): new method that + request the {DAV:}current-user-privilege-set property on the + specified DAV resource. Also checks whether the request expectedly + fails or succeeds. + (DAVCalendarAclTest._comparePrivilegeSets): new helper method to + compare to arrays. + (DAVCalendarAclTest._testCollectionDAVAcl): new test helper method + for ensure that DAV permissions are conform to the SOGo + permissions on collections. + (DAVCalendarAclTest._testEventDAVAcl): same as above for events. + +2010-01-30 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoWebAuthenticator.h: conforms to + SOGoAuthenticator protocol. + + * SoObjects/SOGo/SOGoDAVAuthenticator.h: conforms to + SOGoAuthenticator protocol. -2004-09-29 Helge Hess - - * SOGoObject.m: added -fetchSubfolders method to resolve all - toManyRelationshipKeys to SOPE objects (v0.9.19) - -2004-09-20 Helge Hess + * SoObjects/SOGo/SOGoProxyAuthenticator.m + (-imapPasswordInContext:forServer:forceRenew:): added method. + Returns nil when renew is set to YES so that no real retry occurs + (convention: null password is NO password) but returns an empty + string by default. + + * SoObjects/SOGo/SOGoUserFolder.m (-ownerInContext:): invoke + setOwner: to retain user. + + * SoObjects/SOGo/SOGoObject.m (-initWithName:inContainer:): + ownerInContext: already retains "owner". - * SOGoObject.m: added a default GET method which redirects to - url + "/view" (v0.9.18) + * Main/SOGoProductLoader.m (-loadProducts): attempt to free some + memory after "loadAllProducts" is invoked, which consumes a lot of + RAM. + +2010-01-28 Wolfgang Sourdeau - * SOGoObject.m(-description): added name of container (v0.9.17) + * SoObjects/SOGo/SOGoSystemDefaults.m (-CASServiceURL) + (-authenticationType): new accessors. + + * SoObjects/SOGo/SOGoObject.m (+globallyUniqueObjectId): fixed to + use the result of "random" rather than the function pointer. + + * SoObjects/SOGo/SOGoCache.m (-setValue:forKey:expire) + (-setValue:forKey:, -valueForKey:, -removeValueForKey:): new + accessors. + (-CASTicketFromIdentifier:, -CASSessionWithTicket:) + (-setCASSession:withTicket:forIdentifier:): new accessors enabling + the CAS session management. + (-CASPGTIdFromPGTIOU:, -setCASPGTId:forPGTIOU:): new accessors + enabling proxy ticket management (see casProxyAction below). + + * UI/MainUI/SOGoUserHomePage.m (-logoffAction): we now pass the + request application name as cookie path. + + * UI/MainUI/SOGoRootPage.m (-casProxyAction): new method invoked + by the CAS server when authenticating the SOGo server during a + proxy request. + (-_casDefaultAction): new "defaultAction" method executed in CAS mode. + + * UI/Common/UIxPageFrame.m (-canLogoff): return NO in CAS mode. + + * SoObjects/SOGo/SOGoWebAuthenticator.m (-checkLogin:password:) + when authentication type is set to "cas", the password is the + ticket identifying the CAS session. We therefore check if the + login and the session login match. + (-imapPasswordInContext:forServer:forceRenew:): new method that + returns the "password" to use for IMAP connections. In CAS mode, + a proxy ticket is fetched with the current CAS session. In + standard mode, we still use the current user's password. The + "forceRenew:" parameter enables the fetching of a new proxy ticket + if the current one has expired. + (-setupAuthFailResponse:withReason:inContext:): we know invoke + "defaultAction" on the SOGoRootPage instance to make sure all the + cookies and CAS tickets are taken into account. + We now pass the request application name as cookie path. + + * SoObjects/SOGo/SOGoCASSession.[hm]: new class module + implementing the class in charge of CAS authentication and proxy + transactions. + +2010-01-27 Wolfgang Sourdeau + + * Tools/SOGoToolBackup.m (-fetchUserIDs): retain allUsers to avoid + a release between the pool rotation. + +2010-01-25 Francis Lachapelle + + * UI/WebServerResources/SchedulerUI.js + (restoreCurrentDaySelection): fixed selection of current day in + mini-calendar. + * Updated version number to 1.2.0. + +2010-01-24 Ludovic Marcotte + + * Reorganized the layout of automated tests. + +2010-01-22 Francis Lachapelle + + * UI/Contacts/UIxListEditor.m (-references): avoid printing the + email address between brackets if not defined. + + * UI/Contacts/UIxListView.m (-itemHasEmail): new method that + returns YES if the current list item has an email address. + +2010-01-22 Wolfgang Sourdeau + + * UI/WebServerResources/MailerUI.js (composeNewMessage): fixed + potential js error in IE when no mailbox is selected. + + * Tools/SOGoToolRestore.m (+initialize): we need to invoke + [iCalEntityObject+SOGo initializeSOGoExtensions], otherwise the + extraction of quick records will cause a crash because some global + variables won't be initialized. + +2010-01-21 Francis Lachapelle + + * UI/Scheduler/UIxCalListingActions.m + (_fetchFields:ofComponentType:): added field ownerIsOrganizer which + identifies whether or not the calendar owner is the organizer of + the event. Also added the field erasable which identifies if the + active user can delete objects in the current calendar. + * UI/WebServerResources/SchedulerUI.js + (-_deleteCalendarEventBlocks): when the organizer deletes an + event, also delete the event in the calendars of the attendees, if + visible. Also, don't allow to delete an event if the user can't + erase objects in the calendar. + (-_deleteCalendarEventCache:): new function to update the events cache. + +2010-01-20 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentInboxFolder.m + (-davCalendarFreeBusySet): only advertise the collections owned by + the inbox's owner. + (-davScheduleDefaultCalendarURL): new caldav accessor. + + * SoObjects/Appointments/SOGoAppointmentFolders.m + (-toManyRelationShipKeys): unconditionnally display the inbox + collection. + (-lookupName:inContext:acquire:): accepts "inbox" even when the + active user is not the owner. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-davResourceType): unconditionnally advertise "personal" as + schedule-outbox. + + * UI/WebServerResources/scriptaculous.js: modified to use + ResourcesURL as base loading URL. + + * UI/WebServerResources/UIxAclEditor.js (saveAcls): removed + method. + (nodeForUser): don't add a checkbox if "canSubscribeUsers" is + false. + + * UI/Common/UIxAclEditor.m (-canSubscribeUsers): new accessor that + returns whether the clientObject has the required method to + subscribe users. + + * UI/PreferencesUI/UIxPreferences.m (-itemTimeFormatTexts): the + default time format is not taken from the domain defaults rather + than the user locale. + +2010-01-19 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolders.m + (-hasProxyCalendarsWithWriteAccess:forUserWithLogin:) + (-proxySubscribersWithWriteAccess) + (-addProxySubscribers:withWriteAccess:) + (removeProxySubscribers:withWriteAccess:): prevent caldav-proxy + operations on the owner's subscribed resources. + + * UI/Common/UIxFolderActions.m (-subscribeUsersAction): new web + method that enables resource owners to subscribe other users to + their resources from the acl editor. + + * UI/Common/UIxAclEditor.m (-currentUserIsSubscribed) + (-folderID): new accessors. + + * Tests/utilities.py (TestACLUtility.(un)subscribe): added utility + methods. + + * Tests/test-ical.py (iCalTest.testCalendarProxy2): test the + behaviour of the ical proxy mechanisms when subscriptions and + access rights are modified. + + * SoObjects/SOGo/SOGoUserSettings.m (-subscribedCalendars) + (-subscribedAddressBooks): new accessors. + (-setCalendarProxyUsers:withWriteAccess:) + (-setCalendarProxySubscriptionUsers:withWriteAccess:) removed accessors. + + * SoObjects/Appointments/SOGoUser+Appointments.m + (-adjustProxySubscriptionToUser:remove:forWriteAccess:) removed + methods. + (-hasSubscribedToCalendar:): new method that returns whether a + user has subscribed to a calendar resource. Might be a duplicate + of [SOGoGCSFolder userIsSubscriber:]. + + * SoObjects/Appointments/SOGoAppointmentFolders.m + (-adjustProxyRolesForUsers:remove:forWriteAccess:) + (-adjustProxySubscriptionsForUsers:remove:forWriteAccess:): + removed methods. + (-hasProxyCalendarsWithWriteAccess:forUserWithLogin:): new method + that returns whether the user passed as parameter should be + returned in the list of subscribers corresponding to the proper + write access. + (-proxySubscribersWithWriteAccess:) new method that returns the + list of users that have a proxy access to the current account. + (-addProxySubscribers:withWriteAccess:,-removeProxySubscribers:withWriteAccess:) + setters for the above method. + + * UI/WebServerResources/ContactsUI.js (initContacts): fixed a bug + causing a null exception error on IE7 when the window is not the + main window, and is therefore missing the "uploadCancel" and + "uploadOK" elements. + +2010-01-18 Wolfgang Sourdeau + + * Tests/utilities.py: new module implementing utility classes and + methods that are used in different test cases. + + * Main/sogod.m (main): set the "GNUSTEP_STRING_ENCODING" + environment variable to NSUTF8StringEncoding to properly decode + the user defaults strings in UTF8. + +2010-01-15 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUserSettings.m + (-setCalendarProxyUsers:withWriteAccess:) + (calendarProxyUsersWithWriteAccess:) + (setCalendarProxySubscriptionUsers:withWriteAccess:) + (calendarProxySubscriptionUsersWithWriteAccess:): "Read" and + "Write" were inverted. + +2010-01-14 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (+webdavAclManager): fixed "read-free-busy" namespace declaration. + + * SoObjects/SOGo/SOGoObject.m (-davPrincipalCollectionSet): when + used with iCal 4, we provide a "DAV" header with the proper + compliance classes, since iCal 4 doesn't want to use OPTIONS. -2004-09-08 Helge Hess + * Tests/test-webdav.py (WebDAVTest.testExpandProperty): new method + to test the new "expand-propery" code in SOGo. - * SOGoGroupFolder.m: separate -resetFolderCaches method from -sleep - (v0.9.16) + * SoObjects/SOGo/SOGoFolder.m (-davExpandProperty): new method to + handle the "expand-property" REPORT. + + * SoObjects/Appointments/SOGoCalendarProxy.m: + adapted module to new code for handling chosen calendars + delegation. -2004-09-08 Helge Hess + * Main/SOGo+DAV.[hm): new category module for handling dav methods + pertaining to /SOGo/dav/ as the principal-collection-set. Now + implements 3 methods that were previously found in SOGoUserFolder + categories. - * SOGoUserFolder.m: map "Mail" key to SOGoMailAccounts object (v0.9.15) + * SoObjects/Appointments/SOGoUser+Appointments.[hm]: new category + module. -2004-09-01 Marcus Mueller + * SoObjects/Appointments/SOGoAppointmentInboxFolder.[hm]: new + class module that implements the basic "schedule-inbox" + collection mechanisms, enough to let iCal work properly. To be + completed for full invitation handling. + + * SoObjects/SOGo/SOGoObject.m (-lookupObjectAtDAVUrl:): new method + that enables DAV reports to lookup objects based on the urls + passed in their parameters. + (-davURLAsString): simplified method by making it recurse from its + top parent. + (-setRoles:forUsers:): treat a list of users at once. + (-davPrincipalMatch): removed method since it really pertains to + /SOGo/dav, which the correct principal-collection-set. - * v0.9.14 + * SoObjects/SOGo/SOGoParentFolder.m (-initSubcribedSubFolders): + enable the super user to see any user's subscriptions. This + enables a new set of tests to work properly in super user mode. + (-appendSubscribedSources): consequently to the above, the + references must be based on the owner user rather than the current + user. - * GNUmakefile.preamble: fixed for gsmake 1.9.2 build + * SoObjects/SOGo/SOGoUser.m: removed commented out methods. - * GNUmakefile: include ../../Version also + * SoObjects/SOGo/SOGoUserSettings.m (-setProxiedCalendars) + (-setCalendarProxyUsers:withWriteAccess:): + (-setCalendarProxySubscriptionUsers:withWriteAccess:): new method + for handling caldav-proxy related settings. -2004-08-26 Helge Hess + * SoObjects/SOGo/SOGoWebDAVAclManager.m (_registerChild:of:): only + emits a warning of the specified parent cannot be found, instead + of crashing. - * SOGoUserFolder.m: added ability to create Contacts folder (v0.9.13) + * SoObjects/SOGo/WOResponse+SOGo.m (-prepareDAVResponse): new + method with common code for DAV responses generated from SOGo. -2004-08-24 Maxime Wacker + * Tests/webdavlib.py (WebDAVPROPPATCH): new class implementing the + "PROPPATCH" method. + (WebDAVExpandProperty): new class implementing the + "expand-property" REPORT. + (_WD_XMLTreeElement.appendSubtree): new method that enables the + addition of a tree of objects from a dictionary passed as + parameter. - * GNUmakefile.preamble: fixes for the build process (v0.9.12) + * Tests/test-ical.py: new test script for tesing iCal-related + behaviours. -2004-08-16 Helge Hess - - * SOGoCustomGroupFolder.m: added -initWithUIDs:inContainer: for using - the groups folder for internal group fetches (v0.9.11) - - * SOGoContentObject.m: updated multi-save things (which belong into the - SOGoAppointmentObject class), implement -sleep to release the content - (v0.9.10) + * Tools/SOGoToolBackup.m (-extractUserPreferences:intoRecord:): + fixed compilation warning. -2004-08-15 Helge Hess +2010-01-13 Francis Lachapelle - * SOGoContentObject.m: implement first version of -delete (v0.9.9) + * UI/WebServerResources/ContactsUI.js (-fixSearchFieldPosition): + replaced this function by the equivalent CSS definition. + (-initContacts): initialized import buttons even for "popup" mode. - * SOGoObject.[hm], SOGoUserFolder.[hm]: implemented SOPE - -ownerInContext: (v0.9.8) +2010-01-12 Ludovic Marcotte -2004-08-14 Helge Hess + * SoObjects/SOGo/NSString+Utilities.m + We retain the autoreleased strings static variable + to avoir random issues with the -fromCSSIdentifier method - * v0.9.7 + * Updated the Moz guide for the updateLink part of + the updates.php script. - * SOGoGroupFolder.m: renamed -reset method to -sleep (called by SOPE) +2010-01-11 Ludovic Marcotte - * SOGoObject.m: added SOPE -sleep method (resets container and can be - called by subclasses) + * UI/Contacts/UIxContactFolderActions.m (-importVcardData:): + We now support multiple vCards in the same file during + the import process - * SOGoGroupFolder.m: made the folder found note log a debug log +2010-01-08 Ludovic Marcotte -2004-08-11 Helge Hess + * SoObjects/SOGo/LDAPSource.{h,m} - bindFields is now + an array instead of a list of strings separated by commas. + Updated the Installation & Configuration Guide to reflect + this change. - * v0.9.6 +2010-01-08 Wolfgang Sourdeau - * SOGoUserFolder.m: added "Groups" folder name and lookup + * UI/Scheduler/UIxCalDateLabel.m: dropped useless module. - * added: SOGoGroupsFolder, SOGoGroupFolder, SOGoCustomGroupFolder + * UnitTests/SOGoTestRunner.m: separated class "SOGoTestRunner" + from sogo-tests.m. Moved reporting and logging methods from + SOGoTest into SOGoTestRunner.m -2004-07-02 Helge Hess + * SoObjects/SOGo/NSString+Utilities.m (-_setupCSSEscaping): we + must initialize cssEscapingCount before using it. Also, fixed a + typo preventing the character buffer from being initialized + completely. - * SOGoObject.m: added -delete method (but not yet implemented) +2010-01-07 Francis Lachapelle -2004-06-30 Helge Hess + * SoObjects/SOGo/NSString+Utilities.m (-asCSSIdentifier): replaced + %lc by %C. + (-fromCSSIdentifier): idem. - * SOGoContentObject.m: added -contentAsString method +2010-01-07 Wolfgang Sourdeau - * created ChangeLog + * SoObjects/SOGo/NSString+Utilities.m (-fromCSSIdentifier): speed + things up a little bit by checking whether the current character + is '_', possibly announcing an escaped sequence, anything else + being treated regularly. -2005-07-15 Helge Hess + * SoObjects/SOGo/NSDictionary+BSJSONAdditions.m + (-jsonStringFromString:): convert "\" to "\\" rather than "\n". - * SOGoSieveScriptObject.m: fixed a gcc 4.0 warning (v0.9.11) + * SoObjects/SOGo/NSScanner+BSJSONAdditions.m (-scanJSONString): we + now accept lowercase characters in characters coded in UCN. -2005-07-11 Helge Hess + * UnitTests/TestBSJSONAdditions.m: new unit test for + BSJSONAdditions. - * SOGoSieveBaseObject.[hm]: removed unused -imap4Client method - (v0.9.10) + * UnitTests/SOGoTest.m: base class for our unit test testcases. + Similar to JUnit and family. - * SOGoSieveBaseObject.m: updated to use new NGImap4 API (v0.9.9) + * UnitTests/sogo-tests.m: main executable for our Objective-C test + framework. -2005-02-10 Helge Hess +2010-01-06 Wolfgang Sourdeau - * SOGoSieveScriptObject.m: fixed a compile warning on MacOSX (v0.9.8) + * UI/WebServerResources/SchedulerUI.js (onViewEventCallback): + simplified lookup of "P" elements by groupings them in an array. + This also fixes a bug where all the returned information would not + be displayed. Also, we make use of the "calendar" field, which was + not used before. -2005-02-06 Helge Hess + * UI/Scheduler/UIxAppointmentEditor.m (-newAction): new events + have an ".ics" extension instead of ".vcf". - * SOGoSieveScriptObject.m, SOGoSieveScriptsFolder.m: assigned - folder/message class (v0.9.7) + * UI/Scheduler/UIxCalMainView.m (-_setupContext): only invoked once + per instance. + (-checkDefaultModulePreference): synchronize the user defaults + after the login module was modified. -2005-01-30 Helge Hess + * UI/Scheduler/UIxDatePicker.m + (-takeValuesFromRequest:inContext:): we set the new date to the + user's timezone and recompute the proper offset compare to the + system timezone, which may differ from it. - * SOGoSieveScriptObject.m: implemented Sieve script upload (v0.9.6) + * SoObjects/Appointments/iCalEntityObject+SOGo.m + (-quickRecordDateAsNumber:withOffset:forAllDay:): we only need to + compute the delta between the user's timezone and UTC rather than + the system timezone. - * some work on script upload (v0.9.5) + * SoObjects/Mailer/SOGoMailNamespace.m + (-lookupName:inContext:acquire:): overriden method because the + namespace "folders" cannot be created and cannot contain messages. -2004-12-03 Helge Hess - - * SOGoSieveScriptObject.m, SOGoSieveScriptsFolder.m: added script - activation action (v0.9.4) - - * v0.9.3 - - * SOGoSieveScriptObject.m: added ability to fetch content - - * SOGoSieveScriptsFolder.m: added ability to lookup/construct - SOGoSieveScriptObject's - -2004-11-28 Helge Hess - - * added list capability, does not work with 'dotted' logins? (v0.9.2) - -2004-11-27 Helge Hess + * SoObjects/Mailer/SOGoMailAccount.m + (-otherUsersFolderNamespaces): new method that returns all the + namespace "folders" in the "other user" namespace. Replaces the + old "otherUsersFolderName" method. + (-sharedFolderNamespaces): same as above for the "shared" + namespace. - * started Sieve product -2005-08-02 Helge Hess + * SoObjects/SOGo/SOGoDomainDefaults.m (-otherUsersFolderName) + (-sharedFolderName): removed obsolete methods. - * SOGoAppointmentObject.[hm]: added method to change participation - status of logged-in user (v0.9.50) +2010-01-05 Wolfgang Sourdeau -2005-07-21 Marcus Mueller + * UI/WebServerResources/MailerUI.js (Mailbox): "this.name" is now + an escaped form of the mailbox name, that can thus be used to + generate folder URLs. + (Mailbox.findMailboxByName): escape the name passed as parameter + prior to doing a search. - * SOGoAppointmentFolder.m: place a hint ('isRecurrent') into flattened - rows created from recurrent events so these can be signaled in the - UI (v0.9.49) + * UI/WebServerResources/JavascriptAPIExtensions.js + (asCSSIdentifier): use two arrays rather than an "Object" in order + to improve performance. -2005-07-20 Marcus Mueller + * SoObjects/SOGo/NSString+Utilities.m (-fromCSSIdentifier): new + method that converts an escaped string back to a normal one. + (-asCSSIdentifier): no longer use "replaceString:withString:" in + order to avoid parsing the string multiple times. This probably + enhance performances a bit and also avoid double-encoding + problems. - * v0.9.48 + * SoObjects/SOGo/NSArray+Utilities.m (-resultsOfSelector): new + method that applies a selector on the contained objects and + collect the result objects in a new array. - * SOGoAptMailInvitation.m, SOGoAptMailUpdate.m, SOGoAptMailDeletion.m, - SOGoAptMailRemoval.m: updated to contain new classes for additional - languages + * SoObjects/Mailer/SOGoMailFolder.m + (-lookupName:inContext:acquire:): we must check and create the + current folder even if the looked up key is a subfolder or a web + method. - * SOGoAptMailInvitation.wo, SOGoAptMailUpdate.wo, - SOGoAptMailDeletion.wo, SOGoAptMailRemoval.wo: replaced with language - dependend counterparts + * SOPE/sope-patchset-r1664.diff: new patchset replacing + -r1660.diff. + Added code to handle IMAP namespaces. - * SOGoAptMail{English,French}Invitation.wo, - SOGoAptMail{English,French}Update.wo, - SOGoAptMail{English,French}Deletion.wo, - SOGoAptMail{English,French}Removal.wo: new language dependend - templates. Please note that due to an unresolved bug we cannot use - the standard WO lookup mechanism here. +2010-01-04 Wolfgang Sourdeau -2005-07-15 Marcus Mueller + * SoObjects/Mailer/SOGoMailForward.m (-): we use + -[SOGoUserDefaults mailComposeMessageType] instead of querying the + defaults key, so that the fallbacking mechanism between the + different preference layers can be used. - * v0.9.47 +2009-12-26 Ludovic Marcotte - * SOGoAptMailDeletion.[wo,m]: new template being used when appointment - is deleted + * SoObjects/SOGo/SOGoMailer.m (_smtpSendData: + toRecipients:sender:): We now honor the 'port' + part in the SMTP server address. So one can now + specify hostname:port (like localhost:587) as + a value of SOGoSMTPServer. This fixes + http://www.sogo.nu/bugs/view.php?id=201 - * SOGoAptMailRemoval.[wo,m]: new template being used when attendee is - removed from appointment + * SoObjects/Mailer/SOGoMailForward.m (init): + Now consider SOGoMailComposeMessageType instead + of ComposeMessagesType when checking if we are + using HTML mails composition mode. This fixes + http://www.sogo.nu/bugs/view.php?id=280 - * SOGoAppointmentObject.m: now sends emails for removal of attendees - and deletion of appointment +2009-12-25 Ludovic Marcotte -2005-07-15 Helge Hess + * Tools/SOGoToolBackup.m (-fetchUserIDs:): + We now use a local autorelease pool and flush + it after every 100 requests to the LDAP (or + other source type) server. - * SOGoAppointmentFolder.m: fixed Cocoa warnings (v0.9.46) +2009-12-23 Ludovic Marcotte - * SOGoAppointmentFolder.m: fixed gcc 4.0 warnings (v0.9.45) + * UI/Scheduler/UIxCalView.m + Don't call -configureFormatters in -init as it'll + invoke labelForKey prior to setPage: - resulting + in the wrong resources manager being selected. + This fixes: http://www.sogo.nu/bugs/view.php?id=286 -2005-07-14 Marcus Mueller + * UI/Templates/ContactsUI/UIxContactFoldersView.wox + UI/Templates/SchedulerUI/UIxCalMainView.wox + Modified the uploadForm in those two templates (to add + const:href="") in order to avoid SOPE sessions being + created upon access to the calendar or address book module. + This fixes: http://www.sogo.nu/bugs/view.php?id=208 - * v0.9.44 + * SoObjects/SOGo/NSDictionary+Utilities.m (-userRecordAsLDIFEntry) + We skip the "isGroup" attribute from the list of attributes + to include during LDIF generation. This fixes: + http://www.sogo.nu/bugs/view.php?id=221 - * SOGoAppointmentFolder.m: explicitly set encoding for text and - calendar attachment parts + * UI/WebServerResources/SchedulerUI.js - we also invoke + refreshTasks() in onCalendarReload(). This fixes: + http://www.sogo.nu/bugs/view.php?id=250 - * SOGoAptMailNotification.m: added -appointmentURL accessor +2009-12-22 Ludovic Marcotte - * SOGoAptMailInvitation.wo, SOGoAptMailUpdate.wo: display - -appointmentURL instead of -homePageURL + * Removed all the Kolab-related stuff (more specifically, + associated mail part viewers) - * v0.9.43 + * Removed all references to "anais" stuff. - * SOGoAppointmentFolder.m: changed redirect from 'schedule' to - 'weekoverview' + * SoObjects/Mailer/SOGoMailFolder.m (-deleteUIDs:inContext:): + we check if we aren't in the Trash folder already before try to + copy over deleted messages. -2005-07-14 Helge Hess + * We now offer a way to delete events from the context menu + in all calendar views. - * SOGoAppointmentFolder.m: moved +globallyUniqueObjectId method to - SOGoFolder.m baseclass (v0.9.42) +2009-12-22 Francis Lachapelle -2005-07-13 Helge Hess + * UI/Scheduler/UIxAppointmentEditor.m (-viewAction): added + calendar name in returned dictionary. - * SOGoAppointmentFolder.m: added a method to determine the resource - name from a vevent UID (v0.9.41) +2009-12-22 Wolfgang Sourdeau -2005-07-12 Marcus Mueller + * Tests/test-webdav.py (WebDAVTest.testPrincipalCollectionSet2): + fixed test to use the proper collection URL as expected value, + rather that the freebusy.ifb resource URL. - * SOGoAppointmentObject.m: tries ambitiously to detect the baseURL in - -homePageURLForPerson: now. This code doesn't really belong here - but currently there's no appropriate controller for dealing with it - around. Also removed mail notification testing code. (v0.9.40) + * SoObjects/Appointments/SOGoAppointmentFolder.m + (_appendComponentProperties:matchingFilters:toResponse:) + (_appendComponentProperties:matchingURLs:toResponse:): ensure that + baseURL ends with "/". -2005-07-12 Helge Hess +2009-12-21 Wolfgang Sourdeau - * fixed compilation (v0.9.39) + * SoObjects/SOGo/SOGoUserFolder.m (-fetchContentObjectNames): + fixed a potential crash by removing the "static" attribute of the + "cos" local variable. -2005-07-12 Marcus Mueller +2009-12-19 Ludovic Marcotte - * v0.9.38 - - * GNUmakefile: changed inclusion of bundle.make to wobundle.make - because of new components + * SoObjects/Appointments/SOGoUserFolder+Appointments.m + (_davPersonalCalendarURL): We make sure we handle the + presence or not of the trailing slash when we call + -davURLAsString on the parent object. See + http://www.sogo.nu/bugs/view.php?id=74 for + all details. - * v0.9.37 +2009-12-14 Ludovic Marcotte - * SOGoAptMailNotification.[hm]: new component forming the basis for - the mail notification templates + * UI/MailPartViewers/UIxMailPartHTMLViewer.m + Dropped the use of NGMimeType and we now use + the same string decoding method as used + for text/plain parts. - * SOGoAptMailInvitation.[wo, m]: invitation mail template, sent to all - new attendees of an appointment +2009-12-14 Wolfgang Sourdeau - * SOGoAptMailUpdate.[wo, m]: update mail template, sent to all - attendees when appointment time is changed + * Tools/SOGoToolRemoveDoubles.m (-processFolder:ofUser:withFoM:): + same as below. - * SOGoAppointmentObject.m: rewritten to use the iCalEventChanges object - from NGiCal to discover changes to saved appointments. Additionaly - email notifications are emitted on certain occasions (this is not - full iMip, yet). In case the appointment time changes, state for - all attendees is reset to NEEDS-ACTION. + * Tools/SOGoToolCheckDoubles.m (-processIndexResults:withFoM:): + same as below. -2005-07-08 Marcus Mueller + * SoObjects/Mailer/NSString+Mail.m + (-stringByConvertingCRLNToHTML): invokde [NSString UTF8String] + rather than cStringUsingEncoding: NSUTF8StringEncoding, since the + latter provokes a crash that the former doesn't. - * SOGoAppointmentFolder.m: added 'partmails' and 'partstates' to - infos returned by -fetchOverviewInfosFrom:to: (v0.9.36) + * UI/Common/UIxPageFrame.m (_stringsForFramework:): use the system + default when the active user does not resolve. -2005-07-06 Marcus Mueller +2009-12-11 Ludovic Marcotte - * v0.9.35 + * Added a patch from Albrecht Gebhardt + that offers a "Reload" button in the Web contacts management + module. - * GNUMakefile: added SOGoFreeBusyObject.m +2009-12-11 Wolfgang Sourdeau - * product.plist: added SOGoFreeBusyObject + * UI/PreferencesUI/UIxPreferences.m (-setUserShortDateFormat:): + fixed handling of the value "default", which actually should + unset the value in the user defaults. - * SOGoFreeBusyObject.[hm]: new class resembling free/busy information - for a particular user. Because free/busy information isn't solely - based upon appointments, this is now a part of the user folder. - However the information contained therein is still based on - information provided by appointments, only. This should be fixed in - a later release. +2009-12-09 Wolfgang Sourdeau - * SOGoAppointmentFolder.m: new API to lookup freeBusyObjects for an - array of uids. + * SoObjects/SOGo/SOGoUserFolder.m (-toManyRelationShipKeys) + (-lookupName:inContext:acquire:): fixed typo preventing access to + Contacts module. -2005-07-05 Marcus Mueller +2009-12-08 Wolfgang Sourdeau - * SOGoAppointmentFolder.m: fetch new priority field in core infos - (v0.9.34) + * SoObjects/SOGo/WORequest+SOGo.m (-handledByDefaultHandler): + return "not isSoWebDAVRequest". -2005-07-04 Marcus Mueller + * Main/SOGo.m (-lookupName:inContext:acquire:): ensure the web + access is enabled or the request is a DAV request before + proceeding. - * SOGoAppointmentFolder.m: fetch new priority field in overview infos - (v0.9.33) + * SoObjects/SOGo/SOGoUserFolder.m (-toManyRelationShipKeys) + (-fetchContentObjectNames): ensure the proper dav access is + enabled in order before listing the related objects. -2005-03-20 Helge Hess + * SoObjects/SOGo/SOGoSystemDefaults.m (-isWebAccessEnabled) + (-isCalendarDAVAccessEnabled, isAddressBookDAVAccessEnabled): new + self-explanatory accessors. - * SOGoAppointmentFolder.m: changed to use GDLContentStore (v0.9.32) + * Main/SOGo.m (-davURLAsString): we ensure that the url ends with + "/" since the /SOGo object is a collection and the caller may rely + on this. -2005-03-03 Marcus Mueller +2009-12-07 Wolfgang Sourdeau - * SOGoGroupAppointmentFolder.m: fixed incorrect creation of a mutable - dictionary (was still immutable) (v0.9.31) + * UI/PreferencesUI/UIxPreferences.m (-defaultAction): + setVacationOptions: and setForwardOptions: are now set from here. -2005-03-02 Marcus Mueller + * SoObjects/SOGo/SOGoDomainDefaults.m (-forwardEnabled) + (-vacationEnabled): we must query "SOGoForwardEnabled" and + "SOGoVacationEnabled", respectively. - * SOGoAppointmentFolder.m: make sure fetchedInfos are sorted - ascending - this simplifies client code (v0.9.30) +2009-12-03 Francis Lachapelle - * SOGoAppointmentFolder.m: changed debugLog to use NGLogging (v0.9.29) + * SoObjects/SOGo/iCalEntityObject+Utilities.m (-findParticipant:): + we now search in all attendees, including attendees with role + NON-PARTICIPANT. -2005-03-01 Marcus Mueller +2009-12-02 Wolfgang Sourdeau - * SOGoAppointmentFolder.m: significantly changed handling of cyclic - events. Information for cyclic event calculation is now contained - in the quick info, making full fetches obsolete - performance - should improve significantly this way (v0.9.28) + * SoObjects/SOGo/SOGoUserDefaults.m (+initialize): we need to + initialize the profile class from the constructor as this method + may be invoked before all modules are loaded. -2005-02-22 Helge Hess + * SoObjects/SOGo/SOGoSource.h: added new "SOGoDNSource" protocol + as a child protocol of "SOGoSource". - * SOGoAppointmentFolder.m: minor code cleanups (v0.9.27) + * SoObjects/SOGo/SOGoUserManager.m: added new + "SOGoUserManagerRegistry" class that handles the mapping between + source types and their corresponding classes. + (-[SOGoUserManager registryClass]): new method that returns the + class name of the registry class, which can be overriden to handle + other types. -2005-02-17 Helge Hess +2009-12-01 Ludovic Marcotte - * fixed for removal of SOGoLogic (v0.9.26) + * Reworked the calendar's categories (introduced + the "Meeting" category). -2005-02-06 Helge Hess +2009-12-01 Wolfgang Sourdeau - * SOGoAppointmentObject.m, SOGoAppointmentFolder.m: added proper - message/folder class (v0.9.25) + * UI/Scheduler/UIxComponentEditor.m (-categoryList): the returned + list is now sorted, except if the category of the event was not + always present in the list (kept on top). -2004-11-09 Helge Hess + * UI/PreferencesUI/UIxPreferences.m (-categoryList): simplified + method by returning only the array of defined categories from the + user defaults or those defined in the Localizable.strings and sort + the resulting array. + (-categoryColor): new accessor that return the color associated + with the value in the "category" ivar, if not exists, we return + the default from SOGoCalendarDefaultCategoryColor. + (-setCategoriesValue): simplified method since we now receive a + dictionary. The dictionary is now transferred as a JSON object + rather than a property list. - * SOGoAppointmentObject.m: improved error handling in save method - (v0.9.16) + * SoObjects/SOGo/SOGoUserDefaults.m + (-setCalendarCategoriesColors:, -calendarCategoriesColors): + SOGoCalendarCategoriesColors is now a dictionary. The values are + migrated in _migrateCalendarCategories. -2004-10-20 Helge Hess + * SoObjects/SOGo/SOGoDomainDefaults.m + (-calendarDefaultCategoryColor): new accessor for the domain + default SOGoCalendarDefaultCategoryColor. - * SOGoAppointmentFolder.m: fixed a warning on MacOSX (v0.9.15) + * SoObjects/SOGo/SOGoDefaultsSource.m (-boolForKey:) + (-floatForKey:, -integerForKey:, -dataForKey:, -stringForKey:) + (-dictionaryForKey:, -arrayForKey:, -stringArrayForKey:): added + type checking and warnings. - * SOGoAppointmentObject.m(saveContentString:): fixed a warning with new - objects (v0.9.14) - -2004-10-19 Helge Hess +2009-11-30 Wolfgang Sourdeau - * SOGoAppointmentFolder.h: added -fetchAllSOGoAppointments method - which performs a bulk fetch on all files contained in the folder - and parses all contents into an array of SOGoAppointment objects - (used in the iCal file support, try to avoid this method, expensive!) - (v0.9.13) + * SoObjects/SOGo/SOGoDefaultsSource.m (-setBool:forKey:): we + encode boolean values as integers to avoid confusing the boolean + objective-c parsers when reading values coming back from the JS + code. -2004-09-25 Helge Hess + * UI/WebServerResources/SchedulerUI.js (initCalendars): the + "ShowCompletedTasks" parameter is in the UserSettings dictionary. - * fixed compilation on MacOSX (v0.9.12) + * SoObjects/SOGo/SOGoDefaultsSource.m + (-migrateOldDefaultsWithDictionary:): when migrating between two + existing keys, the new value is automatically overwritten with the + old one, since it causes a problem with the values inherited from + SOGoDefaults.plist. -2004-09-08 Helge Hess +2009-11-29 Wolfgang Sourdeau - * SOGoGroupAppointmentFolder.m: do not call -sleep in fetch method - (disconnects the folder from the parent folder), instead added a - -resetFolderCaches methods which performs some cleanups before a - fetch (v0.9.11) + * SoObjects/SOGo/SOGoUserManager.m + (-authenticationSourceIDsInDomain:): now takes a domain argument. + Contrarily to contact sources, specifying a domain will cause the + generic sources to be ignored. + (-fetchUsersMatching:inDomain:): now takes a domain argument. -2004-08-16 Helge Hess + * SoObjects/SOGo/LDAPSource.m (-initFromUDSource:inDomain): + removed handing of "domain attribute", since the underlying + mechanism causes complex code for an unrealistic case. - * SOGoAppointmentFolder.m: added method to create a group folder and - a group calendar for a set of IDs (for internal queries) (v0.9.10) +2009-11-28 Wolfgang Sourdeau - * SOGoAppointmentObject.m, SOGoAppointmentFolder.m: moved calendar - folder lookup methods to folder class (the object uses its container - to lookup the folder) (v0.9.9) + * SoObjects/SOGo/SOGoUserSettings.m: new class module designed to + be the counterpart to SOGoUserDefaults.m. - * SOGoAppointmentObject.m: finished multi folder storage methods - (v0.9.8) + * UI/PreferencesUI/UIxPreferences.m (-): "hours" is now a static + variable, rather than an ivar. - * SOGoAppointmentObject.m: added multi folder storage methods (v0.9.7) + * UI/MainUI/SOGoRootPage.m (+initialize): the supportedLanguages + are not available from the SOGoSystemDefaults + (SOGoDefaults.plist). -2004-08-14 Helge Hess + * UI/MailerUI/UIxMailView.m (+initialize): we never used + "SOGoDontUseETagsForMailViewer". - * SOGoGroupAppointmentFolder.m: implemented proper URL generation for - group calendars (will lookup the appointment in the proper "exact" - folder (v0.9.6) + * UI/MailerUI/UIxMailEditor.m (+initialize): we never used + "SOGoShowInternetMarker" and "SOGoInternetMailHeaders". - * SOGoAppointmentFolder.m: fetch location, isallday, iscycle and - partmails fields in -fetchCoreInfo (v0.9.5) + * SoObjects/Mailer/SOGoDraftObject.m (+initialize): + "TextPlainType" was never used. -2004-08-12 Helge Hess + * SoObjects/SOGo/SOGoSystemDefaults.m: new class module handling + the getting of system (or "application") defaults, as well as + default values for users and domains. - * v0.9.4 + * SoObjects/SOGo/SOGoDomainDefaults.m: new class module handling + the getting of domain defaults, as well as default values for for + users belonging to the corresponding domain. - * SOGoAppointmentFolder.m: added -baseURLForAptWithUID:inContext: for - determining the resource URL of an appointment, used by calendar - views to locate the viewer page + * SoObjects/SOGo/SOGoUserDefaults.m: new class module handling + the setting and getting of user defaults. -2004-08-11 Helge Hess + * SoObjects/SOGo/SOGoLDAPDefaults.h: new protocol module for the + handling of "recursive" ldap defaults. - * SOGoGroupAppointmentFolder: can merge input folders, tracks conflicts - in 'conflicts' key of the record (should be displayed somehow in the - UI) (v0.9.3) + * SoObjects/SOGo/SOGoDefaultsSource.m: new module class acting as + a proxy between NSDictionary, NSUserDefaults and SOGoUserProfile, + enabling the possibility of hierarchy and fallbacks. - * v0.9.2 + * SoObjects/SOGo/SOGoUserProfile.m: new name for SOGoUserDefaults. + (-arrayForKey:, -stringForKey:, -dataForKey:, -boolForKey:) + (-floatForKey:): removed obsolete methods (as well as their setter + counterparts). - * SOGoAppointmentFolder.m, SOGoGroupAppointmentFolder: added - -calendarUIDs method which returns the UIDs of the currently - displayed persons (eg the members of a group) + * SoObjects/SOGo/SOGoSQLUserProfile.m: new class module for + handling the SQL backend of the SOGoUserProfile. - * started SOGoGroupAppointmentFolder + * UI/SOGoUI/WOContext+UIx.m: removed obsolete class. -2004-07-02 Helge Hess +2009-11-27 Wolfgang Sourdeau - * SOGoAppointmentFolder.m: added method to fetch core info from other - OCS folders, correct timezone to MET after fetch core info + * SoObjects/SOGo/SOGoUserDefaults.m (-fetchJSONProfileFromDB): the + isNew flag depends on the presence of the row in the database + rather than on the existence of the value. -2004-07-01 Helge Hess - - * redirect to weekoverview if GET is run on the folder itself - - * created ChangeLog -2005-07-21 Helge Hess +2009-11-26 Wolfgang Sourdeau - * product.plist: make addressbook only available to owner (v0.9.15) + * SoObjects/SOGo/SOGoUserDefaults.m (-synchronize): avoid fetching + the values from the database/the cache when they are successfully + stored. + (-fetchJSONProfileFromDB): sql-quoted quote characters do not + apply here. Therefore we no longer need to unescape them. -2005-07-18 Helge Hess + * SoObjects/SOGo/SOGoCache.m (_cacheValues:ofType:forLogin:): we + also fill the local cache with the new value to avoid ignoring it + next time the cache is invoked. - * SOGoContactObject.m: print an error log if a vCard could not be - parsed, cached failed parsing attempts (v0.9.14) + * SoObjects/SOGo/NSDictionary+BSJSONAdditions.m + (+dictionaryWithJSONString:): method moved from NSDictionary into + NSMutableDictionary for consistency. -2005-07-15 Helge Hess +2009-11-26 Ludovic Marcotte - * SOGoContactFolder.m: fixed a gcc 4.0 warning (v0.9.13) + * SoObjects/Mailer/SOGoMailObject+Draft.m + (_fetchFileAttachmentKey:intoArray:withPath:): we + try to also use basic types (application/, audio/, ...) + when forwarding a mail with attachments and no + Content-Disposition header (or filename) was found. This + avoid losing attachments when forwarding mails. + * UI/PreferencesUI/UIxPreferences.m + We retain/release properly the vacationOptions and + forwardOptions ivars. + +2009-11-24 Francis Lachapelle + + * SoObjects/Mailer/NSData+Mail.m (-decodedHeader): renamed from + decodedSubject. The decoding algorithm is now recursive. -2005-07-14 Helge Hess + * SoObjects/Mailer/NSString+Mail.m (-decodedHeader): renamed from + decodedSubject. The string is now decoded by parts. + +2009-11-24 Ludovic Marcotte + + * SoObjects/SOGo/SOGoGroup.m + Initialize the local var entry to nil to avoid + a crash if only one SQL source was specified - * SOGoContactFolder.m: use +globallyUniqueObjectId method from - SOGoFolder.m baseclass (v0.9.12) + * SoObjects/SOGo/SQLSource.m + Properly invoke cancelFetch on cusors that can return + more than one value (prior to releasing the channel) -2005-07-13 Helge Hess +2009-11-23 Wolfgang Sourdeau + + * Tools/sogo-tool.m (main): we check "SOGoUserSources" rather than + the obsolete "SOGoLDAPSources". + +2009-11-20 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoDAVAuthenticator.m (-init): removed method, + removed the "SOGoAuthenticationMethod" user default, which was + never used. + + * SoObjects/SOGo/SOGoWebAuthenticator.m (-init): removed method, + removed the "SOGoAuthenticationMethod" user default, which was + never used. + + * SoObjects/SOGo/SOGoProxyAuthenticator.m (-init): removed method, + removed the "SOGoAuthenticationMethod" user default, which was + never used. + + * Main/sogod.m (prepareUserDefaults): replaces + "convertOldSOGoDomain", automatically set WOMessageUseUTF8, + WOParsersUseUTF8 and NGUseUTF8AsURLEncoding to YES in the user + defaults. - * SOGoContactObject.m: hardened against vCard content (v0.9.11) + * SoObjects/SOGo/SOGoUserDefaults.m (_sqlJsonRepresentation:): the + escaping of "\\" was done in the wrong direction. + (-storeJSONProfileInDB:): we commit the transaction to avoid a + lock on the profile table. + +2009-11-19 Francis Lachapelle - * SOGoContactObject.m: removed special GET action, the redirect to - 'view' seems to be handled by SOPE now. This also makes WebDAV GET - work (v0.9.10) + * SoObjects/Mailer/SOGoMailReply.m (-messageBody): don't try to + remove the bottom signature when replying to an email, in order to + avoid situations where a previous message follows the last signature. + +2009-11-19 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUserDefaults.m (-fetchJSONProfileFromDB): + extracted the conversion of property list values to JSON values + into a new separate method (-_convertPListToJSON:), that will be + invoked by -jsonRepresentation. + + * SoObjects/SOGo/SQLSource.m (-checkLogin:andPassword:): + (_lookupContactEntry:considerEmail:, -allEntryIDS) + (_lookupContactEntry:consideringEmail:, fetchContactsMatching:): + check whether the channel is valid before using it or report an + error otherwise. Also, we release the channel after our + operations, to avoid creating hundreds of biglions of useless + and stalled connections. + + * SoObjects/SOGo/SOGoUser.m (-userDefaults, -userSettings): the + cache handling has now been put in the SOGoUserDefaults class. + (-primaryUserDefaults, -primaryUserSettings): removed useless + methods. + (-userDefaultsClassName): added accessor to allow different + classes. + + * SoObjects/SOGo/SOGoUserDefaults.m (-primaryFetchProfile): split + method to separate the cache data and the db data. We know invoke + the "jsonRepresentation" method, which is the real data accessor + now. + (-primaryStoreProfile): user profile data is now serialized as a + JSON string in order to avoid constant conversions between the + plist and the json formats, from and to the cache. + (-jsonRepresentation): we now handle the cache data from here, as + it made more sense and reduces the code size in SOGoUser.m. + (-fetchProfile): now a void method. + (-storeJSONProfileInDB:): new method that handles the DB portion + of primaryStoreProfile, providing a corollary to + fetchJSONProfileFromDB. + + * SoObjects/SOGo/SOGoCache.m (+initialize): the memcached host can + now be configured using the "SOGoMemCachedHost" user default. The + method now contains initialization code for global vars that used + to be in -init instead. + (-userSettingsForLogin:,-userDefaultsForLogin:,-userAttributesForLogin:): + refactoring: those accessors now only return an NSString + associated with their respective key. There is no longer any + dictionary de-/serialization occuring in SOGoCache. -2005-03-20 Helge Hess + * SoObjects/SOGo/SOGoParentFolder.m (-subFolders): we raise the + exceptions we get only if the current request is a PROPFIND. This + avoids a useless restart of SOGo when the database is down during + the execution of other requests. - * SOGoContactFolder.m: changed to use GDLContentStore (v0.9.9) + * Tools/sogo-tool.m (main): we now check that the SOGo + configuration is valid and consequently that the tool runs under + the same account as SOGo. -2005-02-24 Helge Hess + * UI/Scheduler/UIxComponentEditor.m (-_handleAttendeeData): make + direct use of the JSON constructor of NSDictionary rather than + instantiating an NSScanner. This simplifies the code. - * SOGoContactObject.m: fixed a MacOSX warning (v0.9.8) +2009-11-18 Wolfgang Sourdeau -2005-02-18 Helge Hess + * SoObjects/SOGo/NSString+Utilities.m (-isJSONString): new utility + method that determines whether the current string is a json + document. - * SOGoContactObject.m: added a REST method to patch a single field of - the contact (v0.9.7) + * SoObjects/SOGo/NSDictionary+BSJSONAdditions.m + (+dictionaryWithJSONString:): this constructor now explicitly + returns an NSMutableDictionary to avoid messing with mutable + copies and useless allocation/deallocation in the callers. -2005-02-06 Helge Hess + * Main/SOGo.m (+initialize): removed the "debugObjectAllocation" global + variable since "debugLeaks" has the same meaning. Instantiate a + "SOGoStartupLogger" object in order to avoid using NSLog when the + parent process is starting, in order to work-around the caching of + the pid in NSLog. - * SOGoContactObject.m, SOGoContactFolder.m: added proper - message/folder class (v0.9.6) +2009-11-16 Wolfgang Sourdeau -2004-12-08 Marcus Mueller + * SoObjects/SOGo/SOGoCache.m: "cache", "users" and "localCache" + are now regular ivars. "sharedCache" is now located within the + "sharedCache" constructor. "killCache" is now an instance method. - * SOGoContactFolder.m: changed to NGLogging (v0.9.5) +2009-11-10 Francis Lachapelle -2004-09-25 Helge Hess + * UI/Scheduler/UIxComponentEditor.m (-_handleAttendeesEdition): + avoid scanning JSON when there's no attendee. - * fixed compilation on MacOSX (v0.9.4) +2009-11-10 Wolfgang Sourdeau -2004-08-27 Helge Hess + * UI/SOGoUI/UIxComponent.m (-applicationPath): new method that + really returns the name of the WO application. + (-modulePath): renamed the old applicationPath method to be more + accurate about its purpose. - * v0.9.3 +2009-11-07 Ludovic Marcotte - * SOGoContactObject.m: use 'cn' as davDisplayName + * SoObjects/SOGo/SOGoCache.m - if we get a JSON + error when trying to convert our string coming + from memcached, we don't store it to the cache + and we log the error. + * Modified the code so we always use lower-case + headers prior to sending mails. This is to avoid + an uber-lameness in SOPE. Also added warnings + around that code so we can get rid of SOPE-mime, + we'll do things cleanly. + +2009-11-06 Wolfgang Sourdeau + + * UI/WebServerResources/UIxPreferences.js (_setupEvents): we check + whether "categoriesValue" resolves properly before assigning it + a new value. + +2009-11-05 Francis Lachapelle + + * Scripts/updates.php: Minor changes to support when PHP short_open_tag + parameter is set to Off. + + * UI/WebServerResources/ContactsUI.js (getMenus): activated the + list creation option of the addresbooks contextual menu. + + * UI/WebServerResources/SOGoRootPage.js (onFieldKeyDown): don't + submit the form if no password is typed. - * SOGoContactObject.[hm]: can now decode the property list stored in - the store (v0.9.2) - - * started implementation of contact folders (v0.9.1) +2009-11-04 Francis Lachapelle -2004-08-26 Marcus Mueller + * Major refresh of CSS stylesheets. + * UI/WebServerResources/SOGoAutoCompletion.js + (performSearchCallback): fixed position of popup menu when used in + the contacts list editor. - * Product.m: typo in comment fixed +2009-11-04 Wolfgang Sourdeau - * SOGoContactFolder.h, SOGoContactObject.h: changed _Appointments_ to - _Contacts_ + * SoObjects/SOGo/NSDictionary+Utilities.m + (+dictionaryFromStringsFile:): instantiate autoreleased objects. -2004-08-25 Marcus Mueller + * SoObjects/SOGo/NSArray+Utilities.m (-jsonRepresentation): + instantiate autoreleased objects. - * ChangeLog: created -2005-07-30 Helge Hess +2009-10-30 Francis Lachapelle - * SOGoMailObject.m: fetch Kolab parts for inline display (v0.9.126) + * UI/WebServerResources/SchedulerUI.js: the events list is now + refreshed in the AJAX callback. This avoid seeing an empty table + while refreshing the events list. - * SOGoMailObject.m: added 'outlookMessageClass' property with some - mail tagging for Kolab entities (v0.9.125) + * UI/WebServerResources/UIxPreferences.js + (addDefaultEmailAddresses): fixed issue in vacation tab when + adding the defaults values to a empty list. - * SOGoMailBodyPart.m, SOGoMailObject.m: added default to disable etag - delivery/checks for mail objects (SOGoMailDisableETag) (v0.9.124) + * UI/WebServerResources/UIxComponentEditor.js + (onComponentEditorClose): new method that closes definition popup + windows associated to the event (attendees/recurrence/reminder). -2005-07-22 Helge Hess +2009-10-28 Francis Lachapelle - * v0.9.123 + * UI/Contacts/UIxContactView.m (-primaryEmail, -secondaryEmail): + remove double-quotes from FN attribute to avoid JavaScript errors. - * SOGoMailAccount.m: added -preferredIdentity method + * UI/WebServerResources/UIxMailToSelection.js: removed duplicated + functionality in addressFieldLostFocus. Removed the ability to set + an auto-completion text field to read-only. - * SOGoUser+Mail.m: added a method to retrieve the primary identity of - an account + * UI/WebServerResources/UIxListEditor.js: refactoring. - * SOGoSharedMailAccount.m: do not show the drafts folder in share - mailboxes (v0.9.122) + * UI/WebServerResources/ContactsUI.js: Improved text of import + cards dialog. - * SOGoUser+Mail.m: properly set email field of share account identities - (v0.9.121) + * UI/WebServerResources/SchedulerUI.js: Improved text of import + events dialog. - * v0.9.120 + * UI/Contacts/UIxListEditor.m (-setReferencesValue:): rewrote + method since only the contacts IDs are received from the web + interface. The names and emails are retrieve from the addressbook. - * SOGoMailBaseObject.m: added a method to locate the mail accounts - folderby traversing the container hierarchy + * SoObjects/Contacts/SOGoContactGCSFolder.m + (-lookupContactWithName): new method that returns a dictionary + with the attributes of a contact. - * SOGoMailIdentity.m: include sent folder in -description + * SoObjects/Appointments/SOGoAppointmentObject.m + (-changeParticipationStatus:withDelegate:forRecurrenceId:): added + exception when delegated user is the organizer. - * SOGoMailAccounts.m: added method to fetch just the identities with - emitter permissions +2009-10-28 Ludovic Marcotte - * SOGoUser+Mail.m: properly create mail identity objects - -2005-07-21 Helge Hess + * UI/MailPartViewers/UIxMailPartICalActions.m + (_setupChosenEventAndEventObject:) - we now + correctly save the event contained in the mail + when clicking on Accept/Decline/Delegate into + the user's calendar if it's not in there already. - * v0.9.119 - - * SOGoMailAccounts.m: fetch identities from SoUser +2009-10-27 Cyril Robert - * added SOGoUser+Mail category for mail specific SoUser fields + * UI/Common/UIxPageFrame.m (userEmail): Added to display the user's email + address in the linkBanner. + * UI/Contacts/UIxListView.m + (itemHref, itemName, itemEmail): Added to allow clickable email addresses in + UIxListView. + (itemText): Removed, no longer needed. - * SOGoMailIdentity.m: added ivars/accessors/description +2009-10-27 Ludovic Marcotte - * v0.9.118 + * SoObjects/SOGo/SOGoGCSFolder.m (create) + We send the advisory to the owner of the newly + created collection, not the currently logged on + user (which might be different). The sender will + nevertheless be the currently logged on user, as + it's this particular user that triggered the + creation of the collection. + * Documentation/SOGo Installation Guide.odt + Updated to set WOUseRelativeURLs to YES instead + of NO by default. + * We now correctly lowercase the SOGoLDAPContactInfoAttribute + attribute everywhere. - * SOGoMailAccounts.m: reject access to the folder in case the name of - the home folder doesn't match the logged in account (a user tries to - access another users Mail application) +2009-10-26 Francis Lachapelle - * started work on account based identities - - * SOGoMailObject.m: added a -davEntityTag (v0.9.117) - -2005-07-20 Helge Hess + * UI/WebServerResources/ContactsUI.js + (onContactDeleteEventCallback): fixed retrieval of card name when + deletion is not possible (caused by a possible bug in prototype.js). + (setEventsOnAddressBook): don't observe the double-click event on + addressbooks not owned by the user. - * SOGoMailObject.m: improved -doesMailExist check (do not refetch if - the coreinfo is available anyways) (v0.9.116) +2009-10-25 Ludovic Marcotte - * v0.9.115 + * Fixed many compilation warnings + * Updated the Mobile Device Configuration Guide + in order to document the iPhone OS 3.x configuration + settings (iPhone / iPod) + * UI/Scheduler/UIxComponentEditor.m (_handleCustomRRule:) + Improved the robustness of the code. - * SOGoMailObject.m: do not use clientObject when fetching the - coreinfos, added a -doesMailExist method to cheaply check for - mail existance +2009-10-24 Ludovic Marcotte - * SOGoMailBodyPart.m, SOGoMailObject.m: added a constant etag for - content (possible for IMAP4 content), check etag prior delivering - content (return a 304 in case the constant etag is supplied) + * Updated the Czech translation - patch from + Milos Wimmer + * Added a French translation of the new Vacation + and Forward preference tabs. + * Updated the French translation in the + Administration module. + * Updated the French translation of the Calendar + properties window. + * Updated the French translation with regard to + event delegation support. + * UI/Scheduler/UIxCalListingActions.m + We now handle BOOL as real BOOL when storing them + in the prefs instead of going with NSNumber. No + need to do that and our JSON generator/parser + will handle this properly. This avoid a dump + crash when toying with the "Show completed tasks" + toggle in the calendar module. - * SOGoMailObject.m: added handling for some specific headers (v0.9.114) +2009-10-23 Wolfgang Sourdeau -2005-07-19 Helge Hess + * SoObjects/Contacts/SOGoContactSourceFolder.m + (-initWithName:andDisplayName:inContainer:): use the source name + when the displayname is nil. - * SOGoMailObject.m: changed to fetch and parse the full mail header, - can be disabled using the 'SOGoDoNotFetchMailHeader' default. The - overhead is about 10ms on the dev-system (v0.9.113) + * SoObjects/SOGo/SOGoUserManager.m (_registerSource:): added + sanity checks and warnings to the user. + +2009-10-23 Ludovic Marcotte - * SOGoMailFolder.m: report NO in -isCreateAllowed when the folder is - the INBOX and SOGoSpecialFoldersInRoot (altnamespace) is enabled - (#1472) (v0.9.112) - - * SOGoDraftObject.m: made 'SOGoInternetMailSuffix' a pattern which can - access request values (v0.9.111) - - * SOGoDraftObject.m: added support for adding a marker to the textpart - of the message in case the client is accessing the server from the - Internet. The text can be specified using the - 'SOGoInternetMailSuffix' default (v0.9.110) + * SoObjects/SOGo/SOGoUserFolder.m (-subFoldersFromFolder:) + Addded a check to NOT return web calendars in this query. + +2009-10-23 Francis Lachapelle + + * UI/MailerUI/UIxMailMainFrame.m (-formattedMailtoString:): fixed + the case when dealing with a NGVCardReference (from a list) with + no FN attribute and no N attribute. + (-composeAction): fixed the case when dealing with a contact with + no email address. + (-composeAction): fixed the case when dealing with a contact from + an LDAP source. + + * UI/Scheduler/UIxComponentEditor.m (-calendarList): added proper + verification of deletion rights on the current calendar and + creation rights on other calendars. + +2009-10-22 Ludovic Marcotte + + * SoObjects/SOGo/SOGoUserManager.m + Modified so that we throw a warning when there are + no authentication sources defined. + + * Updated all guides in preparation for the release. + +2009-10-21 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-davCalendarTimeZone): new DAV accessor that returns the + user's timezone. + + * SoObjects/Appointments/SOGoUserFolder+Appointments.m + (-davCalendarScheduleInboxURL, davCalendarScheduleOutboxURL): + return nil if used with iCal 4. + + * SoObjects/SOGo/SOGoContentObject.m (-davResourceType): removed + useless method. + + * SoObjects/SOGo/SOGoObject.m (-davURLAsString): new method that + returns the resource url as a string, by taking WOUseRelativeURLs + into account. + + * SoObjects/SOGo/WORequest+SOGo.m (-isICal4): new method that + determines whether to work-around iCal4 calamities. + +2009-10-21 Francis Lachapelle + + * UI/Scheduler/UIxCalListingActions.m + (-_loadScheduleLimitsForUsers:): we must not consider users not + part of the system (no uid). + + * UI/WebServerResources/UIxAttendeesEditor.js + (redisplayFreeBusyZone): removed logic around start/end + minutes. It was breaking the display of an event spanning multiple days. + +2009-10-20 Ludovic Marcotte + + * Added missing timezones + * SoObjects/SOGo/SOGoParentFolder.m: + -davCreateCollection:inContext: + We check, prior to creating the resource, if + where we create it is a supported target. + * SOPE/NGCards/iCalTimeZonePeriod.m + -_occurenceForDate:byRRule: + We correctly compute the number of shifting days + during DST changes. + +2009-10-19 Francis Lachapelle + + * SoObjects/SOGo/NSCalendarDate+SOGo.m: lower the values of + secondsOfDistantFuture and secondsOfDistantPast to solve a problem + with 64bit environment. + + * UI/Scheduler/UIxAppointmentEditor.m + (-startDateIsEqualToEndDate): new method that returns whether or + not the start date is identical to the end date (used for all-day events). + +2009-10-19 Ludovic Marcotte + + * SoObjects/Appointments/SOGoAppointmentObject.m + (saveComponent:) - in case of an update, we check + if no organizer was specified when handling + attendees addition to the event. - * v0.9.109 +2009-10-17 Ludovic Marcotte - * added fragile base class version checks to most classes + * UI/WebServerResources/UIxListEditor.js (endEditable): + We use "uname" instead of "name" when reading back the + values from the autocompletion code. + +2009-10-16 Francis Lachapelle + + * UI/WebServerResources/SchedulerUI.js (eventsListCallback): don't + set the hour attribute for all-day events. + (changeCalendarDisplay): enable auto-scroll when scrolling + to an event (!). + (refreshCalendarEventsCallback): idem. + (scrollDayView): don't scroll when selecting an all-day event. + + * UI/Scheduler/UIxComponentEditor.m (-_loadRRules): the repeat + rule interval can be set unconditionally for weekly rules. When an + end date or repeat count is defined, the rule must be considered + "custom" in the web interface. + (_handleCustomRRule:): fixed a bug that would set a day mask even + when it was not defined. The day mask is optional in the RRULE definition. + +2009-10-15 Cyril Robert + + * SoObjects/Appointments/SOGoAppointmentFolders.m + (+webdavAclManager): Added to fix issues with iPhones (3.1.2) + * SoObjects/Appointments/SOGoAppointmentFolder.m + (+webdavAclManager): Changed write-properties and write-content to + non-abstract, and set the equivalent for write-content to + SoPerm_AddDocumentsImagesAndFiles + * SoObjects/SOGo/SOGoWebDAVAclManager.m (-copyWithZone:): Added to allow + object copy (useful for SOGoAppointmentFolders) + +2009-10-15 Ludovic Marcotte + + * Added SOPE/NGCards/TimeZones/* - generated from + the official Olson databases. This is to allow SOGo + to include VTIMEZONE components on _new_ events or + tasks, which fix the problem we had with + recurring events over DST changes. + * SOPE/NGCards/iCalTimeZone.m + Introduced a cache for timezone files and added + a method to get it based on its name + * UI/Scheduler/UIxAppointmentEditor.m + UI/Scheduler/UIxTaskEditor.m + Modified the event/task editor to properly + add the timezone component for new events/tasks + * Updated the sogo.spec file to include the + new timezone files. + +2009-10-15 Francis Lachapelle + + * UI/WebServerResources/AdministrationUI.js (help): new function + to display the help from the toolbar instead of the module title. + +2009-10-15 Ludovic Marcotte + + * UI/MailerUI/UIxMailAccountActions.m + We check if the server supports quota prior to asking for + the value. The patchset has also been updated for faster + access of the server's capabilities. + +2009-10-14 Francis Lachapelle + + * UI/PreferencesUI/UIxPreferences.m (-defaultEmailAddresses): new + method that returns a string representation of all the user's + email addresses. + + * UI/WebServerResources/UIxPreferences.js + (addDefaultEmailAddresses): new function that make sure all of the + user's default email addresses appear in the addresses textarea of + the vacation tab. + + * UI/WebServerResources/SchedulerUI.js (changeCalendarDisplay): + don't highlight the day selection when in the day view. + (eventsListCallback): don't popup event window when + double-clicking on D&T events in the top list of the calendar module. + + * UI/Scheduler/UIxCalListingActions.m (_fixDates:): start/end + dates must be adjust for DST only when dealing with the day based + view. No change is required for the month view, except for the + recurrence IDs. + + * UI/Scheduler/UIxComponentEditor.m (-getEventRWType): the user + is not an attendee when dealing with web calendars. + (-_toolbarForOwner:andClientObject:): no toolbar should appear + when dealing with web calendars. + +2009-10-14 Ludovic Marcotte + + * UI/Scheduler/UIxCalMainActions.m + We store the string value of the URL in our + prefs, not the NSURL instance. + +2009-10-13 Ludovic Marcotte + + * SoObjects/SOGo/NSDictionary+BSJSONAdditions.m + Fixed the objCType comparison on GNUstep for boolean + values - we must consider 'c' and 'C'. + * SoObjects/SOGo/SOGoCache.m + Introduce a localCache static variable to avoid going + to memcached all the time. We'll cache values during + the request and flush them after. + * SoObjects/SOGo/SOGoUser.m + Modified -userDefaults to set the timezone when prefs + have first been set. + * SoObjects/SOGo/SOGoUserDefaults.m + Reworked the logic in order to use the correct UPDATE/INSERT + statement when prefs exist or not. Also cleaned up the + types definition. + * UI/PreferencesUI/UIxPreferences.m + Removed worthless NSLog() call. + +2009-10-13 Francis Lachapelle + + * UI/WebServerResources/MailerUI.js (-ICalendarButtonCallback): + delegate the execution of this method to the parent when called + from a popup window. This way, popups are properly reloaded when necessary. + + * SoObjects/Appointments/SOGoAppointmentObject.m (- + _handleAttendee:withDelegate:ownerUser:statusChange:inEvent:): + added proper initialization of variable. + +2009-10-13 Wolfgang Sourdeau + + * UI/Scheduler/UIxComponentEditor.m (-setComponent:): we invoke + _loadAttendee only when "jsonAttendees" is not set, even though + that condition should always be true. + + * UI/PreferencesUI/UIxPreferences.m (-setCategoriesValue): we use + [self errorWithFormat:] rather than NSLog to output + deserialization errors. + + * UI/Scheduler/UIxAppointmentEditor.m (-delegateAction): same as + below. + + * UI/MailPartViewers/UIxMailPartICalActions.m (-delegateAction): + delegatedAttendee is autoreleased to avoid a leak. + + * SoObjects/SOGo/LDAPSource.m (-dealloc): we release the + "searchAttributes" ivar, even though LDAPSource instances are + never deallocated. + + * SoObjects/Mailer/SOGoMailObject+Draft.m (-contentForEditing): + "keys" must be autoreleased to avoid a leak. + + * UI/Common/UIxAclEditor.m (-setUserUIDs): we need to retain the + array of user ids to avoid a zombie. + + * UI/Common/UIxPageFrame.m (-dealloc): we release + additionalCSSFiles to avoid a leak. + +2009-10-12 Ludovic Marcotte + + * Updated patchset to support properly windows-1250 + charset instead of fallbacking stupidly to iso-8859-1 + * Updated version number to 1.1.0 + * Fixed type for the "Administration" module + +2009-10-10 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartICalActions.m (-_emailEvent): + "eventString" is now released to avoid a leak. + + * UI/MailPartViewers/UIxMailPartHTMLViewer.m (-dealloc): ignoreTag + is released, to avoid a leak if the HTML content was not compliant. + + * UI/Contacts/UIxListView.m (-checkListReferences): the copy of + "card" must be released once put in the "invalid" array, in order + to avoid a leak. + + * Main/SOGo.m (-init): released "rm" when no longer needed. + (-dispatchRequest:): simplified leak catching code. + +2009-10-09 Francis Lachapelle + + * UI/PreferencesUI/UIxPreferences.m (+initialize, -init, + -isVacationEnabled, -setEnableVacation:, -enableVacation, + -setAutoReplyText:, -autoReplyText, -setAutoReplyEmailAddresses:, + -autoReplyEmailAddresses, -daysBetweenResponsesList, + -setDaysBetweenResponses:, -daysBetweenResponses, + -setIgnoreLists:. -ignoreLists, -isForwardEnabled, + -setEnableForward:, -enableForward, -setForwardAddress:, + -forwardAddress, -setForwardKeepCopy:, -forwardKeepCopy): added + web elements to set an auto-reply message and forward address in + the preferences window. + (-inTheOffice, setInTheOffice:): removed useless methods. + +2009-10-08 Ludovic Marcotte + + * Added filters support (Vacation and Forward) which + can be enabled using the SOGoVacationEnabled and + SOGoForwardEnabled defaults. One Sieve right now is + support and we assume the Sieve server is the same + as the IMAP server, running on port 2000. + * Cleaned up everything related to the old Sieve stuff + which was now useless with our new implementation. + +2009-10-08 Francis Lachapelle + + * UI/PreferencesUI/UIxPreferences.m (-shortDateFormatsList): added + "default" option. + (-itemShortDateFormatText): added formatting for "default" option. + (-userShortDateFormat): falls back to "default" if not set for the user. + (-setUserShortDateFormat): removes user default if set to + "default". + (-longDateFormatsList, -itemLongDateFormatText, + -userLongDateFormat, -setUserLongDateFormat): new "default" option + support, like for the short date format. + (- timeFormatsList, -itemTimeFormatText, -setUserTimeFormat): new + "default" option support, like for the short date format. + +2009-10-08 Wolfgang Sourdeau + + * SoObjects/SOGo/LDAPSource.m (-_searchAttributes): we already + have knowledge of the LDAPContactInfoAttribute so we no longer + need to fetch it from the user defaults. + + * SoObjects/Contacts/SOGoContactLDIFEntry.m + (-initWithName:withLDIFEntry:inContainer:): we no longer retain + "container" in order to avoid a leak. + (-vCard): we now use the "VCARD" profile, all in upper case. We + first resolve the full name using "c_cn", which is the special key + used by the LDAP sources to access the fullname attribute. + + * Tests/webdavlib.py (MailDAVMailQuery._initSort): now handles the + "order" attribute from the "ascending" parameter. + + * Tests/test-maildav.py (DAVMailCollectionTest._testSort): added a + boolean "ascending" parameter that defaults to True. + (DAVMailCollectionTest.testREPORTMailQueryFilters): method + replacing the filter part of testREPORTMailQuery. + (DAVMailCollectionTest.testREPORTMailQuerySort): method + replacing the sort part of testREPORTMailQuery. + + * SoObjects/Mailer/SOGoMailFolder.m (_sortElementIsAscending:): + new method that determines whether the sort ordering is ascending + or not. + (_sortOrderingsFromSortElement:): new method relacing + "_mailSortingFromSortElement:", that returns an array of + EOSortOrdering instances based on the "sort" element passed as + parameter. + +2009-10-07 Cyril Robert + + * SoObjects/Mailer/EOQualifier+MailDAV.m + (buildQualifierFromFilters:): Now returns an EOQualifier, fixed + qualifier formats and constructor, refactored to regroup code. + * Tests/test-maildav.py (testREPORTMailQuery): Disabled a few + tests that don't pass for now. + * SoObjects/Mailer/EOQualifier+MailDAV.m (buildQualifierFromFilters:): + Removed, everything is now done in (qualifierFromMailDAVMailFilters:). + (qualifierFromMailDAVMailFilters:): Removed all parentheses in + qualifier. + * SoObjects/Mailer/EOQualifier+MailDAV.m + (qualifierFromMailDAVMailFilters:): Fixed segfault when there are + no filters. + +2009-10-07 Francis Lachapelle + + * UI/Scheduler/UIxCalListingActions.m + (-_fetchFields:forComponentOfType:): the _fixDate method must not + be called when in the month view. + +2009-10-07 Wolfgang Sourdeau + + * Tests/webdavlib.py (MailDAVMailQuery._initSort): we now accept + multiple sort parameters. + + * Tests/test-maildav.py (DAVMailCollectionTest._testSort): new + method to test sorting messages. + (DAVMailCollectionTest.testREPORTMailQuery): added some tests for + "SORT". + + * SoObjects/SOGo/SOGoParentFolder.m (-hasLocalSubfolderNamed): + rewritten parts of the method to better fit our coding standards. + Exported method in the SOGoParentFolder.h to avoid warnings where + it's used. + + * SoObjects/Appointments/SOGoAppointmentFolders.m + (_fetchPersonalFolders:withChannel:): we now skip unexisting + folders declared in the list of web folder ids to avoid problems. + When such id is found, it is also reported in the logs to inform + the administrator of this inconsistency. + +2009-10-06 Cyril Robert + + * SoObjects/Mailer/EOQualifier+MailDAV.m (_formattedDate:): New method to + format a date correctly for imap search qualifiers. + (buildQualifierFromFilters:): Fixed selectors in qualifier strings, and + fixed date formatting. + * SoObjects/Mailer/SOGoMailFolder.m + (_fetchMessageProperties:matchingQualifier:andSorting:): Implementation. + (_davPropstatsWithProperties:andMethodSelectors:fromMessage:): Implementation. + (_appendProperties:fromMessages:toResponse:): Implementation. + +2009-10-06 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailFolder.m (_appendMessageData:usingId): + we no longer need to unselect the folder where the "append" + happens since it worked around a deeper bug in sope-mime which has + been fixed in the patchset. + + * SoObjects/SOGo/SOGoGCSFolder.m + (-createChildComponentWithRecord:): made method public. + (-createChildComponentWithName:andContent:): made method public. + + * SoObjects/SOGo/NSArray+DAV.m (-asDAVPropstatWithStatus:): new + method that creates a "PROPSTAT" element with the specified + status. + +2009-10-06 Francis Lachapelle + + * SoObjects/SOGo/SOGoUser.m (_timeValue): improved parsing to + support single integers (not only the XY:00 form). + (-timeFormat): returns the user's time format or system + (SOGoTimeFormat) default if not defined. + (-replyPlacement): honor the system defaults (SOGoMailReplyPlacement). + (-signaturePlacement): honor the system defaults + (SOGoMailSignaturePlacement). + (-messageForwarding): honor the system defaults (SOGoMailMessageForwarding). + + * SoObjects/Mailer/SOGoMailObject+Draft.m (-contentForReply): + reply and signature placement properly honors system defaults + (SOGoMailReplyPlacement and SOGoMailSignaturePlacement). + + * UI/PreferencesUI/UIxPreferences.m (-userTimeFormat): honor the + system defaults through the SOGoUser class. + (-userDayStartTime): idem. + (-userDayEndTime): idem. + (-userMessageForwarding): idem. + (-repyPlacement): idem. + (-signaturePlacement): idem. + + * UI/Scheduler/UIxCalDayTable.m (-hoursToDisplay): honor the + system defaults through the SOGoUser class. + + * UI/WebServerResources/UIxPreferences.js (-initPreferences): fix + to properly set the initial status of the signature placement + select field. + +2009-10-05 Wolfgang Sourdeau + + * Tests/test-maildav.py (DAVMailCollectionTest._testFilter): fixed + to use the "test-dav-mail" folder name as collection during the + tests. + + * SoObjects/Mailer/SOGoMailFolder.m (-davMailQuery): new method + implementing the "mail-query" REPORT for Inverse's maildav + protocol. + (-parseDAVRequestedProperties:): new method making use of the + "davIMAPFieldsTable" method below for parsing fields in the + mail-query request. + (-_mailSortingFromSortElement:): new method to parse the "sort" + element of mail-query requests. + (-_fetchMessageProperties:matchingQualifier:andSorting:): new + stub for a method that will fetch the IMAP messages based on the + criteria found above. + (-_appendProperties:fromMessages:toResponse:) new stub for a + method that will add the content of the resulting set of message + properties to the DAV response. + +2009-10-05 Cyril Robert + + * SoObjects/Mailer/SOGoMailFolder.m (-davIMAPFieldsTable): new + method designed to match maildav properties on mail objects with + IMAP fields, for PROPFIND and REPORT methods. + + * Tests/test-webdavlib.py: Added new tests for the URL parser / regexp. + + * Tests/webdavlib.py: Fixed errors in the URL regexp. + + * SoObjects/Mailer/EOQualifier+MailDAV.m: New category to generate IMAP + qualifiers from DAV filters. (REPORT) + (buildQualifierFromFilters:): Formatted dates using [NSCalendarDate + rfc822DateString]. Added NOT and extra fields. + +2009-10-04 Ludovic Marcotte + + * Adjusted the Welsh and Dutch templates for + mail invitations - we were missing classes resulting + in crashers. + +2009-10-02 Wolfgang Sourdeau + + * Tests/webdavlib.py (MailDAVMailQuery): new class that implements + the "mail-query" DAV REPORT. + (WebDAVQuery._initProperties): new helper methods invoked by + PROPFIND and REPORT classes at initialization to format the "prop" + part of their query. + (HTTPUnparsedURL._parse): accept more valid URL characters. + + * Tests/test-maildav.py + (DAVMailCollectionTest.testREPORTMailQuery): new method with + initial tests for "mail-query" report. + +2009-10-01 Cyril Robert + + * SoObjects/Mailer/SOGoMailObject.m: Added methods required for PROPFIND / + REPORT: _fetchProperty:, _hasFlag:, _emailAddressesFrom:, davDate, + hasAttachment, read, textDescription, cc, from, inReplyTo, messageId, + received, references, davDisplayName, to + * Tests/test-maildav.py (testPROPFIND): Added tests for the new MailDAV + PROPFIND. + * UI/PreferencesUI/UIxPreferences.m (languages, language, setLanguage:, + languageText): Added to support changing the language from the Preferences + dialog. + +2009-10-01 Cyril Robert + + * SoObjects/Mailer/SOGoMailFolder.m + (-appendMessage:inContext:usingId:): we no longer instantiate the + message to check whether it exists since we trust the fact that we + would receive an error from NGImap if the creation failed. + +2009-10-01 Wolfgang Sourdeau + + * Tests/test-webdavlib.py: new test script for testing the + webdavlib library itself. + (HTTPUnparsedURLTest.testURLParse): new test case for the new + HTTPUnparsedURL class. + + * Tests/webdavlib.py (HTTPUnparsedURL): new utility class for + consistently parsing url strings + + * Tests/test-maildav.py (DAVMailCollectionTest.testPUT): fixed to + delete the test collection prior to the test + + * SoObjects/Appointments/SOGoAppointmentFolders.m + (-proxyFoldersWithWriteAccess:): return an autoreleased + "proxyFolders" to avoid a leak. + + * Tests/test-maildav.py (DAVMailCollectionTest._putMessage): + messages have "message/rfc822" mime-type. + (DAVMailCollectionTest.setUp): use servername + +2009-09-30 Wolfgang Sourdeau + + * SoObjects/SOGo/LDAPSource.m (-init): removed "ldapConnection" + ivar, since we now always use it as an autoreleased local value. + (-_ldapConnection): modified implementation of + "_initLDAPConnection" that now returns an autoreleased instance of + NGLdapConnection or nil. + + * UI/MailerUI/UIxMailMainFrame.m (-_setupContext): if + "moduleSettings" is non-nil, we don't reset it in the user + defaults. + (-composeAction): autorelease "addresses" to avoid a leak. + +2009-09-29 Cyril Robert + + * SoObjects/Mailer/SOGoMailFolder.m (PUTAction:, _appendMessageData:usingId:): + Added new methods to enable MailDAV PUT on a collection. + * SoObjects/Mailer/SOGoMailBaseObject.m (IMAP4IDFromAppendResult:): Moved + here, since SOGoDraftObject and SOGoMailFolder need it. + * SoObjects/Mailer/SOGoDraftObject.m (_IMAP4IDFromAppendResult): Removed, + replaced by [SOGoMailBaseObject IMAP4IDFromAppendResult:]. + * SoObjects/SOGo/SOGoObject.m: Changed file extension from "mail" to "eml". + * SoObjects/Mailer/SOGoMailAccount.m: Added accountName to fix errors in MailDAV. + * SoObjects/Mailer/SOGoMailAccounts.m: Added management for account names + to fix errors in MailDAV. + * SoObjects/Mailer/SOGoMailFolder.m (appendMessage:): Added this method to + facilitate the PUT from a SOGoMailObject. + * SoObjects/Mailer/SOGoMailObject.m (PUTAction:): Added to enable MailDAV + PUT on a non-existing object. + * UI/MailerUI/UIxMailMainFrame.m (mailAccounts): Changed the return value to + include both the account name and display name. + * UI/MailerUI/UIxMailMainFrame.m: Fixed an error when composing from the + Address Book module. + +2009-09-29 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoObject.m (SOGoSelectorForPropertyGetter) + (SOGoSelectorForPropertySetter): fixed a case where propSel should + be initialized to NULL. + + * SoObjects/SOGo/SOGoGroup.m (-members): we now cache the array of + members as an ivar. + (-hasMemberWithUID): new self-explicit method. + + * SoObjects/SOGo/SOGoGCSFolder.m + (_fetchAclsForUser:forObjectAtPath:): refactored method to make it + actually work for group searches, without unitialized data and to + clarify code. + + * SoObjects/SOGo/SOGoObject.m + (_urlPreferringParticle:overThisOne:): instead of risking + confusion between SOPE, NSURL and friends, we revert this change + (see below) and choose other ways to avoid escaping of "@", "%", + etc... + + * SoObjects/SOGo/NSString+Utilities.m (-stringByEscapingURLPart): + (revert) removed useless method. + +2009-09-28 Cyril Robert + + * SoObjects/Appointments/SOGoAptMailInvitation.m: Added Spanish definition. + * SoObjects/Appointments/SOGoAptMailICalReply.m: Added Spanish definition. + * SoObjects/Appointments/SOGoAptMailDeletion.m: Added Spanish definition. + * SoObjects/Appointments/SOGoAptMailUpdate.m: Added Spanish definition. + * SoObjects/SOGo/NSString+Utilities.m (stringByEscapingURLPart): Added to + fix the URL parts for MailDAV + * SoObjects/Mailer/SOGoMailAccount.m (toManyRelationshipKeys): Added the + "folder" prefix for MailDAV compatibility. + * SoObjects/SOGo/SOGoObject.m (_urlPreferringParticle:): Fixed URL escaping + to make paths work in MailDAV. + +2009-09-28 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUser.m (+initialize): avoid a crash when + SOGoProfileURL is not set. + +2009-09-27 Ludovic Marcotte + + * Reworked the UIxMailPartSignedViewer to inherit + from UIxMailPartMixedViewer. + * UI/WebServerResources/SchedulerUI.js + We allow empty calendar imports. + * Avoid assumptions for .ics presence on URL + subscriptions. + +2009-09-25 Ludovic Marcotte + + * Renamed SoObjects/Contacts/SOGoContactLDAPFolder to + SoObjects/Contacts/SOGoContactSourceFolder + * Renamed SoObjects/SOGo/LDAPUserManager to + SoObjects/SOGo/SOGoserManager.m + * Added SoObjects/SOGo/SOGoSource.h and + SoObjects/SOGo/SQLSource.{h,m} + We now support authentication and address book sources + coming from a SQL database. This can be used concurrently + with LDAP sources. Modified many classes to reflect this + change. + * SoObjects/SOGo/LDAPSource.m + We trim the bind field value prior to adding it to our + LDAP search filter. + * UI/MailPartViewers/UIxMailPartSignedViewer.m and friends: + We now show more information on the S/MIME encoded messages. + We also handle correctly multipart/alternative messages. + +2009-09-24 Cyril Robert + + * SoObjects/Appointments/SOGoAppointmentFolder.m (bareFetchFields:): Handled + the Exception when all conditions are nil. + * SoObjects/Contacts/NGVCard+SOGo.m (ldifString): Made corrections + reflecting from the fixes in NGVCard to properly format an address. + +2009-09-23 Cyril Robert + + * SoObjects/Appointments/SOGoAppointmentFolder.m (importComponent:): Fixed + addition of BEGIN/END block. + * SoObjects/Appointments/SOGoWebAppointmentFolder.m (deleteAllContent): + Created deleteAllContent to be able to change it in the store bundle. + * UI/Scheduler/UIxCalMainActions.m (addWebCalendarAction): Small improvement. + +2009-09-23 Wolfgang Sourdeau + + * UI/WebServerResources/SOGoAutoCompletion.js + (SOGoAutoCompletionInterface.onKeyDown): (needs review) we don't + overwrite the input's name attributes with the "uname". Otherwise + the form will not have the correct data when submitted and the + to/cc/bcc fields will be ignored. - * SOGoMailBaseObject.m: cache failed login attempts (+ connection) to - improve failed-login behaviour +2009-09-23 Ludovic Marcotte -2005-07-18 Helge Hess + * UI/PreferencesUI/UIxPreferences.m + We now fallback to the default system selected day. - * SOGoDraftObject.m: send text/* attachments with disposition 'attach' - instead of 'inline' (inline can still be enabled with the - 'SOGoShowTextAttachmentsInline' default, but be aware of the charset - issues with text attachments!) (v0.9.108) +2009-09-22 Ludovic Marcotte -2005-07-15 Helge Hess + * Updated the documentation for the Invisible -> Flagged + mail column change. + * SoObjects/Contacts/NGVCard+SOGo.m - better error-handling. - * v0.9.107 +2009-09-22 Cyril Robert - * SOGoMailBodyPart.m: check lookup key path extension to determine the - part subclass to instantiate (note: the link generator in the UI - must generate proper links including the extension to make this work) + * UI/Scheduler/UIxCalFolderActions.m (exportAction): Used + bareFetchFields from SOGoAppointmentFolder instead of fetchFields + from SOGoGCSFolder. - * added special part subclasses SOGoVCardMailBodyPart and - SOGoCalendarMailBodyPart +2009-09-22 Wolfgang Sourdeau - * SOGoMailObject.m: map vcf extension to vcard mime type, added some - debug logging + * SoObjects/Mailer/SOGoMailObject.m (-fetchPlainTextParts:): + handle the fact that the "fetch" key in a RawResponse (NGHashMap) + may not be the only response. Since [NGHashMap objectForKey:] + returns only the first one, we use the new "flattenedDictionaries" + to make sure we can retrieve all requested keys. - * SOGoMailFolder.m: fixed a stupid bug in permission parsing (v0.9.106) + * SoObjects/SOGo/NSArray+Utilities.m (-flattenedDictionaries): new + method that merges the keys and values of all contained + dictionaries into one single dictionary. - * SOGoMailFolder.m: added support for more Cyrus permission flags - (v0.9.105) + * Tests/webdavlib.py (_WD_XMLTreeElement.__init__): added a new + optional parameter "attributes" that enables the setting of + element attributes during the rendering of the element. - * SOGoMailObject.m, SOGoMailBodyPart.m, SOGoDraftObject.m: fixed gcc4.0 - warnings (v0.9.104) + * Tests/webdavlib.py (CalDAVCalendarQuery): new subclass of + WebDAVReport that handles "calendar-query" reports. - * SOGoMailManager.h: fixed a gcc 4.0 warning (v0.9.103) + * UI/MailerUI/UIxMailListView.m (+initialize): new method + initialized the two new global NSArray: defaultColumnOrder + (hardcoded values), udColumnOrder (system default values). + (-columnsDisplayOrder): we now cache the resulting set of keys. + We also test for the presence of invalid keys by comparing the + configured array with the hardcoded one above. + (-setCurrentColumn:, currentColumn): new accessors. -2005-07-14 Helge Hess - - * v0.9.102 - - * SOGoSharedMailAccount.m: create an object of class - SOGoSharedInboxFolder in case the lookup key is INBOX +2009-09-21 Ludovic Marcotte - * added SOGoSharedInboxFolder.m for inboxes of shared mail accounts - (which have a different location than standard inboxes and never - contain subfolders) + * SOPE/NGCards/versitCardsSaxDriver/VSSaxDriver.m + Avoid lameness when handling QP-encoded content. - * SOGoSharedMailAccount.m: prepared code to support a shared INBOX - folder (v0.9.101) +2009-09-21 Wolfgang Sourdeau - * v0.9.100 - - * SOGoMailAccounts.m: create an object of class SOGoSharedMailAccount - in case the lookup-key contains an ".-." - - * SOGoMailAccount.[hm]: added some functionality to deal with shared - mail accounts - - * added SOGoSharedMailAccount class for shared mailboxes - -2005-07-12 Helge Hess + * UI/WebServerResources/MailerUI.js (updateMailboxTreeInPage): + we assign the "quotaIndicator" to the quota DIV and when replacing + it, we ensure the DIV doesn't already exists. - * SOGoMailAccounts.m: use new SoUser API instead of AgenorUserManager - (v0.9.99) +2009-09-21 Cyril Robert -2005-07-11 Helge Hess + * UI/Scheduler/UIxCalMainActions.m (displayNameForUrl:): The calendar's + display name is extracted from the URL for web calendars. + * UI/Scheduler/UIxCalendarProperties.m (webCalendarURL, isWebCalendar): + Added new methods to display a web calendar's url in the properties dialog. - * v0.9.98 - - * use new -imap4Connection API everywhere - - * SOGoMailBaseObject.m: deprecated -mailManager method, added - -imap4Connection method +2009-09-21 Ludovic Marcotte - * SOGoMailBaseObject.[hm]: removed unused -imap4Client method (v0.9.97) - - * moved SOGoMailManager related API to NGImap4 (NGImap4Connection, - NGImap4ConnectionManager, etc) (v0.9.96) + * Updated the contact import text to be more + precise with regard to support input formats. -2005-07-11 Helge Hess +2009-09-19 Wolfgang Sourdeau - * v0.9.95 + * SoObjects/SOGo/SOGoUserDefaults.m + (-initWithTableURL:uid:fieldName:): removed the "shouldPropagete" + parameter. + (-primaryStoreProfile): we now propagate the values in the cache + unconditionally. - * SOGoMailBaseObject.m: removed -imapFolderName method + * SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): + the trust no longer prevent user settings and defaults to + propagate in the cache, since we no longer use gdnc for it. - * SOGoMailManager.m, SOGoMailConnectionEntry.m: moved implementations - of operations to SOGoMailConnectionEntry +2009-09-18 Wolfgang Sourdeau -2005-07-08 Helge Hess + * UI/WebServerResources/generic.js (onLoadHandler): don't trigger + the alarm refresh if the "calendarBannerLink" link is not + available (when calendar is disabled). - * SOGoMailAccounts.m: use WOContext method from libSOGo to detect - Internet access (v0.9.94) + * UI/WebServerResources/UIxPreferences.js (initPreferences) + (savePreferences): don't bother with the categoriesList if it's + not accessible (when calendar is disabled). - * SOGoMailAccounts.m: only deliver share-names as subobjects if the - request is not coming from the Internet. Ensure that limitation in - -lookupName:. Can be enabled using SOGoInternetDetectQualifier just - like in UIxMailEditor (v0.9.93) +2009-09-17 Wolfgang Sourdeau - * v0.9.92 + * Tests/test-config.py: new functional test to validate the test + configuration file. - * SOGoMailManager.m, SOGoMailConnectionEntry.m: added caching of - per-folder permissions to avoid an IMAP4 query on each folder click + * UI/PreferencesUI/UIxPreferences.m (-userComposeMessagesType): + return a default value of @"text" if the default compose type has + never been changed by the user. Otherwise, saving the preferences + will never enable the window to be closed since the new value will + always be different from nil. - * SOGoMailFolder.m: fixed an inconsistency in the naming of flags +2009-09-17 Cyril Robert -2005-07-07 Helge Hess + * UI/Contacts/UIxListEditor.m: Renamed "name" to "listName" - * SOGoMailManager.m, SOGoMailFolder.m: added methods to "bulk add" - flags to all messages contained in a folder - (-addFlags:toAllMessagesInURL:password: for the manager, - -addFlagsToAllMessages: for the SOGoFolder) (v0.9.91) - - * added specific SOGoTrashFolder.m class (subclass of SOGoMailFolder) - to allow hooking up a different UI (v0.9.90) +2009-09-16 Ludovic Marcotte - * SOGoMailAccounts.m: expose shared mailboxes retrieved via - AgenorUserManager (aka LDAP) in -toManyRelationshipKeys (v0.9.89) + * Updated the ICS import text to be more specific + * We now warn for no SSL bundle in GNUstep when + trying to load a remote ICS file and it's failing + over SSL. It's a guess but it's better than nothing. - * SOGoMailObject.m: implemented -trashInContext: method (v0.9.88) +2009-09-16 Wolfgang Sourdeau -2005-07-06 Helge Hess + * SoObjects/SOGo/SOGoGCSFolder.m (-lookupName:inContext:acquire:): + instanciated objects may be queried twice during the same session, + before being saved into the database. Therefore we cache them to + avoid losing their version number. - * SOGoMailObject.m: prefetch pgp-signature parts (v0.9.87) + * UI/WebServerResources/AdministrationUI.js, + UI/WebServerResources/ContactsUI.js, + UI/WebServerResources/MailerUI.js, + UI/WebServerResources/MailerUIdTree.js, + UI/WebServerResources/SchedulerUI.js, + UI/WebServerResources/UIxAclEditor.js, + UI/WebServerResources/UIxCalendarProperties.js, + UI/WebServerResources/UIxComponentEditor.js, + UI/WebServerResources/UIxContactsUserFolders.js, + UI/WebServerResources/UIxMailEditor.js, + UI/WebServerResources/UIxPreferences.js, + UI/WebServerResources/UIxTaskEditor.js, + UI/WebServerResources/generic.js: renamed the function "label" to + "getLabel" to avoid overriding local function variables. - * SOGoMailObject.m: started -trash action (v0.9.86) +2009-09-14 Wolfgang Sourdeau - * v0.9.85 + * UI/WebServerResources/MailerUI.js (configureLoadImagesButton): + retrieve all "img" elements with an "unsafe-src" attribute and + remember them in an array attached to $("messageContent"). We also + void using "delete" on the stored array because IE 7 is too dumb. - * SOGoMailFolder.m: added ability to check certain ACL permissions (and - cache them for one invocation) + * UI/MailPartViewers/UIxMailPartHTMLViewer.m + (-startElement:namespace:rawName:attributes:): treat tag names as + lowercase (xhtml compliance). Replace all "src" tagnames with + "unsafe-src" for distant images. No longer take an "unsafe" url + parameter into account. - * SOGoMailObject.m: implemented -isDeletionAllowed by asking the folder - for deletion - - * SOGoMailManager.m: added methods to retrieve the ACL and the myrights - from an IMAP4 mailbox + * UI/MailPartViewers/UIxMailPartSignedViewer.[hm]: new module + class that implements the viewer for multipart/signed messages. - * SOGoMailManager.m: detect Cyrus 'permission denied' when changing - flags and deliver a http-code 403 exception (v0.9.84) + * UI/WebServerResources/MailerUI.js (configureSignatureFlagImage): + new method that check whether the message being displayed is + signed and if so, displays the proper image depending on the + validation status. -2005-03-25 Helge Hess +2009-09-14 Cyril Robert + + * UI/Common/UIxPageFrame.m (commonLocalizableStrings): clabels are no longer + necessary in popup windows. + +2009-09-13 Wolfgang Sourdeau + + * UI/WebServerResources/SOGoRootPage.js (onLoginClick): avoid + setting an empty string as value to "document.cookie" since this + will actually create a cookie. + + * UI/MainUI/SOGoUserHomePage.m (-logoffAction): fixed a typo in + the "cache-control" header. + + * Main/SOGo.m (-sessionIDFromRequest:): overriden method that + returns nil to avoid any session cookie to be set by SOPE. + +2009-09-11 Cyril Robert + + * UI/Contacts/UIxContactFoldersView.m (allContactSearchAction): Added + support for excludeLists, to prevent listing vList entries. + +2009-09-11 Wolfgang Sourdeau + + * UI/MainUI/SOGoUserHomePage.m (-logoffAction): adjusted to handle + the case where then authenticator doesn't handle authentication + cookies. In such cases, this method should theorically never be + invoked though. + + * UI/Common/UIxPageFrame.m (-canLogoff): new bool accessor that + returns whether the current authenticator handles user + disconnection or not, in which case we hide the "logoff" link in + the UIxPageFrame. + + * SoObjects/SOGo/SOGoCache.m (-registerUser:withName:): adjusted + method to take an additional "userName" parameter in order to + store users with the username used at login time rather than their + user id. This is especially useful when using indirect binds. + + * SoObjects/SOGo/LDAPSource.m (-_qualifierForUIDFilter:): we + include the bindFields in the request if they are specified in the + configuration. + + * Main/SOGo.m (-authenticatorInContext:): we no return an instance + of SOGoProxyAuthenticator if "SOGoTrustProxyAuthentication" is + set in the configuration. + + * SoObjects/SOGo/SOGoProxyAuthenticator.[mh]: new class module + that defines an authenticator that unconditionnaly trusts and + handle authentication done proxy-side. SOGo uses that + authenticator when the "SOGoTrustProxyAuthentication" user default + is set. The username is taken from the "x-webobjects-remote-user" + http header, you may have to adapt your proxy configuration + accordingly. + +2009-09-10 Francis Lachapelle + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -_handleAttendeesEdition]): the attendees list is now submited as + a JSON string. + ([UIxComponentEditor -_loadAttendees]): constructs a dictionary + with the attendees' information that will be passed as a JSON + string to the template. + + * UI/MailPartViewers/UIxMailPartICalViewer.m + ([UIxMailPartICalViewer -currentAttendeeClass]): new method that + returns the attendee's partstat as the CSS class and adds + "attendeeUser" if the attendee is the active user. + + * UI/MailPartViewers/UIxMailPartICalActions.m (-): added delegateAction. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -allContactSearchAction]): added the possibility to pass the form + parameter "excludeLists" in order to avoid returning groups. + + * SoObjects/SOGo/LDAPSource.m ([LDAPSource + _convertLDAPEntryToContact:]): added a key named "isList" to the + data representation of the LDAP entry if it matches specific objectClasses. + + * SoObjects/Appointments/SOGoAptMailICalReply.m + ([SOGoAptMailICalReply -getBody]): trim spaces before returning + the body. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject + -_handleAttendee:withDelegate:ownerUser:statusChange:inEvent:]): + added support for invitation delegation. + ([SOGoAppointementObject + -_updateAttendee:withDelegate:ownerUser:forEventUID:withRecurrenceId:withSequence:forUID:shouldAddSentBy:]): + fixed the case of chained delegates. + ([SOGoAppointmentObject + -changeParticipationStatus:withDelegate:forRecurrenceId:]): when + delegating an invitation, verify that the delegated is not already + a participant nor a group of users. + +2009-09-10 Cyril Robert + + * SoObjects/Appointments/SOGoWebAppointmentFolder.m: New + SOGoAppointmentFolder subclass to manage iCal subscriptions. + * UI/Scheduler/UIxCalMainActions.m: New action class to handle actions on + the main calendar. + * SoObjects/Appointments/SOGoAppointmentFolder.m (importCalendar:): New + method to import everything from an iCalCalendar. (Refactoring from + UIxCalFolderActions) + * SoObjects/Appointments/SOGoAppointmentFolders.m (webCalendarIds): New + method to get uids of web calendar folders. + (_fetchPersonalFolders: withChannel:): Wrap the parent method to replace web + calendar folders with the correct class: SOGoWebAppointmentFolder. It also + removes invalid references in the WebCalendars setting. + * UI/Scheduler/UIxCalFolderActions.m (importAction): Moved a big part of the + method to [SOGoAppointmentFolder importCalendar:]. + * SoObjects/Appointments/SOGoWebAppointmentFolder.m (delete): Wrap the + parent method to remove the calendar for the user's settings. + * SoObjects/Appointments/SOGoWebAppointmentFolder.m: Added some error + management, for when the url is invalid / not ical / etc. + * SoObjects/SOGo/SOGoGCSFolder.m (_fetchAclsForUser: forObjectAtPath:): + Ignore group acls if we found acls for the user. + * UI/Contacts/UIxListView.m (propertiesAction): Added to list references + from a vList. + +2009-09-10 Wolfgang Sourdeau + + * UI/Scheduler/UIxComponentEditor.m (-setComment,comment): + properly substitute the form-provided "\r\n" sequences with "\n" + sequences and vice-versa. + +2009-09-09 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-_getMaxStartDate): do not compute the start date if the active + user is a super user. + (_enforceTimeLimitOnFilter:withStartDate:andEndDate:): same as + above. + + * SoObjects/SOGo/SOGoUser.m (-rolesForObject:inContext:): directly + invoke [self isSuperUser] + +2009-09-09 Cyril Robert + + * Tools/NSDictionary+SOGoTool.m: Removed, all methods were moved to + SoObjects/NSDictionary+Utilities.m, or SoObjects/NSString+Utilities.m + * UI/Contacts/UIxContactFolderActions.m: New class to handle actions on a + single contacts folder. (import/export) + * UI/Scheduler/UIxCalFolderActions.m: New class to handle actions on a + single agenda folder. (import/export) + * SoObjects/SOGo/NSDictionary+Utilities.m: Added userRecordAsLDIFEntry. + * SoObjects/SOGo/NSString+Utilities.m: Added methods useful for + userRecordAsLDIFEntry. + * UI/Contacts/UIxContactsListView.m: Removed import/export actions + * UI/Scheduler/UIxCalView.m: Removed import/export actions + * SoObjects/Contacts/NGVCard+SOGo.m: Added a new category to remove a + circular dependency issue. + * SoObjects/Contacts/NGVList+SOGo.m: Added a new category to remove a + circular dependency issue. + * UI/Contacts/UIxContactFolderActions.m: Changed import instructions to use + the new category. + +2009-09-03 Cyril Robert + + * UI/Contacts/UIxContactsListView.m: Added ldif / vcard import + * UI/Contacts/UIxContactsListView.m: Changed return types to know how many + cards were imported. + +2009-09-02 Cyril Robert + + * UI/Contacts/UIxContactsListView.m (exportAction): Added to support export. + * UI/Scheduler/UIxCalView.m (exportAction): Added to support export. + * SoObjects/Appointments/SOGoAppointmentFolder.m (importComponent): Added to + support import. + * UI/Scheduler/UIxCalView.m (importAction): Added to support import. + +2009-08-27 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoCalendarProxy.[hm]: new class module + implementing the caldav proxy collections mentionned below. This + is a subclass of SOGoFolder. + + * SoObjects/SOGo/WORequest+SOGo.m (-isAppleDAVWithSubstring:): new + method. + (-isICal): new method. + + * SoObjects/SOGo/SOGoUserFolder.m + (-calendarProxy:withWriteAccess:): new method that instantiate a + proxy collections for read and write delegations. + + * SoObjects/SOGo/SOGoParentFolder.m (-initSubscribedFolders): we + now make use of appendSubcribedSources with which we shared code. + + * SoObjects/SOGo/SOGoGCSFolder.m (-subscribeUser:reallyDo:): new + simplified and published version of + subscribe:inTheNamesOf:fromMailInvitation:inContext:. + + * SoObjects/SOGo/SOGoFolder.m (-davGroupMemberSet) + (davGroupMembership): new DAV accessors that return an empty + array. + + * SoObjects/Appointments/SOGoUserFolder+Appointments.m + (-davGroupMembership): new DAV accessor. + + * SoObjects/Appointments/SOGoAppointmentFolders.m + (-toManyRelationshipKeys): overriden method for iCal: we don't + list the folders to which the current user is subscribed to + (because the iCal paradigm now requires calendar proxying), we + don't list the folders to which a delegator has subscribed to + either nor any of his/her secondary calendars. + (-proxyFoldersWithWriteAccess:): new methods that returns the list + of personal folder on which we are allowed to act as a proxy. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-requiredProxyRolesWithWriteAccess:): new method that returnes + the roles required for read/write proxying of users. + (-proxySubscribersWithWriteAccess:) + (setProxySubscribers:withWriteAccess:): new accessors making use + of the new method above. + + * Tests/test-caldav-scheduling.py: new set of tests for CalDAV + scheduling (iTIP-over-DAV) operations. Implemented 9 scenarios for + invitation delegation. + + * SoObjects/Appointments/SOGoAppointmentObject.m + (_updateAttendee:withDelegate:ownerUser:forEventUID:withRecurrenceId:): + added "withDelegate:" parameter in order to be able to add or + remove the delegate corresponding to the attendee delegation. We + also adjust the "delegated-to:" and "delegated-from:" in the + corresponding attendee element from the event copy. + (-postCalDAVReplyTo:from:): deduce the delegate from the matching + attendee and pass it as parameter to subsequent method calls. + (-takeAttendeeStatus:withDelegate:from:withRecurrenceId:) + (changeParticipationStatus:withDelegate:forRecurrenceId:): take a + new "withDelegate:" parameter. + + * Tests/webdavlib.py (HTTPQuery.__init__): the content-type is no + longer passed as parameter and should be directly set by the + client as an attribute. + (HTTPSimpleQuery.prepare_headers): new method to enable + query-specific headers. + (CalDAVPOST.__init__): new query type + +2009-08-26 Wolfgang Sourdeau + + * UI/MainUI/SOGoUserHomePage.m (-defaultAction): when the user has + never logged in or switched module, the SOGoUIxLastModule + preference would never be set, causing a crash when the moduleURL + was created, because of a nil parameter. Also, the "defaultModule" + global variable was set to the userDefinedModule, which is + simply wrong as the global variable impacts all the users and need + to be kept intact. + + * SoObjects/Appointments/SOGoAptMailReceipt.[hm]: new module + containing the template code for sending event receipts. + +2009-08-25 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUser.m (+userWithLogin:): new constructor + designed to avoid the need to pass a nil role parameter. + + * SoObjects/Appointments/SOGoCalendarComponent.m + (-sendReceiptEmailUsingTemplateNamed:forObject:to:) new method + that enables the sending of receipts to an event modifier in case + of an invitation, modification or deletion. + +2009-08-25 Cyril Robert + + * SoObjects/Contacts/SOGoContactGCSList.m (copyToFolder): Implementation to + support copying lists. + * UI/Scheduler/UIxCalDayTable.m: Added support for TimeFormat default. + +2009-08-24 Cyril Robert + + * UI/MailerUI/UIxMailMainFrame.m: Refactoring + added vLists support. + * UI/Contacts/UIxListEditor.m: Implementation. + * UI/Contacts/UIxContactsListView.m (contactSearchAction): added to support + search in a single folder. + +2009-08-21 Cyril Robert + + * UI/Contacts/UIxListView.m: Implementation, allows VLISTs to be displayed. + * UI/Contacts/UIxListView.m (checkListReferences): Added list integrity + verification (make sure all references are valid). + +2009-08-21 Wolfgang Sourdeau + + * Tests/webdavlib.py (WebDAVQuery.xpath_evaluate): new method to + facilitate xpath evaluation from tests. + +2009-08-20 Cyril Robert + + * UI/Common/UIxParentFolderActions.m (createFolderAction): Mantis 2040: + return a 409 code when a folder with the same name exists. + * SoObjects/SOGo/SOGoParentFolder.m (hasLocalSubFolderNamed): Added for + Mantis 2040. + * UI/Scheduler/UIxDatePicker.m: Fix to use user-defined format, if any. + Mantis 1911. + * UI/Scheduler/UIxDatePicker.m: Removed changes from 1911: too many issues. + * UI/Scheduler/UIxCalFilterPanel.m (selectedFilter): Added support for + CalendarDefaultFilter user default. Mantis 112 + * UI/Scheduler/UIxCalListingActions.m (checkFilterValue): Added to support + CalendarDefaultFilter user default. Mantis 112 + * SoObjects/SOGo/SOGoUser.m: Changed "signature" setting's place: MailSignature + Mantis 113. + * UI/PreferencesUI/UIxPreferences.m: Support for MailSignature setting. + Mantis 113. + * SoObjects/SOGo/SOGoUser.m (migrateSignature): Added. Mantis 113. + * SoObjects/SOGo/LDAPUserManager.m: Changed addObjectUniquely to addObject. + Mantis 113. + +2009-08-19 Cyril Robert + + * UI/MainUI/SOGoUserHomePage.m (defaultAction): Added support for SOGoUIxDefaultModule + * UI/PreferencesUI/UIxPreferences.m: Added: availableModules, + itemModuleText, userDefaultModule, setUserDefaultModule to support + SOGoUIxDefaultModule in the preferences UI. + * UI/Contacts/UIxContactFoldersView.m (checkDefaultModulePreference): Added + to support "Last" SOGoUIxDefaultModule value. + * UI/MailerUI/UIxMailListView.m (checkDefaultModulePreference): Added to + support "Last" SOGoUIxDefaultModule value. + * UI/Scheduler/UIxCalMainView.m (checkDefaultModulePreference): Added to + support "Last" SOGoUIxDefaultModule value. + * UI/MailerUI/UIxMailListView.m (isMessageFlagged): Added for Mantis 1428 + * UI/MailerUI/UIxMailActions.m (markMessageFlaggedAction, + markMessageUnflaggedAction): Added to support flagging + * UI/MailerUI/UIxMailListView.m: Renamed Invisible to Flagged + * UI/MailerUI/UIxMailMainFrame.m: Renamed Invisible to Flagged + +2009-08-19 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoObject.m (-parseETagList:): greatly + simplified method by using the "trimmedComponents" utility method. - * v0.9.83 + * SoObjects/SOGo/SOGoContentObject.m (-PUTAction:): removed "new" + hack. Sanitized var names. - * SOGoMailManager.m: properly select folder prior changing flags +2009-08-18 Wolfgang Sourdeau - * SOGoMailObject.m: added a special DELETEAction: for mails, it marks - a mail deleted and expunges the folder to ensure the mail is deleted - (this is different to the -delete method!) + * SoObjects/SOGo/SOGoGCSFolder.m + (-initializeQuickTablesAclsInContext:): don't give the right to + view everything to users who can delete objects. This may cause + deletion from working from a web method, but everyone who uses + such as configuration will probably use DAV instead. - * SOGoMailFolder.m: implemented content datasource for efficient WebDAV - listings (currently uses hardcoded parts and has inefficient DASL - support) (v0.9.82) - - * v0.9.81 - - * SOGoMailFolder.m: implemented mailbox renaming using WebDAV MOVE - - * SOGoMailManager.m: added support for renaming mailboxes +2009-08-18 Francis Lachapelle - * v0.9.80 - - * SOGoMailFolder.m: now ensures during lookup that mailboxes actually - exist, this may slow down the lookup if the hierarchy was not fetched - yet - - * SOGoMailObject.m, SOGoMailFolder.m: prepared for WebDAV move and copy - operations - - * v0.9.79 - - * SOGoMailFolder.m: ensure that mailbox exists if a DAV depth:0 query - is run on the folder (by selecting the mailbox) - - * SOGoMailManager.m: added method to retrieve mailbox select info - - * SOGoMailAccount.m: added ability to create mailboxes at the root - (account) level (v0.9.78) + * UI/Scheduler/UIxCalendarProperties.m ([UIxCalendarProperties + -allCalendarSyncTags]): new method that returns a concatenated + string of all the sync tags of the other calendars. + ([UIxCalendarProperties -mustSynchronize]): new method that + returns true if the calendar must be synchronized, ie if it's the + personal calendar. + ([UIxCalendarProperties -synchronizeCalendar]): new method that + returns true if the calendar must be synchronized or is set to be synchronized. -2005-03-03 Helge Hess + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -_setCalendarProperty:forKey:]): new + common method for all methods that need to set a property in the + user's settings. - * SOGoMailManager.m: improved compatibility with Cocoa Foundation - (some weird difference in NGImap4 result processing) (v0.9.77) +2009-08-17 Cyril Robert -2005-02-21 Helge Hess + * UI/Scheduler/UIxCalListingActions.m: Added support for new user default: + ShowCompletedTasks. - * SOGoMailObject.m: generate proper .ics extension for text/calendar - message parts, fetch text/calendar parts as plain content (v0.9.76) +2009-08-17 Ludovic Marcotte -2005-02-15 Helge Hess + * SoObjects/SOGo/LDAPSource.m + Safety check in case no objectClass attribute is returned + from the LDAP server + * Updated NEWS file - * SOGoMailAccount.m: added 'SOGoSpecialFoldersInRoot' default to - make SOGo lookup Sent/Trash in the IMAP4 root instead of under - INBOX (that is, set SOGoSpecialFoldersInRoot to YES if you have - 'altnamespace' in Cyrus set to yes) (v0.9.75) +2009-08-14 Francis Lachapelle + + * UI/AdministrationUI/UIxAdministration.m: new administration + module. Initial functionalities are limited to ACLs management. -2005-02-14 Helge Hess +2009-08-14 Wolfgang Sourdeau - * v0.9.74 + * Tools/SOGoToolBackup.m (-parseArguments): modified to either + accept "ALL" or a list of identifiers as arguments. - * SOGoMailAccount.m: fetch all root folders from IMAP4, do not assume - "INBOX" + * Tools/SOGoToolRestore.m: new "sogo-tool" utility that restores + the specified user data previously created by the "backup" + command. + (+initialize): load the "Appointments.SOGo" and "Contacts.SOGo" + bundle in order to access some categories found therein that are + used by OGoContentStore. + (-parseModeArguments) mode arguments are now put at the beginning + of the command parameter string. Added "-F" mode that acts + "destructivelly". Added "-l" mode that enables the listing of + folders previously backed up. + (-createFolder:withFM:): new method that enables the restoration + of folders that were previously deleted. - * SOGoMailManager.m: properly support rootfolders in IMAP4 + * Tools/SOGoToolBackup.m (-extractUserPreferences:intoRecord:): we + must extract the values of the user defaults in order to put them + in the record dictionary. Putting the defaults themselves will + only produce serialized strings. -2005-02-13 Helge Hess +2009-08-13 Wolfgang Sourdeau - * SOGoMailAccount.m: changed short title creation to use login@host - (v0.9.73) + * SoObjects/SOGo/LDAPSource.m: the objectClass are now all added + to the return user records. - * SOGoMailFolder.m: do not fetch message ids on folder traversal - (v0.9.72) + * Tools/NSDictionary+SOGoTool.m (-userRecordAsLDIFEntry): new + method that converts a user record as returned by LDAPSource to a + compliant LDIF entry. -2005-02-09 Helge Hess + * Tools/NSDictionary+SOGoTool.[hm]: new category module. - * v0.9.71 + * Tools/SOGoToolBackup.m: new "sogo-tool" utility that backs up + user data following the file-format specified in README.backup - * SOGoMailObject.m: -lookupInfoForBodyPart: can now deal with string - parameters (eg 1.2.3) in addition to arrays and returns the full - body structure for empty strings ("") - added support for fetching parts as NSString's (by applying the - charset in the body structure) - -2005-02-08 Helge Hess + * Tools/SOGoToolRemoveDoubles.m: new "sogo-tool" utility method + implementing the old "sogo-contacts-removedoubles" utility. - * SOGoMailObject.m: added method to fetch individual plain/text parts - - * v0.9.70 - - * SOGoMailManager.m: only perform IMAP4 select if the folder changes - (gives a major speed boost), can be disabled with the - 'SOGoAlwaysSelectIMAP4Folder' default - - * SOGoMailAccount.m: added code to take the IMAP4 login from the - HTTP request + * Tools/SOGoToolCheckDoubles.m: new "sogo-tool" utility method + implementing the old "sogo-contacts-checkdoubles" utility. - * v0.9.69 - - * reworked for new NGImap4 v4.5.210 API - - * SOGoMailObject.m: removed fromEnvelopeAddress in favor of - fromEnvelopeAddresses to match the new NGImap4 v4.5.210 API + * Tools/SOGoTool.m: new class module implementing the base class + for all management modules for "sogo-tool". -2005-02-07 Helge Hess + * Tools/sogo-tool.m: new command-line tool that offers a generic + utility for SOGo administration. - * v0.9.68 +2009-08-12 Francis Lachapelle - * SOGoDraftObject.m: added ability to specify additional headers + * UI/MainUI/Version (SUBMINOR_VERSION): 1.0.4 release. - * v0.9.67 +2009-08-11 Wolfgang Sourdeau - * SOGoMailFolder.m: detect special folder names and return proper - folder type + * UI/Scheduler/UIxComponentEditor.m + (-takeValuesFromRequest:inContext:): same as below, for the organizer. - * SOGoMailAccount.m: made Sent/Trash folder name configurable using the - 'SOGoSentFolderName'/'SOGoTrashFolderName' defaults + * SoObjects/Appointments/SOGoAppointmentObject.m + (-changeParticipationStatus:forRecurrenceId): when setting the + "SENT-BY" attribute value, we need to use "setValue:0.." instead + "addValue:" to avoid invalid accumulation of values. -2005-02-06 Helge Hess +2009-08-11 Francis Lachapelle - * SOGoMailFolder.m, SOGoDraftsFolder.m: added proper folder classes - (v0.9.66) + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -_handleOrganizer]): remove organizer when the event has no attendee. + ([UIxComponentEditor -_toolbarForOwner:andClientObject:]): return + the proper toolbar when editing the occurrence of a repeating event. -2005-01-31 Helge Hess + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -saveComponent:]): when removing a single + attendee from an event, the organizer is no longer defined; + therefore, we must check if the owner is the organizer of the + previous version of the event, not the new event. - * v0.9.65 +2009-08-10 Ludovic Marcotte - * SOGoMailManager.m, SOGoMailFolder.m: added expunge method + * SoObjects/SOGo/LDAPUserManager.m + Fixed an issue where the LDAP entries wouldn't be + cached properly in memcached. - * SOGoMailObject.m: improve bulk key collector +2009-08-10 Wolfgang Sourdeau - * SOGoMailObject.m: moved more bulk fetching to SoObject (v0.9.64) + * SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction): + modified to handle the case where the active user has the "respond + to" permission, in which case we grab the copy of the iCalendar + which is already in the DB and modify the partstats thereof based + on the entries found in the uploaded iCalendar. The latter is + discarded silently to avoid any further change. - * SOGoMailObject.m: moved in plain/text bulk fetch method from mail - viewer (since it is general purpose) (v0.9.63) + * SoObjects/Appointments/iCalEntityObject+SOGo.m + (-userAsParticipant): new method that returns the "PARTICIPANT" + entity of the SOGoUser passed as parameter, if found. - * SOGoMailObject.m: properly handle part lookup in the context of - embedded message/rfc822 content (v0.9.62) + * Tests/webdavlib.py (WebDAVClient._prepare_headers): fixed a typo + causing the "depth" parameter to never be issued in query heades. -2005-01-30 Helge Hess + * SoObjects/Appointments/SOGoAppointmentObject.m + (+webdavAclManager): don't register "respond-to-component" as + abstract, otherwise it won't appear in the returned list. - * v0.9.61 +2009-08-07 Wolfgang Sourdeau - * SOGoMailObject.m, SOGoMailBodyPart.m, product.plist: added type - specific SOGoMailBodyPart controller objects, reduced debug logs + * Tests/test-davacl.py: added tests for the Contacts module. - * v0.9.60 - - * SOGoDraftObject.m: added -content and -contentAsString methods (Note: - those are expensive operations!), added GETAction: to retrieve the - MIME representation of a draft + * Tests/all.py: modified to load and run all the test modules + found in the current directory, as long as they are prefixed by + "test-". - * SOGoDraftsFolder.m: added -toOneRelationshipKeys to support SOPE - WebDAV access +2009-08-06 Wolfgang Sourdeau - * v0.9.59 + * Tests/davacl.py: new functional testsuite for DAV acls on + Calendar collections, most rights and featured are covered. + Possible improvements are mentionned in the "TODO" section. - * SOGoDraftObject.m: improved attachment/info API to return exceptions, - minor improvement to attachment name check, properly generate - message/rfc822 mime type for mail attachments, properly generate - "text/plain; utf8" header + * SoObjects/Appointments/SOGoCalendarComponent.m (-aclsForUser:): + don't adjust roles based on the component access class if the + component is new. - * SOGoMailAccount.m: use a constant for INBOX folder name, disabled - 'Filters' folder unless the 'SOGoEnableSieveFolder' is set (since - Sieve support is incomplete) + * Tests/webdavlib.py (WebDAVClient._prepare_headers): we don't set + the "content-length" header if the body is None. + (HTTPSimpleQuery.render): method must take a "self" parameter. + (WebDAVCalendarMultiget.__init__): added transaction class. -2005-01-28 Helge Hess +2009-08-06 Francis Lachapelle - * v0.9.58 + * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences + -defaultAction]): if the compose message type (HTML or plain text) + has changed, reload the page (don't close it). This is a fix for a + bug with disabling or enabling the CKEDITOR dynamically (in JavaScript). - * SOGoMailObject.m: implemented a simple delete by setting the IMAP4 - delete flag +2009-08-05 Wolfgang Sourdeau - * SOGoMailManager.m: added method to mark a message deleted + * SoObjects/SOGo/SOGoGCSFolder.m (-davSyncCollection): enhanced to + return a DAV error with the "valid-sync-token" condition tag when + a token is provided while the collection is empty. - * SOGoMailFolder.m: just override -delete instead of implementing - -DELETAction: directrly + * SoObjects/SOGo/WOResponse+SOGo.m: new class module. + (-appendDAVError:): utility method that adds and formats the XML + body of a DAV error, with the error condition passed as argument. - * SOGoMailAccount.m: added ability to retrieve Sent/Trash and INBOX - special mail folders +2009-08-05 Ludovic Marcotte - * v0.9.57 - - * SOGoMailBodyPart.m: enhanced lookup to allow for arbitary filenames - being attached to a body-part name. Improves download behaviour. + * Added missing files for Hungarian translation + * Fixed the reply / forward ops for many translations - * SOGoMailBaseObject.m, SOGoMailObject.m: moved - -isBodyPartKey:inContext: method to base object for reuse in - SOGoMailBodyPart +2009-08-03 Ludovic Marcotte - * SOGoMailBodyPart.m: minor code cleanup + * Dropped the current caching subsystem based on + GNUstep's DO and replaced it with memcached. This + is much more efficient and scalable than DO and will + also prevent obscure libffi/libffcall crashes on + various platforms. -2005-01-26 Helge Hess - - * v0.9.56 - - * SOGoMailManager.m, SOGoMailFolder.m: added method to save new - content in an SOGoMailFolder (to support #1054) - - * SOGoMailAccount.m: minor code cleanup +2009-08-03 Francis Lachapelle -2004-12-08 Marcus Mueller + * UI/Scheduler/UIxCalView.m ([UIxCalView -setCurrentView:]): avoid + writing the user defaults if the current view hasn't change. - * SOGoMailAccount.m, SOGoMailBaseObject.m, SOGoMailObject.m, - SOGoMailManager.m, SOGoDraftsFolder.m, SOGoMailAccounts.m, - SOGoMailBodyPart.m, SOGoDraftObject.m: changed to use NGLogging - (v0.9.55) +2009-07-29 Francis Lachapelle -2004-11-27 Helge Hess + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -hasAttendees]): new method used to show organizer only if the event + has attenddes (read-only view). - * SOGoMailAccount.m: added 'Filters' key and lookup of Sieve filters - (v0.9.54) + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor + -taskStartDateTimeText]): new method to return a localized + description of the start date and time. + ([UIxTasEditor -taskDueDateTimeText]): idem for the due date and + time. + ([UIxTaskEditor -statusDateText]): idem for the status (task + completed) date. -2004-11-11 Helge Hess - - * v0.9.53 - - * SOGoMailAccounts.m: added -allFolderPathes methods to retrieve the - names of all folders associated with the account - - * SOGoMailManager.m: added -allFoldersForURL:password: method + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor -reply]): + the participation status of the calendar's owner is now returned + instead of the participation status of the active user. + ([UIxComponentEditor -getDateFor:]): deleted, no longer needed. -2004-11-09 Helge Hess + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -aptStartDateText]): new method to return a localized description + of the start date. + ([UIxAppointmentEditor -aptStartDateTimeText]): idem for the start + date and time. + ([UIxAppointmentEditor -aptEndDateTimeText]): idem for the end + date and time. - * added support for toggling mail flags (v0.9.52) +2009-07-29 Cyril Robert - * moved all tree navigation code to UIxMailTree (v0.9.51) + * SoObjects/Contacts/SOGoContactGCSFolder.m: Added c_o as a search field. - * SOGoMailBaseObject.m, SOGoMailAccounts.m: moved tree code to separate - file (v0.9.50) +2009-07-27 Francis Lachapelle - * SOGoMailBaseObject.m, SOGoMailManager.m, SOGoMailConnectionEntry.m: - added cache flush operations for getmail (v0.9.49) + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -roleForComponentsWithAccessClass:forUser:]): now returns an empty + string when user is owner of the calendar. -2004-11-08 Helge Hess +2009-07-23 Cyril Robert - * SOGoMailManager.m: improved a log message (v0.9.48) + * UI/Scheduler/UIxComponentEditor.m (repeatLabel), (ownerIsAttendee), + (delegateIsAttendee), (eventIsReadOnly), (startDateString), (endDateString): + Added for Mantis 78. -2004-10-30 Helge Hess +2009-07-23 Wolfgang Sourdeau - * v0.9.47 - - * SOGoMailFolder.m: added ability to create and delete subfolders using - WebDAV - - * SOGoMailConnectionEntry.m: added method to flush folder hierarchy - cache + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-davPOSTRequest:withContentType:inContext:) we use a simple comma + as recipient separator but with trim the resulting elements. - * product.plist: added default role for adding folders (owner) + * SoObjects/SOGo/NSArray+Utilities.m (-trimmedComponents): new + method that returns a trimmed/stripped version of the strings + contained in the array. - * SOGoMailObject.m: added -content and -contentAsString method to - retrieve raw IMAP4 message content, added GETAction to query a - message (v0.9.46) +2009-07-22 Cyril Robert -2004-10-29 Helge Hess + * UI/Scheduler/UIxCalListingActions.m: Added "editable" field to tasks, so + that the UI can disable the checkboxes next to them. - * SOGoDraftObject.m: add 'name' parameter to content-type, properly - encode binary attachments (v0.9.45) - -2004-10-28 Helge Hess +2009-07-22 Wolfgang Sourdeau - * SOGoDraftObject.m: do not patch NGImap4Envelope ivars and use the new - constructor method (v0.9.44) + * SoObjects/Appointments/SOGoUserFolder+Appointments.m + (-davCalendarScheduleInboxURL, -davCalendarScheduleOutboxURL) + (-davDropboxHomeURL, -davNotificationsURL): proxied methods to a + common accessor. -2004-10-27 Helge Hess +2009-07-21 Cyril Robert - * SOGoMailManager.m: added 'SOGoIMAP4StringSeparator' default to - configure to folder separator. Default is '/' instead of '.' - (v0.9.43) + * UI/Scheduler/UIxCalendarProperties.m: Prevent doing anything when not + executing @"saveProperties". Added wrapper methods for + showCalendarTasks/Alarms. Added reloadTasks var. + * SoObjects/Appointments/SOGoAppointmentFolder.m: Added + (set/showCalendarTasks), (set/showCalendarAlarms) + * SoObjects/SOGo/SOGoGCSFolder.m: Added dicts to cleanup on unsubscribe. + * UI/Scheduler/UIxCalListingActions.m: Added support for + showCalendarAlarms/Tasks. - * v0.9.42 +2009-07-21 Francis Lachapelle - * SOGoDraftObject.m: implements some SOGoMailObject methods + * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart + -stringByEscapingURL]): the UTF-8 encoding is now specified for the + filename of an attachment. - * SOGoDraftsFolder.m: implemented some draft folder listing +2009-07-20 Wolfgang Sourdeau - * SOGoDraftObject.m: added mail send functionality (v0.9.41) + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-caldavFreeBusyRequest:): the list of recipients is now deduced + from the list of attendees specified in the VFREEBUSY. - * SOGoDraftObject.m: added ability to create NGMime objects from draft - (v0.9.40) +2009-07-20 Cyril Robert -2004-10-26 Helge Hess + * SoObjects/Appointments/SOGoAppointmentFolder.m (davResourceType): Removed + a few things for the iPhone calDAV sync (schedule-inbox, schedule-outbox, + vevent-collection, vtodo-collection). + * SoObjects/SOGo/WORequest+SOGo.m (isIPhone): Added new method to detect + iPhone's DAV client. - * SOGoDraftObject.[hm]: added method to delete attachments (v0.9.39) +2009-07-20 Francis Lachapelle -2004-10-26 Marcus Mueller + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:): + avoid returning repeating events when no end date is + defined. Ultimately, we should return the first occurrence of + repeating events when no end date is defined and therefore, move + the logic into iCalRecurrenceCalculators. - * SOGoDraftObject.h: lF compile fix (v0.9.38) +2009-07-19 Wolfgang Sourdeau -2004-10-25 Helge Hess + * UI/SOGoUI/UIxComponent.m (-responseWithStatus:): revert the + default content-type to text/plain; charset=utf-8. - * SOGoDraftObject.m: added ability to manage a draft object folder - (v0.9.37) + * UI/WebServerResources/SchedulerUI.js: initialize the + "listFilter" global var depending on the value of the filter + popup. -2004-10-21 Helge Hess + * UI/Scheduler/UIxCalFilterPanel.m (-selectedFilter): return + "view_today" as default filter. - * SOGoMailBaseObject.m: extract IMAP4 password from HTTP basic - authentication (v0.9.36) +2009-07-17 Francis Lachapelle -2004-10-20 Marcus Mueller + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -mailerContactsAction]): restored method lost with + UIxContactsListViewContainer. - * SOGoMailAccounts.m: changed methods according to new API of - AgenorUserManager (v0.9.35) +2009-07-17 Cyril Robert -2004-10-19 Marcus Mueller + * SoObjects/Appointments/SOGoAppointmentFolder.m + (freebusyResponseForRecipient): Removed CDATA tag + * SoObjects/Appointments/SOGoFreeBusyObject.m (iCalPersonWithUID): Removed + setCn, since iCal fails when present. - * SOGoMailAccounts.m: values for toManyRelationshipKeys are constructed - from information retrieved by the AgenorUserManager now. (v0.9.34) +2009-07-16 Francis Lachapelle -2004-10-11 Helge Hess + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -setOwner:]): update + ivar activeUserIsOwner when changing owner. - * SOGoDraftsFolder.m: added methods to deal with new draft objects - (v0.9.33) +2009-07-16 Cyril Robert - * started SOGoDraftObject (v0.9.32) + * UI/PreferencesUI/UIxPreferences.m: Added categories, categoriesValue, + setCategoriesValue to allow editing of calendar categories. + * UI/Scheduler/UIxComponentEditor.m: Made modifications to fetch categories + from user defaults, if they exist. -2004-10-10 Helge Hess +2009-07-15 Wolfgang Sourdeau - * SOGoDraftsFolder.m: added methods to be compatible with the mail - folder (v0.9.31) + * UI/Scheduler/UIxComponentEditor.m (-categoryList): insert the + category of the current component in the list, don't convert it + to upper case and sort the resulting list alphabetically. -2004-10-08 Helge Hess +2009-07-14 Cyril Robert - * v0.9.30 + * UI/Scheduler/UIxComponentEditor.m: Added a default title for + vevents and vtodos - * SOGoMailObject.m: added support for davContentLength, added - RFC822.SIZE to coreinfo attributes +2009-07-14 Francis Lachapelle - * SOGoMailFolder.m: added .mail path extensions to generated - toOneRelationshipKeys + * UI/SOGoUI/UIxComponent.m ([UIxComponent -buildDate]): moved + method from UIxPageFrame. - * SOGoMailObject.m: fixed body part id (starts with 1, not with 0) + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent _updateRecurrenceIDsWithEvent:]): fixed a + crash that occurs when saving a recurrent task with + originalCalendar not initialized. - * v0.9.29 +2009-07-14 Wolfgang Sourdeau - * SOGoMailObject.m: added toOneRelationshipKeys/toManyRelationshipKeys - (return the contained body parts) + * SoObjects/Appointments/SOGoUserFolder+Appointments.m + (-davCalendarUserAddressSet): we return the "MAILTO:" prefix in + lower case instead. - * SOGoMailFolder.m: added toOneRelationshipKeys (returns the message - uids) + * SoObjects/Appointments/SOGoAppointmentFolders.m + (-davCalendarComponentSet): new method, copied from + SOGoAppointmentFolder. - * marked collections as WebDAV collections (v0.9.28) +2009-07-10 Wolfgang Sourdeau -2004-10-06 Helge Hess + * SoObjects/SOGo/SOGoContentObject.m (-davResourceType): new + resource that returns an empty string for DAV compliance. - * started SOGoDraftsFolder (v0.9.27) +2009-07-09 Cyril Robert - * v0.9.26 + * UI/MailPartViewers/UIxMailRenderingContext.m: Display .tiff as + attachments, some browsers don't support tiff. + * SoObjects/Mailer/SOGoDraftObject.m: Fixed content type for multipart + messages. - * SOGoMailConnectionEntry.m: added caching of sorted UIDs sets +2009-07-07 Francis Lachapelle - * SOGoMailManager.m: moved SOGoMailConnectionEntry class to own file + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -attach:]): new method to return the ATTACH property of the + component. + ([UIxComponentEditor -setAttach:]): associated setter method. -2004-10-05 Helge Hess + * iCalEntityObject.m ([iCalEntityObject -attach]): new method to return the + ATTACH property of the component as a URL. + ([iCalEntityObject -setAttach:]): new method to set the ATTACH property. - * SOGoMailManager: removed range argument from -fetchUIDsInURL:.., - since IMAP4 doesn't support ranges anyway ... (v0.9.25) +2009-07-07 Wolfgang Sourdeau -2004-10-04 Helge Hess + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-additionalWebdavSyncFilters): overriden method for returning a + clause that takes the DAV time limit into account. - * SOGoMailBodyPart.m: improved MIME type generation (v0.9.24) + * SoObjects/SOGo/SOGoGCSFolder.m (-davSyncCollection:): added the + ability to specify additional filters for elements that must be + returned. + (-additionalWebdavSyncFilters): new method that returns a + parametrable where clause for reset queries. - * SOGoMailBodyPart.m, SOGoMailObject.m: finished first part fetching - support (v0.9.23) +2009-07-07 Cyril Robert - * SOGoMailObject.m: added method to fetch core infos of a mail, added - various methods to retrieve core info data (like subject or date) - (v0.9.22) + * UI/WebServerResources/MailerUI.js: Fixed Drag&Drop issue (header was + draggable) + * UI/WebServerResources/ContactsUI.js: Fixed Drag&Drop issue (header was + draggable) + * UI/WebServerResources/MailerUI.js: Revert + * UI/WebServerResources/ContactsUI.js: Revert + * UI/WebServerResources/MailerUI.js: Fixed Mantis #45 + * UI/WebServerResources/ContactsUI.js: Fixed Mantis #45 + * UI/MailerUI/UIxMailListView.m: Made "Size" column sortable + * SoObjects/SOGo/SOGoGCSFolder.m: Fixed Mantis #48 -2004-10-03 Helge Hess +2009-07-03 Wolfgang Sourdeau - * v0.9.21 - - * SOGoMailObject.m: lookup 'number' names as part child objects - - * added SOGoMailBodyPart as a child object of SOGoMailObject - - * SOGoMailAccounts.m: changed link generation for active folder - - * v0.9.20 - - * SOGoMailObject.m: added method to fetch parts - - * SOGoMailManager.m: properly select folder prior fetch, added method - to fetch parts of a single (message) URL + * UI/Scheduler/UIxCalListingActions.m (-eventsBlocksAction): added + sanity checks to avoid crashes when quick fields were wrongly + parsed. -2004-10-02 Helge Hess + * SoObjects/SOGo/LDAPUserManager.m (_fillContactMailRecords:): if + the user uid contains a "@", we set it directly as system email + rather than suffixing it with the default mail domain. - * SOGoMailFolder.[hm]: removed ability to restrict UID fetch range, - need to fetch all (qualifier matching!) UIDs anyway (v0.9.19) +2009-07-02 Francis Lachapelle -2004-10-01 Helge Hess + * UI/MailerUI/UIxMailListView.m ([UIxMailListView + -columnsDisplayOrder]): added the size column to the default columns. - * more work on fetching mails (v0.9.18) +2009-07-02 Cyril Robert - * v0.9.17 + * UI/MailerUI/UIxMailFolderActions.m: Added auto-subscribe on imap folder + creation. - * SOGoMailFolder.m: -fetchUIDsMatchingQualifier:sortOrdering:range: was - added to retrieve message UIDs +2009-07-01 Wolfgang Sourdeau - * SOGoMailManager.m: added method for fetching message ids with server - side sorting + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-lookupName:inContext:acquire:): handle "AsTask" and + "AsAppointment" url suffix only for the default "so" handler. -2004-09-30 Helge Hess - - * v0.9.16 - - * SOGoMailBaseObject.m: improved debug logging - - * SOGoMailManager.m: fixed an Apple/libFoundation incompatibility +2009-07-01 Cyril Robert -2004-09-29 Helge Hess + * SoObjects/SOGo/SOGoGCSFolder.m: Remove color from user settings on + unsubscribe. + * SoObjects/SOGo/SOGoGCSFolder.m: Re-fixed to also remove from InactiveFolders + and FolderSyncTags. + * UI/MailerUI/UIxMailFolderActions.m (_trashedURLOfFolder:withCO:): Fixed + issue when deleting a folder with the same name as one already in the Trash. - * SOGoMailManager.m: minor improvement to error logging (v0.9.15) +2009-06-30 Francis Lachapelle -2004-09-29 Helge Hess + * UI/MailPartViewers/UIxMailPartICalActions.m + ([UIxMailPartICalActions -addToCalendarAction]): new method to add + a calendar from an invitation (used to work?!). - * v0.9.14 + * SoObjects/SOGo/NSString+Utilities.m ([NSString + -_handleURLs:textToMatch:prefix:inRanges:]): fixed offset + of range after replacement. - * SOGoMailAccounts.m: added tree navigation support + * SoObjects/SOGo/NSArray+Utilities.m ([NSArray + -hasRangeIntersection:]): fixed error in range comparison. - * SOGoMailBaseObject.m: moved fetchSubfolders method to SOGoObject +2009-06-30 Wolfgang Sourdeau - * SOGoMailBaseObject.m: fixed WebDAV include (v0.9.13) + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-davCalendarMultiget, -davCalendarQuery): certain dav attribute + methods do not necessitate additional fields, we declare their + corresponding fields to "". Also, we make sure those fake fields + are not specified in the SQL query and we ensure all the fields + are only requested once each. + (-davCalendarComponentSet): we need to retain the returned + array to avoid a crash during the next access to the attribute. - * v0.9.12 - - * SOGoMailAccount.m: added -shortTitle and use that as the - -davDisplayName - - * SOGoMailBaseObject.m, SOGoMailAccounts.m: added path tree navigation - support +2009-06-30 Cyril Robert -2004-09-28 Helge Hess + * UI/WebServerResources/MailerUI.js: Added drag & drop support! + * UI/MailPartViewers/UIxMailPartHTMLViewer.m: Removed an extra NSLog + * UI/MailerUI/UIxMailListView.m: Added support for "Size" column, fixed a + bug when number of columns != 7. - * SOGoMailManager.m: added caching of folder hierarchy (v0.9.11) +2009-06-29 Cyril Robert + + * UI/WebServerResources/ContactsUI.js: Added drag & drop support + * UI/WebServerResources/ContactsUI.js: Disabled drag & drop for lists + +2009-06-29 Francis Lachapelle + + * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder + -initSubFolders]): system folders (LDAP sources) are now loaded + unconditionally. + ([SOGoFolderParent -initSubscribedSubFolders]): new method to load + only subscribed folders. + ([SOGoParent -lookupName:inContext:acquire:]): we now properly + lookup in subscribed folders. + ([SOGoParentFolder -subFolders]): since the subscribed folders are + now stored in its own dictionary, we must return keys from both + dictionaries. + +2009-06-26 Francis Lachapelle + + * UI/Contacts/UIxContactsListViewContainer.[hm]: this class was + removed along with the template and moved to UIxContactFoldersView. + +2009-06-26 Cyril Robert + + * UI/WebServerResources/UIxPreferences.js: Fixed a bug when + ComposeMessagesType isn't set, removed an "alert" - * SOGoMailManager.m: added connection pooling (v0.9.10) +2009-06-25 Cyril Robert - * v0.9.9 - - * SOGoMailBaseObject.m: added -mailManager method to retrieve the - mail manager object for a folder/mail/account + * SoObjects/Mailer/SOGoMailReply.m: Added proper blockquote + * UI/WebServerResources/UIxMailEditor.js: Use CKeditor + * SoObjects/Mailer/SOGoMailForward.m: Added htmlComposition property, + changed almost all methods to escape what needsto be escaped. + * UI/WebServerResources/UIxPreferences.js: Fixed CKeditor toggle issue - * added SOGoMailManager class, will probably be moved to SOGoLogic - in the long run +2009-06-23 Wolfgang Sourdeau - * SOGoMailBaseObject.m, SOGoMailAccount.m: added -mailAccountFolder - method to find the active root folder along the SOPE chain (v0.9.8) + * SoObjects/SOGo/SOGoGCSFolder.m (-davSyncCollection:): certain + dav attribute methods do not necessitate additional fields, we + declare their corresponding fields to "". Also, we make sure those + fake fields are not specified in the SQL query and we ensure all + the fields are only requested once each. - * SOGoMailAccount.m: be graceful if the IMAP4 login failed (v0.9.7) + * SoObjects/Appointments/SOGoAppointmentFolder.m + (+initialize): we no longer need reportQueryFields nor + reducedReportQueryFields. + (-davCalendarQuery:,-davCalendarMultiget:): automatically include + "c_component" in the requested fields, so that items can be + instantiated properly. + +2009-06-23 Cyril Robert + + * SoObjects/Mailer/NSString+Mail.m (stringByConvertingCRLNToHTML): Added + * UI/MailPartViewers/UIxMailPartTextViewer.m (stringByConvertingCRLNToHTML): + Removed + * SoObjects/Mailer/SOGoDraftObject.m: Added support for html content type + * SoObjects/Mailer/SOGoMailObject+Draft.m: Added support for html content + type in mail reply + * SoObjects/Mailer/SOGoMailReply.m: Added support for html in mail editor + * UI/PreferencesUI/UIxPreferences.m: Added option to se content type for + mail editing + * UI/WebServerResources/GNUmakefile: Added fckeditor entry + * UI/WebServerResources/UIxMailEditor.js: Plugged-in FCKEditor + * UI/WebServerResources/UIxPreferences.js: Plugged-in FCKEditor, handle html + toggle for signature box + +2009-06-19 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoGCSFolder.m (-davSyncCollection:): deleted + records are always ignored when fetching fields from the quick + table, we thus need to make two separate queries. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-davResourceType): return the "schedule-inbox" and + "schedule-inbox" caldav types when the user is the owner and the + collection is its personal calendar. + (-davCalendarComponentSet): new method that returns VEVENT and + VTODO. + + * SoObjects/SOGo/SOGoGCSFolder.m (davSyncCollection:): new method + that implements the draft webdav sync specification + (http://ietfreport.isoc.org/idref/draft-daboo-webdav-sync/). + + * SoObjects/SOGo/NSString+DAV.m (asWebDAVTupleWithContent:): new + method that returns a DAV dictionary from a flat DAV element (self) + string and a content. + + * SoObjects/SOGo/NSArray+DAV.m (asWebDavStringWithNamespaces:): we + no longer use an NSEnumerator in order to be a bit faster. + +2009-06-18 Wolfgang Sourdeau + + * SoObjects/SOGo/DOMNode+SOGo.m + (-flatPropertyNameOfSubElements): new method that returns + flattened ({namespace}tag) names of the first direct child + elements. + + * SoObjects/SOGo/SOGoGCSFolder.m (-davSQLFieldsTable): new method + that returns a correspondance table between requested dav + properties and SQL fields required to answer them. + (-parseDAVRequestedProperties:): new method derived from a similar + one in SOGoAppointmentFolder which will return a dictionary of DAV + properties that are requested as well as their corresponding SQL + fields. + + * SoObjects/SOGo/DOMNode+SOGo.[hm]: new category module that + implement helper methods for DOM processing. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (davCalendarQuery:): specify default values for "start" and "end" + whenever one of them is missing. + +2009-06-17 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-fetchFields:...): don't use the privacySqlString twice. + The component parameter MUST be a NSString from now on. Fixed a + syntax problem in the where clause occuring when vtodo components + were requested. + + * UI/MailPartViewers/UIxMailPartICalViewer.m (-storedEventObject): + use the new "storedEventFetched" bool ivar to specify whether we + already attempted to fetch the event from the user calendars. + + * SoObjects/SOGo/SOGoUser.m (-rolesForObject:inContext:): do not + query the acls for the object if the current user is its owner. + + * SoObjects/SOGo/SOGoParentFolder.m (-initSubFoldersMatching:): + renamed from "initSubFolders". Take a string argument that, if + specified, will stop the search of folders when the name can be + found in the folders list. + +2009-06-16 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-davCalendarQuery:, davCalendarMultiget:): we now fetch the only + fields that are required by the DAV query from the database + tables. + (-bareFetchFields:from:to:title:component:additionalFilters:,fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:): + optimized the privacy SQL string to a single where clause based on + the tables computed in initializeQuickTablesAclsInContext:. + + * SoObjects/Appointments/SOGoCalendarComponent.m (-valuesForKeys:) + overriden method to speed up PROPFIND requests. + +2009-06-15 Wolfgang Sourdeau + + * SoObjects/SOGo/NSArray+Utilities.m (-hasRangeIntersection): + modified to use the range pointers rather than serialized + representations. + +2009-06-15 Francis Lachapelle + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -_appendCycleException:firstInstanceCalendarDateRange:fromRow:forRange:toArray:]): + for exceptions in the date range, add the boolean key + "isException" to the dictionary. + (-_flattenCycleRecords:fetchRange:): renamed method (was + -fixupCyclicRecords:fetchRange:). -2004-09-27 Helge Hess +2009-06-12 Francis Lachapelle - * v0.9.6 + * UI/Contacts/UIxContactEditor.m ([UIxContactEditor + -addressBooksList]): LDAP-based addressbooks must not be + editable, even for super users. - * added basic folder listing +2009-06-11 Wolfgang Sourdeau - * SOGoMailAccount.m: list "INBOX" as the sole account subfolder + * SoObjects/SOGo/SOGoUserFolder.m (-davUserQuery:): do not return + the user information for the current user. -2004-09-26 Helge Hess + * UI/MainUI/SOGoUserHomePage.m (-usersSearchAction): do not return + the user information for the current user. + (-foldersSearchAction): the method only search folders for the + owner of the current folder. The "user" parameter has thus been + removed. - * v0.9.5 +2009-06-10 Wolfgang Sourdeau - * added SOGoMailBaseObject as a base object for the other mailer - SoObjects + * SoObjects/SOGo/NSString+Utilities.m (-stringByDetectingURLs): + fixed a leak. Fixed a crash on GNUstep by using arrays of pointers + to NSRange instead of converting/parsing them to/from NSString. - * added -imapURL method to the mail SoObjects (the imapURL is used to - locate the object in the IMAP4 server, just like in Thunderbird) + * SoObjects/SOGo/NSArray+Utilities.m (-addRange): removed method. + (-addNonNSObject:withSize:copy:): new helper method to add object + pointers to arrays. + (-freeNonNSObjects): new helper method to release the above object + pointers. -2004-09-25 Helge Hess + * UI/MailPartViewers/UIxMailPartHTMLViewer.m: fixed rendering of + CSS content containing comment characters. Ignore certain HTML + tags that can alter the appearance of the SOGo display altogether + (SCRIPT, LINK, BASE, META, TITLE). - * fixed compilation on MacOSX (v0.9.4) +2009-06-09 Wolfgang Sourdeau -2004-09-20 Helge Hess + * SoObjects/Appointments/SOGoFreeBusyObject.m + (-iCalStringForFreeBusyInfos:withMethod:andUID:andOrganizer:from:to:): + accept additional "UID" and "organizer" parameters that will be set as + attributes on the reported freebusy object. - * SOGoMailAccounts.m: added hardcoded mail-account key (v0.9.3) + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-freebusyResponseForRecipient:withUser:andCalendarData:): expose + the calendar-data as as !CDATA element. -2004-09-08 Helge Hess + * SoObjects/SOGo/SOGoWebDAVValue.m + (-asWebDavStringWithNamespaces): new overriden method to enable + the passing of unescapable strings. - * added missing account objects (v0.9.2) +2009-06-09 Francis Lachapelle -2004-08-26 Marcus Mueller + * UI/Scheduler/UIxCalView.m ([UIxCalView -setCurrentView:]): new + method to save the user's current view in her/his settings. + + * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView -currentView]): + returns the active user's last calendar view. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -_sqlStringRangeFromto:]): dates are not + necessarily defined in case of vTODOs; don't apply the range + constraint when dates are null so the SQL query return tasks. + ([SOGoAppointmentFolder + -fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:]): + recurrent tasks are now returned as normal components and are + shown in the web interface. They are not flatten as recurrent + events are. + +2009-06-08 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoGCSFolder.m (-davCollectionTag): moved method + from SOGoAppointmentFolder since we will need it for contacts + folders as well. + +2009-06-08 Cyril Robert + + * SoObjects/Appointments/SOGoAppointmentFolder.m: Added c_cycleenddate in + dav date limitation. Added c_cycleenddate = NULL + +2009-06-05 Cyril Robert + + * UI/Scheduler/UIxCalListingActions.m: Added support to ignore + office hours. + * UI/Templates/SchedulerUI/UIxAttendeesEditor.wox: Removed old commented-out + buttons, added text as a proper string. + * UI/WebServerResources/UIxAttendeesEditor.js: Fixed scrolling issues, + added support for "onlyOfficeHours" checkbox + +2009-06-04 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailObject+Draft.m: add a default + attachment path of "1" when path is nil and thus unique. + + * UI/SOGoUI/UIxComponent.m (-_parseQueryString:): fixed handling + of bad charsets in the parameters encoding. Invalid values will be + discarded. + + * SoObjects/Contacts/SOGoContactGCSFolder.m + (-lookupContactsWithFilter:sortBy:ordering:): same as below. + + * SoObjects/SOGo/LDAPSource.m: properly escaped user-entered + strings which may contain quotes and thereby mess up the LDAP + queries. + +2009-06-04 Cyril Robert + + * UI/Scheduler/UIxCalListingActions.m: Added everything needed for the + findSlot action. Fixes for allday & multiday events. + + * UI/WebServerResources/UIxAttendeesEditor.js: Added everything needed for + the findSlot action. Fixes for allday events. Fixed scrolling issues + + * UI/Scheduler/UIxCalListingActions.h (findPossibleSlotAction): Added header. + +2009-06-03 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoGCSFolder.m + (-initializeQuickTablesAclsInContext:): new method that + initializes the new "userCanAccessAllObjects" ivar. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + (-initWithName:inContainer:): added new + "userCanAccessObjectsClassifiedAs" ivar (array of bools) to + quickly determine whether a user can access a component + informations. + (-initializeQuickTablesAclsInContext:): new method that + initializes the new ivar above. + (-davCalendarQuery:, -davCalendarMultiget:): invoke the new method + above. + + * Main/NSException+Stacktrace.m, SOPE/NGCards/NGCardsSaxHandler.m, + SOPE/NGCards/NSString+NGCards.m, + SOPE/NGCards/versitCardsSaxDriver/VSSaxDriver.m, + SoObjects/Appointments/SOGoAppointmentFolder.m, + SoObjects/SOGo/NSArray+Utilities.m, + SoObjects/SOGo/SOGoGCSFolder.m, + SoObjects/SOGo/SOGoLDAPUserDefaults.m, + UI/MailPartViewers/UIxMailPartTextViewer.m, + UI/MainUI/SOGoUserHomePage.m, UI/Scheduler/UIxCalListingActions.m: + replaced all invocations of "malloc", "realloc", "free" by similar + invocations to NSZoneMalloc, NSZoneRealloc and NSZoneFree. + + * SoObjects/Appointments/SOGoAppointmentFolder.m (+initialize): + removed obsolete security declarations. + (-davCalendarQuery, -davCalendarMultiget): delegate conversion of + "properties" NSArray to C array to submethods. Those submethods + now pass a count parameter to properly evaluate the amount of + responses instead of the static 100 value. Make use of + NSZoneMalloc instead of malloc. + + * Tools/sogo-contacts-removedoubles.m: added code to avoid + removing cards referenced in vlists. + +2009-06-02 Francis Lachapelle + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -postCalDAVEventRequestTo:from:]): remove + alarms from invitation and set organizer of master event when + dealing with a recurrent event. + +2009-06-02 Wolfgang Sourdeau + + * Tools/sogo-contacts-removedoubles.m: new maintenance utility + that removes double records in specified addressbooks. + + * Tools/sogo-contacts-checkdoubles.m: new maintenance utility that + helps determine which contact folders need cleanup. + +2009-06-02 Cyril Robert + + * SoObjects/Appointments/SOGoAppointmentFolder.m (_enforceTimeLimitOnFilter): + Rewrote algorithm, fixed cyclic events issue. + * UI/WebServerResources/UIxAttendeesEditor.js: Fixed update bug on "enter" + * UI/Templates/SchedulerUI/UIxAttendeesEditor.wox: Removed next/prev hour + and zoom buttons + +2009-06-02 Ludovic Marcotte + + * Updated the documentation (version change, Russian + language addition and documentation of the WOApplicationRedirectURL + parameter) + +2009-06-01 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailFolderActions.m (-deleteFolderAction): + renamed to deleteAction to match the methods in UI/Common/*Actions.m + + * UI/Common/UIxFolderActions.m (-): removed useless method since + SOGoFolders can use the "delete" web method to achieve the same result. + + * SoObjects/SOGo/SOGoPermissions.m: declared new "Delete Object" + permission. + +2009-06-01 Cyril Robert + + * UI/WebServerResources/UIxContactsUserFolders.js (onSearchFormSubmit): + Fixed encoding issue/crash. + * SoObjects/Appointments/SOGoAppointmentFolder.m (_parseCalendarFilter): + Added support for default SOGoDAVCalendarStartTimeLimit, which is the + maximum number of days for dav queries. + Added: _enforceTimeLimitOnFilter, _getMaxStartDate and _getStartTimeLimit + +2009-05-30 Ludovic Marcotte + + * Modified SOGoCalendarComponent.m so that we + explicitely add the MIME-Version header when + sending out invitation messages. + +2009-05-23 Ludovic Marcotte + + * Added Russian tranlation - patch from + Alex Kabakaev + +2009-05-22 Francis Lachapelle + + * Main/sogod.m (main): verify if the default parameter + WOApplicationRedirectURL is defined and if so, removed any + trailing slash. + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -_toolbarForOwner:andClientObject:]): ignore the participation + status for tasks so the usual edition toolbar appears. + +2009-05-21 Ludovic Marcotte + + * Regenerated the SOPE patchset so we now correctly + support the windows-1251 charset + * UI/MailPartViewers/UIxMailPartHTMLViewer.m + We now correctly support the koi8-r and windows-1251 + encodings when decoding HTML mails. + +2009-05-19 Francis Lachapelle + + * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount + -allFolderPaths]): if the user default "showSubscribedFoldersOnly" + is not defined for the user, use the application default + "SOGoMailShowSubscribedFoldersOnly". + + * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences + -showSubscribedFoldersOnly]): return the user default or the + application default if not defined. + ([UIxPreferences-setShowSubscribedFoldersOnly]): when false, set + the user default parameter "showSubscribedFoldersOnly" to NO + instead of removing the entry. This will ensure user defaults are + taking precedence over application defaults. + +2009-05-15 Francis Lachapelle + + * SOPE/sope-ldap/NGLdap/NGLdapConnection.m: added methods + primaryFetchMailboxHierarchyForURL:onlySubscribedFolders: and + allFoldersForURL:onlySubscribedFolders: to offer the possibility + to use the IMAP command LSUB instead of LIST. + + * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount + -allFolderPaths]): return only subscribed folders if user default + "showSubscribedFoldersOnly" is true. + + * SoObjects/SOGo/SOGoUserDefaults.m ([SOGoUserDefaults + -setObject:forKey:]): fix an issue when calling removeObjectForKey + and value is nil. + + * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences + -setShowSubscribedFoldersOnly:]): setter for the user default + "showSubscribedFoldersOnly". + +2009-05-12 Francis Lachapelle + + * SoObjects/SOGo/LDAPSource.m ([LDAPSource -initFromSource:]): + retrieves the user default attribute "IMAPHostFieldName" so the + IMAP server name can be fetched from the LDAP directory. + ([LDAPSource -_fillEmailsOfEntry:intoContactEntry:]): if a IMAP + hostname field is specified for the source, retrieve the LDAP + attribute and set the value to the key "c_imaphostname". + + * SoObjects/Mailer/SOGoMailAccount.m (SOGoMailAccount + -_urlHostString]): the IMAP server name is now retrieved from the + SOGoUser object and no longer hardcoded to the fallbackIMAP4Server + user default. + + * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager + -_fillContactInfosForUser:withUIDorEmail:]): now fills the user + attributes dictionary with the IMAP hostname if specified and defined. + +2009-05-06 Francis Lachapelle + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + -removeAclsForUsers:atObjectPath:]): verify if user is a group and + prefix the UID with "@" if so. + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -expandGroupsInEvent:]): new method from + the code that was in [SOGoAppointmentObject -_handleAddedUsers:] + and [SOGoAppointmentObject -_PUTAction:] that expands the groups + among the attendees of the passed event. + +2009-05-05 Francis Lachapelle + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser + +userWithLogin:roles:trust:]): don't set the roles if the passed + roles are not defined. + +2009-05-03 Francis Lachapelle + + * UI/Common/UIxUserRightsEditor.m ([UIxUserRightsEditor + -_initRights:]): add the "@" prefix to groups UID. + + * SoObjects/SOGo/SOGoGroup.m ([SOGoGroup +groupWithIdentifier:]): + returns a SOGoGroup instance matching the specified UID value or + nil if no group is found. + ([+groupWithEmail:]): idem for the specified email address. + ([-members]): now properly search among all LDAP sources for the + members of the group. + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + -_fetchAclsForUser:forObjectAtPath:]): also search for entries + prefixed by a "@" corresponding to group entries. For those + entries, find the members and add the ACLs if the user if part of + the group. + ([-setRoles:forUser:forObjectAtPath:]): prefix the UID with the + "@" character when dealing with a group. + + * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager + -getLoginForDN:]): searches among all defined LDAP sources and + returns the UIDFieldName value for the requested DN. + ([-contactInfosForUserWithUIDorEmail:]): prior to perform the + search, removes the "@" prefix used to identified groups in the + ACL tables. + + * SoObjects/SOGo/LDAPSource.m ([LDAPSource -lookupLoginByDN:]): + returns the UIDFieldName value for the requested DN. + ([-lookupGroupEntryByUID:]): returns the LDAP entry corresponding + to a group (ie with an objectClass of member, uniqueMember, + memberUid, or memberOf) for the requested UID. + ([-lookupGroupEntryByEmail]): idem for the requested email address. + ([-lookupGroupEntryByAttribute:andValue:]): idem for the specified + value for the specified attribute. + ([-baseDN]): accessor for the base DN. + + * UI/Common/UIxAclEditor.m ([UIxAclEditor -_displayNameForUID:]): + removes the "@" prefix before looking up for the CN and email address. + +2009-05-01 Ludovic Marcotte + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -PUTAction:]): Slightly optimized + and we now consider the "X-SOGo: NoGroupsDecomposition" + special header. + +2009-04-30 Ludovic Marcotte + + * Added SoObjects/SOGo/SOGoGroup.{h.m} and + modified the LDAPSource, LDAPUserManager, SOGoAppoinmentObject + in order to add initial groups support which decomposes + groups to members when events are saved. + +2009-04-27 Francis Lachapelle + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -_fillBlocks:withEvent:withNumber:]:): fixed index of recurrence + ID. + +2009-04-22 Francis Lachapelle + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -alarmsListAction]): only return the alarms active for the next 48 + hours and exclude any recurring event (for now). + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -viewAction]): if the form parameter "resetAlarm" is true, set the + property X-WebStatus to "triggered" in the event's alarm. + + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -viewAction]): new + method that returns some of the task properties. Currently only + used for the alarms. Behavior is similar to UIxAppointmentEditor. + + * SoObjects/Appointments/iCalEvent+SOGo.m ([iCalEvent + -quickRecord]): don't update the c_nextalarm field if the event is + recurrent or if the property X-WebStatus is set to "triggered" in + the alarm's trigger definition. + + * SoObjects/Appointments/iCalToDo+SOGo.m ([iCalToDo + -quickRecord]): idem. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -fetchAlarmInfosFrom:to:]): new method + that returns attributes of events and todos for which there's an + active alarm within the next 48 hours. + +2009-04-21 Ludovic Marcotte + + * Added Welsh translation - patches from the + National Library of Wales. + * Regenerated the SOPE patchset so that we correctly + handle Oracle's reconnection problems on RAC. We now + try by default 3 times before giving up when there + is a failover to an other node part of the RAC. + * Dropped old ChangeLog files and combined them + in ChangeLog.old + * Dropped old NOTES files + * Added Scripts/sql-update-101_to_102.sh to update + the database schema for the 1.0.2 release + * Scripts/sogod-wrapper - updted this script to + handle the TNS_NAMES environment variable for + Oracle RAC. + * Added the possibility to disable cache propagation + in SOGoCache (together with SOGoUser and SOGoUserDefaults) + in order to greatly reduce gdnc contention when a massive + amount of operations are performed by the SOGo super-usernames + * SoObjects/SOGo/SOGoGCSFolder.m: We avoid cache + propagation when subscribing users to resources as + a superuser. + * UI/Scheduler/UIxCalListingActions.{h,m}: Added + -alarmsListAction so that we correctly return the upcoming + alarms. It does NOT yet handle correctly recurring components. + +2009-04-21 Francis Lachapelle + + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor + -takeValuesFromRequest:inContext:]): removes any alarm if the + vTodo doesn't have a due date. + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -_loadAlarms]): new method to extract the first alarm of the component. + + * SoObjects/Appointments/iCalEvent+SOGo.m ([iCalEvent + -quickRecord]): added support for an event's alarm. The database + field "c_nextalarm" must first be added to all tables. + +2009-04-13 Ludovic Marcotte + + * SoObjects/SOGo/LDAPSource.m: cleaned up and + also correctly implemented -lookupContactEntry. + * SoObjects/Contacts/SOGoContactLDAPFolder.m: + we now use the correctly implemented -lookupContactEntry + method instead of -lookupContactEntryWithUIDorEmail + * Regenerated the SOPE patchset to include a fix + for Oracle RAC. + +2009-04-09 Ludovic Marcotte + + * Reverted previous patch and provided the correct + fix in SOGoMailFolder: -postData:flags: + * Fixed the compilation of unit tests for NGCards. + * SoObjects/Mailer/SOGoMailFolder.m: Added -displayName + which returns -nameInContainer to avoid crashes when + sending ACL changes notifications for email folders. + +2009-04-09 Francis Lachapelle + + * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject + -sendMail]): create the Sent folder if it doesn't exist. + +2009-04-07 Cyril Robert + + * UI/Common/UIxPageFrame.m (isCompatibleBrowser): Fixed Safari 3 issue, + was only accepting 4+ + +2009-04-06 Ludovic Marcotte + + * Improved the sogod-wrapper script in order to + consider the IP address that can be specified + in the WOPort user default. Patch from + Romain LE DISEZ + * SoObjects/SOGo/LDAPSource.{h.m}: Now possible to + specify a scope for LDAP operations. Patch from + Yann Cezard + +2009-04-02 Wolfgang Sourdeau + + * SoObjects/SOGo/LDAPSource.m: we now support an "encryption" + parameter, having either a value of "ssl" or "starttls" to define + the type of encryption to be used, if any. + +2009-04-01 Ludovic Marcotte + + * Dropped worthless tools + * Fixed tons of compiler warnings + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder appendObject:withBaseURL: + toREPORTResponse:]): We now check if we've got + an exception when looking up contacts and the LDAP-part + of SOGo is misconfigured and warn the admin (by adding + a log entry) about it. + +2009-03-31 Francis Lachapelle + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + _fetchFieldsforComponentOfType:]): the method _fixDates must be + called even for the month view. + +2009-03-25 Francis Lachapelle + + * UI/Common/UIxPageFrame.m ([UIxPageFrame -siteFavicon]): new + method to allow the customization of the site favicon through the + user defaults SOGoFaviconRelativeURL. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -language]): must retain + the ivar language to avoid a crash if the language is retrieved + from the user agent header returned by the browser. + +2009-03-24 Wolfgang Sourdeau + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -takeValuesFromRequest:_rqinContext:_ctx]): ensure the values + meant to construct the custom recurrence rule are consistent. + + * UI/Scheduler/UIxCalMainView.m: if the module settings key + exists, do not reset it. + +2009-03-24 Ludovic Marcotte + + * UI/MailerUI/UIxMailListView.m + ([UIxMailListView messages)]: + Adjusted the sort so it's a little bit faster + and correctly work in case the server returns us + the FETCH response in an order different that what + we asked for. + +2009-03-24 Francis Lachapelle + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -invalidateLanguage]): + new method to invalidate the language ivar. + + * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -connectAction]): must + invalidate user's language ivar when it changes. + + * SoObjects/SOGo/SOGoCache.m ([SOGoCache + -_userDefaultsHaveChanged:]): must invalidate the user's language + ivar when the defaults change. + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent + -sendEMailUsingTemplateNamed:forObject:previousObject:toAttendees:]): + no longer send a deletion notification to an attendee who already + declined the meeting. + + * UI/MailPartViewers/UIxMailPartICalActions.m + ([UIxMailPartICalActions -_eventObjectWithUID:forUser:]): when + looking for an event for a specific user, we now search into all + the user's calendar folders. + + * UI/MailPartViewers/UIxMailPartICalViewer.m + ([UIxMailPartICalViewer -startCalendarDate]): new method that returns + the start date with the proper timezone. + ([-endCalendarDate]): idem for the end date. + ([-startDate]): new method that returns a formatted string of the + start date. + ([-endDate]): idem for the end date. Also take care of all-day events. + ([-startTime]): new method that returns a formatted string ot the + start time. + ([-endTime]): idem for the end time. + ([-isEndDateOnSameDay]): must subtract 1 second from end date when + it's a all-day event. + +2009-03-24 Wolfgang Sourdeau + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -_loadAttendees]): make use of autoreleased strings to avoid a leak. + ([UIxComponentEditor -dealloc]): release componentCalendar. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser + -_prepareDefaultMailAccounts]): return an autoreleased array to + avoid a leak. + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -initWithRequest:newRequest]): retain dateFormatter, since it is + released in -dealloc. + ([UIxCalListingActions -dealloc]): do not release startDate and + endDate since they are not retained. + +2009-03-23 Francis Lachapelle + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -_lookupEvent:forUID:]): when looking for + an event for a specific user, we now search into all the user's + calendar folders. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -lookupCalendarFoldersForUID:]): new + method that returns an array of a user's calendar folders + excluding the subscriptions. + +2009-03-23 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + -subscribe:reallyDoinTheNamesOf:delegatedUsersfromMailInvitation:isMailInvitationinContext:localContext]): + when the user preferences didn't already contain a key matching + the current module name, the subscriptions would not work. We thus + create one if none exists yet. + + * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders + -appendSystemSources]): modified the return type and returns nil, + to match the new SOGoParentFolder definition of the method. + Otherwise, a confusion is created on the stack. + +2009-03-23 Ludovic Marcotte + + * SoObjects/SOGo/SOGoUser.m: + Don't retain/release the language ivar. + +2009-03-22 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -language]): cache the + language in an ivar again, that is reset when the user settings or + defaults have been loaded successfully. + ([SOGoUser -userDefaults]): invoke "fetchProfile" on the defaults + instance, in order to validate the DB connection. + +2009-03-21 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser + -initWithLogin:newLoginroles:newRoles]): removed "mailAccounts" ivar. + ([-mailAccounts]): no longer cache the mailAccounts info in an ivar. + +2009-03-20 Ludovic Marcotte + + * SoObjects/SOGo/SOGoUserDefaults.{h,m} + We are now way quicker to react when the database + is down. + +2009-03-20 Wolfgang Sourdeau + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -allContactSearchAction]): trap @"SOGoDBException" and return nil + in that case. + + * SoObjects/SOGo/SOGoUserDefaults.m ([SOGoUserDefaults + -jsonRepresentation]): return "{}" if values is nil (due to a DB + connection error). + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -userDefaults]): ensure the + values are not nil before putting them in the cache. This fixes an + exception occuring for setting a nil key in a dictionary. + ([SOGoUser -userSettings]): same as above. + ([SOGoUser -userDefaults]): if "value" is null, meaning that + database connectivity has failed, don't try to set default values, + which would trigger other connection tries. + +2009-03-19 Francis Lachapelle + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -_fetchFields:forComponentOfType:]): the _fixDates method doesn't + have to be called for the month view. + +2009-03-19 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -foldersOfType:folderTypeforUID:uid]): now also returns the owner + of the folders in the folder dictionary. + ([SOGoUserFolder -davCollectionQuery:queryContext]): works again + for multiple users if the DAV:owner property is specified in the + query. The response is formatted in a way that is compatible with + both the 0.8x and 0.9x SOGo extensions. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser + -homeFolderInContext:context]): no longer put the home folder in + cache, since it uses an context that is freed and invalidated + afterwards, which can cause crashes. + +2009-03-19 Ludovic Marcotte + + * Updated the sope.spec file wrt to changes + related to 0.9 -> 1.0 + * Updated the SOGo documentation to also reflect + the version change. + +2009-03-19 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUserFolder.m: initialize max to the correct value. + +2009-03-18 Francis Lachapelle + + * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -version]): new method + that returns the application version. + + * SOPE/NGCards/iCalDateTime.m ([iCalDateTime -dateTime]): when not + defined, the timezone is now guessed from the date of the current object. + +2009-03-18 Ludovic Marcotte + + * Updated the documentation for the SOGo + update server. + * Enabled support for Konqueror. We use the + Safari 'exceptions' in the JavaScript code. + * Main/SOGo.m: Corrected a small mistake in previous + commit wrt sogod-0.9 > sogod change + * Updated the NEWS file for the release + +2009-03-18 Wolfgang Sourdeau + + * SoObjects/Contacts/SOGoContactLDIFEntry.m ([SOGoContactLDIFEntry + -vCard]): same as below. + + * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject + -iCalStringForFreeBusyInfos:_infoswithMethod:methodfrom:_startDateto:_endDate]): + same as below. + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -calendar:create:secure]): specify + "-//Inverse inc./SOGo 1.0//EN" as PRODID. + + * Main/sogod.m (convertOldSOGoDomain): new function that convert + the old "sogod-0.9" NSUserDefaults domain to "sogod". + + * Main/SOGoProductLoader.m ([SOGoProductLoader + +sogoMajorVersion]): removed useless method. + ([SOGoProductLoader +sogoMinorVersion]): removed useless method. + ([SOGoProductLoader -init]): productDirectoryName is no longer an + ivar but a static string. + ([SOGoProductLoader -productSearchPathes]): removed FHS paths from + search paths. + + * Main/SOGo.m ([SOGo -name]): returns "SOGo". + + * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder + -appendPersonalSources]): returns an NSException. + ([SOGoParentFolder -appendSystemSources]): same as above. + ([SOGoParentFolder -appendSubscribedSources]): same as above. + ([SOGoParentFolder + -lookupName:nameinContext:lookupContextacquire:acquire]): if + initSubfolders returns an exception, this probably means a db + error occured, so we log the exception reason and return a 503. + ([SOGoParentFolder -subFolders]): this method is invoked when a + PROPFIND is made on the current collection. If a DB error occurs, + we raise it to prevent SOPE from returning a 207 status code. + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -lookupName:_keyinContext:_ctxacquire:_flag]): no longer invoke + the _accessDeniedPage when accessing the module is forbidden to + the current user. Instead, returns an HTTP exception with code + 404. + +2009-03-17 Ludovic Marcotte + + * Documentation/SOGo Installation Guide.odt + Updated to mention MySQL and to refer as 1.0 + as the version number + * Scripts/sogo-init.d-debian and + Scripts/sogo-init.d-redhat + We now kill gdnc (only processes belonging to + the sogo user) when stopping sogod. + +2009-03-16 Ludovic Marcotte + + * SoObjects/SOGo/LDAPSource.m: We now support + the specification of a filter. Also updated + the installation guide to document this new parameter + * sogo.spec: Modified so that we use our tmpwatch + script from /etc/cron.daily + +2009-03-16 Francis Lachapelle + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -_fixDates:]): moved corrections for daylight saving time in this + new method. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fixupCycleRecord:_recordcycleRange:_rfirstInstanceCalendarDateRange:_firforViewRange:_viewRange]): + propagate the start date of the cycle so it can be used later to + adjust the timezone. + * ([SOGoAppointmentFolder + -_appendCycleException:firstInstanceCalendarDateRange:fromRow:forRange:toArray:]): idem . + +2009-03-16 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -occurence:occ]): create the occurence + with the first calendar event as master. + + * SoObjects/Appointments/SOGoTaskObject.m ([SOGoTaskObject + -occurence:occ]): create the occurence with the first calendar + task as master. + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent + -lookupName:lookupNameinContext:localContextacquire:acquire]): + initialize "isNewComponent" to NO if it's not, to avoid problems + with unitialized memory. + + * SoObjects/SOGo/LDAPSource.m ([LDAPSource + -setBaseDN:newBaseDNIDField:newIDFieldCNField:newCNFieldUIDField:newUIDFieldmailFields:newMailFieldsandBindFields:newBindFields]): + bug setting the CN and UID field only if they were set before, + rather than checking their value passed as parameter. + +2009-03-13 Ludovic Marcotte + + * Optimized the IMAP client code to avoid + unnecessary STATUS calls. + +2009-03-12 Ludovic Marcotte + + * Updated the SOPE patchset in order to + fix a bug in NGMimeBodyParser. + * Updated again the SOPE patchset to enable + MySQL support. + +2009-03-11 Francis Lachapelle + + * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage + -readFreeBusyAction]): we now set the content-type to "text/plain" + to fix issues with nginx. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -contactSearchAction]): idem. + +2009-03-11 Ludovic Marcotte + + * SoObjects/Appointments/SOGoAppointmentFolder.m + We now correctly escape caracters that can be + present in the filename prior to initalizing + the NSURL instance. + * UI/MailerUI/UIxMailAccountActions.m + We correctly intialize the "unseen" variable + to nil in _statusFolders. + +2009-03-09 Ludovic Marcotte + + * Documentation/SOGo Installation Guide.odt + Added two examples for default ACL. + * Updated the SOPE patchset + +2009-03-08 Ludovic Marcotte + + * Updated the SOGo Mozilla Thunderbird Configuration + guide to add a note that WOApplicationRedirectURL + MUST match the updateURL in extensions.rdf from + SOGo Integrator + +2009-03-05 Ludovic Marcotte + + * Updated prototype to the latest development version + in order to fix an IE7 bug related to the DOM load event + * Improved the mod_proxy/mod_proxy_balancer configuration + +2009-03-04 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoLDAPUserDefaultsBootstrap.m: new module for + the libSOGoNSUserDefaults.so.1 library built when enabling + ldap-based configuration. + + * Main/sogod.m (BootstrapNSUserDefaults): added function to load a + library named "libSOGoNSUserDefaults.so.1" which would bootstrap + the NSUserDefaults class with an arbitrary "pose class". + +2009-03-04 Ludovic Marcotte + + * Fixed a small issue when fetching parts where + the encoding could be nil and subsequently, the + path couldn't be set. + +2009-03-03 Ludovic Marcotte + + * Fixed various small issues with the SOGo + cache subsystem. + +2009-03-03 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable -dayClasses]): + fixed the way the number of the current day is deduced, + independently from the timezone (d. saving time or not). + +2009-03-02 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoComponentOccurence.m + ([SOGoComponentOccurence -setComponent:newComponent]): retain the + component's parent instead of the component itself, which is + already retain by its parent anyway. See 2009-02-06 from me below. + ([SOGoComponentOccurence -setMasterComponent:newMaster]): no + longer retain the "master" occurence since its parent is already + retained. + +2009-03-02 Ludovic Marcotte + + * SoObjects/SOGo/SOGoObject.m + ([SOGoObject -davRecordForUser:parameters:]): + Don't initialize the SOGoUser variable of + nocn AND noemail are passed. + * Dropped Protocols/* from the repository. + * Added missing Dutch wox templates + +2009-02-23 Ludovic Marcotte + + * Updated German translation. Patch from + Alexander Greiner-Baer + * Added Italian translation. Patch from + Marco Lertora + * Combined the various caches and moved the logic + towards the SOGoCache class. Deprecated the + SOGoLDAPUserManagerCleanupInterval defaults. + Now only SOGoCacheCleanupInterval should be used. + +2009-02-19 Francis Lachapelle + + * UI/Contacts/UIxContactsListView.m ([UIxContactsListView + -defaultSortKey]): replaced "displayName" by "c_cn", following + changes made on 2009-02-06. + + * UI/Common/WODirectAction+SOGo.m ([WODirectAction + -responseWithStatus:]): set the default type so Firefox doesn't + complain when using nginx with SOGo. + +2009-02-17 Ludovic Marcotte + + * SoObjects/Contacts/SOGoContactLDIFEntry.m ([SOGoContactLDIFEntry + -vCard]): We now correctly handle most address fields coming from + an LDAP server during the generation of the vCard. + +2009-02-17 Francis Lachapelle + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView -messages]): + forced ordering of messages based on sorted UIDs. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -allContactSearchAction]): replaced references to "displayName" by + "c_cn", following changes made on 2009-02-06. + + * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder + -_qualifierForFilter:]): changed search in email address to match + search behavior of Thunderbird. + + * SoObjects/SOGo/LDAPSource.m ([LDAPSource -_qualifierForFilter:]): idem. + +2009-02-16 Ludovic Marcotte + + * Updated Dutch translation - patch from + Robert-Jan van Baal + +2009-02-09 Wolfgang Sourdeau + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder + -appendObject:objectwithBaseURL:baseURLtoREPORTResponse:r]): don't + lookup the returned object if its c_name has no length. + +2009-02-06 Francis Lachapelle + + * SoObjects/Contacts/SOGoUserFolder+Contacts.[hm]: new class to + add CardDAV stuff. Currently only implements the + addressbook-home-set report from the principal URL. + +2009-02-06 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFields:_fieldsfrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filtersincludeProtectedInformation:_includeProtectedInformation]): + added the "c_cycleinfo" and "c_cycleenddate" fields to the list of + fields that should not be stripped when removing protected informations. + + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -dealloc]) + ([UIxTaskEditor -todo]): same as below (apts). + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -event]): retain the event parent calendar object instead of the + event itself. + ([UIxAppointmentEditor -dealloc]): release the above calendar. + + * UI/MailPartViewers/UIxMailPartICalViewer.m + ([UIxMailPartICalViewer -dealloc]): no longer release "inEvent" + since it does not need to be retained. + + * Main/SOGo.m ([SOGo +initialize]): added handling of the + "SOGoDebugLeaks" configuration variable. + ([SOGo -dispatchRequest:_request]): log the classes of instances + that were leaked between the handling of the request, if + SOGoDebugLeaks is set. + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + -aclsForUser:uidforObjectAtPath:objectPathArray]): cache an empty + array if not acl have been returned for the specified user. + + * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder + -lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]): + same as below. + ([SOGoContactGCSFolder -fixupContactRecord:contactRecord]): new + method that initializes c_mail, c_screenname, c_o, + c_telephonenumber to empty strings if not found. + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder + -lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]): + no longer make use of the displayName, mail, screenName, phone and + org intermediary keys. + + * UI/Contacts/UIxContactsListView.m ([-currentCName]): removed + useless method. + +2009-02-05 Francis Lachapelle + + * UI/SOGoUI/UIxComponent.m ([UIxComponent -responseWithStatus:): + we now set the content-type to "text/plain" to fix issues with nginx. + + * UI/MailPartViewers/UIxMailPartHTMLViewer.m + ([UIxMailPartHTMLViewer + -startElement:namespace:rawName:attributes:]): the base tag must be ignored. + +2009-01-22 Ludovic Marcotte + + * Updated the Apache section in the installation + and configuration guide + * Apache/SOGo.conf + Updated to use mod_proxy and mod_proxy_balancer + instead of mod_ngobjweb. We now also distribute + requests across three sogod processes. + * sogo.spec + Removed mod_ngobjweb from the build dependancies + +2009-01-21 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -fixupRecord:_record]): removed the unused + isAllDay local variable. + ([SOGoAppointmentFolder -fixupRecords:records]): removed the + unused "fetchRange:" argument. + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + +folderWithSubscriptionReference:referenceinContainer:aContainer]): + same as below. + + * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -realNameInContainer]): + escape the owner name as a potential CSS identifier. + + * SoObjects/SOGo/NSString+Utilities.m ([NSString + -asCSSIdentifier]): escape the "_" character first. + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + -subscribe:reallyDoinTheNamesOf:delegatedUsersfromMailInvitation:isMailInvitationinContext:localContext]): + explicitly set the content-type of the response to text/plain with + charset='utf-8' to work-around a bug in Firefox, complaining about + a hypothetical text/xml content he does not receive. + * UI/Common/WODirectAction+SOGo.m ([WODirectAction + -responseWith204]): + same as above. + +2009-01-19 Ludovic Marcotte + + * Main/SOGo.m + We check if we have an empty configuration upon startup + and warn the user about this. + +2009-01-16 Wolfgang Sourdeau + + * SoObjects/SOGo/NSString+Utilities.m ([NSString + -asCSSIdentifier]): new method returning a "safe" CSS identifier + based on the original string. + +2009-01-13 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -userDefaults]): make use + of more explicit names for the variables used. Invoke a new [self + primaryUserDefaults] that fetches the defaults from the database, + so as to separate that mechanism from the caching mechanisme. + ([SOGoUser -userSettings]): same as above. + +2009-01-09 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject + -aclUsers]): fixed method to invoke [container + aclUsersForObjectAtPath:] with the resulting path as argument + instead of the path itself. + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + -sendFolderAdvisoryTemplate:template]): the condition check for + sending folder advisories has been moved here. + ([SOGoGCSFolder -sendFolderAdvisoryTemplate:template]): now a + public method. + +2009-01-07 Ludovic Marcotte + + * Added Documentation/SOGo Mobile Devices Configuration.odt + * Fixed typos in the Intallation & Configuration guide + * Added Documentation/SOGo Mozilla Thunderbird Configuration.odt + +2009-01-07 Francis Lachapelle + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -_handleCustomRRule:]): set the proper timezone for the end date. + ([UIxComponentEditor -_loadRRules]): idem. + ([UIxComponentEditor -init): instantiates an UIxDatePicker object + to retrieve the proper date format. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -saveAction]): for recurrent events with an end date, the method + _adjustRecurrentRules must be called unconditionally. This fixes + the missing occurence on the last day. + ([UIxAppointmentEditor -_adjustRecurrentRules]): fixed adjustment + of end date by using the proper timezone. + +2009-01-07 Wolfgang Sourdeau + + * SoObjects/SOGo/NSString+Utilities.m ([NSString + -doubleQuotedString]): new method that returns a double-quoted and + properly escaped version of the string. Since it's the same + algorithm used in jsonRepresentation, the latter is now calling + this new method. + +2009-01-06 Ludovic Marcotte + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -_filterComponent:]): + We now set the proper component summary just like + we do in the Web UI when 'securing' the + returned component. Also adjusted the Localizable.strings + files accordingly. + +2008-12-30 Ludovic Marcotte + + * Dropped the following files: + UI/Scheduler/UIxAppointmentProposal.m + UI/Scheduler/UIxTaskProposal.m + * SoObjects/Appointments/SOGoAppointmentFolder.m + SoObjects/Contacts/SOGoContactGCSFolder.m + UI/WebServerResources/SchedulerUI.js + Fixed the escaping of characters and associated + search methods. + * SoObjects/SOGo/SOGoGCSFolder.m + ([SOGoGCSFolder aclsForUser:forObjectAtPath:]): + Added two new defaults to control the default + ACLs when none are specified: + SOGoCalendarDefaultRoles and SOGoContactsDefaultRoles + They are both arrays in which we set strings, + for example : + SOGoCalendarDefaultRoles = ("ObjectCreator", "PublicViewer"); + SOGoContactsDefaultRoles = ("ObjectEditor"); + +2008-12-30 Francis Lachapelle + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -newOccurenceWithID:]): fixed the start + date when returning an occurrence of an all-day event. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fixupCycleRecord:cycleRange:firstInstanceCalendarDateRange:forViewRange:]): + Fixed the start/end dates and recurrence id of events that span a + time period where the daylight saving time changes. + ([SOGoAppointmentFolder + -_appendCycleException:firstInstanceCalendarDateRange:fromRow:forRange:toArray:]): + idem. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -defaultAction]): idem. + ([UIxAppointmentEditor -viewAction]): idem. + +2008-12-30 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -eventsBlocksAction]): fixed a crash occuring in the rare + situation where an event end date would be inferior than its start + date. + +2008-12-23 Ludovic Marcotte + + * SoObjects/Appointments/SOGoAppointmentFolder.{h,m} + Added an additional parameter to fetchFields:... + so that we can avoid stripping relevant information. + This is useful when verifying the freebusy of + meeting participants as we must not strip the + c_partstates/c_partmails fields. + * SoObjects/SOGo/SOGoObject.{h,m} + We now permit two parameters during the user-list + REPORT in order to avoid LDAP lookups. + +2008-12-23 Francis Lachapelle + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -_adjustRecurrentRules]): new method to adjust the until date of a + recurrent rule using the start time of the event. + +2008-12-21 Ludovic Marcotte + + * Added the "sent-by" field to all invitation + update templates. + +2008-12-19 Francis Lachapelle + + * iCalWeeklyRecurrenceCalculator.m ([iCalDailyRecurrenceCalculator + -recurrenceRangesWithinCalendarDateRange:_r]): rewrote method to + handle timezones. Removed usage of julian numbers. + + * iCalDailyRecurrenceCalculator.m ([iCalWeeklyRecurrenceCalculator + -recurrenceRangesWithinCalendarDateRange:_r]): idem. Also fixed + the handling of intervals. + +2008-12-19 Wolfgang Sourdeau + + * UI/Common/UIxPageFrame.m ([UIxPageFrame -userSettings]): new + accessor method to avoid loading the user settings with an + additional json request. + ([UIxPageFrame -userDefaults]): same as above for user defaults. + +2008-12-17 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder + -lookupName:nameinContext:lookupContextacquire:acquire]): we avoid + getting subscribed sources if not needed, which reduces the amount + of requests to the database. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -dealloc]): we release componentCalendar here to avoid a leak + (since if set, it was through a call to ASSIGN()). + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -setComponent:newComponent]): since componentCalendar is released + at deallocation, we need to retain it, and to release the previous + value to avoid a leak... + +2008-12-15 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject +webdavAclManager]): + same as below. + ([SOGoObject -doesRetainContainer]): return "NO" here in order to + avoid leaks. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder +webdavAclManager]): same as below. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject +webdavAclManager]): same as below. + + * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder +webdavAclManager]): + same as below. + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + +webdavAclManager]): same as below. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject +webdavAclManager]): + same as below. + + * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder + +webdavAclManager]): declare singleton as static to avoid leaking. + +2008-12-15 Ludovic Marcotte + + * Updated german translations - patch from + Alexander Greiner-Baer + * SoObjects/Contacts/SOGoContactLDIFEntry.m + ([SOGoContactLDIFEntry -vCard]): We now force + the usage of the SOGoLDAPContactInfoAttribute, + if defined, over "description" when generating + the "NOTE" attribute. + * SoObjects/SOGo/SOGoObject.m + Optimized a bit and we also now support setting + roles, or adding/removing roles for multiple users + at once. + +2008-12-14 Ludovic Marcotte + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -_buildStripFieldsFromFields:]): + Don't strip the c_isopaque for the DAndTViewer role. + +2008-12-09 Francis Lachapelle + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -_handleUpdatedEvent:fromOldEvent:]): if + the sequence doesn't change, attendees will no longer receive a + notification by email. + ([SOGoAppointmentObject + -_updateAttendee:ownerUser:forEventUID:withRecurrenceId:withSequence:forUID:shouldAddSentBy:]): + if an attendee accepts all events, on the master event of a + repeating event will be updated; occurrences will no longer be affected. + ([SOGoAppointmentObject -postCalDAVEventRequestTo:from:]): when + dealing with an occurrence of a repeating event, the function now + proprly update each attendee's calendar. + ([SOGoAppointmentObject + -takeAttendeeStatus:from:withRecurrenceId:]): fixed handling of an + occurrence of a repeating event. + ([SOGoAppointmentObject -postCalDAVEventReplyTo:from:]): idem. + +2008-12-08 Ludovic Marcotte + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder bareFetchFields:...]): we now + correctly handle the privacy SQL string w/o loosing + the previously defined filters. + +2008-12-05 Francis Lachapelle + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -_updateRecurrenceIDsWithEvent:]): fixed + modification of the new event and added adjustement of the + exception dates. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject + -_removeEventFromUID:owner:withRecurrenceId:]): for a repeating + event, the occurrence was not properly removed. + + * SoObjects/Appointments/SOGoComponentOccurence.m + ([SOGoComponentOccurence -prepareDelete]): for a repeating event, + the exception date was not added and the occurence was not + properly deleted. + + * UI/MailPartViewers/UIxMailPartICalViewer.m + ([UIxMailPartICalViewer -isEventStoredInCalendar]): when dealing + with an occurrence of a repeating event, the function now properly + verify the presence of the occurence and not only the event. + +2008-12-05 Ludovic Marcotte + + * SOPE/NGCards/NSString+NGCards.m + We avoid escaping the comma during content generation + * SOPE/NGCards/iCalDailyRecurrenceCalculator.m + Fixed RRULE lamenesses. + +2008-12-04 Ludovic Marcotte + + * Fixed a typ in SoObjects/SOGo/SOGoCache.m + that would lead to a crash + +2008-12-03 Francis Lachapelle + + * UI/MailPartViewers/UIxMailPartICalViewer.m + ([UIxMailPartICalViewer -storedEvent]): returns the occurence of + the repeating event if recurrenceId is defined. + + * UI/MailPartViewers/UIxMailPartICalActions.m + ([UIxMailPartICalActions -_setupChosenEventAndEventObject:]): + fixed comparison of the calendar and email event when dealing with + an occurence of a repeating event. + ([UIxMailPartICalActions -_updateAttendee:ownerUser:forEventUID:withRecurrenceId:forUID:shouldAddSentBy:]): + fixed handling of status update for one occurence of a repeating event. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -saveComponent:]): fixed handling of an + occurence modification (resulting a properly written email sent to + attendees). + ([SOGoAppointmentObject + _removeEventFromUID:owner:withRecurrenceId]:): fixed handling of + an occurrence deletion. In this case an exception date must be + added to the event. + +2008-12-02 Ludovic Marcotte + + * SoObjects/Appointments/SOGoAppointmentFolder.m + Modified to handle correctly the classification + of events when fetching the etags in order to + not return unaccessible components. + +2008-12-01 Ludovic Marcotte + + * Improved the cache sync process and added + safetiness using a db transaction. + +2008-12-01 Francis Lachapelle + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -prepareDeleteOccurence:]): fixed handling + of occurence deletion by an attendee. + ([-changeParticipationStatus: forRecurrenceId:]): fixed handling + of changing the attendee's status when no occurrence was + previously defined. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -takeValuesFromRequest: inContext:]): replaced pulldown + transparency menu by a checkbox (Show Time as Free). + +2008-12-01 Ludovic Marcotte + + * We now try to match the c_name and c_uid + when creating events from the Web interface. + This can avoid creating duplicate events + with IMIP when calendar refreshes haven't occured + before the accept/decline/tentative actions. + +2008-11-29 Ludovic Marcotte + + * Updated german translation - patch from + Alexander Greiner-Baer + +2008-11-28 Ludovic Marcotte + + * We no longer show the previous/new location + if it's empty in the invitation update templates. + +2008-11-26 Ludovic Marcotte + + * SoObjects/SOGo/SOGoGCSFolder.m + We correctly wrap ACL additions around a + database transaction. + * Updated the code wrt acting on behalf of + someone else to speed up things and also to + honor the participation status of the one acting + on behalf of someone else. + +2008-11-26 Ludovic Marcotte + + * SoObjects/SOGo/SOGoGCSFolder.m + We escape the ' character in the folder name + before trying to set it. + * SoObjects/Appointments/SOGoAppointmentObject.m + We now handle the originator/organizer correctly + when posting CalDAV messages. + +2008-11-24 Ludovic Marcotte + + * We now sort the results in the subsription window + +2008-11-24 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder + -toManyRelationshipKeys]): return the subfolders in the order by + which they appear in the web interface, to avoid confusing + Lighting with its Inbox management and so that the folders appear + in an ordered way. + +2008-11-23 Wolfgang Sourdeau + + * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage + -usersSearchAction]): new method, derived from the previous + version of foldersSearchAction, but that only returns username and + contact info about matching users. + ([SOGoUserHomePage -foldersSearchAction]): new implementation that + returns the folders available for subscription of the only user + passed as parameter. + +2008-11-23 Ludovic Marcotte + + * UI/Scheduler/UIxComponentEditor.m - _loadAttendees + We set the name to the rfc822 email address if the + cn is not available. This avoid NOT showing attendees + from the Web interface when only the email address + was specified from the attendee list. + +2008-11-23 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -davCollectionQuery:queryContext]): simplified method by returning + only the folders with the specified type that are shared by the + owner of the current user folder. The folder owner is now + identified correctly with his personal folder principal. + ([SOGoUserFolder -davUserQuery:queryContext]): when an LDAP info + attribute is available for the user, we return it too. + + * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager + +initialize]): we need to retain the LDAPContactInfoAttribute + static var, to avoid a zombie. + ([LDAPUserManager -fetchContactsMatching:filter]) + ([LDAPUserManager -fetchUsersMatching:filter]): the info attribute + is returned if the related entry does NOT contain it yet: the test + was reverted. + +2008-11-22 Ludovic Marcotte + + * Modified the invitation "update" templates + to display the summar in the email subject. + * Commented out a premature optimization in + SOGoAppointmentFolder.m + +2008-11-20 Ludovic Marcotte + + * Fixed a crash issue in SOGoCache - we don't + replaced the cached object. + * Reworked the freebusy code to ignore c_status + and rather consider the values of the particpant + states (accepted/needs-action/declined) + +2008-11-18 Ludovic Marcotte + + * SoObjects/Appointments/SOGoAppointmentObject.m + Modified postCalDAVEventRequestTo: from: to handle + invitation updates from normal ones. + +2008-11-17 Ludovic Marcotte + + * Added back the appointment update notification + templates from RC8 and updated them. + * SoObjects/Appointments/SOGoAppointmentFolder.m + Greatly improved the speed of getetag calls + * SoObjects/SOGo/SOGoGCSFolder.m + We now allow multiple users subscribe/unsubscribe + requests during one DAV call. + +2008-11-13 Ludovic Marcotte + + * SoObjects/Appointments/SOGoAppointmentObject.m + We now remove the SENT-BY when updating attendees + if it's the attendee himself that changes his + particpation status + * SoObjects/SOGo/SOGoUserFolder.m + Improve the comparison of strings by rather using + URL objects. + * SOPE/NGCards/CardVersitRenderer.m + We now properly quote attribute values if they + contain an ':' in them + * SoObjects/Appointments/iCalPerson+SOGo.m + Fixed the check for quoted SENT-BY + * Updated the iCal invitation replies to take + the SENT-BY into account. + +2008-11-11 Ludovic Marcotte + + * Fixed a couple of issues in the new pref caching + subsystem. + * Cleaned up the caching code and activated + distributed notifications by default. + +2008-10-29 Francis Lachapelle + + * SoObjects/SOGo/SOGoUser.m ([-userDefaults]): added support for + system-wide defaults for ReplyPlacement, SignaturePlacement, + MessageForwarding, and MessageCheck. + +2008-10-23 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoMailer.m ([SOGoMailer + -sendMailData:datatoRecipients:recipientssender:sender]): don't + HELO the server after connecting, since the connectToHost: method + already has "EHLO"'d it after the connection was established. + + * UI/MailerUI/UIxMailMainFrame.m ([-quotaSupport]): removed + useless method. + + * SoObjects/SOGo/NSArray+Utilities.m ([NSArray + -objectsForKey:keynotFoundMarker:marker]): added a + "notFoundMarker:" parameter to the "objectsForKey:" method. When + the marker is nil and no match is found in the current dictionary, + the entry is ignored. + +2008-10-21 Wolfgang Sourdeau + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -contactSearchAction]): fixed typing of "contacts", which actually + is an NSArray. + +2008-10-17 Francis Lachapelle + + * UI/Common/UIxPageFrame.m ([NSString userLanguage]): returns the + user's language. Used to make this information available through + JavaScript. + +2008-10-16 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -davURL]) + ([SOGoObject -soURL]): adjusted last change by checking that the + port returned initially is not nil before initializing the + returned NSURL. + +2008-10-15 Francis Lachapelle + + * UI/Contacts/UIxContactEditor.m ([_setupEmailFields]): avoid + setting the work mail if only the home mail is defined. + + * OGoContentStore/OCSContactFieldExtractor.m ([NSMutableDictionary + extractQuickFieldsFromVCard:vCard]): set email address to an empty + string if not defined. + + * UI/Contacts/UIxContactFoldersView.m ([WOActionResults + allContactSearchAction]): returned array is now properly + initialized if no result is found. + +2008-10-15 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView + -columnsDisplayOrder]): slightly optimized method by reducing the + amount of method calls. Initialized userDefinedOrder as an + NSMutableArray instead of an NSArray. Fixed indentation. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -davURL]) + ([SOGoObject -soURL]): appended the port number to the hostname + used to construct the NSURL instance. + +2008-10-03 Francis Lachapelle + + * UI/MainUI/SOGoUserHomePage.m ([WOResponse + _foldersResponseForResults]): include the value of the attribute value + from user defaults SOGoLDAPContactInfoAttribute. + + * UI/Contacts/UIxContactFoldersView.m ([WOActionResults + allContactSearchAction]): return a dictionary with the found + contacts and the original search string. + ([WOActionResults contactSearchAction]): idem. + + * SoObjects/SOGo/LDAPUserManager.m ([NSArray + _compactAndCompleteContacts:]): add the attribute from user + defaults SOGoLDAPContactInfoAttribute for each returned contact. + + * SoObjects/SOGo/LDAPSource.m ([EOQualifier _qualifierForFilter: + ]): the filter doesn't match only the beginning of the attribute's + value anymore. + ([NSArray _searchAttributes]): add the attribute from user + defaults SOGoLDAPContactInfoAttribute if not already included. + + * SoObjects/Contacts/SOGoContactLDAPFolder.m ([NSArray + _flattenedRecords]): added the key "contactInfo" with the value of + the attribute from user defaults SOGoLDAPContactInfoAttribute. + + * UI/Contacts/UIxContactFoldersView.m ([NSDictionary + _responseForResults:]): returns a dictionary instead of a + WOResponse. Currently only called by contactSearchAction. + +2008-10-03 Cyril Robert + * SoObjects/Mailer/SOGoMailFolder.m + Added copyUIDs and moveUIDs + + * UI/MailerUI/UIxMailActions.m + Removed copyAction and moveAction + + * UI/MailerUI/UIxMailFolderActions.m + Added copyMessagesAction and moveMessagesAction + + * UI/WebServerResources/MailerUI.js + Removed _onMailboxMenuAction + Modified onMailboxMenuCopy and onMailboxMenuMove + + Copying/Moving messages is now done with one POST. + Fixed bug #1893 + +2008-10-02 Cyril Robert + + * SoObjects/Mailer/SOGoMailFolder.m + Modified zip command acces path, defaults to /usr/bin/zip, + overwritable by sogo defaults + + * UI/MailPartViewers/UIxMailPartViewer.m + Added - (NSString *) mimeImageUrl to get an icon path for attachments + + * UI/MailerUI/UIxMailListView.m + Added: + - (NSArray *) columnsDisplayOrder + Returns the current columns order, either from sogo defaults or user defaults. + - (NSDictionary *) columnsMetaData + Returns an array of metadata (id, class) for columns header. + + * UI/MailerUI/UIxMailMainFrame.m + Added - (NSString *) defaultColumnsOrder to get the order from a js call. + + Summary: + * Columns in UIxMailListView can now be changed + * "Priority" column is smaller + * Path to zip command now configurable + * Fixed a js bug (loadImagesButton is null) + * Attachments now have an icon according to their mimetype + +2008-10-01 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent + -sendEMailUsingTemplateNamed:newPageNameforObject:objecttoAttendees:attendees]): + changed method to only accept one event from now on, since we + actually use less information with the Lightning-inspired + templates than before. + + * SoObjects/Appointments/SOGoAptMailNotification.m ([-homePageURL]) + ([-setHomePageURL:newhomePageURL], [-appointmentURL], [-viewTZ]) + ([-setViewTZ:newViewTZ]): removed obsolete accessors. + + * SoObjects/Appointments/SOGoAptMailICalReply.m + ([SOGoAptMailICalReply -attendeeName]): new method returning the + cn of the attendee. + +2008-09-30 Ludovic Marcotte + + * Implemented external loading of images + in HTML mails the same way Thunderbird does it. + +2008-09-30 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoLDAPUserDefaults.m ([SOGoLDAPUserDefaults + -objectForKey:key]): properly handle arrays of record references. + + * SoObjects/SOGo/SOGoLDAPUserDefaults.m ([SOGoLDAPUserDefaults + -objectForKey:key]): added support for dn+attribute lookup. The + lookup syntax has been generalized by testing for "ref-dn" instead + of "dict-dn". Make use of only non-deprecated LDAP functions. + +2008-09-30 Cyril Robert + + * SoObjects/Mailer/SOGoDraftsFolder.m + Moved userSpoolFolderPath method to SOGoMailFolder.m + * SoObjects/Mailer/SOGoMailFolder.h + * SoObjects/Mailer/SOGoMailFolder.m + Added userSpoolFolderPath from SOGoDraftsFolder + Added archiveUIDs method to create an archive from email uids + * UI/MailerUI/UIxMailFolderActions.h + * UI/MailerUI/UIxMailFolderActions.m + Added saveMessagesAction method to handle the /saveMessages call + * UI/MailerUI/product.plist + Added a definition for saveMessages + +2008-09-28 Ludovic Marcotte + + * Modified the following files: + SoObjects/Mailer/SOGoDraftObject.m + UI/MailerUI/Dutch.lproj/Localizable.strings + UI/MailerUI/English.lproj/Localizable.strings + UI/MailerUI/French.lproj/Localizable.strings + UI/MailerUI/German.lproj/Localizable.strings + UI/MailerUI/Italian.lproj/Localizable.strings + UI/MailerUI/Spanish.lproj/Localizable.strings + UI/MailerUI/Toolbars/SOGoDraftObject.toolbar + UI/MailerUI/UIxMailEditor.m + UI/MailerUI/UIxMailListView.m + UI/Templates/MailerUI/UIxMailEditor.wox + UI/Templates/MailerUI/UIxMailListView.wox + UI/WebServerResources/UIxMailEditor.js + in order to add support for X-Priority in emails. + * Regenerated the sope-patchset in order to add + capabilities to parse BODY[HEADER.FIELDS ...] responses. + +2008-09-26 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoLDAPUserDefaults.m ([SOGoLDAPUserDefaults + -objectForKey:key]): implemented overriden method by using c types + and methods to avoid recursive calls from objective-c methods. + +2008-09-25 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoLDAPUserDefaults.[hm]: new class module + designed to substitute the system NSUserDefaults system with + access to an LDAP directory. + +2008-09-22 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder + -deleteUIDs:uidsinContext:localContext]): explicitly select the + current mailbox. + +2008-09-22 Ludovic Marcotte + + * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions + -deleteMessagesAction]): make use of the new SOGoFolder's + deleteUIDs:inContext: method described below. + + * UI/MailerUI/UIxMailActions.m ([-trashAction]): removed web method. + + * SoObjects/Mailer/SOGoMailObject.m ([-trashInContext:_ctx]): + removed method, obsoleted by the new "deletedUIDS:..." method + described below. + + * SoObjects/Mailer/SOGoMailManager.[hm]: removed all methods + except -copyMailURL:srcurltoFolderURL:desturlpassword:pwd, which + is the only one still used. + + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder + -deleteUIDs:uidsinContext:localContext]): new method enabling the + deletion of many IMAP uids in one batch. + +2008-09-22 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -davCollectionTag]): do not ignore deleted + records when "computing" the ctag. Also, the EOSpecification + instance should not be static, otherwise any subsequent queries + will be based on the ctag of the first calendar ever queried. + + * SoObjects/SOGo/NSString+Utilities.m ([NSString + -asQPSubjectString:encoding]): replace spaces with underscore + characters to comply with rfc 2047. + +2008-09-17 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer + -decodedFlatContent]): same as below... + + * SoObjects/Mailer/NSData+Mail.m ([NSData + -bodyDataFromEncoding:encoding]): invoke + "dataByDecodingQuotedPrintableTransferEncoding" on the NSData + instance to avoid decoding "_" chars. + +2008-09-17 Francis Lachapelle + + * UI/MailerUI/UIxMailAccountActions.m ([WOResponse + -listMailboxesAction]): also returns the inbox quota, wrapped in a + new dictionary with keys "mailboxes" and "quotas". Uses the new user + default "SOGoSoftQuotaRatio" to force a quota and ignore the one + returned by the IMAP server. + +2008-09-17 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -fetchAttachmentIds]): if the parts have no filename associated + with them, we still return the prefix url so that we still can + access the attachment from HTML messages. + +2008-09-11 Wolfgang Sourdeau + + * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage -logoffAction]): + log the username performing the logoff operation. + + * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -connectAction]): log + success information about current attempt. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + -lookupName:lookupNameinContext:localContextacquire:acquire]): do + not use the object returned by "bindToObject:inContext:". + Otherwise the clientObject isn't set in the context. + +2008-09-10 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartAlternativeViewer.m + ([UIxMailPartAlternativeViewer -selectChildInfo]): give precedence + on multipart/mixed parts over text/* parts. + + * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject + -isValidAttachmentName:filename]): accept all filenames except + ".", ".." and those that contain "/". Any other is valid and will + be accepted. + +2008-09-08 Ludovic Marcotte + + * SoObjects/SOGo/LDAPSource.m ([LDAPSource + -checkLogin:loginToCheckandPassword:passwordToCheck]) + ([LDAPSource -allEntryIDs]) + ([LDAPSource -fetchContactsMatching:match]) + ([LDAPSource -lookupContactEntry:entryID]) + ([LDAPSource -lookupContactEntryWithUIDorEmail:uid]): catch any + LDAP connection failure exception and return an empty result if + such as situation has happened. + +2008-09-05 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailReply.m: made class a child of + SOGoMailForward, since we need to access more or less the same + fields from the original message, especially in outlook reply mode. + ([SOGoMailReply -setOutlookMode:newOutlookMode]): new accessor + defining in which mode we are. + + * SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject + -contentForReply]): if the reply style is outlook, then we use the + content generated for inline forwarding. + ([SOGoMailObject -useOutlookStyleReplies]): new method that + indicates whether the ud key "SOGoMailUseOutlookStyleReplies". + + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder + -expungeLastMarkedFolder]): do not perform the expunge if the + marked folder is the current folder. + +2008-09-04 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartAlternativeViewer.m + ([UIxMailPartAlternativeViewer -selectPartIndexFromTypes:]): give + precedence on multipart/related parts. + + * UI/MailPartViewers/UIxMailRenderingContext.m + ([UIxMailRenderingContext -viewerForBodyInfo:_info]): add the + mixed viewer as the viewer for "multipart/digest" content. + + * UI/MailPartViewers/UIxMailPartTextViewer.m (convertChars): + fixed a buffer overflow. Incremented the buffer size to 8192. + +2008-09-02 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailManager.m ([NGImap + -copyMailURL:toFolderURL:password:]): do not compare the urls + based on the instance that NGImap4ConnectionManager returns, + because disabling the pooling will generate a bad result, even + though the host:port pairs are the same. + +2008-09-01 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailView.m ([UIxMailView + -appendToResponse:_responseinContext:_ctx]): no longer invoke + [NGImap4Client logout], since this is now handled by the + NGImap4Connection manager (or not). + + * UI/MailerUI/UIxMailActions.m ([UIxMailActions + -markMessageUnreadAction]): no longer make use of [SOGoMailFolder + unselect]. + ([UIxMailActions -markMessageReadAction]): idem. + + * SoObjects/Mailer/SOGoMailFolder.m ([-unselect]): removed method + since we no longer need it. + + * SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject + -dealloc]): release "imap4". If the IMAP4 connection pooling is + disabled, the object will otherwise never be released. + + * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount + +initialize]): use the user default "SOGoFallbackIMAP4Server" to + override the value of "serverName" from the actual user settings. + Fallback to "localhost" if value is unset. + + * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount + -imap4URLString]): use the value of SOGoFallbackIMAP4Server, as + mentionne above. + + * UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -from]): retain the + initialized value of from, otherwise we create a future zombie. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + -initWithName:_nameinContainer:_container]): we no longer retain + the context, to avoid making a circular reference. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser + -initWithLogin:newLoginroles:newRoles]): moved the core from init + here. + ([-init]): removed method. + +2008-08-29 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailView.m ([UIxMailView + -appendToResponse:_responseinContext:_ctx]): logout from the imap + connectin once the response has been appended. + +2008-08-29 Ludovic Marcotte + + * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject + -addRecipients:recipientstoArray:array]): same as below. + + * SoObjects/Mailer/SOGoDraftObject.m: + ([SOGoDraftObject -addEMailsOfAddresses:_addrstoArray:_ma]): test + if the returned email is nil before adding it to the array. + +2008-08-28 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailActions.m ([UIxMailActions + -markMessageUnreadAction]): unselect the mailbox after the operation. + ([UIxMailActions -markMessageReadAction]): same as above. + + * UI/MailPartViewers/UIxMailPartICalViewer.m + ([UIxMailPartICalViewer -hasCalendarAccess]): new method that + returns whether the current user has access to the calendar + module, so that buttons can be hidden. + +2008-08-27 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart + -lookupImap4BodyPartKey:inContext:]): if the "parts" object is not + found, we try "body"->"parts". + +2008-08-26 Francis Lachapelle + + * UI/MailerUI/UIxMailMainFrame.m ([composeAction]): build the + contact's fullname from its card's attribute "n" if "fn" is + not defined. + + * UI/Contacts/UIxContactView.m ([fullName]): idem. + + * UI/Contacts/UIxContactEditor.m ([addressBooksList]): new + method to retrieve the address books to which the user can write. + ([saveAction]): if the user change the destination address + book, the contact is now correctly moved to it. + + * UI/Scheduler/UIxAppointmentEditor.m ([viewAction]): new + method that returns a JSON representation of an event. + + * UI/Scheduler/UIxAppointmentEditor.m ([newAction]): removed + the rights validation from the product.plist to this method so + the user redirect to the proper folder if rights are insufficient. + + * UI/Scheduler/UIxTaskEditor.m ([newAction]): idem. + + * UI/Contacts/UIxContactEditor.m ([newAction]): idem. + + * UI/Scheduler/UIxCalendarSelector.m ([calendars]): removed + the roles as they are no longer verified through JavaScript. + + * SoObjects/SOGo/SOGoFolder.m + ([_compareByNameInContainer:otherFolder]): fixed an order + problem with the personal folders. + + * SoObjects/SOGo/NSString+Utilities.m + ([_rangeOfURLInRange:refRange]): added some ending characters. + ([_handleURLs:selfCopy textToMatch:match prefix:prefix + inRanges:ranges]): fixed the parsing so URLs are properly identified. + + * UI/MailerUI/UIxMailAccountActions.m ([-composeAction]): + added support to define the subject through the URL. + +2008-08-26 Wolfgang Sourdeau + + * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -setUserName:_value]) + ([SOGoRootPage -userName]): removed accessors, since the + corresponding ivar is not used and was removed too. + + * UI/SOGoUI/UIxComponent.m ([-shortUserNameForDisplay]): no longer + make use of the "wrongusernamepassword" hack. + + * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -connectAction]): return + HTTP code 403 if the username and the password passed in the + request are not valid. + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -lookupName:_keyinContext:_ctxacquire:_flag]): whenever a user has + no access to the specified module, a response with code 403 and + the content of "UIxModuleAccessDenied" will be generated. + + * UI/SOGoUI/UIxModuleAccessDenied.[hm]: new template module + displaying an error message. + +2008-08-22 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailRenderingContext.m + ([UIxMailRenderingContext -viewerForBodyInfo:_info]): display + parts with a bodyId as an attachment. + + * UI/Contacts/UIxContactView.m ([UIxContactView -workUrl]) + ([UIxContactView -homeUrl]): the test for the presence of a + protocol was inverted, causing the output of wrong urls anyway... + + * SoObjects/Contacts/SOGoContactLDIFEntry.m ([SOGoContactLDIFEntry + -vCard]): replaced query for field "notes" with "description". + Added support for Mozilla custom fields 1 to 4. + + * SoObjects/Mailer/SOGoHTMLMailBodyPart.[hm]: new class module + implementing the HTML content body parts. + + * UI/MailPartViewers/UIxMailPartHTMLViewer.m + ([UIxMailPartExternalHTMLViewer -init]): new class derived from + UIxMailPartHTMLViewer but which as as a full page wrapper. + +2008-08-22 Ludovic Marcotte + + * Modified SoObjects/Mailer/NSData+Mail.m + -decodedSubject so we correctly implement decoding + instead of relying on the broken SOPE implementation. + +2008-08-21 Ludovic Marcotte + + * SoObjects/SOGo/LDAPUserManager.m + Renamed the SOGOLDAPUserManagerCleanupInterval defaults to + SOGoLDAPUserManagerCleanupInterval. + We correctly add our timer to the runloop and fixed + a typo in the selector name. + +2008-08-21 Wolfgang Sourdeau + + * SoObjects/SOGo/NSString+Utilities.m ([NSString + -caseInsensitiveMatches:match]): new method that helps matching + strings against patterns. + +2008-08-21 Ludovic Marcotte + + * Updated the icons to use those from Thunderbird 2 + and from Lightning 0.9. Also added those new files : + + UI/WebServerResources/tbtv_account_17x17.png + UI/WebServerResources/tbtv_drafts_17x17.png + UI/WebServerResources/tbtv_inbox_17x17.png + UI/WebServerResources/tbtv_leaf_corner_17x17.png + UI/WebServerResources/tbtv_sent_17x17.png + UI/WebServerResources/tbtv_trash_17x17.png + + Dropped : + + UI/WebServerResources/tbtv_account_17x17.gif + UI/WebServerResources/tbtv_drafts_17x17.gif + UI/WebServerResources/tbtv_inbox_17x17.gif + UI/WebServerResources/tbtv_leaf_corner_17x17.gif + UI/WebServerResources/tbtv_sent_17x17.gif + UI/WebServerResources/tbtv_trash_17x17.gif + +2008-08-20 Wolfgang Sourdeau + + * UI/PreferencesUI/UIxAdditionalPreferences.[hm]: new template + class that enables the user to append links or other infos needed + to change preferences not handled by SOGo. The tab will display + when setting the ud key "SOGoUIxAdditionalPreferences" to YES. + +2008-08-19 Wolfgang Sourdeau + + * UI/MainUI/SOGoBrowsersPanel.[hm]: new template class that helps + displaying a choice of browsers compatible with SOGo. The code was + extracted from UIxPageFrame. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -viewAction]): apply the user's timezone to the startdate before + formatting it. + +2008-08-18 Ludovic Marcotte + + * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject + -mimeHeaderMapWithHeaders:_headers]): properly quote atoms in mail + addresses. + + * UI/MailPartViewers/UIxMailPartMessageViewer.m + ([UIxMailPartMessageViewer -formattedComponents:components]): + don't report nil components. + +2008-08-13 Wolfgang Sourdeau + + * SoObjects/Appointments/iCalEventChanges+SOGo.m + ([iCalEventChanges -sequenceShouldBeIncreased]): added summary and + comment. + + * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager + -contactInfosForUserWithUIDorEmail:uid]): only use the + authentication sources. + +2008-08-11 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoComponentOccurence.m + ([SOGoComponentOccurence + +occurenceWithComponent:newComponentwithMasterComponent:newMasterinContainer:newContainer]): + seconds is now a NSTimeInterval instead of an int, to avoid + casting problems on the PowerPC architecture. + +2008-08-10 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartICalViewer.m + ([UIxMailPartICalViewer -currentUserAttendee]): select the most + recent event. + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject -copyToFolder:newFolder]) + ([SOGoContentObject -moveToFolder:newFolder]): new operation methods. + +2008-08-10 Ludovic Marcotte + + * UI/Contacts/UIxContactView.m ([UIxContactView -homeUrl]) + ([UIxContactView -workUrl]): prefixes the urls with "http://" if + not already prefixed. + +2008-08-09 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoComponentOccurence.m + ([SOGoComponentOccurence -changeParticipationStatus:newPartStat]): + implemented proxy method. + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent + -sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]): + the sender email is always the one of the owner, even though the + action might be done by a delegate. If the case, we setup the + "SENT-BY" parameter of the organizer field. + ([SOGoCalendarComponent -sendResponseToOrganizer]): If needed, + setup the "SENT-BY" parameter of the attendee field. + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -toolbar]): changed algoritm so that a delegate would really see + what the owner would, depending on his/her rights. + + * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart + -lookupImap4BodyPartKey:inContext:]): find a class based on the + mime type of the subpart described by the partInfo. + + * SoObjects/Appointments/iCalEntityObject+SOGo.m + ([iCalEntityObject + -quickRecordDateAsNumber:_datewithOffset:offsetforAllDay:allDay]): + changed the type of "seconds" to NSTimeInterval to avoid casting + errors on PPC. + + * UI/MailPartViewers/UIxMailPartICalActions.m ([UIxMailPartICalActions -updateUserStatusAction]) + ([UIxMailPartICalActions -acceptAction]) + ([UIxMailPartICalActions -declineAction]): if the event doesn't + exist in the user table, declare it as new. + +2008-08-07 Wolfgang Sourdeau + + * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager + -fetchContactsMatching:filter]): fetch entries matching filter + only in addressbooks. + ([LDAPUserManager -fetchUsersMatching:filter]): same as above for + authentication sources only. + + * SoObjects/Appointments/SOGoUserFolder+Appointments.m + ([SOGoUserFolder -davCalendarUserAddressSet]): the addresses + returned should be those of the owner and not of the current user. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject +webdavAclManager]): declare DAV:write as + equivalent of ..._ModifyComponent (instead of DAV:write-content). + +2008-08-05 Wolfgang Sourdeau + + * UI/Contacts/UIxContactEditor.m ([UIxContactEditor -isNew]): + invoke "isNew" to the client object only if it is an instance of + SOGoContentObject... + +2008-08-04 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -calendar:create:secure]): we now return a + deep copy of the current calendar element, so that further + modifications do not impact the original copy. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser +initialize]): same as + below. + + * Main/SOGo.m ([SOGo -run]): rename AgenorProfileURL to + SOGoProfileURL automagically. + +2008-07-29 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -eventsBlocksAction]): return event blocks with the serial number + of the event they refer to in the events list (first array) rather + than their cname, so that specific occurences can be + differenciated. + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -davUserQuery:queryContext]): make searches only in user + repositories and not in addressbooks. + +2008-07-28 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalMonthView.m ([UIxCalMonthView + -weeksToDisplay]): add one day to the computed delta, because + there is always at least one week displayed. + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -foldersOfType:typematchingUID:uid]): make searches only in user + repositories and not in addressbooks. + + * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager + -fetchUsersMatching:filter]): new method allowing to make searches + only in user repositories. + +2008-07-25 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView -dayStartHour]): + new getter for computing the default scroll point in the day and + week views. + + * UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable + -clickableHourCellClass]): the "dayEndHour" is the hour where the + outOfDay class starts. + + * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -hasChanged]) + ([UIxPreferences -setHasChanged:newHasChanged]): new accessors + method for a new hidden input field that is set to 1 if the values + have changed and require a refresh of the main window. + + * SoObjects/SOGo/AgenorUserDefaults.[hm]: renamed module class and + class moduel to SOGoUserDefaults. + + * Main/SOGo.m ([SOGo -run]): the table referred to as + "AgenorProfileURL" is now referred to as "SOGoProfileURL". + +2008-07-24 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoWebAuthenticator.m ([SOGoWebAuthenticator -checkLogin:_loginpassword:_pwd]), + SoObjects/SOGo/SOGoDAVAuthenticator.m ([SOGoDAVAuthenticator -checkLogin:_loginpassword:_pwd]): + disable "bypass" authentification method, since it doesn't work anyway. + + * SoObjects/SOGo/SOGoWebAuthenticator.m ([SOGoWebAuthenticator -init]), + SoObjects/SOGo/SOGoDAVAuthenticator.m ([SOGoDAVAuthenticator + -init]): use "SOGoAuthenticationMethod" first, since + "SOGoAuthentificationMethod" was a typo. If none are specified, + fallback on "LDAP". + +2008-07-23 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -secureContentAsString]): use a mutable + copy of the calendar in order to be able to modify it, otherwise + SOGo crashes. + ([-isFolderish]): removed method, so that the components won't be + listed as DAV collections. + +2008-07-21 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject + -PUTAction:_ctx]): when the object is new, return 201. Otherwise, + return 204 as success code. + +2008-07-18 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalWeekView.m ([UIxCalWeekView -startDate]): + same as below. + + * UI/Scheduler/UIxCalMonthView.m ([UIxCalMonthView + -weeksToDisplay]): use the user's first day of week to chose the + day to start the series. + ([UIxCalMonthView -dayCellClasses]): take the user's first day of + week into account. + ([UIxCalMonthView -endDate]): same as above. + + * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView + -firstDayOfWeek]): new template accessor. + + * UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable + -currentHourLineClass]): new template accessor. + ([UIxCalDayTable -clickableHourCellClass]): add the class + 'outOfDay' when the current hour is out of the user's day start + and end hour ranges. + + * UI/Scheduler/UIxCalDateSelector.m ([UIxCalDateSelector + -firstDayOfWeek]): new template accessor. + + * UI/Scheduler/UIxAttendeesEditor.m ([UIxAttendeesEditor -dayStartHour]) + ([UIxAttendeesEditor -dayEndHour]): new template accessors. + + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -newStartDate]), + UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -newStartDate]): take the user-configured day start hour into account. + + * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences + -firstWeekList]): no longer list the option that enables the + hiding of week numbers. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -firstDayOfWeek]) + ([SOGoUser -firstDayOfWeekForDate:date]) + ([SOGoUser -dayOfWeekForDate:date], [SOGoUser -dayStartHour]) + ([SOGoUser -dayEndHour]) + ([SOGoUser -firstWeekOfYearForDate:date]) + ([SOGoUser -weekNumberForDate:date]): new methods that help take + the calendar-related user preferences into account. + +2008-07-17 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalMonthView.m ([UIxCalMonthView + -weeksToDisplay]): we now display rows of weeks rather than columns + of week days. + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -eventsBlocksAction]): event blocks now that the "c_recurrence_id" + virtual field into account. + + * UI/Common/UIxObjectActions.m ([UIxObjectActions -deleteAction]): + new action method, moved from UIxContactView so that it is + generalized to all SOGoObjects. + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -init]): we now save the calendar to avoid + multiple parsing and instantiation of children components. + ([SOGoCalendarComponent -toOneRelationshipKeys]): declare + components as children. + ([SOGoCalendarComponent + -lookupName:lookupNameinContext:localContextacquire:acquire]): + handle the search for components and their occurences. + ([SOGoCalendarComponent -saveComponent:newObject]): added code to + update recurrence ids whenever the user saves a new version of the + master component. + + * SoObjects/Appointments/SOGoAppointmentObject.m ([SOGoAppointmentObject -occurence:occ]) + ([SOGoAppointmentObject -newOccurenceWithID:recID]) + ([SOGoAppointmentObject -prepareDeleteOccurence:occurence]): new + methods to handle occurences. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -fixupCycleRecord:_recordcycleRange:_r]): + declare a new "c_recurrence_id" field, that will be overwritten + with further exception occurences. + + * UI/Scheduler/UIxOccurenceDialog.[hm]: new dialog asking whether + to edit/delete all occurences of a recurrent event or only the one + selected. + + * SoObjects/Appointments/SOGoComponentOccurence.[hm]: super class + of new classes belows. + + * SoObjects/Appointments/SOGoAppointmentOccurence.[hm]: new class + module that handle occurences within events. + + * SoObjects/Appointments/SOGoTaskOccurence.[hm]: new class + module that handle occurences within todos. + +2008-07-16 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -eventsBlocksAction]): take user participation status into account + again. + + * SoObjects/Appointments/iCalEntityObject+SOGo.m + ([iCalEntityObject + -quickRecordDateAsNumber:_datewithOffset:offsetforAllDay:allDay]): + enhanced method to do the special computations for all day events. + +2008-07-16 Francis Lachapelle + + * UI/Contacts/UIxContactEditor.m ([BOOL isNew]) + ([void setAddressBookItem:_item]) + ([id addressBookItem]) + ([NSArray addressBooksList]) + ([SOGoContactFolder componentAddressBook]) + ([NSString addressBookDisplayName]): new methods to allow the + selection of the destination address book when creating a new contact. + +2008-07-15 Wolfgang Sourdeau + + * UI/Scheduler/NSDictionary+Scheduler.m: new category module that + implement helper methods for the Scheduler module. + ([NSDictionary -compareEventByStart:otherEvent]): new method that + compares event block dictionaries based on their value for + "start". + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -eventsBlocksAction]): new web method that returns the list of + events as well as the precomputed blocks of events, whether "all + day" or not. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchCoreInfosFrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filters]): + requests "c_iscycle". + +2008-07-15 Francis Lachapelle + + * UI/Contacts/UIxContactFolderActions.m: new class for actions + on contacts of a specific address book. + + * UI/Contacts/UIxContactFolderActions.m + ([NSException _moveContacts:toFolder:andKeepCopy:]): private method to + move and optionnaly copy one or many contacts to another + address book. + + * UI/Contacts/UIxContactFolderActions.m ([WOActionResults + copyAction]): copy one or many contacts to another address book. + + * UI/Contacts/UIxContactFolderActions.m ([WOActionResults + moveAction]): move one or many contacts to another address book. + +2008-07-14 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject + -setIsNew:newIsNew]): new setter that declares the record as new, + since it is no longer so by default. + + * SoObjects/Appointments/SOGoAppointmentFolder.m ([SOGoAppointmentFolder -davCalendarOrder]) + ([SOGoAppointmentFolder -setDavCalendarOrder:newColor]): new + accessors to handle Apple's "calendar-order" property. + + * SoObjects/Appointments/iCalRepeatableEntityObject+SOGo.m + ([iCalRepeatableEntityObject -cycleInfo]): exception dates are now + returned as an array of strings. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fixupCyclicRecords:_recordsfetchRange:_r]): fix an infinite loop + occuring when the exception date was not the first date in the list. + +2008-07-11 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFields:_fieldsfrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filters]): + take exceptional modifications into account. + + * SoObjects/Appointments/iCalToDo+SOGo.m: new class module with + category methods for iCalToDo. + ([iCalToDo -quickRecord]): same as for method below. + + * SoObjects/Appointments/iCalEvent+SOGo.m ([iCalEvent + -quickRecord]): new method taken from OCSiCalFieldExtractor. + +2008-07-10 Wolfgang Sourdeau + + * SoObjects/SOGo/NSString+DAV.m ([NSString -asWebDAVTuple]): new + method that parses a webdav tag in the form "{ns:}tag" and returns + a dictionary. + + * SoObjects/Appointments/SOGoUserFolder+Appointments.m + ([SOGoUserFolder -davPrincipalPropertySearch:queryContext]): new + method to answer to "principal-property-search" report. + + * SoObjects/Appointments/SOGoAppointmentFolders.m + ([SOGoAppointmentFolders -davComplianceClassesInContext:]): new + method that declares "calendar-access" and "calendar-schedule". + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent + -sendIMIPReplyForEvent:eventto:recipient]): new method, derived from + sendResponseToOrganizer but more generic. + ([SOGoCalendarComponent -sendResponseToOrganizer]): make use of + the new method mentionne above. + +2008-07-09 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolders.m ([SOGoAppointmentFolders -davCreateCalendarCollection:newNameinContext:createContext]): + new method that execute a "MKCALENDAR" request. + + * SoObjects/SOGo/SOGoObject.m (SOGoSelectorForPropertyGetter): new + function that returns the selector for the getter method for the + specified property. + (SOGoSelectorForPropertySetter): same as above for the setter + method. + + * SoObjects/SOGo/WORequest+SOGo.m ([WORequest + -davPatchedPropertiesWithTopTag:topTag]): new category method to + help with parsing properties modified or removed from PROPPATCH + methods and alike. + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject + -PUTAction:_ctx]): increment the version number only if the record + is not new. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -davCalendarFreeBusySet]): new method that + returns the HREF to the calendars involved in the user's freebusy. + ([SOGoAppointmentFolder + -setDavCalendarFreeBusySet:newFreeBusySet]): new method that + PRETENDS to modify the list of calendars mentionned above. + ([SOGoAppointmentFolder + -caldavEventRequest:eventwithContent:iCalStringfrom:originatorto:recipients]): + add support for the "CANCEL" method. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -postCalDAVEventCancelTo:recipients]): new + method that implements support for the CalDAV "CANCEL" method for + POSTs. + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject + -PUTAction:_ctx]): the version passed to + saveContentString:baseVersion: is the current value of "version". + If the operation is succesful, the version is incremented from + here since no refresh is done from GCS. The returned etag has thus + now the correct value. + +2008-07-09 Francis Lachapelle + + * UI/MailerUI/UIxMailMainFrame.m ([WOActionResults + composeAction]): added support to specify an address book and + one more many contact IDs. + +2008-07-08 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -caldavEventRequest:eventwithContent:iCalStringfrom:originatorto:recipients]): + simplified method since REPLY and REQUEST posts are very similar. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -postCalDAVEventReplyTo:recipients]): new + method that handle CalDAV REPLY posts by updating the event in the + table of the SOGo users and send the reply by email as well. + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent + -sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]): + take the current user as originator rather than the object's owner. + +2008-07-07 Francis Lachapelle + + * UI/Contacts/UIxContactFoldersView.m ([WOActionResults + allContactSearchAction]): new method to search contacts among + all address books. + +2008-07-04 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + -POSTAction:localContext]): take the content type as well as the + request and pass them as parameter to the new method below. + ([SOGoObject + -davPOSTRequest:requestwithContentType:cTypeinContext:localContext]): + new method designed to handle POST requests on DAV objects. + +2008-06-30 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -caldavEventRequest:eventfrom:originatorto:recipients]): handle + caldav replies. + ([SOGoAppointmentFolder -lookupComponentByUID:uid]): new method + that returns an event search by uid. + + * SoObjects/Appointments/SOGoUserFolder+Appointments.m ([SOGoUserFolder -davCalendarHomeSet]) + ([SOGoUserFolder -davCalendarScheduleInboxURL]) + ([SOGoUserFolder -davCalendarScheduleOutboxURL]) + ([SOGoUserFolder -davDropboxHomeURL]) + ([SOGoUserFolder -davNotificationsURL]): new methods for + supporting the caldav-schedule draft extension to CalDAV. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -davComplianceClassesInContext:]): append + "calendar-schedule" to the list. + ([SOGoAppointmentFolder -POSTAction:localContext]): new method to + handle POST CalDAV requests. + ([SOGoAppointmentFolder -davCollectionTag]): new method. + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder + -lookupName:objectNameinContext:lookupContextacquire:acquire]): + use lookupContactentryWithUIDorEmail to make sure we use the ID + field specified in the user defaults to match the username, and + that the users can be found using their email. + +2008-06-27 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject + -contentAsString]): add the ending interval to "today" instead of + to the start date. + ([SOGoFreeBusyObject + -contentAsStringWithMethod:methodfrom:_startDateto:_endDate]): new + method that accepts a method parameter to specify in the returned + iCalendar object. + +2008-06-23 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -labelForKey:key]): + enhanced method to request the user language, his/her browser + languages and the system language as fallback. + + * UI/Contacts/UIxContactsListViewContainer.m + ([-currentContactFolderName]): no longer interprets the name of + the personal folder, since the default name is now localized at + creation time. + +2008-06-20 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalendarProperties.m ([UIxCalendarProperties -calendarSyncTag]) + ([UIxCalendarProperties -setCalendarSyncTag:newTag]): new + accessors to retrieve and set the calendar tags from the template. + + * SoObjects/Appointments/SOGoAppointmentFolder.m ([SOGoAppointmentFolder -syncTag]) + ([SOGoAppointmentFolder -setSyncTag:newSyncTag]): new accessors + that retrieves and set the calendar tags. + + * UI/Contacts/UIxContactEditor.m ([UIxContactEditor + -canCreateOrModify]): new overriden method that checks whether the + current clientObject is an instance of SOGoContactLDIFEntry before + returning the super method. This is to avoid the case where the + "save" button would appear because the user is listed as a super + user, which owns everything. + +2008-06-19 Wolfgang Sourdeau + + * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage + -readFreeBusyAction]): accelerated the process of rendering free + busy information by using ptr** instead of NSArray. + + * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject + +initialize]): initialize the default interval based on the new + "SOGoFreeBusyDefaultInterval" user default array. + ([SOGoFreeBusyObject + -fetchFreeBusyInfosFrom:startDateto:endDate]): fetch the events + from all the owner calendars. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFields:_fieldsfrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filters]): + add processed recurrent events to the list of records. + ([SOGoAppointmentFolder + -fetchFreeBusyInfosFrom:_startDateto:_endDate]): request the + "c_cycleinfo" field in order for the recurrent events to be taken + into account. + +2008-06-13 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([-fetchContentObjectNames]): removed useless method. + ([-fetchAllSOGoAppointments]): removed useless method. + ([SOGoAppointmentFolder + -fetchCoreInfosFrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filters]): + retrieve the fields required for object instantiation and cache + the resulting records. + ([SOGoAppointmentFolder + -bareFetchFields:fieldsfrom:startDateto:endDatetitle:titlecomponent:componentadditionalFilters:filters]): + new method based on the non-bare part but simpler and without the + handling of cyclic records. + ([SOGoAppointmentFolder -davCalendarQuery:queryContext]) + ([SOGoAppointmentFolder -davCalendarMultiget:queryContext]): + optimized those methods by replacing often-used NSArray instances + with arrays of ptr** and by removing utility submethods when + useful. + + * SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry + -vCard]): use the new "content" ivar. + + * SoObjects/Contacts/SOGoContactGCSFolder.m + ([-deduceObjectForName:inContext:]): removed method since the + object type is now deduced in the parent class. + ([SOGoContactGCSFolder -objectClassForResourceNamed:name]): new + overriden method. + + * SoObjects/SOGo/SOGoGCSFolder.m + ([-fetchContentStringsAndNamesOfAllObjects]): removed useless method. + ([SOGoGCSFolder + -lookupName:keyinContext:localContextacquire:acquire]): added new + overriden method, to fetch all the required metadata and content + for basic handling of SOGoContentObjects. + ([SOGoGCSFolder -fetchContentObjectNames]): prefetch and cache all + the metadata and content of children objects since this method is + used by the PROPFIND operation, which will likely require children + instantiation. + ([SOGoGCSFolder -objectClassForComponentName:componentName]): new + mandatory method for subclasses. + ([SOGoGCSFolder -objectClassForContent:content]): new mandator + method for subclasses. + ([SOGoGCSFolder + -lookupName:keyinContext:localContextacquire:acquire]): fetch and + cache the requested child object record. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + -ownerInContext:localContext]): set a new ivar: activeUserIsOwner + to reduce method calls. + + * Main/SOGo.m ([SOGo -dispatchRequest:_request]): we now report + the time taken by the request, if the "SOGoDebugRequests" user + default is set. + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject + +objectWithRecord:objectRecordinContainer:newContainer]): new + constructor that instantiate an object based on the data found in + the corresponding database record. + ([SOGoContentObject -setOCSPath:newOCSPath]): removed this method and + other OCS related ones, since we no longer fetch the record data + from here. Indeed, the object is now built from within its + container, so that caches can be created and queries avoided. + + * SoObjects/SOGo/NSArray+Utilities.m ([NSArray + -asPointersOfObjects]): new method that transforms an NSArray into + an array of ptr**; + +2008-06-02 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartICalViewer.m + ([UIxMailPartICalViewer -canOriginalEventBeUpdated]): new template + accessor that return whether the use status has changed in the + original reply and if its sequence number concurs. + + * UI/MailPartViewers/UIxMailPartICalActions.m + ([UIxMailPartICalActions -updateUserStatusAction]): we accept the + modification if the sequence number from the reply is equal or + SUPERIOR (for Lightning bugs), rather than inferior, where the + reply is obsolete anyway. + +2008-05-31 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder + +initialize]): new method where we read the three new defaults + variables "SOGoIMAPAclStyle", "SOGoIMAPAclUsernamesAreQuoted", + "SOGoIMAPAclConformsToIMAPExt". + ([SOGoMailFolder +imapAclStyle]): new method that returns the rfc + number to which the imap server conforms to regarding the acl. + ([SOGoMailFolder -aclsForUser:uid]): added right 'c' and 'd' from + rfc2086. + ([SOGoMailFolder -setRoles:rolesforUser:uid]): convert SOGo + permissions to the acl rights conforming to the RFC configured + with SOGoIMAPAclStyle. + ([SOGoMailFolder -aclUsers]): unquote usernames if + "SOGoIMAPAclUsernamesAreQuoted" is set. Remove usernames listed as + special usernames in + http://www.tools.ietf.org/wg/imapext/draft-ietf-imapext-acl/ if + "SOGoIMAPAclConformsToIMAPExt" is set. + + * UI/MailerUI/UIxMailUserRightsEditor.m ([UIxMailUserRightsEditor conformsToRFC4314]): new template getter. + +2008-05-22 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -davCollectionQuery:queryContext]): fixed the owner url returned + in the list so that it matches what the regular davOwner method + returns. + + * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions + -renameFolderAction]): select the INBOX folder before renaming the + target folder. + + * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -loginSuffix]): new + method that returns the login suffix configured in the user + defaults. + ([SOGoRootPage -hasLoginSuffix]): returns whether a login suffix + has been configured in the user defaults. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -mailAccounts]): request + the user login to the imap server from the LDAP user manager. + + * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager + -getImapLoginForUID:uid]): new method that returns the user + identifier to use when login to the imap server, in case it's not + the ldap uid. This is configurable through the boolean user + default "SOGoForceIMAPLoginWithEmail". + + * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject + -sendMail]): the email passed as parameter to sendmail is now the + bare user email. + +2008-05-21 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions + -deleteFolderAction]): select the INBOX folder before removing the + target folder, so that Courier does not complain about the current + mailbox being in use. + +2008-05-16 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + -subscribe:reallyDoinTheNameOf:delegatedUserfromMailInvitation:isMailInvitationinContext:localContext]): + published method. + ([-folderReference]): no longer distingish between the user owned + and the subscribed folders. + + * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -compare:otherFolder]): + no longer use the "_" in the folder's nameInContainer. + + * UI/Common/UIxFolderActions.m ([UIxFolderActions -subscribeAction]) + ([UIxFolderActions -unsubscribeAction]): use the client object's + method for un-/subscribing. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + -pathArrayToSOGoObject]): removed useless method. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -davCalendarQuery:queryContext]): added + partial support for the "text-match" caldav directive. + +2008-05-15 Wolfgang Sourdeau + + * UI/Contacts/UIxContactFoldersView.m ([-newAction]): removed + useless method. + +2008-05-05 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + -davAclQuery:queryContext]): parse the names only of element nodes. + + * UI/Common/UIxFolderActions.m ([UIxFolderActions -activateFolderAction]) + ([UIxFolderActions -deactivateFolderAction]): reversed the logic + and remove or add the folder name from/into the 'InactiveFolders' + settings key. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -create]): no longer write the folder name + in the 'ActiveFolders' settings key. + ([-isActive]): returns whether the folder is NOT listed in the + 'InactiveFolders' settings key. + +2008-05-02 Wolfgang Sourdeau + + * Main/SOGo.m ([SOGo -davURL], [SOGo -soURL]): copied methods from + SOGoObject. + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -davDisplayName]): new overriden method to provide a display name + to the users principal. + + * SoObjects/SOGo/SOGoPermissions.[hm]: removed the "Save Acls" + permission since its purposes matches SOPE's "Change Permissions". + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + +webdavAclManager]): new overriden method. + + * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder + +webdavAclManager]): new overriden method. + + * UI/MailPartViewers/UIxMailPartTextViewer.m (convertChars): do + not cast pointers to unsigned int to avoid problems with big + endian archs. + + * SoObjects/Contacts/SOGoContactLDAPFolder.m ([-davNamespaces]): + removed method. + + * SoObjects/Contacts/SOGoContactGCSFolder.m ([-davNamespaces]): + removed method. + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + +webdavAclManager]): new overriden method. + + * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder +webdavAclManager]): + new overriden method. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject +webdavAclManager]): new overriden method. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder +webdavAclManager]): new overriden method. + ([-davNamespaces]): removed method. + ([-lookupGroupFolderForUIDs:_uidsinContext:]) + ([-lookupGroupCalendarFolderForUIDs:_uidsinContext:_ctx]): + disabled methods. + + * SoObjects/SOGo/SOGoWebDAVAclManager.[hm]: new class module that + implements the rendering of DAV acl trees as well as their mapping + from SOGo permissions. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject +initialize]): libSOGo + is now a framework, so we can simplify the loading of the DAVReportMap. + ([-lookupGroupsFolder]): disabled method. + ([SOGoObject -davOwner], [SOGoObject -davAclRestrictions]) + ([SOGoObject -davPrincipalCollectionSet]) + ([SOGoObject -davCurrentUserPrivilegeSet]) + ([SOGoObject -davSupportedPrivilegeSet], [SOGoObject -davAcl]) + ([SOGoObject -davPrincipalMatch:localContext]) + ([SOGoObject -davSupportedReportSet]): (re-)implemented dav + methods with our new dav rendering paradigm. + ([-davNamespaces]): removed method. + ([SOGoObject -domNode:nodegetChildNodesByType:type]): new helper + method to help subclass with parsing dav requests, especially wrt + REPORT ones. + ([SOGoObject +webdavAclManager]): new overridable method that + returns a properly configured DAV acl manager (see above). + + * SoObjects/Appointments/SOGoUserFolder+Appointments.[hm]: new + category module that implements DAV methods required by CalDAV. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent -applicationPath]): + disabled all mentions of "SOGoGroupFolder*". + + * SoObjects/SOGo/SOGoDAVRendererTypes.[hm]: removed subclass + module, superseded by the new method mentionned below. + + * SoObjects/SOGo/SOGoWebDAVValue.m ([SOGoWebDAVValue + -stringForTag:_keyrawName:setTaginContext:contextprefixes:prefixes]): + a simple wrapper that returns an uninterpreted NSString to SOPE. + + * SoObjects/SOGo/NSArray+DAV.[hm], + * SoObjects/SOGo/NSDictionary+DAV.[hm], + * SoObjects/SOGo/NSObject+DAV.[hm], + * SoObjects/SOGo/NSString+DAV.[hm], + * SoObjects/SOGo/NSURL+DAV.[hm]: new class category modules that + handle the correct generation of DAV entries, with namespace + accounting. Those were implemented to enable the use of a simple + SoWebDAVValue as the root of the resulting string, thereby + avoiding the xml escaping done by SOPE when returning a real NSString. + +2008-04-25 Wolfgang Sourdeau + + * SoObjects/SOGo/LDAPSource.m ([LDAPSource -fetchContactsMatching:match]) + ([LDAPSource -lookupContactEntryWithUIDorEmail:uid]): take all the + mail fields into account when doing a search. + +2008-04-23 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject +initialize]): the + module is now a framework and we now load the new DAVReportMap + description file. + ([-davOwner]): the principal URL is now based on the DAV + application URL. + ([SOGoObject + -lookupName:lookupNameinContext:localContextacquire:acquire]): we + now lookup report methods from here (code from SOGoFolder). The + method has changed to refer to the new DAVReportMAP description + file in order to resolve the lookups on self. + ([SOGoObject -davSupportedReportSet]): implemented the new + "supported-report-set" dav method, based on the new mechanism + described above. + + * SoObjects/SOGo/SOGoFolder.m: REPORT lookups are now done + directly from SOGoObject. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser + -initWithLogin:newLoginroles:newRoles]): we make sure realUID is + not an empty string. + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -davResourceType]): we declare self as a "principal". + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject + -davContentLength]): the content length should is now based on the + UTF-8 encoding. + +2008-04-22 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalendarSelector.m ([UIxCalendarSelector + -contrastingTextColor]): new method (code taken from Lightning) + that returns a foreground color easily readible based on the + brightness of the background color. + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + -setDavDisplayName:newName]): deny the renaming of the folder if + not owner. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + -davSetProperties:setPropsremovePropertiesNamed:removedPropsinContext:localContext]): + certain properties should be authorized when not owner. + +2008-04-21 Wolfgang Sourdeau + + * UI/Scheduler/UIxColorPicker.[hm]: new class module that + implements a javascript-based color picker. + + * UI/Scheduler/UIxCalendarProperties.[hm]: new class module that + implements the interface for renaming and recoloring the + calendars. + +2008-04-15 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartHTMLViewer.m + ([_UIxHTMLMailContentHandler -characters:_charslength:_len]) + ([_UIxHTMLMailContentHandler -comment:_charslength:_len]): don't + cast the unichar data to char, to avoid issues with endianness + which prevents the CSS from being parsed properly. + + * UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -isMailReply]): new + method that returns the JS values "true" or "false" as strings is + the mail has a non-null count of recipients. + +2008-04-14 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m ([SOGoAppointmentFolder -davCalendarQuery:queryContext]) + ([SOGoAppointmentFolder -davCalendarMultiget:queryContext]): + deduce the cname of objects even if we are using hostless urls. + +2008-03-31 Wolfgang Sourdeau + + * UI/SOGoUI/SOGoACLAdvisory.m ([SOGoACLAdvisory -resourceName]): + use the resource display name instead of its "nameInContainer". + +2008-03-28 Wolfgang Sourdeau + + * SoObjects/Contacts/SOGoContactLDIFEntry.m ([SOGoContactLDIFEntry + -isFolderish]): new overriden method. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -appendObject:objectproperties:propertieswithBaseURL:baseURLtoComplexResponse:r]): + check whether the current user has access to the objects returned + before including their properties. + +2008-03-27 Wolfgang Sourdeau + + * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults + -primaryFetchProfile]): we unescape the fetched value before + constructing the NSDictionary. + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -setComponent:newComponent]): the weeks start on sunday in + OpenStep and are indexed from 0. + +2008-03-25 Wolfgang Sourdeau + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -takeValuesFromRequest:_rqinContext:_ctx]): treat the regular + monthly recurrences as all others. + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + -davSetProperties:setPropsremovePropertiesNamed:removedPropsinContext:localContext]): + returns an exception if the property to modify is not + "davDisplayName" and if the current user has not the owner role + over the current collection. + +2008-03-25 Francis Lachapelle + + * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView + -verticalDragHandleStyle]): CSS style wrt to position of drag + handle saved by current user. + ([UIxCalMainView -horizontalDragHandleStyle]): idem. + ([UIxCalMainView -eventsListViewStyle]): idem. + + * UI/Contacts/UIxContactsListViewContainer.m + ([UIxContactsListViewContainer -verticalDragHandleStyle]): CSS + style wrt to position of drag handle saved by current user. + ([UIxContactsListViewContainer -horizontalDragHandleStyle]): idem. + ([UIxContactsListViewContainer -contactsListContentStyle]): idem. + + * UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame + -verticalDragHandleStyle]): CSS style wrt to position of drag + handle saved by current user. + ([UIxMailMainFrame -horizontalDragHandleStyle]): idem. + ([UIxMailMainFrame -mailboxContentStyle]): idem. + +2008-03-18 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -davCalendarMultiget:queryContext]): + implemented new CalDAV method. + ([SOGoAppointmentFolder -davCalendarQuery:queryContext]): + refactored method to return exactly the properties requested in + the query and to share code with the new method above. + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -davCalendarData]): added method for + better CalDAV compliance. + +2008-03-17 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + -davAclQuery:queryContext]): declare the "text/xml" mime type only + when the content is not empty. Otherwise, returns no mime type at + all and set the status code to 204. + +2008-03-10 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalMonthViewOld.m ([UIxCalMonthViewOld + -endDate]): removed useless method. + + * SoObjects/SOGo/NSCalendarDate+SOGo.m + ([-dayOfWeeK:_dayoffsetFromSunday:_offset]): removed useless + method. + ([-sundayOfWeek]): removed useless method. + +2008-03-07 Wolfgang Sourdeau + + * OGoContentStore/OCSContactFieldExtractor.m + ([OCSContactFieldExtractor -extractQuickFieldsFromVList:vList]): + new method to handle extraction of quick information from the + VLIST components. I.e.: the display name of the card. + + * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder + -isValidContentName:name]): moved method from + SOGoAppointmentFolder's isValidAppointmentName. + + * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder -objectClassForContent:content]) + ([SOGoContactGCSFolder -deduceObjectForName:inContext:]) + ([SOGoContactGCSFolder -requestNamedIsHandledLater:name]) + ([SOGoContactGCSFolder -lookupName:inContext:acquire:]): those + methods were modified to match the ones in SOGoAppointmentFolder, + in order to manage both vcard and vlist components. + + * SoObjects/Contacts/SOGoContactGCSList.[hm]: new class module + that implements the list counterpart to VCARD: VLIST. + + * UI/Contacts/UIxContactEditor.m ([UIxContactEditor -saveURL]): + new accessor that returns the url + "saveAsContact". + ([UIxContactEditor + -shouldTakeValuesFromRequest:requestinContext:context]): changed + method to match the one from the event and todo editor module. + ([UIxContactEditor -editActionName]): changed to "editAsContact". + ([UIxContactEditor -newAction]): changed method to match the one + from the event and todo editor module. + + * UI/Contacts/UIxListView.m: new view module for the VLIST format + components. + + * UI/Contacts/UIxListEditor.m: new edition module for the VLIST + format components. + + * SoObjects/Contacts/SOGoContactGCSList.m: new controller module + for the VLIST format. + +2008-03-04 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -isFolderish]): new + parent method, meant to be overriden. + ([SOGoObject -davIsCollection]): moved method from SOGoFolder up + to this parent class. + +2008-02-25 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + -davSubscribe:queryContext]): implemented subscribing users other + that the current one, if the user doing the operation is a superuser. + ([SOGoGCSFolder -davUnsubscribe:queryContext]): same as above for + unsubscription. + +2008-02-22 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -davUserQuery:queryContext]): new method for the "user-query" + inverse DAV method. + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + -aclUsersForObjectAtPath:objectPathArray]): return unique uids. + + * SoObjects/SOGo/SOGoFolder.m ([-davNamespaces]): removed method. + + * SoObjects/SOGo/SOGoDAVRendererTypes.h (SoWebDAVValue): added + SOGoDAVDictionary webdav value class. + + * SoObjects/SOGo/NSArray+Utilities.m ([NSArray -uniqueObjects]): + new method that returns unique occurences of the objects. + + * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder + -davNamespaces]): same as below. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -davNamespaces]): take the parents + namespaces into account. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -addUserInAcls:uid]): + new method. + ([SOGoObject -removeUserFromAcls:uid]): new methods (see below). + ([SOGoObject -davNamespaces]): declare the + "urn:inverse:params:xml:ns:inverse-dav" namespace. + ([SOGoObject -davRecordForUser:user]) + ([SOGoObject -davAclQuery:queryContext]): new methods to answer to + the "user-list", "roles", "set-roles", "add-user", "remove-user" + inverse DAV methods. + + * UI/Common/UIxObjectActions.m ([UIxObjectActions -addUserInAclsAction]) + ([UIxObjectActions -removeUserFromAclsAction]): moved the core of + those methods into SOGoObject and translate its result into an + appropriate HTTP status. + +2008-02-20 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder -davInverseACL]): + first implementation of a DAV interface to SOGo roles. Returns the + result in JSON. + +2008-02-14 Wolfgang Sourdeau + + * GNUmakefile: migrated to GNUstep Make 2. + +2008-02-12 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject + -iCalStringForFreeBusyInfos:_infosfrom:_startDateto:_endDate]): we + no longer invoke [container login], since this method has been + removed. Instead we invoke ownerInContext:. + + * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder + -fetchContentObjectNames]): new model method for all subclasses. + This will be removed in the future since toOneRelationshipKeys + must be sufficient. + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + -defaultFilenameExtension]): removed useless method. + ([-toOneRelationshipKeys]): moved method into SOGoFolder.m. + +2008-02-08 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartICalViewer.m + ([UIxMailPartICalViewer -currentUserAttendee]): new method that + returns the current user as an attendee representation in the + displayed event, if found. + + * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount + -_urlHostString]): replace "@" with %40 AFTER invoking + stringByEscapingURL. + + * SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject + -isBodyPartKey:key]): hacked a little bit to test for the length + of the key trimmed from its bordering digits. So if the key + contains only digits, we consider it to be a body part key. There + is room for improvement but we can consider this will be accurate + in 99.99% of the cases. Also, removed the context parameter which + was useless. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + -davComplianceClassesInContext:localContext]): new method, + declaring "access-control" in the compliance classes. + +2008-02-07 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount + -imap4URLString]): compose the mail hostname part of the url by + escaping the username. This is part of the fix below. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -mailAccounts]): if the + loginname for the default mail account contains an "@", it should + be url-escaped to avoid confusing NSURL. + ([SOGoUser -accountWithName:accountName]): new method that wanders + the accounts list and returns the one that matches the name passed + as parameter, if found. + + * SoObjects/SOGo/SOGoUserFolder.m ([-login]): removed useless + method. + ([SOGoUserFolder -ownerInContext:_ctx]): compute the owner name + from a SOGoUser instance initialized with the nameInContainer as + initial login name. This way, all the objects belonging to the + corresponding user will be accessible with all the fields + mentionned in the "bindFields" LDAP settings value. + ([SOGoUserFolder -privateCalendars:keyinContext:localContext]) + ([SOGoUserFolder -privateContacts:_keyinContext:_ctx]): use -[self + ownerInContext:] to determine the OCS path. + + * SoObjects/Mailer/SOGoSharedMailAccount.[hm]: removed useless + module. + + * SoObjects/Mailer/SOGoSharedInboxFolder.[hm]: removed useless + module. + + * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences + -setSignature:newSignature]): invoke -[SOGoUser saveMailAccounts] + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -defaultIdentity]): method + moved from UIxPreferences.m. + ([SOGoUser -saveMailAccounts]): new methods that save the + "MailAccounts" preference in the user settings. + + * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager + +initialize]): issue a warning whenever "SOGoDefaultMailDomain" + is not configured in the user defaults, setting it to "localhost" + by default. + ([LDAPUserManager +defaultMailDomainIsConfigured]): new method + that returns whether "SOGoDefaultMailDomain" is configured. + +2008-02-06 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder -ocsFolder]): + send an email only when not in a dav request. + ([SOGoGCSFolder -delete]): same as above. + + * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount + -supportsQuotas]): test quota support by querying the server + capability. + +2008-02-05 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartICalActions.m + ([UIxMailPartICalActions -acceptAction]) + ([UIxMailPartICalActions -declineAction]): define the organizer of + the event as one of the reply-to or from addresses whenever the + organizer is not specified in those Outlook invitations. + +2008-02-01 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame + -quotaSupport]): new json string that lists the quota support + among the user's mail accounts. + + * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount + -supportsQuotas]): new method that returns whether the current + account server has support for quotas. + +2008-01-29 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + -davSetProperties:setPropsremovePropertiesNamed:removedPropsinContext:localContext]): + new method that takes the displayname into account. + + * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder + -davCreateCollection:pathInfoinContext:localContext]): new method + that acts as a proxy to newFolderWithName:andNameInContainer:. + +2008-01-28 Wolfgang Sourdeau + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -takeValuesFromRequest:_rqinContext:_ctx]): make use of the << + operator to handle the day masks in custom rules. + +2008-01-24 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser + +userWithLogin:newLoginroles:newRoles]): test if the user is well + initialized before registering it with the SOGo cache. + ([SOGoUser -initWithLogin:newLoginroles:newRoles]): returns a user + only if the realUID has been found, otherwise we dealloc self and + return nil. + + * SoObjects/Appointments/SOGoAppointmentFolder.m: if c_cycleinfo + is an NSNull instance, we consider it to be empty and return + automatically with an error message in the log. + + * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor + -extractQuickFieldsFromTodo:_task]): handle recurrence info in + tasks. + + * UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer + -pathToAttachment]): in the case where the client object is not a + mail body part (when the message IS the attachment), we append 0 + to generate the url, instead of the filename. + +2008-01-22 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatetitle:titlecomponent:_component]): + change the algorithm a little bit to compare the roles of the + current users to see if he is an "owner" instead of solely + checking its login name. This enables the users listed as + "SuperUsers" to be considered as owners and see everything as + expected. + +2008-01-18 Wolfgang Sourdeau + + * SoObjects/Contacts/SOGoFolder+CardDAV.m ([SOGoFolder + -davAddressbookQuery:queryContext]): when empty values are fed to + SOGo, their dictionary should be explicitly set to nil. + +2008-01-16 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoCache.m ([SOGoCache + -registerObject:objectwithName:nameinContainer:container]): + register the object and its parents too. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser + +userWithLogin:newLoginroles:newRoles]): try to retrieve the + specified user from the SOGoCache. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + -lookupName:lookupNameinContext:localContextacquire:acquire]): try + to retrieve the object specified from the cache and returns it if + it exists. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -lookupName:inContext:acquire:]): cache + the result in the SOGoCache. + + * Main/SOGo.m ([SOGo -dispatchRequest:_request]): initialize and + kill the shared cache before and after the connection processing. + + * SoObjects/SOGo/SOGoCache.[hm]: new cache module implementing a + per-connection cache mechanism. + +2008-01-16 Ludovic Marcotte + + * Minor adjustments / bug fixes to previous commit. + +2008-01-14 Ludovic Marcotte + + * Added files related to the custom recurrence + editor of the SOGo Web interface. The CSS + needs to be done correctly. + + * Fixed a bug in the daily recurrence generator. + We now consider the byDayMask, if any. + + * Moved the repeat/reminder code to the + UIxComponentEditor class / template. + + * Added a few JavaScript methods to HTMLElement.js + +2008-01-08 Francis Lachapelle + + * UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions + -composeAction]): the mailto form parameter can now be a + comma-separated list of email addresses. + +2007-12-21 Ludovic Marcotte + + * UI/Contacts/UIxContactView.m + Modified -secondaryEmail so that we always get + the "last" email address in case no preferred + one was specified in the vCard. Also fixed + a memory leak in this method. + +2007-12-20 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject + -aclsForUser:uid]): removed useless ACL checks on the current + object to reduce DB usage. + +2007-12-17 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -attachmentNames]): + initialize "attachmentNames" if it was NOT initialized... I think + this was a typo. + + * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject + -fetchMailForForwarding:sourceMail]): append the signature to + mails forwarded as attachment. + + * UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer + -clientPart]): new method that returns the corresponding + SOGoMailPart instance. + ([UIxMailPartViewer -pathToAttachment]): simplified method, ensure + the filename is present. If the part has none, create one with the + "Untitled-" prefix. Add an extension if none is found. + + * UI/MailPartViewers/UIxMailPartImageViewer.m + ([UIxMailPartImageViewer -pathToImage]): removed method since it + implementents exactly the same functionality as + [UIxMailPartViewer -pathToAttachment]. + + * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart + -filename]): new method that returns the filename to the current + part by taking the different mime implementations into account. + [SOGoMailBodyPart -isBodyPartKey:inContext:]: commented out method + because we need to handle the part recognition in a different way, + by using the prefix "part" for example. One day we will do that. + + * UI/Scheduler/NSArray+Scheduler.m ([NSMutableArray + -reverseArray]): new category method. + +2007-12-17 Francis Lachapelle + + * UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame + -composeAction]): fixed URL when no recipient is specified. + +2007-12-14 Ludovic Marcotte + + * SoObjects/Appointments/SOGoCalendarComponent.m + We set headers in lowercase so that they get properly + encoded by SOPE. + + * SoObjects/Mailer/SOGoDraftObject.m + Minor cleanups. + +2007-12-13 Francis Lachapelle + + * UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame -saveFoldersStateAction]) + ([UIxMailMainFrame -getFoldersStateAction]): new methods to get + and set the folders state of the user's web view. + +2007-12-13 Wolfgang Sourdeau + + * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -crashAction]): new + action methods that generates a segmentation faults. + ([SOGoRootPage -exceptionAction]): new method that returns an + exception object. + ([SOGoRootPage -raisedExceptionAction]): new method that raises an + exception without returning it. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent -responseWithStatus:status]) + ([UIxComponent -responseWithStatus:statusandString:contentString]) + ([UIxComponent -responseWithStatus:statusandJSONRepresentation:contentObject]) + ([UIxComponent -responseWith204]): new utility methods. + + * UI/Common/WODirectAction+SOGo.m ([WODirectAction + -responseWithStatus:statusandString:contentString]) + ([WODirectAction + -responseWithStatus:statusandJSONRepresentation:contentObject]): + new utility methods. + + * SoObjects/SOGo/NSScanner+BSJSONAdditions.m ([NSScanner + -scanJSONStringDelimiterString]): new category module taken from + BSJSONAdditions 1.3. + + * SoObjects/SOGo/NSDictionary+BSJSONAdditions.[hm]: new category + module taken from BSJSONAdditions 1.3. + http://blakeseely.com/downloads.html + +2007-12-12 Wolfgang Sourdeau + + * SoObjects/SOGo/NSString+Utilities.m ([NSString + -stringByDetectingURLs]): we now go back until the real start of + the found url. + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -fetchAttachmentIds]): new method that wanders through the mail + structure to collect the attachment content ids and to associate + them with their url. + + * UI/MailPartViewers/UIxMailPartHTMLViewer.m + ([_UIxHTMLMailContentHandler + -startElement:_localNamenamespace:_nsrawName:_rawNameattributes:_attributes]): + the content-ids are now enclosed between "<>" before retrieval + from the attachment dictionary. + ([UIxMailPartHTMLViewer -cssContent]) + ([UIxMailPartHTMLViewer -flatContentAsString]): the content-ids + are now fetch from the clientobject (an instance of + SOGoMailObject) with the new "fetchAttachmentIds" method. + +2007-12-12 Francis Lachapelle + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -eventsListAction]): added the state of the calendar's owner with + respect to the current event. + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -_loadAttendees]): added the retrieval of attendees state on + current event. + +2007-12-12 Ludovic Marcotte + + * UI/MailPartViewers/UIxMailRenderingContext.{h,m} + Removed template caching which added very little + and created re-entrant issues. + + * UI/MailPartViewers/UIxMailPartHTMLViewer.m + Added a hack (and stated so in the source file) + to avoid what seems to be a bug in libxml. + +2007-12-12 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject + -davCreationDate]) + ([SOGoContentObject -davLastModified]) + ([SOGoContentObject -davContentLength]): implemented dav methods. + +2007-12-10 Francis Lachapelle + + * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart + -GETAction:]): when asAttachment is set to true, the header + "content-disposition" is set to "attachment" so browsers like IE + and Safari properly asks the user to save the file. + +2007-12-10 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartHTMLViewer.m + ([UIxMailPartHTMLViewer -flatContentAsString]): when in + UIxMailPartAlternative, scan the filenames of potential cid at the + same level as our parent. + +2007-12-07 Wolfgang Sourdeau + + * Main/SOGo.m ([SOGo -run]): the table creation script now have a + @{tableName} substitution variable to be substitued with the real + table name obtained from the configuration variables. + +2007-12-07 Ludovic Marcotte + + * UI/MailPartViewers/UIxMailRenderingContext.m + We treat multipart/appledouble like multipart/mixed + for now. That allows the user to save both parts. + + * Corrected typos in Localizable.string files. + +2007-12-06 Wolfgang Sourdeau + + * UI/Common/UIxAclEditor.m ([-currentUserIsOwner]): replaced + method with -canModifyAcls that invokes the security manager + instead for the permission "SaveAcls" on the client object. + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -contentAsString]): securize the returned content. + ([SOGoCalendarComponent -aclsForUser:uid]): check whether the user + is an organizer or a participant as well. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -changeParticipationStatus:_status]): the + user we should change the status of is not the active user but the + owner of the object. This is for delegation. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -fetchContentObjectNames]): fetch the + elements through the fetchFields:from:to:title:component: method + method, so that the result is already filtered depending on the + acl. + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -toolbar]): if the current user is a delegate, take the permission + "ModifyComponent" into account. Also, do not let him/her modify an + event for which he/she is the organizer. + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder -davResourceType]): declared as a carddav + addressbook collection. + + * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder + -davResourceType]): declared as a carddav addressbook collection. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -davLastModified]): + override SoObject's implementation. Otherwise a localized date is returned. + + * UI/Common/UIxPageFrame.m ([UIxPageFrame -isCalendar]) + ([UIxPageFrame -isContacts], [UIxPageFrame -isMail]): getters to + determine which module is the current one. + +2007-12-06 Francis Lachapelle + + * UI/Scheduler/NSArray+Scheduler.m ([NSArray -compareEventsTitleAscending:otherEvent]) + ([NSArray -compareEventsLocationAscending:otherEvent]) + ([NSArray -compareEventsEndDateAscending:otherEvent]) + ([NSArray -reversedArray]): new methods that sort an array of + events depending of various parameters. + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -eventsListAction]): added support for sorting events. + +2007-12-06 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -saveAction]) + ([UIxMailEditor -sendAction]): make sure that the attachments + having the same filename are correctly sequenced (ex: base.ext, + base-1.ext, base-2.ext). + + * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart + -fetchBLOB]): added support for quoted-printable decoding. Also, + we return nil if the type is not supported. + +2007-12-05 Wolfgang Sourdeau + + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -newAction]): + create task obejcts with the .ics extension. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -newAction]): create appointment objects with the .ics extension. + + * UI/Contacts/UIxContactEditor.m ([UIxContactEditor -newAction]): + create objects with the .vcf extension. + + * Main/NSException+Stacktrace.m: added missing symbols from + NSException.m and NSDebug.m (GNUstep). + + * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage + -foldersSearchAction]): make use of the new search methods in + SOGoUserFolder (see below). + + * UI/Contacts/UIxContactFoldersView.m ([-foldersSearchAction]): + moved method into ../MainUI/SOGoUserHomePage.m. + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -foldersOfType:folderTypeforUID:uid]): only return folders owned + by the specified user. + +2007-12-05 Francis Lachapelle + + * SoObjects/Mailer/SOGoDraftObject.m: the condition for replyToAll + has to be done later to avoid duplicated to and cc addresses. + +2007-12-04 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -davCalendarQuery:queryContext]): fixed a leak. + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder -davSubscribe:localContext]) + ([SOGoGCSFolder -davUnsubscribe:localContext]): subscribe an + unsubscribe from DAV-based accesses. We could be compatible with + Microsoft's extensions but we have no need for a "subcription id", + so we implement our own. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + -POSTAction:localContext]): new method to intercept DAV POSTs, + which we now use to implement certain custom commands such as + "subscribe" and "unsubscribe". + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -davNamespaces]): declare the + "urn:inverse:params:xml:ns:inverse-dav" xml ns. + ([SOGoUserFolder -foldersOfType:folderTypeforUID:uid]): new method + designed to replace the UIxContactFoldersView.m mechanism for + displaying folders to subcribe to, as a common code base for both + Web and DAV-based subscriptions. + ([SOGoUserFolder -foldersOfType:typematchingUID:uid]): same as + above. + ([SOGoUserFolder -davCollectionQuery:queryContext]): new method + that implement a custom DAV-based protocol query for querying + folder based on specified attributes. + +2007-12-03 Ludovic Marcotte + + * Main/NSException+Stacktrace.{h,m} - new files + to handle automatic stack trace generation + upon an uncaught exception. + + * Updated the templates and Localizable.string files + to fix typos and add new strings. + + * SoObjects/Mailer/SOGoMailBodyPart.m + Fixed attachment retreival when the first character + is a digit. + + * SoObjects/SOGo/SOGoGCSFolder.m + Fixed the sending of emails when folders are created/removed. + Notifications are sent if the defaults SOGoFoldersSendEMailNotifications + is set to YES. + + * UI/Common/UIxUserRightsEditor.m + * UI/Templates/SOGoACLEnglishModificationAdvisory.wox + * UI/Templates/SOGoACLFrenchModificationAdvisory.wox + * UI/Templates/SOGoACLGermanModificationAdvisory.wox + Added the capabilities to email notifications when ACLs have + changed on a DAV collection or an IMAP mailbox. Also added + new templates (3 .wox) to deal with this. + + * UI/WebServerResources/ContactsUI.js + UI/WebServerResources/SchedulerUI.js + Added warnings on operations w/o selection. + +2007-11-30 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder + -appendSubscribedSources]): don't include sources for which we + don't have the SOGoPerm_AccessObject permission. + + * SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate + -rfc822DateString]): we want positive timezones to be specified + with a leading "+" too. + +2007-11-29 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + +folderWithSubscriptionReference:referenceinContainer:aContainer]): + return nil if the subscribed folder has no display name (meaning + it no longer exists). + + * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder + -appendPersonalSources]): don't include sources which are no + longer existing. + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject + -ocsPathOfContainer]): return the intended value, not that of + ocsPath... + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -sendResponseToOrganizer]): send the + message only of sendEMailNotifications is set. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -subscriptionRoles]): + new method that returns the roles that qualifies for adding the + special "authorized subscribed" sogo role. + +2007-11-27 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject + -aclsForUser:uid]): copy all the roles from the container. If the + object is new, make sure the roles contain "ObjectEditor" if and + only if "ObjectCreator" is present. + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + -aclsForUser:uid]): no longer take the "ObjectReader" role into + account. + + * UI/Common/UIxFolderActions.m ([UIxFolderActions + -canAccessContentAction]): always return HTTP status 204. We want + this because we are relying on the SOPE access control manager to + grant access to this method. This requires a fine-tuned access + control in SOGo itself... + + * UI/Contacts/UIxContactsUserRightsEditor.m ([-userCanReadObjects]) + ([-setUserCanReadObjects:userCanReadObjects]): removed methods. + + * UI/MailerUI/UIxMailUserRightsEditor.m ([UIxMailUserRightsEditor + -updateRights]): no longer take the "ObjectReader" role into account. + ([-userCanReadMails], [-setUserCanReadMails:userCanReadMails]): + removed methods. + + * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject + -fetchFreeBusyInfosFrom:_startDateto:_endDate]): specify context + when looking up the Calendar folder. + +2007-11-26 Wolfgang Sourdeau + + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -todo]): same as below. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -event]): create the event if it doesn't exist. + + * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -userHasCalendarAccess]) + ([UIxPreferences -userHasMailAccess]): same as below, for + displaying preference tabs. + + * UI/Common/UIxPageFrame.m ([UIxPageFrame + -userHasCalendarAccess]): new accessor for the link banner. + ([UIxPageFrame -userHasMailAccess]): same as above. + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -toManyRelationshipKeys]): do not report the path to modules to + which the user has no access. No longer cache this information + statically, the array will be generated at each call. + ([SOGoUserFolder -lookupName:_keyinContext:_ctxacquire:_flag]): + ignore the path to modules to which the user has no access. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -canAccessModule:module]): + new method that returns whether the user has access to the + specified module. + + * SoObjects/SOGo/LDAPSource.m ([LDAPSource + -initFromUDSource:udSource]): take a new parameter named + 'ModulesContraints' that defines a set of constraints for + accessing specified named modules. This is an optout, meaning the + modules will be present unless a constraint is specified. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -roleForComponentsWithAccessClass:accessClassforUser:uid]): cache + acl to reduce method calls. + ([SOGoAppointmentFolder + -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatetitle:titlecomponent:_component]): + if the user is not the current user, we strip the useless info + from the meta data. + + * UI/Common/WODirectAction+SOGo.m ([WODirectAction + -labelForKey:key]): new category method. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -event]): same as below. + + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -todo]): request a + secured version of the component. + + * UI/MailPartViewers/UIxMailPartViewer.m + ([-fallbackStringEncoding]): removed method. + ([UIxMailPartViewer -flatContentAsString]): we no longer use [self + fallbackStringEncoding]. Instead we directly specify + NSISOLatin1StringEncoding if UTF-8 has failed. + + * UI/MailPartViewers/UIxMailPartICalViewer.m + ([-fallbackStringEncoding]): removed method. + +2007-11-25 Ludovic Marcotte + + * SoObjects/Mailer/SOGoMailForward.m + Use [sourceMail decodedSubject] instead of [sourceMail subject] + Signature fix in -signature - see the comment + for SOGoMailReply. + + * SoObjects/Mailer/SOGoMailObject.m + Improved -stringFromData: to try UTF-8 then fallback to Latin1 + + * SoObjects/Mailer/SOGoMailReply.m + Modified -messageBody to strip the signature from the reply. + Also modified -signature to add "-- \n%@" instead of the + broken ""--\r\n%@" pattern. + + * UI/MailPartViewers/UIxMailPartAlternativeViewer.m + We now favor text/calendar parts over text/html and + text/plain parts when viewing a multipart/alternative mail. + This allows us to show the email invitations coming from + Microsoft Outlook. + + * UI/MailerUI/UIxMailAccountActions.m + Signature fix in -composeAction - see the comment + for SOGoMailReply. + + * UI/MailPartViewers/UIxMailPartViewer.m + Modified -flatContentAsString to use UTF-8 as the + default fallback encoding for 8-bit content. + + * SoObjects/Mailer/SOGoDraftObject.m + Modified _fillInReplyAddresses:replyToAll:envelope: + so that if there's no recipient, we add at least + ourself to the list. + Fixed a mem leak in the same method. + +2007-11-22 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailRenderingContext.m + ([UIxMailRenderingContext -viewerForBodyInfo:_info]): same as below. + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -plainTextContentFetchKeys]): same as below. + + * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart + +bodyPartClassForMimeType:mimeTypeinContext:_ctx]): accept the + application/ics type from Google Calendar. + + * SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate + +distantFuture]): rewrote method to return an object that is + compatible with NSCalendarDate, unlike the implementation in + GNUstep. + ([NSCalendarDate +distantPast]): same as above. + +2007-11-21 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartHTMLViewer.m: fixed infinite loop + when charset is us-ascii, match it to ascii rather than none. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatetitle:titlecomponent:_component]): + added search on the c_title column too. + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -eventsListAction]): take the "search" url parameter into account. + ([UIxCalListingActions -eventsListAction]): fetch events matching + the title filter too. + + * UI/MainUI/SOGoRootPage.m ([SOGoRootPage -connectAction]): the + user infos are now posted as "application/x-www-form-urlencoded". + So we have to have like a form has been posted. + +2007-11-21 Francis Lachapelle + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -calendarList]): also returns the calendar of the current + event. This is required so the proper calender is selected when + you view an event to which you don't have write access. + + * UI/Common/UIxAclEditor.m ([UIxAclEditor -currentUserIsOwner]): + also returns true for super users. + +2007-11-21 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -lookupImap4BodyPartKey:inContext:]): return a correct body part + when "0" is requested, taking its mime-type into account. + + * UI/MailPartViewers/UIxMailRenderingContext.m + ([UIxMailRenderingContext -flatContentForPartPath:_partPath]): + return content for part "0", which would be the message body. + +2007-11-20 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartHTMLViewer.m + ([_UIxHTMLMailContentHandler + -setContentEncoding:newContentEncoding]): new method that + specifies an xml charset to return to the parser. + ([UIxMailPartHTMLViewer -flatContentAsString]): specifies the + charset to the content handler before parsing. + + * SoObjects/Appointments/SOGoAppointmentObject.m: don't take an + empty c_name as a valid response when looking up an event. Create + one in that case instead. + +2007-11-19 Wolfgang Sourdeau + + * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -signature]): + returns the signature for the default identity of the default + accouunt... + ([UIxPreferences -setSignature:newSignature]): accessor that sets + the default signature. + + * UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions + -composeAction]): append the message signature to the new draft. + + * SoObjects/Mailer/SOGoMailReply.m ([SOGoMailReply -signature]): + same as above. + + * SoObjects/Mailer/SOGoMailForward.m ([SOGoMailForward + -signature]): new method that takes the user's signature and put + it at the end of the message, if exists. + + * UI/Common/UIxPageFrame.m ([UIxPageFrame -isSuperUser]): new + accessor that forwards the call to the active user. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -signature]): returns the + user default signature. + ([SOGoUser -isSuperUser]): declares whether the user is listed + among the super users. + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -setComponent:newComponent]): retain the component object. + ([UIxComponentEditor -organizerIdentity]): new accessor method to + handle list of possible organizers. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -event]): retain the returned event object. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -saveComponent:newEvent]): reset the + organizer only if there are no attendees AND the owner of the + component is not the organizer him-/herself. + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -toolbar]): rewrote in a way that ensures that each case is + handled properly. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -isEqual:otherUser]): new + override method. + + * UI/Scheduler/UIxTaskEditor.m ([-acceptAction]) + ([-declineAction]): commented out unused methods. + + * UI/MailPartViewers/UIxMailPartICalActions.m + ([UIxMailPartICalActions -deleteFromCalendarAction]): actually + delete the found object. + +2007-11-18 Ludovic Marcotte + + * SoObjects/Mailer/SOGoMailBodyPart.m + SoObjects/Mailer/SOGoMailObject.m + UI/MailPartViewers/UIxMailPartViewer.m + Added support of messages containing non-textual + content and no parts. + + * UI/MailerUI/UIxMailView.m + SoObjects/Mailer/SOGoMailObject.m + UI/Templates/MailerUI/UIxMailView.wox + Added support for the Reply-To header upon + message display. + +2007-11-18 Wolfgang Sourdeau + + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -saveAction]): + invoke saveComponent:. + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor -hasOrganizer]) + ([UIxComponentEditor -organizerName]): new template accessor + related to displaying the event's organizer. + ([-containsConflict:_component]): removed method. + ([UIxComponentEditor -takeValuesFromRequest:_rqinContext:_ctx]): + set RSVP to "TRUE" on each attendee. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -saveAction]): invoke saveComponent:. + + * UI/MailPartViewers/UIxMailPartICalViewer.m + ([UIxMailPartICalViewer -isLoggedInUserTheOrganizer]): make use of + the -userIsOrganizer: category method. + ([-isLoggedInUserAnAttendee]): make use of -userIsParticipant:. + ([UIxMailPartICalViewer -hasSenderStatusChanged]): new template + accessor that determines whether the "Update" button should be + displayed. + + * UI/MailPartViewers/UIxMailPartICalActions.m + ([UIxMailPartICalActions -deleteFromCalendarAction]): implemented + action. + ([UIxMailPartICalActions -updateUserStatusAction]): implemented + action. + + * UI/Common/UIxPageFrame.m ([UIxPageFrame + -setCssFiles:newCSSFiles]): new accessor that enables the + sub-templates to specify extra CSS files to load. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser + -homeFolderInContext:context]): cache the home folder of the user + object instead of the current user. + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + -deleteEntriesWithIds:ids]): invokes the "prepareDelete" optional + method if the child object implements it. + + * SoObjects/SOGo/SOGoContentObject.m ([-setContentString:]) + removed method. + + * SoObjects/SOGo/LDAPSource.m ([LDAPSource + -setBaseDN:newBaseDNIDField:newIDFieldCNField:newCNFieldUIDField:newUIDFieldmailFields:newMailFieldsandBindFields:newBindFields]): + take a new "mailFields" parameter defining an array of fields + where to look at when searching the user's emails. It defaults to + the standard "mail" LDAP field. + + * SoObjects/Appointments/SOGoAptMailICalReply.[hm]: new + SoComponent implementing a template for ITIP replies. + + * SoObjects/Appointments/iCalPerson+SOGo.m ([iCalPerson + -mailAddress]): new method that returns a properly formatted email + address for the specified person entry. + ([iCalPerson -uid]): new method that tests whether the user is + known to the system and if so, returns its user id. + + * SoObjects/Appointments/iCalPerson+SOGo.[hm]: new category module. + + * SoObjects/Appointments/iCalEventChanges+SOGo.m + ([iCalEventChanges -sequenceShouldBeIncreased]): determine whether + the changes involved need a sequence inscrease, based on the + RFC2446 (ITIP). + + * SoObjects/Appointments/iCalEventChanges+SOGo.[hm]: new category + module. + + * SoObjects/Appointments/iCalEvent+SOGo.m ([iCalEvent + -isStillRelevant]): new overriden method determining the relevance + of the current event based on its end date. + + * SoObjects/Appointments/iCalEvent+SOGo.[hm]: new category module. + + * SoObjects/Appointments/iCalEntityObject+SOGo.m + ([iCalEntityObject -attendeeUIDs]): new category methods that + returns an array containing the uids of the system-know attendees. + ([iCalEntityObject -isStillRelevant]): new template method. + ([iCalEntityObject -itipEntryWithMethod:method]): clone the + current entry calendar with the specified ITIP method. + ([iCalEntityObject -attendeesWithoutUser:user]): returns an array + of attendees while making sure the specified user is not listed. + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -calendar:create:secure]): new name for + -calendar:. Added a "secure" parameter that specifies whether a + stripped calendar instance is needed or not. Also, we no longer + cache the content to simplify handling of new data. + ([SOGoCalendarComponent -component:create:secure]): same as above. + ([SOGoCalendarComponent + -sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]): + test whether the component is "still relevant" before sending an + email... + ([SOGoCalendarComponent -sendResponseToOrganizer]): new method for + sending ITIP replies. + ([SOGoCalendarComponent -getUIDsForICalPerson:iCalPerson]): + removed method. Replaced with -[iCalPerson uid] category method. + + * SoObjects/Appointments/SOGoAppointmentObject.[hm]: rewrote + class. No longer override saveContentString:, + saveContentString:baseSequence:, .... Implemented the + saveComponent: and the prepareDelete methods instead. Those + methods are called only from the web methods. This avoids the + risks related to email sending and changes propagation. + + * UI/Common/UIxTabItem.m: removed useless class module. + + * UI/Common/UIxTabView.[hm]: removed useless class module. + + * UI/Common/UIxPrintPageFrame.m: removed useless class module. + + * UI/Common/UIxAppNavView.m: removed useless class module. + +2007-11-16 Ludovic Marcotte + + * SoObjects/Mailer/SOGoMailBaseObject.m + Fixed typo. + + * SoObjects/Mailer/SOGoMailBodyPart.m + We also grok image/jpeg and return the SOGoMailBodyPart + for attachments fetching. + + * SoObjects/Mailer/SOGoMailObject+Draft.m + Prevent a crash in case body decoding failed during + a reply. + + * SoObjects/Mailer/SOGoMailObject.m + Improved body decoding during a reply to also try + latin1 as an encoding. + + * UI/MailPartViewers/UIxMailRenderingContext.m + Greatly improved the display mechanisms for emails. + Also properly consider the content disposition for + most content types. + + * UI/MailerUI/UIxMailToSelection.m + Removed worthless code. + + * UI/WebServerResources/MailerUI.css + CSS fix for table views. + +2007-11-15 Ludovic Marcotte + + * UI/WebServerResources/MailerUI.js + We now check for empty selection and warn the + user about it when deleting messages + + * SoObjects/Mailer/SOGoDraftObject.m + Correctly check for the presence of a subject + before attempting to forward a message from + the Drafts folder. + + * SoObjects/Mailer/SOGoMailObject+Draft.m + We no longer use "[Fwd: ]" but simply "Fwd:" + when forwarding email messages. + + * SoObjects/SOGo/SOGoUser.m + Modified the default forwarding format to be + inline instead of "attachment". + + * SoObjects/Mailer/SOGoDraftObject.m + We now create and use a NGMimeContentDispositionHeaderField + in order to avoid encoding the whole Content-Disposition + header in case a non-ASCII char is present! + +2007-11-13 Wolfgang Sourdeau + + * SoObjects/SOGo/iCalEntityObject+Utilities.m ([iCalEntityObject + -findParticipant:user]): new method based on the one removed from + SOGoCalendarComponent below. + + * SoObjects/SOGo/iCalEntityObject+Utilities.[hm]: new category + module for iCalEntityObject. + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([-findParticipant:user]): removed method. + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject + -setContentString:newContent]): new accessor method. + ([SOGoContentObject + -saveContentString:newContentbaseVersion:newBaseVersion]): invoke + -[self setContentString:]. + + * UI/MailPartViewers/UIxMailPartICalViewer.m + ([UIxMailPartICalViewer -authorativeEvent]): returns the most + up-to-date event. + ([-isLoggedInUserTheOrganizer]): make use of -[SOGoUser + hasEmail:]. + + * UI/MailPartViewers/UIxMailPartTextViewer.m ([NSString + -stringByConvertingCRLNToHTML]): fixed crashes due to overflows in + temporary buffer we are handing. + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -setComponent:newComponent]): check that newComponent is non-nil + before replacing the default values. + ([UIxComponentEditor -calendarList]): privacy is already an ivar. + We don't need to refetch it. + +2007-11-12 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject + -fetchMailForReplying:sourceMailtoAll:toAll]): remove the current + user from the list of recipients and make sure no other address is + counted twice. + + * UI/MailPartViewers/UIxMailPartTextViewer.m ([NSString + -stringByConvertingCRLNToHTML]): build the returned NSString + without the ending \0. + +2007-11-09 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartICalViewer.m + ([UIxMailPartICalViewer -acceptLink]) + ([UIxMailPartICalViewer -declineLink]) + ([UIxMailPartICalViewer -tentativeLink]): removed useless methods. + + * UI/MailPartViewers/UIxMailPartICalAction.m + ([UIxMailPartICalAction -addToCalendarAction]) + ([UIxMailPartICalAction -deleteFromCalendarAction]): new stub + methods. + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -lookupImap4BodyPartKey:]): make use of the new method below. + + * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart + +bodyPartClassForMimeType:mimeTypeinContext:_ctx]): new method + that returns an appropriate Class depending on a given mime type. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent -canCreateOrModify]): + new boolean accessor that determines whether someone can create + (i.e. modify a new entry) or modify an existing entry. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + -lookupName:lookupNameinContext:localContextacquire:acquire]): + overriden method to bind looked up keys to So methods but by + avoiding a call to toOneRelationshipKeys. This will be the top + method of the chain, meant to override SoObject's behaviour. + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder + -lookupName:objectNameinContext:lookupContextacquire:acquire]): + removed hack to prevent [super lookupName...] to read the entire + LDAP directory when looking up a record. + +2007-11-08 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder + +folderWithSubscriptionReference:referenceinContainer:aContainer]): + fixed a leak. + + * UI/MailPartViewers/UIxMailPartHTMLViewer.m + ([UIxMailPartHTMLViewer -_attachmentIds]): the reference was one + character too short, which cause the images not to be displayed + sometimes and crashes to happen whenever the references on a + message were wrong (due to bugs in SOPE). + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView + -hasMessageAttachment]): consider an attachment any content that + has a non-nil disposition. + + * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder + -newFolderWithName:nameandNameInContainer:newNameInContainer]): + fixed method to make use of the parameters instead of the useless + remains that weren't even initialized. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -saveContentString:_iCalbaseSequence:_v]): + don't propagate the event among the attendees if this is not an + "so" request. + ([SOGoAppointmentObject -deleteWithBaseSequence:]): same as above. + + * Main/SOGo.m ([SOGo -authenticatorInContext:context]): make use + of the new category method below. + + * SoObjects/SOGo/WORequest+SOGo.m ([WORequest + -handledByDefaultHandler]): new method that returns whether this + is an "so" or alike request. + + * SoObjects/SOGo/WORequest+SOGo.[hm]: new category module. + + * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder + -newFolderWithName:nameandNameInContainer:newNameInContainer]): + write the new folder's name in the folder cache. + + * UI/Scheduler/UIxCalendarSelector.m ([UIxCalendarSelector + -calendars]): same as below. + + * UI/Contacts/UIxContactsListViewContainer.m + ([UIxContactsListViewContainer -currentContactFolderName]): + translate the display name if its the default one. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -create]): overriden method that invokes + its ancestor and then activate itself within the user settings. + + * SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder + -appendPersonalSources]): when the user is the owner of the + current folder, we create the "personal" folder if it doesn't + exist by invoking "create". + + * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults + -primaryFetchProfile]): when no row is returned, we initialize + "values" to a new dictionary. This solves a bug where the defaults + would not be initialized properly. + +2007-11-07 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoGCSFolder.m ([-compare:otherFolder]): method + moved into the SOGoFolder class. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -saveContentString:_iCalinUIDs:_uids]): + simplified method by directly building a similar appointment + object with the current folder as container. + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder + -appendObject:objectwithBaseURL:baseURLtoREPORTResponse:r]): + take the content of an object returned by + lookupName:inContext:acquire: instead of the dictionary passed as + parameter since it represents a flattened entry return by + lookupContactsWithFilter... + + * SoObjects/Contacts/SOGoFolder+CardDAV.m: NSObject+CardDAV + category renamed to SOGoFolder+CardDAV. + + * SoObjects/SOGo/SOGoParentFolder.m: no longer a subclass of + SOGoObject, but of SOGoFolder instead. + + * SoObjects/SOGo/SOGoUserFolder.m: no longer a subclass of + SOGoGCSFolder, but of SOGoFolder instead. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -lookupCalendarFolderForUID:uid]): fixed + to take the new SOGoParentFolder class into account. Also, create + the personal folder if it doesn't exist. + + * SoObjects/SOGo/SOGoFolder.[hm]: new class module implementing + the parent of all SOGo containers. + + * SoObjects/SOGo/SOGoGCSFolder.[hm]: SOGoFolder class renamed to + SOGoGCSFolder. + +2007-11-06 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailToSelection.m ([UIxMailToSelection + -getAddressesFromFormValues:_dict]): take NSString and NSArray + values. Ignore addresses with a length of 0. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -mailAccounts]): we now + fetch the accounts from the user defaults and create default + values if missing. + +2007-11-05 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartTextViewer.m + ([UIxMailPartTextViewer -flatContentAsString]): re-added + conversion of line-break to sequences of HTML "BR", with a fast + algorithm in C. + + * UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer + -flatContentAsString]): simplified method now that we know + -[NSString stringWithData:usingEncodingNamed:] has a more robust + implementation. + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView + -showToAddress]): the answer is cached. + + * UI/Common/UIxObjectActions.m ([UIxObjectActions +initialize]): + read "SOGoACLsSendEMailNotifications" from the user defaults to + determiner whether to send an email when a user is added or + removed from an object's acl. + + * SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject + -contentForEditing]): make sure the htmlContent flag is set to NO + when we select the textual part. Also we select only the relevant + keys for fetching. + + * UI/MailerUI/WOContext+UIxMailer.m ([-mailSubjectFormatter]): + removed method. + + * UI/MailerUI/UIxMailView.m ([UIxMailView -messageSubject]): new + method replacing -objectTitle, written like the ones below. + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView + -messageSubject]): rewrote method to act the one below. + + * UI/MailPartViewers/UIxMailPartMessageViewer.m + ([UIxMailPartMessageViewer -messageSubject]): new method that + returns the decoded mail subject or "Untitled" if the subject is + empty. + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -decodedSubject]): new method that invoke -decodedSubject from the + NSString and NSData class, depending on the identity of the + subject obtained from the envelope. + + * SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject + -subjectForReply]): take the value of -[SOGoMail decodedSubject] + instead of the subject of the envelope. + ([SOGoMailObject -filenameForForward]): same as above. + ([SOGoMailObject -subjectForForward]): same as above. + + * SoObjects/Mailer/NSString+Mail.m ([NSString -decodedSubject]): + same as below for NSString. + + * SoObjects/Mailer/NSData+Mail.m ([NSData -decodedSubject]): new + method that decodes the subject of a mail taken as an NSData + instance. Handling the exceptions and the badly formatted headers. + + * UI/MailerUI/UIxSubjectFormatter.[hm]: dropped class module. + +2007-11-04 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder + -deleteEntriesWithIds:ids]): make sure the objects returned by + lookupName:... are not instances of NSException. + +2007-11-03 Ludovic Marcotte + + * UI/Scheduler/UIxAppointmentEditor.m + Fixed monthly recurrences support. + +2007-11-01 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -deleteWithBaseSequence:]): an email was + sent when modifying an event, when the event was considered + relevant. The same thing is now implemented for event deletion. + + * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults + -primaryFetchProfile]): make sure that the deserialized "values" + is an instance of NSMutableDictionary, otherwise we override it + with one. + + * SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject + -contentForReply]): make use of the SOGoMailReply WO page. + + * SoObjects/Mailer/SOGoMailReply.[hm]: new class module copied + from SOGoMailForward to handle mail replies instead. Only three + methods remaining: date, from and messageBody. The latter is + quoted properly. + + * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject + -fetchMailForForwarding:sourceMail]): fetch attachments for + forwarded messages. + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView + -hasMessageAttachment]): initialize hasAttachment with "NO" to + avoid false positives. + + * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor -extractQuickFieldsFromEvent:_event]) + ([OCSiCalFieldExtractor -extractQuickFieldsFromTodo:_task]): + set title to an empty string where the event/task summary is null. + + * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject + -setHeaders:newHeaders]): make sure there is a message id in the + headers dictionary, if not, generate one. + ([SOGoDraftObject -fetchMailForEditing:sourceMail]): retrieve the + message id from the existing draft. + ([SOGoDraftObject -mimeHeaderMapWithHeaders:_headers]): store the + message id in the header map. + + * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions + -deleteFolderAction]): no longer prefix the target folder with + "folder". + + * UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions + -listMailboxesAction]): base the folder type on the folder + traversal path. + + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder + -lookupName:_keyinContext:acquire:_acquire]): compare the full + traversal to the potential looked up folder with the special + folder names and return an object with the appropriate + SOGoMailFolder subclass. + + * SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject + -traversalFromMailAccount]): don't prepend the whole string with + "/". + + * SoObjects/Mailer/SOGoMailAccount.m + ([-lookupSentFolder:_keyinContext:_ctx]) + ([-lookupDraftsFolder:_keyinContext:_ctx]) + ([-lookupTrashFolder:_keyinContext:_ctx]) + ([-lookupFiltersFolder:_key:_ctx]): removed methods. + ([SOGoMailAccount -inboxFolderNameInContext:]) + ([SOGoMailAccount -draftsFolderNameInContext:_ctx]) + ([SOGoMailAccount -sentFolderNameInContext:]) + ([SOGoMailAccount -trashFolderNameInContext:]): no longer prefixes + the resulting name with "prefix" since we might return a nested + foldername. + ([SOGoMailAccount -allFolderPaths]): prefixes all special folder + names with "/". Sorts the resulting folder list with + localizedCaseInsensitiveCompare: instead of + caseInsensitiveCompare:. No longer use the -[lookupXXX] methods + that were removed, instead, we choose the appropriate class + depending on the folder name. And since we are in SOGoMailAccount, + we don't have to compute a traversal path to match the key with + the foldernames. + ([SOGoMailAccount + -folderWithTraversal:traversalandClassName:className]): new method + that returns an instance of the specified SOGoMailFolder subclass, + based on the traversal path passed as parameter. + ([SOGoMailAccount -inboxFolderInContext:_ctx]) + ([SOGoMailAccount -draftsFolderInContext:_ctx]) + ([-sentFolderInContext:_ctx]) + ([SOGoMailAccount -trashFolderInContext:_ctx]): invoke the new + -folderWithTraversal:andClassName: method described above. + + * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults + -primaryFetchProfile]): make use of -[NSPropertyListSerialization + propertyListFromData:mutabilityOption:format:errorDescription:] to + deserialize the plist. Removed variant for libFoundation since it + should support the above. + ([AgenorUserDefaults -generateSQLForInsert]) + ([AgenorUserDefaults -generateSQLForUpdate]): make use of + -[NSPropertyListSerialization + dataFromPropertyList:format:errorDescription:] to serialize the + plist. Removed variant for libFoundation since it should support + the above. Escape the backslashes from the resulting string. + +2007-10-31 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailFolder.[hm]: added a new subclass of + SOGoMailFolder: SOGoMailSpecialFolder. + + * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount + -traversalFromMailAccount]): overridden method that returns the + initialized mutable string. + ([SOGoMailAccount -allFolderPaths]): take the special folder paths + with -traversalFromMailAccount and reposition them at the + beginning of the list. By creating the special folders during that + request, we also make sure that the folder exists thanks to the + new initialisation method of the new "SOGoSpecialMailFolder" + class. + ([SOGoMailAccount -lookupSentFolder:_keyinContext:_ctx]): new + method. + ([SOGoMailAccount -lookupTrashFolder:_keyinContext:_ctx]): new + method. + ([SOGoMailAccount -lookupName:_keyinContext:acquire:_flag]): no + longer use lookupImap4Folder. + ([SOGoMailAccount -lookupImap4Folder:_keyinContext:_ctx]): removed + method. + + * SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject + -traversalFromMailAccount]): new method that returns the full + IMAP4 path to the object. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser +initialize]): retain + "superUsernames" after fetching it from the ud. + +2007-10-30 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -eventsListAction]): substitude the start and end date with their + UTC counterpart, taking into account the offset from UTC related + to those dates instead of the current one. This renders + -[UIxCalMainView -userUTCOffset] obsolete because the computings + that occured in javascript are now done server-side. + + * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView -userUTCOffset]): + removed obsolete method. + + * SoObjects/Mailer/NSString+Mail.m ([NSString -htmlToText]): new + method converting html content to plain text. + + * SoObjects/Mailer/NSString+Mail.[hm]: new category module + enhancing NSString with utility methods pertaining to mail handling. + + * SoObjects/Mailer/SOGoMailObject.m + ([-shouldFetchPartOfType:_typesubtype:_subtype]): removed obsolete method. + ([SOGoMailObject + -addRequiredKeysOfStructure:infopath:ptoArray:keysacceptedTypes:types]): + modified method to be always recursive and to take an array of the + accepted mime-types as parameter. The returned array now contains + the mime-type as well as the part keys. + + * SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject + -contentForEditingOnParts:_prtskeys:_k]): removed obsolete method. + ([SOGoMailObject -contentForEditing]): rewrote method to take into + account the first text/plain part or the first text/html part + converted to text/plain with our new -[NSString htmlToText] + category method. + + * UI/MailerUI/UIxMailActions.m ([-replyToAllAction]): invoke + "replyToAll:" with YES as parameter instead of NO. + +2007-10-29 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart + -davContentType]): ignore any possible parameter taken from the + mime-info of the body part. + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView + -lastFirstMessageNumber]): new accessor that returns the first + message number of the last series of messages. + ([UIxMailListView -fetchKeys]): request the bodystructure for each + listed message. + ([UIxMailListView -hasMessageAttachment]): extract the attachment + information from the message bodystructure. + +2007-10-26 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart + -GETAction:]): use the "application/octet-stream" mime type for + elements of type "application/x-xpinstall" to avoid confusing + Firefox. + + * UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -messageCheckList]) + ([UIxPreferences -itemMessageCheckText]) + ([UIxPreferences -userMessageCheck]) + ([UIxPreferences -setUserMessageCheck:newMessageCheck]): new + methods for handling the retrieval of new messages automatically. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -messageCheck]): new method + that returns the interval of time between automatic message + retrievals. + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView + -defaultAction]): now expunges the last folder marked for expunge. + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -trashInContext:_ctx]): now marks the container folder for + expunge. + + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder + -markForExpunge]): new method that marks the folder for the next + automatic expunge operation in the user settings. + ([SOGoMailFolder -expungeLastMarkedFolder]): new methods that + takes the last folder marked for expunge, expunges it and removes + it from the user settings, if it exists. + +2007-10-25 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView + -messageSubjectCellStyleClass]): added support for replied, + forwarded, forwarded and replied mails. + + * SoObjects/Mailer/NSData+Mail.m ([NSData + -bodyDataFromEncoding:encoding]): new utility method that decodes + the NSData instance properly depending on the encoding string + passed as parameter. + + * SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject + -fetchFileAttachmentKeys]): fetch the attachment encoding as well. + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -stringForData:_datapartInfo:_info]): simplified by invoking + -bodyDataFromEncoding: from our new NSData category methods. + + * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject + -fetchMailForEditing:sourceMail]): work-around a bug in SOPE-mime + where only the body part of the first of the keys fetched was + returned. Also decodes the body parts properly following their + encoding. + + * SoObjects/Mailer/NSData+Mail.[hm]: new extension module that + extends the NSData class with utility methods useful for handling + mail. + +2007-10-23 Wolfgang Sourdeau + + * SoObjects/SOGo/NSArray+Utilities.m + ([NSArray -stringsWithFormat:format]): replace instances of NSNull + with empty strings. + + * SoObjects/SOGo/NSDictionary+Utilities.m ([NSDictionary + -keysWithFormat:keyFormat]): replace instances of NSNull with + empty strings. + + * SoObjects/Contacts/SOGoContactLDAPFolder.m: if "displayName" is + empty, use "c_cn" instead. + + * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount -inboxFolderInContext:_ctx]) + ([SOGoMailAccount -draftsFolderInContext:_ctx]) + ([SOGoMailAccount -sentFolderInContext:_ctx]): no longer make use + of the "SOGoSpecialFoldersInRoot" user defaults. The folders will + no always be specified from the root instead of sometimes from the + INBOX. + +2007-10-22 Wolfgang Sourdeau + + * UI/Common/UIxPageFrame.m ([UIxPageFrame -commonLocalizableStrings]) + ([UIxPageFrame -productLocalizableStrings]): invoke the new + +[SOGoUser language] method if the user is nil. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser +language]): new method + that returns any generically-found language. + ([SoUser -language]): modified to call the above. + ([SOGoUser -language]): modified to call the above if the user + language has a null length. + + * SoObjects/Contacts/SOGoContactLDIFEntry.m ([SOGoContactLDIFEntry + -davEntityTag]): modified to return the "hash" of the vCard string. + + * UI/MailerUI/UIxMailActions.m ([UIxMailActions + -removeAllLabelsAction]): new method that removes all label flags + from the associated message. + ([UIxMailActions -addLabel1Action] + [UIxMailActions -addLabel2Action] + [UIxMailActions -addLabel3Action + [UIxMailActions -addLabel4Action] + [UIxMailActions -addLabel5Action]): new methods that adds label + flags to the associated message. + ([UIxMailActions -removeLabel1Action] + [UIxMailActions -removeLabel2Action] + [UIxMailActions -removeLabel3Action + [UIxMailActions -removeLabel4Action] + [UIxMailActions -removeLabel5Action]): new methods that removes + label flags from the associated message. + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView -msgLabels]): + new accessor that returns the labels associated with the message. + + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder + -allFolderPaths]): new method that returns all the paths of all + the subfolders of the folder object. + ([SOGoMailFolder -allFolderURLs]): new method replacing + subfoldersURL. + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject + -aclsForUser:uid]): object inherits the 'SOGoRole_ObjectEditor' + role from its parent folder. + +2007-10-19 Francis Lachapelle + + * SoObjects/SOGo/SOGoUser.m + ([SOGoUser -rolesForObject:objectinContext:context]): allow + multiple super usernames to be defined. The user default + SOGoSuperUsername is renamed SOGoSuperUsernames and must be + an array. + +2007-10-18 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoWebAuthenticator.m ([SOGoWebAuthenticator + -userInContext:]): override the super method by returning + anonymous if the super returns nil. + + * UI/Common/UIxPageFrame.m ([UIxPageFrame + -productLocalizableStrings]): new method that returns the + product-specific translation dictionary as a JSON hash. + ([UIxPageFrame -commonLocalizableStrings]): same as above but for + the "Common" framework. + ([UIxPageFrame -setJsFiles:newJSFiles]): new setter that enables + the requestor components to require additional Javascript files. + This is useful now that all the scripts are loaded at the end of + the HTML code. + ([UIxPageFrame -additionalJSFiles]): new getter related to the + above. + +2007-10-17 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailActions.m ([UIxMailActions -copyAction]): + implemented new web method. + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -copyToFolderNamed:folderNameinContext:]): new method with the + code cut/pasted from -moveToFolderNamed:inContext:. + ([SOGoMailObject -moveToFolderNamed:folderNameinContext:]): + modified to use the code from -copyToFolderNamed:inContext:, which + is common between the two actions. + + * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount -draftsFolderNameInContext:_ctx]) + ([SOGoMailAccount -sentFolderNameInContext:]) + ([SOGoMailAccount -trashFolderNameInContext:]): modified to take + the user settings into account. + + * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions -setAsDraftsFolderAction]) + ([UIxMailFolderActions -setAsSentFolderAction]) + ([UIxMailFolderActions -setAsTrashFolderAction]): new web methods + that change the purpose of the active folder to "Sent", "Drafts" + or "Trash". + + * UI/SOGoUI/SOGoACLAdvisory.m ([SOGoACLAdvisory -subject]): + returns the subject as quoted-printable. + + * UI/SOGoUI/SOGoACLAdvisory.[hm]: added two intermediary classes: + SOGoACLAdditionAdvisory and SOGoACLRemovalAdvisory implementing + the "aclMethod" method for the subsequent language-dependent + subclasses. + + * UI/SOGoUI/SOGoFolderAdvisory.m ([SOGoFolderAdvisory -subject]): + returns the subject as quoted-printable. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -dealloc]): release item, aptStartDate and aptEndDate. + +2007-10-16 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder + -initWithName:newNameinContainer:newContainer]): the owner of a + shared folder is set to "nobody" by default. + + * UI/Common/UIxAclEditor.m ([UIxAclEditor -hasOwner]): new method + that returns whether the object has an owner or not. + +2007-10-15 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -ocsFolder]): create + the folder even if the current user is not its owner. + +2007-10-10 Ludovic Marcotte + + * We now send advisory emails when folders + are created / deleted. + + * Fixed the sending of advisory emails upon + ACL changes on folders. + +2007-10-10 Ludovic Marcotte + + * UI/Scheduler/UIxComponentEditor.m + Implemented event/task priority support. + + * SoObjects/Contacts/SOGoContactGCSFolder.m + Added CardDAV support. + + * SoObjects/SOGo/LDAPUserManager.m and SOGoUser.m + Implemented From: based on LDAP results based on + the MailFieldNames attribute (an array) specified + in every LDAP-based authentication sources. + + * UI/MailPartViewers/UIxMailPartTextViewer.m and + UI/WebServerResources/MailerUI.css + We avoid replacing "\r\n" and "\n" with
and + rather use CSS capabilities for proper formatting. + This is _WAY_ faster on very large mails. + +2007-10-10 Francis Lachapelle + + * UI/Scheduler/UIxComponentEditor.m + ([UIxComponentEditor -componentCalendar]): returns the calendar + object of the current event. + +2007-10-05 Ludovic Marcotte + + * UI/WebServerResources/MailerUI.js + We check if at least one message is selected + before performing a Reply/Reply All/Forward + + * SoObjects/Appointments/SOGoAppointmentFolder.m + and others - implemented support for recurring + events (with some known limitations right now, + all soon to be fixed). + +2007-10-04 Francis Lachapelle + + * Main/SOGo.m ([SOGo -isUserName:_keyinContext:_ctx]): removed + the constraint that a username can't start with a digit. + +2007-10-02 Francis Lachapelle + + * Moved SOPE/sope-gdl1/GDLContentStore from the default trunk + repository to Inverse's branch. + +2007-09-28 Francis Lachapelle + + * SoObjects/Mailer/SOGoDraftObject.m + ([SOGoDraftObject -isValidAttachmentName:_name]): removed + constraint on space in file name. + ([SOGoDraftObject -saveAttachment:_attachwithMetadata:metadata]): + now removes from file name all characters preceding a backslash. + This happens with IE7 because the complete attachment file path + is sent. + +2007-09-25 Francis Lachapelle + + * SoObjects/Appointments/SOGoAptMailNotification.m + ([SOGoAptMailNotification -appointmentURL]): set personal as the + default calendar where to add the event. + + * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage +initialize]): + activate the SOGoUIxDefaultModule user defaults. + +2007-09-21 Francis Lachapelle + + * UI/SOGoUI/UIxComponent.m + ([UIxComponent -shortUserNameForDisplay]): returns the string + "wrongusernamepassword" when authentication failed. + +2007-09-17 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartICalViewer.m + ([UIxMailPartICalViewer -calendarFolder]): returns the "personal" + entry of the Calendars parent folder. + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView + -messageSubject]): new accessor method to work-around a problem + within SOPE where a subject could be returned as an NSData. + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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. + ([SOGoMailObject -moveToFolderNamed:folderNameinContext:]): same + as above. + + * UI/MailerUI/UIxMailView.m ([-deleteAction]): removed method. + ([-trashAction]): moved method into UIxMailActions. + ([-moveAction]): moved method into UIxMailActions. + +2007-09-07 Wolfgang Sourdeau + + * UI/MailPartViewers/UIxMailPartHTMLViewer.m + ([_UIxHTMLMailContentHandler + -endElement:_localNamenamespace:_nsrawName:_rawName]): remove HTML + comments from the CSS code, do not add the CSS code to the body + content and remove references of body from the CSS declarations. + ([UIxMailPartHTMLViewer -cssContent]): new accessor method. + ([UIxMailPartHTMLViewer -flatContentAsString]): separated code + common with cssContent in a different method and invoke it only + once. + + * UI/MainUI/SOGoRootPage.[hm]: made a subclass of UIxComponent + instead of UIxPageFrame. + +2007-09-06 Wolfgang Sourdeau + + * UI/MainUI/SOGoRootPage.m ([-defaultAction]): commented out. + ([-appendToResponse:responseinContext:ctx]): commented out. + ([SOGoRootPage -connectURL]): new accessor that returns the full + url the the "connect" method. + ([-connectAction]): rewrote method to return a properly formatted + auth. cookie based on the username and password passed as + parameter. + + * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage -logoffAction]): + set the value of the cookie to "discard" and set its expiration + date to yesterday. + + * SoObjects/SOGo/SOGoWebAuthenticator.m ([SOGoWebAuthenticator + -preprocessCredentialsInContext:context]): consider the user + anonymous if the cookie value is "discard". + ([SOGoWebAuthenticator + -setupAuthFailResponse:responsewithReason:reasoninContext:context]): + set the expiration date of the cookie to yesterday. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent -applicationPath]): + returns the path to the application if the clientObject is not a + SOGoObject. + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder +initialize]): + moved the requirement of authentication from the SOGo application + class to here. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -saveContentString:_iCalbaseSequence:_v]): + check whether the new appointment object is still relevant before + sending a notification. + +2007-09-05 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoWebAuthenticator.m ([SOGoWebAuthenticator + -setupAuthFailResponse:responsewithReason:reasoninContext:context]): + render the login page through the SoDefaultRenderer. + + * UI/MainUI/SOGoRootPage.m ([SOGoRootPage + -isPublicInContext:localContext]): new overriden method that + returns YES. + + * UI/Scheduler/UIxCalendarSelector.m ([UIxCalendarSelector + -currentCalendarLogin]): replace css-unsafe characters with _. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent + -shortUserNameForDisplay]): simplified method. + ([-user]): removed method since [context activeUser] is as useful. + +2007-09-04 Wolfgang Sourdeau + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * UI/SOGoElements/SOGoIEConditional.m: new extension module class + to handle "" 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView _responseForResults:]): + has to return only one element. + +2007-08-01 Wolfgang Sourdeau + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions + -quotasAction]): new method that returns a json representation of + the mailbox quotas. + +2007-07-10 Wolfgang Sourdeau + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * Main/sogod.m (main): prevent SOGo from running as root. + +2007-06-19 Wolfgang Sourdeau + + * 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 + + * SoObjects/SOGo/SOGoLRUCache.m: removed unused module. + +2007-06-13 Wolfgang Sourdeau + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder + -primaryFetchMailboxInfo]): useless method. Removed. + +2007-05-28 Wolfgang Sourdeau + + * 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 + + * 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 + + * 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 + + * 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 @"". + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject + -defaultUserID]): overriden method to return @"". + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * UI/Common/UIxAclEditor.m ([UIxAclEditor -currentUserIsOwner]): + new method with an explicit name. + +2007-05-03 Wolfgang Sourdeau + + * 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 + + * 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 + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -_privacySqlString]): the string for the + "freebusy" special user should only require opaque elements. + +2007-04-25 Wolfgang Sourdeau + + * 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 + + * 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 + + * 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 + + * 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 + + * Main/SOGo.m ([SOGo +initialize]): on GNUstep, trigger some + debugging facilities when the SOGoDebugObjectAllocation user + default is set. + +2007-04-11 Wolfgang Sourdeau + + * 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 + + * 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 + + * UI/Contacts/UIxContactsListView.m ([UIxContactsListView + -selectorComponentClass]): restored method. + +2007-04-03 Wolfgang Sourdeau + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * SoObjects/Mailer/SOGoMailFolder.m: priorize the lookup of + folders before doing the one on messages. + +2007-02-08 Wolfgang Sourdeau + + * 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 + + * UI/Scheduler/English.lproj/Localizable.strings: fixed typo for + "Agendas" + +2007-02-05 Wolfgang Sourdeau + + * 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 + + * 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 + + * 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. + +2007-01-30 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView + -defaultAction]): invoke "flushMailCaches" on [self clientObject] + so that the mailbox cache is refreshed everytime the user presses + on "get mail". I doubt a mailbox cache really is useful in general + anyway. + +2007-01-26 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator + -userInContext:]): if the lookup is on "freebusy.ifb" and the + username is "anonymous" the user is automatically set to + "freebusy". + +2007-01-12 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator + -checkLogin:_loginpassword:_pwd]): authorize special "freebusy" + user with password "freebusy". + + * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject + -contentAsString]): the default timerange is now 14 days before + currentday and 1 month after. + +2007-01-08 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -appendObject:objectwithBaseURL:baseURLtoREPORTResponse:r]): + escape the record string in a way suitable with XML encoding. + +2007-01-05 Wolfgang Sourdeau + + * UI/WebServerResources/SchedulerUI.js: fixed a bug where the + calendar view would not be updated properly. + +2007-01-04 Wolfgang Sourdeau + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -newStartDate]): fix the handling of the component start date + depending on the "hm" and the "day" parameters. + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -roleOfUser:uidinContext:context]): set role of current user to + "Assistant" if the object that is accessed is "freebusy.ifb". + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -lookupCalendarFolderForUID:uid]): method + moved from UI/Scheduler/UIxCalView:calendarFolderForUID:. + ([SOGoAppointmentFolder + -lookupCalendarFoldersForUIDs:_uidsinContext:]): now use the new + lookupCalendarFolderForUID: method, which doesn't do security + checks. + +2007-01-03 Wolfgang Sourdeau + + * UI/Common/UIxAclEditor.m ([UIxAclEditor -assistantsValue]): new + accessor that returns the comma-separated list of users with role + "Assistant". + ([UIxAclEditor -delegatesValue]): same as above for "Delegate". + ([UIxAclEditor -_prepareUsers]): there is no longer a concept of + "checkedUsers". Instead, each user is either classified in the + list of assistants or the list of delegates. + +2006-12-22 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame + -composeAction]): method imported from removed container modules. + ([UIxMailMainFrame -mailFolderName]): method imported from removed + container modules. + + * UI/MailerUI/UIxMailPopupView.m: a new special popup component + for wrapping UIxMailView with the "popupview" action. + + * UI/MailerUI/UIxMailAccountView.m: renamed to UIxMailSplashView, + since its the component that displays the same splash screen than + the one in Thunderbird/Icedove. + + * UI/MailerUI/UIxMailAccountViewContainer.[hm], + UI/MailerUI/UI/MailerUI/UIxMailAccountsView.m, + UI/MailerUI/UIxMailListViewContainer.[hm], + UI/MailerUI/UIxMailViewContainer.[hm]: removed + +2006-12-20 Wolfgang Sourdeau + + * UI/WebServerResources/HTMLElement.js: replaced the functional + selectNode() and deselectNode() functions with select() and + deselect() methods of HTMLElement. + + * UI/WebServerResources/ContactsUI.js: cleanup, most of the + events are initialized from here now instead of in the HTML code. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -checkRightsAction]): new method similar to the one with the same + name in UIxCalMainView.m. + + * UI/Common/UIxAclEditor.m ([UIxAclEditor -saveAclsAction]): added + code to handle the publishing of freebusy information. + +2006-12-19 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView + -checkRightsAction]): new action method that returns a + comma-separated list of boolean values matching the right of the + current user to "view" (as a permission) each foreign calendar + stored in his preferences. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -setOwner:newOwner]): + new method that sets a customOwner, which can be returned with + ownerInContext it set. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): no longer set the owner of elements here. + +2006-12-15 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUserFolder.m: same as for SOGoContactFolders + below, but for the Contacts and Calendar collections. + + * SoObjects/SOGo/SOGoAclsFolder.m: convert the class to user the + new acl facilities method from sope-gdl/GCSFolder.m. + + * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders + -roleOfUser:uidinContext:context]): new method that returns + SOGoRole_Assistant when the user is an assistant or a delegate on + the "personal" ab object. This is so that setting roles on the + SOGoContactFolders object is not required. + +2006-12-14 Wolfgang Sourdeau + + * Main/SOGo.m: declare "Freebusy" permissions for the top objects. + + * UI/Contacts/UIxContactsAclsSelection.m: new component specific + to the handling of the user selection for the acls. + + * SoObjects/SOGo/SOGoPermissions.[hm]: new module that extends the + values from SoPermissions with ones specific to SOGo. + + * SoObjects/SOGo/SOGoAclsFolder.[hm]: new class module that + handles the storage for the acls. + + * SoObjects/Appointments/SOGoCalendarComponent.[hm]: new parent + class for SOGoAppointmentObject and SOGoTaskObject. + + * UI/Common/UIxAclEditor.[hm]: new component that provides a + general editor for folder acls. + + * SoObjects/SOGo/NSString+Utilities.[hm]: old "NSString+URL" + renamed. + ([NSString -davMethodToObjC]): method that returns the method name + for a DAV property implementation. + + * SoObjects/SOGo/NSArray+Utilities.m: new extension module to + NSArray. + ([NSArray -stringsWithFormat:format]): new method that returns + formatted occurences of the strings stored in the array. + + * SoObjects/SOGo/SOGoDAVRendererTypes.m ([SOGoDAVSet + +davSetWithArray:newValuesofValuesTaggedAs:newValueTag]): a new + subclass module of SoWebDAVValue that supports collections of + properties of the same type. + +2006-11-21 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount + -lookupFolder:ofClassNamed:inContext:]): added the ability to + configure the name of the SOGoDraftFolders with the ud var + "SOGoDraftsFolderName". + +2006-11-17 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + -userTimeZone:username]): new method that returns the timezone for + the specified user depending on his preferences and the server + defaults + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -stringForData:partInfo:]): take the encoding into account and + translate the text to "normal" before processing the charset data. + +2006-11-15 Wolfgang Sourdeau + + * UI/WebServerResources/generic.js: the progress indicator is on + when loading the page so we turn it off, and we turn it back on + whenever we switch to another module... + + * UI/WebServerResources/SchedulerUI.js: make sure the day view + synchronization mechanism works everywhere. + + * UI/WebServerResources/generic.js: the log window is not only + visible when UIxDebugEnabled is set. + + * UI/WebServerResources/SchedulerUI.js: the month overview's day + cells are now initialized with the DOM event interface methods + instead of with html attributes. + + * UI/Templates/MailerUI/UIxMailView.wox: don't display useless + headers (should be made configurable at some point)... + + * OGoContentStore/sql/generate-folderinfo-sql-for-users.sh: drop + "not null" constraint on startdate, enddate, isopaque, + participants and partmails. + +2006-11-14 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable + -hoursToDisplay]): prevent a crash by retaining the + "hoursToDisplay" array after it's created. + ([UIxCalDayTable -clickableHourCellClass]): new method for the new + clickable hours DIV. + + * UI/WebServerResources/SchedulerUI.js: made the event + participation status modification asynchronous, which also fixes a + bug where the window would sometimes close before the accept or + decline action was completed. Also, adapted the event handling + related to the days or weeks view with the new DIV-based layout. + + * UI/Scheduler/UIxCalInlineAptView.m: same as the first below... + + * UI/Scheduler/UIxCalDayTable.m: enhanced to provide the new + DIV-based presentation of the days and weeks. + + * SoObjects/Appointments/SOGoTaskObject.m: same as below... + + * SoObjects/Appointments/SOGoAppointmentObject.m: lookupName:... + might return an exception so we have to handle it if we don't + wanna crash... + +2006-11-13 Wolfgang Sourdeau + + * UI/WebServerResources/SchedulerUI.js: updated the list + initialization code to use the new event management scheme, adding + what was missing to be able to delete events and tasks again. + + * UI/WebServerResources/MailerUI.js: added code to activate the + "Get mails" button. Fixed a bug which prevented messages to be + deleted. + + * UI/WebServerResources/UIxFreeBusyUserSelector.js: handle tab + navigation and focus handling of INPUTs. + +2006-11-10 Wolfgang Sourdeau + + * UI/WebServerResources/MailerUI.js: added code to handle the + possible drag and drop events to manager in the mail module. + Moving messages, opening parent folders, ... + + * UI/WebServerResources/SOGoDragAndDrop.js: new file containing + the drag and drop manager as well as the interface to HTMLElement + to trigger drag and drop events. + + * UI/MailerUI/UIxMailView.m ([UIxMailView -moveAction]): new + action to move the current message to the mailbox named after the + value of parameter "tofolder". + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -moveToFolderNamed:folderNameinContext:]): new method base on + -trashInContext:. + +2006-11-09 Wolfgang Sourdeau + + * UI/WebServerResources/generic.js: added and activated many + "load" handlers to configure generic widgets used across the + modules. More events are now handled in a DOM-fashion way instead + of by setting the relative attributes in the templates. + + * UI/Templates/UIxSortableTableHeader.wox: all the events are + declared from the javascript DOM onload handlers. + + * UI/Templates/UIxPageFrame.wox: load the new SOGoDragHandles.js + library. + + * UI/Templates/MailerUI/UIxMailListView.wox: all the events are + declared from the javascript DOM onload handlers. + + * UI/MailerUI/UIxMailListView.m: removed all the JS methods since + we want everything to be separated from each other, as much as + possible. + + * UI/WebServerResources/SOGoDragHandles.js: new module containing + the "SOGoDragHandlesInterface", implementing methods that can be + attributed to DIV so that they can be used as drag handles. + + * SoObjects/Mailer/SOGoDraftObject.m ([NSString + -asQPSubjectString]): initialize the tmp strings with '0' to make + sure they don't contain garbage. + +2006-11-08 Wolfgang Sourdeau + + * UI/WebServerResources/MailerUI.js: register the messageList + table as a dragging source and the leaf of the navigation tree as + dnd destinations to the DNDManager. + + * UI/WebServerResources/generic.js: initialize tabs from the + "unload" event listener that is added programmatically instead of + from the template... Also, added the new DNDManager object. + + * UI/WebServerResources/HTMLTableElement.js: added code to + simulate XUL drag n drop events. This code will possibly be moved + to HTMLElement.js instead later... + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder -_qualifierForFilter:filter]): same as + below. + + * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder + -_qualifierForFilter:filter]): only search records which starts + with the specified pattern. + +2006-11-07 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoDraftObject.m ([NSString + -asQPSubjectString]): new method that returns the special QP + string with its qp declaration for email subjects. + ([SOGoDraftObject -bodyPartForText]) + ([SOGoDraftObject -mimeMessageForContentWithHeaderMap:]): don't + double-encode data in UTF-8. + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -newStartDate]): new method to determine the start date depending + on the URL parameters, the current day and the current time. + ([UIxComponentEditor -toolbar]): new method to determine the + filename of the toolbar that should be drawn depending on the + ownership and the list of attendees of the task/event wrt to the + current user... + + * UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl + -setDayStartHour:aStartHour]): adjust the minutes to the next + quarter of hour, if not already set to a quarter. + + * UI/WebServerResources/UIxAppointmentEditor.js, + UI/WebServerResources/UIxTaskEditor.js: added code to manage start + date change. + +2006-11-03 Wolfgang Sourdeau + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -loadValuesFromComponent:component]): handles access class + (privacy) and status. + + * UI/Contacts/UIxContactsListViewContainer.m + ([UIxContactsListViewContainer -additionalFolders]): return nil if + [self additionalAddressBooks] returns an empty string. + +2006-11-02 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalMonthView.m ([UIxCalMonthView + rangesOf7Days]): enhanced and debugged algorithm to feed the array + with slices where the first day is still in the requested month. + + * UI/Templates/UIxPageFrame.wox: the logConsole is created only on + non-popup pages. + + * UI/SOGoUI/SOGoAptFormatter.m: added code to handle the display + of events in the day boxes of the calendar's monthly view. + + * SoObjects/Appointments/SOGoTaskObject.m ([SOGoTaskObject + -davContentType]): declare "text/calendar". + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -davContentType]): declare + "text/calendar". + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -lookupName:inContext:acquire:]): certain + HTTP methods are handled by SOPE and requires nil to be returned, + this method now invokes the new + "requestNamedIsHandledLater:inContext:" method to check that. + ([SOGoAppointmentFolder + -requestNamedIsHandledLater:nameinContext:context]): new methods + that returns "YES" only for the "OPTIONS" http method (for now...). + ([SOGoAppointmentFolder -davComplianceClassesInContext:]): + overloaded method to append the "access-control" and + "calendar-access" DAV abilities to the initial declaration. + + * UI/Scheduler/UIxCalMonthView.[hm]: rewritten module entirely to + imitate the look of Sunbird/Lightning's monthly view. + + * UI/Scheduler/UIxCalMonthView.[hm]: renamed to + UIxCalMonthViewOld.[hm]. + +2006-11-01 Wolfgang Sourdeau + + * UI/Scheduler/UIxFreeBusyUserSelectorTable.m + ([UIxFreeBusyUserSelectorTable -currentContactHasStatus]): new + method. + ([UIxFreeBusyUserSelectorTable -currentContactStatusImage]): + returns an image name based on the participation status of the + current attendee. + + * UI/WebServerResources/SchedulerUI.js: same strip down as for + generic.js below. + + * UI/Contacts/UIxContactsListViewContainer.m ([UIxContactsListViewContainer -additionalAddressBooks]) + ([UIxContactsListViewContainer -additionalFolders]) + ([UIxContactsListViewContainer -setCurrentAdditionalFolder:newCurrentAdditionalFolder]) + ([UIxContactsListViewContainer -currentAdditionalFolder]): new + methods to handle the external addressbooks a user has subscribed + too, by retriving them from his preferences. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -updateAdditionalAddressBooksAction]): new method that updates the + user settings with the list of addressbook he has subscribed to. + + * UI/Contacts/UIxContactsAddressBooksSelection.m: new component + module for the address book selector. + + * UI/Templates/ContactsUI/UIxContactsListViewContainer.wox: added + a toolbar with two buttons ("add" and "remove") to manage the + additional addressbooks a user might subscribe to. + + * UI/WebServerResources/ContactsUI.js: added code to handle + "external addressbooks" from the Javascript point-of-view, by + extending existing methods and adding code for the "add ab" and + "remove ab" buttons. + + * UI/WebServerResources/generic.js: moved extensions methods to + DOM elements to separate files for better clarity. + + * UI/Common/UIxPageFrame.m ([UIxPageFrame -pageContentClasses]): + new method that returns "pageContent" as class, but also "popup" + for the DIV where the page content lies, so that we can manipulate + the content of popup's with CSS identifiers. + +2006-10-31 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalInlineAptView.m ([UIxCalInlineAptView + -displayStyle]): new method that returns a string containing the + css style relative to the current appointment cell. This code is + currently inactive but might be reused later. + + * UI/WebServerResources/SchedulerUI.js: added code to handle the + display of the selected day (the day pointed by the mouse, or the + current day when changing the view). + + * UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable + -dayCellClasses]): new method that returns a string containing the + css classes applicable to the current cell, depending on the + position of the day in the week, the day of today and the + requested day. + + * UI/Scheduler/UIxCalCalendarsListView.m ([UIxCalCalendarsListView + -currentContactAptBorder]): new method that returns the + appropriate border color for the specified user. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject + -saveContentString:contentStringbaseVersion:baseVersion]): + overloaded method that parse new events and detects if they have + an organizer or not. If they are new and have no organizer set + (Sunbird/Lightning...), the owner of the event is set as + organizer. + + * SoObjects/Appointments/iCalEntityObject+Agenor.[hm]: new + category that provides facility methods and interfaces to the + AgenorUserManager. + + * SoObjects/Contacts/product.plist: give full access to ANY + authenticated user, not just the owner (to every objects...). + +2006-10-30 Wolfgang Sourdeau + + * UI/WebServerResources/UIxFreeBusyUserSelector.js: make sure + every replica widgets are declared as such to their master + counterpart. Take the days into account when displaying the time + range taken by the appointment. + + * UI/Scheduler/UIxComponent+Agenor.m ([UIxComponent + -getICalPersonsFromValue:selectorValue]): method taken from + UIxFreeBusyUserSelector, that is shared both by + UIxFreeBusyUserSelector and UIxFreeBusyUserSelectorTable. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): reverted to search algorithm to search for events happening outside 0 or 1 (at most) boundary of the timerange. + + * UI/Scheduler/UIxFreeBusyUserSelectorTable.[hm]: new subcomponent + derived and taken as a subset of UIxFreeBusyUserSelector that + implements the table part of the FreeBusy view. Most of the + methods of UIxFreeBusyUserSelector relative to that table were + moved into UIxFreeBusyUserSelectorTable, which can also be used as + a standalone view for AJAX operations. + +2006-10-27 Wolfgang Sourdeau + + * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry + -vCard]): change reverted. + + * UI/Contacts/UIxContactEditor.m: check whether the client contact + folder has selector "globallyUniqueObjectId" before calling that + method. + + * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry + -vCard]): the "setVClass" NGVCard method really is "setClass" + instead. + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder -_searchAttributes]): fixed typo to + request the "streetAddress" instead of the "streetaddress". + ([SOGoContactLDAPFolder -_qualifierForFilter:filter]): lookup + mails that *contain*, and not just *start with* the search + pattern. + + * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry + -vCard]): mark address returned from LDAP as the work address. + + * UI/Templates/SchedulerUI/UIxCalInlineAptView.wox: made the whole + span covered with the anchor, not only the textual information + within. + + * UI/Templates/SchedulerUI/UIxCalMainView.wox: specify the type + argument (event or task) to newEvent in the appointmentListMenu. + Make the appointmentsListView display the appointmentsListMenu. + + * UI/SOGoUI/SOGoAptFormatter.m: enlarge the text size limit from + 12 to 50 before displaying "...". + ([SOGoAptFormatter -fullDetailsForApt::]): display location only + if its length > 0, whether location itself is nil or not... + ([SOGoAptFormatter -tooltipForApt::_refDate]): display information + of which the length > 0. + +2006-10-26 Wolfgang Sourdeau + + * UI/WebServerResources/UIxAppointmentEditor.js: correctly handles + french and ISO dates. + + * UI/Scheduler/UIxFreeBusyUserSelector.[hm]: added code an ivars + from UIxContactSelector to handle contact lists (current and + additional contacts). + + * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage + -_freeBusyAsText]): added handling of an "additional"-named query + parameter that describe the number of additional days after + enddate that should be returned. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -_responseForResults:results]): give priority to results with + "c_uid" fields. If none returned, use the first contact received. + + * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor + -extractQuickFieldsFromEvent:_event]): changed "TENTATIVE" code to + 2 and "CANCELLED" to 0. + +2006-10-25 Wolfgang Sourdeau + + * UI/WebServerResources/UIxAppointmentEditor.js: handle conversion + of start and end dates to short string dates. + + * UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage + -readFreeBusyAction]): new method that returns an array of numbers + corresponding to the state in the freebusy of each "quarter of an + hour" between the "sday" and "eday" date parameters passed in the + url. This permits to handle the display of the freebusy with Ajax + mechanisms. + ([SOGoUserHomePage -_freeBusyAsText]): add 2 days to the end date + since the free busy displays 2 days ahead. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -contactSearchAction]): new action that returns the uid and the + username + email of the user whose name contain the value of the + "search" url parameter. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFreebusyInfosFrom:_startDateto:_endDate]): added fields + useful for the computing of the status of the freebusy. + + * UI/Scheduler/UIxFreeBusyUserSelector.m ([UIxFreeBusyUserSelector + -init]): new component that incarnates a user selector for events + inspired by the new one found in Thunderbird Lightning. + +2006-10-23 Wolfgang Sourdeau + + * UI/WebServerResources/generic.js: added code to enable or + disable anchor visually (following our internal algorithm). + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor -init]): + added new "url" ivar with its classic accessors. + ([UIxComponentEditor -urlButtonClasses]): new method that returns + the class strings for the url button on the appointment/task + editor (depending on the validity of the url). + + * UI/Templates/SchedulerUI/UIxTaskEditor.wox, + UI/Templates/SchedulerUI/UIxAppointmentEditor.wox: start rewriting + the template to match the Lightning's new task/appointment editor. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor -saveValuesIntoAppointment:_appointment]): initialize url from the components'url. + + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -saveValuesIntoTask:_task]): initialize url from the components'url. + +2006-10-20 Wolfgang Sourdeau + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder + -lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]): perform the searchs on objects which start with instead of contain the lookup key. + + * SoObjects/Appointments/SOGoAptMailNotification.[hm]: work on + iCalEntityObject instances instead of just iCalEvent's. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): set ownership of returned records by adding an "owner" key to the resulting dictionaries. + + * SoObjects/SOGo/NSObject+Owner.[hm]: removed module since it's a + bad way of handling ownership that way. + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder -_qualifierForFilter:filter]): search also + on "cn", just like Mozilla. + +2006-10-19 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailToSelection.m ([UIxMailToSelection -to]): + "to" should be retained, otherwise it will be autoreleased and a + crash will occur. + + * UI/Contacts/UIxContactEditor.m ([UIxContactEditor + -writeAction]): updated method to fetch the card before initing + the snapshot. + + * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor + -extractQuickFieldsFromTodo:_task]): fixed to use NSNull instead + of NSNotFound. + + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor + -iCalStringTemplate]): start and due date are now optional. + + * UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl + -setDayStartHour:aStartHour]): added a new "isDisabled" ivar with + appropriate accessors to be settable through the templates. + + * UI/Scheduler/UIxDatePicker.m ([UIxDatePicker -init]): added a + new "isDisabled" ivar with appropriate accessors to be + settable through the templates. + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -availableCalendars]): new method that list the calendars to which + the user has subscribed. + ([UIxComponentEditor -componentOwner]): returns the owner of the + editted object. + + * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor + -extractQuickFieldsFromTodo:_task]): set the start and enddate of + quickentries to null whenever each or all of them are null, by + providing an impossible timestamp from with NSNotFound as value. + +2006-10-18 Wolfgang Sourdeau + + * UI/WebServerResources/UIxMailEditor.js: update the algorithm + that handles the creation of new fields with the new APIs and the + new node structure on the page. + + * UI/Scheduler/UIxAppointmentEditor.m, + UI/Scheduler/UIxTaskEditor.m: + refactored to user UIxComponentEditor as parent class. + + * UI/Scheduler/UIxComponentEditor.[hm]: new class module + containing the methods common to the UIxTaskEditor and the + UIxAppointmentEditor. + +2006-10-17 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -doCalendarQuery:context]): now supports + the handling of time-ranges. + + * UI/WebServerResources/ContactsUI.js: specify a notification type as + parameters when onConfirmContactSelection in invoked. + + * UI/WebServerResources/generic.js: specify a notification type as + parameters when onContactRemove in invoked. + + * UI/WebServerResources/SchedulerUI.js: when the user deselects + all calendars, select his entry. + +2006-10-16 Wolfgang Sourdeau + + * UI/WebServerResources/SchedulerUI.js: edit and delete events + with their owner-relative urls. Generate a correct entry in the + css color table when a user is added to the calendars list. Put + the same color next to the user id. + + * UI/WebServerResources/generic.js: implemented some new helper + methods. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -deleteEntriesWithIds:ids]): don't delete + entries if their owner is not the current user. + + * UI/Scheduler/UIxCalInlineAptView.m ([UIxCalInlineAptView + -displayClasses]): return the correct class for the current event + representation depending on its owner. + + * UI/Scheduler/UIxCalCalendarsListView.m: added method to create + and associate a color for each user login depending on its + position in the list. + + * UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView + -currentRowCSSClass]): return the correct class for the current + row depending on the owner of the event. + + * UI/Contacts/UIxContactSelector.m ([UIxContactSelector + -setColors:colors]): new method to associate a color table with + each user in the list. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): associate each returned record with the owner of the table they are retrieved from. + + * SoObjects/SOGo/NSObject+Owner.[hm]: new extension module to + NSObject to associate an instance with a user. + +2006-10-13 Wolfgang Sourdeau + + * UI/WebServerResources/SchedulerUI.js: added handling of multiple + calendars. + + * UI/WebServerResources/ContactsUI.js: added handling of + notification of changes to contact selectors. + + * UI/WebServerResources/generic.js: added handling of notification + of changes to contact selectors. + + * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView + -updateCalendarsAction]): proxy method to update the user + preference table with the new selected calendar uids. + + * UI/Contacts/UIxContactsListView.m ([UIxContactsListView + -calendarsContactsAction]): new method. + + * UI/Contacts/UIxContactSelector.m ([UIxContactSelector -setCheckedBoxes:boxes]) + ([UIxContactSelector -setHasCheckBoxes:aBool]) + ([UIxContactSelector -isCheckBoxChecked]): new accessors method to + permit the drawing of checkboxes instead of card icons. + + * UI/Scheduler/UIxCalCalendarsListView.m: new component class that + wrap a selector the the "Calendars" tab. + + * UI/Contacts/UIxContactsCalendarsSelection.m: buttons for the + new user calendar selector. + +2006-10-12 Wolfgang Sourdeau + + * UI/Templates/SchedulerUI/UIxAppointmentEditor.wox: time ranges + may cover hour 0 to hour 23. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -iCalStringFromQueryParameter:format:]): dates explicitly set to + utc tz. + + * UI/WebServerResources/SchedulerUI.js: manage both lists of + objects wrt to the toolbar actions. + + * UI/WebServerResources/generic.js: added code to the "String" + class to decode number-encoded char entities. + + * UI/Scheduler/UIxCalMainView.m ([UIxCalMainView + -batchDeleteAction]): new method to delete selected entries in the + lists. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -deleteEntriesWithIds:ids]): new method + that delete identified entries in batch. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent + -jsCloseWithRefreshMethod:methodName]): new method with explicit purpose. + + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -saveAction]), + UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -saveAction]), UI/MailerUI/UIxMailEditor.m ([UIxMailEditor + -sendAction]), UI/Contacts/UIxContactEditor.m ([UIxContactEditor + -saveAction]): + return a UIxJSClose component if everything went fine. + + * UI/Scheduler/UIxTaskEditor.h: interface extracted from + UIxTaskEditor.m. + + * UI/Scheduler/UIxAppointmentEditor.h: interface extracted from + UIxAppointmentEditor.m. + + * UI/Common/UIxJSClose.[hm]: new UIxComponent designed to display + a very light page with javascript code to close a window, by + calling a method on the opener if specified. This component is + designed to work as a response to form postings. + +2006-10-11 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoTaskObject.[hm]: clone of + SOGoAppointmentObject adapted for the handling of tasks. + + * SoObjects/Appointments/NSArray+Appointments.[hm]: category + extracted from SOGoAppointmentObject. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -saveUrl]): returns the url needed to POST the new form to. + redirect the user to /editAsAppointment instead of /edit, + so that SOGoAppointmentFolder can return the correct object type. + + * SoObjects/SOGo/NSObject+AptComparison.m ([NSObject + -compareAptsAscending:_other]): accept empty start or end dates. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): added a "component" parameter to match the query against the specified component types. Made startDate and endDate optional by ignoring them altogether in the query whenever one of them is nil. + ([SOGoAppointmentFolder -doCalendarQuery:context]): fetch + components of type "vtodo" as well as "vevent". + ([SOGoAppointmentFolder -lookupName:inContext:acquire:]): if the + url specified ends with AsTask or AsAppointment, returns the + an object of the appropriate class, otherwise deduce it from its + content if the HTTP method is "PUT", otherwise read its type from + the quick table. + + * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor + -extractQuickFieldsFromTodo:_task]): extract quick fields from + tasks. + + * UI/Scheduler/UIxCalView.m ([UIxCalView + -fetchCoreAppointmentsInfos]): replacement methods for + fetchCoreInfos but by retrieving object with component "vevent". + ([UIxCalView -fetchCoreTasksInfos]): same as above for "vtodo" + components. + + * UI/Scheduler/UIxCalTasksListView.[hm]: clone of + UIxCalAptListView adapted for the handling of tasks. + + * UI/Scheduler/UIxTaskProposal.[hm], + UI/Scheduler/UIxTaskView.[hm], UI/Scheduler/UIxTaskEditor.[hm]: + clones of the UIxAppointment* classes for the handling of tasks. + + * UI/WebServerResources/UIxTaskEditor.js: clone of + UIxAppointmentEditor adapted for the handling of tasks. + + * UI/WebServerResources/SchedulerUI.js: added support for tasks. + Scroll the daily view to the appropriate hour when an appointment + is selected in the appointments list. + +2006-10-05 Wolfgang Sourdeau + + * UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl + -setDayStartHour:aStartHour]): specifies the user timezone on the + given date. + + * UI/Scheduler/UIxAppointmentEditor.m: indicate DTSTAMP with "GMT" + as timezone. + + * SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate -adjustedDate]) + ([NSCalendarDate -driftedDate]): methods made useless by a better + comprehension of the NSTimeZone API... + +2006-10-04 Wolfgang Sourdeau + + * UI/SOGoUI/UIxComponent.m ([UIxComponent -selectedDate]): call + new methods from the NSCalendarDate methods. + + * SoObjects/SOGo/NSCalendarDate+SOGo.m: module replacing and + extending UI/Scheduler/NSCalendarDate+Scheduler.m. + ([NSCalendarDate + +dateFromShortDateString:dateStringandShortTimeString:timeStringinTimeZone:timeZone]): new method that generates a date from two short string formatted as follow: "yyyymmdd" and "hhmm". Thismethod replaces a similar method from UIxComponent (noted below). + ([NSCalendarDate -adjustedDate]): this method returns another + instance set to the correct hour after the original date was set + from a non-GMT timezone. This date can be used for storage. + ([NSCalendarDate -driftedDate]): this method does exactly the + opposite of -adjutedDate, that is, it enables the method + hourOfDay, minuteOfHour etc... to return the values according to + the original date's timezone. This date CANNOT be used for storage. + + * UI/Scheduler/NSCalendarDate+Scheduler.m ([NSCalendarDate + -shortDateString]): new method that will return a "short date + string" (yyyymmdd) from a calendar date object. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent + -_cDateFromShortDateString:dateStringandShortTimeString:timeString]): new method to compute the selected date from the "day" and "hm" query parameters (if found). This method replaces the old algorithm that was found in the "selectedDate" method. + + * Main/sogod.m (main): initialize the NSTimeZone's defaultTimeZone + to the value of SOGoServerTimeZone or "Canada/Eastern" if not found. + +2006-10-03 Wolfgang Sourdeau + + * UI/WebServerResources/SchedulerUI.js: added code to scroll the + view of the day at the height of hour 8:00. + + * UI/Scheduler/UIxCalView.m ([UIxCalView -dayStartHour]): returns 0. + ([UIxCalView -dayEndHour]): returns 24. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView -defaultAction]) + ([UIxContactFoldersView -newAction]): invoke + _selectActionForApplication: on self with the proper attribute too. + + * UI/Contacts/UIxContactsSelectionViewContainer.m: removed since + we now use the action mechanism in UIxContactsListView to keep the + same view for the contact selectors and the regular contact view. + + * UI/Contacts/UIxContactsListViewContainer.[hm]: replaces + UIxContactsListViewContainerBase.[hm] + + * UI/Contacts/UIxContactsListView.[hm]: replaces UIxContactsListViewBase.[hm] + + * UI/WebServerResources/generic.js: generalized emailstring + handling functions. Generalized address book access functions. + + * UI/Contacts/UIxContactsListViewBase.m ([UIxContactsListViewBase + -isPopup]): return YES if the "popup" query parameter is set. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -defaultAction]): keep the url parameters when redirecting. + ([UIxContactFoldersView -selectForSchedulerAction]) + ([UIxContactFoldersView -selectForMailerAction]): new action + methods for the /scheduler-contacts and /mailer-contacts invocations. + + * SoObjects/SOGo/SOGoObject.m: compose the action url using the + newly available NSString+URL category. + + * SoObjects/SOGo/NSDictionary+URL.m ([NSDictionary + -asURLParameters]): handle dictionary entries which could be + instances of NSArray rather than NSString. + + * SoObjects/SOGo/NSString+URL.m ([NSString + -composeURLWithAction:actionparameters:urlParametersandHash:useHash]): when composing the url, remove the encoded parameters first since they will be added later. + ([NSString -urlWithoutParameters]): new method that returns the + url without its parameters. + + * SoObjects/SOGo/NSString+iCal.h: deleted obsolete file. + + * SoObjects/SOGo/NSDictionary+URL.[hm], + UI/SOGoUI/NSString+URL.[hm]: moved from UI/SOGoUI/. + + * UI/WebServerResources/UIxMailEditor.js: add support for + additions of different types (to, cc, bcc) of recipients from the + address book. + + * UI/Common/UIxPageFrame.m ([UIxPageFrame -doctype]): added the + " + + * UI/WebServerResources/ContactsUI.js: hide the current contact + whenever the user changes of contact folder. + + * UI/WebServerResources/UIxContactEditor.js: the contact UID is + now provided by the template when loading the page. + + * SoObjects/SOGo/AgenorUserManager.m ([AgenorUserManager + -iCalPersonWithUid:uid]): new method taken from removed module + 'iCalPerson+UIx'; + +2006-09-28 Wolfgang Sourdeau + + * UI/Scheduler/UIxAppointmentView.m ([UIxAppointmentView + -categoriesAsString]): same as below. + + * UI/Scheduler/UIxAppointmentEditor.m: adapted by using the new + vcalendar API's iCalEvent instead of the removed SOGoAppointment. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -calendarFromContent:cnt]): new helper method. + ([SOGoAppointmentObject -firstEventFromCalendar:calendar]): new + helper method. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -doCalendarQuery:context]): added a + hackish test to detect whether the request concernes VEVENT's or + anything else. Return events only in the former case. + ([SOGoAppointmentFolder + -fetchOverviewInfosFrom:_startDateto:_endDate]): retrieve the + c_name quickfield so that the calendar list can identify the + appointments with their complete "filename". + + * OGoContentStore/OCSiCalFieldExtractor.m: use CardGroup's + groupsOfClass:fromSource: to parse the given vcalendar. + + * UI/Scheduler/iCalRecurrenceRule+SOGo.m: removed obsolete class. + + * UI/Scheduler/SOGoAppointment+UIx.h: removed obsolete class. + + * SoObjects/SOGo/SOGoAppointmentICalRenderer.[hm]: removed + obsolete class. + + * SoObjects/SOGo/SOGoAppointment.[hm]: removed obsolete class. + +2006-09-26 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -lookupName:inContext:acquire:]): be + sensitive to the CalDAV method names. + ([SOGoAppointmentFolder -doCalendarQuery:context]): method for the + "calendar-query" CalDAV method name. + + * UI/WebServerResources/ContactsUI.js: removed a lot of useless + code coming originally from MailerUI.js. + + * UI/WebServerResources/UIxContactEditor.js: imitate the + Thunderbird address book by completing the display name with the + content of the first and last name fields, until the display name + is modified manually. + + * UI/WebServerResources/generic.js: added a "trim" method to the + String class. + + * UI/Contacts/UIxContactsListViewBase.m ([UIxContactsListViewBase + -displayName]): new method that returns the display name from "cn" + or from the "displayName" key if found. + + * UI/Contacts/UIxContactEditor.m ([UIxContactEditor + -initSnapshot]): check if "[card n]" returns anything to avoid a + crash. + + * UI/Common/UIxPageFrame.m ([UIxPageFrame -doctype]): new method + that returns an unparsed doctype definition for the pages. + + * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry + -vCard]): set the card's fn to attribute "displayName" if found + before "cn". + +2006-09-20 Wolfgang Sourdeau + + * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry + -vCard]): handle the "streetAddress" and "l" fields. + + * UI/Templates/MailerUI/UIxMailEditor.wox: arranged the message + header fields by converting the tables to DIVs and SPANs. + + * UI/WebServerResources/generic.css: attempted unification of font + families and size across all the elements. changed the + logConsole's "position" from "fixed" to "absolute" to avoid + performance issues. + +2006-09-19 Wolfgang Sourdeau + + * UI/WebServerResources/ContactsUI.js (uixDeleteSelectedContacts): + empty the contact view when the current contact is being deleted. + + * UI/WebServerResources/MailerUI.js (newContactFromEmail): fully + parse the email field and provide the address full name if found + as the "contactFN" parameter. + + * UI/WebServerResources/generic.js (openMailTo): do not give a + name to the opened window so that serveral ones can be opened at + the same time. + + * UI/MailPartViewers/UIxMailPartTextViewer.m + ([UIxMailPartTextViewer -flatContentAsString]): override method by + replacing carriage returns with "
" in the result string from + super's implementation. + + * UI/Contacts/UIxContactView.m ([UIxContactView + -_urlOfType:aType]): don't manage non-mailto urls through + javascript, let the user decide what's best for him. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -newAction]): transfer all the query parameters by using the + "asURLParameters"'s result string from [self queryParameters]. + + * UI/Contacts/UIxContactEditor.m ([UIxContactEditor + -initSnapshot]): retrieve "contactEmail" and "contactFN" from the + query parameters and put their values (if any) into the snapshot. + + * UI/Contacts/UIxContactView.m ([UIxContactView -note]): convert + carriage-returns to "
". + ([UIxContactView -workCompany]): explicitly initialize company to + nil if org is nil or empty. + + * UI/WebServerResources/UIxContactEditor.js: updated validation + code after we added and renamed some fields. + + * UI/WebServerResources/ContactsUI.js: added code to cache contact + cards and to handle card updates. + +2006-09-18 Wolfgang Sourdeau + + * UI/Contacts/UIxContactView.m ([UIxContactView -hasOtherInfos]): + test the length of the returned string since they will never be + nil. + + * UI/Contacts/UIxContactEditor.m ([UIxContactEditor -saveAction]): + return self if the process went successful, returns an exception + otherwise (and only otherwise...). + + * OGoContentStore/OCSContactFieldExtractor.m + ([OCSContactFieldExtractor -extractQuickFieldsFromVCard:_vCard]): + adapted method to the new VCard api. Since the cards are stored in + vcard format, we no longer deal with a dictionary but with a + NGVCard object... + +2006-09-15 Wolfgang Sourdeau + + * UI/Contacts/UIxContactView.m ([UIxContactView -preferredEmail]): + return a string with a "mailto" url. + ([UIxContactView -_urlOfType:aType]): generic method to return a + url string with a html anchor pointing to it. + + * UI/Contacts/UIxContactEditor.[hm]: UIxContactEditorBase renamed + since subclass "UIxContactEditor" did nothing. Implemented code to + display and modify the values parsed from the vcards, displayed in + a way similar to the Thunderbird addressbook. + + * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry + -save]): new dummy method. + + * SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry + -save]): made method void. + +2006-09-13 Wolfgang Sourdeau + + * UI/Contacts/UIxContactView.m: added many wrapper methods to + display blocks of data à la Thunderbird Addressbook. If data is + available, those wrappers (around the NGVCard methods) will + enclose the results in a proper HTML output with the correct label + (if present), otherwise it will return an empty string. + ([UIxContactView -vcardAction]): new action to return the contact + as text/vcard (for exporting). + + * SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry + +contactEntryWithName:aNamewithLDAPEntry:anEntryinContainer:aContainer]): adapted the mapping of the LDIF data with the new NGVCard API. + + * SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry + -vCard]): create a new NGVCard instance when no data is available + and retain it. + ([SOGoContactGCSEntry -save]): save the vCard using the new + "versitString" API method/message. + + * UI/Contacts/UIxContactView.h: separated interface from + UIxContactView.m. + + * UI/WebServerResources/ContactsUI.js: add-ed code to download card + views and display them beneath the list. + +2006-09-08 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -userTimeZone]): retain + the timezone even when it's the server timezone. + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -privateContacts:inContext:]): no long configure the calendar + object with the user's timezone since it's now accessible + application-wide throught the SOGoObject methods. + + * UI/SOGoUI/UIxComponent.[hm]: removed the "viewTimeZone" ivar and + method. Removed the "backendTimeZone" method. + + * UI/MainUI/SOGoUserHomePage.[hm]: made a subclass of UIxComponent + instead of SoComponent. + + * SoObjects/Appointments/SOGoAppointmentObject.m: + ([SOGoAppointmentObject -viewTimeZoneForPerson:_person]): returns + [self serverTimeZone] instead of "EST" (which was removed). + + * SoObjects/Appointments/SOGoAppointmentFolder.[hm]: removed the + "timeZone" ivar and its accessors. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -serverTimeZone]): new + centralized method returing the timezone configured in the + userdefaults db or "Canada/Eastern" if missing. + ([SOGoObject -userTimeZone]): new centralized method returing the + timezone of the current user or the server timezone if missing + from the user configuration table. + +2006-09-07 Wolfgang Sourdeau + + * UI/WebServerResources/SchedulerUI.js: implemented caching of + date selectors. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent -userFolderPath]): + return a path based on the object's context instead of the first + level in SOGo's object hierarchy... + +2006-09-06 Wolfgang Sourdeau + + * UI/Templates/SchedulerUI/UIxCalDayTable.wox: day columns can now + be clicked. + + * UI/Templates/SchedulerUI/UIxCalDateSelector.wox: pass the user's + timezone ([self viewTimeZone]) to the WEMonthOverview component to + avoid a confusion with the days. + + * UI/Templates/SchedulerUI/UIxCalInlineAptView.wox: appointments + can now be clicked. + + * UI/WebServerResources/SchedulerUI.js: implemented a mechanism to + imitate Sunbird's synchronization between the 3 visible views. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent -selectedDate]): make + sure the numbers in dateString are formatted so as to take 4 chars + for the year and 2 for the day and the month, otherwise + NSCalendarDate will return a nil date. + ([UIxComponent -applicationPath]): return a path based on the + object's context instead of the second level in SOGo's object + hierarchy... + +2006-09-05 Wolfgang Sourdeau + + * UI/SOGoUI/UIxComponent.m ([UIxComponent -selectedDate]): add the + user's timezone abbreviation to the date string passed as parameter to + NSCalendarDate to generate an accurate date instance. Do the same + when no date is specified and today is chosen. + + * UI/WebServerResources/UIxAppointmentEditor.js: convert the + form's time values to integers before comparing them. + + * UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView -currentStartTime]) + ([UIxCalAptListView -currentEndTime]): initialize the resulting + dates timezone with [self viewTimeZone]. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent -init]): new + "viewTimeZone" ivar destined to hold an instance of the user's + timezone in memory. + ([UIxComponent -viewTimeZone]): take the timezone from the user's + prefs. + +2006-08-30 Wolfgang Sourdeau + + * UI/Templates/SchedulerUI/UIxAppointmentEditor.wox: completely + rearranged the layout. + + * UI/WebServerResources/UIxAppointmentEditor.js: added code to + manage showing and hiding appointment details. + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -privateContacts:inContext:]): init the SOGoAppointmentFolder's + timezone by taking the current user's timezone setting. + + * SoObjects/Appointments/SOGoAptMailNotification.m: same as below. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject -changeParticipationStatus:inContext:]): + set default timezone to EST, although this code should be + rewritten to handle a system and a user default value. + + * UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl + -takeValuesFromRequest:_rqinContext:_ctx]): enhanced method to + take the values from the hour and minute INPUTs when data is + POSTed since we no longer use the UIxTimeSelector component. + ([UIxTimeDateControl -selectableHours]) + ([UIxTimeDateControl -selectableMinutes]): new methods used by the + template SELECTs to display reasonable and acceptable values + instead of all the possibilities. + + * UI/WebServerResources/generic.js: adapted code for the new + implementation of the UIxContactSelector component (added a + "remove" button, removed the previous INPUT and replaced them with + links of class "button"). + + * UI/Scheduler/UIxTimeDateControl.h: separated interface from + UIxTimeDateControl.m. + + * UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable -currentAppointmentDay]) + ([UIxCalDayTable -currentAppointmentHour]): new methods that + returns correctly formatted values used as attributes for JS code. + + * UI/Contacts/UIxContactSelector.m ([UIxContactSelector + -initialContactsAsString]): renamed implementation of + initialParticipants. + ([UIxContactSelector -currentContactId]) + ([UIxContactSelector -currentContactName]): new methods used when + listing the initial contacts in the widget. Currently, both return + the person's cn but the latter should ultimately return a user + fullname. + + * UI/Contacts/UIxContactSelector.h: separated interface from + UIxContactSelector.m. + + * UI/Scheduler/UIxDatePickerScript.[hm]: component removed since + all javascript code is now put in Scheduler.js/generic.js. + + * UI/Scheduler/NSCalendarDate+UIx.[hm]: category removed, code + moved into NSCalendarDate+Scheduler instead. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -setTimeZone:newTZ]): new method to + configure the timezone from SOGoUserFolder when the instance is + being created. + ([SOGoAppointmentFolder -viewTimeZone]): MET was removed. Returns + the value of the new "timezone" ivar. + +2006-08-25 Wolfgang Sourdeau + + * UI/WebServerResources/SchedulerUI.{css,js}: added a tabview with + the date selector in the first page and the container of the + future calendar selector in the second page. + + * UI/WebServerResources/generic.js: added code for handling tabbed + views. + + * UI/Common/UIxPageFrame.m ([UIxPageFrame -productFrameworkName]): + returns the bundle name associated to the current running product. + +2006-08-24 Wolfgang Sourdeau + + * UI/WebServerResources/UIxAppointmentEditor.js: fixed the AJAX + exception by invoking a timeout on the opener rather than invoking + the list refresh method. + + * UI/Scheduler/UIxCalDayView.m ([UIxCalDayView -labelForDay]): + removed method. + + * UI/Scheduler/UIxCalWeekView.m ([UIxCalWeekView -weekBeforePrevWeekQueryParameters]) + ([UIxCalWeekView -prevWeekQueryParameters]) + ([UIxCalWeekView -nextWeekQueryParameters]) + ([UIxCalWeekView -weekAfterNextWeekQueryParameters]): new methods + that return the dates relatively to the current day. + ([UIxCalWeekView -lastWeekName]) + ([UIxCalWeekView -currentWeekName]) + ([UIxCalWeekView -nextWeekName]) + ([UIxCalWeekView -weekAfterNextWeekName]) + ([UIxCalWeekView -_weekNumberWithOffsetFromToday:offset]): new + methods that returns the label for the corresponding weeks. + + * UI/Scheduler/UIxCalDayTable.[hm]: new class module/component + used by UIxCalDayView and UIxCalWeekView to display the events + occuring in one or more days. + +2006-08-22 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalMainView.m: extended class to populate the + entries in the new "monthMenu" and "yearMenu". + + * UI/Scheduler/UIxCalDayView.m ([UIxCalDayView -labelForDay]): new + method to return the current day as a string formatted depending + on the current locale. + + * UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView -startDate]) + ([UIxCalAptListView -endDate]): "today" is now the default filter + for displayed events. + ([UIxCalAptListView -currentSerialDay]): new method returning the + date of the current enumerated appointment in serial form + (yyyymmdd). + + * UI/WebServerResources/SchedulerUI.js: added code to select the + relevant day when an appointment is selected. Added code to popup + a month and a year menu whenever the header entries are clicked in + the calendar widget. + + * UI/WebServerResources/generic.js: made addClassName and + removeClassName methods of HTMLElement. + +2006-08-21 Wolfgang Sourdeau + + * UI/WebServerResources/MailerUI.js: fixed the contact creation + from email addresses. + + * UI/WebServerResources/generic.js: centralized the search-related + functions here since the same code was used across the 3 + applications. + + * UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView -startDate]) + ([UIxCalAptListView -endDate]): return the required dates needed + depending on the value given to the "filterpopup" url parameter. + + * UI/Common/UIxToolbar.m ([UIxToolbar -buttonLabel]): reduced the + code by invoking UIxComponent's labelForKey:. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent -labelForKey:]): use + [self pageResourceManager] instead of [self resourceManager]. + + * UI/Contacts/UIxContactEditorBase.m: invokes + globallyUniqueObjectId on the clientobject's class instead of the + hardcoded "SOGoFolder". + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -newAction]): redirect the "new" action to the personal (default) + contact folder. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + +objectWithName:inContainer:]): new constructor. + + * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder + -lookupContactWithId:recordId]): always create a contact object, + even if it does not exist. + +2006-08-18 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalMainView.[hm]: new class to serve as a pseudo + component that lays out the different components of SOGoCalendar. + Only serves as an Objective-C counterpart to its xml template. + + * UI/Scheduler/UIxCalInlineMonthOverview.h: interface extracted + from its .m file. + + * UI/Scheduler/UIxCalFilterPanel.[hm]: new class designed to + display a widget to handle the information displayed in the + appointments list. Not currently used, lacks implementation. + + * UI/Scheduler/UIxCalDateSelector.[hm]: new class designed to + display a calendar as a dynamic widget from where one can select + the current visible day. + + * UI/Scheduler/NSCalendarDate+Scheduler.[hm]: category code + extracted from UIxCalInlineMonthOverview.m. + + * UI/Scheduler/UIxDatePicker.m: removed the jsPopup, jsCode and + calendarPageURL methods. The javascript code is handled by .js + files as much as possible... + + * UI/WebServerResources/ContactsUI.js, + UI/WebServerResources/MailerUI.js: adapted to the code refactoring + in generic.js. + + * UI/WebServerResources/SchedulerUI.js: implemented functions to + handle the new widgets. XmlHTTPRequest code taken from + MailerUI.js. + + * UI/WebServerResources/generic.js: put some functions related to + element selections as methods to HTMLElement and HTMLTableElement. + + * UI/Scheduler/UIxCalAptListView.[hm]: new class designed to + display the list of appointments (embodies the code-size of + UIxCalAptListView; answers to the "aptlist" method). + +2006-08-15 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalWeekOverview.m ([UIxCalWeekOverview + -correctURLAction]): new short action method replacing the method + below by taking far less code. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -GETAction:]): removed method. Replaced + with an action in the view-related code. + + * UI/Scheduler/UIxAppointmentEditor.m: invoke + "stringByEscapingHTMLString" on the resulting value to avoid + issues with accented characters. + ([-jsCode]): removed method since the javascript code was merged + into SchedulerUI.js. + +2006-08-14 Wolfgang Sourdeau + + * UI/Scheduler/iCalPerson+UIx.m ([iCalPerson +personWithUid:]): + new class method that returns an iCalPerson based on the UID given + as param. + + * UI/Contacts/UIxContactsListViewContainerBase.m: + UIxContactsListViewContainer renamed to serve as a base class for + the contact lists in both the contact editor and the contact + selectors. + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder + -LDAPSetHostname:setPort:setBindDN:setBindPW:setContactIdentifier: + setUserIdentifier:setRootDN:]): an LDAP field specifying the + loginname of the users can now be specified. + + * UI/WebServerResources/generic.js: added code to manage contact + lists through the new implementation of the UIxContactSelector. + + * UI/Templates: put the templates related to SchedulerUI in its + own directory. + + * SoObjects/Contacts/NGLdapEntry+Contact.m ([NGLdapEntry + -asDictionaryWithAttributeNames:withUID:andCName:cName]): add an + entry for "uid" with the field name representing the login name of + the user in the corresponding LDAP branch. + +2006-08-10 Wolfgang Sourdeau + + * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder + -lookupName:_keyinContext:_ctxacquire:_flag]): when the HTTP + request is a PUT, always create an entry, even if we're not sure + it does exist. + +2006-08-09 Wolfgang Sourdeau + + * UI/WebServerResources/ContactsUI.js: implemented live-search. + + * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders + -appendSystemSourcesInContext:context]): populated method with + code that creates entries mapped to instances SOGoContactFolder, + based on the configuration found in the NSUserDefaults under the + key "SOGoLDAPAddressBooks". + ([SOGoContactFolders + -lookupName:nameinContext:contextacquire:acquire]): + "contactsources" do not exist anymore, SOGoContactFolder was split + into two classes: SOGoContactGCSFolder and SOGoContactLDAPFolder + and one protocol: SOGOContactFolder, instead. + ([SOGoContactFolders -contactFolders]): new accessor used by the + views of SOGoContactXXXFolder to list the possible sources. + + * SoObjects/Contacts/SOGoContactObject.h: new protocol that + defines the methods that UIxContactsView, ..Editor and so on... + can expect. + + * SoObjects/Contacts/SOGoContactFolder.h: new protocol that + defines the methods that UIxContactsListViewBase expects as well + as the data fields returned in the contact lists. + + * SoObjects/Contacts/SOGoContactLDAPFolder.[hm]: new class that + returns entries an LDAP server. Conforms to the new + SOGOContactFolder protocol. + + * SoObjects/Contacts/SOGoContactLDAPEntry.[hm]: new class that + returns a vCard based on contact entries from an LDAP server. + Conforms to the new SOGOContactObject protocol. + + * SoObjects/Contacts/NGVCardSimpleValue+Contact.m + ([NGVCardSimpleValue -vCardEntryString]): generates the correct + entry for the textual representation of the vCard. + + * SoObjects/Contacts/NGVCardSimpleValue+Contact.[hm]: new class + extension. + + * SoObjects/Contacts/SOGoContactGCSEntry.[hm]: new module name of + "SOGoContactObject". + + * SoObjects/Contacts/NGVCard+Contact.m ([NGVCard -asString]): new + method that generates a textual representation of the vcard. + + * SoObjects/Contacts/NGVCard+Contact.[hm]: new class extension. + + * SoObjects/Contacts/SOGoContactGCSFolder.[hm]: new module name of + "SOGoContactFolder". + + * SoObjects/Contacts/SOGoContactSource.h, + SoObjects/Contacts/SOGoPersonalAB.[hm]: unused classes and + protocols. + + * SoObjects/Contacts/NGLdapEntry+Contact.m ([NGLdapEntry + -singleAttributeWithName:key]): new method that returns the first + object associated with an ldap key (where generally one value is + returned by key). + ([NGLdapEntry + -asDictionaryWithAttributeNames:attributeNamesandCName:cName]): + map the entry into an NSDictionary for processing by + UIxContactsListViewBase.m with the least possible overhead. + + * SoObjects/Contacts/NGLdapEntry+Contact.[hm]: new class + extension. + +2006-08-04 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -privateContacts:inContext:]): now returns an instance of + SOGoContactFolders. + + * UI/Contacts/UIxContactsListViewContainer.m + ([UIxContactsListViewContainer -contactFolderName]): new method to + return the absolute path to the current contact folder, called + from within the template. + + * UI/Templates/ContactsUI/UIxContactsListViewContainer.wox: added + JS code to initialize the 'currentContactFolder' generic var. + + * SoObjects/Contacts/SOGoContactFolder.m ([SOGoContactFolder + +contactFolderWithSource:inContainer:andName:]): new class + method meant to return an instance connected to the specified + source. Currently useless but won't be anymore in the next few + days. + + * SoObjects/SOGo/SOGoUserFolder.h: commented out declaration of + the "lookupFreeBusyObject" method since it does not exist. + + * UI/Contacts/UIxContactFoldersView.[hm]: new class module serving + as a "view" for the SOGoContactFolders object. Does nothing but + redirect the browser to the URL of the personal address book of + the user. It does not even have a template. + + * SoObjects/Contacts/SOGoPersonalAB.[hm]: new class module + implementing the SOGoContactSource protocol. Does nothing + currently but will be used to implement access to the personal + address book of the user stored in the SOGo database. + + * SoObjects/Contacts/SOGoContactSource.h: new "SOGoContactSource" + protocol defining an API common to all possible types of contact + sources. + + * SoObjects/Contacts/SOGoContactFolders.[hm]: new class module + serving as the root of the contact folders available to the + current user. Correctly lists the contact sources in webdav. + +2006-08-03 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailAccountsView.m ([UIxMailAccountsView + -composeAction]): new action method that permits external object + to write a message from the default (primary) account. + + * UI/Contacts/UIxContactEditorBase.m ([UIxContactEditorBase + -initSnapshot]): new method with code taken from "defaultAction" + but needed for others. + ([UIxContactEditorBase -writeAction]): new action designed to + compose the correct URL needed to obtain the MailerUI's email + editor with the correct "mailto" parameter. + + * UI/Common/UIxSortableTableHeader.m: moved from MailerUI to + Common so that other modules can use it. + + * UI/Contacts/UIxContactsListViewContainer.m: container to make it + easier to manage both ajax and non-ajax requests. + + * UI/Contacts/UIxContactsFilterPanel.m: clone of + UIxMailFilterPanel, but applicable to contact lists. + + * SoObjects/Contacts/NSDictionary+Contact.m ([NSDictionary + -vcardContentFromSOGoContactRecord]): use the new standard methods + created for each type of entry. If a line is determined to not + contain information, it will be skipped. + + * SoObjects/SOGo/AgenorUserManager.m ([AgenorUserManager + +initialize]): init defaultMailDomain with the user default + "SOGoDefaultMailDomain". + +2006-08-02 Wolfgang Sourdeau + + * UI/Contacts/UIxContactEditorBase.m ([UIxContactEditorBase + -saveAction]): reorganized methods to only have ONE return point. + Invoke saveRecord: directly on the clientObject instead of + saveContentString, which does the same thing anyway. + + * SoObjects/Contacts/NSDictionary+Contact.m + ([NSDictionary -vcardContentFromSOGoContactRecord]): extension + method to convert the dictionary returned with the user submission + to a record in VCARD format to be stored in the database. + +2006-08-01 Wolfgang Sourdeau + + * UI/WebServerResources/MailerUI.js: when opening the context menu + of the message list, select the message below the mouse cursor and + deselect the other selected messages temporarily. This mimics the + behaviour of Thunderbird for that matter and was already + implemented for the entries of the folder tree. + + * UI/MailerUI/UIxMailFolderMenu.m ([UIxMailFolderMenu + -iconForMenuItem]): new method that returns the fully qualified + relative URL to the icon representing the mailbox, or the default + mailbox icon if needed. + + * UI/SOGoUI/UIxComponent.m ([UIxComponent + -urlForResourceFilename:filename]): automatically return an empty + string whenever the filename passed as argument is nil. + + * UI/WebServerResources/MailerUI.js: open the mailboxes with the + "desc" parameter set to 1 so that they are sorted in descending + order by default. Also, added "onHeaderClick()", triggered by + clicking on the message list header elements. + + * UI/MailerUI/UIxMailSortableTableHeader.m + ([UIxMailSortableTableHeader -isSortedDescending]): same as below. + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView + -isSortedDescending]): defaults to "YES" when the sort order is + not specified. + +2006-07-31 Wolfgang Sourdeau + + * UI/WebServerResources/MailerUI.js: + - message cache: set the max num of cached messages to 20. Limit + the cached message size to 30000 bytes. + - ajax: when a message request is called while one is already + being performed, the latter will be cancelled. Idem when + retrieving the content of a mailbox. + - folder tree: when a mailbox is selected because of the URL + requested (initMailboxSelection), the dtree is expanded throughout + the mailbox entry's parent hierarchy to ensure it is made visible + when the page is being displayed. (new function: expandUpperTree). + - mailbox loading: when loading a mailbox where a message was + previously selected, we invoke its url with the "pageforuid" + parameter correctly specified. During callback processing, we scan + the table for the related row and reselect it. + Also, the message area is set blank before loading any mailbox. + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView + -defaultAction]): if the "pageforuid" parameter is passed in the + url, take its value and invoke [self firstMessageOfPageFor:] + consequently to deduce the first message to display. Otherwise, + set it to "idx", otherwise set it to 0. + ([UIxMailListView -firstMessageOfPageFor:]): new method + that determines the first message of the page where the message + passed as parameter is contained. + + * UI/WebServerResources/UIxMailListView.js: removed this module, + its code was put in MailerUI.js instead. + +2006-07-28 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailFolderMenu.m: a descendent of UIxMailTree + which returns the nodes for the parent specified in "parentMenu". + Used to generate the javascript code for the folder dtree. + + * UI/Templates/MailerUI/UIxMailPanelFrame.wox: the components + using that container-template are now using UIxMailMainFrame + since UIxMailPanelFrame had no real interest. File removed. + + * UI/WebServerResources/dtree.{css,js}: new files to handle + javascript-generated mailbox tree. Modified from original version + by integrating the previous code with the one we are using for + selections and mailbox handling. Minor visual enhancements too... + +2006-07-25 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoUser+Mail.m: if only one identity is to be + returned, put it in an NSArray before returning it (fixes + bug#217). + +2006-07-24 Wolfgang Sourdeau + + * UI/SOGoUI/NSString+URL.m ([NSString -hostlessURL]): new method + that returns a url string stripped from its "http://hostname" + prefix. + + * UI/SOGoUI/NSDictionary+URL.[hm]: moved from UI/Common. + + * UI/SOGoUI/NSString+URL.[hm]: moved from UI/Common. + +2006-07-17 Wolfgang Sourdeau + + * UI/MailerUI/WOContext+UIxMailer.m ([WOContext + -mailDateFormatter]): retrieve the timezone from the user settings + and pass it to the returned dateFormatter. Also, the dateFormatter + is kept in a static variable to avoid useless + creations/destructions. + + * UI/MailerUI/UIxMailFormatter.m ([UIxMailDateFormatter + -setTimeZone:newTimeZone]): new accessor to specify the timezone. + + * UI/MailerUI/UIxMailFilterPanel.m ([UIxMailFilterPanel -setSearchCriteria:]) + ([UIxMailFilterPanel -searchCriteria]): new methods, similar to + s/Criteria/Text/ to handle the "criteria" form parameter. + +2006-07-11 Wolfgang Sourdeau + + * UI/WebServerResources/uix.css: enhanced the toolbar appearance + to integrate better with the firefox look&feel. Added entries for + the new "menu" DIV class (popup menus). + + * UI/WebServerResources/generic.js: added "sanitizeMailTo" which + takes any chunk of text as param, detects the user email and the + optional first and last names and return them in a well-formatted + way. Renamed "getSelection" to "getSelectedNodes" to avoid a + namespace conflict. Added "onMenuClick(node, event, menuId)" to + handle popup menus through "onclick" element attributes (node = + this, event = event and menuId = name of the menu DIV id to + popup). + + * UI/Contacts/UIxContactEditorBase.m ([UIxContactEditorBase + -snapshot]): add an entry for "email" into the snapshot + dictionary if a "contactEmail" URL parameter was detected and if + the entry for "email" is empty. + + * UI/Contacts/Toolbars/SOGoContactFolder.toolbar: the "new card" + button now invokes the newContact() js function in ContactsUI.js + instead of opening "new" directly. newContact() pops up a window + stripped from its navigation bar. + + * UI/Contacts/ContactsUI.js: new module specific to the ContactsUI + bundle (AddressBook). + + * UI/Templates/MailerUI/UIxMailView.wox: added a div of class + "menu" and id "addressMenu" have the header email addresses + display it with the new menu code in generic.js. + + * UI/Templates/MailerUI/UIxMailPanelFrame.wox: same as below + + replaced the body tables with a div of class "pageContent" + (standardization across the page templates). + + * UI/Templates/MailerUI/UIxMailMainFrame.wox: include + productJavaScriptURL and pageJavaScriptURL (conditionnally) since + those are now inherited from UIxPageFrame. + + * UI/MailerUI/UIxMailView.js: new file specific to UIxMailView. + + * UI/MailerUI/UIxMailToSelection.m ([UIxMailToSelection -to]): if + a "mailto" URL parameter is detected and the "to" array is empty, + initialize "to" with the value of "mailto" before returning it. + + * UI/MailerUI/UIxMailEditorAction.m ([UIxMailEditorAction + -composeAction]): rewrote method in a cleaner way and with usage + of the URL extensions to NSString and NSDictionary (see below). + Also, if a "mailto" url parameter is detected, pass it to the + redirected url. + + * UI/MailerUI/UIxMailMainFrame.m: subclassed from UIxPageFrame to + reduce code. + + * UI/Common/NSDictionary+URL.m ([NSDictionary -asURLParameters]): + returns a parameter string to add to a base URL. + + * UI/Common/NSString+URL.m ([NSString + -composeURLWithAction:parameters:andHash:useHash]): new method to + compose a complete URL from an object URL with parameters and an + optional '#' character. + + * UI/Common/UIxPageFrame.h: separated interface from + UIxPageFrame.m. + +2006-07-07 Wsourdeau Sourdeau + + * UI/Scheduler/UIxAppointmentEditor.m: returns yes to "isPopup"; + + * UI/WebServerResources/generic.js: added code to manage + selections within HTML containers. + + * UI/Common/UIxPageFrame.m ([UIxPageFrame -productJavaScriptURL]): + added method to determine the possible URL for a product-specific + javascript filename of the forme .js. + ([UIxPageFrame -hasProductSpecificJavaScript]): new method. + ([UIxPageFrame -isPopup]): new method to determine whether the + application navigator bar should be displayed (main page) or not + (popup page). + + * SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator + -LDAPCheckLogin:_loginpassword:_pwd]): new method to authenticate + the user through LDAP. + +2006-07-06 Wolfgang Sourdeau + + * The toolbar code from the MailerUI product was taken, renamed as + "UIxToolBar" and put into UI/Common. Toolbar plists were created + for the Contacts and Scheduler products and put in their respectir + Toolbars/ subdirectories. Finally, + UI/Templates/{UIxToolbarButton,UIxToolbarSeparator}.wox, and + UI/Common/{UIxToolbarButton,UIxToolbarSeparator}.m were removed + and an invocation to the UIxToolbar component was put at the top + of UI/Templaces/UIxPageFrame.wox. + + * UI/Common/UIxToolbar.m: new "isLastGroup" method to determine + within the templates whether a separator should be displayed. + + * UI/Common/UIxToolbar.m ([UIxToolbar -hasButtons]): new method + that returns NO if the toolbar is empty. + +2006-07-05 Wolfgang Sourdeau + + * UI/Templates/UIxPageFrame.wox: replaced central table with a DIV. + + * UI/Common/UIxToolbarSeparator.m, UI/Common/UIxToolbarButton.m: + new toolbar objects. + + * UI/Templates/UIxPageFrame.wox: use the exact html code as below. + + * UI/Templates/MailerUI/UIxMailMainFrame.wox: redone the + linkbanner as a DIV instead of a TABLE. + + * UI/MailerUI/UIxMailMainFrame.m [UIxMailMainFrame + showLinkBanner]: + returns 'YES' to request the display of the navigation bar between + applets. + +2006-06-15 ludovic@inverse.ca + + * It's now possible to set the default + domain using for email using the + SOGoDefaultMailDomain preference key. + +2006-06-15 ludovic@inverse.ca + + * Initial import of SOGo from trunk. - * ChangeLog: created diff --git a/ChangeLog.skyrix b/ChangeLog.skyrix new file mode 100644 index 000000000..2ba8ca549 --- /dev/null +++ b/ChangeLog.skyrix @@ -0,0 +1,5655 @@ + +2005-03-03 Marcus Mueller + + * UIxCalWeekOverview.wox: some pretty printing + +2005-02-17 Marcus Mueller + + * common.make: removed dependency to removed libSOGoLogic + +2004-10-15 Marcus Mueller + + * common.make: updates for inline compilation, removed compatibility + for gstep-make < 1.10 + +2004-09-07 Marcus Mueller + + * README: Update with information regarding localization + +2004-08-26 Marcus Mueller + + * Added "Mailer" product. + +2004-08-25 Marcus Mueller + + * Added "Contacts" product. + +2004-08-10 Marcus Mueller + + * Added "Anais" product. + +2004-07-07 Marcus Mueller + + * Replaced all occurrences of zidestoreui.css with uix.css + +2004-06-30 Marcus Mueller + + * SOGoUI: moved over from Common to ease build dependencies. + +2004-06-30 Marcus Mueller + + * Scheduler/UIxAppointmentEditor.m: improved -saveAction. Does + everything in a complete manner now - except for saving which isn't + done at all. + +2004-06-30 Helge Hess + + * Scheduler/UIxAppointmentEditor.m: made the hack more hackish to work + on MacOSX + +2004-06-28 Marcus Mueller + + * Common/UIxComponent.[hm]: moved -ownMethodName here. + + * Scheduler/UIxCalView.[hm]: removed -ownMethodName, moved to + UIxComponent (reuse). + + * Scheduler/UIxAppointmentView.[hm]: first "draft" of view component. + The look of OGo is resembled closely, but most features are still + missing. + +2004-06-28 Marcus Mueller + + * Scheduler/GNUmakefile.preamble: links against libSOGoLogic now. + + * Scheduler/UIxAppointmentView.m, Scheduler/UIxAppointmentView.wox: + test of iCal object. + +2004-06-23 Marcus Mueller + + * UIxCalMonthOverview.[m,wox]: completed month view. Turned out to + be much more difficult to improve with style sheets than expected. + Requires version 4.2.45 of WEExtensions. + +2004-06-22 Marcus Mueller + + * Refactoring: Renamed everything from OGo to UIx in order to avoid + nameclashes (happens on OSX related to NGBundleManager) + + * Refactoring 2: Moved methods from UIxWeekOverview to UIxCalView. + + * Highlighting in UIxWeekOverview works now. + +2004-06-22 Helge Hess + + * Common/GNUmakefile.preamble: fixed linking for OGo gstep-make + +2004-06-21 Helge Hess + + * Scheduler/OGoCalWeekOverview.m: fixed syntax errors + +2004-06-18 Marcus Mueller + + * Implemented proper calendar in week overview. Highlighting isn't + enabled, yet. + +2004-06-18 Marcus Mueller + + * Common/OGoComponent.[hm]: new component which serves as a base + component for calendar components now. Knows how to deal with + queryParameters and offers url construction method(s). + + * All existing components have been rewritten to use queryParameters + instead of hardcoded strings where this is feasible. This provides + future extensibility and flexibility. + + * Handling of dates has been fixed to center around the use of a + 'day' parameter. startDate/endDate are coupled to this, but + don't override it as it's the duty of the individual view to set + its (feasible) ranges accordingly. The new behaviour is noticable + in the calendar selection tabview instantly, as it now replicates + what OGo does. + +2004-06-16 Marcus Mueller + + * Common/OGoAppNavView.m: construct URL correctly. + + * Common/OGoPageFrame.m: display login correctly. + + * Common/calendar.css: cosmetic changes. + + * Scheduler/OGoCalSelectTab.m: always display mondayOfWeek. + + * Scheduler/OGoCalBackForthNavView.m: created. + +2004-06-16 Marcus Mueller + + * Common/zidestoreui.css: new style for button_auto. + + * Scheduler/OGoCalView.[hm]: API for completing hrefs with necessary + query parts. + + * Scheduler/OGoCalWeekView.m: bugfix for startDate. + + * Scheduler/product.plist: added still missing views -> point to + weekoverview for the time being. + +2004-06-15 Marcus Mueller + + * Common/UIxTabView.m: removed class from
tag, removed rendering + of headerFooter (what's that good for anyways?) + + * Several resources which resolved to wrong products added statically + in templates. + + * Cosmetic changes in templates. + +2004-06-14 Helge Hess + + * Scheduler/OGoCalMonthOverview.wox: added missing rsrc namespace + +2004-06-14 Helge Hess + + * Common/common.h: fixed a gcc 3.4 warning + +2004-06-14 Helge Hess + + * added aggregate project for UI-X + +2004-06-14 Marcus Mueller + + * Common/calendar.css: new date_label (unused) + + * Scheduler/OGoCalSelectTab.m: finished all labels + + * Scheduler/OGoCalDateLabel.m, Scheduler/OGoCalDateLabel.wox: new + component for rendering the correct date label based on startDate, + endDate and selection + + * Scheduler/OGoCalMonthView.m: prev/next month corrected + + * Scheduler/OGoCalMonthOverview.wox: uses date label and tabs now + + * Scheduler/OGoCalWeekOverview.wox: completed layout + + * Scheduler/GNUmakefile: new component added + +2004-06-14 Marcus Mueller + + * Common/UIxTabView.[hm]: more stylesheet support via headerStyle + and bodyStyle bindings. + + * Common/zidestoreui.css: styles for tabs, resembling OGo look. + + * Scheduler/OGoCalSelectTab.m: implemented dateLabel (for testing). + + * Scheduler/OGoCalSelectTab.wox: corrected selection binding namespace. + +2004-06-08 Helge Hess + + * Scheduler/NOTES: added class hierarchy + + * */common.h, GNUmakefile.preamble.: fixed for OSX compile + +2004-06-08 Marcus Mueller + + * Common/images: added a bunch of images from OGo + +2004-06-07 Marcus Mueller + + * Custom/GNUmakefile: changed ZIDESTORE to include installed version + (ZideStore12). Removed post install hooks. + + * Custom/GNUmakefile.postamble: new file, post install hooks and + xmllint for .wox. + +2004-06-07 Marcus Mueller + + * Scheduler/GNUmakefile: changed ZIDESTORE to include installed version + (ZideStore12). Removed post install hooks. + + * Scheduler/GNUmakefile.postamble: post install hooks updated for + GNUSTEP_BUILD_DIR. + +2004-06-03 Helge Hess + + * Scheduler/OGoCalWeekOverview.m: moved navigation URL generation to + superclass (now generic because we use the 'ownMethodName'). Could + even be moved to OGoCalView? + + * Scheduler/OGoCalMonthView.m: added next/prev month URL generation + methods, calculate startdate from form value + + * Scheduler/OGoCalView.m: added -ownMethodName method to return the + last path component of the request URL (the SOPE method), eg + 'weekoverview' for OGoCalWeekView, added + -dateNavigationURLWithNewStartDate: method to calculate 'startDate' + URLs (should be improved to include existing query parameters!) + + * Scheduler/OGoCalWeekOverview.m: minor tweaks ;-) + +2004-06-03 Marcus Mueller + + * Scheduler/OGoCalWeekView.m: construct startDate from formValue, + otherwise use current week's monday as startDate. + + * Scheduler/OGoCalWeekOverview.wox: switch back/forth + + * Scheduler/OGoCalWeekOverview.m: provide URLs for switching back/forth + weekoverview. + + * Scheduler/OGoCalView.[hm]: methods for converting dates into strings + and vice versa. + + * Scheduler/OGoAppointmentView.m, Scheduler/OGoCalView.m: fixed include + + * ChangeLog: created +2005-07-30 Helge Hess + + * v0.9.22 + + * UIxKolabPartContactViewer.m: added accessors for multi-value fields + + * UIxKolabPartViewer.m: added item + + * UIxKolabPartViewer.m: cache parsed DOM document (v0.9.21) + + * v0.9.20 + + * UIxMailPartViewer.m: added ability to use a fallback string encoding + in case the default one or the one specified in the content-type did + fail (this can happen with Outlook iCal mails ...). + + * UIxMailPartICalViewer.m: hardened against missing content data, use + Latin-1 as a fallback encoding in case the part encoding didn't work + out. + + * prepared MIME part viewers for Kolab XML types + + * UIxMailRenderingContext.m: prepared some support for Kolab types in + IMAP4 (v0.9.19) + +2005-07-27 Helge Hess + + * English.lproj/Localizable.strings: added a missing semicolon + (v0.9.18) + +2005-07-23 Helge Hess + + * UIxMailPartICalViewer.m: fixed include path for new hierarchy + (v0.9.17) + +2005-07-18 Helge Hess + + * UIxMailRenderingContext.m: show text/plain and text/html attachments + which have "filename" set in the content-disposition using the link + viewer (#1468) (v0.9.16) + +2005-07-18 Helge Hess + + * UIxMailRenderingContext.m: map multipart/report mimetype to use the + multipart/mixed viewer, map message/delivery-status mimetype to use + the link viewer (v0.9.15) + + * v0.9.14 + + * UIxMailPartICalViewer.m: replaced some methods with label bindings + + * English.lproj/Localizable.strings: added more strings + + * UIxMailPartICalViewer.m: added -attendeeStatusLabel to produce a + readable and localized part-stat (v0.9.13) + +2005-07-18 Helge Hess + + * UIxMailPartICalViewer.m: added code to support iMIP REPLY messages + (v0.9.12) + +2005-07-15 Helge Hess + + * v0.9.11 + + * added UIxMailPartICalAction for calendar part related link actions + (no actions implemented yet) + + * UIxMailPartViewer.m: added preferred extensions for iCalendar and + vCard mime types, moved in -pathToAttachment from + UIxMailPartLinkViewer (returns a nice download-link), added + -pathToAttachmentObject method (returns a plain link to the part + SoObject) + + * UIxMailPartLinkViewer.m: moved -pathToAttachment method to baseclass + + * UIxMailPartICalViewer.m: added method to retrieve the authorative + event (DB before mail), added a method to return an organizer display + name (with appropriate fallbacks) (v0.9.10) + + * UIxMailPartICalViewer.m: rewrote not to use SOGoAppointment and to + use iCalCalendar instead (v0.9.9) + + * UIxMailSizeFormatter.m, UIxMailPartMixedViewer.m, + UIxMailPartICalViewer.m, UIxMailPartAlternativeViewer.m, + UIxMailPartViewer.m: fixed gcc 4.0 warnings (v0.9.8) + +2005-07-14 Helge Hess + + * UIxMailPartICalViewer.m: properly reset part caches when the + part-path changes, added methods to check whether the event is + already stored in the calendar of the login-user, added methods to + check whether the login-user is the organizer (v0.9.7) + +2005-07-08 Helge Hess + + * UIxMailPartViewer.m: added '8bit' as a known MIME encoding (v0.9.6) + +2005-07-06 Helge Hess + + * UIxMailRenderingContext.m: fixed a bug when rendering nested + multiparts (cannot be cached) (v0.9.5) + +2005-06-24 Helge Hess + + * UIxMailPartLinkViewer.m: fixed an exception on Cocoa when a mail is + composed from just the HTML body (v0.9.4) + +2005-02-21 Helge Hess + + * prepared HTML and iCal mail part viewers (0.9.3) + +2005-02-20 Helge Hess + + * moved in UIxMailSizeFormatter (v0.9.2) + +2005-02-18 Helge Hess + + * created ChangeLog +2005-08-01 Helge Hess + + * product.plist: moved security declarations of core classes to the + +initialize method of the classes, + add SOGo application object methods in a category (was a class) + (v0.9.2) + + * created UI/MainUI product bundle from sources in Main (v0.9.1) + +2005-07-30 Helge Hess + + * mailer.js: use standard 'view' instead of 'tb.view' method + +2005-07-22 Helge Hess + + * mailer-toolbar.css: fixed send and attach buttons to use 24x24 images + +2005-07-22 Marcus Mueller + + * mailer.js: added labels for error messages + + * mailer.js: added validation of recipients + + * layout2or3_xlib.js: added (currently used by UIxMailToEditor for + height calculation) + + * layout2or3_xlib.txt: added, contains documentation/license for + layout2or3_xlib.js + + * mailer-compose.css: fixed padding for table entries + + * mailer.js: moved layout2or3_xlib JavaScript to own file + +2005-07-21 Helge Hess + + * mailer.css: moved compose styles to own file, mailer-compose.css + + * mailer-toolbar.css: fixed positioning for 24x24 icons + + * mailer.css: moved toolbar to own file, mailer-toolbar.css + +2005-07-21 Marcus Mueller + + * tbtb_anais.png: new icon for Anais + + * mailer.css: added tbicon_anais for Anais icon + +2005-07-21 Helge Hess + + * mailer.js: fixed a Linux Firefox issue with using POST in + XMLHttpRequest (must pass an empty string for a send, not 'null') + + * mailer.js: fixed a bug with calling the opener on errors + +2005-07-20 Helge Hess + + * mailer.js: use POST instead of GET for toggling the mail read flag, + aded uixDeleteSelectedMessages() function to bulk delete mails from + the selection + + * UIxAppointmentEditor.js: properly use getDate() instead of getDay() + for date comparison (#1478) + + * UIxAppointmentEditor.js: properly validate startdate/enddate so that + startdate is always before the enddate (#1478) + +2005-07-18 Helge Hess + + * generic.js: added regex for email field checks + + * uix.css: added .homepagefont class (as it was used in the deprecated + uix.css inside Common + +2005-07-12 Helge Hess + + * mailer.js: increased size of compose panel by 40px to avoid scrolling + when recipients are added + +2005-03-02 Helge Hess + + * generic.js: fixed a JS bug + +2005-02-24 Helge Hess + + * generic.js: added query dict parsing and generation functions + + * created ChangeLog +2005-07-30 Helge Hess + + * v0.9.173 + + * product.plist: removed tb.view methods (just use 'view' instead) + +2005-07-26 Helge Hess + + * UIxMailTree.m: improved block debugging (v0.9.172) + +2005-07-23 Helge Hess + + * v0.9.171 + + * UIxMailMainFrame.m: disabled Agenor app banner + + * UIxMailToSelection.m, UIxMailFormatter.m: fixed gcc 4.0 warnings + +2005-07-22 Helge Hess + + * v0.9.170 + + * UIxMailEditor.m: the mail editor now presets the proper 'from' based + on the 'account' query parameter + + * UIxMailEditorAction.m: the compose action now adds the current + account as a query parameter when calling the compose panel + +2005-07-22 Marcus Mueller + + * English.lproj/Localizable.strings: added error labels for JavaScript + (v0.9.169) + +2005-07-22 Helge Hess + + * UIxMailEditor.m: implemented identity based Sent folders (tied to + 'from' email address). The old url-attached Sent folder can be + enabled using 'SOGoUseLocationBasedSentFolder') (v0.9.168) + +2005-07-21 Helge Hess + + * UIxMailMainFrame.m: fixed banner positioning for 24x24 (v0.9.167) + + * UIxMailMainFrame.m: fixed positioning for 24x24 icons (v0.9.166) + +2005-07-21 Marcus Mueller + + * Toolbars/SOGoDraftObject.toolbar: new Anais css (v0.9.165) + + * UIxMailEditor.m: fetch attachment names and provide initial style + information to left/right side of editor component (v0.9.164) + +2005-07-21 Helge Hess + + * UIxMailListView.m: load JavaScript from a file (UIxMailListView.js) + instead of embedding it into the page (v0.9.163) + + * UIxMailView.m: do not fetch full message info for 304 existance + checks but rather call -doesMailExist (v0.9.162) + +2005-07-20 Helge Hess + + * removed 'stop' buttons from toolbars (v0.9.161) + + * v0.9.160 + + * Toolbars/SOGoMailFolder.toolbar: added bulk-delete button, removed + expunge button + + * UIxMailView.m: added fragile base class check, send a constant etag + for the mail viewer, do not deliver content in the defaultAction in + case the etag didn't change, added jsonly support to trashAction + + * UIxMailToolbar.m: use -resourceLookupLanguages, use + pageResourceManager instead of the toolbar component resourcemanager + for evaluating labels + + * product.plist: map getMail on the accounts folder to a noop action + (#1491) (v0.9.159) + + * UIxMailMainFrame.m: added UIxMailPanelFrame class for panels opened + by the main frame (v0.9.158) + + * UIxMailView.m: show delete button if delete is allowed but trashing + isn't (#1444) (v0.9.157) + + * v0.9.156 + + * product.plist: moved more complex toolbar configs to own resource + files + + * UIxMailToolbar.m: added ability to place toolbars in separate plist + files + +2005-07-19 Marcus Mueller + + * v0.9.155 + + * UIxMailToSelection.m: externalized JavaScript + + * product.plist: added new JavaScript files as public resources + +2005-07-19 Helge Hess + + * UIxMailEditor.m: do not complain on drafts not being found when the + delete action is triggered (#1489) (v0.9.154) + + * UIxMailAccountView.m: directly check the ACL of the Inbox to check + permissions (the Inbox will return NO on isCreateAllowed when being + used by altnamespace ...) (#1472) (v0.9.153) + +2005-07-19 Marcus Mueller + + * UIxMailAddressbook.m: don't restrict the Anais 'nature' flag anymore + (v0.9.152) + +2005-07-19 Helge Hess + + * v0.9.151 + + * UIxMailAccountView.m: fixed a warning + + * UIxMailEditor.m: removed SOGoInternetDetectQualifier code (reuse + shared Internet-detect functionality) + +2005-07-18 Helge Hess + + * UIxMailMainFrame.m: create a proper form action URL which preserves + query parameters (sort field) but removes search/filter values + (v0.9.150) + + * UIxMailSortableTableHeader.m: improved handling of multivalue form + keys (v0.9.149) + + * UIxMailAccountView.m: added method to check whether folder-create + button should be visible on the account folder view (checks INBOX for + the ACL, does check the alt-namespace default), + added method for folder-creation in root (v0.9.148) + +2005-07-18 Marcus Mueller + + * v0.9.147 + + * UIxMailToSelection.m: fixed ordering of parameters for the current + Anais version + + * UIxMailAddressbook.m: fixed parameters being passed on to Anais for + the current Anais version + +2005-07-18 Helge Hess + + * UIxMailListView.m: improved error handling (display a JavaScript + alert panel showing the issue instead of SOPE exception rendering) + (v0.9.146) + +2005-07-18 Marcus Mueller + + * UIxMailToSelection.m: changed behavior for adding/removing text + fields and changing focus (v0.9.145) + +2005-07-18 Helge Hess + + * product.plist: properly bind a 'getMail' method to the account + folder (fixes #1470) (v0.9.144) + + * UIxSubjectFormatter.m: fixed a stupid bug in subject handling leading + to an infinite loop in the QP processing, hardened against QP loops + (v0.9.143) + +2005-07-18 Marcus Mueller + + * UIxMailEditor.m: removed -emailForUser usage and replaced with + 'official' activeUser API (v0.9.142) + +2005-07-15 Helge Hess + + * product.plist: only enable folder add/remove buttons when the user + has the 'c' permission on the IMAP folder (#1456) (v0.9.141) + +2005-07-14 Helge Hess + + * UIxMailAccountView.m: removed methods to detect whether the + clientObject is a shared account (done by the clientObject itself) + (v0.9.140) + +2005-07-12 Helge Hess + + * UIxMailEditor.m: perform some validation plus error handling prior + trying to send a mail (check whether we have recipients, check + whether the subject is set) (#1451) (v0.9.139) + + * UIxMailEditor.m: properly determine from-email addresses (v0.9.138) + + * UIxMailEditor.m: use new SoUser API instead of AgenorUserManager + (v0.9.137) + +2005-07-11 Helge Hess + + * UIxMailMainFrame.m: generate proper URLs for jumping to Calendar, + HomePage etc (#1448) (v0.9.136) + +2005-07-08 Helge Hess + + * UIxMailEditor.m: added from-selection popup, list discovery via + AgenorUserManager (aka LDAP) (v0.9.135) + +2005-07-08 Helge Hess + + * UIxMailEditor.m: use WOContext method from libSOGo to detect + Internet access (v0.9.134) + +2005-07-08 Helge Hess + + * UIxMailMainFrame.m: added help button and extra space for that in the + toolbar (v0.9.133) + +2005-07-08 Helge Hess + + * UIxMailMainFrame.m: added "link" banner to jump to the other SOGo + tools, disable the banner in case the tree is disabled (since that + hints that a new window without the frame is being used, eg the + compose panel), added some more CSS classes instead of inline style + declarations (v0.9.132) + +2005-07-08 Helge Hess + + * prepared ACL editors (v0.9.131) + +2005-07-07 Helge Hess + + * v0.9.130 + + * UIxMailListView.m: implemented empty-trash action + + * product.plist: added a reduced toolbar when being on the trash folder + (no reply/fwd etc, but added an empty trash button) + +2005-07-07 Helge Hess + + * v0.9.129 + + * UIxMailAccountView.m: added code to better display shared accounts + + * UIxMailTree.m: moved IMAP4 connection string => label code to a + NSString category + +2005-07-07 Helge Hess + + * UIxMailTree.m: properly display share names in account list (show + name of share instead of the cut-off account login). Added some + improved heuristics to determine a viably short name (v0.9.128) + +2005-07-07 Helge Hess + + * UIxMailView.m, product.plist: added -trash button and action + (v0.9.127) + +2005-07-06 Helge Hess + + * product.plist: hide expunge button on mail folder when deleting is + disallowed (v0.9.126) + +2005-07-06 Helge Hess + + * v0.9.125 + + * UIxMailToolbar.m: added ability to disable toolbar buttons in case an + operation is not allowed (eg an object got deleted) + + * product.plist: added 'isSafe=NO' markers to unsafe HTTP methods in + toolbar, added 'enabled' binding for 'delete' button + + * v0.9.124 + + * UIxMailView.m: improved error handling in case the delete flag could + not be set + + * UIxMailMainFrame.m: added -hasErrorText / -errorText / + -errorAlertJavaScript methods to deal with errors encoded in the + 'error' form parameter + +2005-03-24 Helge Hess + + * v0.9.123 + + * UIxMailListView.m: added create/delete folder operations + + * product.plist: added folder-add/delete buttons in toolbar + +2005-03-23 Marcus Mueller + + * renamed "default.strings" to "Localizable.strings" (v0.9.122) + +2005-02-23 Helge Hess + + * mailer.js: split into multiple files (v0.9.121) + +2005-02-22 Helge Hess + + * UIxMailMainFrame.m: added ability not to generate the HTML frame + (v0.9.120) + +2005-02-20 Helge Hess + + * moved UIxMailSizeFormatter to MailPartViewers (v0.9.119) + +2005-02-18 Helge Hess + + * mailer.js: added HTML escape/unescape functions (v0.9.118) + + * moved mail part viewers to own product (MailPartViewers) (v0.9.117) + +2005-02-17 Helge Hess + + * UIxMailSortableTableHeader.m: properly inherit from SoComponent, so + that resource lookup works (v0.9.116) + +2005-02-16 Helge Hess + + * added automatic search field posting (v0.9.115) + + * mailer.js: fixed a row highlighting bug (v0.9.114) + + * product.plist: fixed compose button in mail viewer (v0.9.113) + +2005-02-15 Helge Hess + + * UIxMailListView.wox: added a pointer cursor for rows and enabled an + on-click message opener on some cells (v0.9.112) + + * UIxMailListView.wox: added message row highlighting (v0.9.111) + + * UIxMailAccountView.wox, UIxMailAccountsView.wox: added a title-div + to fix layout (v0.9.110) + +2005-02-14 Helge Hess + + * mailer.js: use 'tb.view' instead of 'view' to show a page (v0.9.109) + + * UIxMailTree.m: always stop tree on user folder (v0.9.108) + + * v0.9.107 + + * product.plist: mapped 'namespaced' "tb.view" SOPE method to the same + methods like "view". This allows us to use "tb.view" inside the + mailer without clashing with other UIs on top of the same SoObjects + + * UIxMailTree.m: use Inbox icon for SOGoMailAccount and + SOGoMailAccounts folders, added ability to specify a + 'treeFolderAction' (relative URL to be triggered by clicks) + + * v0.9.106 + + * UIxMailFilterPanel.wox: improved CSS styling of the search field + + * UIxMailTree.wox: fixed display of special mail icons if a folder + has subfolders and is open (in short: the 'cornerIcon' binding is + properly set) + + * v0.9.105 + + * UIxMailTree.m: fixed handling of root nodes (properly display all + children of the root node) + + * UIxMailTreeBlock.m: generate a description + + * UIxMailMainFrame.m, UIxMailTree.m: made root class of tree + configurable using 'SOGoMailTreeRootClass' default + +2005-02-13 Helge Hess + + * mailer.css: added left-padding to treecell to make it look better + (v0.9.104) + + * UIxMailListView.wox: added mark read/unread without page refresh + using XMLHttpRequest (v0.9.103) + + * product.plist, UIxMailListView.wox, mailer.js: added bulk + reply/replyall/forward (v0.9.102) + +2005-02-12 Helge Hess + + * UIxMailMainFrame.m: fixed page form processing if the active URL + does not specify a method name (ends with /) (v0.9.101) + + * v0.9.100 + + * added support for filter popup (OGo bug #1210) + + * UIxMailListView: moved filter selection to an own component + + * v0.9.99 + + * product.plist: also map index method of mail folder to + UIxMailListView + + * UIxMailListView.m: added subject/sender searching (OGo bug #1209) + +2005-02-10 Helge Hess + + * UIxMailPartLinkViewer.wox, UIxMailPartMessageViewer.wox: added + missing 'label' namespace declaration (v0.9.98) + +2005-02-09 Helge Hess + + * UIxMailReplyAction.m: implemented a content-reply (v0.9.97) + +2005-02-08 Helge Hess + + * v0.9.96 + + * UIxMailPartMessageViewer.m: fixed for multivalue from fields + + * UIxMailEditorAction.m, product.plist: split editor action in multiple + classes + + * v0.9.95 + + * product.plist: do not use clickedEditorDelete() JS function for + draft delete but just call the link + + * UIxMailEditor.m: a successful draft delete now returns the window + closer and refreshes the opener + + * mailer.js now reloads the opener for editor-save and editor-delete + functions (does not properly work since the form load is async) + + * UIxMailEditorAction.m, product.plist: implemented simple + reply/reply-all processing (subject and recipient handling is in + place, content quoting is pending) + + * v0.9.94 + + * UIxMailListView.m: properly show "to" address in tableview for + Sent folder + + * UIxMailView.m: fixed for new 'from' API + + * v0.9.93 + + * mailer.js: work on the read-mail marking code, properly change the + icon div + + * UIxMailListView.m: changed handling of unread mail flags + + * UIxMailView.wox: use the new markMailReadInWindow function to mark + a mail read in the mail list + +2005-02-07 Helge Hess + + * v0.9.92 + + * UIxMailView.m: properly refresh mail list after a mail got deleted + + * UIxMailWindowCloser.m: added ability to refresh the opener window + prior closing the panel + + * UIxMailView.wox: triggers opener callback to mark a mail as read + + * mailer.js: added refreshOpener() function which refreshes the + panel that opened the current window, added triggerOpenerCallback() + function which triggers a URL given in the "openerurl" query + parameter on the opener window + + * UIxMailEditor.m: disabled Internet warning in the mail editor per + default, can be enabled using the 'SOGoShowInternetMarker' default, + made Internet header detection qualifier configurable, see README + (SOGoInternetDetectQualifier string default), when the request is + from the Internet, add headers as specified in the + 'SOGoInternetMailHeaders' dictionary default (v0.9.91) + + * UIxMailTree.m: added support for special folder icons (v0.9.90) + + * v0.9.89 + + * UIxMailTree.m: made special folder names localizable + + * English.lproj/default.strings: added some folder translations + +2005-02-06 Helge Hess + + * v0.9.88 + + * UIxMailTree.m: some code cleanups, does not use -fetchSubfolders of + SOGoObject anymore (to be useful for any object) + + * UIxMailMainFrame.wox: made "Folders" title localizable + + * UIxMailListView.wox: removed some superflous section + +2005-01-31 Helge Hess + + * UIxMailView.m: implemented 'expunge' action (delete button in the + toolbar) (v0.9.87) + + * UIxMailView.m, UIxMailRenderingContext.m: moved more bulk fetching + to SoObject (v0.9.86) + + * UIxMailView.m: moved plain/text bulkfetch method to SoObjects/Mailer, + since its general purpose (v0.9.85) + + * v0.9.84 + + * UIxMailView.m: properly recurse into message/rfc822 bodies for flat + content fetches + + * UIxMailView.m, UIxMailPartMessageViewer.m: added links for email + addresses (currently mailto://) + +2005-01-30 Helge Hess + + * v0.9.83 + + * UIxMailRenderingContext.m: activate UIxMailPartMessageViewer for + message/rfc822 contents + + * added a UIxMailPartMessageViewer for displaying embedded (eg + forwarded) MIME messages + + * v0.9.82 + + * UIxMailPartLinkViewer.m: prefix filenames which start with a digit, + properly escape attachment names + + * UIxMailPartImageViewer.m (UIxMailPartViewer): append image extension + to attachments + + * v0.9.81 + + * UIxSieveEditor.m: call proper save method in Sieve SoObject + + * UIxMailEditor.m: added 'SOGoMailEditorKeepTmpFile' default to debug + MIME generation + + * v0.9.80 + + * UIxMailEditorAction.m: work on forwarding and reply + + * UIxFilterList.wox, UIxMailAccountView.wox, UIxMailAccountsView.wox, + UIxSieveEditor.wox: fixed title (needs localization) + + * UIxMailMainFrame.m: always generate title as given by the parent + component (titles need to get fixed!), was fixed to OpenGroupware.org + before unless in debug mode + + * UIxMailEditor.m: use new storeInfo API, generate a proper panelTitle + (needs localization) + + * UIxMailEditorAttach.m: use new attachment API + + * UIxMailView.wox: remoted link to screenshot, use mail subject as + title + + * UIxMailListView.m: disabled a log + +2005-01-28 Helge Hess + + * v0.9.79 + + * UIxMailEditor.wox: localized 'Subject' label, shows 'non-intranet' + marker if 'MinequProvenance' HTTP header is not set to 'intranet' + + * mailer.css: added marker for internet-mails (#1153) + + * v0.9.78 + + * UIxMailListView.m: properly mark deleted mails using line-through + + * UIxMailView.m: close mail viewer if mail delete was successful + + * mailer.css: added style classes for deleted cells + + * UIxMailEditor.m: moved some Sent folder lookup to SOGoMailAccount + + * v0.9.77 + + * added UIxMailSizeFormatter to render big file size numbers with some + M or K suffix + + * UIxMailPartViewer.m: added methods to retrieve filename, file + extension and file size formatter + + * UIxMailSortableTableHeader.m: minor code cleanups + +2005-01-27 Helge Hess + + * started attachment (download) viewer (#1074) (v0.9.76) + +2005-01-26 Helge Hess + + * v0.9.75 + + * UIxMailEditor.m: copy sent mails to INBOX/Sent folder, fixes issue + #1054 + + * product.plist: disabled unsupported delete button in mailviewer + + * UIxMailListView.wox: removed unused mail checkboxes and folder-tree + popup (#1211) (v0.9.74) + + * disabled some unsupported buttons and template elements (#1209, + #1210, #1207, #1208) (v0.9.73) + +2005-01-26 Marcus Mueller + + * v0.9.72 + + * UIxMailWindowCloser.{m,wox}: new component which closes the window + in its "onLoad". + + * UIxMailEditor.m: close window after successful send by opening + UIxMailWindowCloser. This fixes SOGo Bug #1053. + +2005-01-07 Marcus Mueller + + * {English/French}.lproj/default.strings: changed encoding from + ISO-Latin-1 to UTF-8, which is now the default (v0.9.71) + +2004-12-08 Marcus Mueller + + * UIxMailTree.m, UIxMailEditor.m, UIxMailPartViewer.m, + UIxEnvelopeAddressFormatter.m, UIxMailToolbar.m, + UIxMailRenderingContext.m, UIxMailEditorAttach.m, + UIxSubjectFormatter.m, UIxMailPartAlternativeViewer.m: + changed to use NGLogging (v0.9.70) + +2004-12-03 Helge Hess + + * v0.9.69 + + * UIxFilterList.m: added support for script creation + + * v0.9.68 + + * UIxFilterList.m: added ability to trigger new editor + + * started UIxSieveEditor + + * UIxFilterList.wox: minor fix to table layout (v0.9.67) + +2004-11-28 Helge Hess + + * UIxFilterList.m: use toOneRelationshipKeys to retrieve the filters + being displayed (v0.9.66) + +2004-11-27 Helge Hess + + * v0.9.65 + + * added first (empty) version of filter list page + + * UIxMailEditorAttach.m: fixed a warning + + * UIxMailAccountView.wox, product.plist: cleaned up account page (links + work now), added a compose button (v0.9.64) + +2004-11-15 Marcus Mueller + + * UIxMailEditor.m: properly set "From" header (v0.9.63) + +2004-11-11 Helge Hess + + * UIxMailListView.wox: added sample move popup (v0.9.62) + +2004-11-09 Helge Hess + + * UIxMailListView.m: added support for toggling read/unread flags + (v0.9.61) + + * UIxMailTree.m: added tree navigation code from SoObjects (v0.9.60) + + * UIxMailTree.m: removed unused code (v0.9.59) + + * UIxMailListView.m: flush mail caches in the getMail action (v0.9.58) + +2004-10-29 Helge Hess + + * UIxMailEditor.m: reenabled deletion of temporary mail files (v0.9.57) + +2004-10-28 Helge Hess + + * product.plist: fixed getMail for drafts folder (v0.9.56) + + * UIxMailListView.wox: fixed viewer activation for unread mails + (v0.9.55) + +2004-10-28 Helge Hess + + * UIxMailMoveToPopUp.m: fixed header (v0.9.54) + +2004-10-27 Helge Hess + + * disabled popup until it uses the proper tree (v0.9.53) + +2004-10-27 Marcus Mueller + + * UIxMailMoveToPopUp.[m|wox]: component which renders a popup + containing possible destinations for a mail move operation (v0.9.52) + +2004-10-27 Helge Hess + + * UIxMailEditor.m: default method returns a redirect to 'edit', added + 'delete' action and button (v0.9.51) + + * v0.9.50 + + * UIxMailEditor.m: send mail using draft object + + * UIxMailListView.wox: do not wrap title line + + * UIxMailEditor.m: added send related code (v0.9.49) + +2004-10-26 Helge Hess + + * UIxMailEditorAttach.m: added attachment delete (v0.9.48) + + * UIxMailEditorAttach.wox, mailer.css: work on layout, added delete + action (v0.9.47) + + * added new UIxMailEditorAttach component to manage draft attachments + (v0.9.46) + +2004-10-25 Helge Hess + + * v0.9.45 + + * uix.css: replaced invalid "text-color" with "color" + + * UIxMailEditor.wox: bind subject/text, can load/save info object in + draft + +2004-10-22 Marcus Mueller + + * v0.9.44 + + * UIxMailSortableTableHeader.[wox|m]: new component for doing sorting + + * UIxMailListView.wox: uses UIxMailSortableTableHeader for sorting + + * UIxMailListView.wox: bugfixes (v0.9.43) + + * v0.9.42 + + * UIxMailListView.wox: sorting, proper handling of sort keys. + NOTE: there's still an unidentified bug of sort keys failing to be + retained on successive paging. + + * UIxMailListView.m: sorting + + * Images/title_*: corrected alpha values + +2004-10-20 Marcus Mueller + + * v0.9.41 + + * UIxMailListView.wox: localized labels and added some JavaScript + templates for doing nifty row selection + + * UIxMailListView.m: added JavaScript method (stub only) + + * English.lproj/default.strings: new localized strings + +2004-10-13 Helge Hess + + * v0.9.40 + + * product.plist: exported some missing icons + + * UIxMailToSelection.m: some code cleanup + + * UIxMailEditor.m (UIxComponent): added ivars for values + +2004-10-13 Marcus Mueller + + * UIxMailToSelection.m: sanitize CN's a bit before using them (v0.9.39) + + * v0.9.38 + + * UIxMailToSelection.[wox|m]: removed superfluous debug messages + + * UIxMailAdressbook.[wox|m]: redirect cover for Addressbook and Anais + + * mailer.js: new JavaScript to open Addressbook and Anais windows + + * product.plist: added Addressbook/Anais entries + +2004-10-12 Marcus Mueller + + * v0.9.37 + + * UIxMailToSelection.[wox|m]: stable version with heavily improved + JavaScript code. + + * English.lproj/default.strings: new localizable strings + +2004-10-12 Helge Hess + + * UIxMailEditor.m: enabled -takeValuesFromRequest: (v0.9.36) + +2004-10-12 Marcus Mueller + + * UIxMailToSelection.[m|wox]: parse given arguments and conditionally + split lists. Dynamically create tables and JavaScript. (v0.9.35) + + * UIxMailToSelection.wox: minor update (v0.9.34) + + * v0.9.33 + + * UIxMailToSelection.[wox|m]: updated + + * English.lproj/default.strings: new localizable strings + + * v0.9.32 + + * UIxMailEditor.wox: changed API for UIxMailToSelection + + * UIxMailToSelection.[wox|m]: new component template + + * English.lproj/default.strings: new localizable strings + + * README: updated + +2004-10-12 Helge Hess + + * v0.9.31 + + * mailer.js: prepared JavaScript functions for editor + + * UIxMailMainFrame.wox: embed all content in a form called 'pageform' + +2004-10-11 Helge Hess + + * v0.9.30 + + * UIxMailEditor.wox: moved recipient selection to an own component + (UIxMailToSelection) + + * UIxMailMainFrame.wox: fixed script link + + * v0.9.29 + + * product.plist: trigger UIxMailEditorAction for compose instead of + returning the mail editor page, mapped missing toolbar actions + + * UIxMailEditorAction.m: implemented -compose as a redirect to a new + object in the account draft folder + + * UIxMailListView.wox: reduced subject width to 50% + + * mailer.css: added send icon class, icon itself still missing + + * started UIxMailEditorAction object which will contain all the + redirects from the buttons to the mail editor (working on draft + objects in the drafts folder) (v0.9.28) + +2004-10-10 Helge Hess + + * product.plist: added some configuration for the drafts folder + (v0.9.27) + +2004-10-06 Helge Hess + + * UIxMailListView.m: added support for paper clip icon when messages + are bigger than a certain size (v0.9.26) + +2004-10-05 Helge Hess + + * v0.9.25 + + * UIxMailListView.m: added sort icons + + * UIxMailEditor.m: more work on editor + + * mailer.css: added compose div classes + + * UIxMailListView: removed href for JavaScript onclick links (v0.9.24) + + * v0.9.23 + + * product.plist: fixed addressbook label + + * UIxMailToolbar: added support for 'onclick' event handlers + + * UIxMailEditor: started editor + + * UIxMailListView.m: added sorting to table view + + * v0.9.22 + + * UIxMailToolbar.wox: added support for 'target' links + + * UIxMailEditor.wox: use standard mail frame + + * v0.9.21 + + * UIxMailTree: made toolbar configurable using 'toolbar' slot on the + clientObject + + * product.plist: added toolbar configurations + + * UIxMailMainFrame.wox: moved toolbar to own component + + * UIxMailListView: added simple navigation (v0.9.20) + + * v0.9.19 + + * UIxMailPartViewer.m: added content decoding for QP, base64 and 7bit, + added proper charset decoding + + * UIxMailPartTextViewer.m: moved content => NSString conversion to + UIxMailPartViewer.m + + * v0.9.18 + + * UIxMailPartViewer.m: added support methods for caches, added -sleep + method + + * added multipart/alternative viewer + + * added Thunderbird message read/unread icons + +2004-10-04 Helge Hess + + * fixed fetching of mails with only text content (v0.9.17) + + * added flat body fetches, used in text viewer (v0.9.16) + + * added MIME content viewer infrastructure (v0.9.15) + + * UIxMailView.m: added 'currentAddress' accessors (v0.9.14) + + * UIxMailView.m: use core infos stored in message SoObject for display + (v0.9.13) + +2004-10-03 Helge Hess + + * v0.9.12 + + * UIxMailListView.m: fetch size for list + + * UIxMailView.m: cache fetched message for transaction, fetch body + structure + + * work on viewer (v0.9.11) + + * UIxMailMainFrame.wox: made toolbar floating (v0.9.10) + +2004-10-02 Helge Hess + + * more work on UI (v0.9.9) + + * added formatters for mail list (v0.9.8) + + * v0.9.7 + + * show messages in an IMAP4 folder + + * mailer.css: remote calendar CSS not required in mailer + +2004-09-29 Helge Hess + + * added toolbar images (v0.9.6) + + * UIxMailTree.m: use new tree navigation methods in SoObjects (v0.9.5) + +2004-09-28 Helge Hess + + * more work on mailer UI, added tree based on WETreeView (v0.9.4) + +2004-09-25 Helge Hess + + * added rsrc namespace declaration to templates (v0.9.3) + +2004-09-20 Helge Hess + + * work on mailer (v0.9.2) + +2004-09-01 Marcus Mueller + + * GNUmakefile.preamble: fixed for gsmake 1.9.2 build (v0.9.1) + +2004-08-26 Marcus Mueller + + * ChangeLog: created +2005-08-02 Helge Hess + + * v0.9.147 + + * UIxComponent+Agenor.m: use SOGoUser methods to get email/cn + + * UIxAppointmentEditor.m: moved status change operation to SoObject + +2005-07-23 Helge Hess + + * UIxAppointmentPrintview.m, UIxCalDayListview.m: fixed include pathes + for new src hierarchy (v0.9.146) + +2005-07-21 Marcus Mueller + + * UIxAppointmentView.m: fixed -isMyApt and -canAccessApt to do the + proper things (v0.9.145) + + * v0.9.144 + + * UIxCalInlineAptView.m: reworked the way styles are produced now. + UIxCalInlineAptView gets a lot more information from the appointment + now in order to produce a suitable style for it + + * UIxCalMonthOverview.m: setup formatter properly for private + appointments + + * UIxCalView.m: don't generate style information at all - + UIxCalInlineAptView does this now + +2005-07-20 Helge Hess + + * UIxAppointmentEditor.m: added fragile base class check (v0.9.143) + + * added a basic German translation (v0.9.142) + +2005-07-19 Helge Hess + + * UIxDatePicker.m: code cleanups (v0.9.141) + +2005-07-19 Marcus Mueller + + * v0.9.140 + + * UIxCalView.m: reversed shouldAdd logic in filterAppointments to do + the right thing ... + + * v0.9.139 + + * UIxAppointmentEditor.m: fixed automatic participants addition + + * v0.9.138 + + * UIxCalView.m: renamed 'anaisUIDString' to 'userUIDString' in order + to be independent from the Anais bundle but still provide the same + functionality + +2005-07-19 Helge Hess + + * UIxAppointmentEditor.m: moved iCalRecurrenceRule to separate file + (v0.9.137) + +2005-07-18 Marcus Mueller + + * UIxCalView.m: provide label "empty title" as -titlePlaceholder for + appointment formatters to enable display of appointments whose + title has not been set (v0.9.136) + +2005-07-15 Helge Hess + + * UIxCalScheduleOverview.m, UIxAppointmentView.m, + UIxAppointmentProposal.m, UIxAppointmentEditor.m: fixed gcc 4.0 + warnings (v0.9.135) + + * UIxAppointmentView.h: fixed a Cocoa warning (v0.9.134) + +2005-07-14 Marcus Mueller + + * v0.9.133 + + * UIxAppointmentView.m: supports accept/decline from participants + tab now + + * UIxAppointmentEditor.m: fixed redirect url after accept/decline + + * UIxCalParticipationStatusView.m: added accessor for partStat, so + partStat isn't accidentaly lost + + * UIxCalScheduleOverview.m: is able to suppress rendering of + rejected and accepted foreign appointments now based on formValue + + * English.lproj/Localizable.strings: new labels for + UIxCalScheduleOverview + +2005-07-14 Helge Hess + + * UIxAppointmentView.m: fixed a small memory leak when creating the + categories string (v0.9.132) + +2005-07-14 Marcus Mueller + + * v0.9.131 + + * product.plist: removed 'schedule' method from SOGoAppointmentFolder + + * v0.9.130 + + * UIxCalView.m: removed resourcePath stuff as this isn't used + anywhere anymore (and it shouldn't) + +2005-07-13 Marcus Mueller + + * English.lproj/Localizable.strings: "Schedule" maps to + "Appointment propositions" now (v0.9.129) + +2005-07-11 Marcus Mueller + + * UIxCalView.h: added -setAppointments: to the public API + (for subclassers) (v0.9.128) + +2005-07-08 Marcus Mueller + + * v0.9.127 + + * UIxCalView.[hm]: added -shouldDisplayRejectedAppointments API. Added + toggling of hide/show rejected appointments via form values. Added + new -filterAppointments: method to support filtering of appointments + (currently used for rejected appointments). Fixed -fetchCoreInfos + to use proper accessor method. Fixed aptFlags logic to allow access + to appointments that don't belong to user but which user is invited + to. Cleaned up +initialize a bit. + + * UIxCalWeekListview.m: added comment and slightly changed + -fetchCoreInfos to do the proper thing + + * English.lproj/Localizable.strings: added labels 'show_rejected_apts' + and 'hide_rejected_apts' + + * v0.9.126 + + * UIxComponent+Agenor.[hm]: new method -isAccessRestricted, uses the + implementation from WOContext+Agenor in libSOGo. + + * UIxAppointmentView.m: allow editing of appointments that have no + organizer set. + + * UIxAppointmentEditor.m: allow editing of appointments that have no + organizer set. Redirect to 'view' URI in case editor is not the + organizer. Fixed a bug where the organizer got accidentaly deleted. + +2005-07-07 Marcus Mueller + + * v0.9.125 + + * UIxAppointmentEditor.m: Properly preserve organizer of appointments. + This is now also used to validate if user is allowed to edit an + appointment. + + * UIxAppointmentView.m: changed -isMyApt to test on organizer's email + address and user's email address to decide whether he is allowed + to edit the appointment in question. + +2005-07-06 Marcus Mueller + + * UIxAppointmentProposal.m: changed implementation of + -proposalSearchAction to use the new SOGoFreeBusyObject API + (v0.9.124) + +2005-07-05 Marcus Mueller + + * v0.9.123 + + * UIxCalWeekOverview.m, UIxCalWeekColumnsview.m, + UIxCalDayChartview.m, UIxCalDayListview.m, + UIxCalMonthOverview.m, UIxCalDayOverview.m: properly adjust formatter + + * UIxCalDayOverview.m: fixed bugs in -aptsForCurrentDate and properly + override -allDayApts to also display appointments spanning ranges + + * UIxCalWeekChartview.m: fixed bugs in -isRowActive logic + + * UIxCalDayView.m: fixed bugs in filtering and range logic + + * UIxCalView.m: added a deprecation warning, some code cleanup + + * UIxCalInlineAptView.m: added new 'referenceDate' binding which will + be used with the revised appointment formatter to properly display + time ranges. Also adds 'priority' style information when this can + be found in the appointment. + + * GNUmakefile: added new image resource + + * images/apt_icon_private.gif: new resource for private appointments + +2005-03-23 Marcus Mueller + + * renamed "default.strings" to "Localizable.strings" (v0.9.122) + +2005-03-20 Helge Hess + + * v0.9.121 + + * UIxCalView.m: removed -calCSSPath (ZideStore specific) + + * UIxCalDayListview.m: minor code cleanups + +2005-03-03 Marcus Mueller + + * UIxCalWeekListview.m: fixed compile warnings (v0.9.120) + + * UIxCalWeekListview.m: view needs to fetch coreInfos instead of just + overviews because it needs information stored in "partmails". Fixes + SOGo Bug #1248. (v0.9.119) + +2005-03-02 Marcus Mueller + + * UIxCalDateLabel.m: fixed compile warning (v0.9.118) + +2005-03-01 Marcus Mueller + + * UIxCalDateLabel.m: fixed heuristics for month label (v0.9.117) + +2005-02-21 Marcus Mueller + + * v0.9.116 + + * UIxTimeDateControl.wox: added code to disable time control on + demand. If given date is nil, substitute today for it - nil dates + are not legal/possible for this control. + + * UIxAppointmentEditor.m: correctly (de)serialize until date for + recurrences + + * English.lproj/default.strings: new strings for recurrence selection, + altered previous strings slightly to match the new UI's purpose + +2005-02-17 Marcus Mueller + + * v0.9.115 + + * cycles.plist: added 'weekday' cycle + + * UIxAppointmentEditor.m: added representation for 'BYDAY' + +2005-02-17 Helge Hess + + * fixed for removal of SOGoLogic (v0.9.114) + +2005-02-15 Marcus Mueller + + * UIxCalView.m: removed dead code (v0.9.113) + +2005-02-12 Marcus Mueller + + * v0.9.112 + + * UIxAppointmentEditor.[wox,m]: added recurrence selection/display. + The current UI is similar to that found in OGo, but inappropriate in + the context of SOGo (SOGo in theory supports all recurrence rules + described in RFC2445, thus needs a more complex UI in order to render + all rules appropriately) + + * cycles.plist: property list with predefined recurrence rules for + the UIxAppointmentEditor + + * English.lproj/default.strings: new labels for cycles and accompanied + UI + + * UIxDatePicker.m: Bugfix for format edge case (when date is nil) + +2005-01-26 Marcus Mueller + + * UIxDatePicker.m: corrected dateFormats for French locale. The + selection mechanism is pretty hackish and should be more generic. + This fixes SOGo Bug #1136. (v0.9.111) + +2005-01-07 Marcus Mueller + + * {English/French}.lproj/default.strings: changed encoding from + ISO-Latin-1 to UTF-8, which is now the default (v0.9.110) + +2004-12-23 Marcus Mueller + + * v0.9.109 + + * UIxCalScheduleOverview.[wox,m]: changed the UI to the final proposal + agreed upon by Laurent. + + * English.lproj/default.strings: renamed value for "action", suited to + new UI Layout + +2004-12-22 Marcus Mueller + + * v0.9.108 + + * UIxAppointmentEditor.m: added "check for conflict" checkbox and + appropriate logic. This closes SOGo bug #1069. Localized error + messages. + + * UIxAppointmentProposal.m: changed fetchCoreInfos... to new + fetchFreebusy... method. + + * English.lproj/default.strings: provided localized error messages + + * UIxCalView.m: rewrite of _fetchCoreInfosForUIDs: to adapt to the + newer API of SoObjects (this was still some old OCS based code). + +2004-12-21 Marcus Mueller + + * v0.9.107 + + * UIxCalScheduleOverview.wox: only display appropriate buttons for + actions to take + + * UIxCalScheduleOverview.m: cache userParticipationStatus result + + * English.lproj/default.strings: changed "action" label + + * v0.9.106 + + * UIxCalScheduleOverview.wox: different visual representation for + actions (requested by Laurent) + + * UIxCalScheduleOverview.m: bugfix for wrong sort orderings + +2004-12-18 Marcus Mueller + + * UIxCalScheduleOverview.[wox,m]: removed workaround for NGObjWeb bug, + code cleanup (v0.9.105) + +2004-12-17 Marcus Mueller + + * v0.9.104 + + * GNUmakefile: removed UIxAppointmentFormatter + + * UIxAppointmentFormatter.[hm]: removed, never in use + + * UIxCalParticipationStatusView.[wox,m]: new view to display localized + participation status + + * UIxCalView.m: fetch OverviewInfos instead of CoreInfos (should be + faster) + + * UIxCalScheduleOverview.[wox,m]: completed the schedule overview, + display participation state for all participants. + + * product.plist: renamed "reject" to "decline" and moved from + UIxAppointmentView to UIxAppointmentEditor. + + * UIxAppointmentView.m: removed "accept" and "reject" action stubs + + * UIxAppointmentEditor.[wox,m]: implemented "accept" and "decline". + Changed iCal template a bit, particularly removed getOrganizer - + with every save the organizer was changed also which was horribly + wrong. + +2004-12-16 Marcus Mueller + + * v0.9.103 + + * UIxCalScheduleOverview.[wox,m]: the entry point for agenor, + presenting the upcoming schedule to users. This is still incomplete, + but nevertheless functional. + + * English.lproj/default.strings: new localizations for the schedule + view. + + * product.plist: added new actions and schedule view + + * UIxCalSelectTab.[wox,m]: added new "Schedule" tab + + * UIxAppointmentEditor.m: default participants are selected from + current calendarUIDs - that is, if you've selected multiple calendars + and then create a new appointment, all currently viewed calendar + owners are added to the new appointment as default participants. + + * UIxAppointmentView.m: added "accept" and "reject" actions - no + function yet. + + * UIxAppointmentProposal.m: compile fix (v0.9.102) + +2004-12-13 Marcus Mueller + + * v0.9.101 + + * UIxAppointmentProposal.m: removed inclusion of iCalPerson+UIx.h + + * iCalPerson+UIx.[hm]: removed -rfc822EMail (moved to NGiCal), changed + implementation of -cnForDisplay (just a cover for -cnWithoutQuotes) + + * v0.9.100 + + * UIxAppointmentEditor.m: fixed incorrect redirect location + + * UIxCalWeekListview.m, UIxCalWeekChartview.m: use new formatter option + to correctly format private appointments + + * v0.9.99 + + * {English,French}.lproj/default.strings: new label + "private appointment", requested by Laurent for agenor. + + * UIxCalWeekPrintview.m, UIxCalMonthPrintview.m: add label + "private appointment" if apt is not accessible. + + * UIxCalView.m: set label "private appointment" as privateTitle of + private formatters. + +2004-12-10 Marcus Mueller + + * v0.9.98 + + * English.lproj/default.strings: provided additional localizable + strings for event "classification" (private/public). + + * UIxAppointmentView.[wox,m], UIxAppointmentEditor.[wox,m]: added + workaround for SOGo bug #1052, private details are hidden now + from others. Also, apts are not editable by non-owners any longer. + + * UIxCalView.[hm]: added formatters for private appointments. Also, + added flags for caching special information about apts (public, + owned) etc. This outphases the use of tooltip.../shortText... + for all calviews (with the exception of printviews). Subclasses + may need to override -configureFormatters to adjust them according + to their needs. + + * UIxCalInlineAptView.[hm]: new view used by all calviews to render + appointments using formatters. + + * UIxCalDayOverview.wox, UIxCalDayListview.[wox,m], + UIxCalDayChartview.[wox,m], UIxCalDayPrintview.wox, + UIxCalWeekOverview.wox, UIxCalWeekListview.[wox,m], + UIxCalWeekChartview.[wox,m], UIxCalWeekColumnsview.wox, + UIxCalWeekPrintview.[wox.m], UIxCalMonthOverview.wox: + changed to use UIxCalInlineAptView and provided -configureFormatters + which fixes SOGo bug #1052 + +2004-12-09 Marcus Mueller + + * v0.9.97 + + * UIxAppointmentEditor.[wox,m]: provided API and UI for marking an + event as being private or public, public being the default. + + * English.lproj/default.strings: provided additional localizable + strings for event "classification" (private/public). + + * UIxAppointmentEditor.m: set 'transparency' of new items to + 'TRANSPARENT' instead of 'OPAQUE'. In agenor FreeBusy information is + constrained by a folder flag instead of individual events, however + the intent is to permit retrieval of FreeBusy information in general. + Please note that the according information isn't properly parsed/set + in loadValues/saveValues as of now - the underlying iCalEvent doesn't + handle this as of now. + +2004-12-08 Marcus Mueller + + * v0.9.96 + + * UIxCalView.h: made -isMyApt and -aptStyle public. + + * UIxAppointmentPrintview.m: implemented -isMyApt and -aptStyle, used + by UIxAppointmentPrintview.wox + + * UIxAppointmentPrintview.wox: print summary, location, start/endtime + in italics - fixes SOGo bug #1070 + + * UIxCalWeekPrintview.m, UIxCalMonthPrintview.m: extended + -shortTextForApt to use different css styles, when -isMyApt returns + NO - fixes SOGo bug #1070 + + * UIxCalDayPrintview.[m, wox]: use -aptStyle to print appointments not + belonging to user in italics - fixes SOGo bug #1070 + + * UIxCalDayOverview.wox, UIxCalDayChartview.wox, UIxCalDayListview.wox + UIxCalWeekOverview.wox, UIxCalWeekListview.wox, + UIxCalWeekChartview.wox, UIxCalWeekColumnsview.wox, + UIxCalMonthOverview.wox, UIxCalYearOverview.wox: + changed layout according to SOGo bug #1071 (v0.9.95) + + * UIxAppointmentView.m, UIxDatePicker.m, UIxCalView.m: changed to use + NGLogging (v0.9.94) + +2004-11-08 Helge Hess + + * UIxAppointmentPrintview.m: fixed a compile warning (v0.9.93) + +2004-10-26 Marcus Mueller + + * UIxAppointmentProposal.wox: uses dayLabelFormat instead of hardcoded + format - fixes SOGo bug #984 (v0.9.92) + +2004-10-18 Marcus Mueller + + * UIxAppointmentPrintview.wox: insertBR for comment adedd (v0.9.91) + + * UIxAppointmentEditor.wox: added possibility to add resources from + Addressbook (v0.9.90) + +2004-10-16 Marcus Mueller + + * UIxAppointmentEditor.wox: added "withCN=YES" to resources because + doing otherwise would lead to stripping the CN from resources in + subsequent saves - why would anyone want this to be standard + behavior? (v0.9.89) + +2004-10-14 Marcus Mueller + + * UIxAppointmentView.wox: insertBR for comments (v0.9.88) + +2004-10-12 Helge Hess + + * UIxAppointmentProposal.wox: use '1' instead of 'YES' in const + bindings, otherwise running into a MacOSX bug (v0.9.87) + +2004-10-08 Marcus Mueller + + * v0.9.86 + + * UIxAppointmentView.[m|wox]: new method to return categories as a + string. + + * UIxAppointmentPrintview.wox: added missing priority and categories. + + * UIxAppointmentProposal.wox: also allow selection from private address + book for resources/participants. This might lead to the fact that + contacts can be selected which do not have a calendar at all - there + should be some way of safeguarding this in the Contacts bundle. + +2004-10-06 Marcus Mueller + + * UIxAppointmentEditor.m: changed iCal template to use RFC2445 + conforming line delimiters. Changed the testAction to aid in + debugging our iCal rendering. (v0.9.85) + +2004-10-05 Marcus Mueller + + * v0.9.84 + + * SOGoAppointment+UIx.[hm]: new class providing UIx convenience methods + + * UIxAppointmentView.[m|wox]: added priority and categories + + * UIxAppointmentEditor.[m|wox]: added priority and categories + + * English.lproj/default.strings: new labels + +2004-09-25 Helge Hess + + * UIxCalDateLabel.m: minor code cleanups, fixed compilation on MacOSX + (v0.9.83) + +2004-09-13 Marcus Mueller + + * English.lproj/default.strings: fixed a missing ';' (v0.9.82) + +2004-09-10 Marcus Mueller + + * v0.9.81 + + * GNUmakefile, product.plist: added new image + + * images/invisible_space_2.gif: new transparent image used by + UIxWeekListview.wox + + * UIxCalDayView.m: rewrote -isCurrentDateInApt: to use + NGCalendarDateRange + + * UIxCalWeekListview.[m|wox]: implemented + + * UIxCalWeekColumnsview.[m|wox]: implemented + + * UIxCalWeekOverview.m: removed impl. of -appointments, moved to + superclass + + * UIxCalWeekView.m: added impl. of -appointments + +2004-09-10 Helge Hess + + * UIxAppointmentPrintview.wox, UIxAppointmentView.wox: added missing + label prefix (v0.9.80) + +2004-09-09 Marcus Mueller + + * v0.9.79 + + * UIxAppointmentEditor.wox: removed debug output of clientObject, + UIxPageFrame.wox is doing this now. + + * UIxCalDayListView.[wox|m]: fixed some wrong assumptions of uid + handling, corrected to use the (now bugfixed) calendarUIDs of + clientObject. + +2004-09-07 Marcus Mueller + + * v0.9.78 + + * UIxCalDayOverview.m, UIxCalDayChartview.m: minor cleanups + + * UIxCalDayOverview.wox, UIxCalDayChartview.wox: added style + information for appointments, used for colorization (doesn't work + due to style problems - needs to get investigated later on) + + * UIxCalDayListview.[m|wox]: started implementation of list view, + not quite finished. + +2004-09-06 Marcus Mueller + + * UIxAppointmentEditor.wox: fixed incorrect label (v0.9.77) + +2004-09-01 Marcus Mueller + + * GNUmakefile.preamble: fixed for gsmake 1.9.2 build (v0.9.76) + +2004-08-31 Marcus Mueller + + * UIxCalView.m: fixed stupid bug (v0.9.75) + +2004-08-27 Marcus Mueller + + * v0.9.74 + + * English.lproj/default.plist: more labels + + * UIxAppointmentView.wox: replaced static strings with labels + + * UIxAppointmentView.h, UIxCalView.h: exposed some methods + + * product.plist: added "printview" method to SOGoAppointmentObject + + * UIxAppointmentPrintview.[m|wox]: new printview for appointments + +2004-08-27 Helge Hess + + * UIxAppointmentEditor.m: prepared to share code with contact editor + (v0.9.73) + + * UIxCalView.m: minor code cleanups (v0.9.72) + +2004-08-25 Marcus Mueller + + * GNUmakefile.preamble: removed NGScripting from dependencies - it's no + longer required (v0.9.71) + + * UIxAppointmentProposal.m: changed -isSecondHalfGreen and + -isSlotRangeGreen due to a bugfix in NGExtensions (v0.9.70) + + * v0.9.69 + + * UIxAppointmentProposal.m: completed edit functionality. Resources and + participants are now passed as query parameters. + + * UIxAppointmentEditor.m: Resources and Participants are now properly + constructed from existing query parameters. + +2004-08-24 Marcus Mueller + + * v0.9.68 + + * UIxAppointmentEditor.m: added knowledge about "dur" parameter + + * UIxAppointmentProposal.[m|wox]: added edit functionality, still + incomplete + + * UIxCalView.[hm]: remove date related query parameter methods, moved + to UIxComponent + + * GNUmakefile.preamble: changes for linking against SOPE 4.3 (v0.9.67) + +2004-08-16 Marcus Mueller + + * AnaisUidSelector.[wox,m]: Added colorizing of login's uid. (v0.9.66) + +2004-08-16 Helge Hess + + * UIxAppointmentProposal.m: small bugfix to range processing (v0.9.65) + +2004-08-16 Marcus Mueller + + * UIxTimeDateControl.m: removed a debug log. (v0.9.64) + + * v0.9.63 + + * UIxCalView.m: -isMyApt done properly. + + * UIxCalWeekOverview.wox: use extra stylesheet info to colorize other's + appointments differently. + + * UIxDatePicker.m: removed a debug log. + +2004-08-16 Helge Hess + + * UIxAppointmentProposal.m: first working version of proposal (v0.9.62) + + * UIxAppointmentProposal: proper vertical/horizontal row generation + (v0.9.61) + +2004-08-16 Marcus Mueller + + * UIxAppointmentView.m: fixed redirect in deleteAction. (v0.9.60) + + * v0.9.59 + + * UIxTimeDateControl.m: subclasses from UIxComponent now, hence + -viewTimeZone should work correctly now. + + * UIxAppointmentProposal.wox, UIxAppointmentEditor.wox: fixed + cancel button urls. + + * UIxAppointmentProposal.[wox,m]: fixed date/time fields. (v0.9.58) + +2004-08-16 Helge Hess + + * UIxAppointmentProposal: added duration popup (v0.9.57) + +2004-08-16 Marcus Mueller + + * v0.9.56 + + * UIxTimeDateControl.m: HACK: added correct timeZone. + +2004-08-16 Helge Hess + + * v0.9.55 + + * UIxAppointmentProposal.m: load default start/enddates + + * UIxAppointmentEditor.m: add default start/enddates + +2004-08-16 Marcus Mueller + + * v0.9.54 + + * UIxTimeDateControl.*, UIxTimeSelector.*, UIxDatePicker.*: + fixed. DatePicker expects day, month, year bindings now, + TimeSelector expects hour, minute, second. + +2004-08-16 Helge Hess + + * v0.9.53 + + * UIxAppointmentProposal: added attendee selectors, added ivars, added + searchProposal action + + * added green_corner.gif + + * iCalPerson+UIx.m: fixed -cnForDisplay to properly check for quotes + prior removing them (v0.9.52) + +2004-08-15 Helge Hess + + * UIxAppointmentEditor.m: fixed for new time fields (v0.9.51) + + * fixed time field controls (v0.9.50) + +2004-08-15 Marcus Mueller + + * v0.9.49 + + * UIxTimeDateControl.[wox,m]: new component. + + * UIxAppointmentProposal.wox: added labels and stuff, work in progress. + + * English.lproj/default.strings: new labels + + * UIxTimeSelector.m, UIxDatePicker.m: correct date bindings. + +2004-08-15 Helge Hess + + * v0.9.48 + + * UIxAppointmentEditor.m: minor cleanups + + * UIxAppointmentView.m: added -delete action + + * UIxAppointmentEditor.m: more decoupling from iCal. Added some error + handling UI code (errorText), date selector is broken (v0.9.47) + + * v0.9.46 + + * iCalPerson+UIx.m: changed -cnForDisplay method, znek needs to check + it for correctness + + * UIxAppointmentEditor.m: rewrote not to work directly on the parsed + iCalendar appointment but rather track changes in the appointment + itself + + * UIxAppointmentEditor.m: removed now unused methods (due to attendee + selector) (v0.9.45) + + * v0.9.44 + + * UIxAppointmentEditor.m: use new AnaisAttendeeSelector + + * UIxAppointmentEditor.m: replaced formattedAptStartDate with a + titleDateFormatter (directly bound to the string element) + +2004-08-15 Marcus Mueller + + * v0.9.43 + + * UIxTimeSelector.[wox,m]: new component for selecting the time part + of a given date. + + * UIxAppointmentEditor.[wox,m]: uses new UIxTimeSelector + +2004-08-15 Helge Hess + + * v0.9.42 + + * UIxAppointmentEditor.m: minor cleanups + + * UIxAppointmentProposal.wox: made mockup code dynamic + +2004-08-15 Marcus Mueller + + * v0.9.41 + + * images/*: new images for UIxDatePicker and skycalendar.html. + + * French.lproj/skycalendar.*, English.lproj/skycalendar.*: new js + based date picker taken from OGo. + NOTE: these files are currently NOT used/installed due to a bug + in SOPE. Instead, the non-localized versions are used. This will + go away as soon as the bug in SOPE is fixed. + + * skycalendar.js, skycalendar.html: the non-localized versions as a + workaround to the problem described above. + + * product.plist: added new images and the non-localized js date picker + as public resources. + + * UIxDatePicker.[m,wox], UIxDatePickerScript.[m,wox]: new reusable + component for picking a date fancy style. ;-) Use UIxDatePickerScript + to load the necessary js code once in your component. + +2004-08-15 Helge Hess + + * v0.9.40 + + * UIxAppointmentProposal.wox: fixes in mockup code + + * UIxAppointmentEditor.m: some cleanups + + * v0.9.39 + + * UIxAppointmentProposal.wox: work on page layout + + * UIxAppointmentView.wox, UIxCalWeekOverview.wox: minor cleanups + +2004-08-15 Marcus Mueller + + * v0.9.38 + + * UIxComponent+Agenor.[hm]: -cnForUser and -emailForUser require the + AgenorUserManager from Logic. + + * UIxAppointmentEditor.m: refactored -cnForUser and -emailForUser, + moved to extra category. + + * UIxCalWeekView.wox: added custom style if apt belongs to user. + + * UIxCalView.m: added some extra logic in redirect, provided extra + style sheet selector for appointments. + + * GNUmakefile: added new files + +2004-08-14 Marcus Mueller + + * v0.9.37 + + * English.lproj/default.strings: new labels + + * UIxAppointmentEditor.m: after save, return to ".." instead of "view" + + * UIxAppointmentEditor.wox: added "Cancel" button. + + * UIxCalView.m: refined behaviour of redirects according to Helge's + request. + +2004-08-14 Marcus Mueller + + * UIxAppointmentEditor.m: Changed "X-OGo-RESOURCE" into + "NON-PARTICIPANT" (v0.9.36) + +2004-08-14 Marcus Mueller + + * UIxAppointmentView.[h,m,wox], UIxAppointmentEditor.[h,m,wox]: + general enhancements, use new API. (v0.9.35) + +2004-08-13 Marcus Mueller + + * v0.9.34 + + * UIxCalView.[hm]: use new formatters. + + * UIxCalDayOverview.m: fixed build warnings. + + * UIxAppointmentEditor.m: added warnings. + +2004-08-13 Marcus Mueller + + * v0.9.33 + + * UIxCalView.m: adjusted shortTextForApt to meet the requirements + specifictions. + + * UIxCalDayView.m: removed shortTextForApt (moved to superclass). + + * UIxCal*view.wox: escapeHTML="NO" for shortTextForApt. + +2004-08-13 Marcus Mueller + + * v0.9.32 + + * UIxCalView.m: shouldHideWeekend according to new default, + SOGoShouldDisplayWeekend. + + * UIxCalWeekOverview.wox, UIxCalWeekColumnsview.wox: use new dynamic + value for "hideWeekend" association. + + * NOTES: new "Defaults" section. + +2004-08-13 Helge Hess + + * UIxCalWeekColumnsview.wox: hide weekend (requires libWEExtensions + v4.2.52) (v0.9.31) + +2004-08-13 Marcus Mueller + + * UIxAppointmentEditor.[wox|m]: important fix for testing (v0.9.30) + +2004-08-13 Helge Hess + + * UIxCalWeekColumnsview.wox: hide weekend (requires libWEExtensions + v4.2.52) (v0.9.30) + + * UIxCalWeekOverview.wox: hide weekend (requires libWEExtensions + v4.2.51) (v0.9.29) + +2004-08-13 Marcus Mueller + + * v0.9.28 + + * iCalPerson+UIx.[hm]: more convenience + + * UIxAppointmentView.[hm]: display CN's as Names + + * UIxAppointmentEditor.[wox|m]: more functionality, but still + unfinished. You can use it to test appointments, though. + +2004-08-13 Helge Hess + + * UIxAppointmentEditor.wox: fixed base URL of form not to include + "save" (v0.9.27) + + * UIxAppointmentEditor.m: catch a common programming mistake (invoking + a method on a method) (v0.9.26) + +2004-08-12 Marcus Mueller + + * UIxAppointmentEditor.[m|wox]: participants are added correctly + now, resources are still lacking from save. (v0.9.25) + +2004-08-12 Marcus Mueller + + * v0.9.24 + + * Added AnaisUidSelector to all views. Removed worse named -owner + method from all affected views and instead added + -formattedCalendarUIDs to UIxCalView. This is now used by all + print views in their header. + + * UIxCalWeekOverview.m: adjusted endDate properly, if -displayWeekends + returns NO (the default). + +2004-08-12 Marcus Mueller + + * UIxCalView.m: fixed problems with redirect (v0.9.23) + +2004-08-12 Helge Hess + + * v0.9.22 + + * UIxAppointmentView.m: properly catch invalid appointment references + and return a 404 (because SOGoAppointmentObject's are created even + for invalid IDs for performance reasons) + + * UIxCalView.m: generate appointment URLs using clientObject (the + appointment folder) + + * more cleanups + + * added (still empty) proposal component (v0.9.21) + + * some code reorganizations, fixed some compile warnings (v0.9.20) + +2004-08-11 Marcus Mueller + + * v0.9.19 + + * UIxCalView.m: implements -redirectForUIDsAction to construct a + redirect to a special appointment folder. + + * product.plist: "show" method is mapped to UIxCalView's + -redirectForUIDsAction. + +2004-08-11 Marcus Mueller + + * v0.9.18 + + * UIxCalWeekOverview.wox: added AnaisUidSelector + + * English.lproj/default.strings: more labels + +2004-08-11 Marcus Mueller + + * v0.9.17 + + * product.plist: removed "yearprintview" method - this doesn't exist. + + * English.lproj/default.strings: more labels (these need to be added + to the French version!) + + * UIxAppointmentEditor.[m|wox]: nice Anais integration showing up. ;-) + +2004-08-10 Marcus Mueller + + * v0.9.16 + + * UIxAppointmentEditor.wox: pretty printing, use labels where appropriate. + + * UIxAppointmentEditor.m: uses SOGoDateFormatter now. + + * English.lproj/default.strings: added new labels. + +2004-08-09 Marcus Mueller + + * v0.9.15 + + * UIxCalWeek*view.wox: added missing queryParameters to mode hrefs. + +2004-08-05 Marcus Mueller + + * v0.9.14 + + * UIxCalDayOverview.[hm]: refactored currentDate -> moved to + UIxCalDayView.[hm]. + + * UIxCalDayView.[hm]: added currentDate and accompanied functionality. + + * UIxCalView.[hm]: added -tooltipForApt. + + * UIxCalDayChartview.[wox|m]: implemented. + + * UIxCalInlineMonthOverview.wox: cosmetic changes. + + * UIxCalDayOverview.wox, UIxCalWeekOverview.wox, UIxCalMonthOverview.wox: + uses "tooltipForApt" for view hyperlinks. + +2004-08-02 Marcus Mueller + + * v0.9.13 + + * UIxCalDayPrintview.[m|wox], UIxCalWeekPrintview.[m|wox], + UIxCalMonthPrintview.[m|wox]: finished print views. + + * UIxCalWeekOverview.wox: added numberformat for days. + +2004-08-02 Marcus Mueller + + * v0.9.12 + + * UIxCalMonthView.[hm]: fixed a nasty bug. Needed to add -startOfMonth to + overcome the problem associated with -startDate in the context of + month overview. -startDate is necessary for fetching the core infos and + almost always is member of the previous month. Also, -endDate isn't + necessarily in the same month we're talking about. I reworked this and + added some private category to NSCalendarDate which should be moved into + SxCore later on. + + * UIxCalMonthOverview.m: Use -startOfMonth instead of -startDate for all + calculations. + + * UIxCalMonthOverview.wox: applied some pretty printing and added some + debugging info (commented out). + +2004-07-30 Marcus Mueller + + * v0.9.11 + + * UIxCalDayOverview.h, UIxCalWeekOverview.h: new headers for subclassers. + + * UIxCalDayPrintview.[wox|m], UIxCalWeekPrintview.[wox|m], + UIxCalMonthPrintview.[wox|m]: new views for printing. + + * product.plist: mapped "*printview"'s to appropriate new classes + +2004-07-29 Marcus Mueller + + * v0.9.10 + + * UIxCalDayView.m, UIxCalWeekView.m, UIxCalMonthView.m: reversed + previous changes to -startDate/-endDate as these were wrong. + Views have to deal on their own if appointments break the + "usual" time range. Nevertheless we should never drop any + appointments! + + * UIxCalDayOverview.[wox|m]: refactored dateRanges (moved to + UIxCalDayView) and completed display of all appropriate attributes + (all day appointments, holiday info). + + * UIxCalDayView.[hm]: fixed dateRanges. + + * UIxCalView.[hm]: implemented -allDayApts and refactored some code. + +2004-07-28 Marcus Mueller + + * v0.9.9 + + * UIxCalWeekColumnsview.[m|wox]: implemented. + + * UIxCalWeekCharview.*, UIxCalWeekListview.*, UIxCalDayChartView.*, + UIxCalDayListview.*: enhanced templates. + + * UIxCalDayView.[hm]: removed -thisMonth and -nextMonth. + + * UIxCalView.[hm]: added -thisMonth and -nextMonth + +2004-07-28 Marcus Mueller + + * v0.9.8 + + * Renamed all images/icon_apt_* images into images/icon_view_*. for the + sake of simplicity and consistency. + + * UIxCalInlineMonthOverview.m: fixed problems with a special set of edge + cases where inappropriate style sheets would have been selected. + + * UIxCalDayChartview.*, UIxCalDayListview.*: new templates for respective + view modes. Used UIxCalDayOverview as the template for these. + + * UIxCalWeekChartview.*, UIxCalWeekListview.*, UIxCalWeekColumnsview.*: + new templates for respective view modes. Used UIxCalWeekOverview as + the template for these. + + * GNUmakefile: added new templates and classes, changed image names. + + * product.plist: mapped methods to the correct classes. + +2004-07-26 Marcus Mueller + + * v0.9.7 + + * UIxCalView.[hm]: new methods for defaults access, -dayStartHour, + -dayEndHour and -shouldDisplayWeekend. + + * UIxCalDayOverview.[m|wox]: added content. CSS isn't 100% proper, yet. + + * UIxCalWeekView.m, UIxCalMonthView.m: set startDate/endDate properly. + + * UIxAppointmentEditor.m: fixed a subtle bug in -uriAsFormat that + prevented date information from being set properly in newAction:. + +2004-07-23 Marcus Mueller + + * v0.9.6 + + * GNUmakefile: added UIxCalDayView.[hm] and UIxCalDayOverview.[m|wox] + + * UIxCalDayView.[hm]: abstract superclass for all day related views. + + * UIxCalDayOverview.[m|wox]: new component rendering the day overview. + + * UIxCalInlineMonthOverview.[m|wox]: uses new "selectedDayExtraStyle" + binding and implements accompanied logic for its usage. + + * product.plist: added 3 dayview methods, all currently pointing to + UIxCalDayOverview. + +2004-07-22 Marcus Mueller + + * v0.9.5 + + * UIxCalInlineMonthOverview.m: new "style" binding for setting the global + style all elements will inherit from. Makes styling much easier. + + * UIxCalYearOverview.wox: uses all appropriate styles now. Slight fixes + to alignment. + + * UIxCalInlineMonthOverview.wox: uses new "style" binding and fixes a bug + + * UIxCalYearOverview.m: fixed warnings. + +2004-07-21 Marcus Mueller + + * v0.9.4 + + * UIxCalMonthOverview.h: new header, required by new + UIxCalInlineMonthOverview component. + + * UIxCalInlineMonthOverview.[m|wox]: new component rendering a month + overview suitable for inlining in other views. Several calendar + "modes" require this. + + * UIxCalYearOverview.[m|wox]: new component rendering the year + overview. + + * product.plist: yearoverview -> new method + + * GNUmakefile: added UIxCalInlineMonthOverview.[m|wox] and + UIxCalYearOverview.[m|wox]. + +2004-07-21 Marcus Mueller + + * v0.9.3 + + * *.wox: Use label associations where appropriate + + * UIxCalView.m: Use labels for localization + + * UIxCalMonthOverview.m: removed date specific labels, moved + to SOGoUI/UIxComponent.m. + + * UIxCalDateLabel.m: subclasses from UIxComponent now. Corrected + localization using labels now. + + * *.lproj/default.strings: new entries + +2004-07-20 Marcus Mueller + + * v0.9.2 + + * GNUmakefile: added new .lproj resources. + + * {English,French}.lproj/default.plist: localizable strings for the + Scheduler bundle. + + * UIxCalSelectTab.m, UIxCalWeekOverview.wox, + UIxCalMonthOverview.[m|wox]: changes for using new localization + features. + +2004-07-19 Marcus Mueller + + * UIxAppointmentEditor.m: Use -backendTimeZone from UIxComponent. + +2004-07-07 Marcus Mueller + + * UIxCalWeekOverview.wox: minor correction + + * UIxAppointmentEditor.m: fixed handling in -saveAction:. Also, + added code to correctly convert dates into GMT upon storing. + +2004-07-15 Helge Hess + + * GNUmakefile.preamble: added proper include pathes to allow "inline" + compilation + +2004-07-02 Helge Hess + + * UIxAppointmentView.m: fixup timezone of start/enddate + +2004-06-30 Helge Hess + + * UIxCalWeekOverview.wox, UIxCalMonthOverview.wox: some minor tweaks + + * UIxAppointmentView.wox: made the attendee emails clickable + + * UIxCalView.m: removed -fetchGIDs, moved -fetchCoreInfos to client + object + + * all files: removed ZideStore references + + * UIxCalView.h, UIxAppointmentView.h, UIxAppointmentEditor.m, + UIxCalSelectTab.m: include UIxComponent from SOGoUI + + * removed backend stuff from some sources + + * product.plist: bind things on SOGoAppointmentXXX instead of SX... + + * GNUmakefile: changed from ZideStore to SOGo + + * created ChangeLog +2005-07-30 Helge Hess + + * MailerUI/UIxMailView.wox: do not show mail header when accessing a + Kolab mail object + + * MailPartViewers/UIxMailPartImageViewer.wox: fixed 'title' attribute + of image tag (now displays filename) + + * MailerUI/UIxMailMainFrame.wox: use 'view' instead of 'tb.view' to + activate links + +2005-07-26 Helge Hess + + * ContactsUI/UIxContactEditor.wox: removed copy-from-anais button + + * UIxAppointmentProposal.wox, UIxAppointmentEditor.wox: do not try to + use Anais attendee selector (must be replaced) + + * MailerUI: use proper _wosid instead of 'sidinurl' in tags + +2005-07-22 Marcus Mueller + + * UIxMailPanelFrame.wox: added MailerUI.SOGo strings table for error + messages + + * UIxMailEditor.wox: added inclusion of layout2or3_xlib.js and added + a new id to compose_table + +2005-07-21 Marcus Mueller + + * UIxCalDayOverview.wox, UIxCalDayChartview.wox, UIxCalDayListview.wox, + UIxCalMonthOverview.wox: reworked the style bindings + + * UIxMailToSelection.wox: commented debug output + + * UIxMailEditor.wox: added inline attachment view which is only + visible if attachments have been added (similar to what is done + in Thunderbird) + + * UIxMailEditorAttach.wox: added JavaScript reference for dynamically + updating UIxMailEditor + + * UIxCalInlineAptView.wox: added indicator to flag recurrent events + +2005-07-20 Helge Hess + + * MailerUI/UIxMailToolbar.wox: properly localize button label + + * MailerUI: use new UIxMailPanelFrame for panel templates (those which + do not show the folder tree) + + * MailerUI/UIxMailView.wox: added support for list headers, for the + organization header, for some spam-assassin and virus scanning fields + + * moved remaining mail templates to Templates/MailerUI/ + +2005-07-19 Marcus Mueller + + * UIxMailToSelection.wox: changed inclusion of JavaScript to resource + lookup (with a little global stub being the exception) + +2005-07-19 Helge Hess + + * UIxAppointmentEditor.wox: import scheduler labels to the client, + moved validation function to UIxAppointmentEditor.js + + * UIxAppointmentEditor.wox: use dateformat specific parsing methods + during validation (#1490) + +2005-07-19 Marcus Mueller + + * AnaisUidSelector.wox: moved JavaScript into component, renamed quite + a lot of stuff to reflect the current implementation + +2005-07-19 Helge Hess + + * UIxAppointmentEditor.wox: use parsing function from skycalendar.js + to check validity of date fields + + * UIxAppointmentEditor.wox: check whether title is set and raise a + confirm panel if not, check if startdate/enddate are 10 chars long + +2005-07-18 Helge Hess + + * ContactsUI/UIxContactEditor.wox: validate email field prior form + submit (#1483) + + * MailerUI/UIxMailMainFrame.wox: removed searchfield.js from + + * UIxPageFrame.wox: added generic.js to + + * ContactsUI/UIxContactsListView.wox: fixed a static reference to + /sogod.woa/ + +2005-07-18 Marcus Mueller + + * AnaisUidSelector.wox: added extraAttributes to pass on from + Anais which we need now + +2005-07-18 Helge Hess + + * MailerUI/UIxMailFilterPanel.wox: disabled auto-search field + +2005-07-18 Marcus Mueller + + * UIxContactsSelectionView.wox: fixed targets of sort actions and + form processing + + * UIxMailAddressbook.wox: changed template text explaining why there's + nothing to be rendered + + * UIxMailToSelection.wox: changed JavaScript functions to be more + generic + +2005-07-15 Helge Hess + + * MailPartViewers/UIxMailPartICalViewer.wox: prepared support for iMIP + 'method' requests + +2005-07-14 Marcus Mueller + + * UIxCalScheduleOverview.wox: removed functionality for v0.8 on + client's request + + * UIxAppointmentView.wox: added accept/decline functionality in + participants tab + +2005-07-14 Helge Hess + + * UIxMailAccountView.wox: directly access the clientObject to get share + information + +2005-07-14 Marcus Mueller + + * UIxContactsSelectionView.wox: removed hardcoded stylesheet paths, + provided rsrc: driven paths as this works now + + * UIxCalSelectTab.wox: removed 'Schedule' tab. + + * UIxCalScheduleOverview.wox: rewritten to be a subcomponent instead + of a proper page. This is used by SOGoHomePage now. + +2005-07-13 Marcus Mueller + + * *.wox: fixed all corner_right.gif image resources + + * UIxAppNavView.wox: traversal path is only shown when debugging app, + instead inserted user's CN as requested + +2005-07-13 Helge Hess + + * ContactsUI/UIxContactEditor.wox: disable editing when being used on + a vCard contact + + * ContactsUI/UIxContactView.wox: added support for displaying vCard + attributes + + * ContactsUI/UIxContactsListView.wox, UIxMailContactList.wox: changed + to use c_name instead of cName (as required by new GDLContentStore) + +2005-07-12 Marcus Mueller + + * UIxAppointmentEditor.wox: moved the 'checkForConflicts' button near + the 'save' button as requested + +2005-07-08 Marcus Mueller + + * UIxCalDayOverview.wox, UIxCalWeekOverview.wox, + UIxCalWeekColumnsview.wox, UIxCalDayChartview.wox, + UIxCalDayListview.wox, UIxCalWeekChartview.wox, + UIxCalMonthOverview.wox, UIxCalWeekListview.wox: + added 'hide/show rejected apts' toggle to all views + + * UIxPageFrame.wox: added 'headers' to the debug output + + * UIxAppointmentEditor.wox: removed conditionals from UI as they were + wrongly placed in the template, component does now deal with it + +2005-07-07 Marcus Mueller + + * UIxPageFrame.wox: added 'Home' and 'Administration' hyperlink + + * UIxPageFrame.wox: added 'help' hyperlink + + * UIxPageFrame.wox: added 'isAccessRestricted' debug output + + * AnaisUidSelector.wox: changed layout, added new 'me alone' button + as requested + +2005-07-06 Marcus Mueller + + * UIxCalInlineAptView.wox: add private appointment icon for non-public + appointments that belong to yourself. + +2005-07-05 Marcus Mueller + + * UIxCalDayOverview.wox, UIxCalInlineAptView.wox, + UIxCalWeekOverview.wox, UIxCalWeekColumnsview.wox, + UIxCalDayChartview.wox, UIxCalDayListview.wox, + UIxCalWeekChartview.wox, UIxCalMonthOverview.wox: added referenceDate + bindings for all UIxAptInlineViews + + * UIxAppointmentEditor.wox: added redirect in case user who is not + allowed to edit view tries to do so + +2005-07-04 Marcus Mueller + + * UIxCalDayOverview.wox, UIxCalWeekOverview.wox, + UIxCalWeekColumnsview.wox, UIxCalDayChartview.wox, + UIxAppointmentProposal.wox, UIxCalDayListview.wox, + UIxCalWeekChartview.wox, UIxAppointmentView.wox, + UIxCalMonthOverview.wox, UIxCalWeekListview.wox, + UIxAppointmentEditor.wox: removed printview links (commented out), + removed resources where appropriate (cancelled for version 0.8) + +2005-06-26 Helge Hess + + * UIxMailContactEditor.wox: added a hidden field containing the contact + content + +2005-03-23 Marcus Mueller + + * UIxCalWeekOverview.wox: changed the right corner URL yet again + +2005-02-22 Helge Hess + + * UIxMailMainFrame.wox: removed debug code, use new SOPE container tag + to allow for frameless pages + +2005-02-21 Marcus Mueller + + * UIxTimeDateControl.wox: disable time control on demand + + * UIxAppointmentEditor.m: correctly visualize until date for + recurrences + +2005-02-18 Helge Hess + + * UIxMailContactList.wox: added prototypical inline edits in a table + view + + * created ChangeLog +2005-08-01 Helge Hess + + * v0.9.28 + + * moved classes from shared library back to bundle + + * UIxContactEditorBase.m, UIxContactView.m: fixed some gcc 4.0 warning + +2005-07-26 Helge Hess + + * English.lproj/Localizable.strings: added a missing semicolon + (v0.9.27) + +2005-07-19 Helge Hess + + * UIxContactEditorBase.m: moved copyContact JS code to + UIxContactEditor.js file (v0.9.26) + +2005-07-18 Helge Hess + + * English.lproj/Localizable.strings: added text for invalid emails + (v0.9.25) + +2005-07-13 Helge Hess + + * UIxContactEditorBase.m: added a safeguard for vCard contacts + (v0.9.24) + +2005-06-26 Helge Hess + + * created a library containing shared base classes (for + MailerContactsUI) (v0.9.23) + +2005-03-23 Marcus Mueller + + * renamed "default.strings" to "Localizable.strings" (v0.9.22) + +2005-02-14 Helge Hess + + * UIxContactEditor.m: moved header file to own file (v0.9.21) + + * UIxContactsListView.m: added ability in code to sort descending if + the desc=1 query parameter is set (v0.9.20) + + * UIxContactsListView.h: properly protected header file (v0.9.19) + +2004-12-08 Marcus Mueller + + * UIxContactEditor.m: changed to use NGLogging (v0.9.18) + +2004-10-27 Marcus Mueller + + * v0.9.17 + + * UIxContactEditor.[wox|m]: new parameters "mobile", "departmentNumber" + and "l" passed to callback. Provide proper unescaping to the + callback's parameters. (#985, #987) + + * UIxContactView.wox: properly display new properties, suppress + rendering of "Organization". (#985) + + * {English.lproj|French.lproj}/default.strings: needed to change some + labels according to new requirements. + +2004-10-20 Marcus Mueller + + * UIxContactsSelectionView.m: several properties provided to the + callback need to be unescaped properly before being passed back. + This is achieved by using the new SOGoJSStringFormatter in SOGoUI. + (v0.9.16) + +2004-10-14 Marcus Mueller + + * UIxContactSelector.m: fixed wrong method name (v0.9.15) + +2004-10-12 Marcus Mueller + + * UIxContactSelector.m: moved helpers to UIxComponent (v0.9.14) + +2004-10-08 Marcus Mueller + + * v0.9.13 + + * UIxContactsSelectionView.m: pass more (previous empty) parameters + to the JavaScript callback. + + * UIxContactSelector.m: correctly compute the relative path to the + "Contacts" URL. + +2004-09-14 Marcus Mueller + + * v0.9.12 + + * UIxContactEditor.[wox|m]: Copy from Anais functionality + + * UIxContactsSelectionView.m: minor cleanup + + * {English.lproj,French.lproj}/defaults.plist: new localizable string + + * v0.9.11 + + * UIxContactSelector.m: changed width of satellite window to 800px + + * UIxContactsSelectionView.m: hardcoded paths to stylesheets due to + resource lookup problems. + + * French.lproj/defaults.plist: copied the English strings here + +2004-09-13 Marcus Mueller + + * v0.9.10 + + * UIxContactsListView.h: new header for subclassers + + * UIxContactsSelectionView.[m|wox]: new subclass of UIxContactsListView + which is basically the same only in its own window frame to mimic + the appearance of Anais. + + * UIxContactSelector.[m|wox]: component for opening + UIxContactsSelectionView in a separate window + + * product.plist: new method "select" + +2004-09-03 Marcus Mueller + + * UIxContactView.wox: added some more properties for display (v0.9.9) + +2004-09-01 Marcus Mueller + + * GNUmakefile.preamble: fixed for gsmake 1.9.2 build (v0.9.8) + +2004-08-27 Marcus Mueller + + * v0.9.7 + + * English.lproj/default.strings: provided labels + + * UIxContactsListView.wox, UIxContactView.wox, UIxContactEditor.wox: + converted static strings into labels + +2004-08-27 Helge Hess + + * UIxContactsListView: added simple filtering (v0.9.6) + + * UIxContactsListView: added simple sorting (v0.9.5) + + * first working version of contacts UI (v0.9.4) + + * removed GET from product.plist, the SoObject directly implements GET + now and redirects to the view method (v0.9.3) + +2004-08-26 Helge Hess + + * product.plist: more fixes to product.plist (v0.9.2) + + * product.plist: fixed package dependency, fixed category name (v0.9.1) + +2004-08-25 Marcus Mueller + + * common.h: new file + + * UIxContact*: added template views + + * ChangeLog: created +2005-07-19 Helge Hess + + * UIxPageFrame.m: workaround for an issue with [page name] (page name + gets reset, so we use the page class instead) (v0.9.46) + + * UIxPageFrame.m: added ability to auto-load per-page JavaScript files + if appropriate resources are available (v0.9.45) + +2005-07-18 Helge Hess + + * moved all images and CSS to WebServerResources (v0.9.44) + + * v0.9.43 + + * various minor code cleanups + + * removed deprecated uix.css (lives in WebServerResources!) + +2005-07-14 Marcus Mueller + + * calendar.css: further refined new css (v0.9.42) + + * calendar.css, uix.css: added homepagefont and added 'title' class + to use in the scheduler overview (v0.9.41) + +2005-07-13 Marcus Mueller + + * English.lproj/Localizable.strings: removed label "You are here" and + provided new label "User" (v0.9.40) + +2005-07-07 Marcus Mueller + + * v0.9.39 + + * UIxPageFrame.m: added new - + + * English.lproj/Localizable.strings: added new 'Home' and + 'Administration' labels + + * English.lproj/Localizable.strings: added new 'Help' label (v0.9.38) + +2005-07-05 Marcus Mueller + + * calendar.css: added appointment priority styles (v0.9.37) + +2005-03-23 Marcus Mueller + + * renamed "default.strings" to "Localizable.strings" (v0.9.36) + +2005-02-10 Helge Hess + + * GNUmakefile: include ../common.make (v0.9.35) + +2005-01-24 Marcus Mueller + + * UIxPageFrame.wox: additional debug output (v0.9.34) + +2005-01-21 Helge Hess + + * UIxTabView.m: fixed an include of WEExtensions (v0.9.33) + +2004-01-07 Marcus Mueller + + * {English/French}.lproj/default.strings: changed encoding from + ISO-Latin-1 to UTF-8, which is now the default (v0.9.32) + +2004-12-16 Marcus Mueller + + * calendar.css: added CSS for "Schedule" (v0.9.31) + +2004-12-09 Marcus Mueller + + * UIxPageFrame.[wox,m]: added -ownerInContext debug info (v0.9.30) + +2004-12-08 Marcus Mueller + + * calendar.css: added styles for others' appointments in + printviews, so they are easy to distinguish (v0.9.29) + + * UIxTabItem.m: changed to use NGLogging (v0.9.28) + +2004-10-18 Marcus Mueller + + * v0.9.27 + + * UIxPageFrame.wox: added Mail, fixed relative URL composition + + * UIxPageFrame.m: removed URL processing, instead uses methods from + UIxComponent + + * *.lproj/default.strings: added label "Mail" + +2004-09-20 Helge Hess + + * UIxPageFrame.m: added item ivar (v0.9.26) + + * UIxPageFrame.wox: improved debugging section (v0.9.25) + +2004-09-10 Marcus Mueller + + * uix.css: new button_submit style for the Anais selector, looks + similar to the mozilla submit button now (v0.9.24) + +2004-09-09 Marcus Mueller + + * UIxPageFrame.wox: display clientObject and object traversal stack + if isUIxDebugEnabled is set (v0.9.23) + +2004-09-01 Helge Hess + + * GNUmakefile.preamble: removed dependency on libNGScripting (v0.9.22) + +2004-08-27 Marcus Mueller + + * v0.9.21 + + * English.lproj/default.strings, French.lproj/default.strings: + dictionaries for labels + + * UIxPageFrame.wox, UIxAppNavView.wox: replaced constant strings with + labels + +2004-08-27 Helge Hess + + * started UIxSortButton (v0.9.20) + + * v0.9.19 + + * UIxPageFrame.wox: navigation below the line, app selection above + + * uix.css: make 'defaultfont' a generic class + + * UIxPageFrame.wox: added top-level menu with links for Calendar and + Contacts (v0.9.18) + + * removed old components (UIxAppFrame, Header and Navigation) (v0.9.17) + +2004-08-24 Maxime Wacker + + * GNUmakefile.preamble: fixes for the build process (v0.9.16) + +2004-08-16 Marcus Mueller + + * calendar.css: additional css for Anais uids (v0.9.15) + + * calendar.css: additional css for other appointments (v0.9.14) + +2004-08-14 Marcus Mueller + + * UIxPageFrame.m: -title returns label for "OpenGroupware.org" when + -isUIxDebugEnabled is NO. (v0.9.13) + +2004-08-12 Marcus Mueller + + * UIxPageFrame.wox: removed left side navigation completely as it + currently doesn't make too much sense and contrasts with the + user interface layout which already has been agreed about (v0.9.12) + +2004-08-12 Marcus Mueller + + * UIxWinClose.wox: removed rendering of (X) on Laurent's request + (v0.9.11) + +2004-08-11 Marcus Mueller + + * UIxPageFrame subclasses from UIxComponent now, removed -SoUser + because it's now in UIxComponent. (v0.9.10) + +2004-08-11 Marcus Mueller + + * UIxPageFrame.wox, UIxAppNavView.m: added labels (v0.9.9) + +2004-08-11 + + * UIxPageFrame: minor fixes to UI (v0.9.8) + +2004-08-05 Marcus Mueller + + * calendar.css: commented some styles out, because they don't really do + what I think they should do. Someone with better knowledge of CSS + should look into this. (v0.9.7) + +2004-08-02 Marcus Mueller + + * v0.9.6 + + * UIxPageFrame.wox: added javascript for onload action, some cosmetics + + * calendar.css: added remaining CSS for printviews + +2004-08-02 Marcus Mueller + + * UIxPageFrame.wox: removed some navigation items to avoid confusion. + Also applied some pretty printing. (v0.9.5) + +2004-07-30 Marcus Mueller + + * v0.9.4 + + * calendar.css: added CSS for printviews + + * UIxPrintPageFrame.[wox|m]: new wrapper component for all views that + require printing. + +2004-07-28 Marcus Mueller + + * calendar.css: added CSS for weekcolumnsview (v0.9.3) + +2004-07-27 Marcus Mueller + + * v0.9.2 + + * UIxPageFrame.m: added convenience methods to access specific parts + of the URL. + + * UIxPageFrame.wox: fixed navigation URLs. Inserted references to + rootURL where no content is currently available. + + * UIxAppNavView.m: enhanced construction of navigation url path. + +2004-07-26 Marcus Mueller + + * calendar.css: added styles for dayoverview's content. + +2004-07-23 Marcus Mueller + + * calendar.css: added styles for dayoverview's calendar. + +2004-07-22 Marcus Mueller + + * calendar.css: complete style for 'yearoverview' and fixed style in + 'monthoverview'. + +2004-07-16 Helge Hess + + * UIxAppNavView.m: some fixes to navigation URLs + + * UIxAppNavView.wox: fixed indention + + * product.plist: properly export uix.css as a public resource + +2004-07-01 Helge Hess + + * UIxTabView.m: removed JavaScript and the involved access of -session + +2004-06-30 Helge Hess + + * product.plist: make categories on SOGoObject instead of SxFolder + + * GNUmakefile: patches for different build/runtime environment + + * created ChangeLog +2005-08-01 Helge Hess + + * added FHS installation (v0.9.36) + +2005-07-30 Helge Hess + + * SOGoDateFormatter.m: hardened against nil arguments (v0.9.35) + +2005-07-21 Marcus Mueller + + * UIxComponent.m: changed -userFolderPath to generate the path to the + activeUser, _NOT_ the owner (v0.9.34) + +2005-07-20 Helge Hess + + * UIxComponent.m: added fragile base class check (v0.9.33) + +2005-07-20 Marcus Mueller + + * UIxComponent.m: changed language lookup to meet the status quo + (v0.9.32) + +2005-07-18 Helge Hess + + * UIxComponent.m: minor code reorgs (v0.9.31) + +2005-07-18 Marcus Mueller + + * SOGoAptFormatter.[hm]: added -titlePlaceholder API for properly + formatting appointments without titles (v0.9.30) + +2005-07-13 Marcus Mueller + + * WOContext+UIx.[hm]: new category to WOContext, currently provides + -isUIxDebugEnabled (v0.9.29) + +2005-07-08 Marcus Mueller + + * UIxComponent.m: moved -isAccessRestricted method to + UIxComponent+Agenor (v0.9.28) + +2005-07-07 Marcus Mueller + + * v0.9.27 + + * UIxComponent.m: implicitly set the context's queryPathSeperator + when generating URIs used in redirects + + * v0.9.26 + + * UIxComponent.m: added method -isAccessRestricted to indicate whether + certain options might have to be disabled due to restrictions + set by the customer + +2005-07-06 Helge Hess + + * UIxComponent.m: added method -isInvokedBySafeMethod to check whether + the current HTTP method is a safe one (eg HEAD/GET) (v0.9.25) + +2005-07-05 Marcus Mueller + + * SOGoAptFormatter.[hm]: new API. -stringForObjectValue: is deprecated + now and should not be used anymore. Formatting needs a referenceDate + in order to properly display time ranges. Time ranges are currently + rendered in SOGoAptFormatter, but this should probably be delegated + to a natural language aware auxiliary (date-)formatter. Also, some + new formatting options have been introduced. (v0.9.24) + +2005-01-26 Marcus Mueller + + * SOGoDateFormatter.[hm]: new method -setFrenchDateFormat: to override + the default ISO format. This will be chosen depending on locale + automatically. The full description uses this setting when generating + the appropriate part of the description. (v0.9.23) + +2004-12-17 Marcus Mueller + + * SOGoAptFormatter.m: remove "appointment" prefix from tooltips + (v0.9.22) + +2004-12-13 Marcus Mueller + + * SOGoAptFormatter.[hm]: new option for formatter (v0.9.21) + + * SOGoAptFormatter.[hm]: added ability to set custom title for private + appointments. (v0.9.20) + +2004-12-10 Marcus Mueller + + * SOGoAptFormatter.[hm]: added formatting for private apts, additional + cleanup (v0.9.19) + +2004-12-08 Marcus Mueller + + * UIxComponent.m: changed to use NGLogging (v0.9.18) + +2004-10-22 Marcus Mueller + + * UIxComponent.m: rewrote handling of queryParameters, these get + constructed lazily now (v0.9.17) + +2004-10-20 Marcus Mueller + + * SOGoJSStringFormatter.[hm]: new formatter to properly escape certain + strings passed to JavaScript (v0.9.16) + +2004-10-18 Marcus Mueller + + * UIxComponent.m: changed the implementation of -ownPath and fixed a + bug in -userFolderPath (v0.9.15) + +2004-10-12 Marcus Mueller + + * UIxComponent.m: added some helper methods for computing relative + paths within the application (v0.9.14) + +2004-09-26 Helge Hess + + * UIxComponent.m: minor code cleanups (v0.9.13) + +2004-09-25 Helge Hess + + * v0.9.12 + + * GNUmakefile.preamble: fixed library dependencies (used wrong project + name) + + * SOGoAptFormatter.m: minor code cleanups, fixed issue on MacOSX + +2004-08-26 Helge Hess + + * v0.9.11 + + * SOGoDateFormatter.m: minor cleanups + + * UIxComponent.m: fixed includes to fix warnings + + * added common.h + +2004-08-24 Marcus Mueller + + * UIxComponent.m: new date related methods moved here from UIxCalView + (v0.9.10) + +2004-08-14 Marcus Mueller + + * UIxComponent.m: new method -isUIxDebugEnabled, triggered by new + default "SOGoUIxDebugEnabled" (v0.9.9) + +2004-08-13 Marcus Mueller + + * v0.9.8 + + * SOGoAptFormatter.[hm]: added new formatter for appointments. + + * UIxComponent.m: added warning. + + * GNUmakefile: added SOGoAptFormatter.[hm] + +2004-08-11 Marcus Mueller + + * UIxComponent.[hm]: added -SoUser (v0.9.7) + +2004-08-10 Marcus Mueller + + * v0.9.6 + + * SOGoDateFormatter.[hm]: added fast localizable date formatter. + + * GNUmakefile: added SOGoDateFormatter.[hm] + +2004-07-26 Marcus Mueller + + * UIxComponent.m: added "hm" queryParameter to add hour/minute part to + selectedDate which is necessary for appointment proposals. Removed + all additional stuff from -dateForDateString: and moved this to + -selectedDate. IMHO this is always high-level behaviour which needs to + be refined in the appropriate high-level method, not at conversion + level. (v0.9.5) + +2004-07-21 Marcus Mueller + + * UIxComponent.[hm]: renamed some of the labels to better reflect the + intention (and to avoid name clashes) (v0.9.4) + +2004-07-21 Marcus Mueller + + * UIxComponent.[hm]: date specific labels (weekday names, month names) + (v0.9.3) + +2004-07-20 Marcus Mueller + + * UIxComponent.[hm]: new method -labelForKey: implemented very similar to + new WOLabelAssociation in SOPE. Also implemented -locale. (v0.9.2) + +2004-07-19 Marcus Mueller + + * UIxComponent.m: new method -backendTimeZone. + +2004-07-02 Helge Hess + + * UIxComponent.m: introduced 'viewTimeZone' method and adds some + timezone correction to date methods + +2004-06-30 Helge Hess + + * product.plist: make categories on SOGoObject instead of SxFolder + + * GNUmakefile: patches for different build/runtime environment + + * created ChangeLog +2005-08-01 Helge Hess + + * GNUmakefile: added FHS installation of sogod-0.9 (v0.9.41) + + * SOGo.m: added class security declarations (previously in + product.plist of MainUI), ensure that core SOGo SoClasses are loaded + (v0.9.40) + + * v0.9.39 + + * moved MainUI product bundle to UI/MainUI + + * SOGo.m: fixed some gcc 4.0 warnings + +2005-07-21 Helge Hess + + * product.plist: protect homepage using SOPE access control (v0.9.38) + + * SOGoRootPage.m: redirect authenticated users to their login page + (v0.9.37) + +2005-07-21 Marcus Mueller + + * homepage.js: fixed post to send an empty string instead of null - + this works in Firefox on MacOSX but fails on Windows (v0.9.36) + +2005-07-20 Marcus Mueller + + * v0.9.35 + + * README: updated with new default description + + * SOGoUserHomePage.wox: in case user is not authorized to change the + internet access flag, the rendered text is different now + + * English.lproj/Localizable.strings: provide new label for case that + user is not allowed to change internet access + +2005-07-15 Helge Hess + + * GNUmakefile.preamble: fixed Cocoa compilation (v0.9.34) + +2005-07-14 Helge Hess + + * moved SOGoUser and SOGoAuthenticator to libSOGo (v0.9.33) + +2005-07-14 Marcus Mueller + + * SOGoUserHomePage.m: vacation message state is now properly being + retrieved from AgenorUserManager (v0.9.32) + + * v0.9.31 + + * SOGoUserHomePage.[m, wox]: added internet access lock + display/modification and vacation state (currently only faked) + + * homepage.js: JavaScript in use on the homepage + + * English.lproj/Localizable.strings: removed old labels and added a + bunch of new labels + +2005-07-12 Helge Hess + + * v0.9.30 + + * SOGoAuthenticator.m: create SOGoUser objects + + * added 'SOGoUser' object/class as a subclass of SoUser, using this + object various Agenor properties like cn or email can be determined + (will use the AgenorUserManager to retrieve such) + +2005-07-08 Marcus Mueller + + * README: updated for new default 'SOGoAllowsUnrestrictedAccess' + +2005-07-05 Marcus Mueller + + * v0.9.29 + + * README: updated defaults documentation + + * SOGo.m: added new default 'SOGoEnableDoubleReleaseCheck' for + debugging of NSAutoreleasePool issues + +2005-03-28 Helge Hess + + * SOGoProductLoader.m: do not try to load directories without + extensions (v0.9.28) + +2005-03-23 Marcus Mueller + + * renamed "default.strings" to "Localizable.strings" (v0.9.27) + +2005-02-21 Helge Hess + + * GNUmakefile: properly install bundle in FHS (v0.9.26) + +2005-02-20 Helge Hess + + * SOGoProductLoader.m: fixed product loader for FHS and Cocoa (0.9.25) + +2005-02-17 Helge Hess + + * SOGo.m: added a proper application 'name' for the WEResourceManager, + use WEResourceManager per default (v0.9.24) + +2005-02-12 Marcus Mueller + + * SOGo.m: corrected incorrect use of logging (v0.9.23) + +2005-02-10 Helge Hess + + * GNUmakefile.preamble: fixed linking on MacOSX (v0.9.22) + + * v0.9.21 + + * SOGoProductLoader.m: perform properly versioned plugin lookups (load + bundles from Library/SOGo-0.9 instead of Library/SOGo) + + * sogod is now a tool, not a .woa anymore + + * SOGo.m: minor cleanup in locale code, removed some dead code + (v0.9.20) + + * GNUmakefile: some support for tool compilation (does not work yet) + + * sogod.m: moved application class to own file, started to work on + daemon/product separation (v0.9.19) + +2004-01-07 Marcus Mueller + + * {English/French}.lproj/default.strings: changed encoding from + ISO-Latin-1 to UTF-8, which is now the default (v0.9.18) + +2004-12-15 Marcus Mueller + + * SOGoUserHomePage.m: added defaultAction to redirect to + "Calendar/" (v0.9.17) + +2004-12-08 Marcus Mueller + + * SOGoProductLoader.m, sogod.m: changed to use NGLogging (v0.9.16) + +2004-10-19 Marcus Mueller + + * SOGoUserHomePage.[wox|m]: changed hrefs to be computed dynamically + instead of being static (v0.9.15) + +2004-10-18 Marcus Mueller + + * v0.9.14 + + * SOGoUserHomePage.wox: Changed label for "eMail" to "Mail" for + consistency + + * *.lproj/default.strings: added label "Mail" + +2004-09-26 Helge Hess + + * sogod.m: return 404 for favicon.ico queries (v0.9.13) + + * fixed title bindings to const: in .wox (should be label:?) (v0.9.12) + +2004-09-25 Helge Hess + + * sogod.m: fixed a compile warning on OSX (v0.9.11) + +2004-09-20 Helge Hess + + * SOGoUserHomePage.wox: added link to Mail (v0.9.10) + +2004-08-27 Marcus Mueller + + * v0.9.9 + + * English.lproj/default.strings, French.lproj/default.strings: + dictionaries for labels + + * SOGoUserHomePage.wox: replaced constant strings with labels + +2004-08-26 Helge Hess + + * GNUmakefile.preamble: fixed superflous libjs (v0.9.8) + +2004-08-11 Helge Hess + + * added SOGoGroupPage and SOGoGroupsPage (default views for the group + folders) (v0.9.7) + + * sogod.m: do not set SoRootURL manually (v0.9.6) + +2004-08-10 Marcus Mueller + + * French.lproj/Locale: minor changes to capitalization (v0.9.5) + +2004-07-27 Marcus Mueller + + * sogod.m: added static SoRootURL to context (v0.9.4) + +2004-07-19 Marcus Mueller + + * sogod.m, */Locale: converted to UTF-8 for better editability (v0.9.3) + +2004-07-19 Marcus Mueller + + * v0.9.2 + + * sogod.m: added localization methods. Current locale is put into + WOContext upon first request. All locales are cached in the + application object. + + * [English,French].lproj: created. Put appropriate Locale + representations here. + + * GNUmakefile: added LANGUAGES and LOCALIZED_RESOURCES. + + * SOGoRootPage.wox: some debug code (for locales). + + * created ChangeLog. +2005-12-19 Marcus Mueller + + * GNUMakefile.preamble: provide all necessary library dependencies + for certain broken linkers - this won't harm platforms sporting + more capable linkers (v0.9.33) + +2005-08-01 Helge Hess + + * added FHS installation (v0.9.32) + +2005-07-26 Helge Hess + + * sql: added missing priority quickfield to SQLite tables (v0.9.31) + +2005-07-13 Helge Hess + + * OCSContactFieldExtractor.m: do not crash if the content is not a + proper property list, added ability to extract fields from a vCard + (v0.9.30) + +2005-07-12 Helge Hess + + * added sql/profile-create.psql to create the user-profile database + table (not strictly related to OCSContentStore) + +2005-07-05 Marcus Mueller + + * iCalEntityObject+OCS.m: fixed stupid extraction bug (v0.9.29) + +2005-07-05 Helge Hess + + * v0.9.28 + + * added test_quick_extract.m tool to test the quick-field extraction + + * OCSiCalFieldExtractor.m: properly deal with the iCal parser returning + just the iCalEvent + +2005-07-04 Marcus Mueller + + * v0.9.27 + + * iCalEntityObject+OCS.[hm]: new category used by OCSiCalFieldExtractor + + * OCSiCalFieldExtractor.m: extract priority from iCal event + + * appointment.ocs: added priority + + * sql/generate-folderinfo-sql-for-users.sh: added priority quick field + +2005-03-20 Helge Hess + + * moved most of the code to SOPE 4.5 sope-gdl1/GDLContentStore + (v0.9.26) + +2005-03-07 Helge Hess + + * appointment.ocs: added missing 'partstates' field (v0.9.25) + +2005-03-04 Helge Hess + + * v0.9.24 + + * ocs_gensql.m: started tool to create SQL CREATE from ocs model file + + * OCSFolderType.m: small change to the factory API, changed to use + NGResourceLocator + +2005-03-03 Helge Hess + + * OCSFolderManager.m: fixed a bug in subfolder listing (v0.9.23) + +2005-03-01 Marcus Mueller + + * v0.9.22 + + * appointment.ocs: added 'cycleenddate' and 'cycleinfo' to address + previous performance issues + + * OCSiCalFieldExtractor.m: set 'cycleenddate' and 'cycleinfo' for + recurrent events. Reverted setting of 'enddate' to the previous + behaviour since 'cycleenddate' is dedicated to the task now + + * iCalRepeatableEntityObject+OCS.[hm]: new category used by the + OCSiCalFieldExtractor to extract cycleInfo in an appropriate format + + * sql/generate-folderinfo-sql-for-users.sh, + sql/foldertablecreate-helge-privcal.psql, + sql/foldertablecreate-helge-privcal.sqlite, + sql/generate-folderinfo-sql-for-users-sqlite.sh: adjusted to new + schema + +2005-03-01 Helge Hess + + * OCSFolder.m: added support for storing content and quick info in + the same table (untested) (v0.9.21) + +2005-02-21 Helge Hess + + * v0.9.20 + + * OCSFolderManager.m: removed quoting of SQL table and column names + (breaks with SQLite and isn't necessary for PG), fixed URL pooling + for SQLite + + * NSURL+OCS.m: use tablename for last path component + +2005-02-12 Marcus Mueller + + * OCSiCalFieldExtractor.m: uses new iCalEvent API to determine correct + 'enddate' for recurrent events. This is an optimization which can + save quite some time for complex rules. (v0.9.19) + +2004-12-17 Marcus Mueller + + * v0.9.18 + + * OCSiCalFieldExtractor.m: extract participants' state + + * sql/generate-folderinfo-sql-for-user.sh, sql/appointment-create.psql, + sql/foldertablecreate-helge-privcal.psql: updated with new schema. + +2004-12-15 Marcus Mueller + + * OCSiCalFieldExtractor.m: partmails + cn's are concatenated by '\n' + now - this directly eliminates any ambiguities. Also, instead of + using 'email' for partmails and orgmail, the extractor uses the + 'rfc822Email' value which strips away any preceeding 'mailto:' + prefix, compacting the representation and speeding up comparison. + Also, "iscycle", "isallday" and "isopaque" are now provided by + NGiCal and thus always extracted (v0.9.17) + +2004-12-13 Marcus Mueller + + * sql/generate-folderinfo-sql-for-user.sh: fixed critical error in + Contacts folder_info, type was 'Appointment' but MUST be 'Contact' + (v0.9.16) + +2004-12-10 Marcus Mueller + + * sql: updated all generation scripts to the latest version (v0.9.15) + +2004-12-09 Marcus Mueller + + * v0.9.14 + + * appointment.ocs: added "ispublic", "isopaque", "status" and + "orgmail". + + * OCSiCalFieldExtractor.m: updated to extract new fields (see above) + + * sql: updated generate-folderinfo-sql-for-users.sh + +2004-10-19 Helge Hess + + * OCSFolder.m: added new method -fetchContentsOfAllFiles method which + fetches the contents of all files stored in the folder (required for + iCal generation, such bulk fetches should be avoided if possible!) + (v0.9.13) + +2004-10-15 Marcus Mueller + + * OCSStringFormatter.[hm]: minor cleanup (v0.9.12) + + * v0.9.11 + + * OCSStringFormatter.[hm]: new class to format strings according to + Database requirements (escaping etc.). + + * OCSFolder.m: uses new OCSStringFormatter now. + +2004-09-25 Helge Hess + + * fixed compilation on MacOSX (v0.9.10) + +2004-09-10 Helge Hess + + * v0.9.9 + + * fixed some gcc warnings + + * GNUmakefile.preamble: added pathes to compile against an FHS SOPE + + * OCSiCalFieldExtractor.m: fixed type of sequence iCalEvent field + +2004-09-01 Marcus Mueller + + * GNUmakefile: install type models into $(GNUSTEP_USER_ROOT) (v0.9.8) + +2004-08-27 Helge Hess + + * v0.9.7 + + * OCSChannelManager.m: use PostgreSQL as adaptor, not PostgreSQL72 + + * OCSFolder.m: added support for doing folder sorting in SQL + +2004-08-26 Helge Hess + + * v0.9.6 + + * added OCSContactFieldExtractor + + * sql: added sample contact folder create scripts + + * OCSFolderType.m: read extractor class name from type model + + * OCSFolderManager.m: added contact type model per default (v0.9.5) + +2004-08-25 Helge Hess + + * GNUmakefile: automatically install OCSTypeModels (v0.9.4) + +2004-08-15 Helge Hess + + * OCSFolder.m: added content deletion (v0.9.3) + + * OCSFolder.m: added sanity check to store method (v0.9.2) + +2004-08-14 Helge Hess + + * v0.9.1 + + * OCSiCalFieldExtractor.m: extract new quick fields: location, + partmails, sequence (does not yet handle allday and cycle due to + NGiCal restrictions) + + * appointment.ocs, sql/foldertablecreate-helge-privcal.psql, + sql/testapt-agenor-helge-privcal.psql, sql/appointment-create.psql: + added quick fields: isallday, iscycle, location, partmails, sequence + + * started ocs_recreatequick tool intended for recreating a quick table + based on the content table of a folder + +2004-07-20 Helge Hess + + * OCSChannelManager.m: fixed a bug in the channel GC which resulted + in an exception during the GC NSTimer + +2004-07-16 Helge Hess + + * improved error handling in various files + +2004-07-02 Helge Hess + + * OCSChannelManager.m: added garbage collector for channel pools + +2004-06-30 Helge Hess + + * OCSChannelManager.m: implemented pooling + + * OCSFolder.m: added quick fetches + + * GNUmakefile.preamble: fix link path + + * GNUmakefile (libOGoContentStore_HEADER_FILES_INSTALL_DIR): install + headers in OGoContentStore + + * GNUmakefile.preamble (ocs_ls_TOOL_LIBS): added static dependencies + for OSX + +2004-06-30 Marcus Mueller + + * ocs_cat.m, ocs_ls.m, ocs_mkdir.m: fixed for gnustep compile. + +2004-06-29 Helge Hess + + * created ChangeLog + +2005-07-15 Helge Hess + + * common.make: fixed for OSX compilation + +2005-07-12 Marcus Mueller + + * common.make: provide default install dir and bundle extension to + WO bundles + +2005-03-20 Helge Hess + + * common.make: link against GDLContentStore instead of OGoContentStore + +2005-02-24 Helge Hess + + * common.make (ADDITIONAL_LIB_DIRS): removed SOGoLogic from the linking + path + +2005-02-17 Marcus Mueller + + * common.make: removed dependency to removed libSOGoLogic + +2005-02-15 Marcus Mueller + + * v0.9.25 + + * GNUmakefile.preamble: added libNGiCal as a dependency + + * Appointments/SOGoAppointmentObject.[hm]: added -event as a + convenience to retrieve a complete iCalEvent from the stored + representation. This is used by SOGoAppointmentFolder to perform + necessary range calculations on recurrent events. + + * Appointments/SOGoAppointmentFolder.[hm]: extended -fixupRecord: and + -fixupRecords: to accept a fetchRange: as second parameter. This + is used for cyclic (recurrent) events to determine the required + 'amount' of fixup that needs to be done. During -fixupRecords: its + correctly determined now whether the record describes a recurrent + event - if that's the case, the whole event is retrieved and the + record gets duplicated (memory efficiently) as necessary to resemble + the appropriate fetch information in the desired range. + +2004-12-22 Marcus Mueller + + * v0.9.24 + + * Appointments/SOGoAppointmentFolder.[hm]: added -fetchFreebusy... + Removed all -fetchXXXInfosFromFolder: methods. There's a single + method to override now, making the job in SOGoGroupAppointmentFolder + much easier (to understand). + + * Appointments/SOGoGroupAppointmentFolder.m: added necessary fetch + abstraction. + +2004-12-17 Marcus Mueller + + * Appointments/SOGoAppointmentFolder.[hm]: added "partstates" to + coreInfos for fetching. Also added new API to fetch a stripped down + version of coreInfos, suitable for overviews. (v0.9.23) + +2004-12-15 Marcus Mueller + + * Appointments/SOGoAppointmentFolder.m: default redirect is now + "schedule" instead of "weekoverview" (0.9.22) + + * Appointments/SOGoAppointmentFolder.m: cleanup (v0.9.21) + + * Appointments/SOGoAppointmentFolder.m: compile fix (v0.9.20) + +2004-12-13 Marcus Mueller + + * v0.9.19 + + * Appointments/SOGoAppointmentFolder.[hm]: new method to fetch generic + fields (better suited for freebusy), fixed some "mailto:" prefix + madness + + * Appointments/SOGoAppointmentFolder.m: fixed bug in + -uidsFromICalPersons: (v0.9.18) + +2004-12-10 Marcus Mueller + + * Appointments/SOGoAppointmentFolder.m: added new quickinfo attributes + for fetching (v0.9.17) + +2004-12-08 Marcus Mueller + + * GNUmakefile: added Sieve product + + * Appointments/SOGoGroupAppointmentFolder.m, + Appointments/SOGoAppointmentFolder.m, SOGo/SOGoContentObject.m, + SOGo/SOGoUserFolder.m: changed to NGLogging. + +2004-08-26 Marcus Mueller + + * added "Mailer" product + +2004-08-25 Marcus Mueller + + * added "Contacts" product + + * ChangeLog: created +2005-08-01 Helge Hess + + * added FHS installation (v0.9.70) + + * SOGoObject.m: added class security declarations (previously in + product.plist of MainUI) (v0.9.69) + +2005-07-21 Helge Hess + + * SOGoUser.m: added a method to fetch share/emitter address pairs from + the AgenorUserManager (v0.9.68) + + * AgenorUserManager.m: rewrote to use NSMutableDictionary instead of + SOGoLRUCache. Flush caches every hour (configurable using + 'AgenorCacheCheckInterval' default). Added method to retrieve the + shares and the emitter emails in one step. (v0.9.67) + +2005-07-20 Helge Hess + + * v0.9.66 + + * SOGoContentObject.m: properly quote etag + + * SOGoObject.m: changed to check etag when the content is accessed in + WebDAV mode and return a 304 if the tag stayed the same. + Do not strip quotes from etags in if-*match headers. + Properly implement if-none-match for GET requests. + + * SOGoContentObject.m: moved generic etag checking to SOGoObject (to + share implementation with Mailer) (v0.9.65) + +2005-07-19 Marcus Mueller + + * AgenorUserManager.m: properly implemented internet/intranet vacation + message status detection (v0.9.64) + +2005-07-14 Marcus Mueller + + * v0.9.63 + + * SOGoAppointment.[hm]: new API to cancel appointments, NSCopying + support + +2005-07-15 Helge Hess + + * v0.9.62 + + * SOGoGroupFolder.m, SOGoUser.m: fixed a gcc 4.0 warning + + * GNUmakefile.preamble: properly use SYSTEM_LIB_DIR + + * v0.9.61 + + * SOGoContentObject.m: fixed a Cocoa warning + + * GNUmakefile.preamble: added proper linking flags for OSX + +2005-07-14 Marcus Mueller + + * v0.9.60 + + * SOGoAppointment.[hm]: added 'method' and 'userComment' accessors + + * SOGoAppointmentICalRenderer.m: properly render 'method' of + appointment if it's set - otherwise assume 'REQUEST' + +2005-07-14 Helge Hess + + * SOGoUser.m: added -homeFolderInContext: and + -schedulingCalendarInContext: methods (v0.9.59) + + * moved in SOGoUser and SOGoAuthenticator from Main (v0.9.58) + +2005-07-14 Marcus Mueller + + * AgenorUserManager.[hm]: added accessors and cache for the + 'mineqMelReponse' flag. Please note that the implementation isn't + fully fleshed out because the technical specification isn't correct. + (v0.9.57) + + * AgenorUserManager.[hm]: added accessors and cache for the + 'mineqOgoAccesInternet' flag (v0.9.56) + +2005-07-14 Helge Hess + + * SOGoContentObject.m: added empty davCopy/davMove methods (v0.9.55) + + * v0.9.54 + + * SOGoContentObject.m: added support for special 'new' key (server will + assign a name and add the new location in a special response header) + + * SOGoFolder.m: added +globallyUniqueObjectId (previously the method + was duplicated in each subclass) + + * SOGoContentObject.m: added transactionally save etag-checks in PUT + (use the etag value as the baseVersion in the content store) + (v0.9.53) + +2005-07-13 Helge Hess + + * v0.9.52 + + * SOGoObject.m: properly add etag during a GET (if available) + + * SOGoContentObject.m: generate etag from content object version, added + methods to check request preconditions, check preconditions prior + running a PUT, added new etag after running a PUT + + * SOGoObject.m, SOGoFolder.m: added +version methods to detect fragile + base class issues (v0.9.51) + + * SOGoFolder.m: changed to use plain column names (v0.9.50) + +2005-07-12 Marcus Mueller + + * SOGoUserFolder.m: forbid access (403) to SOGoGroupFolders if access + is not from the Intranet (v0.9.49) + +2005-07-12 Helge Hess + + * AgenorUserDefaults.m: added automagic profile row creation (v0.9.48) + + * AgenorUserDefaults.m: implemented saving of changed profiles + (v0.9.47) + +2005-07-12 Marcus Mueller + + * AgenorUserManager.[hm]: new API for extracting UIDs from iCalPersons + (v0.9.46) + +2005-07-12 Helge Hess + + * v0.9.45 + + * AgenorUserDefaults.m: properly fetch profile contents + + * agenor_defaults.m: read operation can now return all defined keys + + * v0.9.44 + + * AgenorUserDefaults.m: added typed value accessors and proper + initializers + + * AgenorUserManager.m: added 'AgenorProfileURL' default to configure + the database location of the user profile table + + * finished agenor_defaults tool + +2005-07-12 Helge Hess + + * v0.9.43 + + * added agenor_defaults tool to test defaults functionality + + * AgenorUserManager.[hm]: added -getUserDefaultsForUID: method to + retrieve the profile of a user (incomplete) + + * added AgenorUserDefaults class (incomplete) as a wrapper for the + profile data of Agenor users + +2005-07-08 Helge Hess + + * v0.9.42 + + * added agenor_emails4uid tool to check whether the + uid=>allowed-from-mails discovery in AgenorUserManager works + + * AgenorUserManager.m: added -getSharedMailboxEMailsForUID: method to + discover the shared emails the user is allowed to post from, + added caching of shared emails and Cyrus-logins + + * WOContext+Agenor.m: use SOGoInternetDetectQualifier for detecting + Internet access level (v0.9.41) + +2005-07-08 Marcus Mueller + + * WOContext+Agenor.[hm]: new category for discovering if the current + context is via access from the intranet. (v0.9.40) + +2005-07-07 Helge Hess + + * added agenor_shares4uid tool to check whether the uid=>shared mailbox + discovery in AgenorUserManager works + + * AgenorUserManager.m: fixed a major string scanning bug in + _serverCandidatesForMineqMelRoutage: method, + added -getSharedMailboxAccountStringsForUID: method to discover + shared IMAP4 accounts (v0.9.39) + +2005-07-07 Helge Hess + + * AgenorUserManager.m: added a simple -description method (v0.9.38) + + * added agenor_email2uid.m tool to check whether the email=>uid mapping + in AgenorUserManager works + +2005-07-06 Marcus Mueller + + * v0.9.37 + + * SOGoUserFolder.m: added 'freebusy.ifb' as an object to the + collection for proper display via DAV. + + * SOGoAppointmentICalRenderer.m: fixed header inclusion + + * AgenorUserManager.[hm]: added proposed future API for discovering + URLs for free/busy information (implementation currently returns + nil) + +2005-07-05 Marcus Mueller + + * SOGoAppointment.m: fixed a wrong -release (v0.9.36) + +2005-03-25 Helge Hess + + * SOGoObject.m: fixed DELETEAction to return a boolean if the delete + was successful (required by SoObjectRequestHandler) (v0.9.35) + +2005-03-20 Helge Hess + + * changed to use GDLContentStore (v0.9.34) + +2005-03-03 Marcus Mueller + + * SOGoGroupFolder.m: switched logging to NGLogging (v0.9.33) + +2005-03-02 Marcus Mueller + + * NSObject+AptComparison.[hm]: new comparison method. This is used + in SOGoAppointmentFolder currently. (v0.9.32) + +2005-02-20 Helge Hess + + * AgenorUserManager.m: refactoring of the LDAP fetch code, added the + 'SOGoFallbackIMAP4Server' default to configure the IMAP4 server when + LDAP is disabled (v0.9.31) + +2005-02-17 Helge Hess + + * moved in code from libSOGoLogic (unnecessarily a separate library) + (v0.9.30) + +2005-02-10 Helge Hess + + * SOGoObject.m: fixed a warning on MacOSX (v0.9.29) + +2005-02-07 Helge Hess + + * SOGoObject.h: added prototype for GETAction (v0.9.28) + +2005-02-06 Helge Hess + + * added -outlookMessageClass / -outlookFolderClass (v0.9.27) + +2004-10-19 Helge Hess + + * SOGoFolder: added method -fetchContentStringsAndNamesOfAllObjects + which fetches the contents of all folders objects (avoid to use this + high overhead method!). Required for iCalendar file generation. + (v0.9.26) + +2004-10-08 Helge Hess + + * SOGoUserFolder.m: enhanced object lookup so that when a Calendar + is opened with an extensions (eg "Calendar.ics") (v0.9.25) + + * SOGoFolder.m: added facility to define default extensions (v0.9.24) + + * SOGoObject.m: fixed not implemented return status (501, not 502) + (v0.9.23) + + * SOGoUserFolder.m: do not try to fetch file names in this folder + (v0.9.22) + + * v0.9.21 + + * SOGoContentObject.m: added PUTAction: + + * SOGoObject.m: implemented special WebDAV support in GETAction: + + * SOGoFolder.m: added -toOneRelationshipKeys method (enables listing of + contained objects in WebDAV), added container name to logging prefix, + explicitly mark as WebDAV collection + + * SOGoContentObject.m: mark as WebDAV non-collection + +2004-10-07 Helge Hess + + * SOGoUserFolder.m: added toManyRelationshipKeys, marked as WebDAV + collection (v0.9.20) + +2004-09-29 Helge Hess + + * SOGoObject.m: added -fetchSubfolders method to resolve all + toManyRelationshipKeys to SOPE objects (v0.9.19) + +2004-09-20 Helge Hess + + * SOGoObject.m: added a default GET method which redirects to + url + "/view" (v0.9.18) + + * SOGoObject.m(-description): added name of container (v0.9.17) + +2004-09-08 Helge Hess + + * SOGoGroupFolder.m: separate -resetFolderCaches method from -sleep + (v0.9.16) + +2004-09-08 Helge Hess + + * SOGoUserFolder.m: map "Mail" key to SOGoMailAccounts object (v0.9.15) + +2004-09-01 Marcus Mueller + + * v0.9.14 + + * GNUmakefile.preamble: fixed for gsmake 1.9.2 build + + * GNUmakefile: include ../../Version also + +2004-08-26 Helge Hess + + * SOGoUserFolder.m: added ability to create Contacts folder (v0.9.13) + +2004-08-24 Maxime Wacker + + * GNUmakefile.preamble: fixes for the build process (v0.9.12) + +2004-08-16 Helge Hess + + * SOGoCustomGroupFolder.m: added -initWithUIDs:inContainer: for using + the groups folder for internal group fetches (v0.9.11) + + * SOGoContentObject.m: updated multi-save things (which belong into the + SOGoAppointmentObject class), implement -sleep to release the content + (v0.9.10) + +2004-08-15 Helge Hess + + * SOGoContentObject.m: implement first version of -delete (v0.9.9) + + * SOGoObject.[hm], SOGoUserFolder.[hm]: implemented SOPE + -ownerInContext: (v0.9.8) + +2004-08-14 Helge Hess + + * v0.9.7 + + * SOGoGroupFolder.m: renamed -reset method to -sleep (called by SOPE) + + * SOGoObject.m: added SOPE -sleep method (resets container and can be + called by subclasses) + + * SOGoGroupFolder.m: made the folder found note log a debug log + +2004-08-11 Helge Hess + + * v0.9.6 + + * SOGoUserFolder.m: added "Groups" folder name and lookup + + * added: SOGoGroupsFolder, SOGoGroupFolder, SOGoCustomGroupFolder + +2004-07-02 Helge Hess + + * SOGoObject.m: added -delete method (but not yet implemented) + +2004-06-30 Helge Hess + + * SOGoContentObject.m: added -contentAsString method + + * created ChangeLog + +2005-07-15 Helge Hess + + * SOGoSieveScriptObject.m: fixed a gcc 4.0 warning (v0.9.11) + +2005-07-11 Helge Hess + + * SOGoSieveBaseObject.[hm]: removed unused -imap4Client method + (v0.9.10) + + * SOGoSieveBaseObject.m: updated to use new NGImap4 API (v0.9.9) + +2005-02-10 Helge Hess + + * SOGoSieveScriptObject.m: fixed a compile warning on MacOSX (v0.9.8) + +2005-02-06 Helge Hess + + * SOGoSieveScriptObject.m, SOGoSieveScriptsFolder.m: assigned + folder/message class (v0.9.7) + +2005-01-30 Helge Hess + + * SOGoSieveScriptObject.m: implemented Sieve script upload (v0.9.6) + + * some work on script upload (v0.9.5) + +2004-12-03 Helge Hess + + * SOGoSieveScriptObject.m, SOGoSieveScriptsFolder.m: added script + activation action (v0.9.4) + + * v0.9.3 + + * SOGoSieveScriptObject.m: added ability to fetch content + + * SOGoSieveScriptsFolder.m: added ability to lookup/construct + SOGoSieveScriptObject's + +2004-11-28 Helge Hess + + * added list capability, does not work with 'dotted' logins? (v0.9.2) + +2004-11-27 Helge Hess + + * started Sieve product +2005-08-02 Helge Hess + + * SOGoAppointmentObject.[hm]: added method to change participation + status of logged-in user (v0.9.50) + +2005-07-21 Marcus Mueller + + * SOGoAppointmentFolder.m: place a hint ('isRecurrent') into flattened + rows created from recurrent events so these can be signaled in the + UI (v0.9.49) + +2005-07-20 Marcus Mueller + + * v0.9.48 + + * SOGoAptMailInvitation.m, SOGoAptMailUpdate.m, SOGoAptMailDeletion.m, + SOGoAptMailRemoval.m: updated to contain new classes for additional + languages + + * SOGoAptMailInvitation.wo, SOGoAptMailUpdate.wo, + SOGoAptMailDeletion.wo, SOGoAptMailRemoval.wo: replaced with language + dependend counterparts + + * SOGoAptMail{English,French}Invitation.wo, + SOGoAptMail{English,French}Update.wo, + SOGoAptMail{English,French}Deletion.wo, + SOGoAptMail{English,French}Removal.wo: new language dependend + templates. Please note that due to an unresolved bug we cannot use + the standard WO lookup mechanism here. + +2005-07-15 Marcus Mueller + + * v0.9.47 + + * SOGoAptMailDeletion.[wo,m]: new template being used when appointment + is deleted + + * SOGoAptMailRemoval.[wo,m]: new template being used when attendee is + removed from appointment + + * SOGoAppointmentObject.m: now sends emails for removal of attendees + and deletion of appointment + +2005-07-15 Helge Hess + + * SOGoAppointmentFolder.m: fixed Cocoa warnings (v0.9.46) + + * SOGoAppointmentFolder.m: fixed gcc 4.0 warnings (v0.9.45) + +2005-07-14 Marcus Mueller + + * v0.9.44 + + * SOGoAppointmentFolder.m: explicitly set encoding for text and + calendar attachment parts + + * SOGoAptMailNotification.m: added -appointmentURL accessor + + * SOGoAptMailInvitation.wo, SOGoAptMailUpdate.wo: display + -appointmentURL instead of -homePageURL + + * v0.9.43 + + * SOGoAppointmentFolder.m: changed redirect from 'schedule' to + 'weekoverview' + +2005-07-14 Helge Hess + + * SOGoAppointmentFolder.m: moved +globallyUniqueObjectId method to + SOGoFolder.m baseclass (v0.9.42) + +2005-07-13 Helge Hess + + * SOGoAppointmentFolder.m: added a method to determine the resource + name from a vevent UID (v0.9.41) + +2005-07-12 Marcus Mueller + + * SOGoAppointmentObject.m: tries ambitiously to detect the baseURL in + -homePageURLForPerson: now. This code doesn't really belong here + but currently there's no appropriate controller for dealing with it + around. Also removed mail notification testing code. (v0.9.40) + +2005-07-12 Helge Hess + + * fixed compilation (v0.9.39) + +2005-07-12 Marcus Mueller + + * v0.9.38 + + * GNUmakefile: changed inclusion of bundle.make to wobundle.make + because of new components + + * v0.9.37 + + * SOGoAptMailNotification.[hm]: new component forming the basis for + the mail notification templates + + * SOGoAptMailInvitation.[wo, m]: invitation mail template, sent to all + new attendees of an appointment + + * SOGoAptMailUpdate.[wo, m]: update mail template, sent to all + attendees when appointment time is changed + + * SOGoAppointmentObject.m: rewritten to use the iCalEventChanges object + from NGiCal to discover changes to saved appointments. Additionaly + email notifications are emitted on certain occasions (this is not + full iMip, yet). In case the appointment time changes, state for + all attendees is reset to NEEDS-ACTION. + +2005-07-08 Marcus Mueller + + * SOGoAppointmentFolder.m: added 'partmails' and 'partstates' to + infos returned by -fetchOverviewInfosFrom:to: (v0.9.36) + +2005-07-06 Marcus Mueller + + * v0.9.35 + + * GNUMakefile: added SOGoFreeBusyObject.m + + * product.plist: added SOGoFreeBusyObject + + * SOGoFreeBusyObject.[hm]: new class resembling free/busy information + for a particular user. Because free/busy information isn't solely + based upon appointments, this is now a part of the user folder. + However the information contained therein is still based on + information provided by appointments, only. This should be fixed in + a later release. + + * SOGoAppointmentFolder.m: new API to lookup freeBusyObjects for an + array of uids. + +2005-07-05 Marcus Mueller + + * SOGoAppointmentFolder.m: fetch new priority field in core infos + (v0.9.34) + +2005-07-04 Marcus Mueller + + * SOGoAppointmentFolder.m: fetch new priority field in overview infos + (v0.9.33) + +2005-03-20 Helge Hess + + * SOGoAppointmentFolder.m: changed to use GDLContentStore (v0.9.32) + +2005-03-03 Marcus Mueller + + * SOGoGroupAppointmentFolder.m: fixed incorrect creation of a mutable + dictionary (was still immutable) (v0.9.31) + +2005-03-02 Marcus Mueller + + * SOGoAppointmentFolder.m: make sure fetchedInfos are sorted + ascending - this simplifies client code (v0.9.30) + + * SOGoAppointmentFolder.m: changed debugLog to use NGLogging (v0.9.29) + +2005-03-01 Marcus Mueller + + * SOGoAppointmentFolder.m: significantly changed handling of cyclic + events. Information for cyclic event calculation is now contained + in the quick info, making full fetches obsolete - performance + should improve significantly this way (v0.9.28) + +2005-02-22 Helge Hess + + * SOGoAppointmentFolder.m: minor code cleanups (v0.9.27) + +2005-02-17 Helge Hess + + * fixed for removal of SOGoLogic (v0.9.26) + +2005-02-06 Helge Hess + + * SOGoAppointmentObject.m, SOGoAppointmentFolder.m: added proper + message/folder class (v0.9.25) + +2004-11-09 Helge Hess + + * SOGoAppointmentObject.m: improved error handling in save method + (v0.9.16) + +2004-10-20 Helge Hess + + * SOGoAppointmentFolder.m: fixed a warning on MacOSX (v0.9.15) + + * SOGoAppointmentObject.m(saveContentString:): fixed a warning with new + objects (v0.9.14) + +2004-10-19 Helge Hess + + * SOGoAppointmentFolder.h: added -fetchAllSOGoAppointments method + which performs a bulk fetch on all files contained in the folder + and parses all contents into an array of SOGoAppointment objects + (used in the iCal file support, try to avoid this method, expensive!) + (v0.9.13) + +2004-09-25 Helge Hess + + * fixed compilation on MacOSX (v0.9.12) + +2004-09-08 Helge Hess + + * SOGoGroupAppointmentFolder.m: do not call -sleep in fetch method + (disconnects the folder from the parent folder), instead added a + -resetFolderCaches methods which performs some cleanups before a + fetch (v0.9.11) + +2004-08-16 Helge Hess + + * SOGoAppointmentFolder.m: added method to create a group folder and + a group calendar for a set of IDs (for internal queries) (v0.9.10) + + * SOGoAppointmentObject.m, SOGoAppointmentFolder.m: moved calendar + folder lookup methods to folder class (the object uses its container + to lookup the folder) (v0.9.9) + + * SOGoAppointmentObject.m: finished multi folder storage methods + (v0.9.8) + + * SOGoAppointmentObject.m: added multi folder storage methods (v0.9.7) + +2004-08-14 Helge Hess + + * SOGoGroupAppointmentFolder.m: implemented proper URL generation for + group calendars (will lookup the appointment in the proper "exact" + folder (v0.9.6) + + * SOGoAppointmentFolder.m: fetch location, isallday, iscycle and + partmails fields in -fetchCoreInfo (v0.9.5) + +2004-08-12 Helge Hess + + * v0.9.4 + + * SOGoAppointmentFolder.m: added -baseURLForAptWithUID:inContext: for + determining the resource URL of an appointment, used by calendar + views to locate the viewer page + +2004-08-11 Helge Hess + + * SOGoGroupAppointmentFolder: can merge input folders, tracks conflicts + in 'conflicts' key of the record (should be displayed somehow in the + UI) (v0.9.3) + + * v0.9.2 + + * SOGoAppointmentFolder.m, SOGoGroupAppointmentFolder: added + -calendarUIDs method which returns the UIDs of the currently + displayed persons (eg the members of a group) + + * started SOGoGroupAppointmentFolder + +2004-07-02 Helge Hess + + * SOGoAppointmentFolder.m: added method to fetch core info from other + OCS folders, correct timezone to MET after fetch core info + +2004-07-01 Helge Hess + + * redirect to weekoverview if GET is run on the folder itself + + * created ChangeLog +2005-07-21 Helge Hess + + * product.plist: make addressbook only available to owner (v0.9.15) + +2005-07-18 Helge Hess + + * SOGoContactObject.m: print an error log if a vCard could not be + parsed, cached failed parsing attempts (v0.9.14) + +2005-07-15 Helge Hess + + * SOGoContactFolder.m: fixed a gcc 4.0 warning (v0.9.13) + +2005-07-14 Helge Hess + + * SOGoContactFolder.m: use +globallyUniqueObjectId method from + SOGoFolder.m baseclass (v0.9.12) + +2005-07-13 Helge Hess + + * SOGoContactObject.m: hardened against vCard content (v0.9.11) + + * SOGoContactObject.m: removed special GET action, the redirect to + 'view' seems to be handled by SOPE now. This also makes WebDAV GET + work (v0.9.10) + +2005-03-20 Helge Hess + + * SOGoContactFolder.m: changed to use GDLContentStore (v0.9.9) + +2005-02-24 Helge Hess + + * SOGoContactObject.m: fixed a MacOSX warning (v0.9.8) + +2005-02-18 Helge Hess + + * SOGoContactObject.m: added a REST method to patch a single field of + the contact (v0.9.7) + +2005-02-06 Helge Hess + + * SOGoContactObject.m, SOGoContactFolder.m: added proper + message/folder class (v0.9.6) + +2004-12-08 Marcus Mueller + + * SOGoContactFolder.m: changed to NGLogging (v0.9.5) + +2004-09-25 Helge Hess + + * fixed compilation on MacOSX (v0.9.4) + +2004-08-27 Helge Hess + + * v0.9.3 + + * SOGoContactObject.m: use 'cn' as davDisplayName + + * SOGoContactObject.[hm]: can now decode the property list stored in + the store (v0.9.2) + + * started implementation of contact folders (v0.9.1) + +2004-08-26 Marcus Mueller + + * Product.m: typo in comment fixed + + * SOGoContactFolder.h, SOGoContactObject.h: changed _Appointments_ to + _Contacts_ + +2004-08-25 Marcus Mueller + + * ChangeLog: created +2005-07-30 Helge Hess + + * SOGoMailObject.m: fetch Kolab parts for inline display (v0.9.126) + + * SOGoMailObject.m: added 'outlookMessageClass' property with some + mail tagging for Kolab entities (v0.9.125) + + * SOGoMailBodyPart.m, SOGoMailObject.m: added default to disable etag + delivery/checks for mail objects (SOGoMailDisableETag) (v0.9.124) + +2005-07-22 Helge Hess + + * v0.9.123 + + * SOGoMailAccount.m: added -preferredIdentity method + + * SOGoUser+Mail.m: added a method to retrieve the primary identity of + an account + + * SOGoSharedMailAccount.m: do not show the drafts folder in share + mailboxes (v0.9.122) + + * SOGoUser+Mail.m: properly set email field of share account identities + (v0.9.121) + + * v0.9.120 + + * SOGoMailBaseObject.m: added a method to locate the mail accounts + folderby traversing the container hierarchy + + * SOGoMailIdentity.m: include sent folder in -description + + * SOGoMailAccounts.m: added method to fetch just the identities with + emitter permissions + + * SOGoUser+Mail.m: properly create mail identity objects + +2005-07-21 Helge Hess + + * v0.9.119 + + * SOGoMailAccounts.m: fetch identities from SoUser + + * added SOGoUser+Mail category for mail specific SoUser fields + + * SOGoMailIdentity.m: added ivars/accessors/description + + * v0.9.118 + + * SOGoMailAccounts.m: reject access to the folder in case the name of + the home folder doesn't match the logged in account (a user tries to + access another users Mail application) + + * started work on account based identities + + * SOGoMailObject.m: added a -davEntityTag (v0.9.117) + +2005-07-20 Helge Hess + + * SOGoMailObject.m: improved -doesMailExist check (do not refetch if + the coreinfo is available anyways) (v0.9.116) + + * v0.9.115 + + * SOGoMailObject.m: do not use clientObject when fetching the + coreinfos, added a -doesMailExist method to cheaply check for + mail existance + + * SOGoMailBodyPart.m, SOGoMailObject.m: added a constant etag for + content (possible for IMAP4 content), check etag prior delivering + content (return a 304 in case the constant etag is supplied) + + * SOGoMailObject.m: added handling for some specific headers (v0.9.114) + +2005-07-19 Helge Hess + + * SOGoMailObject.m: changed to fetch and parse the full mail header, + can be disabled using the 'SOGoDoNotFetchMailHeader' default. The + overhead is about 10ms on the dev-system (v0.9.113) + + * SOGoMailFolder.m: report NO in -isCreateAllowed when the folder is + the INBOX and SOGoSpecialFoldersInRoot (altnamespace) is enabled + (#1472) (v0.9.112) + + * SOGoDraftObject.m: made 'SOGoInternetMailSuffix' a pattern which can + access request values (v0.9.111) + + * SOGoDraftObject.m: added support for adding a marker to the textpart + of the message in case the client is accessing the server from the + Internet. The text can be specified using the + 'SOGoInternetMailSuffix' default (v0.9.110) + + * v0.9.109 + + * added fragile base class version checks to most classes + + * SOGoMailBaseObject.m: cache failed login attempts (+ connection) to + improve failed-login behaviour + +2005-07-18 Helge Hess + + * SOGoDraftObject.m: send text/* attachments with disposition 'attach' + instead of 'inline' (inline can still be enabled with the + 'SOGoShowTextAttachmentsInline' default, but be aware of the charset + issues with text attachments!) (v0.9.108) + +2005-07-15 Helge Hess + + * v0.9.107 + + * SOGoMailBodyPart.m: check lookup key path extension to determine the + part subclass to instantiate (note: the link generator in the UI + must generate proper links including the extension to make this work) + + * added special part subclasses SOGoVCardMailBodyPart and + SOGoCalendarMailBodyPart + + * SOGoMailObject.m: map vcf extension to vcard mime type, added some + debug logging + + * SOGoMailFolder.m: fixed a stupid bug in permission parsing (v0.9.106) + + * SOGoMailFolder.m: added support for more Cyrus permission flags + (v0.9.105) + + * SOGoMailObject.m, SOGoMailBodyPart.m, SOGoDraftObject.m: fixed gcc4.0 + warnings (v0.9.104) + + * SOGoMailManager.h: fixed a gcc 4.0 warning (v0.9.103) + +2005-07-14 Helge Hess + + * v0.9.102 + + * SOGoSharedMailAccount.m: create an object of class + SOGoSharedInboxFolder in case the lookup key is INBOX + + * added SOGoSharedInboxFolder.m for inboxes of shared mail accounts + (which have a different location than standard inboxes and never + contain subfolders) + + * SOGoSharedMailAccount.m: prepared code to support a shared INBOX + folder (v0.9.101) + + * v0.9.100 + + * SOGoMailAccounts.m: create an object of class SOGoSharedMailAccount + in case the lookup-key contains an ".-." + + * SOGoMailAccount.[hm]: added some functionality to deal with shared + mail accounts + + * added SOGoSharedMailAccount class for shared mailboxes + +2005-07-12 Helge Hess + + * SOGoMailAccounts.m: use new SoUser API instead of AgenorUserManager + (v0.9.99) + +2005-07-11 Helge Hess + + * v0.9.98 + + * use new -imap4Connection API everywhere + + * SOGoMailBaseObject.m: deprecated -mailManager method, added + -imap4Connection method + + * SOGoMailBaseObject.[hm]: removed unused -imap4Client method (v0.9.97) + + * moved SOGoMailManager related API to NGImap4 (NGImap4Connection, + NGImap4ConnectionManager, etc) (v0.9.96) + +2005-07-11 Helge Hess + + * v0.9.95 + + * SOGoMailBaseObject.m: removed -imapFolderName method + + * SOGoMailManager.m, SOGoMailConnectionEntry.m: moved implementations + of operations to SOGoMailConnectionEntry + +2005-07-08 Helge Hess + + * SOGoMailAccounts.m: use WOContext method from libSOGo to detect + Internet access (v0.9.94) + + * SOGoMailAccounts.m: only deliver share-names as subobjects if the + request is not coming from the Internet. Ensure that limitation in + -lookupName:. Can be enabled using SOGoInternetDetectQualifier just + like in UIxMailEditor (v0.9.93) + + * v0.9.92 + + * SOGoMailManager.m, SOGoMailConnectionEntry.m: added caching of + per-folder permissions to avoid an IMAP4 query on each folder click + + * SOGoMailFolder.m: fixed an inconsistency in the naming of flags + +2005-07-07 Helge Hess + + * SOGoMailManager.m, SOGoMailFolder.m: added methods to "bulk add" + flags to all messages contained in a folder + (-addFlags:toAllMessagesInURL:password: for the manager, + -addFlagsToAllMessages: for the SOGoFolder) (v0.9.91) + + * added specific SOGoTrashFolder.m class (subclass of SOGoMailFolder) + to allow hooking up a different UI (v0.9.90) + + * SOGoMailAccounts.m: expose shared mailboxes retrieved via + AgenorUserManager (aka LDAP) in -toManyRelationshipKeys (v0.9.89) + + * SOGoMailObject.m: implemented -trashInContext: method (v0.9.88) + +2005-07-06 Helge Hess + + * SOGoMailObject.m: prefetch pgp-signature parts (v0.9.87) + + * SOGoMailObject.m: started -trash action (v0.9.86) + + * v0.9.85 + + * SOGoMailFolder.m: added ability to check certain ACL permissions (and + cache them for one invocation) + + * SOGoMailObject.m: implemented -isDeletionAllowed by asking the folder + for deletion + + * SOGoMailManager.m: added methods to retrieve the ACL and the myrights + from an IMAP4 mailbox + + * SOGoMailManager.m: detect Cyrus 'permission denied' when changing + flags and deliver a http-code 403 exception (v0.9.84) + +2005-03-25 Helge Hess + + * v0.9.83 + + * SOGoMailManager.m: properly select folder prior changing flags + + * SOGoMailObject.m: added a special DELETEAction: for mails, it marks + a mail deleted and expunges the folder to ensure the mail is deleted + (this is different to the -delete method!) + + * SOGoMailFolder.m: implemented content datasource for efficient WebDAV + listings (currently uses hardcoded parts and has inefficient DASL + support) (v0.9.82) + + * v0.9.81 + + * SOGoMailFolder.m: implemented mailbox renaming using WebDAV MOVE + + * SOGoMailManager.m: added support for renaming mailboxes + + * v0.9.80 + + * SOGoMailFolder.m: now ensures during lookup that mailboxes actually + exist, this may slow down the lookup if the hierarchy was not fetched + yet + + * SOGoMailObject.m, SOGoMailFolder.m: prepared for WebDAV move and copy + operations + + * v0.9.79 + + * SOGoMailFolder.m: ensure that mailbox exists if a DAV depth:0 query + is run on the folder (by selecting the mailbox) + + * SOGoMailManager.m: added method to retrieve mailbox select info + + * SOGoMailAccount.m: added ability to create mailboxes at the root + (account) level (v0.9.78) + +2005-03-03 Helge Hess + + * SOGoMailManager.m: improved compatibility with Cocoa Foundation + (some weird difference in NGImap4 result processing) (v0.9.77) + +2005-02-21 Helge Hess + + * SOGoMailObject.m: generate proper .ics extension for text/calendar + message parts, fetch text/calendar parts as plain content (v0.9.76) + +2005-02-15 Helge Hess + + * SOGoMailAccount.m: added 'SOGoSpecialFoldersInRoot' default to + make SOGo lookup Sent/Trash in the IMAP4 root instead of under + INBOX (that is, set SOGoSpecialFoldersInRoot to YES if you have + 'altnamespace' in Cyrus set to yes) (v0.9.75) + +2005-02-14 Helge Hess + + * v0.9.74 + + * SOGoMailAccount.m: fetch all root folders from IMAP4, do not assume + "INBOX" + + * SOGoMailManager.m: properly support rootfolders in IMAP4 + +2005-02-13 Helge Hess + + * SOGoMailAccount.m: changed short title creation to use login@host + (v0.9.73) + + * SOGoMailFolder.m: do not fetch message ids on folder traversal + (v0.9.72) + +2005-02-09 Helge Hess + + * v0.9.71 + + * SOGoMailObject.m: -lookupInfoForBodyPart: can now deal with string + parameters (eg 1.2.3) in addition to arrays and returns the full + body structure for empty strings ("") + added support for fetching parts as NSString's (by applying the + charset in the body structure) + +2005-02-08 Helge Hess + + * SOGoMailObject.m: added method to fetch individual plain/text parts + + * v0.9.70 + + * SOGoMailManager.m: only perform IMAP4 select if the folder changes + (gives a major speed boost), can be disabled with the + 'SOGoAlwaysSelectIMAP4Folder' default + + * SOGoMailAccount.m: added code to take the IMAP4 login from the + HTTP request + + * v0.9.69 + + * reworked for new NGImap4 v4.5.210 API + + * SOGoMailObject.m: removed fromEnvelopeAddress in favor of + fromEnvelopeAddresses to match the new NGImap4 v4.5.210 API + +2005-02-07 Helge Hess + + * v0.9.68 + + * SOGoDraftObject.m: added ability to specify additional headers + + * v0.9.67 + + * SOGoMailFolder.m: detect special folder names and return proper + folder type + + * SOGoMailAccount.m: made Sent/Trash folder name configurable using the + 'SOGoSentFolderName'/'SOGoTrashFolderName' defaults + +2005-02-06 Helge Hess + + * SOGoMailFolder.m, SOGoDraftsFolder.m: added proper folder classes + (v0.9.66) + +2005-01-31 Helge Hess + + * v0.9.65 + + * SOGoMailManager.m, SOGoMailFolder.m: added expunge method + + * SOGoMailObject.m: improve bulk key collector + + * SOGoMailObject.m: moved more bulk fetching to SoObject (v0.9.64) + + * SOGoMailObject.m: moved in plain/text bulk fetch method from mail + viewer (since it is general purpose) (v0.9.63) + + * SOGoMailObject.m: properly handle part lookup in the context of + embedded message/rfc822 content (v0.9.62) + +2005-01-30 Helge Hess + + * v0.9.61 + + * SOGoMailObject.m, SOGoMailBodyPart.m, product.plist: added type + specific SOGoMailBodyPart controller objects, reduced debug logs + + * v0.9.60 + + * SOGoDraftObject.m: added -content and -contentAsString methods (Note: + those are expensive operations!), added GETAction: to retrieve the + MIME representation of a draft + + * SOGoDraftsFolder.m: added -toOneRelationshipKeys to support SOPE + WebDAV access + + * v0.9.59 + + * SOGoDraftObject.m: improved attachment/info API to return exceptions, + minor improvement to attachment name check, properly generate + message/rfc822 mime type for mail attachments, properly generate + "text/plain; utf8" header + + * SOGoMailAccount.m: use a constant for INBOX folder name, disabled + 'Filters' folder unless the 'SOGoEnableSieveFolder' is set (since + Sieve support is incomplete) + +2005-01-28 Helge Hess + + * v0.9.58 + + * SOGoMailObject.m: implemented a simple delete by setting the IMAP4 + delete flag + + * SOGoMailManager.m: added method to mark a message deleted + + * SOGoMailFolder.m: just override -delete instead of implementing + -DELETAction: directrly + + * SOGoMailAccount.m: added ability to retrieve Sent/Trash and INBOX + special mail folders + + * v0.9.57 + + * SOGoMailBodyPart.m: enhanced lookup to allow for arbitary filenames + being attached to a body-part name. Improves download behaviour. + + * SOGoMailBaseObject.m, SOGoMailObject.m: moved + -isBodyPartKey:inContext: method to base object for reuse in + SOGoMailBodyPart + + * SOGoMailBodyPart.m: minor code cleanup + +2005-01-26 Helge Hess + + * v0.9.56 + + * SOGoMailManager.m, SOGoMailFolder.m: added method to save new + content in an SOGoMailFolder (to support #1054) + + * SOGoMailAccount.m: minor code cleanup + +2004-12-08 Marcus Mueller + + * SOGoMailAccount.m, SOGoMailBaseObject.m, SOGoMailObject.m, + SOGoMailManager.m, SOGoDraftsFolder.m, SOGoMailAccounts.m, + SOGoMailBodyPart.m, SOGoDraftObject.m: changed to use NGLogging + (v0.9.55) + +2004-11-27 Helge Hess + + * SOGoMailAccount.m: added 'Filters' key and lookup of Sieve filters + (v0.9.54) + +2004-11-11 Helge Hess + + * v0.9.53 + + * SOGoMailAccounts.m: added -allFolderPathes methods to retrieve the + names of all folders associated with the account + + * SOGoMailManager.m: added -allFoldersForURL:password: method + +2004-11-09 Helge Hess + + * added support for toggling mail flags (v0.9.52) + + * moved all tree navigation code to UIxMailTree (v0.9.51) + + * SOGoMailBaseObject.m, SOGoMailAccounts.m: moved tree code to separate + file (v0.9.50) + + * SOGoMailBaseObject.m, SOGoMailManager.m, SOGoMailConnectionEntry.m: + added cache flush operations for getmail (v0.9.49) + +2004-11-08 Helge Hess + + * SOGoMailManager.m: improved a log message (v0.9.48) + +2004-10-30 Helge Hess + + * v0.9.47 + + * SOGoMailFolder.m: added ability to create and delete subfolders using + WebDAV + + * SOGoMailConnectionEntry.m: added method to flush folder hierarchy + cache + + * product.plist: added default role for adding folders (owner) + + * SOGoMailObject.m: added -content and -contentAsString method to + retrieve raw IMAP4 message content, added GETAction to query a + message (v0.9.46) + +2004-10-29 Helge Hess + + * SOGoDraftObject.m: add 'name' parameter to content-type, properly + encode binary attachments (v0.9.45) + +2004-10-28 Helge Hess + + * SOGoDraftObject.m: do not patch NGImap4Envelope ivars and use the new + constructor method (v0.9.44) + +2004-10-27 Helge Hess + + * SOGoMailManager.m: added 'SOGoIMAP4StringSeparator' default to + configure to folder separator. Default is '/' instead of '.' + (v0.9.43) + + * v0.9.42 + + * SOGoDraftObject.m: implements some SOGoMailObject methods + + * SOGoDraftsFolder.m: implemented some draft folder listing + + * SOGoDraftObject.m: added mail send functionality (v0.9.41) + + * SOGoDraftObject.m: added ability to create NGMime objects from draft + (v0.9.40) + +2004-10-26 Helge Hess + + * SOGoDraftObject.[hm]: added method to delete attachments (v0.9.39) + +2004-10-26 Marcus Mueller + + * SOGoDraftObject.h: lF compile fix (v0.9.38) + +2004-10-25 Helge Hess + + * SOGoDraftObject.m: added ability to manage a draft object folder + (v0.9.37) + +2004-10-21 Helge Hess + + * SOGoMailBaseObject.m: extract IMAP4 password from HTTP basic + authentication (v0.9.36) + +2004-10-20 Marcus Mueller + + * SOGoMailAccounts.m: changed methods according to new API of + AgenorUserManager (v0.9.35) + +2004-10-19 Marcus Mueller + + * SOGoMailAccounts.m: values for toManyRelationshipKeys are constructed + from information retrieved by the AgenorUserManager now. (v0.9.34) + +2004-10-11 Helge Hess + + * SOGoDraftsFolder.m: added methods to deal with new draft objects + (v0.9.33) + + * started SOGoDraftObject (v0.9.32) + +2004-10-10 Helge Hess + + * SOGoDraftsFolder.m: added methods to be compatible with the mail + folder (v0.9.31) + +2004-10-08 Helge Hess + + * v0.9.30 + + * SOGoMailObject.m: added support for davContentLength, added + RFC822.SIZE to coreinfo attributes + + * SOGoMailFolder.m: added .mail path extensions to generated + toOneRelationshipKeys + + * SOGoMailObject.m: fixed body part id (starts with 1, not with 0) + + * v0.9.29 + + * SOGoMailObject.m: added toOneRelationshipKeys/toManyRelationshipKeys + (return the contained body parts) + + * SOGoMailFolder.m: added toOneRelationshipKeys (returns the message + uids) + + * marked collections as WebDAV collections (v0.9.28) + +2004-10-06 Helge Hess + + * started SOGoDraftsFolder (v0.9.27) + + * v0.9.26 + + * SOGoMailConnectionEntry.m: added caching of sorted UIDs sets + + * SOGoMailManager.m: moved SOGoMailConnectionEntry class to own file + +2004-10-05 Helge Hess + + * SOGoMailManager: removed range argument from -fetchUIDsInURL:.., + since IMAP4 doesn't support ranges anyway ... (v0.9.25) + +2004-10-04 Helge Hess + + * SOGoMailBodyPart.m: improved MIME type generation (v0.9.24) + + * SOGoMailBodyPart.m, SOGoMailObject.m: finished first part fetching + support (v0.9.23) + + * SOGoMailObject.m: added method to fetch core infos of a mail, added + various methods to retrieve core info data (like subject or date) + (v0.9.22) + +2004-10-03 Helge Hess + + * v0.9.21 + + * SOGoMailObject.m: lookup 'number' names as part child objects + + * added SOGoMailBodyPart as a child object of SOGoMailObject + + * SOGoMailAccounts.m: changed link generation for active folder + + * v0.9.20 + + * SOGoMailObject.m: added method to fetch parts + + * SOGoMailManager.m: properly select folder prior fetch, added method + to fetch parts of a single (message) URL + +2004-10-02 Helge Hess + + * SOGoMailFolder.[hm]: removed ability to restrict UID fetch range, + need to fetch all (qualifier matching!) UIDs anyway (v0.9.19) + +2004-10-01 Helge Hess + + * more work on fetching mails (v0.9.18) + + * v0.9.17 + + * SOGoMailFolder.m: -fetchUIDsMatchingQualifier:sortOrdering:range: was + added to retrieve message UIDs + + * SOGoMailManager.m: added method for fetching message ids with server + side sorting + +2004-09-30 Helge Hess + + * v0.9.16 + + * SOGoMailBaseObject.m: improved debug logging + + * SOGoMailManager.m: fixed an Apple/libFoundation incompatibility + +2004-09-29 Helge Hess + + * SOGoMailManager.m: minor improvement to error logging (v0.9.15) + +2004-09-29 Helge Hess + + * v0.9.14 + + * SOGoMailAccounts.m: added tree navigation support + + * SOGoMailBaseObject.m: moved fetchSubfolders method to SOGoObject + + * SOGoMailBaseObject.m: fixed WebDAV include (v0.9.13) + + * v0.9.12 + + * SOGoMailAccount.m: added -shortTitle and use that as the + -davDisplayName + + * SOGoMailBaseObject.m, SOGoMailAccounts.m: added path tree navigation + support + +2004-09-28 Helge Hess + + * SOGoMailManager.m: added caching of folder hierarchy (v0.9.11) + + * SOGoMailManager.m: added connection pooling (v0.9.10) + + * v0.9.9 + + * SOGoMailBaseObject.m: added -mailManager method to retrieve the + mail manager object for a folder/mail/account + + * added SOGoMailManager class, will probably be moved to SOGoLogic + in the long run + + * SOGoMailBaseObject.m, SOGoMailAccount.m: added -mailAccountFolder + method to find the active root folder along the SOPE chain (v0.9.8) + + * SOGoMailAccount.m: be graceful if the IMAP4 login failed (v0.9.7) + +2004-09-27 Helge Hess + + * v0.9.6 + + * added basic folder listing + + * SOGoMailAccount.m: list "INBOX" as the sole account subfolder + +2004-09-26 Helge Hess + + * v0.9.5 + + * added SOGoMailBaseObject as a base object for the other mailer + SoObjects + + * added -imapURL method to the mail SoObjects (the imapURL is used to + locate the object in the IMAP4 server, just like in Thunderbird) + +2004-09-25 Helge Hess + + * fixed compilation on MacOSX (v0.9.4) + +2004-09-20 Helge Hess + + * SOGoMailAccounts.m: added hardcoded mail-account key (v0.9.3) + +2004-09-08 Helge Hess + + * added missing account objects (v0.9.2) + +2004-08-26 Marcus Mueller + + * ChangeLog: created