X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ChangeLog;h=f77b4a32c9f915f22b66cfbdea81de779c9db249;hb=4e6eeb543b90ae4551e7dbc24a82eb608696e1a7;hp=06b9a6f5e15c2afae7a110f13c1f2978b5a4e95b;hpb=309dd45161f1ca71a534a0cb2c2d7b3c3631d41e;p=scalable-opengroupware.org diff --git a/ChangeLog b/ChangeLog index 06b9a6f5..f77b4a32 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,2287 @@ +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 @@ -2031,7 +4315,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.