X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ChangeLog;h=1f711462f46b8fef09cd80085b55945303c9a4b5;hb=8706636b0bc9b38b0e1fcfd39089daaafc76e7ca;hp=176fc0041c22fe80923bff341c813306feaf451c;hpb=87e89240d04eb9fb9eea10a14417cad4af198eee;p=scalable-opengroupware.org diff --git a/ChangeLog b/ChangeLog index 176fc004..1f711462 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,1820 @@ +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 @@ -2664,7 +4481,7 @@ 2006-09-13 Wolfgang Sourdeau * UI/Contacts/UIxContactView.m: added many wrapper methods to - display blocks of data à la Thunderbird Addressbook. If data is + 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.