+2007-11-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+
+ * 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 <wsourdeau@inverse.ca>
+
+ * 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 <wsourdeau@inverse.ca>
+
+ * 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 <wsourdeau@inverse.ca>
+
+ * 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 <wsourdeau@inverse.ca>
+
+ * 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 <wsourdeau@inverse.ca>
+
+ * 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 <wsourdeau@inverse.ca>
+
+ * 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 <wsourdeau@inverse.ca>
+
+ * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
+ -deleteEntriesWithIds:ids]): make sure the objects returned by
+ lookupName:... are not instances of NSException.
+
+2007-11-03 Ludovic Marcotte <ludovic@inverse.ca>
+
+ * UI/Scheduler/UIxAppointmentEditor.m
+ Fixed monthly recurrences support.
+
2007-11-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
+ * 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.