4a29cda5b0
Monotone-Revision: 45f4738cc8fd2e71713e3625b32c19bd7ac54ce4 Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2008-07-09T17:11:18 Monotone-Branch: ca.inverse.sogo
6831 lines
270 KiB
Plaintext
6831 lines
270 KiB
Plaintext
2008-07-15 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFolderActions.m: new class for actions
|
|
on contacts of a specific address book.
|
|
|
|
* UI/Contacts/UIxContactFolderActions.m
|
|
([_moveContacts:toFolder:andKeepCopy:]): private method to
|
|
move and optionnaly copy one or many contacts to another
|
|
address book.
|
|
|
|
* UI/Contacts/UIxContactFolderActions.m ([WOActionResults
|
|
copyAction]): copy one or many contacts to another address book.
|
|
|
|
* UI/Contacts/UIxContactFolderActions.m ([WOActionResults
|
|
moveAction]): move one or many contacts to another address book.
|
|
|
|
2008-07-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-setIsNew:newIsNew]): new setter that declares the record as new,
|
|
since it is no longer so by default.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m ([SOGoAppointmentFolder -davCalendarOrder])
|
|
([SOGoAppointmentFolder -setDavCalendarOrder:newColor]): new
|
|
accessors to handle Apple's "calendar-order" property.
|
|
|
|
* SoObjects/Appointments/iCalRepeatableEntityObject+SOGo.m
|
|
([iCalRepeatableEntityObject -cycleInfo]): exception dates are now
|
|
returned as an array of strings.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fixupCyclicRecords:_recordsfetchRange:_r]): fix an infinite loop
|
|
occuring when the exception date was not the first date in the list.
|
|
|
|
2008-07-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filters]):
|
|
take exceptional modifications into account.
|
|
|
|
* SoObjects/Appointments/iCalToDo+SOGo.m: new class module with
|
|
category methods for iCalToDo.
|
|
([iCalToDo -quickRecord]): same as for method below.
|
|
|
|
* SoObjects/Appointments/iCalEvent+SOGo.m ([iCalEvent
|
|
-quickRecord]): new method taken from OCSiCalFieldExtractor.
|
|
|
|
2008-07-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+DAV.m ([NSString -asWebDAVTuple]): new
|
|
method that parses a webdav tag in the form "{ns:}tag" and returns
|
|
a dictionary.
|
|
|
|
* SoObjects/Appointments/SOGoUserFolder+Appointments.m
|
|
([SOGoUserFolder -davPrincipalPropertySearch:queryContext]): new
|
|
method to answer to "principal-property-search" report.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
([SOGoAppointmentFolders -davComplianceClassesInContext:]): new
|
|
method that declares "calendar-access" and "calendar-schedule".
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent
|
|
-sendIMIPReplyForEvent:eventto:recipient]): new method, derived from
|
|
sendResponseToOrganizer but more generic.
|
|
([SOGoCalendarComponent -sendResponseToOrganizer]): make use of
|
|
the new method mentionne above.
|
|
|
|
2008-07-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m ([SOGoAppointmentFolders -davCreateCalendarCollection:newNameinContext:createContext]):
|
|
new method that execute a "MKCALENDAR" request.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (SOGoSelectorForPropertyGetter): new
|
|
function that returns the selector for the getter method for the
|
|
specified property.
|
|
(SOGoSelectorForPropertySetter): same as above for the setter
|
|
method.
|
|
|
|
* SoObjects/SOGo/WORequest+SOGo.m ([WORequest
|
|
-davPatchedPropertiesWithTopTag:topTag]): new category method to
|
|
help with parsing properties modified or removed from PROPPATCH
|
|
methods and alike.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-PUTAction:_ctx]): increment the version number only if the record
|
|
is not new.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -davCalendarFreeBusySet]): new method that
|
|
returns the HREF to the calendars involved in the user's freebusy.
|
|
([SOGoAppointmentFolder
|
|
-setDavCalendarFreeBusySet:newFreeBusySet]): new method that
|
|
PRETENDS to modify the list of calendars mentionned above.
|
|
([SOGoAppointmentFolder
|
|
-caldavEventRequest:eventwithContent:iCalStringfrom:originatorto:recipients]):
|
|
add support for the "CANCEL" method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -postCalDAVEventCancelTo:recipients]): new
|
|
method that implements support for the CalDAV "CANCEL" method for
|
|
POSTs.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-PUTAction:_ctx]): the version passed to
|
|
saveContentString:baseVersion: is the current value of "version".
|
|
If the operation is succesful, the version is incremented from
|
|
here since no refresh is done from GCS. The returned etag has thus
|
|
now the correct value.
|
|
|
|
2008-07-09 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m ([WOActionResults
|
|
composeAction]): added support to specify an address book and
|
|
one more many contact IDs.
|
|
|
|
2008-07-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-caldavEventRequest:eventwithContent:iCalStringfrom:originatorto:recipients]):
|
|
simplified method since REPLY and REQUEST posts are very similar.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -postCalDAVEventReplyTo:recipients]): new
|
|
method that handle CalDAV REPLY posts by updating the event in the
|
|
table of the SOGo users and send the reply by email as well.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent
|
|
-sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]):
|
|
take the current user as originator rather than the object's owner.
|
|
|
|
2008-07-07 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([WOActionResults
|
|
allContactSearchAction]): new method to search contacts among
|
|
all address books.
|
|
|
|
2008-07-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-POSTAction:localContext]): take the content type as well as the
|
|
request and pass them as parameter to the new method below.
|
|
([SOGoObject
|
|
-davPOSTRequest:requestwithContentType:cTypeinContext:localContext]):
|
|
new method designed to handle POST requests on DAV objects.
|
|
|
|
2008-06-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-caldavEventRequest:eventfrom:originatorto:recipients]): handle
|
|
caldav replies.
|
|
([SOGoAppointmentFolder -lookupComponentByUID:uid]): new method
|
|
that returns an event search by uid.
|
|
|
|
* SoObjects/Appointments/SOGoUserFolder+Appointments.m ([SOGoUserFolder -davCalendarHomeSet])
|
|
([SOGoUserFolder -davCalendarScheduleInboxURL])
|
|
([SOGoUserFolder -davCalendarScheduleOutboxURL])
|
|
([SOGoUserFolder -davDropboxHomeURL])
|
|
([SOGoUserFolder -davNotificationsURL]): new methods for
|
|
supporting the caldav-schedule draft extension to CalDAV.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -davComplianceClassesInContext:]): append
|
|
"calendar-schedule" to the list.
|
|
([SOGoAppointmentFolder -POSTAction:localContext]): new method to
|
|
handle POST CalDAV requests.
|
|
([SOGoAppointmentFolder -davCollectionTag]): new method.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder
|
|
-lookupName:objectNameinContext:lookupContextacquire:acquire]):
|
|
use lookupContactentryWithUIDorEmail to make sure we use the ID
|
|
field specified in the user defaults to match the username, and
|
|
that the users can be found using their email.
|
|
|
|
2008-06-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
|
|
-contentAsString]): add the ending interval to "today" instead of
|
|
to the start date.
|
|
([SOGoFreeBusyObject
|
|
-contentAsStringWithMethod:methodfrom:_startDateto:_endDate]): new
|
|
method that accepts a method parameter to specify in the returned
|
|
iCalendar object.
|
|
|
|
2008-06-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -labelForKey:key]):
|
|
enhanced method to request the user language, his/her browser
|
|
languages and the system language as fallback.
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.m
|
|
([-currentContactFolderName]): no longer interprets the name of
|
|
the personal folder, since the default name is now localized at
|
|
creation time.
|
|
|
|
2008-06-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalendarProperties.m ([UIxCalendarProperties -calendarSyncTag])
|
|
([UIxCalendarProperties -setCalendarSyncTag:newTag]): new
|
|
accessors to retrieve and set the calendar tags from the template.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m ([SOGoAppointmentFolder -syncTag])
|
|
([SOGoAppointmentFolder -setSyncTag:newSyncTag]): new accessors
|
|
that retrieves and set the calendar tags.
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor
|
|
-canCreateOrModify]): new overriden method that checks whether the
|
|
current clientObject is an instance of SOGoContactLDIFEntry before
|
|
returning the super method. This is to avoid the case where the
|
|
"save" button would appear because the user is listed as a super
|
|
user, which owns everything.
|
|
|
|
2008-06-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage
|
|
-readFreeBusyAction]): accelerated the process of rendering free
|
|
busy information by using ptr** instead of NSArray.
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
|
|
+initialize]): initialize the default interval based on the new
|
|
"SOGoFreeBusyDefaultInterval" user default array.
|
|
([SOGoFreeBusyObject
|
|
-fetchFreeBusyInfosFrom:startDateto:endDate]): fetch the events
|
|
from all the owner calendars.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filters]):
|
|
add processed recurrent events to the list of records.
|
|
([SOGoAppointmentFolder
|
|
-fetchFreeBusyInfosFrom:_startDateto:_endDate]): request the
|
|
"c_cycleinfo" field in order for the recurrent events to be taken
|
|
into account.
|
|
|
|
2008-06-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([-fetchContentObjectNames]): removed useless method.
|
|
([-fetchAllSOGoAppointments]): removed useless method.
|
|
([SOGoAppointmentFolder
|
|
-fetchCoreInfosFrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filters]):
|
|
retrieve the fields required for object instantiation and cache
|
|
the resulting records.
|
|
([SOGoAppointmentFolder
|
|
-bareFetchFields:fieldsfrom:startDateto:endDatetitle:titlecomponent:componentadditionalFilters:filters]):
|
|
new method based on the non-bare part but simpler and without the
|
|
handling of cyclic records.
|
|
([SOGoAppointmentFolder -davCalendarQuery:queryContext])
|
|
([SOGoAppointmentFolder -davCalendarMultiget:queryContext]):
|
|
optimized those methods by replacing often-used NSArray instances
|
|
with arrays of ptr** and by removing utility submethods when
|
|
useful.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry
|
|
-vCard]): use the new "content" ivar.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m
|
|
([-deduceObjectForName:inContext:]): removed method since the
|
|
object type is now deduced in the parent class.
|
|
([SOGoContactGCSFolder -objectClassForResourceNamed:name]): new
|
|
overriden method.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
|
([-fetchContentStringsAndNamesOfAllObjects]): removed useless method.
|
|
([SOGoGCSFolder
|
|
-lookupName:keyinContext:localContextacquire:acquire]): added new
|
|
overriden method, to fetch all the required metadata and content
|
|
for basic handling of SOGoContentObjects.
|
|
([SOGoGCSFolder -fetchContentObjectNames]): prefetch and cache all
|
|
the metadata and content of children objects since this method is
|
|
used by the PROPFIND operation, which will likely require children
|
|
instantiation.
|
|
([SOGoGCSFolder -objectClassForComponentName:componentName]): new
|
|
mandatory method for subclasses.
|
|
([SOGoGCSFolder -objectClassForContent:content]): new mandator
|
|
method for subclasses.
|
|
([SOGoGCSFolder
|
|
-lookupName:keyinContext:localContextacquire:acquire]): fetch and
|
|
cache the requested child object record.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-ownerInContext:localContext]): set a new ivar: activeUserIsOwner
|
|
to reduce method calls.
|
|
|
|
* Main/SOGo.m ([SOGo -dispatchRequest:_request]): we now report
|
|
the time taken by the request, if the "SOGoDebugRequests" user
|
|
default is set.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
+objectWithRecord:objectRecordinContainer:newContainer]): new
|
|
constructor that instantiate an object based on the data found in
|
|
the corresponding database record.
|
|
([SOGoContentObject -setOCSPath:newOCSPath]): removed this method and
|
|
other OCS related ones, since we no longer fetch the record data
|
|
from here. Indeed, the object is now built from within its
|
|
container, so that caches can be created and queries avoided.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m ([NSArray
|
|
-asPointersOfObjects]): new method that transforms an NSArray into
|
|
an array of ptr**;
|
|
|
|
2008-06-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([UIxMailPartICalViewer -canOriginalEventBeUpdated]): new template
|
|
accessor that return whether the use status has changed in the
|
|
original reply and if its sequence number concurs.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m
|
|
([UIxMailPartICalActions -updateUserStatusAction]): we accept the
|
|
modification if the sequence number from the reply is equal or
|
|
SUPERIOR (for Lightning bugs), rather than inferior, where the
|
|
reply is obsolete anyway.
|
|
|
|
2008-05-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
|
|
+initialize]): new method where we read the three new defaults
|
|
variables "SOGoIMAPAclStyle", "SOGoIMAPAclUsernamesAreQuoted",
|
|
"SOGoIMAPAclConformsToIMAPExt".
|
|
([SOGoMailFolder +imapAclStyle]): new method that returns the rfc
|
|
number to which the imap server conforms to regarding the acl.
|
|
([SOGoMailFolder -aclsForUser:uid]): added right 'c' and 'd' from
|
|
rfc2086.
|
|
([SOGoMailFolder -setRoles:rolesforUser:uid]): convert SOGo
|
|
permissions to the acl rights conforming to the RFC configured
|
|
with SOGoIMAPAclStyle.
|
|
([SOGoMailFolder -aclUsers]): unquote usernames if
|
|
"SOGoIMAPAclUsernamesAreQuoted" is set. Remove usernames listed as
|
|
special usernames in
|
|
http://www.tools.ietf.org/wg/imapext/draft-ietf-imapext-acl/ if
|
|
"SOGoIMAPAclConformsToIMAPExt" is set.
|
|
|
|
* UI/MailerUI/UIxMailUserRightsEditor.m ([UIxMailUserRightsEditor conformsToRFC4314]): new template getter.
|
|
|
|
2008-05-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-davCollectionQuery:queryContext]): fixed the owner url returned
|
|
in the list so that it matches what the regular davOwner method
|
|
returns.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
|
|
-renameFolderAction]): select the INBOX folder before renaming the
|
|
target folder.
|
|
|
|
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage -loginSuffix]): new
|
|
method that returns the login suffix configured in the user
|
|
defaults.
|
|
([SOGoRootPage -hasLoginSuffix]): returns whether a login suffix
|
|
has been configured in the user defaults.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -mailAccounts]): request
|
|
the user login to the imap server from the LDAP user manager.
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager
|
|
-getImapLoginForUID:uid]): new method that returns the user
|
|
identifier to use when login to the imap server, in case it's not
|
|
the ldap uid. This is configurable through the boolean user
|
|
default "SOGoForceIMAPLoginWithEmail".
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject
|
|
-sendMail]): the email passed as parameter to sendmail is now the
|
|
bare user email.
|
|
|
|
2008-05-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
|
|
-deleteFolderAction]): select the INBOX folder before removing the
|
|
target folder, so that Courier does not complain about the current
|
|
mailbox being in use.
|
|
|
|
2008-05-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-subscribe:reallyDoinTheNameOf:delegatedUserfromMailInvitation:isMailInvitationinContext:localContext]):
|
|
published method.
|
|
([-folderReference]): no longer distingish between the user owned
|
|
and the subscribed folders.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -compare:otherFolder]):
|
|
no longer use the "_" in the folder's nameInContainer.
|
|
|
|
* UI/Common/UIxFolderActions.m ([UIxFolderActions -subscribeAction])
|
|
([UIxFolderActions -unsubscribeAction]): use the client object's
|
|
method for un-/subscribing.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-pathArrayToSOGoObject]): removed useless method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -davCalendarQuery:queryContext]): added
|
|
partial support for the "text-match" caldav directive.
|
|
|
|
2008-05-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([-newAction]): removed
|
|
useless method.
|
|
|
|
2008-05-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-davAclQuery:queryContext]): parse the names only of element nodes.
|
|
|
|
* UI/Common/UIxFolderActions.m ([UIxFolderActions -activateFolderAction])
|
|
([UIxFolderActions -deactivateFolderAction]): reversed the logic
|
|
and remove or add the folder name from/into the 'InactiveFolders'
|
|
settings key.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -create]): no longer write the folder name
|
|
in the 'ActiveFolders' settings key.
|
|
([-isActive]): returns whether the folder is NOT listed in the
|
|
'InactiveFolders' settings key.
|
|
|
|
2008-05-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Main/SOGo.m ([SOGo -davURL], [SOGo -soURL]): copied methods from
|
|
SOGoObject.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-davDisplayName]): new overriden method to provide a display name
|
|
to the users principal.
|
|
|
|
* SoObjects/SOGo/SOGoPermissions.[hm]: removed the "Save Acls"
|
|
permission since its purposes matches SOPE's "Change Permissions".
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
+webdavAclManager]): new overriden method.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
+webdavAclManager]): new overriden method.
|
|
|
|
* UI/MailPartViewers/UIxMailPartTextViewer.m (convertChars): do
|
|
not cast pointers to unsigned int to avoid problems with big
|
|
endian archs.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m ([-davNamespaces]):
|
|
removed method.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([-davNamespaces]):
|
|
removed method.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
+webdavAclManager]): new overriden method.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder +webdavAclManager]):
|
|
new overriden method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject +webdavAclManager]): new overriden method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder +webdavAclManager]): new overriden method.
|
|
([-davNamespaces]): removed method.
|
|
([-lookupGroupFolderForUIDs:_uidsinContext:])
|
|
([-lookupGroupCalendarFolderForUIDs:_uidsinContext:_ctx]):
|
|
disabled methods.
|
|
|
|
* SoObjects/SOGo/SOGoWebDAVAclManager.[hm]: new class module that
|
|
implements the rendering of DAV acl trees as well as their mapping
|
|
from SOGo permissions.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject +initialize]): libSOGo
|
|
is now a framework, so we can simplify the loading of the DAVReportMap.
|
|
([-lookupGroupsFolder]): disabled method.
|
|
([SOGoObject -davOwner], [SOGoObject -davAclRestrictions])
|
|
([SOGoObject -davPrincipalCollectionSet])
|
|
([SOGoObject -davCurrentUserPrivilegeSet])
|
|
([SOGoObject -davSupportedPrivilegeSet], [SOGoObject -davAcl])
|
|
([SOGoObject -davPrincipalMatch:localContext])
|
|
([SOGoObject -davSupportedReportSet]): (re-)implemented dav
|
|
methods with our new dav rendering paradigm.
|
|
([-davNamespaces]): removed method.
|
|
([SOGoObject -domNode:nodegetChildNodesByType:type]): new helper
|
|
method to help subclass with parsing dav requests, especially wrt
|
|
REPORT ones.
|
|
([SOGoObject +webdavAclManager]): new overridable method that
|
|
returns a properly configured DAV acl manager (see above).
|
|
|
|
* SoObjects/Appointments/SOGoUserFolder+Appointments.[hm]: new
|
|
category module that implements DAV methods required by CalDAV.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -applicationPath]):
|
|
disabled all mentions of "SOGoGroupFolder*".
|
|
|
|
* SoObjects/SOGo/SOGoDAVRendererTypes.[hm]: removed subclass
|
|
module, superseded by the new method mentionned below.
|
|
|
|
* SoObjects/SOGo/SOGoWebDAVValue.m ([SOGoWebDAVValue
|
|
-stringForTag:_keyrawName:setTaginContext:contextprefixes:prefixes]):
|
|
a simple wrapper that returns an uninterpreted NSString to SOPE.
|
|
|
|
* SoObjects/SOGo/NSArray+DAV.[hm],
|
|
* SoObjects/SOGo/NSDictionary+DAV.[hm],
|
|
* SoObjects/SOGo/NSObject+DAV.[hm],
|
|
* SoObjects/SOGo/NSString+DAV.[hm],
|
|
* SoObjects/SOGo/NSURL+DAV.[hm]: new class category modules that
|
|
handle the correct generation of DAV entries, with namespace
|
|
accounting. Those were implemented to enable the use of a simple
|
|
SoWebDAVValue as the root of the resulting string, thereby
|
|
avoiding the xml escaping done by SOPE when returning a real NSString.
|
|
|
|
2008-04-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m ([LDAPSource -fetchContactsMatching:match])
|
|
([LDAPSource -lookupContactEntryWithUIDorEmail:uid]): take all the
|
|
mail fields into account when doing a search.
|
|
|
|
2008-04-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject +initialize]): the
|
|
module is now a framework and we now load the new DAVReportMap
|
|
description file.
|
|
([-davOwner]): the principal URL is now based on the DAV
|
|
application URL.
|
|
([SOGoObject
|
|
-lookupName:lookupNameinContext:localContextacquire:acquire]): we
|
|
now lookup report methods from here (code from SOGoFolder). The
|
|
method has changed to refer to the new DAVReportMAP description
|
|
file in order to resolve the lookups on self.
|
|
([SOGoObject -davSupportedReportSet]): implemented the new
|
|
"supported-report-set" dav method, based on the new mechanism
|
|
described above.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m: REPORT lookups are now done
|
|
directly from SOGoObject.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
-initWithLogin:newLoginroles:newRoles]): we make sure realUID is
|
|
not an empty string.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-davResourceType]): we declare self as a "principal".
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-davContentLength]): the content length should is now based on the
|
|
UTF-8 encoding.
|
|
|
|
2008-04-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalendarSelector.m ([UIxCalendarSelector
|
|
-contrastingTextColor]): new method (code taken from Lightning)
|
|
that returns a foreground color easily readible based on the
|
|
brightness of the background color.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-setDavDisplayName:newName]): deny the renaming of the folder if
|
|
not owner.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-davSetProperties:setPropsremovePropertiesNamed:removedPropsinContext:localContext]):
|
|
certain properties should be authorized when not owner.
|
|
|
|
2008-04-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxColorPicker.[hm]: new class module that
|
|
implements a javascript-based color picker.
|
|
|
|
* UI/Scheduler/UIxCalendarProperties.[hm]: new class module that
|
|
implements the interface for renaming and recoloring the
|
|
calendars.
|
|
|
|
2008-04-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
([_UIxHTMLMailContentHandler -characters:_charslength:_len])
|
|
([_UIxHTMLMailContentHandler -comment:_charslength:_len]): don't
|
|
cast the unichar data to char, to avoid issues with endianness
|
|
which prevents the CSS from being parsed properly.
|
|
|
|
* UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -isMailReply]): new
|
|
method that returns the JS values "true" or "false" as strings is
|
|
the mail has a non-null count of recipients.
|
|
|
|
2008-04-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m ([SOGoAppointmentFolder -davCalendarQuery:queryContext])
|
|
([SOGoAppointmentFolder -davCalendarMultiget:queryContext]):
|
|
deduce the cname of objects even if we are using hostless urls.
|
|
|
|
2008-03-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/SOGoUI/SOGoACLAdvisory.m ([SOGoACLAdvisory -resourceName]):
|
|
use the resource display name instead of its "nameInContainer".
|
|
|
|
2008-03-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactLDIFEntry.m ([SOGoContactLDIFEntry
|
|
-isFolderish]): new overriden method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-appendObject:objectproperties:propertieswithBaseURL:baseURLtoComplexResponse:r]):
|
|
check whether the current user has access to the objects returned
|
|
before including their properties.
|
|
|
|
2008-03-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
|
|
-primaryFetchProfile]): we unescape the fetched value before
|
|
constructing the NSDictionary.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-setComponent:newComponent]): the weeks start on sunday in
|
|
OpenStep and are indexed from 0.
|
|
|
|
2008-03-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-takeValuesFromRequest:_rqinContext:_ctx]): treat the regular
|
|
monthly recurrences as all others.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-davSetProperties:setPropsremovePropertiesNamed:removedPropsinContext:localContext]):
|
|
returns an exception if the property to modify is not
|
|
"davDisplayName" and if the current user has not the owner role
|
|
over the current collection.
|
|
|
|
2008-03-25 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMainView.m ([UIxCalMainView
|
|
-verticalDragHandleStyle]): CSS style wrt to position of drag
|
|
handle saved by current user.
|
|
([UIxCalMainView -horizontalDragHandleStyle]): idem.
|
|
([UIxCalMainView -eventsListViewStyle]): idem.
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.m
|
|
([UIxContactsListViewContainer -verticalDragHandleStyle]): CSS
|
|
style wrt to position of drag handle saved by current user.
|
|
([UIxContactsListViewContainer -horizontalDragHandleStyle]): idem.
|
|
([UIxContactsListViewContainer -contactsListContentStyle]): idem.
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame
|
|
-verticalDragHandleStyle]): CSS style wrt to position of drag
|
|
handle saved by current user.
|
|
([UIxMailMainFrame -horizontalDragHandleStyle]): idem.
|
|
([UIxMailMainFrame -mailboxContentStyle]): idem.
|
|
|
|
2008-03-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -davCalendarMultiget:queryContext]):
|
|
implemented new CalDAV method.
|
|
([SOGoAppointmentFolder -davCalendarQuery:queryContext]):
|
|
refactored method to return exactly the properties requested in
|
|
the query and to share code with the new method above.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -davCalendarData]): added method for
|
|
better CalDAV compliance.
|
|
|
|
2008-03-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-davAclQuery:queryContext]): declare the "text/xml" mime type only
|
|
when the content is not empty. Otherwise, returns no mime type at
|
|
all and set the status code to 204.
|
|
|
|
2008-03-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMonthViewOld.m ([UIxCalMonthViewOld
|
|
-endDate]): removed useless method.
|
|
|
|
* SoObjects/SOGo/NSCalendarDate+SOGo.m
|
|
([-dayOfWeeK:_dayoffsetFromSunday:_offset]): removed useless
|
|
method.
|
|
([-sundayOfWeek]): removed useless method.
|
|
|
|
2008-03-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OGoContentStore/OCSContactFieldExtractor.m
|
|
([OCSContactFieldExtractor -extractQuickFieldsFromVList:vList]):
|
|
new method to handle extraction of quick information from the
|
|
VLIST components. I.e.: the display name of the card.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
|
|
-isValidContentName:name]): moved method from
|
|
SOGoAppointmentFolder's isValidAppointmentName.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder -objectClassForContent:content])
|
|
([SOGoContactGCSFolder -deduceObjectForName:inContext:])
|
|
([SOGoContactGCSFolder -requestNamedIsHandledLater:name])
|
|
([SOGoContactGCSFolder -lookupName:inContext:acquire:]): those
|
|
methods were modified to match the ones in SOGoAppointmentFolder,
|
|
in order to manage both vcard and vlist components.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSList.[hm]: new class module
|
|
that implements the list counterpart to VCARD: VLIST.
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor -saveURL]):
|
|
new accessor that returns the url + "saveAsContact".
|
|
([UIxContactEditor
|
|
-shouldTakeValuesFromRequest:requestinContext:context]): changed
|
|
method to match the one from the event and todo editor module.
|
|
([UIxContactEditor -editActionName]): changed to "editAsContact".
|
|
([UIxContactEditor -newAction]): changed method to match the one
|
|
from the event and todo editor module.
|
|
|
|
* UI/Contacts/UIxListView.m: new view module for the VLIST format
|
|
components.
|
|
|
|
* UI/Contacts/UIxListEditor.m: new edition module for the VLIST
|
|
format components.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSList.m: new controller module
|
|
for the VLIST format.
|
|
|
|
2008-03-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -isFolderish]): new
|
|
parent method, meant to be overriden.
|
|
([SOGoObject -davIsCollection]): moved method from SOGoFolder up
|
|
to this parent class.
|
|
|
|
2008-02-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-davSubscribe:queryContext]): implemented subscribing users other
|
|
that the current one, if the user doing the operation is a superuser.
|
|
([SOGoGCSFolder -davUnsubscribe:queryContext]): same as above for
|
|
unsubscription.
|
|
|
|
2008-02-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-davUserQuery:queryContext]): new method for the "user-query"
|
|
inverse DAV method.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-aclUsersForObjectAtPath:objectPathArray]): return unique uids.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([-davNamespaces]): removed method.
|
|
|
|
* SoObjects/SOGo/SOGoDAVRendererTypes.h (SoWebDAVValue): added
|
|
SOGoDAVDictionary webdav value class.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m ([NSArray -uniqueObjects]):
|
|
new method that returns unique occurences of the objects.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-davNamespaces]): same as below.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -davNamespaces]): take the parents
|
|
namespaces into account.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -addUserInAcls:uid]):
|
|
new method.
|
|
([SOGoObject -removeUserFromAcls:uid]): new methods (see below).
|
|
([SOGoObject -davNamespaces]): declare the
|
|
"urn:inverse:params:xml:ns:inverse-dav" namespace.
|
|
([SOGoObject -davRecordForUser:user])
|
|
([SOGoObject -davAclQuery:queryContext]): new methods to answer to
|
|
the "user-list", "roles", "set-roles", "add-user", "remove-user"
|
|
inverse DAV methods.
|
|
|
|
* UI/Common/UIxObjectActions.m ([UIxObjectActions -addUserInAclsAction])
|
|
([UIxObjectActions -removeUserFromAclsAction]): moved the core of
|
|
those methods into SOGoObject and translate its result into an
|
|
appropriate HTTP status.
|
|
|
|
2008-02-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder -davInverseACL]):
|
|
first implementation of a DAV interface to SOGo roles. Returns the
|
|
result in JSON.
|
|
|
|
2008-02-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* GNUmakefile: migrated to GNUstep Make 2.
|
|
|
|
2008-02-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
|
|
-iCalStringForFreeBusyInfos:_infosfrom:_startDateto:_endDate]): we
|
|
no longer invoke [container login], since this method has been
|
|
removed. Instead we invoke ownerInContext:.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
|
|
-fetchContentObjectNames]): new model method for all subclasses.
|
|
This will be removed in the future since toOneRelationshipKeys
|
|
must be sufficient.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-defaultFilenameExtension]): removed useless method.
|
|
([-toOneRelationshipKeys]): moved method into SOGoFolder.m.
|
|
|
|
2008-02-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([UIxMailPartICalViewer -currentUserAttendee]): new method that
|
|
returns the current user as an attendee representation in the
|
|
displayed event, if found.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-_urlHostString]): replace "@" with %40 AFTER invoking
|
|
stringByEscapingURL.
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject
|
|
-isBodyPartKey:key]): hacked a little bit to test for the length
|
|
of the key trimmed from its bordering digits. So if the key
|
|
contains only digits, we consider it to be a body part key. There
|
|
is room for improvement but we can consider this will be accurate
|
|
in 99.99% of the cases. Also, removed the context parameter which
|
|
was useless.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-davComplianceClassesInContext:localContext]): new method,
|
|
declaring "access-control" in the compliance classes.
|
|
|
|
2008-02-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-imap4URLString]): compose the mail hostname part of the url by
|
|
escaping the username. This is part of the fix below.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -mailAccounts]): if the
|
|
loginname for the default mail account contains an "@", it should
|
|
be url-escaped to avoid confusing NSURL.
|
|
([SOGoUser -accountWithName:accountName]): new method that wanders
|
|
the accounts list and returns the one that matches the name passed
|
|
as parameter, if found.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([-login]): removed useless
|
|
method.
|
|
([SOGoUserFolder -ownerInContext:_ctx]): compute the owner name
|
|
from a SOGoUser instance initialized with the nameInContainer as
|
|
initial login name. This way, all the objects belonging to the
|
|
corresponding user will be accessible with all the fields
|
|
mentionned in the "bindFields" LDAP settings value.
|
|
([SOGoUserFolder -privateCalendars:keyinContext:localContext])
|
|
([SOGoUserFolder -privateContacts:_keyinContext:_ctx]): use -[self
|
|
ownerInContext:] to determine the OCS path.
|
|
|
|
* SoObjects/Mailer/SOGoSharedMailAccount.[hm]: removed useless
|
|
module.
|
|
|
|
* SoObjects/Mailer/SOGoSharedInboxFolder.[hm]: removed useless
|
|
module.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m ([UIxPreferences
|
|
-setSignature:newSignature]): invoke -[SOGoUser saveMailAccounts]
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -defaultIdentity]): method
|
|
moved from UIxPreferences.m.
|
|
([SOGoUser -saveMailAccounts]): new methods that save the
|
|
"MailAccounts" preference in the user settings.
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager
|
|
+initialize]): issue a warning whenever "SOGoDefaultMailDomain"
|
|
is not configured in the user defaults, setting it to "localhost"
|
|
by default.
|
|
([LDAPUserManager +defaultMailDomainIsConfigured]): new method
|
|
that returns whether "SOGoDefaultMailDomain" is configured.
|
|
|
|
2008-02-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder -ocsFolder]):
|
|
send an email only when not in a dav request.
|
|
([SOGoGCSFolder -delete]): same as above.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-supportsQuotas]): test quota support by querying the server
|
|
capability.
|
|
|
|
2008-02-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m
|
|
([UIxMailPartICalActions -acceptAction])
|
|
([UIxMailPartICalActions -declineAction]): define the organizer of
|
|
the event as one of the reply-to or from addresses whenever the
|
|
organizer is not specified in those Outlook invitations.
|
|
|
|
2008-02-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame
|
|
-quotaSupport]): new json string that lists the quota support
|
|
among the user's mail accounts.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-supportsQuotas]): new method that returns whether the current
|
|
account server has support for quotas.
|
|
|
|
2008-01-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-davSetProperties:setPropsremovePropertiesNamed:removedPropsinContext:localContext]):
|
|
new method that takes the displayname into account.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
-davCreateCollection:pathInfoinContext:localContext]): new method
|
|
that acts as a proxy to newFolderWithName:andNameInContainer:.
|
|
|
|
2008-01-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-takeValuesFromRequest:_rqinContext:_ctx]): make use of the <<
|
|
operator to handle the day masks in custom rules.
|
|
|
|
2008-01-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
+userWithLogin:newLoginroles:newRoles]): test if the user is well
|
|
initialized before registering it with the SOGo cache.
|
|
([SOGoUser -initWithLogin:newLoginroles:newRoles]): returns a user
|
|
only if the realUID has been found, otherwise we dealloc self and
|
|
return nil.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m: if c_cycleinfo
|
|
is an NSNull instance, we consider it to be empty and return
|
|
automatically with an error message in the log.
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
|
|
-extractQuickFieldsFromTodo:_task]): handle recurrence info in
|
|
tasks.
|
|
|
|
* UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer
|
|
-pathToAttachment]): in the case where the client object is not a
|
|
mail body part (when the message IS the attachment), we append 0
|
|
to generate the url, instead of the filename.
|
|
|
|
2008-01-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatetitle:titlecomponent:_component]):
|
|
change the algorithm a little bit to compare the roles of the
|
|
current users to see if he is an "owner" instead of solely
|
|
checking its login name. This enables the users listed as
|
|
"SuperUsers" to be considered as owners and see everything as
|
|
expected.
|
|
|
|
2008-01-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoFolder+CardDAV.m ([SOGoFolder
|
|
-davAddressbookQuery:queryContext]): when empty values are fed to
|
|
SOGo, their dictionary should be explicitly set to nil.
|
|
|
|
2008-01-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoCache.m ([SOGoCache
|
|
-registerObject:objectwithName:nameinContainer:container]):
|
|
register the object and its parents too.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
+userWithLogin:newLoginroles:newRoles]): try to retrieve the
|
|
specified user from the SOGoCache.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-lookupName:lookupNameinContext:localContextacquire:acquire]): try
|
|
to retrieve the object specified from the cache and returns it if
|
|
it exists.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -lookupName:inContext:acquire:]): cache
|
|
the result in the SOGoCache.
|
|
|
|
* Main/SOGo.m ([SOGo -dispatchRequest:_request]): initialize and
|
|
kill the shared cache before and after the connection processing.
|
|
|
|
* SoObjects/SOGo/SOGoCache.[hm]: new cache module implementing a
|
|
per-connection cache mechanism.
|
|
|
|
2008-01-16 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* Minor adjustments / bug fixes to previous commit.
|
|
|
|
2008-01-14 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* Added files related to the custom recurrence
|
|
editor of the SOGo Web interface. The CSS
|
|
needs to be done correctly.
|
|
|
|
* Fixed a bug in the daily recurrence generator.
|
|
We now consider the byDayMask, if any.
|
|
|
|
* Moved the repeat/reminder code to the
|
|
UIxComponentEditor class / template.
|
|
|
|
* Added a few JavaScript methods to HTMLElement.js
|
|
|
|
2008-01-08 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions
|
|
-composeAction]): the mailto form parameter can now be a
|
|
comma-separated list of email addresses.
|
|
|
|
2007-12-21 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactView.m
|
|
Modified -secondaryEmail so that we always get
|
|
the "last" email address in case no preferred
|
|
one was specified in the vCard. Also fixed
|
|
a memory leak in this method.
|
|
|
|
2007-12-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-aclsForUser:uid]): removed useless ACL checks on the current
|
|
object to reduce DB usage.
|
|
|
|
2007-12-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -attachmentNames]):
|
|
initialize "attachmentNames" if it was NOT initialized... I think
|
|
this was a typo.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject
|
|
-fetchMailForForwarding:sourceMail]): append the signature to
|
|
mails forwarded as attachment.
|
|
|
|
* UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer
|
|
-clientPart]): new method that returns the corresponding
|
|
SOGoMailPart instance.
|
|
([UIxMailPartViewer -pathToAttachment]): simplified method, ensure
|
|
the filename is present. If the part has none, create one with the
|
|
"Untitled-" prefix. Add an extension if none is found.
|
|
|
|
* UI/MailPartViewers/UIxMailPartImageViewer.m
|
|
([UIxMailPartImageViewer -pathToImage]): removed method since it
|
|
implementents exactly the same functionality as
|
|
[UIxMailPartViewer -pathToAttachment].
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
|
|
-filename]): new method that returns the filename to the current
|
|
part by taking the different mime implementations into account.
|
|
[SOGoMailBodyPart -isBodyPartKey:inContext:]: commented out method
|
|
because we need to handle the part recognition in a different way,
|
|
by using the prefix "part" for example. One day we will do that.
|
|
|
|
* UI/Scheduler/NSArray+Scheduler.m ([NSMutableArray
|
|
-reverseArray]): new category method.
|
|
|
|
2007-12-17 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame
|
|
-composeAction]): fixed URL when no recipient is specified.
|
|
|
|
2007-12-14 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
We set headers in lowercase so that they get properly
|
|
encoded by SOPE.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m
|
|
Minor cleanups.
|
|
|
|
2007-12-13 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame -saveFoldersStateAction])
|
|
([UIxMailMainFrame -getFoldersStateAction]): new methods to get
|
|
and set the folders state of the user's web view.
|
|
|
|
2007-12-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage -crashAction]): new
|
|
action methods that generates a segmentation faults.
|
|
([SOGoRootPage -exceptionAction]): new method that returns an
|
|
exception object.
|
|
([SOGoRootPage -raisedExceptionAction]): new method that raises an
|
|
exception without returning it.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -responseWithStatus:status])
|
|
([UIxComponent -responseWithStatus:statusandString:contentString])
|
|
([UIxComponent -responseWithStatus:statusandJSONRepresentation:contentObject])
|
|
([UIxComponent -responseWith204]): new utility methods.
|
|
|
|
* UI/Common/WODirectAction+SOGo.m ([WODirectAction
|
|
-responseWithStatus:statusandString:contentString])
|
|
([WODirectAction
|
|
-responseWithStatus:statusandJSONRepresentation:contentObject]):
|
|
new utility methods.
|
|
|
|
* SoObjects/SOGo/NSScanner+BSJSONAdditions.m ([NSScanner
|
|
-scanJSONStringDelimiterString]): new category module taken from
|
|
BSJSONAdditions 1.3.
|
|
|
|
* SoObjects/SOGo/NSDictionary+BSJSONAdditions.[hm]: new category
|
|
module taken from BSJSONAdditions 1.3.
|
|
http://blakeseely.com/downloads.html
|
|
|
|
2007-12-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m ([NSString
|
|
-stringByDetectingURLs]): we now go back until the real start of
|
|
the found url.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-fetchAttachmentIds]): new method that wanders through the mail
|
|
structure to collect the attachment content ids and to associate
|
|
them with their url.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
([_UIxHTMLMailContentHandler
|
|
-startElement:_localNamenamespace:_nsrawName:_rawNameattributes:_attributes]):
|
|
the content-ids are now enclosed between "<>" before retrieval
|
|
from the attachment dictionary.
|
|
([UIxMailPartHTMLViewer -cssContent])
|
|
([UIxMailPartHTMLViewer -flatContentAsString]): the content-ids
|
|
are now fetch from the clientobject (an instance of
|
|
SOGoMailObject) with the new "fetchAttachmentIds" method.
|
|
|
|
2007-12-12 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-eventsListAction]): added the state of the calendar's owner with
|
|
respect to the current event.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-_loadAttendees]): added the retrieval of attendees state on
|
|
current event.
|
|
|
|
2007-12-12 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailRenderingContext.{h,m}
|
|
Removed template caching which added very little
|
|
and created re-entrant issues.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
Added a hack (and stated so in the source file)
|
|
to avoid what seems to be a bug in libxml.
|
|
|
|
2007-12-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-davCreationDate])
|
|
([SOGoContentObject -davLastModified])
|
|
([SOGoContentObject -davContentLength]): implemented dav methods.
|
|
|
|
2007-12-10 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
|
|
-GETAction:]): when asAttachment is set to true, the header
|
|
"content-disposition" is set to "attachment" so browsers like IE
|
|
and Safari properly asks the user to save the file.
|
|
|
|
2007-12-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
([UIxMailPartHTMLViewer -flatContentAsString]): when in
|
|
UIxMailPartAlternative, scan the filenames of potential cid at the
|
|
same level as our parent.
|
|
|
|
2007-12-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Main/SOGo.m ([SOGo -run]): the table creation script now have a
|
|
@{tableName} substitution variable to be substitued with the real
|
|
table name obtained from the configuration variables.
|
|
|
|
2007-12-07 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailRenderingContext.m
|
|
We treat multipart/appledouble like multipart/mixed
|
|
for now. That allows the user to save both parts.
|
|
|
|
* Corrected typos in Localizable.string files.
|
|
|
|
2007-12-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Common/UIxAclEditor.m ([-currentUserIsOwner]): replaced
|
|
method with -canModifyAcls that invokes the security manager
|
|
instead for the permission "SaveAcls" on the client object.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -contentAsString]): securize the returned content.
|
|
([SOGoCalendarComponent -aclsForUser:uid]): check whether the user
|
|
is an organizer or a participant as well.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -changeParticipationStatus:_status]): the
|
|
user we should change the status of is not the active user but the
|
|
owner of the object. This is for delegation.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -fetchContentObjectNames]): fetch the
|
|
elements through the fetchFields:from:to:title:component: method
|
|
method, so that the result is already filtered depending on the
|
|
acl.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-toolbar]): if the current user is a delegate, take the permission
|
|
"ModifyComponent" into account. Also, do not let him/her modify an
|
|
event for which he/she is the organizer.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder -davResourceType]): declared as a carddav
|
|
addressbook collection.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-davResourceType]): declared as a carddav addressbook collection.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -davLastModified]):
|
|
override SoObject's implementation. Otherwise a localized date is returned.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -isCalendar])
|
|
([UIxPageFrame -isContacts], [UIxPageFrame -isMail]): getters to
|
|
determine which module is the current one.
|
|
|
|
2007-12-06 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/NSArray+Scheduler.m ([NSArray -compareEventsTitleAscending:otherEvent])
|
|
([NSArray -compareEventsLocationAscending:otherEvent])
|
|
([NSArray -compareEventsEndDateAscending:otherEvent])
|
|
([NSArray -reversedArray]): new methods that sort an array of
|
|
events depending of various parameters.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-eventsListAction]): added support for sorting events.
|
|
|
|
2007-12-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -saveAction])
|
|
([UIxMailEditor -sendAction]): make sure that the attachments
|
|
having the same filename are correctly sequenced (ex: base.ext,
|
|
base-1.ext, base-2.ext).
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
|
|
-fetchBLOB]): added support for quoted-printable decoding. Also,
|
|
we return nil if the type is not supported.
|
|
|
|
2007-12-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -newAction]):
|
|
create task obejcts with the .ics extension.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-newAction]): create appointment objects with the .ics extension.
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor -newAction]):
|
|
create objects with the .vcf extension.
|
|
|
|
* Main/NSException+Stacktrace.m: added missing symbols from
|
|
NSException.m and NSDebug.m (GNUstep).
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage
|
|
-foldersSearchAction]): make use of the new search methods in
|
|
SOGoUserFolder (see below).
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([-foldersSearchAction]):
|
|
moved method into ../MainUI/SOGoUserHomePage.m.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-foldersOfType:folderTypeforUID:uid]): only return folders owned
|
|
by the specified user.
|
|
|
|
2007-12-05 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m: the condition for replyToAll
|
|
has to be done later to avoid duplicated to and cc addresses.
|
|
|
|
2007-12-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -davCalendarQuery:queryContext]): fixed a leak.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder -davSubscribe:localContext])
|
|
([SOGoGCSFolder -davUnsubscribe:localContext]): subscribe an
|
|
unsubscribe from DAV-based accesses. We could be compatible with
|
|
Microsoft's extensions but we have no need for a "subcription id",
|
|
so we implement our own.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-POSTAction:localContext]): new method to intercept DAV POSTs,
|
|
which we now use to implement certain custom commands such as
|
|
"subscribe" and "unsubscribe".
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-davNamespaces]): declare the
|
|
"urn:inverse:params:xml:ns:inverse-dav" xml ns.
|
|
([SOGoUserFolder -foldersOfType:folderTypeforUID:uid]): new method
|
|
designed to replace the UIxContactFoldersView.m mechanism for
|
|
displaying folders to subcribe to, as a common code base for both
|
|
Web and DAV-based subscriptions.
|
|
([SOGoUserFolder -foldersOfType:typematchingUID:uid]): same as
|
|
above.
|
|
([SOGoUserFolder -davCollectionQuery:queryContext]): new method
|
|
that implement a custom DAV-based protocol query for querying
|
|
folder based on specified attributes.
|
|
|
|
2007-12-03 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* Main/NSException+Stacktrace.{h,m} - new files
|
|
to handle automatic stack trace generation
|
|
upon an uncaught exception.
|
|
|
|
* Updated the templates and Localizable.string files
|
|
to fix typos and add new strings.
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m
|
|
Fixed attachment retreival when the first character
|
|
is a digit.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
|
Fixed the sending of emails when folders are created/removed.
|
|
Notifications are sent if the defaults SOGoFoldersSendEMailNotifications
|
|
is set to YES.
|
|
|
|
* UI/Common/UIxUserRightsEditor.m
|
|
* UI/Templates/SOGoACLEnglishModificationAdvisory.wox
|
|
* UI/Templates/SOGoACLFrenchModificationAdvisory.wox
|
|
* UI/Templates/SOGoACLGermanModificationAdvisory.wox
|
|
Added the capabilities to email notifications when ACLs have
|
|
changed on a DAV collection or an IMAP mailbox. Also added
|
|
new templates (3 .wox) to deal with this.
|
|
|
|
* UI/WebServerResources/ContactsUI.js
|
|
UI/WebServerResources/SchedulerUI.js
|
|
Added warnings on operations w/o selection.
|
|
|
|
2007-11-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
-appendSubscribedSources]): don't include sources for which we
|
|
don't have the SOGoPerm_AccessObject permission.
|
|
|
|
* SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate
|
|
-rfc822DateString]): we want positive timezones to be specified
|
|
with a leading "+" too.
|
|
|
|
2007-11-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
+folderWithSubscriptionReference:referenceinContainer:aContainer]):
|
|
return nil if the subscribed folder has no display name (meaning
|
|
it no longer exists).
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
-appendPersonalSources]): don't include sources which are no
|
|
longer existing.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-ocsPathOfContainer]): return the intended value, not that of
|
|
ocsPath...
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -sendResponseToOrganizer]): send the
|
|
message only of sendEMailNotifications is set.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -subscriptionRoles]):
|
|
new method that returns the roles that qualifies for adding the
|
|
special "authorized subscribed" sogo role.
|
|
|
|
2007-11-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-aclsForUser:uid]): copy all the roles from the container. If the
|
|
object is new, make sure the roles contain "ObjectEditor" if and
|
|
only if "ObjectCreator" is present.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-aclsForUser:uid]): no longer take the "ObjectReader" role into
|
|
account.
|
|
|
|
* UI/Common/UIxFolderActions.m ([UIxFolderActions
|
|
-canAccessContentAction]): always return HTTP status 204. We want
|
|
this because we are relying on the SOPE access control manager to
|
|
grant access to this method. This requires a fine-tuned access
|
|
control in SOGo itself...
|
|
|
|
* UI/Contacts/UIxContactsUserRightsEditor.m ([-userCanReadObjects])
|
|
([-setUserCanReadObjects:userCanReadObjects]): removed methods.
|
|
|
|
* UI/MailerUI/UIxMailUserRightsEditor.m ([UIxMailUserRightsEditor
|
|
-updateRights]): no longer take the "ObjectReader" role into account.
|
|
([-userCanReadMails], [-setUserCanReadMails:userCanReadMails]):
|
|
removed methods.
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
|
|
-fetchFreeBusyInfosFrom:_startDateto:_endDate]): specify context
|
|
when looking up the Calendar folder.
|
|
|
|
2007-11-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -todo]): same as below.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-event]): create the event if it doesn't exist.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -userHasCalendarAccess])
|
|
([UIxPreferences -userHasMailAccess]): same as below, for
|
|
displaying preference tabs.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame
|
|
-userHasCalendarAccess]): new accessor for the link banner.
|
|
([UIxPageFrame -userHasMailAccess]): same as above.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-toManyRelationshipKeys]): do not report the path to modules to
|
|
which the user has no access. No longer cache this information
|
|
statically, the array will be generated at each call.
|
|
([SOGoUserFolder -lookupName:_keyinContext:_ctxacquire:_flag]):
|
|
ignore the path to modules to which the user has no access.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -canAccessModule:module]):
|
|
new method that returns whether the user has access to the
|
|
specified module.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m ([LDAPSource
|
|
-initFromUDSource:udSource]): take a new parameter named
|
|
'ModulesContraints' that defines a set of constraints for
|
|
accessing specified named modules. This is an optout, meaning the
|
|
modules will be present unless a constraint is specified.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-roleForComponentsWithAccessClass:accessClassforUser:uid]): cache
|
|
acl to reduce method calls.
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatetitle:titlecomponent:_component]):
|
|
if the user is not the current user, we strip the useless info
|
|
from the meta data.
|
|
|
|
* UI/Common/WODirectAction+SOGo.m ([WODirectAction
|
|
-labelForKey:key]): new category method.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-event]): same as below.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -todo]): request a
|
|
secured version of the component.
|
|
|
|
* UI/MailPartViewers/UIxMailPartViewer.m
|
|
([-fallbackStringEncoding]): removed method.
|
|
([UIxMailPartViewer -flatContentAsString]): we no longer use [self
|
|
fallbackStringEncoding]. Instead we directly specify
|
|
NSISOLatin1StringEncoding if UTF-8 has failed.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([-fallbackStringEncoding]): removed method.
|
|
|
|
2007-11-25 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailForward.m
|
|
Use [sourceMail decodedSubject] instead of [sourceMail subject]
|
|
Signature fix in -signature - see the comment
|
|
for SOGoMailReply.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m
|
|
Improved -stringFromData: to try UTF-8 then fallback to Latin1
|
|
|
|
* SoObjects/Mailer/SOGoMailReply.m
|
|
Modified -messageBody to strip the signature from the reply.
|
|
Also modified -signature to add "-- \n%@" instead of the
|
|
broken ""--\r\n%@" pattern.
|
|
|
|
* UI/MailPartViewers/UIxMailPartAlternativeViewer.m
|
|
We now favor text/calendar parts over text/html and
|
|
text/plain parts when viewing a multipart/alternative mail.
|
|
This allows us to show the email invitations coming from
|
|
Microsoft Outlook.
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m
|
|
Signature fix in -composeAction - see the comment
|
|
for SOGoMailReply.
|
|
|
|
* UI/MailPartViewers/UIxMailPartViewer.m
|
|
Modified -flatContentAsString to use UTF-8 as the
|
|
default fallback encoding for 8-bit content.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m
|
|
Modified _fillInReplyAddresses:replyToAll:envelope:
|
|
so that if there's no recipient, we add at least
|
|
ourself to the list.
|
|
Fixed a mem leak in the same method.
|
|
|
|
2007-11-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailRenderingContext.m
|
|
([UIxMailRenderingContext -viewerForBodyInfo:_info]): same as below.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-plainTextContentFetchKeys]): same as below.
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
|
|
+bodyPartClassForMimeType:mimeTypeinContext:_ctx]): accept the
|
|
application/ics type from Google Calendar.
|
|
|
|
* SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate
|
|
+distantFuture]): rewrote method to return an object that is
|
|
compatible with NSCalendarDate, unlike the implementation in
|
|
GNUstep.
|
|
([NSCalendarDate +distantPast]): same as above.
|
|
|
|
2007-11-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m: fixed infinite loop
|
|
when charset is us-ascii, match it to ascii rather than none.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatetitle:titlecomponent:_component]):
|
|
added search on the c_title column too.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-eventsListAction]): take the "search" url parameter into account.
|
|
([UIxCalListingActions -eventsListAction]): fetch events matching
|
|
the title filter too.
|
|
|
|
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage -connectAction]): the
|
|
user infos are now posted as "application/x-www-form-urlencoded".
|
|
So we have to have like a form has been posted.
|
|
|
|
2007-11-21 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-calendarList]): also returns the calendar of the current
|
|
event. This is required so the proper calender is selected when
|
|
you view an event to which you don't have write access.
|
|
|
|
* UI/Common/UIxAclEditor.m ([UIxAclEditor -currentUserIsOwner]):
|
|
also returns true for super users.
|
|
|
|
2007-11-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-lookupImap4BodyPartKey:inContext:]): return a correct body part
|
|
when "0" is requested, taking its mime-type into account.
|
|
|
|
* UI/MailPartViewers/UIxMailRenderingContext.m
|
|
([UIxMailRenderingContext -flatContentForPartPath:_partPath]):
|
|
return content for part "0", which would be the message body.
|
|
|
|
2007-11-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
([_UIxHTMLMailContentHandler
|
|
-setContentEncoding:newContentEncoding]): new method that
|
|
specifies an xml charset to return to the parser.
|
|
([UIxMailPartHTMLViewer -flatContentAsString]): specifies the
|
|
charset to the content handler before parsing.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m: don't take an
|
|
empty c_name as a valid response when looking up an event. Create
|
|
one in that case instead.
|
|
|
|
2007-11-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -signature]):
|
|
returns the signature for the default identity of the default
|
|
accouunt...
|
|
([UIxPreferences -setSignature:newSignature]): accessor that sets
|
|
the default signature.
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions
|
|
-composeAction]): append the message signature to the new draft.
|
|
|
|
* SoObjects/Mailer/SOGoMailReply.m ([SOGoMailReply -signature]):
|
|
same as above.
|
|
|
|
* SoObjects/Mailer/SOGoMailForward.m ([SOGoMailForward
|
|
-signature]): new method that takes the user's signature and put
|
|
it at the end of the message, if exists.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -isSuperUser]): new
|
|
accessor that forwards the call to the active user.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -signature]): returns the
|
|
user default signature.
|
|
([SOGoUser -isSuperUser]): declares whether the user is listed
|
|
among the super users.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-setComponent:newComponent]): retain the component object.
|
|
([UIxComponentEditor -organizerIdentity]): new accessor method to
|
|
handle list of possible organizers.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-event]): retain the returned event object.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -saveComponent:newEvent]): reset the
|
|
organizer only if there are no attendees AND the owner of the
|
|
component is not the organizer him-/herself.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-toolbar]): rewrote in a way that ensures that each case is
|
|
handled properly.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -isEqual:otherUser]): new
|
|
override method.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([-acceptAction])
|
|
([-declineAction]): commented out unused methods.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m
|
|
([UIxMailPartICalActions -deleteFromCalendarAction]): actually
|
|
delete the found object.
|
|
|
|
2007-11-18 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m
|
|
SoObjects/Mailer/SOGoMailObject.m
|
|
UI/MailPartViewers/UIxMailPartViewer.m
|
|
Added support of messages containing non-textual
|
|
content and no parts.
|
|
|
|
* UI/MailerUI/UIxMailView.m
|
|
SoObjects/Mailer/SOGoMailObject.m
|
|
UI/Templates/MailerUI/UIxMailView.wox
|
|
Added support for the Reply-To header upon
|
|
message display.
|
|
|
|
2007-11-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -saveAction]):
|
|
invoke saveComponent:.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor -hasOrganizer])
|
|
([UIxComponentEditor -organizerName]): new template accessor
|
|
related to displaying the event's organizer.
|
|
([-containsConflict:_component]): removed method.
|
|
([UIxComponentEditor -takeValuesFromRequest:_rqinContext:_ctx]):
|
|
set RSVP to "TRUE" on each attendee.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-saveAction]): invoke saveComponent:.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([UIxMailPartICalViewer -isLoggedInUserTheOrganizer]): make use of
|
|
the -userIsOrganizer: category method.
|
|
([-isLoggedInUserAnAttendee]): make use of -userIsParticipant:.
|
|
([UIxMailPartICalViewer -hasSenderStatusChanged]): new template
|
|
accessor that determines whether the "Update" button should be
|
|
displayed.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m
|
|
([UIxMailPartICalActions -deleteFromCalendarAction]): implemented
|
|
action.
|
|
([UIxMailPartICalActions -updateUserStatusAction]): implemented
|
|
action.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame
|
|
-setCssFiles:newCSSFiles]): new accessor that enables the
|
|
sub-templates to specify extra CSS files to load.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
-homeFolderInContext:context]): cache the home folder of the user
|
|
object instead of the current user.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-deleteEntriesWithIds:ids]): invokes the "prepareDelete" optional
|
|
method if the child object implements it.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([-setContentString:])
|
|
removed method.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m ([LDAPSource
|
|
-setBaseDN:newBaseDNIDField:newIDFieldCNField:newCNFieldUIDField:newUIDFieldmailFields:newMailFieldsandBindFields:newBindFields]):
|
|
take a new "mailFields" parameter defining an array of fields
|
|
where to look at when searching the user's emails. It defaults to
|
|
the standard "mail" LDAP field.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailICalReply.[hm]: new
|
|
SoComponent implementing a template for ITIP replies.
|
|
|
|
* SoObjects/Appointments/iCalPerson+SOGo.m ([iCalPerson
|
|
-mailAddress]): new method that returns a properly formatted email
|
|
address for the specified person entry.
|
|
([iCalPerson -uid]): new method that tests whether the user is
|
|
known to the system and if so, returns its user id.
|
|
|
|
* SoObjects/Appointments/iCalPerson+SOGo.[hm]: new category module.
|
|
|
|
* SoObjects/Appointments/iCalEventChanges+SOGo.m
|
|
([iCalEventChanges -sequenceShouldBeIncreased]): determine whether
|
|
the changes involved need a sequence inscrease, based on the
|
|
RFC2446 (ITIP).
|
|
|
|
* SoObjects/Appointments/iCalEventChanges+SOGo.[hm]: new category
|
|
module.
|
|
|
|
* SoObjects/Appointments/iCalEvent+SOGo.m ([iCalEvent
|
|
-isStillRelevant]): new overriden method determining the relevance
|
|
of the current event based on its end date.
|
|
|
|
* SoObjects/Appointments/iCalEvent+SOGo.[hm]: new category module.
|
|
|
|
* SoObjects/Appointments/iCalEntityObject+SOGo.m
|
|
([iCalEntityObject -attendeeUIDs]): new category methods that
|
|
returns an array containing the uids of the system-know attendees.
|
|
([iCalEntityObject -isStillRelevant]): new template method.
|
|
([iCalEntityObject -itipEntryWithMethod:method]): clone the
|
|
current entry calendar with the specified ITIP method.
|
|
([iCalEntityObject -attendeesWithoutUser:user]): returns an array
|
|
of attendees while making sure the specified user is not listed.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -calendar:create:secure]): new name for
|
|
-calendar:. Added a "secure" parameter that specifies whether a
|
|
stripped calendar instance is needed or not. Also, we no longer
|
|
cache the content to simplify handling of new data.
|
|
([SOGoCalendarComponent -component:create:secure]): same as above.
|
|
([SOGoCalendarComponent
|
|
-sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]):
|
|
test whether the component is "still relevant" before sending an
|
|
email...
|
|
([SOGoCalendarComponent -sendResponseToOrganizer]): new method for
|
|
sending ITIP replies.
|
|
([SOGoCalendarComponent -getUIDsForICalPerson:iCalPerson]):
|
|
removed method. Replaced with -[iCalPerson uid] category method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.[hm]: rewrote
|
|
class. No longer override saveContentString:,
|
|
saveContentString:baseSequence:, .... Implemented the
|
|
saveComponent: and the prepareDelete methods instead. Those
|
|
methods are called only from the web methods. This avoids the
|
|
risks related to email sending and changes propagation.
|
|
|
|
* UI/Common/UIxTabItem.m: removed useless class module.
|
|
|
|
* UI/Common/UIxTabView.[hm]: removed useless class module.
|
|
|
|
* UI/Common/UIxPrintPageFrame.m: removed useless class module.
|
|
|
|
* UI/Common/UIxAppNavView.m: removed useless class module.
|
|
|
|
2007-11-16 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m
|
|
Fixed typo.
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m
|
|
We also grok image/jpeg and return the SOGoMailBodyPart
|
|
for attachments fetching.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m
|
|
Prevent a crash in case body decoding failed during
|
|
a reply.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m
|
|
Improved body decoding during a reply to also try
|
|
latin1 as an encoding.
|
|
|
|
* UI/MailPartViewers/UIxMailRenderingContext.m
|
|
Greatly improved the display mechanisms for emails.
|
|
Also properly consider the content disposition for
|
|
most content types.
|
|
|
|
* UI/MailerUI/UIxMailToSelection.m
|
|
Removed worthless code.
|
|
|
|
* UI/WebServerResources/MailerUI.css
|
|
CSS fix for table views.
|
|
|
|
2007-11-15 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js
|
|
We now check for empty selection and warn the
|
|
user about it when deleting messages
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m
|
|
Correctly check for the presence of a subject
|
|
before attempting to forward a message from
|
|
the Drafts folder.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m
|
|
We no longer use "[Fwd: ]" but simply "Fwd:"
|
|
when forwarding email messages.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m
|
|
Modified the default forwarding format to be
|
|
inline instead of "attachment".
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m
|
|
We now create and use a NGMimeContentDispositionHeaderField
|
|
in order to avoid encoding the whole Content-Disposition
|
|
header in case a non-ASCII char is present!
|
|
|
|
2007-11-13 Wolfgang Sourdeau <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.
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <flachapelle@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -ocsFolder]): create
|
|
the folder even if the current user is not its owner.
|
|
|
|
2007-10-10 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* 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 <ludovic@inverse.ca>
|
|
|
|
* 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 <br /> and
|
|
rather use CSS capabilities for proper formatting.
|
|
This is _WAY_ faster on very large mails.
|
|
|
|
2007-10-10 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m
|
|
([UIxComponentEditor -componentCalendar]): returns the calendar
|
|
object of the current event.
|
|
|
|
2007-10-05 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* 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 <flachapelle@inverse.ca>
|
|
|
|
* Main/SOGo.m ([SOGo -isUserName:_keyinContext:_ctx]): removed
|
|
the constraint that a username can't start with a digit.
|
|
|
|
2007-10-02 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* Moved SOPE/sope-gdl1/GDLContentStore from the default trunk
|
|
repository to Inverse's branch.
|
|
|
|
2007-09-28 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* 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 <flachapelle@inverse.ca>
|
|
|
|
* 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 <flachapelle@inverse.ca>
|
|
|
|
* UI/SOGoUI/UIxComponent.m
|
|
([UIxComponent -shortUserNameForDisplay]): returns the string
|
|
"wrongusernamepassword" when authentication failed.
|
|
|
|
2007-09-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* UI/SOGoElements/SOGoIEConditional.m: new extension module class
|
|
to handle "<var:if-ie>" 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView _responseForResults:]):
|
|
has to return only one element.
|
|
|
|
2007-08-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
|
|
-quotasAction]): new method that returns a json representation of
|
|
the mailbox quotas.
|
|
|
|
2007-07-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* Main/sogod.m (main): prevent SOGo from running as root.
|
|
|
|
2007-06-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoLRUCache.m: removed unused module.
|
|
|
|
2007-06-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <flachapelle@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
|
|
-primaryFetchMailboxInfo]): useless method. Removed.
|
|
|
|
2007-05-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 @"<default>".
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-defaultUserID]): overriden method to return @"<default>".
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* UI/Common/UIxAclEditor.m ([UIxAclEditor -currentUserIsOwner]):
|
|
new method with an explicit name.
|
|
|
|
2007-05-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* 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 <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoPermissions.m: added "SOGoRole_ObjectViewer"
|
|
and "SOGoRole_ObjectEditor".
|
|
|
|
* UI/Common/UIxUserRightsEditor.m ([UIxUserRightsEditor
|
|
-prepareRightsForm]): this method is no longer mandatory.
|
|
|
|
* UI/Contacts/UIxContactsUserRightsEditor.m
|
|
([UIxContactsUserRightsEditor
|
|
-setUserCanCreateObjects:userCanCreateObjects]): new subclass
|
|
module to handle acls related to the address books. Partial
|
|
implementation.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
|
|
-setRoles:rolesforUser:uidforObjectAtPath:objectPathArray]): cache
|
|
newly set roles.
|
|
([SOGoFolder
|
|
-removeAclsForUsers:usersforObjectAtPath:objectPathArray]): remove
|
|
specified roles from cache.
|
|
([SOGoFolder -aclsForUser:uidforObjectAtPath:objectPathArray]):
|
|
put resulting roles in cache.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -init]): do not invoke
|
|
initWithName:inContainer:. Instead, directly initialize the ivars
|
|
as it is supposed to be to avoid an infinite loop whenever one of
|
|
those two methods are overriden.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([-rolesOfUser:login]):
|
|
removed method.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
-aclsForUser:uid]): override method so that SOGo won't crash when
|
|
loading the contact card.
|
|
|
|
2007-04-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -_privacySqlString]): the string for the
|
|
"freebusy" special user should only require opaque elements.
|
|
|
|
2007-04-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -davResourceType]): fixed a problem with
|
|
our double declaration where the resulting XML would be screwed.
|
|
There is only one collection per namespace.
|
|
|
|
* SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate
|
|
rfc822DateString]): new method that returns a string conform to
|
|
rfc 822 and suitable for email headers.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m: invoke the new
|
|
"rfc822DateString" category method on the date we put in the
|
|
header.
|
|
|
|
2007-04-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Common/UIxUserRightsEditor.m ([UIxUserRightsEditor -defaultAction])
|
|
([UIxUserRightsEditor -saveUserRightsAction]): new action methods
|
|
which should never be overriden.
|
|
([UIxUserRightsEditor -appendRight:newRight])
|
|
([UIxUserRightsEditor -removeRight:right])
|
|
([UIxUserRightsEditor -appendExclusiveRight:newRightfromList:list])
|
|
([UIxUserRightsEditor -removeAllRightsFromList:list]): new utility
|
|
methods that can be used by the subclasses.
|
|
([UIxUserRightsEditor -prepareRightsForm]): new method that should
|
|
mandatorily be overriden to prepare the elements of the subclassed
|
|
form.
|
|
([UIxUserRightsEditor -updateRights]): new method that should
|
|
mandatorily be overriden to update the user rights from the
|
|
elements of the subclassed form.
|
|
|
|
* UI/Common/UIxAclEditor.m ([UIxAclEditor -_prepareUsers]): we
|
|
check if the uid is already listed before adding it to our array.
|
|
This is because the acl table can contain more than one record per
|
|
user/object relationship.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
|
|
-setRoles:rolesforUser:uidforObjectAtPath:objectPathArray]): the
|
|
"roles" parameter is now an NSArray instead of a string. Therefore
|
|
we loop throughout the array to populate the table. All the
|
|
relevant records are removed prior to the addition of the new
|
|
rights.
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject
|
|
-aclsForUser:uid]): new override that returns nil until we add
|
|
support for IMAP acls.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccounts.m
|
|
([SOGoMailAccounts -aclsForUser:uid]): same as below.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder -aclsForUser:uid]): same as below.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
|
|
-aclsForUser:uid]): override this method which will always return
|
|
nil.
|
|
|
|
* SoObjects/SOGo/SOGoPermissions.[hm]: added
|
|
[Public,Private,Confidential]
|
|
x[Viewer,DAndTViewer,Responder,Modifier]. Renamed
|
|
SOGoRole_ORganizer to SOGoCalendarRole_Organizer. Same for
|
|
..._Participant. Removed SOGoRole_Assistant and SOGoRole_Delegate.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -defaultAclRoles]): new overriden method
|
|
that defines default roles for new elements in the acl.
|
|
|
|
* UI/Scheduler/UIxCalUserRightsEditor.[hm]: new component class
|
|
module and subclass of UIxUserRightsEditor specific to the
|
|
handling of user rights on calendar folders.
|
|
|
|
2007-04-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -groupDavResourceType]): return both
|
|
"vevent-collection" and "vtodo-collection".
|
|
|
|
* UI/Common/UIxUserRightsEditor.[hm]: new template class module
|
|
that implements the detailed editor of user rights per-object.
|
|
|
|
2007-04-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
-rolesForObject:objectinContext:context]): no longer query objects
|
|
for "roleForUser:". Instead, all objects should implement
|
|
"rolesForUser:".
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject -acls]):
|
|
new method to comply with the new acl "protocol" in SOGoObject.
|
|
Uses SOGoFolder's new facilities for ACLS.
|
|
([SOGoContentObject -aclsForUser:uid]): idem.
|
|
([SOGoContentObject -setRoles:rolesforUser:uid]): idem.
|
|
([SOGoContentObject -removeAclsForUsers:users]): idem.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
|
|
-aclsForObjectAtPath:objectPathArray]): new method generic to GCS
|
|
based folders. This method is derived from the code that was in
|
|
UIxAclFolder before its removal.
|
|
([SOGoFolder -aclsForUser:uidforObjectAtPath:objectPathArray]):
|
|
idem.
|
|
([SOGoFolder
|
|
-removeAclsForUsers:usersforObjectAtPath:objectPathArray]): idem.
|
|
([SOGoFolder
|
|
-setRoles:rolesforUser:uidforObjectAtPath:objectPathArray]): idem.
|
|
([SOGoFolder -setRoleForUsers:uidsto:role])
|
|
([SOGoFolder -setRoleForUsers:uidsto:role]): removed method.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -acls]): stub method
|
|
that requires overriding by subclasses.
|
|
([SOGoObject -aclsForUser:uid]): idem.
|
|
([SOGoObject -defaultAclRoles]): idem.
|
|
([SOGoObject -setRoles:rolesforUser:uid]): idem.
|
|
([SOGoObject -removeAclsForUsers:users]): idem.
|
|
|
|
* UI/Common/UIxObjectActions.m: new module implementing the web
|
|
actions common to SOGoObject and all its subclasses.
|
|
([UIxObjectActions -addUserInAclsAction]): new method that adds a
|
|
user with the clientObject defaults user rights to the object's
|
|
acl.
|
|
|
|
* UI/Common/UIxAclEditor.m: modified module so as to simplify it
|
|
to the point where it will only list the users (and their name)
|
|
associated with an object acl.
|
|
|
|
* SoObjects/SOGo/SOGoAclsFolder.m: removed module because its
|
|
methods have been moved into SOGoObject and SOGoFolder during a
|
|
refactoring.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-iCalParticipantsAndResourcesStringFromQueryParameters]): removed
|
|
method made useless by the programmatic handling of iCalendar
|
|
objects.
|
|
([UIxComponentEditor -iCalParticipantsStringFromQueryParameters]): idem.
|
|
([UIxComponentEditor -iCalResourcesStringFromQueryParameters]): idem.
|
|
([UIxComponentEditor -iCalStringFromQueryParameter:_qpformat:_format]): idem.
|
|
|
|
* UI/WebServerResources/MailerUI.js (initDnd): enable drag and
|
|
drop on all folder nodes, not just on leaves.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder
|
|
-lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]): request field "uid" when doing a search.
|
|
|
|
2007-04-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Main/SOGo.m ([SOGo +initialize]): on GNUstep, trigger some
|
|
debugging facilities when the SOGoDebugObjectAllocation user
|
|
default is set.
|
|
|
|
2007-04-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m ([NSString -boolValue]): new
|
|
method that SOGo will need with non-gnustep Foundation
|
|
implementation.
|
|
([NSString -stringByAppendingPathComponent:component]): new method
|
|
that SOGo will need when building with libFoundation. Method
|
|
removed later since it is available from
|
|
Foundation/NSPathUtilities.h.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -timeZone]): method moved
|
|
from SOGoObject.m.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m: new ivar "context" that permits
|
|
every subclass to access [WOApplication context] without having to
|
|
invoke it more than once.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -changeParticipationStatus:_status]):
|
|
moved method from SOGoTaskObject and SOGoAppointmentObject up to
|
|
their parent class.
|
|
|
|
* UI/Scheduler/UIxCalSelectTab.m: removed module.
|
|
|
|
2007-04-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry
|
|
-vCard]): test the prefix of the card in a case-independent way.
|
|
|
|
* OGoContentStore/OCSContactFieldExtractor.m
|
|
([OCSContactFieldExtractor
|
|
-extractQuickFieldsFromContent:content]): we no longer accept
|
|
records in a format other than versit vCard so we can get rid of a
|
|
lot of code.
|
|
|
|
2007-04-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactsListView.m ([UIxContactsListView
|
|
-selectorComponentClass]): restored method.
|
|
|
|
2007-04-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalTasksListView.m ([UIxCalTasksListView
|
|
-shouldDisplayCurrentTask]): the current task is not displayed if
|
|
it is NOT completed or if the "showCompletedTasks" flag is set.
|
|
The logic was inverted in Lightning and is now in SOGo too.
|
|
|
|
2007-04-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactView.m ([UIxContactView -workUrl]): we
|
|
want the "work" url instead of the "home".
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor
|
|
-_saveSnapshot]): save url values from snapshot.
|
|
([UIxContactEditor -initSnapshot]): load url values from snapshot.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-calendarList]): new method replacing "availableCalendars".
|
|
|
|
* UI/Scheduler/UIxCalendarSelector.m ([UIxCalendarSelector
|
|
-calendarFolders]): we now take the list of subscribed calendar
|
|
from the container.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -calendarFoldersInContext:context]): new
|
|
method derived from and replacing [UIxCalView calendarFolders].
|
|
|
|
2007-03-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-toManyRelationshipKeys]): don't put the predefined folders in the
|
|
list if they are returned by the server.
|
|
|
|
* UI/MailerUI/UIxMailTree.m ([UIxMailTree -flattenedNodes]): we no
|
|
longer store the "flattenedBlocks" in a dictionary since the
|
|
object will be deleted anyway and we don't need to put the folders
|
|
in cache.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
([UIxMailPartHTMLViewer -_attachmentIds]): take the current
|
|
attachment path into account when computing the part urls.
|
|
|
|
2007-03-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.m
|
|
([UIxContactsListViewContainer -additionalFolders]): take the list
|
|
of subscribed folders from the new property list used for the user
|
|
settings. The value of its key is SubscribedFolders for the
|
|
dictionary entry named "Contacts".
|
|
|
|
* UI/Contacts/UIxContactsListView.m ([UIxContactsListView
|
|
-canAccessContentAction]): new method to override the one from
|
|
UIxFoldersActions by taking into account the fact that, this time,
|
|
the clientObject is an ldap folder. Removed many method that used
|
|
to be related to the handling of the user selector.
|
|
|
|
* UI/Scheduler/UIxCalDayView.m: commented out many unused methods
|
|
to make sure they can be removed.
|
|
|
|
* UI/Scheduler/UIxCalView.m ([UIxCalView -_setupCalendarFolders]):
|
|
populate the calendar entries based on the user settings plist.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-selectForMailerAction]): restored method.
|
|
|
|
* UI/Scheduler/UIxCalendarSelector.m: new template module derived
|
|
from a simplified version of the old UIxContactEditor (removed).
|
|
|
|
* UI/Contacts/UIxContactsUserFolders.m: new template module for
|
|
selecting users or user folders through an LDAP search of which
|
|
the results are displayed as a tree.
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js: moved previous generic
|
|
method "onContactAdd" here since the Mailer is now the only module
|
|
to use it when composing emails.
|
|
|
|
* UI/WebServerResources/generic.js: added code for handling the
|
|
new scheme used for describing SOGo folders, common code to handle
|
|
folder addition or removal.
|
|
|
|
* UI/Common/UIxFolderActions.m ([UIxFolderActions
|
|
-activateFolderAction]): new method that change the "active"
|
|
settings in the folder-related fields in the user settings.
|
|
([UIxFolderActions -deactivateFolderAction]): see above.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-checkRightsAction]): removed method.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-updateAdditionalAddressBooksAction]): removed method.
|
|
|
|
* UI/Scheduler/UIxCalMainView.m ([UIxCalMainView
|
|
-updateCalendarsAction]): removed method.
|
|
|
|
2007-03-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMainView.m ([UIxCalMainView
|
|
-checkRightsAction]): removed method.
|
|
|
|
* UI/Common/UIxFolderActions.m ([UIxFolderActions
|
|
-canAccessContentAction]): new method designed to replace
|
|
[UIxCalMainView checkRightsAction] in a more universal way.
|
|
|
|
2007-03-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
|
|
-roleOfUser:uidinContext:context]): take all the subkeys into
|
|
account, not only the "personal" folder.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-takeValuesFromRequest:_rqinContext:_ctx]): append a "uid" field
|
|
to the new components.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -userSettings]): new method
|
|
(see below).
|
|
|
|
* SoObjects/SOGo/AgenorUserManager.m ([AgenorUserManager
|
|
-getUserDefaultsForUID:uid]): rewrote method to use the "defaults"
|
|
field of the sogo_user_profile table, where the user-customizable
|
|
changes will be saved.
|
|
([AgenorUserManager -getUserSettingsForUID:uid]): new method
|
|
similar to the one above, using the "settings" field where the
|
|
automatic settings will be saved.
|
|
|
|
* SoObjects/SOGo/AgenorUserDefaults.m: rewrote a big part of the
|
|
module to bind the userdefaults to a property list contained in a
|
|
specified field of the sogo_user_profile table.
|
|
([AgenorUserDefaults
|
|
-initWithTableURL:tableURLuid:userIDfieldName:defaultsFieldName]):
|
|
added a "fieldName" parameter.
|
|
|
|
* UI/Common/UIxFolderActions.m: new module implementing web
|
|
actions common to all GCS-based folders.
|
|
|
|
2007-03-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable -labelForDay]):
|
|
put a carriage return after the day name.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage
|
|
-readFreeBusyAction]): restored method.
|
|
|
|
2007-03-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage
|
|
-defaultAction]): remade module to redirect automatically to the
|
|
Calendar url.
|
|
|
|
* SoObjects/Contacts/NSDictionary+Contact.m: removed module.
|
|
|
|
2007-03-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactsListView.m ([UIxContactsListView
|
|
-deleteAction]): new web method to delete personal addressbook
|
|
folders.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-delete]): override method to refuse the deletion of the folder if
|
|
its nameInContainer is "personal".
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -delete]): new method
|
|
that forwards the deletion request to the folder manager.
|
|
|
|
2007-03-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxAttendeesEditor.m ([UIxAttendeesEditor
|
|
-zoomList]): new method that returns the list of available zoom factors.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor
|
|
-changeStatusAction]): rewrote method.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-_handleAttendeesEdition]): make sure "attendeesNames" has a
|
|
length > 0 before computing the attendees. Otherwise there will be
|
|
an invalid empty entry.
|
|
([UIxComponentEditor -_handleOrganizer]): new method that adds the
|
|
organizer when there are attendees and remove it when the
|
|
attendees are removed.
|
|
|
|
2007-03-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxAttendeesEditor.m): new component.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m: no longer a superclass for
|
|
the task and appointment editors. Now a container component
|
|
handling the common elements of tasks and events.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m: same as below.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m: rewrote template. No longer
|
|
a subclass of UIxComponentEditor but a subcomponent of it.
|
|
|
|
* UI/Common/UIxToolbar.m ([UIxToolbar -toolbarConfig]): the
|
|
toolbar can have the special value "none" to indicate there is
|
|
none attached to the window.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -isOrganizer:emailorOwner:login]): new
|
|
method.
|
|
([SOGoCalendarComponent -isParticipant:email]): new method.
|
|
([SOGoCalendarComponent -calendar:create]): takes one parameter
|
|
"create" which is a boolean indicating whether we want to create
|
|
the calendar if it does not exist.
|
|
|
|
2007-03-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMonthView.m: changed view to use divs instead
|
|
of a table, the same way the dayly and weekly views have been for
|
|
a few months now.
|
|
|
|
2007-02-09 Helge Hess <helge.hess@opengroupware.org>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m: added CalDAV
|
|
resourcetype
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m: added davCalendarHomeSet CalDAV
|
|
property to point at the user folder
|
|
|
|
2007-03-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
|
|
-userInContext:]): returns "SOGoUser".
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -contentAsString]): overriden method that
|
|
takes the privacy into account and discard the relevant fields if
|
|
needed by generating a new content string and caching it.
|
|
([SOGoCalendarComponent
|
|
-saveContentString:contentStringbaseVersion:baseVersion]): if the
|
|
new method above has cached a content string, release it and set
|
|
it to nil so that it will have to be regenerated in the case it is
|
|
requested further.
|
|
([SOGoCalendarComponent -_filterPrivateComponent:component]):
|
|
discard the fields that have to be hidden when the card is
|
|
private.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-appendObject:objectwithBaseURL:baseURLtoREPORTResponse:r]): make
|
|
sure the cards are now handled as instances of
|
|
SOGoCalendarComponent instead of SOGoContentObject so that their
|
|
content string is taking the privacy classifiction into account.
|
|
([SOGoAppointmentFolder -_privacySqlString]): new method that
|
|
generates a query to determine what information can be given and
|
|
if the card itself has to be shown.
|
|
|
|
* UI/Scheduler/UIxComponent+Agenor.m ([UIxComponent
|
|
-getICalPersonsFromValue:selectorValue]): removed useless
|
|
"isAccessRestricted" method.
|
|
|
|
* UI/Scheduler/UIxCalInlineAptView.m ([UIxCalInlineAptView
|
|
-setStyle:_style]): test whether the values of orgmail and
|
|
partmails are null before manipulating them, otherwise SOGo sends
|
|
a "rangeOfString:" message to an NSNull, which makes it crashes.
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
|
|
-extractQuickFieldsFromEvent:_event]): we now use the new
|
|
"symbolicAccessClass" method from iCalEntity to determine the
|
|
value of the "classifiction" field.
|
|
([OCSiCalFieldExtractor -extractQuickFieldsFromTodo:_task]): same
|
|
as above.
|
|
|
|
2007-03-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchCoreInfosFrom:_startDateto:_endDatecomponent:_component]):
|
|
see below, the query is adapted consequently.
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
|
|
-extractQuickFieldsFromTodo:_task]): the field "ispublic" was
|
|
renamed to "classification" and can any integer as value.
|
|
([OCSiCalFieldExtractor -extractQuickFieldsFromEvent:_event]):
|
|
idem.
|
|
|
|
2007-02-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
([_UIxHTMLMailContentHandler -_appendStyle:_charslength:_len]):
|
|
don't prepend anything to the class and id named. Instead, we
|
|
make each style embedded in the ".SOGoHTMLMail-CSS-Delimiter"
|
|
class.
|
|
|
|
2007-02-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-rolesOfUser:logininContext:context]): if object does not exists
|
|
(for example when it's being created), the current user has the
|
|
same rights on it than he/she has on its parent container.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
|
|
-nameExistsInFolder:objectName]): methods that tests if a c_name
|
|
corresponding to the name passed as parameter is present in the db
|
|
folder.
|
|
|
|
2007-02-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
-rolesForObject:objectinContext:context]): test for
|
|
"rolesOfUser:inContext:" in addition to "roleOfUser:...".
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -rolesOfUser:logininContext:context]):
|
|
returns the roles of the user on the container object if the event
|
|
is uncreated.
|
|
|
|
2007-02-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailRenderingContext.m: returns the
|
|
alternativeViewer a multipart/related message is being handled.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m: reimplemented module
|
|
from scratch.
|
|
|
|
* UI/MailPartViewers/UIxMailPartAlternativeViewer.m: select the
|
|
text/html component before text/plain.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-addRequiredKeysOfStructure:path:toArray:recurse:]): accepts the
|
|
fetching of HTML parts.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -componentTag]): new template method that
|
|
returns the vcalendar tag of the current object.
|
|
([SOGoCalendarComponent -component]): new method that returns the
|
|
first object matching [self componentTag] within the current
|
|
calendar object. This method replaces 'firstEventInCalendar:' as
|
|
well as "firstTaskInCalendar:".
|
|
([SOGoCalendarComponent -roleOfUser:logininContext:context]):
|
|
moved method from SOGoAppointmentObject.m.
|
|
|
|
2007-02-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMulticolumnDayView.[hm]: new daily view
|
|
module which shows each selected user's calendar in a different
|
|
column instead of mixing their events together.
|
|
|
|
* UI/Scheduler/UIxCalView.m ([UIxCalView -redirectForUIDsAction]):
|
|
replaced use of [NSString stringByTrimmingWhiteSpaces] with
|
|
[NSString stringByTrimmingSpaces].
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m: request the key
|
|
"cnWithoutQuotes" instead of "cnForDisplay", which no longer
|
|
exists.
|
|
|
|
* UI/Scheduler/UIxCalDayOverview.m,
|
|
UI/Scheduler/UIxCalDayChartview.m,
|
|
UI/Scheduler/UIxCalDayListview.m,
|
|
UI/Scheduler/UIxCalWeekOverview.m,
|
|
UI/Scheduler/UIxCalWeekChartview.m,
|
|
UI/Scheduler/UIxCalWeekListview.m,
|
|
UI/Scheduler/UIxCalInlineMonthOverview.m,
|
|
UI/Scheduler/UIxCalYearOverview.m: removed unused modules.
|
|
|
|
2007-02-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
|
|
-appendPersonalSourcesInContext:context]): release connectoin
|
|
channel when everything is done.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-newAbAction]): new action method to crate a new contact folder
|
|
from the web UI.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -create]): new method
|
|
that requests the folder manager to create a folder table with the
|
|
specified type at the specified path. The type is taken from [self
|
|
folderType].
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-folderType]): implemented.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -folderType]): implemented.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
|
|
-appendPersonalSourcesInContext:context]): we now fetch all
|
|
folders with type "Contact" that belong to the current user.
|
|
([SOGoContactFolders -newFolderWithName:name]): new method to
|
|
create a new contact folder.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -userFolderPath]): treat
|
|
resulting url with [NSString+Utilities hostlessURL] instead of
|
|
using NSURL. This is because the url in question sometimes has a
|
|
hostname and sometimes not. "hostlessURL" ensure the hostname is
|
|
removed anyway.
|
|
([UIxComponent -applicationPath]): same as above.
|
|
|
|
2007-02-08 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m: priorize the lookup of
|
|
folders before doing the one on messages.
|
|
|
|
2007-02-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m: added an implementation of
|
|
makeObjectsPerform:withObject:withObject: for GNUstep
|
|
compatibility.
|
|
|
|
* OGoContentStore/GNUmakefile, Protocols/common.make,
|
|
SoObjects/common.make, UI/common.make: install in
|
|
GNUSTEP_INSTALLATION_DIR instead of GNUSTEP_USER_DIR.
|
|
|
|
2007-02-07 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* UI/Scheduler/English.lproj/Localizable.strings: fixed typo for
|
|
"Agendas"
|
|
|
|
2007-02-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailTree.m ([UIxMailTree
|
|
-getTitle:folderType:andIcon:forObject:]): disabled Sieve folders
|
|
for the moment.
|
|
|
|
* SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
|
|
-checkLogin:_loginpassword:_pwd]): fixed a bug where a wrong
|
|
password would be accepted anyway as long as its length was > 0.
|
|
This can be the case ONLY when LDAP is disabled otherwise we have
|
|
a serious security issue...
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -roleOfUser:logininContext:context]): if a
|
|
user is not an organizer nor a participant, he is declared as
|
|
"Owner" if he owns the calendar the entry where the entry is
|
|
contained. Other cases should not be possible.
|
|
|
|
2007-02-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactEditor.m: display and handle the new
|
|
Freebusy URL entry.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder -_searchAttributes]): retrieve "calFBURL"
|
|
from the server.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
-vCard]): put the LDAP "calFBURL" field in the vCard's "FBURL"
|
|
entry.
|
|
|
|
2007-01-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -sendEMailNotifications]): new method that
|
|
returns the value of ud "SOGoAppointmentSendEMailNotifications"
|
|
(iMIP/iTIP).
|
|
([SOGoCalendarComponent
|
|
-sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]): method moved from SOGoAppointmentObject/SOGoTaskObject, replacing occurences of "appointment" to "object" in its name.
|
|
|
|
2007-01-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
|
-defaultAction]): invoke "flushMailCaches" on [self clientObject]
|
|
so that the mailbox cache is refreshed everytime the user presses
|
|
on "get mail". I doubt a mailbox cache really is useful in general
|
|
anyway.
|
|
|
|
2007-01-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
|
|
-userInContext:]): if the lookup is on "freebusy.ifb" and the
|
|
username is "anonymous" the user is automatically set to
|
|
"freebusy".
|
|
|
|
2007-01-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
|
|
-checkLogin:_loginpassword:_pwd]): authorize special "freebusy"
|
|
user with password "freebusy".
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
|
|
-contentAsString]): the default timerange is now 14 days before
|
|
currentday and 1 month after.
|
|
|
|
2007-01-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-appendObject:objectwithBaseURL:baseURLtoREPORTResponse:r]):
|
|
escape the record string in a way suitable with XML encoding.
|
|
|
|
2007-01-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: fixed a bug where the
|
|
calendar view would not be updated properly.
|
|
|
|
2007-01-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-newStartDate]): fix the handling of the component start date
|
|
depending on the "hm" and the "day" parameters.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-roleOfUser:uidinContext:context]): set role of current user to
|
|
"Assistant" if the object that is accessed is "freebusy.ifb".
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -lookupCalendarFolderForUID:uid]): method
|
|
moved from UI/Scheduler/UIxCalView:calendarFolderForUID:.
|
|
([SOGoAppointmentFolder
|
|
-lookupCalendarFoldersForUIDs:_uidsinContext:]): now use the new
|
|
lookupCalendarFolderForUID: method, which doesn't do security
|
|
checks.
|
|
|
|
2007-01-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Common/UIxAclEditor.m ([UIxAclEditor -assistantsValue]): new
|
|
accessor that returns the comma-separated list of users with role
|
|
"Assistant".
|
|
([UIxAclEditor -delegatesValue]): same as above for "Delegate".
|
|
([UIxAclEditor -_prepareUsers]): there is no longer a concept of
|
|
"checkedUsers". Instead, each user is either classified in the
|
|
list of assistants or the list of delegates.
|
|
|
|
2006-12-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame
|
|
-composeAction]): method imported from removed container modules.
|
|
([UIxMailMainFrame -mailFolderName]): method imported from removed
|
|
container modules.
|
|
|
|
* UI/MailerUI/UIxMailPopupView.m: a new special popup component
|
|
for wrapping UIxMailView with the "popupview" action.
|
|
|
|
* UI/MailerUI/UIxMailAccountView.m: renamed to UIxMailSplashView,
|
|
since its the component that displays the same splash screen than
|
|
the one in Thunderbird/Icedove.
|
|
|
|
* UI/MailerUI/UIxMailAccountViewContainer.[hm],
|
|
UI/MailerUI/UI/MailerUI/UIxMailAccountsView.m,
|
|
UI/MailerUI/UIxMailListViewContainer.[hm],
|
|
UI/MailerUI/UIxMailViewContainer.[hm]: removed
|
|
|
|
2006-12-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/HTMLElement.js: replaced the functional
|
|
selectNode() and deselectNode() functions with select() and
|
|
deselect() methods of HTMLElement.
|
|
|
|
* UI/WebServerResources/ContactsUI.js: cleanup, most of the
|
|
events are initialized from here now instead of in the HTML code.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-checkRightsAction]): new method similar to the one with the same
|
|
name in UIxCalMainView.m.
|
|
|
|
* UI/Common/UIxAclEditor.m ([UIxAclEditor -saveAclsAction]): added
|
|
code to handle the publishing of freebusy information.
|
|
|
|
2006-12-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMainView.m ([UIxCalMainView
|
|
-checkRightsAction]): new action method that returns a
|
|
comma-separated list of boolean values matching the right of the
|
|
current user to "view" (as a permission) each foreign calendar
|
|
stored in his preferences.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -setOwner:newOwner]):
|
|
new method that sets a customOwner, which can be returned with
|
|
ownerInContext it set.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): no longer set the owner of elements here.
|
|
|
|
2006-12-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m: same as for SOGoContactFolders
|
|
below, but for the Contacts and Calendar collections.
|
|
|
|
* SoObjects/SOGo/SOGoAclsFolder.m: convert the class to user the
|
|
new acl facilities method from sope-gdl/GCSFolder.m.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
|
|
-roleOfUser:uidinContext:context]): new method that returns
|
|
SOGoRole_Assistant when the user is an assistant or a delegate on
|
|
the "personal" ab object. This is so that setting roles on the
|
|
SOGoContactFolders object is not required.
|
|
|
|
2006-12-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Main/SOGo.m: declare "Freebusy" permissions for the top objects.
|
|
|
|
* UI/Contacts/UIxContactsAclsSelection.m: new component specific
|
|
to the handling of the user selection for the acls.
|
|
|
|
* SoObjects/SOGo/SOGoPermissions.[hm]: new module that extends the
|
|
values from SoPermissions with ones specific to SOGo.
|
|
|
|
* SoObjects/SOGo/SOGoAclsFolder.[hm]: new class module that
|
|
handles the storage for the acls.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.[hm]: new parent
|
|
class for SOGoAppointmentObject and SOGoTaskObject.
|
|
|
|
* UI/Common/UIxAclEditor.[hm]: new component that provides a
|
|
general editor for folder acls.
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.[hm]: old "NSString+URL"
|
|
renamed.
|
|
([NSString -davMethodToObjC]): method that returns the method name
|
|
for a DAV property implementation.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m: new extension module to
|
|
NSArray.
|
|
([NSArray -stringsWithFormat:format]): new method that returns
|
|
formatted occurences of the strings stored in the array.
|
|
|
|
* SoObjects/SOGo/SOGoDAVRendererTypes.m ([SOGoDAVSet
|
|
+davSetWithArray:newValuesofValuesTaggedAs:newValueTag]): a new
|
|
subclass module of SoWebDAVValue that supports collections of
|
|
properties of the same type.
|
|
|
|
2006-11-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-lookupFolder:ofClassNamed:inContext:]): added the ability to
|
|
configure the name of the SOGoDraftFolders with the ud var
|
|
"SOGoDraftsFolderName".
|
|
|
|
2006-11-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-userTimeZone:username]): new method that returns the timezone for
|
|
the specified user depending on his preferences and the server
|
|
defaults
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-stringForData:partInfo:]): take the encoding into account and
|
|
translate the text to "normal" before processing the charset data.
|
|
|
|
2006-11-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js: the progress indicator is on
|
|
when loading the page so we turn it off, and we turn it back on
|
|
whenever we switch to another module...
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: make sure the day view
|
|
synchronization mechanism works everywhere.
|
|
|
|
* UI/WebServerResources/generic.js: the log window is not only
|
|
visible when UIxDebugEnabled is set.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: the month overview's day
|
|
cells are now initialized with the DOM event interface methods
|
|
instead of with html attributes.
|
|
|
|
* UI/Templates/MailerUI/UIxMailView.wox: don't display useless
|
|
headers (should be made configurable at some point)...
|
|
|
|
* OGoContentStore/sql/generate-folderinfo-sql-for-users.sh: drop
|
|
"not null" constraint on startdate, enddate, isopaque,
|
|
participants and partmails.
|
|
|
|
2006-11-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable
|
|
-hoursToDisplay]): prevent a crash by retaining the
|
|
"hoursToDisplay" array after it's created.
|
|
([UIxCalDayTable -clickableHourCellClass]): new method for the new
|
|
clickable hours DIV.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: made the event
|
|
participation status modification asynchronous, which also fixes a
|
|
bug where the window would sometimes close before the accept or
|
|
decline action was completed. Also, adapted the event handling
|
|
related to the days or weeks view with the new DIV-based layout.
|
|
|
|
* UI/Scheduler/UIxCalInlineAptView.m: same as the first below...
|
|
|
|
* UI/Scheduler/UIxCalDayTable.m: enhanced to provide the new
|
|
DIV-based presentation of the days and weeks.
|
|
|
|
* SoObjects/Appointments/SOGoTaskObject.m: same as below...
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m: lookupName:...
|
|
might return an exception so we have to handle it if we don't
|
|
wanna crash...
|
|
|
|
2006-11-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: updated the list
|
|
initialization code to use the new event management scheme, adding
|
|
what was missing to be able to delete events and tasks again.
|
|
|
|
* UI/WebServerResources/MailerUI.js: added code to activate the
|
|
"Get mails" button. Fixed a bug which prevented messages to be
|
|
deleted.
|
|
|
|
* UI/WebServerResources/UIxFreeBusyUserSelector.js: handle tab
|
|
navigation and focus handling of INPUTs.
|
|
|
|
2006-11-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js: added code to handle the
|
|
possible drag and drop events to manager in the mail module.
|
|
Moving messages, opening parent folders, ...
|
|
|
|
* UI/WebServerResources/SOGoDragAndDrop.js: new file containing
|
|
the drag and drop manager as well as the interface to HTMLElement
|
|
to trigger drag and drop events.
|
|
|
|
* UI/MailerUI/UIxMailView.m ([UIxMailView -moveAction]): new
|
|
action to move the current message to the mailbox named after the
|
|
value of parameter "tofolder".
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-moveToFolderNamed:folderNameinContext:]): new method base on
|
|
-trashInContext:.
|
|
|
|
2006-11-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js: added and activated many
|
|
"load" handlers to configure generic widgets used across the
|
|
modules. More events are now handled in a DOM-fashion way instead
|
|
of by setting the relative attributes in the templates.
|
|
|
|
* UI/Templates/UIxSortableTableHeader.wox: all the events are
|
|
declared from the javascript DOM onload handlers.
|
|
|
|
* UI/Templates/UIxPageFrame.wox: load the new SOGoDragHandles.js
|
|
library.
|
|
|
|
* UI/Templates/MailerUI/UIxMailListView.wox: all the events are
|
|
declared from the javascript DOM onload handlers.
|
|
|
|
* UI/MailerUI/UIxMailListView.m: removed all the JS methods since
|
|
we want everything to be separated from each other, as much as
|
|
possible.
|
|
|
|
* UI/WebServerResources/SOGoDragHandles.js: new module containing
|
|
the "SOGoDragHandlesInterface", implementing methods that can be
|
|
attributed to DIV so that they can be used as drag handles.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([NSString
|
|
-asQPSubjectString]): initialize the tmp strings with '0' to make
|
|
sure they don't contain garbage.
|
|
|
|
2006-11-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js: register the messageList
|
|
table as a dragging source and the leaf of the navigation tree as
|
|
dnd destinations to the DNDManager.
|
|
|
|
* UI/WebServerResources/generic.js: initialize tabs from the
|
|
"unload" event listener that is added programmatically instead of
|
|
from the template... Also, added the new DNDManager object.
|
|
|
|
* UI/WebServerResources/HTMLTableElement.js: added code to
|
|
simulate XUL drag n drop events. This code will possibly be moved
|
|
to HTMLElement.js instead later...
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder -_qualifierForFilter:filter]): same as
|
|
below.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-_qualifierForFilter:filter]): only search records which starts
|
|
with the specified pattern.
|
|
|
|
2006-11-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([NSString
|
|
-asQPSubjectString]): new method that returns the special QP
|
|
string with its qp declaration for email subjects.
|
|
([SOGoDraftObject -bodyPartForText])
|
|
([SOGoDraftObject -mimeMessageForContentWithHeaderMap:]): don't
|
|
double-encode data in UTF-8.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-newStartDate]): new method to determine the start date depending
|
|
on the URL parameters, the current day and the current time.
|
|
([UIxComponentEditor -toolbar]): new method to determine the
|
|
filename of the toolbar that should be drawn depending on the
|
|
ownership and the list of attendees of the task/event wrt to the
|
|
current user...
|
|
|
|
* UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl
|
|
-setDayStartHour:aStartHour]): adjust the minutes to the next
|
|
quarter of hour, if not already set to a quarter.
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js,
|
|
UI/WebServerResources/UIxTaskEditor.js: added code to manage start
|
|
date change.
|
|
|
|
2006-11-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-loadValuesFromComponent:component]): handles access class
|
|
(privacy) and status.
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.m
|
|
([UIxContactsListViewContainer -additionalFolders]): return nil if
|
|
[self additionalAddressBooks] returns an empty string.
|
|
|
|
2006-11-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMonthView.m ([UIxCalMonthView
|
|
rangesOf7Days]): enhanced and debugged algorithm to feed the array
|
|
with slices where the first day is still in the requested month.
|
|
|
|
* UI/Templates/UIxPageFrame.wox: the logConsole is created only on
|
|
non-popup pages.
|
|
|
|
* UI/SOGoUI/SOGoAptFormatter.m: added code to handle the display
|
|
of events in the day boxes of the calendar's monthly view.
|
|
|
|
* SoObjects/Appointments/SOGoTaskObject.m ([SOGoTaskObject
|
|
-davContentType]): declare "text/calendar".
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -davContentType]): declare
|
|
"text/calendar".
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -lookupName:inContext:acquire:]): certain
|
|
HTTP methods are handled by SOPE and requires nil to be returned,
|
|
this method now invokes the new
|
|
"requestNamedIsHandledLater:inContext:" method to check that.
|
|
([SOGoAppointmentFolder
|
|
-requestNamedIsHandledLater:nameinContext:context]): new methods
|
|
that returns "YES" only for the "OPTIONS" http method (for now...).
|
|
([SOGoAppointmentFolder -davComplianceClassesInContext:]):
|
|
overloaded method to append the "access-control" and
|
|
"calendar-access" DAV abilities to the initial declaration.
|
|
|
|
* UI/Scheduler/UIxCalMonthView.[hm]: rewritten module entirely to
|
|
imitate the look of Sunbird/Lightning's monthly view.
|
|
|
|
* UI/Scheduler/UIxCalMonthView.[hm]: renamed to
|
|
UIxCalMonthViewOld.[hm].
|
|
|
|
2006-11-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxFreeBusyUserSelectorTable.m
|
|
([UIxFreeBusyUserSelectorTable -currentContactHasStatus]): new
|
|
method.
|
|
([UIxFreeBusyUserSelectorTable -currentContactStatusImage]):
|
|
returns an image name based on the participation status of the
|
|
current attendee.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: same strip down as for
|
|
generic.js below.
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.m ([UIxContactsListViewContainer -additionalAddressBooks])
|
|
([UIxContactsListViewContainer -additionalFolders])
|
|
([UIxContactsListViewContainer -setCurrentAdditionalFolder:newCurrentAdditionalFolder])
|
|
([UIxContactsListViewContainer -currentAdditionalFolder]): new
|
|
methods to handle the external addressbooks a user has subscribed
|
|
too, by retriving them from his preferences.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-updateAdditionalAddressBooksAction]): new method that updates the
|
|
user settings with the list of addressbook he has subscribed to.
|
|
|
|
* UI/Contacts/UIxContactsAddressBooksSelection.m: new component
|
|
module for the address book selector.
|
|
|
|
* UI/Templates/ContactsUI/UIxContactsListViewContainer.wox: added
|
|
a toolbar with two buttons ("add" and "remove") to manage the
|
|
additional addressbooks a user might subscribe to.
|
|
|
|
* UI/WebServerResources/ContactsUI.js: added code to handle
|
|
"external addressbooks" from the Javascript point-of-view, by
|
|
extending existing methods and adding code for the "add ab" and
|
|
"remove ab" buttons.
|
|
|
|
* UI/WebServerResources/generic.js: moved extensions methods to
|
|
DOM elements to separate files for better clarity.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -pageContentClasses]):
|
|
new method that returns "pageContent" as class, but also "popup"
|
|
for the DIV where the page content lies, so that we can manipulate
|
|
the content of popup's with CSS identifiers.
|
|
|
|
2006-10-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalInlineAptView.m ([UIxCalInlineAptView
|
|
-displayStyle]): new method that returns a string containing the
|
|
css style relative to the current appointment cell. This code is
|
|
currently inactive but might be reused later.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: added code to handle the
|
|
display of the selected day (the day pointed by the mouse, or the
|
|
current day when changing the view).
|
|
|
|
* UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable
|
|
-dayCellClasses]): new method that returns a string containing the
|
|
css classes applicable to the current cell, depending on the
|
|
position of the day in the week, the day of today and the
|
|
requested day.
|
|
|
|
* UI/Scheduler/UIxCalCalendarsListView.m ([UIxCalCalendarsListView
|
|
-currentContactAptBorder]): new method that returns the
|
|
appropriate border color for the specified user.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject
|
|
-saveContentString:contentStringbaseVersion:baseVersion]):
|
|
overloaded method that parse new events and detects if they have
|
|
an organizer or not. If they are new and have no organizer set
|
|
(Sunbird/Lightning...), the owner of the event is set as
|
|
organizer.
|
|
|
|
* SoObjects/Appointments/iCalEntityObject+Agenor.[hm]: new
|
|
category that provides facility methods and interfaces to the
|
|
AgenorUserManager.
|
|
|
|
* SoObjects/Contacts/product.plist: give full access to ANY
|
|
authenticated user, not just the owner (to every objects...).
|
|
|
|
2006-10-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxFreeBusyUserSelector.js: make sure
|
|
every replica widgets are declared as such to their master
|
|
counterpart. Take the days into account when displaying the time
|
|
range taken by the appointment.
|
|
|
|
* UI/Scheduler/UIxComponent+Agenor.m ([UIxComponent
|
|
-getICalPersonsFromValue:selectorValue]): method taken from
|
|
UIxFreeBusyUserSelector, that is shared both by
|
|
UIxFreeBusyUserSelector and UIxFreeBusyUserSelectorTable.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): reverted to search algorithm to search for events happening outside 0 or 1 (at most) boundary of the timerange.
|
|
|
|
* UI/Scheduler/UIxFreeBusyUserSelectorTable.[hm]: new subcomponent
|
|
derived and taken as a subset of UIxFreeBusyUserSelector that
|
|
implements the table part of the FreeBusy view. Most of the
|
|
methods of UIxFreeBusyUserSelector relative to that table were
|
|
moved into UIxFreeBusyUserSelectorTable, which can also be used as
|
|
a standalone view for AJAX operations.
|
|
|
|
2006-10-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
-vCard]): change reverted.
|
|
|
|
* UI/Contacts/UIxContactEditor.m: check whether the client contact
|
|
folder has selector "globallyUniqueObjectId" before calling that
|
|
method.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
-vCard]): the "setVClass" NGVCard method really is "setClass"
|
|
instead.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder -_searchAttributes]): fixed typo to
|
|
request the "streetAddress" instead of the "streetaddress".
|
|
([SOGoContactLDAPFolder -_qualifierForFilter:filter]): lookup
|
|
mails that *contain*, and not just *start with* the search
|
|
pattern.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
-vCard]): mark address returned from LDAP as the work address.
|
|
|
|
* UI/Templates/SchedulerUI/UIxCalInlineAptView.wox: made the whole
|
|
span covered with the anchor, not only the textual information
|
|
within.
|
|
|
|
* UI/Templates/SchedulerUI/UIxCalMainView.wox: specify the type
|
|
argument (event or task) to newEvent in the appointmentListMenu.
|
|
Make the appointmentsListView display the appointmentsListMenu.
|
|
|
|
* UI/SOGoUI/SOGoAptFormatter.m: enlarge the text size limit from
|
|
12 to 50 before displaying "...".
|
|
([SOGoAptFormatter -fullDetailsForApt::]): display location only
|
|
if its length > 0, whether location itself is nil or not...
|
|
([SOGoAptFormatter -tooltipForApt::_refDate]): display information
|
|
of which the length > 0.
|
|
|
|
2006-10-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js: correctly handles
|
|
french and ISO dates.
|
|
|
|
* UI/Scheduler/UIxFreeBusyUserSelector.[hm]: added code an ivars
|
|
from UIxContactSelector to handle contact lists (current and
|
|
additional contacts).
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage
|
|
-_freeBusyAsText]): added handling of an "additional"-named query
|
|
parameter that describe the number of additional days after
|
|
enddate that should be returned.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-_responseForResults:results]): give priority to results with
|
|
"c_uid" fields. If none returned, use the first contact received.
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
|
|
-extractQuickFieldsFromEvent:_event]): changed "TENTATIVE" code to
|
|
2 and "CANCELLED" to 0.
|
|
|
|
2006-10-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js: handle conversion
|
|
of start and end dates to short string dates.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage
|
|
-readFreeBusyAction]): new method that returns an array of numbers
|
|
corresponding to the state in the freebusy of each "quarter of an
|
|
hour" between the "sday" and "eday" date parameters passed in the
|
|
url. This permits to handle the display of the freebusy with Ajax
|
|
mechanisms.
|
|
([SOGoUserHomePage -_freeBusyAsText]): add 2 days to the end date
|
|
since the free busy displays 2 days ahead.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-contactSearchAction]): new action that returns the uid and the
|
|
username + email of the user whose name contain the value of the
|
|
"search" url parameter.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFreebusyInfosFrom:_startDateto:_endDate]): added fields
|
|
useful for the computing of the status of the freebusy.
|
|
|
|
* UI/Scheduler/UIxFreeBusyUserSelector.m ([UIxFreeBusyUserSelector
|
|
-init]): new component that incarnates a user selector for events
|
|
inspired by the new one found in Thunderbird Lightning.
|
|
|
|
2006-10-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js: added code to enable or
|
|
disable anchor visually (following our internal algorithm).
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor -init]):
|
|
added new "url" ivar with its classic accessors.
|
|
([UIxComponentEditor -urlButtonClasses]): new method that returns
|
|
the class strings for the url button on the appointment/task
|
|
editor (depending on the validity of the url).
|
|
|
|
* UI/Templates/SchedulerUI/UIxTaskEditor.wox,
|
|
UI/Templates/SchedulerUI/UIxAppointmentEditor.wox: start rewriting
|
|
the template to match the Lightning's new task/appointment editor.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor -saveValuesIntoAppointment:_appointment]): initialize url from the components'url.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -saveValuesIntoTask:_task]): initialize url from the components'url.
|
|
|
|
2006-10-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder
|
|
-lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]): perform the searchs on objects which start with instead of contain the lookup key.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailNotification.[hm]: work on
|
|
iCalEntityObject instances instead of just iCalEvent's.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): set ownership of returned records by adding an "owner" key to the resulting dictionaries.
|
|
|
|
* SoObjects/SOGo/NSObject+Owner.[hm]: removed module since it's a
|
|
bad way of handling ownership that way.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder -_qualifierForFilter:filter]): search also
|
|
on "cn", just like Mozilla.
|
|
|
|
2006-10-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailToSelection.m ([UIxMailToSelection -to]):
|
|
"to" should be retained, otherwise it will be autoreleased and a
|
|
crash will occur.
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor
|
|
-writeAction]): updated method to fetch the card before initing
|
|
the snapshot.
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
|
|
-extractQuickFieldsFromTodo:_task]): fixed to use NSNull instead
|
|
of NSNotFound.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor
|
|
-iCalStringTemplate]): start and due date are now optional.
|
|
|
|
* UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl
|
|
-setDayStartHour:aStartHour]): added a new "isDisabled" ivar with
|
|
appropriate accessors to be settable through the templates.
|
|
|
|
* UI/Scheduler/UIxDatePicker.m ([UIxDatePicker -init]): added a
|
|
new "isDisabled" ivar with appropriate accessors to be
|
|
settable through the templates.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-availableCalendars]): new method that list the calendars to which
|
|
the user has subscribed.
|
|
([UIxComponentEditor -componentOwner]): returns the owner of the
|
|
editted object.
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
|
|
-extractQuickFieldsFromTodo:_task]): set the start and enddate of
|
|
quickentries to null whenever each or all of them are null, by
|
|
providing an impossible timestamp from with NSNotFound as value.
|
|
|
|
2006-10-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js: update the algorithm
|
|
that handles the creation of new fields with the new APIs and the
|
|
new node structure on the page.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m,
|
|
UI/Scheduler/UIxTaskEditor.m:
|
|
refactored to user UIxComponentEditor as parent class.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.[hm]: new class module
|
|
containing the methods common to the UIxTaskEditor and the
|
|
UIxAppointmentEditor.
|
|
|
|
2006-10-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -doCalendarQuery:context]): now supports
|
|
the handling of time-ranges.
|
|
|
|
* UI/WebServerResources/ContactsUI.js: specify a notification type as
|
|
parameters when onConfirmContactSelection in invoked.
|
|
|
|
* UI/WebServerResources/generic.js: specify a notification type as
|
|
parameters when onContactRemove in invoked.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: when the user deselects
|
|
all calendars, select his entry.
|
|
|
|
2006-10-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: edit and delete events
|
|
with their owner-relative urls. Generate a correct entry in the
|
|
css color table when a user is added to the calendars list. Put
|
|
the same color next to the user id.
|
|
|
|
* UI/WebServerResources/generic.js: implemented some new helper
|
|
methods.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -deleteEntriesWithIds:ids]): don't delete
|
|
entries if their owner is not the current user.
|
|
|
|
* UI/Scheduler/UIxCalInlineAptView.m ([UIxCalInlineAptView
|
|
-displayClasses]): return the correct class for the current event
|
|
representation depending on its owner.
|
|
|
|
* UI/Scheduler/UIxCalCalendarsListView.m: added method to create
|
|
and associate a color for each user login depending on its
|
|
position in the list.
|
|
|
|
* UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView
|
|
-currentRowCSSClass]): return the correct class for the current
|
|
row depending on the owner of the event.
|
|
|
|
* UI/Contacts/UIxContactSelector.m ([UIxContactSelector
|
|
-setColors:colors]): new method to associate a color table with
|
|
each user in the list.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): associate each returned record with the owner of the table they are retrieved from.
|
|
|
|
* SoObjects/SOGo/NSObject+Owner.[hm]: new extension module to
|
|
NSObject to associate an instance with a user.
|
|
|
|
2006-10-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: added handling of multiple
|
|
calendars.
|
|
|
|
* UI/WebServerResources/ContactsUI.js: added handling of
|
|
notification of changes to contact selectors.
|
|
|
|
* UI/WebServerResources/generic.js: added handling of notification
|
|
of changes to contact selectors.
|
|
|
|
* UI/Scheduler/UIxCalMainView.m ([UIxCalMainView
|
|
-updateCalendarsAction]): proxy method to update the user
|
|
preference table with the new selected calendar uids.
|
|
|
|
* UI/Contacts/UIxContactsListView.m ([UIxContactsListView
|
|
-calendarsContactsAction]): new method.
|
|
|
|
* UI/Contacts/UIxContactSelector.m ([UIxContactSelector -setCheckedBoxes:boxes])
|
|
([UIxContactSelector -setHasCheckBoxes:aBool])
|
|
([UIxContactSelector -isCheckBoxChecked]): new accessors method to
|
|
permit the drawing of checkboxes instead of card icons.
|
|
|
|
* UI/Scheduler/UIxCalCalendarsListView.m: new component class that
|
|
wrap a selector the the "Calendars" tab.
|
|
|
|
* UI/Contacts/UIxContactsCalendarsSelection.m: buttons for the
|
|
new user calendar selector.
|
|
|
|
2006-10-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Templates/SchedulerUI/UIxAppointmentEditor.wox: time ranges
|
|
may cover hour 0 to hour 23.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-iCalStringFromQueryParameter:format:]): dates explicitly set to
|
|
utc tz.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: manage both lists of
|
|
objects wrt to the toolbar actions.
|
|
|
|
* UI/WebServerResources/generic.js: added code to the "String"
|
|
class to decode number-encoded char entities.
|
|
|
|
* UI/Scheduler/UIxCalMainView.m ([UIxCalMainView
|
|
-batchDeleteAction]): new method to delete selected entries in the
|
|
lists.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -deleteEntriesWithIds:ids]): new method
|
|
that delete identified entries in batch.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent
|
|
-jsCloseWithRefreshMethod:methodName]): new method with explicit purpose.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -saveAction]),
|
|
UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-saveAction]), UI/MailerUI/UIxMailEditor.m ([UIxMailEditor
|
|
-sendAction]), UI/Contacts/UIxContactEditor.m ([UIxContactEditor
|
|
-saveAction]):
|
|
return a UIxJSClose component if everything went fine.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.h: interface extracted from
|
|
UIxTaskEditor.m.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.h: interface extracted from
|
|
UIxAppointmentEditor.m.
|
|
|
|
* UI/Common/UIxJSClose.[hm]: new UIxComponent designed to display
|
|
a very light page with javascript code to close a window, by
|
|
calling a method on the opener if specified. This component is
|
|
designed to work as a response to form postings.
|
|
|
|
2006-10-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoTaskObject.[hm]: clone of
|
|
SOGoAppointmentObject adapted for the handling of tasks.
|
|
|
|
* SoObjects/Appointments/NSArray+Appointments.[hm]: category
|
|
extracted from SOGoAppointmentObject.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-saveUrl]): returns the url needed to POST the new form to.
|
|
redirect the user to <aptid>/editAsAppointment instead of /edit,
|
|
so that SOGoAppointmentFolder can return the correct object type.
|
|
|
|
* SoObjects/SOGo/NSObject+AptComparison.m ([NSObject
|
|
-compareAptsAscending:_other]): accept empty start or end dates.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): added a "component" parameter to match the query against the specified component types. Made startDate and endDate optional by ignoring them altogether in the query whenever one of them is nil.
|
|
([SOGoAppointmentFolder -doCalendarQuery:context]): fetch
|
|
components of type "vtodo" as well as "vevent".
|
|
([SOGoAppointmentFolder -lookupName:inContext:acquire:]): if the
|
|
url specified ends with AsTask or AsAppointment, returns the
|
|
an object of the appropriate class, otherwise deduce it from its
|
|
content if the HTTP method is "PUT", otherwise read its type from
|
|
the quick table.
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
|
|
-extractQuickFieldsFromTodo:_task]): extract quick fields from
|
|
tasks.
|
|
|
|
* UI/Scheduler/UIxCalView.m ([UIxCalView
|
|
-fetchCoreAppointmentsInfos]): replacement methods for
|
|
fetchCoreInfos but by retrieving object with component "vevent".
|
|
([UIxCalView -fetchCoreTasksInfos]): same as above for "vtodo"
|
|
components.
|
|
|
|
* UI/Scheduler/UIxCalTasksListView.[hm]: clone of
|
|
UIxCalAptListView adapted for the handling of tasks.
|
|
|
|
* UI/Scheduler/UIxTaskProposal.[hm],
|
|
UI/Scheduler/UIxTaskView.[hm], UI/Scheduler/UIxTaskEditor.[hm]:
|
|
clones of the UIxAppointment* classes for the handling of tasks.
|
|
|
|
* UI/WebServerResources/UIxTaskEditor.js: clone of
|
|
UIxAppointmentEditor adapted for the handling of tasks.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: added support for tasks.
|
|
Scroll the daily view to the appropriate hour when an appointment
|
|
is selected in the appointments list.
|
|
|
|
2006-10-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl
|
|
-setDayStartHour:aStartHour]): specifies the user timezone on the
|
|
given date.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m: indicate DTSTAMP with "GMT"
|
|
as timezone.
|
|
|
|
* SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate -adjustedDate])
|
|
([NSCalendarDate -driftedDate]): methods made useless by a better
|
|
comprehension of the NSTimeZone API...
|
|
|
|
2006-10-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -selectedDate]): call
|
|
new methods from the NSCalendarDate methods.
|
|
|
|
* SoObjects/SOGo/NSCalendarDate+SOGo.m: module replacing and
|
|
extending UI/Scheduler/NSCalendarDate+Scheduler.m.
|
|
([NSCalendarDate
|
|
+dateFromShortDateString:dateStringandShortTimeString:timeStringinTimeZone:timeZone]): new method that generates a date from two short string formatted as follow: "yyyymmdd" and "hhmm". Thismethod replaces a similar method from UIxComponent (noted below).
|
|
([NSCalendarDate -adjustedDate]): this method returns another
|
|
instance set to the correct hour after the original date was set
|
|
from a non-GMT timezone. This date can be used for storage.
|
|
([NSCalendarDate -driftedDate]): this method does exactly the
|
|
opposite of -adjutedDate, that is, it enables the method
|
|
hourOfDay, minuteOfHour etc... to return the values according to
|
|
the original date's timezone. This date CANNOT be used for storage.
|
|
|
|
* UI/Scheduler/NSCalendarDate+Scheduler.m ([NSCalendarDate
|
|
-shortDateString]): new method that will return a "short date
|
|
string" (yyyymmdd) from a calendar date object.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent
|
|
-_cDateFromShortDateString:dateStringandShortTimeString:timeString]): new method to compute the selected date from the "day" and "hm" query parameters (if found). This method replaces the old algorithm that was found in the "selectedDate" method.
|
|
|
|
* Main/sogod.m (main): initialize the NSTimeZone's defaultTimeZone
|
|
to the value of SOGoServerTimeZone or "Canada/Eastern" if not found.
|
|
|
|
2006-10-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: added code to scroll the
|
|
view of the day at the height of hour 8:00.
|
|
|
|
* UI/Scheduler/UIxCalView.m ([UIxCalView -dayStartHour]): returns 0.
|
|
([UIxCalView -dayEndHour]): returns 24.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView -defaultAction])
|
|
([UIxContactFoldersView -newAction]): invoke
|
|
_selectActionForApplication: on self with the proper attribute too.
|
|
|
|
* UI/Contacts/UIxContactsSelectionViewContainer.m: removed since
|
|
we now use the action mechanism in UIxContactsListView to keep the
|
|
same view for the contact selectors and the regular contact view.
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.[hm]: replaces
|
|
UIxContactsListViewContainerBase.[hm]
|
|
|
|
* UI/Contacts/UIxContactsListView.[hm]: replaces UIxContactsListViewBase.[hm]
|
|
|
|
* UI/WebServerResources/generic.js: generalized emailstring
|
|
handling functions. Generalized address book access functions.
|
|
|
|
* UI/Contacts/UIxContactsListViewBase.m ([UIxContactsListViewBase
|
|
-isPopup]): return YES if the "popup" query parameter is set.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-defaultAction]): keep the url parameters when redirecting.
|
|
([UIxContactFoldersView -selectForSchedulerAction])
|
|
([UIxContactFoldersView -selectForMailerAction]): new action
|
|
methods for the /scheduler-contacts and /mailer-contacts invocations.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m: compose the action url using the
|
|
newly available NSString+URL category.
|
|
|
|
* SoObjects/SOGo/NSDictionary+URL.m ([NSDictionary
|
|
-asURLParameters]): handle dictionary entries which could be
|
|
instances of NSArray rather than NSString.
|
|
|
|
* SoObjects/SOGo/NSString+URL.m ([NSString
|
|
-composeURLWithAction:actionparameters:urlParametersandHash:useHash]): when composing the url, remove the encoded parameters first since they will be added later.
|
|
([NSString -urlWithoutParameters]): new method that returns the
|
|
url without its parameters.
|
|
|
|
* SoObjects/SOGo/NSString+iCal.h: deleted obsolete file.
|
|
|
|
* SoObjects/SOGo/NSDictionary+URL.[hm],
|
|
UI/SOGoUI/NSString+URL.[hm]: moved from UI/SOGoUI/.
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js: add support for
|
|
additions of different types (to, cc, bcc) of recipients from the
|
|
address book.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -doctype]): added the
|
|
"<?xml..." header.
|
|
|
|
* UI/Contacts/UIxContactsMailerSelection.m,
|
|
UI/Contacts/UIxContactsSchedulerSelection.m: classes replacing
|
|
UI/Contacts/UIxContactsSelectionView.m to provide a different set
|
|
of widgets depending on the application invoking the contact list.
|
|
|
|
2006-09-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js: hide the current contact
|
|
whenever the user changes of contact folder.
|
|
|
|
* UI/WebServerResources/UIxContactEditor.js: the contact UID is
|
|
now provided by the template when loading the page.
|
|
|
|
* SoObjects/SOGo/AgenorUserManager.m ([AgenorUserManager
|
|
-iCalPersonWithUid:uid]): new method taken from removed module
|
|
'iCalPerson+UIx';
|
|
|
|
2006-09-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxAppointmentView.m ([UIxAppointmentView
|
|
-categoriesAsString]): same as below.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m: adapted by using the new
|
|
vcalendar API's iCalEvent instead of the removed SOGoAppointment.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -calendarFromContent:cnt]): new helper method.
|
|
([SOGoAppointmentObject -firstEventFromCalendar:calendar]): new
|
|
helper method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -doCalendarQuery:context]): added a
|
|
hackish test to detect whether the request concernes VEVENT's or
|
|
anything else. Return events only in the former case.
|
|
([SOGoAppointmentFolder
|
|
-fetchOverviewInfosFrom:_startDateto:_endDate]): retrieve the
|
|
c_name quickfield so that the calendar list can identify the
|
|
appointments with their complete "filename".
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m: use CardGroup's
|
|
groupsOfClass:fromSource: to parse the given vcalendar.
|
|
|
|
* UI/Scheduler/iCalRecurrenceRule+SOGo.m: removed obsolete class.
|
|
|
|
* UI/Scheduler/SOGoAppointment+UIx.h: removed obsolete class.
|
|
|
|
* SoObjects/SOGo/SOGoAppointmentICalRenderer.[hm]: removed
|
|
obsolete class.
|
|
|
|
* SoObjects/SOGo/SOGoAppointment.[hm]: removed obsolete class.
|
|
|
|
2006-09-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -lookupName:inContext:acquire:]): be
|
|
sensitive to the CalDAV method names.
|
|
([SOGoAppointmentFolder -doCalendarQuery:context]): method for the
|
|
"calendar-query" CalDAV method name.
|
|
|
|
* UI/WebServerResources/ContactsUI.js: removed a lot of useless
|
|
code coming originally from MailerUI.js.
|
|
|
|
* UI/WebServerResources/UIxContactEditor.js: imitate the
|
|
Thunderbird address book by completing the display name with the
|
|
content of the first and last name fields, until the display name
|
|
is modified manually.
|
|
|
|
* UI/WebServerResources/generic.js: added a "trim" method to the
|
|
String class.
|
|
|
|
* UI/Contacts/UIxContactsListViewBase.m ([UIxContactsListViewBase
|
|
-displayName]): new method that returns the display name from "cn"
|
|
or from the "displayName" key if found.
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor
|
|
-initSnapshot]): check if "[card n]" returns anything to avoid a
|
|
crash.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -doctype]): new method
|
|
that returns an unparsed doctype definition for the pages.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
-vCard]): set the card's fn to attribute "displayName" if found
|
|
before "cn".
|
|
|
|
2006-09-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
-vCard]): handle the "streetAddress" and "l" fields.
|
|
|
|
* UI/Templates/MailerUI/UIxMailEditor.wox: arranged the message
|
|
header fields by converting the tables to DIVs and SPANs.
|
|
|
|
* UI/WebServerResources/generic.css: attempted unification of font
|
|
families and size across all the elements. changed the
|
|
logConsole's "position" from "fixed" to "absolute" to avoid
|
|
performance issues.
|
|
|
|
2006-09-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js (uixDeleteSelectedContacts):
|
|
empty the contact view when the current contact is being deleted.
|
|
|
|
* UI/WebServerResources/MailerUI.js (newContactFromEmail): fully
|
|
parse the email field and provide the address full name if found
|
|
as the "contactFN" parameter.
|
|
|
|
* UI/WebServerResources/generic.js (openMailTo): do not give a
|
|
name to the opened window so that serveral ones can be opened at
|
|
the same time.
|
|
|
|
* UI/MailPartViewers/UIxMailPartTextViewer.m
|
|
([UIxMailPartTextViewer -flatContentAsString]): override method by
|
|
replacing carriage returns with "<br />" in the result string from
|
|
super's implementation.
|
|
|
|
* UI/Contacts/UIxContactView.m ([UIxContactView
|
|
-_urlOfType:aType]): don't manage non-mailto urls through
|
|
javascript, let the user decide what's best for him.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-newAction]): transfer all the query parameters by using the
|
|
"asURLParameters"'s result string from [self queryParameters].
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor
|
|
-initSnapshot]): retrieve "contactEmail" and "contactFN" from the
|
|
query parameters and put their values (if any) into the snapshot.
|
|
|
|
* UI/Contacts/UIxContactView.m ([UIxContactView -note]): convert
|
|
carriage-returns to "<br />".
|
|
([UIxContactView -workCompany]): explicitly initialize company to
|
|
nil if org is nil or empty.
|
|
|
|
* UI/WebServerResources/UIxContactEditor.js: updated validation
|
|
code after we added and renamed some fields.
|
|
|
|
* UI/WebServerResources/ContactsUI.js: added code to cache contact
|
|
cards and to handle card updates.
|
|
|
|
2006-09-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactView.m ([UIxContactView -hasOtherInfos]):
|
|
test the length of the returned string since they will never be
|
|
nil.
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor -saveAction]):
|
|
return self if the process went successful, returns an exception
|
|
otherwise (and only otherwise...).
|
|
|
|
* OGoContentStore/OCSContactFieldExtractor.m
|
|
([OCSContactFieldExtractor -extractQuickFieldsFromVCard:_vCard]):
|
|
adapted method to the new VCard api. Since the cards are stored in
|
|
vcard format, we no longer deal with a dictionary but with a
|
|
NGVCard object...
|
|
|
|
2006-09-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactView.m ([UIxContactView -preferredEmail]):
|
|
return a string with a "mailto" url.
|
|
([UIxContactView -_urlOfType:aType]): generic method to return a
|
|
url string with a html anchor pointing to it.
|
|
|
|
* UI/Contacts/UIxContactEditor.[hm]: UIxContactEditorBase renamed
|
|
since subclass "UIxContactEditor" did nothing. Implemented code to
|
|
display and modify the values parsed from the vcards, displayed in
|
|
a way similar to the Thunderbird addressbook.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
-save]): new dummy method.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry
|
|
-save]): made method void.
|
|
|
|
2006-09-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactView.m: added many wrapper methods to
|
|
display blocks of data à la Thunderbird Addressbook. If data is
|
|
available, those wrappers (around the NGVCard methods) will
|
|
enclose the results in a proper HTML output with the correct label
|
|
(if present), otherwise it will return an empty string.
|
|
([UIxContactView -vcardAction]): new action to return the contact
|
|
as text/vcard (for exporting).
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
+contactEntryWithName:aNamewithLDAPEntry:anEntryinContainer:aContainer]): adapted the mapping of the LDIF data with the new NGVCard API.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry
|
|
-vCard]): create a new NGVCard instance when no data is available
|
|
and retain it.
|
|
([SOGoContactGCSEntry -save]): save the vCard using the new
|
|
"versitString" API method/message.
|
|
|
|
* UI/Contacts/UIxContactView.h: separated interface from
|
|
UIxContactView.m.
|
|
|
|
* UI/WebServerResources/ContactsUI.js: add-ed code to download card
|
|
views and display them beneath the list.
|
|
|
|
2006-09-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -userTimeZone]): retain
|
|
the timezone even when it's the server timezone.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-privateContacts:inContext:]): no long configure the calendar
|
|
object with the user's timezone since it's now accessible
|
|
application-wide throught the SOGoObject methods.
|
|
|
|
* UI/SOGoUI/UIxComponent.[hm]: removed the "viewTimeZone" ivar and
|
|
method. Removed the "backendTimeZone" method.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.[hm]: made a subclass of UIxComponent
|
|
instead of SoComponent.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m:
|
|
([SOGoAppointmentObject -viewTimeZoneForPerson:_person]): returns
|
|
[self serverTimeZone] instead of "EST" (which was removed).
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.[hm]: removed the
|
|
"timeZone" ivar and its accessors.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -serverTimeZone]): new
|
|
centralized method returing the timezone configured in the
|
|
userdefaults db or "Canada/Eastern" if missing.
|
|
([SOGoObject -userTimeZone]): new centralized method returing the
|
|
timezone of the current user or the server timezone if missing
|
|
from the user configuration table.
|
|
|
|
2006-09-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: implemented caching of
|
|
date selectors.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -userFolderPath]):
|
|
return a path based on the object's context instead of the first
|
|
level in SOGo's object hierarchy...
|
|
|
|
2006-09-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Templates/SchedulerUI/UIxCalDayTable.wox: day columns can now
|
|
be clicked.
|
|
|
|
* UI/Templates/SchedulerUI/UIxCalDateSelector.wox: pass the user's
|
|
timezone ([self viewTimeZone]) to the WEMonthOverview component to
|
|
avoid a confusion with the days.
|
|
|
|
* UI/Templates/SchedulerUI/UIxCalInlineAptView.wox: appointments
|
|
can now be clicked.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: implemented a mechanism to
|
|
imitate Sunbird's synchronization between the 3 visible views.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -selectedDate]): make
|
|
sure the numbers in dateString are formatted so as to take 4 chars
|
|
for the year and 2 for the day and the month, otherwise
|
|
NSCalendarDate will return a nil date.
|
|
([UIxComponent -applicationPath]): return a path based on the
|
|
object's context instead of the second level in SOGo's object
|
|
hierarchy...
|
|
|
|
2006-09-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -selectedDate]): add the
|
|
user's timezone abbreviation to the date string passed as parameter to
|
|
NSCalendarDate to generate an accurate date instance. Do the same
|
|
when no date is specified and today is chosen.
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js: convert the
|
|
form's time values to integers before comparing them.
|
|
|
|
* UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView -currentStartTime])
|
|
([UIxCalAptListView -currentEndTime]): initialize the resulting
|
|
dates timezone with [self viewTimeZone].
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -init]): new
|
|
"viewTimeZone" ivar destined to hold an instance of the user's
|
|
timezone in memory.
|
|
([UIxComponent -viewTimeZone]): take the timezone from the user's
|
|
prefs.
|
|
|
|
2006-08-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Templates/SchedulerUI/UIxAppointmentEditor.wox: completely
|
|
rearranged the layout.
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js: added code to
|
|
manage showing and hiding appointment details.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-privateContacts:inContext:]): init the SOGoAppointmentFolder's
|
|
timezone by taking the current user's timezone setting.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailNotification.m: same as below.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -changeParticipationStatus:inContext:]):
|
|
set default timezone to EST, although this code should be
|
|
rewritten to handle a system and a user default value.
|
|
|
|
* UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl
|
|
-takeValuesFromRequest:_rqinContext:_ctx]): enhanced method to
|
|
take the values from the hour and minute INPUTs when data is
|
|
POSTed since we no longer use the UIxTimeSelector component.
|
|
([UIxTimeDateControl -selectableHours])
|
|
([UIxTimeDateControl -selectableMinutes]): new methods used by the
|
|
template SELECTs to display reasonable and acceptable values
|
|
instead of all the possibilities.
|
|
|
|
* UI/WebServerResources/generic.js: adapted code for the new
|
|
implementation of the UIxContactSelector component (added a
|
|
"remove" button, removed the previous INPUT and replaced them with
|
|
links of class "button").
|
|
|
|
* UI/Scheduler/UIxTimeDateControl.h: separated interface from
|
|
UIxTimeDateControl.m.
|
|
|
|
* UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable -currentAppointmentDay])
|
|
([UIxCalDayTable -currentAppointmentHour]): new methods that
|
|
returns correctly formatted values used as attributes for JS code.
|
|
|
|
* UI/Contacts/UIxContactSelector.m ([UIxContactSelector
|
|
-initialContactsAsString]): renamed implementation of
|
|
initialParticipants.
|
|
([UIxContactSelector -currentContactId])
|
|
([UIxContactSelector -currentContactName]): new methods used when
|
|
listing the initial contacts in the widget. Currently, both return
|
|
the person's cn but the latter should ultimately return a user
|
|
fullname.
|
|
|
|
* UI/Contacts/UIxContactSelector.h: separated interface from
|
|
UIxContactSelector.m.
|
|
|
|
* UI/Scheduler/UIxDatePickerScript.[hm]: component removed since
|
|
all javascript code is now put in Scheduler.js/generic.js.
|
|
|
|
* UI/Scheduler/NSCalendarDate+UIx.[hm]: category removed, code
|
|
moved into NSCalendarDate+Scheduler instead.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -setTimeZone:newTZ]): new method to
|
|
configure the timezone from SOGoUserFolder when the instance is
|
|
being created.
|
|
([SOGoAppointmentFolder -viewTimeZone]): MET was removed. Returns
|
|
the value of the new "timezone" ivar.
|
|
|
|
2006-08-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.{css,js}: added a tabview with
|
|
the date selector in the first page and the container of the
|
|
future calendar selector in the second page.
|
|
|
|
* UI/WebServerResources/generic.js: added code for handling tabbed
|
|
views.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -productFrameworkName]):
|
|
returns the bundle name associated to the current running product.
|
|
|
|
2006-08-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js: fixed the AJAX
|
|
exception by invoking a timeout on the opener rather than invoking
|
|
the list refresh method.
|
|
|
|
* UI/Scheduler/UIxCalDayView.m ([UIxCalDayView -labelForDay]):
|
|
removed method.
|
|
|
|
* UI/Scheduler/UIxCalWeekView.m ([UIxCalWeekView -weekBeforePrevWeekQueryParameters])
|
|
([UIxCalWeekView -prevWeekQueryParameters])
|
|
([UIxCalWeekView -nextWeekQueryParameters])
|
|
([UIxCalWeekView -weekAfterNextWeekQueryParameters]): new methods
|
|
that return the dates relatively to the current day.
|
|
([UIxCalWeekView -lastWeekName])
|
|
([UIxCalWeekView -currentWeekName])
|
|
([UIxCalWeekView -nextWeekName])
|
|
([UIxCalWeekView -weekAfterNextWeekName])
|
|
([UIxCalWeekView -_weekNumberWithOffsetFromToday:offset]): new
|
|
methods that returns the label for the corresponding weeks.
|
|
|
|
* UI/Scheduler/UIxCalDayTable.[hm]: new class module/component
|
|
used by UIxCalDayView and UIxCalWeekView to display the events
|
|
occuring in one or more days.
|
|
|
|
2006-08-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMainView.m: extended class to populate the
|
|
entries in the new "monthMenu" and "yearMenu".
|
|
|
|
* UI/Scheduler/UIxCalDayView.m ([UIxCalDayView -labelForDay]): new
|
|
method to return the current day as a string formatted depending
|
|
on the current locale.
|
|
|
|
* UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView -startDate])
|
|
([UIxCalAptListView -endDate]): "today" is now the default filter
|
|
for displayed events.
|
|
([UIxCalAptListView -currentSerialDay]): new method returning the
|
|
date of the current enumerated appointment in serial form
|
|
(yyyymmdd).
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: added code to select the
|
|
relevant day when an appointment is selected. Added code to popup
|
|
a month and a year menu whenever the header entries are clicked in
|
|
the calendar widget.
|
|
|
|
* UI/WebServerResources/generic.js: made addClassName and
|
|
removeClassName methods of HTMLElement.
|
|
|
|
2006-08-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js: fixed the contact creation
|
|
from email addresses.
|
|
|
|
* UI/WebServerResources/generic.js: centralized the search-related
|
|
functions here since the same code was used across the 3
|
|
applications.
|
|
|
|
* UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView -startDate])
|
|
([UIxCalAptListView -endDate]): return the required dates needed
|
|
depending on the value given to the "filterpopup" url parameter.
|
|
|
|
* UI/Common/UIxToolbar.m ([UIxToolbar -buttonLabel]): reduced the
|
|
code by invoking UIxComponent's labelForKey:.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -labelForKey:]): use
|
|
[self pageResourceManager] instead of [self resourceManager].
|
|
|
|
* UI/Contacts/UIxContactEditorBase.m: invokes
|
|
globallyUniqueObjectId on the clientobject's class instead of the
|
|
hardcoded "SOGoFolder".
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-newAction]): redirect the "new" action to the personal (default)
|
|
contact folder.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
+objectWithName:inContainer:]): new constructor.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-lookupContactWithId:recordId]): always create a contact object,
|
|
even if it does not exist.
|
|
|
|
2006-08-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMainView.[hm]: new class to serve as a pseudo
|
|
component that lays out the different components of SOGoCalendar.
|
|
Only serves as an Objective-C counterpart to its xml template.
|
|
|
|
* UI/Scheduler/UIxCalInlineMonthOverview.h: interface extracted
|
|
from its .m file.
|
|
|
|
* UI/Scheduler/UIxCalFilterPanel.[hm]: new class designed to
|
|
display a widget to handle the information displayed in the
|
|
appointments list. Not currently used, lacks implementation.
|
|
|
|
* UI/Scheduler/UIxCalDateSelector.[hm]: new class designed to
|
|
display a calendar as a dynamic widget from where one can select
|
|
the current visible day.
|
|
|
|
* UI/Scheduler/NSCalendarDate+Scheduler.[hm]: category code
|
|
extracted from UIxCalInlineMonthOverview.m.
|
|
|
|
* UI/Scheduler/UIxDatePicker.m: removed the jsPopup, jsCode and
|
|
calendarPageURL methods. The javascript code is handled by .js
|
|
files as much as possible...
|
|
|
|
* UI/WebServerResources/ContactsUI.js,
|
|
UI/WebServerResources/MailerUI.js: adapted to the code refactoring
|
|
in generic.js.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: implemented functions to
|
|
handle the new widgets. XmlHTTPRequest code taken from
|
|
MailerUI.js.
|
|
|
|
* UI/WebServerResources/generic.js: put some functions related to
|
|
element selections as methods to HTMLElement and HTMLTableElement.
|
|
|
|
* UI/Scheduler/UIxCalAptListView.[hm]: new class designed to
|
|
display the list of appointments (embodies the code-size of
|
|
UIxCalAptListView; answers to the "aptlist" method).
|
|
|
|
2006-08-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalWeekOverview.m ([UIxCalWeekOverview
|
|
-correctURLAction]): new short action method replacing the method
|
|
below by taking far less code.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -GETAction:]): removed method. Replaced
|
|
with an action in the view-related code.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m: invoke
|
|
"stringByEscapingHTMLString" on the resulting value to avoid
|
|
issues with accented characters.
|
|
([-jsCode]): removed method since the javascript code was merged
|
|
into SchedulerUI.js.
|
|
|
|
2006-08-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/iCalPerson+UIx.m ([iCalPerson +personWithUid:]):
|
|
new class method that returns an iCalPerson based on the UID given
|
|
as param.
|
|
|
|
* UI/Contacts/UIxContactsListViewContainerBase.m:
|
|
UIxContactsListViewContainer renamed to serve as a base class for
|
|
the contact lists in both the contact editor and the contact
|
|
selectors.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder
|
|
-LDAPSetHostname:setPort:setBindDN:setBindPW:setContactIdentifier:
|
|
setUserIdentifier:setRootDN:]): an LDAP field specifying the
|
|
loginname of the users can now be specified.
|
|
|
|
* UI/WebServerResources/generic.js: added code to manage contact
|
|
lists through the new implementation of the UIxContactSelector.
|
|
|
|
* UI/Templates: put the templates related to SchedulerUI in its
|
|
own directory.
|
|
|
|
* SoObjects/Contacts/NGLdapEntry+Contact.m ([NGLdapEntry
|
|
-asDictionaryWithAttributeNames:withUID:andCName:cName]): add an
|
|
entry for "uid" with the field name representing the login name of
|
|
the user in the corresponding LDAP branch.
|
|
|
|
2006-08-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-lookupName:_keyinContext:_ctxacquire:_flag]): when the HTTP
|
|
request is a PUT, always create an entry, even if we're not sure
|
|
it does exist.
|
|
|
|
2006-08-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js: implemented live-search.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
|
|
-appendSystemSourcesInContext:context]): populated method with
|
|
code that creates entries mapped to instances SOGoContactFolder,
|
|
based on the configuration found in the NSUserDefaults under the
|
|
key "SOGoLDAPAddressBooks".
|
|
([SOGoContactFolders
|
|
-lookupName:nameinContext:contextacquire:acquire]):
|
|
"contactsources" do not exist anymore, SOGoContactFolder was split
|
|
into two classes: SOGoContactGCSFolder and SOGoContactLDAPFolder
|
|
and one protocol: SOGOContactFolder, instead.
|
|
([SOGoContactFolders -contactFolders]): new accessor used by the
|
|
views of SOGoContactXXXFolder to list the possible sources.
|
|
|
|
* SoObjects/Contacts/SOGoContactObject.h: new protocol that
|
|
defines the methods that UIxContactsView, ..Editor and so on...
|
|
can expect.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolder.h: new protocol that
|
|
defines the methods that UIxContactsListViewBase expects as well
|
|
as the data fields returned in the contact lists.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.[hm]: new class that
|
|
returns entries an LDAP server. Conforms to the new
|
|
SOGOContactFolder protocol.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.[hm]: new class that
|
|
returns a vCard based on contact entries from an LDAP server.
|
|
Conforms to the new SOGOContactObject protocol.
|
|
|
|
* SoObjects/Contacts/NGVCardSimpleValue+Contact.m
|
|
([NGVCardSimpleValue -vCardEntryString]): generates the correct
|
|
entry for the textual representation of the vCard.
|
|
|
|
* SoObjects/Contacts/NGVCardSimpleValue+Contact.[hm]: new class
|
|
extension.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSEntry.[hm]: new module name of
|
|
"SOGoContactObject".
|
|
|
|
* SoObjects/Contacts/NGVCard+Contact.m ([NGVCard -asString]): new
|
|
method that generates a textual representation of the vcard.
|
|
|
|
* SoObjects/Contacts/NGVCard+Contact.[hm]: new class extension.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.[hm]: new module name of
|
|
"SOGoContactFolder".
|
|
|
|
* SoObjects/Contacts/SOGoContactSource.h,
|
|
SoObjects/Contacts/SOGoPersonalAB.[hm]: unused classes and
|
|
protocols.
|
|
|
|
* SoObjects/Contacts/NGLdapEntry+Contact.m ([NGLdapEntry
|
|
-singleAttributeWithName:key]): new method that returns the first
|
|
object associated with an ldap key (where generally one value is
|
|
returned by key).
|
|
([NGLdapEntry
|
|
-asDictionaryWithAttributeNames:attributeNamesandCName:cName]):
|
|
map the entry into an NSDictionary for processing by
|
|
UIxContactsListViewBase.m with the least possible overhead.
|
|
|
|
* SoObjects/Contacts/NGLdapEntry+Contact.[hm]: new class
|
|
extension.
|
|
|
|
2006-08-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-privateContacts:inContext:]): now returns an instance of
|
|
SOGoContactFolders.
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.m
|
|
([UIxContactsListViewContainer -contactFolderName]): new method to
|
|
return the absolute path to the current contact folder, called
|
|
from within the template.
|
|
|
|
* UI/Templates/ContactsUI/UIxContactsListViewContainer.wox: added
|
|
JS code to initialize the 'currentContactFolder' generic var.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolder.m ([SOGoContactFolder
|
|
+contactFolderWithSource:inContainer:andName:]): new class
|
|
method meant to return an instance connected to the specified
|
|
source. Currently useless but won't be anymore in the next few
|
|
days.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.h: commented out declaration of
|
|
the "lookupFreeBusyObject" method since it does not exist.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.[hm]: new class module serving
|
|
as a "view" for the SOGoContactFolders object. Does nothing but
|
|
redirect the browser to the URL of the personal address book of
|
|
the user. It does not even have a template.
|
|
|
|
* SoObjects/Contacts/SOGoPersonalAB.[hm]: new class module
|
|
implementing the SOGoContactSource protocol. Does nothing
|
|
currently but will be used to implement access to the personal
|
|
address book of the user stored in the SOGo database.
|
|
|
|
* SoObjects/Contacts/SOGoContactSource.h: new "SOGoContactSource"
|
|
protocol defining an API common to all possible types of contact
|
|
sources.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.[hm]: new class module
|
|
serving as the root of the contact folders available to the
|
|
current user. Correctly lists the contact sources in webdav.
|
|
|
|
2006-08-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailAccountsView.m ([UIxMailAccountsView
|
|
-composeAction]): new action method that permits external object
|
|
to write a message from the default (primary) account.
|
|
|
|
* UI/Contacts/UIxContactEditorBase.m ([UIxContactEditorBase
|
|
-initSnapshot]): new method with code taken from "defaultAction"
|
|
but needed for others.
|
|
([UIxContactEditorBase -writeAction]): new action designed to
|
|
compose the correct URL needed to obtain the MailerUI's email
|
|
editor with the correct "mailto" parameter.
|
|
|
|
* UI/Common/UIxSortableTableHeader.m: moved from MailerUI to
|
|
Common so that other modules can use it.
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.m: container to make it
|
|
easier to manage both ajax and non-ajax requests.
|
|
|
|
* UI/Contacts/UIxContactsFilterPanel.m: clone of
|
|
UIxMailFilterPanel, but applicable to contact lists.
|
|
|
|
* SoObjects/Contacts/NSDictionary+Contact.m ([NSDictionary
|
|
-vcardContentFromSOGoContactRecord]): use the new standard methods
|
|
created for each type of entry. If a line is determined to not
|
|
contain information, it will be skipped.
|
|
|
|
* SoObjects/SOGo/AgenorUserManager.m ([AgenorUserManager
|
|
+initialize]): init defaultMailDomain with the user default
|
|
"SOGoDefaultMailDomain".
|
|
|
|
2006-08-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactEditorBase.m ([UIxContactEditorBase
|
|
-saveAction]): reorganized methods to only have ONE return point.
|
|
Invoke saveRecord: directly on the clientObject instead of
|
|
saveContentString, which does the same thing anyway.
|
|
|
|
* SoObjects/Contacts/NSDictionary+Contact.m
|
|
([NSDictionary -vcardContentFromSOGoContactRecord]): extension
|
|
method to convert the dictionary returned with the user submission
|
|
to a record in VCARD format to be stored in the database.
|
|
|
|
2006-08-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js: when opening the context menu
|
|
of the message list, select the message below the mouse cursor and
|
|
deselect the other selected messages temporarily. This mimics the
|
|
behaviour of Thunderbird for that matter and was already
|
|
implemented for the entries of the folder tree.
|
|
|
|
* UI/MailerUI/UIxMailFolderMenu.m ([UIxMailFolderMenu
|
|
-iconForMenuItem]): new method that returns the fully qualified
|
|
relative URL to the icon representing the mailbox, or the default
|
|
mailbox icon if needed.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent
|
|
-urlForResourceFilename:filename]): automatically return an empty
|
|
string whenever the filename passed as argument is nil.
|
|
|
|
* UI/WebServerResources/MailerUI.js: open the mailboxes with the
|
|
"desc" parameter set to 1 so that they are sorted in descending
|
|
order by default. Also, added "onHeaderClick()", triggered by
|
|
clicking on the message list header elements.
|
|
|
|
* UI/MailerUI/UIxMailSortableTableHeader.m
|
|
([UIxMailSortableTableHeader -isSortedDescending]): same as below.
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
|
-isSortedDescending]): defaults to "YES" when the sort order is
|
|
not specified.
|
|
|
|
2006-07-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js:
|
|
- message cache: set the max num of cached messages to 20. Limit
|
|
the cached message size to 30000 bytes.
|
|
- ajax: when a message request is called while one is already
|
|
being performed, the latter will be cancelled. Idem when
|
|
retrieving the content of a mailbox.
|
|
- folder tree: when a mailbox is selected because of the URL
|
|
requested (initMailboxSelection), the dtree is expanded throughout
|
|
the mailbox entry's parent hierarchy to ensure it is made visible
|
|
when the page is being displayed. (new function: expandUpperTree).
|
|
- mailbox loading: when loading a mailbox where a message was
|
|
previously selected, we invoke its url with the "pageforuid"
|
|
parameter correctly specified. During callback processing, we scan
|
|
the table for the related row and reselect it.
|
|
Also, the message area is set blank before loading any mailbox.
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
|
-defaultAction]): if the "pageforuid" parameter is passed in the
|
|
url, take its value and invoke [self firstMessageOfPageFor:]
|
|
consequently to deduce the first message to display. Otherwise,
|
|
set it to "idx", otherwise set it to 0.
|
|
([UIxMailListView -firstMessageOfPageFor:]): new method
|
|
that determines the first message of the page where the message
|
|
passed as parameter is contained.
|
|
|
|
* UI/WebServerResources/UIxMailListView.js: removed this module,
|
|
its code was put in MailerUI.js instead.
|
|
|
|
2006-07-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailFolderMenu.m: a descendent of UIxMailTree
|
|
which returns the nodes for the parent specified in "parentMenu".
|
|
Used to generate the javascript code for the folder dtree.
|
|
|
|
* UI/Templates/MailerUI/UIxMailPanelFrame.wox: the components
|
|
using that container-template are now using UIxMailMainFrame
|
|
since UIxMailPanelFrame had no real interest. File removed.
|
|
|
|
* UI/WebServerResources/dtree.{css,js}: new files to handle
|
|
javascript-generated mailbox tree. Modified from original version
|
|
by integrating the previous code with the one we are using for
|
|
selections and mailbox handling. Minor visual enhancements too...
|
|
|
|
2006-07-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoUser+Mail.m: if only one identity is to be
|
|
returned, put it in an NSArray before returning it (fixes
|
|
bug#217).
|
|
|
|
2006-07-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/SOGoUI/NSString+URL.m ([NSString -hostlessURL]): new method
|
|
that returns a url string stripped from its "http://hostname"
|
|
prefix.
|
|
|
|
* UI/SOGoUI/NSDictionary+URL.[hm]: moved from UI/Common.
|
|
|
|
* UI/SOGoUI/NSString+URL.[hm]: moved from UI/Common.
|
|
|
|
2006-07-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/WOContext+UIxMailer.m ([WOContext
|
|
-mailDateFormatter]): retrieve the timezone from the user settings
|
|
and pass it to the returned dateFormatter. Also, the dateFormatter
|
|
is kept in a static variable to avoid useless
|
|
creations/destructions.
|
|
|
|
* UI/MailerUI/UIxMailFormatter.m ([UIxMailDateFormatter
|
|
-setTimeZone:newTimeZone]): new accessor to specify the timezone.
|
|
|
|
* UI/MailerUI/UIxMailFilterPanel.m ([UIxMailFilterPanel -setSearchCriteria:])
|
|
([UIxMailFilterPanel -searchCriteria]): new methods, similar to
|
|
s/Criteria/Text/ to handle the "criteria" form parameter.
|
|
|
|
2006-07-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/uix.css: enhanced the toolbar appearance
|
|
to integrate better with the firefox look&feel. Added entries for
|
|
the new "menu" DIV class (popup menus).
|
|
|
|
* UI/WebServerResources/generic.js: added "sanitizeMailTo" which
|
|
takes any chunk of text as param, detects the user email and the
|
|
optional first and last names and return them in a well-formatted
|
|
way. Renamed "getSelection" to "getSelectedNodes" to avoid a
|
|
namespace conflict. Added "onMenuClick(node, event, menuId)" to
|
|
handle popup menus through "onclick" element attributes (node =
|
|
this, event = event and menuId = name of the menu DIV id to
|
|
popup).
|
|
|
|
* UI/Contacts/UIxContactEditorBase.m ([UIxContactEditorBase
|
|
-snapshot]): add an entry for "email" into the snapshot
|
|
dictionary if a "contactEmail" URL parameter was detected and if
|
|
the entry for "email" is empty.
|
|
|
|
* UI/Contacts/Toolbars/SOGoContactFolder.toolbar: the "new card"
|
|
button now invokes the newContact() js function in ContactsUI.js
|
|
instead of opening "new" directly. newContact() pops up a window
|
|
stripped from its navigation bar.
|
|
|
|
* UI/Contacts/ContactsUI.js: new module specific to the ContactsUI
|
|
bundle (AddressBook).
|
|
|
|
* UI/Templates/MailerUI/UIxMailView.wox: added a div of class
|
|
"menu" and id "addressMenu" have the header email addresses
|
|
display it with the new menu code in generic.js.
|
|
|
|
* UI/Templates/MailerUI/UIxMailPanelFrame.wox: same as below +
|
|
replaced the body tables with a div of class "pageContent"
|
|
(standardization across the page templates).
|
|
|
|
* UI/Templates/MailerUI/UIxMailMainFrame.wox: include
|
|
productJavaScriptURL and pageJavaScriptURL (conditionnally) since
|
|
those are now inherited from UIxPageFrame.
|
|
|
|
* UI/MailerUI/UIxMailView.js: new file specific to UIxMailView.
|
|
|
|
* UI/MailerUI/UIxMailToSelection.m ([UIxMailToSelection -to]): if
|
|
a "mailto" URL parameter is detected and the "to" array is empty,
|
|
initialize "to" with the value of "mailto" before returning it.
|
|
|
|
* UI/MailerUI/UIxMailEditorAction.m ([UIxMailEditorAction
|
|
-composeAction]): rewrote method in a cleaner way and with usage
|
|
of the URL extensions to NSString and NSDictionary (see below).
|
|
Also, if a "mailto" url parameter is detected, pass it to the
|
|
redirected url.
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m: subclassed from UIxPageFrame to
|
|
reduce code.
|
|
|
|
* UI/Common/NSDictionary+URL.m ([NSDictionary -asURLParameters]):
|
|
returns a parameter string to add to a base URL.
|
|
|
|
* UI/Common/NSString+URL.m ([NSString
|
|
-composeURLWithAction:parameters:andHash:useHash]): new method to
|
|
compose a complete URL from an object URL with parameters and an
|
|
optional '#' character.
|
|
|
|
* UI/Common/UIxPageFrame.h: separated interface from
|
|
UIxPageFrame.m.
|
|
|
|
2006-07-07 Wsourdeau Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m: returns yes to "isPopup";
|
|
|
|
* UI/WebServerResources/generic.js: added code to manage
|
|
selections within HTML containers.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -productJavaScriptURL]):
|
|
added method to determine the possible URL for a product-specific
|
|
javascript filename of the forme <productname>.js.
|
|
([UIxPageFrame -hasProductSpecificJavaScript]): new method.
|
|
([UIxPageFrame -isPopup]): new method to determine whether the
|
|
application navigator bar should be displayed (main page) or not
|
|
(popup page).
|
|
|
|
* SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
|
|
-LDAPCheckLogin:_loginpassword:_pwd]): new method to authenticate
|
|
the user through LDAP.
|
|
|
|
2006-07-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* The toolbar code from the MailerUI product was taken, renamed as
|
|
"UIxToolBar" and put into UI/Common. Toolbar plists were created
|
|
for the Contacts and Scheduler products and put in their respectir
|
|
Toolbars/ subdirectories. Finally,
|
|
UI/Templates/{UIxToolbarButton,UIxToolbarSeparator}.wox, and
|
|
UI/Common/{UIxToolbarButton,UIxToolbarSeparator}.m were removed
|
|
and an invocation to the UIxToolbar component was put at the top
|
|
of UI/Templaces/UIxPageFrame.wox.
|
|
|
|
* UI/Common/UIxToolbar.m: new "isLastGroup" method to determine
|
|
within the templates whether a separator should be displayed.
|
|
|
|
* UI/Common/UIxToolbar.m ([UIxToolbar -hasButtons]): new method
|
|
that returns NO if the toolbar is empty.
|
|
|
|
2006-07-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Templates/UIxPageFrame.wox: replaced central table with a DIV.
|
|
|
|
* UI/Common/UIxToolbarSeparator.m, UI/Common/UIxToolbarButton.m:
|
|
new toolbar objects.
|
|
|
|
* UI/Templates/UIxPageFrame.wox: use the exact html code as below.
|
|
|
|
* UI/Templates/MailerUI/UIxMailMainFrame.wox: redone the
|
|
linkbanner as a DIV instead of a TABLE.
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m [UIxMailMainFrame
|
|
showLinkBanner]:
|
|
returns 'YES' to request the display of the navigation bar between
|
|
applets.
|
|
|
|
2006-06-15 ludovic@inverse.ca
|
|
|
|
* It's now possible to set the default
|
|
domain using for email using the
|
|
SOGoDefaultMailDomain preference key.
|
|
|
|
2006-06-15 ludovic@inverse.ca
|
|
|
|
* Initial import of SOGo from trunk.
|