mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-05-01 17:52:32 +00:00
67a80e7a88
Monotone-Revision: 7b063b6baee92602dac99dd40f043d618eb1213d Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-03-19T15:37:37 Monotone-Branch: ca.inverse.sogo
2132 lines
85 KiB
Plaintext
2132 lines
85 KiB
Plaintext
2007-03-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* 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.
|