X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=ChangeLog;h=607614a8dbf57a092c2dc1988ffee8714f4561ea;hb=f622f8e3a5550bba910e041cab6b28f07ff82281;hp=11f9fae3af2c286c6f1648a9330fb4cba86b7895;hpb=669db242c5b76ea4004bd93121fac5aab8a06084;p=scalable-opengroupware.org diff --git a/ChangeLog b/ChangeLog index 11f9fae3..607614a8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,951 @@ +2007-07-10 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject + -imap4URL]): rewrote method to support accented mailbox names. + ([SOGoMailBaseObject imap4Password]): rewrote to simply use + SOGoAuthenticator's passwordInContext:. + + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor + -takeValuesFromRequest:_rqinContext:_ctx]): explicitly set the + start and due dates to nil if hasStartDate and hasDueDate are + false. + + * SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator + -passwordInContext:context]): made method public. + + * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor + -extractQuickFieldsFromTodo:_task]): set "isallday" and "isopaque" + to false to avoid a null violation. + +2007-07-04 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -contentAsString]): returns the message encoded in ISO Latin 1 + again. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser +initialize]): read the + SOGoSuperUsername user defaults. + ([SOGoUser -initWithLogin:newLoginroles:newRoles]): simplified + method. + ([SOGoUser -rolesForObject:objectinContext:context]): if the + current user is the superuser, grant him/her the "owner" role. + + * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -ocsFolder]): create + the folder only if the current user is the owner of the future + folder. + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -contentAsString]): we return the content + based on the permissions returned by the security manager instead + of by looking at the user roles. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -calendarFolders]): read the calendar + folders of the user to whom this folder belongs instead of the + active user. This way, a delegate user will be able to have the + same view that the original user has if he connects from his user + directory. + + * Main/SOGo.m ([SOGo -lookupUser:_keyinContext:]): check if the + user exists before creating the SOGoUserFolder instance. If not, + returns nil. + + * UI/MailerUI/UIxMailSourceView.[hm]: new class module designed to + return the message source code in plain text. + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -contentAsString]): returns the message encoded in UTF8. + +2007-07-03 Wolfgang Sourdeau + + * OGoContentStore/iCalRepeatableEntityObject+OCS.m + ([iCalRepeatableEntityObject -cycleInfo]): no longer take the + leading tagname into account when serializing the element values. + + * Main/SOGoProductLoader.m: only load bundle directories ending + with the "SOGo" extension. + + * Main/SOGo.m ([SOGo + -_checkTableWithCM:cmtableURL:urlandType:tableType]): empty the + result set if the query has caused no exception. Otherwise we get + an "evaluation is in progress exception". + +2007-06-29 Wolfgang Sourdeau + + * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults + -generateSQLForInsert]): initialize error to nil before the + serialization. Otherwise the method can get confused if it ever is + initialized to something else. + + * SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder + -folderIsMandatory]): returns NO unconditionnally. + + * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders + -appendPersonalSources]): add the "personal" folder to the list of + user folders even if it doesn't exist, so that it is created when + the user accesses it. + + * SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder + -folderIsMandatory]): returns YES if nameInContainer is set to + "personal", which is the default address book. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -folderIsMandatory]): returns YES since + users must have one Calendar folder (one and only one). + ([SOGoAppointmentFolder -_privacySqlString]): unescape the + escaping '\' so make the carriage return a real one. This way, + PgSQL 8 won't complain about escaping the string. + + * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -ocsFolder]): new + method that create the folder if considered mandatory. + ([SOGoFolder -folderIsMandatory]): new method that determines + whether the folder should be created automatically or not. To be + overriden by subclasses. + + * Main/SOGo.m ([SOGo -run]): override method and create the + missing system tables if needed. + +2007-06-28 Wolfgang Sourdeau + + * UI/MailerUI/WOContext+UIxMailer.m ([WOContext + -mailDateFormatter]): returns the user's date formatter. + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject -date]): + applies the user timezone to the date object before returning it. + + * UI/Common/UIxSortButton.m: removed useless class module. + + * UI/Common/UIxSortableTableHeader.m: removed useless class + module. + + * UI/Contacts/UIxContactsListView.m ([UIxContactsListView + -contactInfos]): use the "asc" url parameter instead of "desc" to + determine the ordering. + ([-sortOrdering]): removed method. + ([UIxContactsListView -init]): removed the "searchText" ivar. + (general): the template no longer use the UIxSortableTableHeader + components. + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView + -defaultSortKey]): default sort following the messages arrival + instead of their date. + ([-isSortedDescending]): removed method. + ([-imap4SortOrdering]): use the "asc" url parameter instead of + "desc" to determine the ordering. + (general): the template no longer use the UIxSortableTableHeader + components. + +2007-06-27 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailListView.m ([UIxMailListView -sleep]): + removed method. + ([-setQualifier:_msg], [-qualifier]): removed methods. + ([UIxMailListView -defaultAction]): added code to handle the + search criteria and value passed as url parameters. Also, we now + handle the same search criterias as Thunderbird/Icedove. + +2007-06-22 Wolfgang Sourdeau + + * UI/PreferencesUI/UIxJSONPreferences.m ([UIxJSONPreferences + -jsonDefaultsAction]): bug fix: returns a WOResponse instance with + the string instead of the string itself. + ([UIxJSONPreferences -jsonSettingsAction]): same as above. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser +initialize]): new module + bool var "acceptAnyUser" that is set when the AuthenticationMethod + user default is nil. + ([SOGoUser -initWithLogin:newLoginroles:newRoles]): + unconditionnally returns an instance whenever acceptAnyUser is set. + +2007-06-21 Wolfgang Sourdeau + + * Main/sogod.m (main): prevent SOGo from running as root. + +2007-06-19 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser + -setCurrentPassword:newPassword]): new stub method. + ([SOGoUser -dateFormatterInContext:context]): new method that + returns an instance of SOGoDateFormatter configured based on the + user defaults. + + * UI/Common/UIxPageFrame.m ([UIxPageFrame + -relativePreferencesPath]): new method. + + * UI/Scheduler/UIxComponentEditor.m ([-titleDateFormatter]): + removed useless method. + + * SoObjects/SOGo/SOGoDateFormatter.m: rewrote class to accept + different configurable formats (long and short date + time). + + * SoObjects/SOGo/SOGoDateFormatter.[hm]: moved from UI/SOGoUI/. + + * SoObjects/Mailer/SOGoMailAccounts.m ([SOGoMailAccounts + -isInternetRequest]): removed method. + + * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults + -jsonRepresentation]): new method with an explicit name. + + * UI/PreferencesUI/product.plist: new bundle that provides a web + ui for handling user defaults. + + * UI/Scheduler/UIxTaskView.[hm]: removed unused module. + + * UI/Scheduler/UIxAppointmentView.[hm]: removed unused module. + + * SoObjects/SOGo/WOContext+Agenor.[hm]: removed unused module. + +2007-06-14 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoLRUCache.m: removed unused module. + +2007-06-13 Wolfgang Sourdeau + + * UI/Scheduler/NSArray+Scheduler.m ([NSArray + -compareEventsAscending:otherEvent]): no longer use compare: on + the time objects since one of them could be an NSNull, which + crashes when comparing with anything. + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -eventsListAction]): sort events from here. + ([UIxCalListingActions -tasksListAction]): sort tasks from here. + + * SoObjects/SOGo/NSObject+AptComparison.[hm]: removed category + module, replaced with NSArray+Scheduler in UI/SchedulerUI/. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder + -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): + no longer sort elements from here. + +2007-06-12 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -aclsForUser:uid]): implemented method by forwarding the request + to the container. This fixes a bug where users could no longer + read emails from shared folders. + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -init]): "isNew" is no longer defined + here, but rather in its parent class. + + * UI/SOGoUI/SOGoDateFormatter.m ([SOGoDateFormatter + -stringForSecondsSinceThe70s:seconds]): new utility method. + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -eventsListAction]): no longer reduce the end day of one day for + all day events since everything has been fixed in + OCSiCalFieldExtractor. + + * OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor + -extractQuickFieldsFromEvent:_event]): reduce the seconds/70 of + the end date of all day events of 1 so that they stay on their + real last day. + +2007-06-11 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalMonthView.m: no longer retrieve appointments. + + * UI/Scheduler/UIxCalView.m ([-fetchCoreAppointmentsInfos]): + removed method. + ([-fetchCoreTasksInfos]): removed method. + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -init]): initialize an instance of SOGoDateFormatter. + ([UIxCalListingActions -eventsListAction]): the display start and + end dates are added to the listing for each event. + + * UI/Scheduler/UIxCalDayTable.m: no longer retrieve appointments. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -isAllDay]): returns YES if the "hm" url parameter is set to + "allday". + ([UIxAppointmentEditor -defaultAction]): if isAllDay, the enddate + is displayed one day earlier. + +2007-06-07 Wolfgang Sourdeau + + * UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions + -_setupContext]): take the range of dates specified by the popup + into account. + + * UI/Scheduler/UIxCalListingActions.[hm]: new subclass of + WODirectAction that returns WOResponse objects with the events or + todos satisfying the parameters passed in the url. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -takeValuesFromRequest:_rqinContext:_ctx]): take the new ivar + "isAllDay" into account and compute the amount of days to pass to + the iCalEvent. + +2007-06-06 Francis Lachapelle + + * SoObjects/SOGo/NSNumber+Utilities.m: initial import. + * SoObjects/SOGo/NSNull+Utilities.m: initial import. + * UI/Scheduler/UIxCalTasksListView.m ([WOResponse -tasksListAction]): + new method that returns a json-formatted array of the visible tasks + for the current user. + +2007-06-05 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentObject.m: the owner of the + object must be present in the list of UIDs we delete the object + from. Otherwise Calendar objects having no organizer and no + attendees will remain in their owner's Calendar. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + -_urlPreferringParticle:expectedoverThisOne:possible]): remove the + first 3 elements of the path array if the url returned by + baseURLInContext: returns a hostname. + + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder + -_adjustOwner]): sharedFolderName and otherUsersFolderName may be + nil, in which case a crash happens when calling hasPrefix:. + ([SOGoMailFolder -_sharesACLs]): same as above. + ([SOGoMailFolder -otherUsersPathToFolder]): same as above. If + otherUsersFolderName is nil, we return nil. + ([SOGoMailFolder -httpURLForAdvisoryToUser:uid]): if we receive + nil from [self otherUsersPathToFolder], we return nil too. + +2007-06-01 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + -_urlPreferringParticle:expectedoverThisOne:possible]): unescape + the result of [self baseURLInContext:] to avoid a double escaping + in the resulting string. + + * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -aclsForUser:uid]): if + the user has the "ObjectReader" role on the parent container, then + he is granted the "ObjectViewer" role on this object. Same for + "ObjectEraser", although this might change later. + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -toolbar]): determine the toolbar filename based on the + permissions declared by the securitymanager. The role mechanism + has been adjusted on a lowerlevel so we can simplify the code. + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject + -initWithName:newNameinContainer:newContainer]): read the content + directly from here. That way we can determine whether the object + is being created. + ([SOGoContentObject -aclsForUser:uid]): if the object is new and + the ObjectCreator role is enabled, we also grant the ObjectEditor + role to the current user. + + * UI/Common/UIxFolderActions.m ([-canAccessContentAction]): + changed the method paradigm to only return HTTP code 204. Not test + is done whatsoever since the security manager does it for us. + + * UI/Contacts/UIxContactsListView.m ([-canAccessContentAction]): + removed method because the same exists in UIxFolderActions.m + + * UI/Contacts/UIxContactsUserRightsEditor.m + ([UIxContactsUserRightsEditor + -setUserCanReadObjects:userCanReadObjects]): new method. + + * SoObjects/SOGo/SOGoPermissions.m: added roles "FolderViewer" and + "FolderEraser" and special permission "Access Object". Removed + role "SOGoMailRole_MessageEraser" since "SOGoRole_ObjectEraser" + can be used instead. Removed "FolderReader" since it is useless. + + * SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry + -vCard]): directly use the "content" ivar since it is initialized + during object creation. + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder -init]): no longer handle the + nameInContainer no the container ivars. They were removed because + this class is a descendant of SOGoObject which already has them. + ([SOGoContactLDAPFolder -davDisplayName]): new overriden method + returning "displayName". + ([SOGoContactLDAPFolder -isFolderish]): new overriden method + returning "YES". + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -isOrganizerOrOwner:user]): commented out. + ([SOGoCalendarComponent -findParticipant:user]): new name for + method "participant:". + ([SOGoCalendarComponent -findParticipantWithUID:uid]): same as + findparticipant but taking a uid string as parameter. + ([SOGoCalendarComponent -contentAsString]): don't regenerate the + iCalendar automatically. Instead, this is done only when the user + is a "date and time viewer". + ([SOGoCalendarComponent -aclsForUser:uid]): take delegation roles + (modifier and responder) into account by compiling them with the + owner's roles. + + * SoObjects/Contacts/SOGoContactFolder.h: removed + "nameInContainer" from the list of required methods. + + * SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject + -davContentType]): returns "text/calendar". + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder -davResourceType]): declare the correct + groupdav resource-type. + + * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders + -davContentType]): same as below. + + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder + -initWithName:newNameinContainer:newContainer]): new overriden + method setting the custom owner directly. + + * SoObjects/Mailer/SOGoMailAccounts.m ([SOGoMailAccounts + -davContentType]): same as below. + + * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount + -davContentType]): same as below. + + * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -davContentType]): + declare "httpd/unix-directory". + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser +initialize]): declare + "UTC" as fallback timezone instead of "Canada/Eastern". + ([-hasEmail:email]): make use of the new NSArray's + containsCaseInsensitiveString: method. + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -davContentType]): declare "message/rfc822" as content type. + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -_privacySqlString]): "owner" is now an + ivar in SOGoObject. + ([SOGoAppointmentFolder + -fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): same as above. + ([-fetchContentObjectNames]): commented out method since it was + usefull only for testing Funambol. + + * SoObjects/SOGo/NSArray+Utilities.m ([NSArray + -containsCaseInsensitiveString:match]): an enhanced version of + containsObject:. + + * UI/MailerUI/UIxMailView.m ([-isTrashingAllowed]): removed + useless method. + ([-showMarkDeletedButton]): removed useless method. + ([-showTrashButton]): removed useless method. + + * SoObjects/Appointments/iCalEntityObject+SOGo.m + ([iCalEntityObject -userIsParticipant:user]): new proxy method + that invoked isParticipant on self for each possible email + addresses of the user passed as parameter. + ([iCalEntityObject -userIsOrganizer:user]): same as above. + + * SoObjects/Appointments/iCalEntityObject+SOGo.[hm]: new class + extension module. + + * SoObjects/Appointments/SOGoAppointmentObject.m + ([SOGoAppointmentObject + -saveContentString:contentStringbaseVersion:baseVersion]): remove + method since an event may not have an organizer. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject + -GETAction:localContext]): clarified method. Added support for + content-type (thanks to Helge Hess). + ([SOGoObject -initWithName:_nameinContainer:_container]): + initialize and retain the owner. + ([SOGoObject -davContentType]): returns "text/plain". + +2007-05-30 Wolfgang Sourdeau + + * UI/Common/UIxObjectActions.m ([UIxObjectActions + -addUserInAclsAction]): send an acl addition mail. + ([UIxObjectActions -removeUserFromAclsAction]): send an acl + removal mail. + + * UI/Common/UIxFolderActions.m ([UIxFolderActions + -_realActionWithFolderName:folderDict]): handle the possible + presence of the "mail-invitation" url parameter. If present, the + user will be redirected to the relevant folder. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -fullEmail]): new proxy method. + ([SOGoUser -language]): new method that returns the user's + preferred language, or the system's if none has been set yet. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -davURL]): new method + that returns the full dav url to self. + ([SOGoObject -soURL]): same as above but for the so url (Web UI). + ([SOGoObject -soURLToBaseContainerForUser:uid]): new method that + returns the full so url to the base of the SOGo module to which + self belongs, and for the specified user. + ([SOGoObject -soURLToBaseContainerForCurrentUser]): same as above + but for the current user. + ([SOGoObject -httpURLForAdvisoryToUser:uid]): new protocol method + required by the acl advisory templates and which returns a link + the target user can click to activate its new subscription. + ([SOGoObject -resourceURLForAdvisoryToUser:uid]): same as above + but for inclusion of the application/x-sogo-notification part, + which will be handled by the Lightning enhancer plugin. + + * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions -subscribeAction]) + ([UIxMailFolderActions -unsubscribeAction]): new stub methods that + do nothing yet since imap folder subscription is not handled yet. + + * SoObjects/SOGo/SOGoContentObject.m + ([-hasSupportForDefaultRoles]): removed method. + + * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager + -getFullEmailForUID:uid]): new method that returns the username + + email pair. + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent +initialize]): the default language for + mail templates is now set to English. + + * UI/SOGoUI/SOGoACLFrenchRemovalAdvisory.[hm]: new subclass of + SOGoACLAdvisory implementing the french template for user removal + from acls. + + * UI/SOGoUI/SOGoACLFrenchAdditionAdvisory.[hm]: new subclass of + SOGoACLAdvisory implementing the french template for user + additions to acls. + + * UI/SOGoUI/SOGoACLEnglishRemovalAdvisory.[hm]: new subclass of + SOGoACLAdvisory implementing the english template for user removal + from acls. + + * UI/SOGoUI/SOGoACLEnglishAdditionAdvisory.[hm]: new subclass of + SOGoACLAdvisory implementing the english template for user + additions to acls. + + * UI/SOGoUI/SOGoACLAdvisory.[hm]: new class module implemented the + supercall of all the acl advistory templates. The model is based + on SOGoAptMailNotification except that the template encapsulates + the message to be sent. Later, we might create a superclass common + to all template-based emails. + + * SoObjects/SOGo/NSArray+Utilities.m ([NSMutableArray + -addRange:newRange]): new method that store a string + representation of the NSRange passed as parameter. + ([NSMutableArray -hasRangeIntersection:testRange]): tests whether + any range contained in self intersect with the one passed as parameter. + + * SoObjects/SOGo/NSString+Utilities.m ([-stringByDetectingURLs]): + store ranges in an array to prevent them from intersecting with + each other during the passes. + +2007-05-29 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder + -primaryFetchMailboxInfo]): useless method. Removed. + +2007-05-28 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder + -toManyRelationshipKeys]): invoke [self subfolders]. + ([SOGoMailFolder -subfolders]): new method containing what used to + be in toManyRelationshipKeys. + ([SOGoMailFolder -subfoldersURL]): same as above but returns imap + urls. + + * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount + -allFolderPaths]): renamed version of "allFolderPathes", sorted by + named and at the beginning of which we put the predefined folders. + + * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions + -emptyTrashAction]): new method inspired by a similar one from + UIxMailListView, to which we added the ability to remove + subfolders. + + * UI/MailerUI/UIxMailListView.m ([-emptyTrashAction]): removed + method. Replaced with a similar one in UIxMailFolderActions. + + * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions + -renameFolderAction]): implemented method. + ([UIxMailFolderActions -deleteFolderAction]): no longer delete the + specified folder. Instead, we put it in the trash folder. + + * UI/MailerUI/UIxMailListView.m ([-createFolderAction]): removed + method, replaced with a similar method in the new + UIxMailFolderAction class module. + ([-deleteFolderAction]): idem. + + * UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions + -createFolderAction]): new method implementing subfolder creation. + ([UIxMailFolderActions -renameFolderAction]): new method + implementing subfolder renaming (basic implementation to be + finalized later). + ([UIxMailFolderActions -deleteFolderAction]): new method + implementing folder deletion. + + * UI/MailerUI/UIxMailFolderActions.[hm]: new module implementing + web actions related to the handling of imap folder. + +2007-05-25 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder + -ownerInContext:localContext]): overriden method because we are an + IMAP4 client and we need a bit more intelligence to deduce the + owner of the current folder. + ([SOGoMailFolder -aclsForUser:uid]): aclForMailboxAtURL might + return an NSException so we need to be careful here to avoid a + crash. + ([SOGoMailFolder -aclUsers]): aclForMailboxAtURL might return an + NSException so we need to be careful here to avoid a crash. + + * SoObjects/Mailer/SOGoMailAccounts.m + ([SOGoMailAccounts -fetchIdentitiesWithOnlyEmitterAccess:_flag]) + there is no longer any concept of Intranet or Internet connection + handling. + + * SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount + -sharedFolderName]): new method. + ([SOGoMailAccount -otherUsersFolderName]): new method. + + * UI/MailerUI/UIxMailFolderMenu.[hm]: removed module, obsoleted by + new javascript code and the new UIxMailAccountActions class. + + * UI/MailerUI/UIxMailTree.[hm]: removed module, obsoleted by new + javascript code and the new UIxMailAccountActions class. + + * UI/MailerUI/UIxMailTreeBlock.[hm]: removed module, obsoleted by + new javascript code and the new UIxMailAccountActions class. + + * UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions + -listMailboxesAction]): new method that returns a json-formatted + tree of all the mailboxes available to the current user. + + * UI/MailerUI/UIxMailAccountActions.[hm]: new module implementing + web actions related to the handling of mail accounts. + + * SoObjects/SOGo/NSDictionary+Utilities.[hm]: new extension + module. + + * SoObjects/SOGo/NSObject+Utilities.m ([NSObject + -jsonRepresentation]): new interface method meant to be overriden + by the primitive classes. + +2007-05-23 Wolfgang Sourdeau + + * UI/MailerUI/UIxMailSplashView.m: removed. + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -getUIDsForICalPersons:iCalPersons]): add + the uid to the list only when the user email is recognized by the + user manager. + +2007-05-22 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject + -isDeletionAllowed]): completed method with the new imap acl api. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -defaultAclRoles]): + removed method. + + * SoObjects/SOGo/SOGoPermissions.m: added the new role + "SOGoMailRole_MessageEraser". + + * UI/Common/UIxAclEditor.m ([UIxAclEditor -defaultUserID]) + ([UIxAclEditor -_prepareUsers]): take the new SOGoObject's + "defaultUserID" method into account. + + * UI/Common/UIxUserRightsEditor.m ([UIxUserRightsEditor -userIsDefaultUser]) + ([UIxUserRightsEditor -_initRights]): take the new SOGoObject's + "defaultUserID" method into account. + + * UI/MailerUI/UIxMailUserRightsEditor.m: added all the missing + methods to support the IMAP acls mentionned in the RFC 4314, + removed the ones specific to Cyrus. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -defaultUserID]): new + mandatory method for subclasses. Removed the SOGoDefaultUserID + global var. + + * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -defaultUserID]): + overriden method to return @"". + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject + -defaultUserID]): overriden method to return @"". + + * SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder + -aclsForUser:uid]): overriden method. + ([SOGoMailFolder -removeAclsForUsers:users]): overriden method. + ([SOGoMailFolder -setRoles:rolesforUser:uid]): overriden method. + ([SOGoMailFolder -defaultUserID]): overriden method. + ([SOGoMailFolder -hasSupportForDefaultRoles]): overriden method. + +2007-05-18 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder + -aclUsersForObjectAtPath:objectPathArray]): new method that being + forwarded the calles to aclUsers for the GCS-based subclasses of + SOGoObject. + + * SoObjects/Mailer/SOGoMailFolder.m: removed all the previous + methods that would have been used to support IMAP acls. Replaced + them with the new protocol for them that has been implemented in + SOGo during the last few weeks. + + * SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject + -hasSupportForDefaultRoles]): override method by returning "YES". + + * SoObjects/SOGo/NSArray+Utilities.m ([NSMutableArray + -addObjectUniquely:object]): new method with an explicit name. + + * SoObjects/SOGo/SOGoObject.m ([SOGoObject -aclUsers]): renamed + "acl" to "aclUsers". Now designed to return only the uid of the + users involved in an ACL. + ([SOGoObject -hasSupportForDefaultRoles]): new method returning + "NO" by default. To indicate to the acl editor that we don't want + to handle a default user. + + * SoObjects/SOGo/SOGoPermissions.[hm]: added the + SOGoRole_ObjectReader, SOGoRole_Folder*, and SOGoMailRole_* + symbols. + + * UI/MailerUI/UIxMailUserRightsEditor.[hm]: new class module that + provides a view to the IMAP acls. + + * UI/MailerUI/UIxMailFolderACLEditor.m: removed obsolete module. + + * UI/WebServerResources/MailerUI.js: replaced all invocations of + addEventListener to the use of prototype's Event object. Also, + configured all menus programmatically following descriptions lists + containing their callbacks, or nulls, submenus id or separators. + +2007-05-17 Wolfgang Sourdeau + + * UI/Common/UIxObjectActions.m ([UIxObjectActions + -addUserInAclsAction]): save the previous roles of the user + (unlikely) or the default roles, or None instead of saving the + roles that should appear the first time in the role editor when no + default has been set... + + * SoObjects/SOGo/SOGoObject.m: defined a new constant + "SOGoDefaultUserID". + + * SoObjects/SOGo/SOGoFolder.m ([SOGoFolder + -setRoles:rolesforUser:uidforObjectAtPath:objectPathArray]): + ignore the "AuthorizedSubscriber" role and add the "None" role + when no other role is found. + + * UI/Common/UIxAclEditor.m: added a button for the new default + user roles feature. + + * UI/Common/UIxUserRightsEditor.m ([UIxUserRightsEditor + -_initRights]): don't take the "None" role into account when + initializing the list of current roles. + + * SoObjects/SOGo/SOGoPermissions.m: added a new void role + "SOGoRole_None". + +2007-05-16 Wolfgang Sourdeau + + * SoObjects/SOGo/NSString+Utilities.m ([NSString + -_rangeOfURLInRange:refRange]): urls cannot end with "&" nor "=". + There is no need to subscract the start from the length if a space + is not found since the range has not changed either. Finally, the + first character before the url might also be a tab or a cr, so we + match it against the "urlAfterEndingChars" custom NSCharacterSet. + ([NSString -stringByDetectingURLs]): modified to handle email + addresses and add a correct "mailto:" link. + +2007-05-15 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoAppointmentFolder.m + ([SOGoAppointmentFolder -fetchContentObjectNames]): override + method to return the events in the range of 2 weeks ago up to 4 + weeks from "now". + + * UI/MailPartViewers/UIxMailPartTextViewer.m + ([UIxMailPartTextViewer -flatContentAsString]): use the new + "stringByDetectingURLs" method to offer clickable urls. + + * SoObjects/SOGo/NSString+Utilities.m ([NSString + -stringByDetectingURLs]): this new method replaces passive URLS + with active ones for HTML resolution of the text. + +2007-05-14 Wolfgang Sourdeau + + * SoObjects/Mailer/SOGoDraftObject.m ([NSString + -asQPSubjectString:encoding]): simplified method. + The headers indicates "utf-8" again thank to our fix in + sope-mime. + + * SoObjects/SOGo/SOGoObject.m: fail to build if libFoundation is + being used. + +2007-05-11 Wolfgang Sourdeau + + * UI/Common/UIxObjectActions.m ([UIxObjectActions + -removeUserFromAclsAction]): implemented this method which was + missing and is required to remove users from ACLs. + + * UI/Common/UIxFolderActions.m ([UIxFolderActions + -subscribeAction]): folderDict was not autoreleased, resulting in + a leak... + + * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults + -primaryFetchProfile]): when building with libFoundation, don't + use the "propertyList" method from NSString. Rather, we convert + the string to an NSData instance and passit as parameter to + NSDeserializer. This way, we obtain a mutable dictionary rather + than an immutable one. + + * SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject -bodyPartForText]) + ([SOGoDraftObject -mimeMessageForContentWithHeaderMap:]): use the + constant string "contentTypeValue". + contentTypeValue is now set back to iso-8859-1 since NGMime + converts extracts the data in that encoding. + +2007-05-10 Wolfgang Sourdeau + + * SoObjects/SOGo/LDAPSource.m ([LDAPSource + -checkLogin:loginToCheckandPassword:passwordToCheck]): if a + "bindFields" value is present in the user defaults, use the + specified fields to find the dn of the user to bind. + ([LDAPSource -allEntryIDs]) + ([LDAPSource -fetchContactsMatching:match]) + ([LDAPSource -lookupContactEntry:entryID]) + ([LDAPSource -lookupContactEntryWithUIDorEmail:uid]): + bind and unbind the connection on each request. + + * UI/MailerUI/UIxMailAddressbook.m: removed obsolete module. + + * UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView + -contactSearchAction]): simplified method to use the facilities + provided by the LDAPUserManager. No longer takes care of the + "ldap-only" url parameter since all requests are handled by the + usermanager now. + + * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults + -primaryFetchProfile]): check that the value returned is not null + before interpreting it. + + * SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager + -contactInfosForUserWithUIDorEmail:uid]): check that uid is not empty. + ([LDAPUserManager -_fillContactMailRecords:contact]): if the + system email is already present, remove it before adding it. + + * SoObjects/SOGo/LDAPSource.m ([LDAPSource + -checkLogin:loginToCheckandPassword:passwordToCheck]): check that + loginToCheck is not empty. + ([LDAPSource -fetchContactsMatching:match]): check that match is + not empty. + ([LDAPSource -lookupContactEntry:entryID]): check that entryID is + not empty. + ([LDAPSource -lookupContactEntryWithUIDorEmail:uid]): check that + uid is not empty. + +2007-05-09 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -primaryEmail]): new name + for "mail" method. + ([SOGoUser -systemEmail]): returns the email formed from the + username and the default mail domain. + ([SOGoUser -hasEmail:email]): test whether the user has the + specified email, in a case-insensitive way. + + * SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator + -LDAPCheckLogin:_loginpassword:_pwd]): use the user manager to + check login information. + + * SoObjects/Contacts/SOGoContactLDAPFolder.m + ([SOGoContactLDAPFolder + +contactFolderWithName:aNameandDisplayName:aDisplayNameinContainer:aContainer]): + no longer manage LDAP connections. The requests are forwarded to + the relevant LDAPSource instead. + + * SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders + -appendSystemSources]): pass LDAPSource objects to + SOGoContactLDAPFolder instances. + + * SoObjects/Mailer/SOGoDraftObject.m: extract the raw email + address of the "from" field before sending the message. Otherwise, + sending the mail won't work. + + * UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -fromEMails]): + rewrote this method to request all the available email identities + for the current user. Also, the from field also contains the full + name of the user, not just his/her email address. + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -iCalPersonWithUID:uid]): new method taken + from the previous module iCalEntityObject+Agenor. + ([SOGoCalendarComponent -getUIDForICalPerson:person]): idem. + ([SOGoCalendarComponent -getUIDsForICalPersons:iCalPersons]): + idem. + + * SoObjects/Contacts/SOGoContactLDIFEntry.[hm]: new class module + replacing the SOGoContactLDAPEntry module. It was renamed as such + because it now receives a dictionary instead of an NGLdapEntry. + It thus can now handle data from any source of LDIF data, not + only coming from LDAP. + + * SoObjects/SOGo/LDAPUserManager.[hm]: new class module + implementing most of what used to be the AgenorUserManager class. + The difference is that users are cached in the forme of + dictionaries and many sources are used. Also, it can be used to + search LDAP contacts. + + * SoObjects/SOGo/LDAPSource.[hm]: new class module implementing + the concept of "ldap source", to be used by all the classes + needing access to LDAP-provided information: addressbooks and the + user manager. Most the method thereing are transcriptions of + methods previously found in SOGoContactLDAPFolder. It also contain + utility methods for user matching and authentification. + + * SoObjects/Appointments/iCalEntityObject+Agenor.[hm]: removed + module, rendered useless by code refactoring. + + * SoObjects/SOGo/AgenorUserManager.[hm]: removed module, replaced + with the freshly written "LDAPUserManager". + +2007-05-08 Wolfgang Sourdeau + + * SoObjects/Contacts/SOGoContactLDAPEntry.[hm]: renamed to + SOGOContactLDIFEntry. + + * SoObjects/Contacts/NGLdapEntry+Contact.[hm]: removed class + module, obsoleted by code in SOGo/LDAPSource.[hm]. + +2007-05-04 Wolfgang Sourdeau + + * UI/Common/UIxAclEditor.m ([UIxAclEditor -currentUserIsOwner]): + new method with an explicit name. + +2007-05-03 Wolfgang Sourdeau + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -isOrganizerOrOwner:user]): new method + replacing "isOrganizer:orOwner:" by taking only one instance of + SOGoUser as parameter. + ([SOGoCalendarComponent -participant:user]): new method replacing + the previous "isParticipant" boolean method by returning the first + participant matching the user passed as parameter. This method is + used so that both the regular email address and the "system email + address" of the user are matched against the participants emails. + + * SoObjects/SOGo/AgenorUserManager.m ([AgenorUserManager + -getSystemEMailForUID:uid]): new method that returns the email + formed with the user's uid and the default mail domain. + + * SoObjects/Appointments/SOGoCalendarComponent.m + ([SOGoCalendarComponent -rolesOfUser:login]): removed method that + was previously commented out. + + * SoObjects/SOGo/SOGoUser.m ([SOGoUser -systemEmail]): new method + forwared to [AgenorUserManager getSystemEmailForUID:]. + + * UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor + -toolbar]): method replacing the one with the same name in the + task and appointment editor classes. This method makes also use of + the new method "isOrganizerOrOwner:" and "participant:" in + SOGoCalendarComponent. + + * UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor + -toolbar]): removed method, replaced with a method with the same + name in UIxComponentEditor. + + * UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -toolbar]): removed + method, replaced with a method with the same name in + UIxComponentEditor. + + * SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults + -primaryFetchProfile]): the values returned from the database are + converted to a put dictionary first, since the dictionary returned + is actually an immutable one, which can cause a crash afterwards. + 2007-04-27 Wolfgang Sourdeau * SoObjects/SOGo/SOGoPermissions.m: added "SOGoRole_ObjectViewer"