mirror of
https://github.com/Alinto/sogo.git
synced 2025-04-18 10:04:00 +03:00
22645 lines
882 KiB
Plaintext
22645 lines
882 KiB
Plaintext
2012-09-16 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/dtree.js (s): when selecting a node,
|
|
also select the parent so the entire row is highlighted.
|
|
|
|
2012-09-13 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Fixed bug #1942. We now set the app name to "SOGo"
|
|
for the Samba/OpenChange application so wox are properly
|
|
found by SOPE.
|
|
|
|
2012-09-12 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreTasksMessage.m: added a way to get
|
|
the PidTagBody of a task. This could be generalized eventually
|
|
with the code in MAPIStoreAppointmentWrapper.
|
|
* OpenChange/MAPIStoreMessage.m (-saveMessage): added a safety
|
|
check to avoid a crash when first accepting invitations on
|
|
a newly created profile.
|
|
|
|
2012-09-07 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (tasksListCallback): list
|
|
the tasks in a table, along the events table.
|
|
(saveTabState): save which of the events or the tasks tab is
|
|
selected.
|
|
|
|
* UI/WebServerResources/SOGoTabsController.js
|
|
(attachToTabsContainer): select and show the active tab if it's
|
|
defined.
|
|
|
|
* UI/WebServerResources/HTMLTableElement.js (getSelectedRows):
|
|
accept calling this method from a "tbody".
|
|
|
|
* UI/Scheduler/UIxCalMainView.m (-saveSelectedListAction): new
|
|
method to save the name of the selected tab (events or tasks).
|
|
(-eventsTabClass): return "active" if the selected tab was "events".
|
|
(-tasksTabClass): idem for "tasks".
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m (-tasksListAction): added
|
|
more quick fields, including the calendar name, location, category
|
|
and a formatted version of the due date.
|
|
|
|
2012-09-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContext.m (CompleteURLFromMapistoreURI):
|
|
mapistore uris are already escaped.
|
|
(-getRootFolder:withFID:): all urls are now escaped, both in NSURL
|
|
and in NSString forms, whether they are used to return a mapitore
|
|
root uri or a indexing record.
|
|
|
|
* OpenChange/NSString+MAPIStore.m
|
|
(-stringByReplacingPercentEscapesUsingEncoding:): we now return
|
|
nil for non-ascii strings.
|
|
|
|
2012-09-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/NSString+MAPIStore.m
|
|
(-stringByReplacingPercentEscapesUsingEncoding:): reimplemented
|
|
method properly, to work-around the weird behaviour of the
|
|
original in GNUstep.
|
|
|
|
* OpenChange/MAPIStoreMailContext.m
|
|
(+listContextsForUser:withTDBIndexing:inMemCtx:): we escape the
|
|
url string of non-ascii folder names.
|
|
(+createRootSecondaryFolderWithFID:andName:forUser:): same as
|
|
above.
|
|
(+*): reverted all of the above.
|
|
|
|
* OpenChange/MAPIStoreMailVolatileMessage.m
|
|
(FillMessageHeadersFromProperties): build a recipient list for the
|
|
"from" field from the list stored in the value for "orig" in the
|
|
recipients dict.
|
|
(FillMessageHeadersFromProperties): now take a "withBcc" parameter
|
|
that defines whether the "bcc" field must be ignored in the header.
|
|
(_generateMailDataWithBcc:): the above code enables use to remove
|
|
the search and replace hack required to remove the "bcc" header in
|
|
the message text.
|
|
|
|
2012-09-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m (-getMessageData:inMemCtx:):
|
|
property return recipients from all the "from", "to", "cc" and
|
|
"bcc" header fields.
|
|
|
|
* OpenChange/MAPIStoreCalendarAttachment.m
|
|
(-getPidTagDisplayName:inMemCtx:): return an allocated value,
|
|
since returned values must be assigned to another parent.
|
|
|
|
2012-09-04 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/WORequest+SOGo.m (-isMacOSXAddressBookApp):
|
|
recognize OS X 10.8 useragent.
|
|
(-isICal4): idem.
|
|
|
|
2012-08-28 Jean Raby <jraby@inverse.ca>
|
|
|
|
* Scripts/openchange_cleanup.py:
|
|
New script to clean an openchange user profile
|
|
|
|
2012-08-27 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAptMailInvitation.m,
|
|
SoObjects/Appointments/SOGoAptMailNotification.m,
|
|
SoObjects/Appointments/SOGoAptMailDeletion.m,
|
|
SoObjects/Appointments/SOGoAptMailUpdate.m,
|
|
SoObjects/Appointments/SOGoAptMailICalReply.m,
|
|
SoObjects/Appointments/SOGoCalendarComponent.m: send HTML messages
|
|
instead of text/plain.
|
|
|
|
* UI/WebServerResources/generic.js (openMailTo): mail addresses
|
|
must now be separated by semi-colons and not commas. This allow
|
|
display names to contain commas.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (tasksListCallback): prefix
|
|
tasks with a color box instead of changing the task's background color.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m
|
|
(-_getStatusClassForStatusCode:andEndDateStamp::): set the
|
|
timezone of the due date to the user's timezone to properly
|
|
identify tasks due today.
|
|
|
|
2012-08-27 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/iCalPerson+SOGo.m (mailAddress):
|
|
We now properly add double-quotes if we find a comma and
|
|
the person's name isn't already double-quoted. Fixes #1649
|
|
|
|
2012-08-24 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m (-_sanitizeContent):
|
|
fix invalid void tags to insure proper HTML decoding. Fixes #1581.
|
|
|
|
2012-08-23 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m - added safety
|
|
checks around the ACL code so we don't crash if
|
|
we can't read the ACLs.
|
|
|
|
2012-08-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-getPidTagAccessLevel)
|
|
(-getPidTagRights, -getPidTagAccessControlListData): fixed
|
|
methods.
|
|
|
|
* OpenChange/MAPIStoreMessage.m
|
|
(-getPidTagDeleteAfterSubmit:inMemCtx:): moved from
|
|
MAPIStoreMailMessage.
|
|
|
|
* OpenChange/MAPIStoreContactsMessage.m
|
|
(-getPidTagAlternateRecipientAllowed:inMemCtx:)
|
|
(-getPidTagMessageFlags:inMemCtx:)
|
|
(-getPidTagDeleteAfterSubmit:inMemCtx:): new getters.
|
|
|
|
* OpenChange/MAPIStoreGCSFolder.m
|
|
(-setChangeKey:forMessageWithKey:): removed useless method.
|
|
(-updateVersionsForMessageWithKey:withChangeKey:): set the change
|
|
key provided by the client as member of the predecessor
|
|
changelist, but never as the actual change key for the object.
|
|
This hopefully fixes the issue where Outlook deletes objects that
|
|
have a different change list than what they expect.
|
|
|
|
2012-08-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m
|
|
(-getPidTagMessageClass:inMemCtx:): return
|
|
"IPM.Schedule.Meeting.Request" when the owner user is an attendee.
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m
|
|
(-getPidLidAppointmentNotAllowPropose:inMemCtx): new getter that
|
|
always return "YES", in order to disallow counter proposals.
|
|
|
|
* OpenChange/MAPIStoreContext.m (-getPath:ofFMID:inMemCtx:):
|
|
properly escape urls containing non-ascii chars.
|
|
(-getRootFoldeR:withFID:): idem.
|
|
|
|
2012-08-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m
|
|
(-getMessageData:inMemCtx:): when a "recipients" records is
|
|
available in the properties, we must return that list instead of
|
|
the list of attendees since it will be the most recent one.
|
|
(_fixupAppointmentObjectWithUID::): when an appointment had been
|
|
deleted, we first attempt to resurrect it from the database before
|
|
reinstantiating it, which allows the event synchronisation to
|
|
happen properly in [SOGoAppointmentObject
|
|
updateContentWithCalendar:fromRequest:].
|
|
|
|
* OpenChange/MAPIStoreMapping.m (_updateFolderWithURL:withURL:):
|
|
we retain and release "oldURL" to avoid releasing it when it
|
|
is replaced in the list of urls to modify.
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m
|
|
(-getPidTagInternetCodepage:inMemCtx:): new getter for a property
|
|
that is sometimes requested.
|
|
(-getPidTagBody:inMemCtx:): we return an empty string when no
|
|
"description"/"comment" is actually present.
|
|
|
|
2012-08-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-addProperties:): make use of
|
|
the new methods below when a mail folder has been renamed, as this
|
|
operation affects the url of mail objects.
|
|
|
|
* OpenChange/SOGoMAPIDBObject.m (-setNameInContainer): update the
|
|
object record in the database to reflect the change of folder
|
|
name.
|
|
|
|
* OpenChange/MAPIStoreMailContext.m (-updateURLWithFolderName):
|
|
change the folder name used in the context url to use the new
|
|
folder name after a rename operation, so that further invocations
|
|
of -url will return the right url.
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m
|
|
(-moveCopyToFolder:withNewName:isMove:isRecursive:): implemented
|
|
IMAP-based copy operation, for speed.
|
|
(-addProperties): restored the ability to rename IMAP folders by
|
|
properly updating the fid/url mapping with our new methods.
|
|
|
|
2012-08-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-moveToFolder:withNewName:):
|
|
renamed to "moveCopyToFolder:withNewName:isMove:isRecursive:",
|
|
with the ability to specify whether the operation is a move or
|
|
copy operation and whether it is recursive or not (for copy).
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_folder_move_folder): if
|
|
"target_folder_object", we do not attempt to access the
|
|
corresponding instance member.
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-
|
|
moveCopyMessagesWithMIDs:andCount:fromFolder:withMIDs:andChangeKeys:wantCopy:):
|
|
do not attempt to access targetChangeKeys when NULL, to avoid a
|
|
SEGFAULT.
|
|
|
|
2012-08-14 Jean Raby <jraby@inverse.ca>
|
|
|
|
* OpenChange/GNUmakefile: use version_info[{0,1}] instead of
|
|
version_info.{major,minor} when checking for legacy version
|
|
of python since these named attributes where added in python2.7
|
|
|
|
2012-08-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_properties_get_uri): removed
|
|
useless backend method.
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-createFolder:withRow:andFID:):
|
|
append a "/" to the new folder url when registering with the
|
|
url/id mapper.
|
|
|
|
* OpenChange/MAPIStoreDBFolder.m (-moveToFolder:withNewName:):
|
|
implemented method.
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-moveToFolder:withNewName:):
|
|
invoke changePathTo: on the dbFolder.
|
|
|
|
* OpenChange/SOGoMAPIDBFolder.m (-changePathTo:): overriden method
|
|
in order to update children records too.
|
|
|
|
* OpenChange/SOGoMAPIDBObject.m (-performBatchSQLQueries:) new
|
|
method to perform void queries under a transaction.
|
|
(-changePathTo:) new method that updates the references for the
|
|
object record in the dbfs table.
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m
|
|
(-stringByReplacingPrefix:withPrefix:): new self-explicit method.
|
|
|
|
* OpenChange/SOGoMAPIDBFolder.m
|
|
(-childKeysOfType:includeDeleted:matchingQualifier:andSortOrderings:):
|
|
records now have a c_parent_path column in order to avoid fetch
|
|
the children of children due to the nature of our "LIKE" clause.
|
|
|
|
* OpenChange/SOGoMAPIDBObject.m (-save): records now have a
|
|
c_parent_path.
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-supportsSubFolders):
|
|
overriden method to return YES.
|
|
|
|
2012-08-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-moveToFolder:withName:): if
|
|
the new name is not provided (unlikely), the computed new name
|
|
must not have the "folder" prefix.
|
|
We now also make use of -[MAPIStoreMapping updateID:withURL:] to
|
|
change the references in the mapping database.
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-objectId): folder keys always end
|
|
with a "/" by convention.
|
|
|
|
* OpenChange/MAPIStoreMapping.m (-updateID:withURL:): new method
|
|
that perform a change of url on container and leaf entries.
|
|
|
|
2012-08-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_properties_get_uri): new
|
|
backend method.
|
|
|
|
2012-08-10 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Changed OpenChange/SOGoMAPIDBObject.m so we use
|
|
GNUstep's binary encoding - which is an order or
|
|
magnitude faster at encoding data than any other formats.
|
|
|
|
2012-08-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_folder_move_folder)
|
|
(sogo_folder_copy_folder): the object on which the backend method
|
|
is invoked is now the folder being moved rather than its parent.
|
|
|
|
2012-08-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m
|
|
(-moveFolderWithFID:fromFolder:withNewName:): first implementation
|
|
for IMAP folders.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_folder_move_folder)
|
|
(sogo_folder_copy_folder): new backend methods.
|
|
(sogo_folder_move_folder): do not instantiate an NSString from a
|
|
NULL "new_folder_name" parameter.
|
|
|
|
2012-08-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m (-save): generate a
|
|
"nameInContainer" for the new object iif it is not set yet. If
|
|
set, we generate a new UID from it instead.
|
|
|
|
* OpenChange/MAPIStoreMessage.m (-saveMessage): make sure that the
|
|
PidTagChangeKey and PidTagChangeNumber props are no longer set in
|
|
the properties dict after the save occurred.
|
|
|
|
* OpenChange/MAPIApplication.m (-shouldSetupSignalHandlers):
|
|
overriden method by returning "NO".
|
|
|
|
2012-08-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAptMailNotification.m (-setupValues):
|
|
test whether each value is non-nil before adding it to the
|
|
dictionary.
|
|
|
|
* OpenChange/MAPIStoreMailVolatileMessage.m (-save): restored
|
|
registration of message url when saved.
|
|
|
|
2012-08-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreRecurrenceUtils.m (-[iCalRecurrenceRule
|
|
fillRecurrencePattern:withEvent:inTimeZone:inMemCtx:]): fixed a
|
|
crash occurring when the exception has no recurrence-id and
|
|
ignore the specific occurrence.
|
|
|
|
* OpenChange/MAPIStoreMailVolatileMessage.m (MakeMessageBody):
|
|
take "attachmentParts" parameter, deduced from the ivar with the
|
|
corresponding name.
|
|
|
|
* OpenChange/MAPIStoreSOGoObject.m (-objectId): force generation
|
|
of objectId by parent, whether it is a folder or not.
|
|
|
|
2012-08-07 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxListEditor.m (-setReferencesValue:): check for
|
|
duplicates in the new list, not in the previous version.
|
|
|
|
2012-08-03 Jean Raby <jraby@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m (changePasswordForLogin):
|
|
if userPasswordAlgorithm was not set or was set to "none",
|
|
use the plaintext password directly instead of using '{none}plaintext'
|
|
which isn't valid.
|
|
|
|
2012-08-02 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreUserContext.m (-_readUserPassword:)
|
|
We now read per-user passwords instead of relying on
|
|
a global file.
|
|
|
|
2012-07-31 Jean Raby <jraby@inverse.ca>
|
|
|
|
* sogo.spec:
|
|
Treat logrotate file as a config file (noreplace)
|
|
|
|
2012-07-31 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoSieveManager.m
|
|
(-sieveScriptWithRequirements:): filters must not be conditional
|
|
to each other.
|
|
|
|
2012-07-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/iCalTimeZone+MAPIStore.[hm]: new category module.
|
|
(-asTimeZoneStructInMemCtx:): new method that returns a struct
|
|
TimeZoneStruct as a binary blob from an iCalTimeZone object.
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m
|
|
(-getPidLidTimeZoneStruct:inMemCtx:): new property getter that
|
|
returns the equivalent of the iCalTimeZone of the current event.
|
|
|
|
2012-07-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreDBFolder.m (-createFolder:withFID:andKey:):
|
|
invoke "reloadIfNeeded" on the created folder object in order to
|
|
initialize it.
|
|
|
|
2012-07-25 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
(-deleteUIDs:useTrashFolder:inContext:): fixed comparison with the
|
|
trash folder name when using subfolders (ex: INBOX/Trash).
|
|
|
|
* SoObjects/SOGo/SOGoSieveManager.m
|
|
(-updateFiltersForLogin:authname:password:account:): write the
|
|
filters before the vacation auto-reply.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
(-sendEMailUsingTemplateNamed:forObject:previousObject:toAttendees:withType:):
|
|
fixed the from header when the updated event has no mode organizer.
|
|
|
|
* UI/WebServerResources/MailerUI.js (initMailer): define default
|
|
columns widths when not set.
|
|
|
|
2012-07-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreUserContext.m
|
|
(-initWithUsername:andTDBIndexing:): attempt to read the user
|
|
password from a property list.
|
|
|
|
* OpenChange/samba-get-config.py: new utility taking a samba
|
|
configuration variable and prints the value on stdout
|
|
|
|
2012-07-24 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (savePreferences):
|
|
validate the email address of the sender mail and reply-to fields.
|
|
|
|
2012-07-23 Jean Raby <jraby@inverse.ca>
|
|
* debian*/sogo.logrotate:
|
|
drop distro specific log rotate scripts
|
|
* debian*/sogo.install
|
|
* debian*/rules :
|
|
Use the logrotate script from Scripts/.
|
|
|
|
2012-07-20 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailRenderingContext.m
|
|
(_shouldDisplayAsAttachment:): refactored to consider
|
|
the "bodyId" parameter only for non text/* parts.
|
|
|
|
2012-07-20 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (onEmailTo): append the email
|
|
address from the href attribute if it doesn't appear in the link content.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
(-startElement:namespace:rawName:attributes:): don't skip "mailto:"
|
|
href.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailReceipt.m (aptSummary-): new
|
|
method that returns a properly formatted string of the event title
|
|
with respect to the current operation (creation/deletion/update).
|
|
|
|
2012-07-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/NSObject+MAPIStore.m (-getSMTPAddrType:inMemCtx:):
|
|
new helper getter.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m
|
|
(sogo_message_attachment_create_embedded_message): new backend method.
|
|
|
|
* OpenChange/NSObject+MAPIStore.m
|
|
(+fillAvailableProperties:withExclusions:): new method that fills
|
|
an existing array of properties with properties existing in
|
|
another class, as long as they are not listed in the array of
|
|
exclusions.
|
|
|
|
* OpenChange/MAPIStoreObject.m (-init): assigned a mutable array
|
|
to "proxies"
|
|
(-canGetProperty:): test the proxies for the availability of
|
|
properties so that -getAvailableProperties:inMemCtx: can return an
|
|
accurate result.
|
|
|
|
* OpenChange/MAPIStoreMessage.m (-getPidTagSubject:inMemCtx:): now
|
|
compute the return value based on PidTagNormalizedSubject and
|
|
PidTagSubjectPrefix as PidTagSubject is never actually set from
|
|
the client.
|
|
|
|
2012-07-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreObject.m (-nameInContainer): moved method
|
|
from MAPIStoreSOGoObject and made mandatory for subclasses.
|
|
(-url): new methed moved from MAPIStoreSOGoObject.
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m: now a subclass of
|
|
MAPIStoreObjectProxy.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m
|
|
(-initWithSOGoObject:inContainer:): we now register our
|
|
appointment wrapper as a proxy.
|
|
|
|
* OpenChange/MAPIStoreObject.m (-addProxy:): new method that keeps
|
|
proxy objects in the new "proxies" ivar.
|
|
(-getProperty:withTag:inMemCtx:): added code that pass the request
|
|
to the available object proxies, when the property getters have
|
|
not been found in the local class.
|
|
|
|
* OpenChange/MAPIStoreObjectProxy.[hm]: new class module that
|
|
provide a facility for providing property getters in the name of
|
|
another class, working around the fact that Objective-C does not
|
|
provide multiple-inheritance.
|
|
|
|
* OpenChange/NSObject+MAPIStore.m
|
|
(+getAvailableProperties:inMemCtx:)
|
|
(-getAvailableProperties:inMemCtx:, canGetProperty:): methods
|
|
moved from MAPIStoreObject.m
|
|
|
|
2012-07-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCalendarFolder.m (-createMessage): attach a
|
|
WOContext to the newEntry in order to enable page templates
|
|
resolution when notifications are sent.
|
|
|
|
* OpenChange/MAPIApplication.m (-init): a WEResourceManager is
|
|
setup for the application so that page templates can be properly
|
|
be initialized.
|
|
|
|
* OpenChange/MAPIStoreDBMessage.m (-objectVersion): shift the
|
|
version number by 16 bits, instead of doing it in -save.
|
|
(-save): don t swap the bytes of the version number as it would
|
|
return a wrong change number and a wrong change key for DB objects.
|
|
|
|
2012-07-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/NSObject+MAPIStore.m (-getSMTPAddrType:inMemCtx:):
|
|
new helper getter.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m
|
|
(sogo_message_attachment_create_embedded_message): new backend method.
|
|
|
|
* OpenChange/NSObject+MAPIStore.m
|
|
(+fillAvailableProperties:withExclusions:): new method that fills
|
|
an existing array of properties with properties existing in
|
|
another class, as long as they are not listed in the array of
|
|
exclusions.
|
|
|
|
* OpenChange/MAPIStoreObject.m (-init): assigned a mutable array
|
|
to "proxies"
|
|
(-canGetProperty:): test the proxies for the availability of
|
|
properties so that -getAvailableProperties:inMemCtx: can return an
|
|
accurate result.
|
|
|
|
* OpenChange/MAPIStoreMessage.m (-getPidTagSubject:inMemCtx:): now
|
|
compute the return value based on PidTagNormalizedSubject and
|
|
PidTagSubjectPrefix as PidTagSubject is never actually set from
|
|
the client.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(_appendCycleException:firstInstanceCalendarDateRange:fromRow:forRange:withTimeZone:toArray:):
|
|
return immediately if the occurrence does not have a valid
|
|
recurrence-id.
|
|
|
|
2012-07-20 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (onEmailTo): append the email
|
|
address from the href attribute if it doesn't appear in the link content.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
(-startElement:namespace:rawName:attributes:): don't skip "mailto:"
|
|
href.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailReceipt.m (aptSummary-): new
|
|
method that returns a properly formatted string of the event title
|
|
with respect to the current operation (creation/deletion/update).
|
|
|
|
2012-07-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreObject.m (-nameInContainer): moved method
|
|
from MAPIStoreSOGoObject and made mandatory for subclasses.
|
|
(-url): new methed moved from MAPIStoreSOGoObject.
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m: now a subclass of
|
|
MAPIStoreObjectProxy.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m
|
|
(-initWithSOGoObject:inContainer:): we now register our
|
|
appointment wrapper as a proxy.
|
|
|
|
* OpenChange/MAPIStoreObject.m (-addProxy:): new method that keeps
|
|
proxy objects in the new "proxies" ivar.
|
|
(-getProperty:withTag:inMemCtx:): added code that pass the request
|
|
to the available object proxies, when the property getters have
|
|
not been found in the local class.
|
|
|
|
* OpenChange/MAPIStoreObjectProxy.[hm]: new class module that
|
|
provide a facility for providing property getters in the name of
|
|
another class, working around the fact that Objective-C does not
|
|
provide multiple-inheritance.
|
|
|
|
* OpenChange/NSObject+MAPIStore.m
|
|
(+getAvailableProperties:inMemCtx:)
|
|
(-getAvailableProperties:inMemCtx:, canGetProperty:): methods
|
|
moved from MAPIStoreObject.m
|
|
|
|
2012-07-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCalendarFolder.m (-createMessage): attach a
|
|
WOContext to the newEntry in order to enable page templates
|
|
resolution when notifications are sent.
|
|
|
|
* OpenChange/MAPIApplication.m (-init): a WEResourceManager is
|
|
setup for the application so that page templates can be properly
|
|
be initialized.
|
|
|
|
* OpenChange/MAPIStoreDBMessage.m (-objectVersion): shift the
|
|
version number by 16 bits, instead of doing it in -save.
|
|
(-save): don t swap the bytes of the version number as it would
|
|
return a wrong change number and a wrong change key for DB objects.
|
|
|
|
2012-07-18 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
(_setupResponseInRequestCalendar:): we now return the
|
|
calendar read from the database and not use the one
|
|
from the request anymore, as it can override properties
|
|
other than participation status changes.
|
|
|
|
2012-07-18 Jean Raby <jraby@inverse.ca>
|
|
* Tests/Integration/config.py.in: New config parameter: webCalendarURL
|
|
* Tests/Integration/webdavlib.py(HTTPPOST,HTTPGET):
|
|
Allow cookies in post and get requests.
|
|
* Tests/Integration/test-ui-posts.py: New test class
|
|
Currently contains only one test case which exercises addWebCalendar
|
|
|
|
* SoObjects/Appointments/GNUmakefile:
|
|
use -Wl,--no-as-needed when linking. Fixes #1863
|
|
|
|
* Scripts/sql-update-1.3.16_to_1.3.17-mysql.sh
|
|
* Scripts/sql-update-1.3.16_to_1.3.17.sh:
|
|
New scripts to expand c_cycleinfo to mediumtext or varchar(1000000)
|
|
The field was expanded around 1.3.3.
|
|
See http://www.sogo.nu/bugs/view.php?id=1848
|
|
|
|
2012-07-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/Integration/webdavlib.py (WebDAVQuery.set_response): make
|
|
use of xml.etree.cElementTree for speed and avoid using a
|
|
cStringIO altogether by directly passing the content string.
|
|
|
|
* Tests/Integration/test-davacl.py (DAVCalendarSuperUserAclTest._getEvent)
|
|
(DAVCalendarAclTest._getEvent): ensure that the resulting event
|
|
does not contain any "\r" char as the XML parser would anyway
|
|
strip them.
|
|
|
|
2012-07-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
(-updateContentWithCalendar:fromRequest:): new method spawned from
|
|
the previous incarnation of PUTRequest:, designed to centralize
|
|
all the processed performed on an iCalendar instance, new or
|
|
derived from the original.
|
|
(-changeParticipationStatus:withDelegate:forRecurrenceId:):
|
|
reorganized the method workflow by not testing "calendar" as it is
|
|
guaranteed to be returned. Also, we save the iCalendar object from
|
|
here, as we cannot invoke the method above, which would reinvoke
|
|
this method in loop in the current state of the code.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
(-lookupOccurrence:): now a virtual method forcing the use by
|
|
subclasses of the new methods below.
|
|
(-saveCalendar:): new method that enables the saving of an
|
|
iCalendar object.
|
|
|
|
* SoObjects/Appointments/iCalCalendar+SOGo.m: new category module.
|
|
(-eventWithRecurrenceId, -todoWithRecurrenceId): new method that
|
|
return as recurrence based on the id passed as parameter.
|
|
|
|
* Tests/Integration/test-caldav-scheduling.py
|
|
(CalDAVSchedulingTest.setUp): use the proper password for
|
|
attendee1_delegate.
|
|
|
|
2012-07-12 Jean Raby <jraby@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailForward.m (from, to, cc, reply-to):
|
|
mailHeaders returns an array if there are multiple headers of the same type.
|
|
Handle this case to correctly show multiple from, to, cc and reply-to headers
|
|
in mail replies/forwards instead of crashing.
|
|
|
|
2012-07-11 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Finished the implementation and testing of the two
|
|
new defaults. Also added documentation in the SOGo Installation
|
|
and Configuration Guide.
|
|
|
|
* Updated UI/Templates/SchedulerUI/UIxCalendarProperties.wox to not
|
|
show the notification options if it's a web calendar or if the active
|
|
user isn't the owner of the calendar.
|
|
|
|
* Added strings to translate and cleaned up the template to send
|
|
HTML mails instead of text/plain.
|
|
|
|
2012-07-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-davNotifyOnPersonalModifications)
|
|
(-setDavNotifyOnPersonalModifications:)
|
|
(-davNotifyOnExternalModifications)
|
|
(-setDavNotifyOnExternalModifications:)
|
|
(-davNotifyUserOnPersonalModifications)
|
|
(-setDavNotifyUserOnPersonalModifications:)
|
|
(-davNotifiedUserOnPersonalModifications)
|
|
(-setDavNotifiedUserOnPersonalModifications:): new dav accessors.
|
|
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (-davBooleanForResult:): new method
|
|
that returns a valid DAV boolean from a BOOL.
|
|
(-isValidDAVBoolean:): new method that validates the value as a
|
|
DAV boolean.
|
|
(-resultForDAVBoolean:): new method that returns a BOOL from a DAV
|
|
boolean.
|
|
|
|
2012-07-09 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Dropped old templates (SOGoAptMailDeletionReceipt.wox
|
|
SOGoAptMailInvitationReceipt.wox and SOGoAptMailUpdateReceipt.wox)
|
|
which are in fact replaced by SOGoAptMailReceipt.wox. File added
|
|
to the repository.
|
|
|
|
* Dropped SOGoAppointmentSendEMailReceipts
|
|
|
|
* Added two new domain defaults: SOGoNotifyOnPersonalModifications
|
|
and SOGoNotifyOnExternalModifications. They allow users to be notified
|
|
when modifying their own calendars or when someone else to it. These
|
|
defaults are over-writable by users from their calendar properties window.
|
|
|
|
* Implemented the code related to the two new defaults together with a
|
|
third option - which is to notify a specific person when one modifies
|
|
his/her calendar. This commit is partial as more testing is required
|
|
and some code changes to trigger the right notifications.
|
|
|
|
2012-07-09 Jean Raby <jraby@inverse.ca>
|
|
|
|
* Tools/SOGoToolUserPreferences.m:
|
|
use printf() instead of NSLog to print out user preferences.
|
|
Makes it easier to grep.
|
|
|
|
* UI/WebServerResources/generic.js (onSearchFormSubmit):
|
|
Restore behavior of a single dot (.) in the search field (wildcard search)
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (onMenuRawEvent, onMenuRawTask):
|
|
New callback to show the event/task content from the menu
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (rawAction):
|
|
New method that returns the object's raw content in a WOResponse.
|
|
|
|
* UI/Templates/SchedulerUI/UIxCal{Day,Month,Main,Week}View.wox:
|
|
New contextual menu item: Show Raw Source
|
|
|
|
* UI/WebServerResources/ContactsUI.js (onMenuRawContact):
|
|
Rework to use calendar/ics/raw
|
|
|
|
* UI/Contacts/UIxContactFolderActions.m (rawAction):
|
|
Removed / moved to UI/Contacts/UIxContactActions.m
|
|
|
|
* UI/Contacts/UIxContactActions.m (rawAction):
|
|
New method that returns the object's raw content in a WOResponse.
|
|
|
|
* UI/Templates/ContactsUI/UIxContactFoldersView.wox:
|
|
Show vCard content -> Show Raw Source
|
|
|
|
|
|
2012-07-05 Jean Raby <jraby@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (openGenericWindow):
|
|
New method that opens a simple new window.
|
|
|
|
* UI/WebServerResources/ContactsUI.js (onMenuRawContact):
|
|
New callback to show the vCard content from the menu.
|
|
|
|
* UI/WebServerResources/ContactsUI.js (onContactMenuPrepareVisibility):
|
|
Enable the export and raw functions only on vcards contacts.
|
|
|
|
* UI/Templates/ContactsUI/UIxContactFoldersView.wox:
|
|
New contextual menu item: Show vCard content
|
|
|
|
* UI/Contacts/UIxContactFolderActions.m (rawAction):
|
|
New method that returns the raw contact data for all the contact uids provided
|
|
|
|
* UI/Contacts/UIxContactView.m (secondaryEmail):
|
|
function renamed to secondaryEmails. It now returns all addresses
|
|
instead of the first one found in the vcard.
|
|
|
|
* UI/Templates/ContactsUI/UIxContactView.wox:
|
|
Show all addresses returned from secondaryEmails.
|
|
This still need some css tweaks.
|
|
|
|
2012-07-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreRecurrenceUtils.m
|
|
(-setupRecurrenceWithMasterEntity:fromRecurrencePattern:): add
|
|
exception dates to master entity based on the
|
|
"DeletedInstanceDates" member of the struct.
|
|
(-fillRecurrencePattern:withEvent:inTimeZone:inMemCtx:): new name
|
|
for fillRecurrencePattern:withStartDate:andEndDate:, add exception
|
|
dates to struct.
|
|
|
|
* OpenChange/NSDate+MAPIStore.m (NSDateCompare): new comparison
|
|
function for sorting array of NSDate instances.
|
|
|
|
2012-06-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/NSObject+MAPIStore.h: renamed
|
|
MAPIStoreTallocWrapper.MAPIStoreSOGoObject to .instance, to avoid
|
|
confusion in certain versions of GCC with our new class type.
|
|
|
|
2012-06-29 Jean Raby <jraby@inverse.ca>
|
|
|
|
* SoObjects/SOGo/WORequest+SOGo.[mh]
|
|
(-isAndroid): new method to detect whether the
|
|
request has been performed from an android client
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m (appendSystemSources):
|
|
Let sogo append system sources if the request comes from an android
|
|
client even if its user agent matches the IPhoneAddressBook
|
|
|
|
2012-06-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreSOGo.m
|
|
(sogo_message_attachment_open_embedded_message): added the "mode"
|
|
parameter.
|
|
|
|
* OpenChange/SOGoMAPIDBObject.m: new class module that replaced
|
|
SOGoMAPIFSMessage.
|
|
|
|
* OpenChange/SOGoMAPIDBFolder.m: new class module that replaced
|
|
SOGoMAPIFSFolder.
|
|
|
|
2012-06-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (-initWithName:inContainer:): make
|
|
sure that "_name" is neither nil nor empty.
|
|
|
|
2012-06-27 Jean Raby <jraby@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
(PUTAction:): detect conflicting event UID and
|
|
deny the request accordingly.
|
|
|
|
2012-06-21 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added the SOGoSearchMinimumWordLength domain
|
|
default which controls the minimal length required
|
|
before trigging server-side search operations for
|
|
attendee completion, contact searches, etc. The
|
|
default value is 2, which means search operations
|
|
are trigged once the 3rd character is typed.
|
|
|
|
2012-06-20 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
(-_handleResourcesConflicts:forEvent:): We now
|
|
handle correctly recurring events overlapping other
|
|
recurring events.
|
|
|
|
2012-06-19 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m (-importCalendar:):
|
|
We now handle correctly floating events by forcing the use of
|
|
the user's timezone.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m (-expandGroupsInEvent:):
|
|
We now remove all attendees that are equal (email-based comparison) to
|
|
the event's organizer instead of only for decomposed groups.
|
|
|
|
2012-06-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGroup.m
|
|
(+groupWithValue:andSourceSelector:inDomain:): handle the case
|
|
the value of "objectclass" is actually an NSString instance,
|
|
otherwise causing a crash with the NSArray methods.
|
|
|
|
2012-06-04 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxFilterEditor.js (savePreferences):
|
|
don't validate filters if they are not visible (when matching all
|
|
incoming messages).
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-_appendCycleException:firstInstanceCalendarDateRange:fromRow:forRange:withTimeZone:toArray:):
|
|
adjust recurrence id according to timezone when dealing with a
|
|
floating all-day event.
|
|
|
|
2012-06-01 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m
|
|
(-_handleURLs:textToMatch:prefix:inRanges:): don't reset the
|
|
prefix for the subsequent matching strings. This fixes links in
|
|
messages with multiple email addresses, some of which already
|
|
prefixed by "mailto;".
|
|
|
|
2012-06-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/*: fixed build errors with gcc-4.7
|
|
|
|
* UI/MailPartViewers/UIxMailPartAlternativeViewer.m
|
|
(-childPartName): fixed a potential crash by building the NSString
|
|
from the integer itself, with the proper format string.
|
|
|
|
* SoObjects/SOGo/NSString+Crypto.m
|
|
(-isEqualToCrypted:withDefaultScheme:): invoke "intValue" rather
|
|
than "integerValue" on the encoding number as the int type is not
|
|
crucial and it breaks the build with old versions of GNUstep.
|
|
|
|
* SoObjects/SOGo/NSString+Crypto.[hm]: new module that provides
|
|
category methods for returning encrypted passwords strings and
|
|
their encryption algorithm.
|
|
|
|
2012-05-31 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGroup.m - we now handle lowercase
|
|
all attribute names
|
|
* SoObject/SOGo/LDAPSource.m - moved the lowercasing
|
|
of attributes to SOPE.
|
|
* Added patch from bug #1608. This add many more password
|
|
schemes for SQL authentication.
|
|
* SoObject/Mailer/SOGoMailFolder.m (-_readMailboxACL): we
|
|
now create the mailbox if we are trying to read ACL of
|
|
a deleted mailbox.
|
|
* UI/MailerUI/UIxMailEditor.m (-personalContactInfos): we check
|
|
if the folder still exist and if the database isn't down
|
|
before performing any address books search operations.
|
|
* UI/MailerUI/UIxMailMainFrame.m (-unseenCountFolders): we no
|
|
longer fill up the list of mailboxes to with the ones that are
|
|
targets for "fileinto" methods if Sieve scripts aren't enabled
|
|
in SOGo's domain defaults.
|
|
|
|
2012-05-29 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js (validateEditorInput):
|
|
merged with onValidate.
|
|
(onValidate): don't force the subject to be defined, but alert
|
|
the user.
|
|
|
|
* UI/MailerUI/UIxMailView.m (-messageSubject): don't set the
|
|
subject to "Untitled" if it's not set.
|
|
|
|
* UI/MailPartViewers/UIxMailPartMessageViewer.m (-messageSubject): idem.
|
|
|
|
* UI/MailerUI/UIxMailEditor.m (-validateForSend): don't force the
|
|
subject to be defined.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m (-subjectForReply): make
|
|
sure subject is a defined value to avoid "null" strings in the
|
|
reply message.
|
|
|
|
2012-05-28 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (validateUploadForm): hide
|
|
Cancel button when the form is valid and disable the Submit button.
|
|
|
|
* UI/WebServerResources/ContactsUI.js (validateUploadForm): idem.
|
|
|
|
2012-05-24 Jean Raby <jraby@inverse.ca>
|
|
|
|
* debian*/rules: Restart sogod after pkg upgrade (dh_installinit -R)
|
|
* Scripts/sogo-init.d-*: add support for conditional restart.
|
|
Patch from Romain Le Disez
|
|
* sogo.spec: Restart sogod during post installation if it was already running
|
|
|
|
* Apache/SOGo.conf:
|
|
Use mod_expires to allow long term caching of static content. (1 year)
|
|
Note that from now on, a resource's URL _must_ change to let the client
|
|
reload it. This is now done automatically for 'rsrc' in the wox templates,
|
|
but must be done manually for files referenced from css and js.
|
|
|
|
2012-05-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js
|
|
(clickEventWrapper.button_clickEventWrappe): don't invoke
|
|
"preventDefault" on elements that do not have a tagName of "A".
|
|
|
|
2012-05-18 Jean Raby <jraby@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m (bodyPartForAttachmentWithName):
|
|
Merge back lost code to handle encoding of binary and rcf822 attachments.
|
|
|
|
2012-05-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/gen-property-selectors.py: the use of the "{}" to
|
|
construct a set is only valid on py2.7 therefore we make use of
|
|
set([]) instead.
|
|
|
|
2012-05-15 Jean Raby <jraby@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m (_handleResourcesConflicts):
|
|
Deny access to resources if the resource's ACL don't allow the organizer
|
|
to read its freebusy info.
|
|
Without this, sogo would always auto-accept invitations from 'unprivileged'
|
|
users, potentially bypassing the multiplebooking parameter.
|
|
|
|
2012-05-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/gen-property-selectors.py: "bannedProps" is now a
|
|
set, for faster lookups.
|
|
|
|
* UI/WebServerResources/UIxContactsUserFolders.js: folder ids are
|
|
in the form "user:module/folder", therefore we must remove the
|
|
first char, which is a slash.
|
|
|
|
* UI/WebServerResources/generic.js (subscribeToFolder): prepend a
|
|
"/" to the folder name, as it comes originally in the form
|
|
user:module/folder.
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (initMailAccounts)
|
|
(displayMailAccount): getElementsByTagName seems too standard for
|
|
IE, we use $$() now so that we can invoke "each" on the result set
|
|
without triggering an exception.
|
|
|
|
2012-05-09 Jean Raby <jraby@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m (PUTAction):
|
|
Delete bitrotten code that could end up duplicating attendees.
|
|
Behavior exposed by the new caldav tests
|
|
|
|
* Tests/Integration/config.py.in
|
|
* Tests/Integration/test-caldav-scheduling.py
|
|
* Tests/Integration/test-ical.py
|
|
* Tests/Integration/test-davacl.py:
|
|
Use an unprivileged webdavclient where possible.
|
|
This would have uncovered the resources calendar autocreation bug.
|
|
|
|
* Tests/Integration/test-caldav-scheduling.py:
|
|
New tests to excercise somewhat fragile code in dav autoscheduling.
|
|
|
|
2012-05-09 Jean Raby <jraby@inverse.ca>
|
|
|
|
* SoObject/SOGo/SOGoParentFolder.m (_createPersonalFolder):
|
|
Automatically create the folder if its owner is a resource.
|
|
(not if the active user is a resource)
|
|
|
|
2012-05-09 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m - don't encode message/rfc822
|
|
parts in base64 - it's not allowed.
|
|
|
|
2012-05-08 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js (configureDraggables)
|
|
(configureDroppables, startDragging, whileDragging, stopDragging)
|
|
(dropAction): drag'n'drop is how handle by jQuery instead of Scriptaculous.
|
|
|
|
* UI/WebServerResources/MailerUI.js (configureDraggables)
|
|
(configureDroppables, startDragging, whileDragging, stopDragging)
|
|
(dropAction): idem.
|
|
|
|
* UI/WebServerResources/generic.js (onCloseButtonClick)
|
|
(showPromptDialog, showSelectDialog, showAuthenticationDialog)
|
|
(disposeDialog, _disposeDialog): idem.
|
|
|
|
* UI/WebServerResources/SOGoRootPage.js (initLogin): idem.
|
|
|
|
* UI/Contacts/UIxContactView.m (-primaryEmail): in the mailto
|
|
link, remove double-quotes and escape single-quotes from the fullname.
|
|
(-secondaryEmail): idem.
|
|
|
|
2012-05-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreSOGo.m: register and unregister current
|
|
thread before and after each backend operation, in order to avoid
|
|
issues in multithreaded environment.
|
|
|
|
2012-05-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (accessToSubscribedFolder): use
|
|
the last part of the string as folder identifier. Otherwise we end
|
|
up with the module name.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m
|
|
(-bodyPartForAttachmentWithName:): attach rfc822 content as
|
|
with base64 encoding, just as any other non-text data.
|
|
|
|
2012-04-30 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoDomainDefaults.{h,m} - added
|
|
-hideSystemEMail that honors SOGoHideSystemEMail.
|
|
Right now, this variable is limited only to
|
|
the calendar-user-address-set response but can/will be
|
|
extended later.
|
|
|
|
* SoObjects/Appointments/SOGoUserFolder+Appointments.m
|
|
(-davCalendarUserAddressSet): Modified to honor
|
|
SOGoHideSystemEMail domain default.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m (-lookupName:...):
|
|
We prioritize the lookup of the "Drafts" folder over the
|
|
"Sent" one if both are matching.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m: Same as above.
|
|
|
|
|
|
2012-04-25 Jean Raby <jraby@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m
|
|
(-updateFromLDIFRecord:): carry the c_info attribute
|
|
in vcards through the x-sogo-contactinfo attribute.
|
|
This functionality was lost a while ago.
|
|
We used to use the NOTE attribute for this. From now on,
|
|
the sogo-connector.autoComplete.commentAttribute have to be set to
|
|
'unprocessed:x-sogo-contactinfo' instead of 'Notes'.
|
|
|
|
|
|
2012-04-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (_extractMainIdentity:): save
|
|
the custom full name even when the configured custom email has the
|
|
same value as the system value.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-appendSystemMailAccount): append
|
|
custom identity even though only the full name has a custom value.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m
|
|
(-bodyPartForAttachmentWithName:): force conversion of rfc822
|
|
content to quoted-printable, since it would otherwise risk passing
|
|
8bit data via the "APPEND" command.
|
|
|
|
2012-04-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (updateCalendarStatus): if
|
|
"event" is set, we set its returnValue to true, to avoid a bug
|
|
occurring since the use of "clickEventWrapper".
|
|
(resizeCalendarHeaderDIV): new function that resizes the all-day
|
|
event containers progressively.
|
|
(_drawCalendarAllDayEvents, _deleteCalendarEventBlocks): invoke
|
|
the above.
|
|
|
|
* UI/WebServerResources/HTMLElement.js: get "HTMLCollection"
|
|
and "NodeList" classes by class rather than by direct reference.
|
|
|
|
* UI/WebServerResources/generic.js (clickEventWrapper): pass the
|
|
value of "this" to the invoked callback.
|
|
|
|
2012-04-24 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SOPE/GDLContentStore/GCSFolder.m (-writeContent:toName:baseVersion:):
|
|
We now keep track of the saved version for all callers. Also updated
|
|
all callers to reflect that change.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:)
|
|
Took some of the logic from SOGoContentObject's -PUTAction: to
|
|
avoid etag mismatches.
|
|
|
|
2012-04-23 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m: We now
|
|
automatically add/remove attendees to recurrence exceptions
|
|
when they are being added to the master event. Also
|
|
fixed -PUTAction: so that we fetch the organizer of a recurrence
|
|
exception when the master doesn't have a copy of it.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentOccurence.m: added
|
|
-componentTag to avoid server crash.
|
|
|
|
2012-04-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (onCalendarReload): invoke
|
|
changerCalendarDisplay when no web calendars are present...
|
|
|
|
* UI/WebServerResources/HTMLElement.js: enhanced both
|
|
HTMLCollection and NodeList with the "Enumerable" interface.
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (displayMailAccount):
|
|
disable the "fullName" and "email" input fields of the first
|
|
account only when SOGoMailCustomFromEnabled is NO.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (_extractMainIdentity:): the
|
|
custom values for "fullName" and "email" are now registered in the
|
|
user defaults, if "email" is different from all the values
|
|
returned by the user directory AND if SOGoMailCustomFromEnabled is
|
|
YES.
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m (-setMailCustomFullName:)
|
|
(-mailCustomFullName): new accessors for the new
|
|
"SOGoMailCustomFullName" user default.
|
|
(-setMailCustomEmail:, -mailCustomEmail): new accessors for the
|
|
new "SOGoMailCustomEmail" user default.
|
|
|
|
* SoObjects/SOGo/SOGoDomainDefaults.m (-mailCustomFromEnabled):
|
|
new getter for the "SOGoMailCustomFromEnabled" domain default.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m
|
|
(-mimeHeaderMapWithHeaders:excluding:) take the new "replyTo"
|
|
header into account.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-_appendSystemMailAccount): specify
|
|
the value of "SOGoMailReplyTo" in the "replyTo" field of each
|
|
identity, if present.
|
|
When "SOGoMailCustomFromEnabled" is YES and the user has set
|
|
a value for "SOGoMailCustomEmail", a first identity is created and
|
|
set at the first position in the list, based on that value and on
|
|
"SOGoMailCustomFullName".
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m (-setMailReplyTo:)
|
|
(-mailReplyTo:): accessors for the "SOGoMailReplyTo" user default.
|
|
|
|
2012-04-19 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:)
|
|
We now handle cases where the last attendee AND the organizer
|
|
is removed from the event during a PUT action (happens when
|
|
you delete the last attendee of an event with iCal). This used
|
|
to crash sogod.
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m (-importCalendar:)
|
|
Fixed the import process of broken all-day events (#1055)
|
|
|
|
2012-04-19 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-importCalendar:): associate occurrences of a repeating event to
|
|
its master vcalendar to avoid duplicated events when importing a .ics.
|
|
|
|
2012-04-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m (-appendSubscribedSources):
|
|
ensure the array set as values in the settings dicts are not nil
|
|
prior to setting them.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:):
|
|
fix the date condition for cycle record, by using c_cycleenddate
|
|
instead of c_enddate.
|
|
|
|
2012-04-18 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m (-_handleResourcesConflicts: ...):
|
|
We now handle recurring appointments by fetching the freebusy information for one full
|
|
year from the date of the event. Also improved the conflict
|
|
reporting messages.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:):
|
|
update the versit string in the request when updating the event, in
|
|
case a resource auto-accepted the event
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m: renamed -subscribeUser:reallydo: to
|
|
subscribeUserOrGroup:reallydo and we now handle group subscriptions.
|
|
Refactored all callers.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m (-_appendSubscribedSource:): now returns a
|
|
BOOL if the permission are still valid or not
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m (-appendSubscribedSources): consumes the
|
|
returned value from -_appendSubscribedSource: and cleans up SubscribedFolders
|
|
and FolderDisplayNames accordingly in the user's settings.
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m (-_fillContactInfosForUser: ...): we now
|
|
set the isGroup attribute as we need this for quick groups
|
|
resolving.
|
|
|
|
2012-04-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (showAuthenticationDialog): new
|
|
dialog providing an interface for requesting a username and a
|
|
password to acallback passed as parameter.
|
|
(accessToSubscribedFolder): fixed method to return the proper url
|
|
for folders owned by the active user.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (reloadWebCalendars): now
|
|
invokes "reloadAction" on every web calendar foldar, in a chain of
|
|
simultaneous requests.
|
|
(reloadWebCalendar): new function invoking "reloadAction" on a
|
|
single cal folder.
|
|
(reloadWebCalendarCallback): callback for the above invocation
|
|
that takes care of refreshing the views at the end of a refresh
|
|
chain, if present, and when useful.
|
|
|
|
* UI/Scheduler/UIxCalFolderActions.m (reloadAction): new web
|
|
method that applies only to SOGoWebAppointmentFolder instances and
|
|
which returns a JSON representation of the result returned by
|
|
-[SOGoWebAppointmentFolder loadWebCalendar]. This method replaces
|
|
-[UIxCalMainActions -reloadWebCalendars].
|
|
(setCredentialsAction): new web method acting as a proxy for
|
|
-[SOGoWebAppointmentFolder setUsername:andPassword:].
|
|
|
|
* UI/WebServerResources/generic.js (clickEventWrapper): new
|
|
function that returns a wrapper function for click callbacks which
|
|
invokes "preventDefault" on the "event" parameter before it is
|
|
passed to the real callback.
|
|
|
|
* UI/Scheduler/UIxCalMainActions.m
|
|
(-reloadWebCalendarsAndRedirectAction): removed obsolete method.
|
|
(-reloadWebCalendars): removed obsolete method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
(-newWebCalendarWithName:atURL:): perform sanity checks on the url
|
|
parameter.
|
|
|
|
* SoObjects/Appointments/SOGoWebAppointmentFolder.m
|
|
(-setUsername:andPassword:): new method that associate an
|
|
encrypted login pair for authenticating to remove calendars.
|
|
(-loadWebCalendar): rewrote method to make use of curl, thereby
|
|
permitting HTTP authentication. A NSDictionary containing
|
|
different informations about the connection is not returned,
|
|
including the HTTP status and an error tag, when required.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-importCalendar:): journals and freebusys are not
|
|
supported.
|
|
|
|
2012-04-16 Jean Raby <jraby@inverse.ca>
|
|
|
|
* SOPE/NGCards/iCalMonthlyRecurrenceCalculator.m
|
|
(-recurrenceRangesWithinCalendarDateRange:):
|
|
Fix of by one error. (bug #1772)
|
|
|
|
2012-04-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m (-encryptWithKey:)
|
|
(-decryptWithKey:): new methods providing symmetric encryption of
|
|
strings.
|
|
|
|
* Tests/Unit/SOGoTestRunner.m (-run): do not empty the pool after
|
|
each test.
|
|
|
|
2012-04-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m (-bareFetchFields: ...),
|
|
(-fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:):
|
|
restored c-style escaping of sql-style escaping of quote characters.
|
|
(-davCalendarShowAlarms, setDavCalendarShowAlarms:): new proxy dav
|
|
accessors for "showCalendarAlarms" and "setShowCalendarAlarms:".
|
|
|
|
2012-04-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-componentSQLFilter): new
|
|
overridable method that enables passing filters for
|
|
toOneRelationshipKeys from subclasses.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-davCalendarComponentSet): componentSet is now an ivar. Include
|
|
VTODO only with showCalendarTasks returns YES.
|
|
(-davResourceType): return vtodo-collection only when
|
|
showCalendarTasks returns YES.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m
|
|
(_fetchFields:forComponentOfType:): do not check for
|
|
"showCalendarTasks" since it is now handled at the
|
|
SOGoApopintmentFolder level.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-bareFetchFields: ...,
|
|
(-fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:):
|
|
make use of a mutable array to define the global WHERE clause, by
|
|
joining the elements with " AND ".
|
|
(-additionalWebdavSyncFilters): don't include 'vtodo' components
|
|
when -[self showCalendarTasks] returns NO.
|
|
|
|
2012-04-11 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js (onDocumentKeydown): don't
|
|
trap keyboard input when inside a textarea.
|
|
|
|
2012-04-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m (-objectFromJSONString):
|
|
added a work-around for JSON strings that were escaped one too
|
|
many time, in previous versions of sope-gdl1-xxx.
|
|
|
|
2012-04-04 Jean Raby <jraby@inverse.ca>
|
|
|
|
* Added a new tool: 'sogo-tool expire-sessions'
|
|
Along with the associated new cronjob, this allows
|
|
user sessions expiration without a custom script.
|
|
|
|
* While there, sort tools in sogo-tool output
|
|
|
|
2012-04-03 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* Tools/SOGoToolRemoveDoubles.m (-removeDoublesFromFolder)
|
|
(-amountOfFilledQuickFields): lowered the case of the
|
|
telephonenumber table fieldname.
|
|
|
|
* OGoContentStore/OCSContactFieldExtractor.m
|
|
(-extractQuickFieldsFromVCard): idem.
|
|
|
|
2012-03-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m (-save): remove comment if
|
|
content is "\n".
|
|
|
|
* OpenChange/MAPIStoreTasksMessage.m (-save): do not reset fields
|
|
that have not been passed in the properties array, since only
|
|
RopDeleteProperties should remove them.
|
|
Remove comment if content is "\n".
|
|
|
|
* OpenChange/MAPIStoreObject.m (-addPropertiesFromRow:): dates are
|
|
now all converted to the user's timezone, even though it just
|
|
inverts the problem we currently have.
|
|
|
|
* OpenChange/MAPIApplication.m (-init): utcTZ is now initialized
|
|
here.
|
|
|
|
* OpenChange/MAPIStoreTypes.[hm]: new host module for utcTZ.
|
|
|
|
* OpenChange/MAPIStoreUserContext.m (-timeZone): new method that
|
|
returns the timezone of an owner user.
|
|
|
|
* OpenChange/MAPIStoreObject.m (-ownerTimeZone): removed method,
|
|
replaced with the one above.
|
|
|
|
2012-03-29 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (savePreferences): fixed
|
|
validation of end date of vacation of message when not using ISO
|
|
format (currently limited to French).
|
|
|
|
* UI/WebServerResources/ContactsUI.js (startDragging): create an
|
|
overlapping safety block (div) to avoid possible selection of the
|
|
underlying text.
|
|
|
|
* UI/WebServerResources/MailerUI.js (startDragging): idem.
|
|
|
|
2012-03-29 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (savePreferences): fixed
|
|
validation of end date of vacation of message when not using ISO
|
|
format (currently limited to French).
|
|
|
|
* UI/WebServerResources/ContactsUI.js (startDragging): create an
|
|
overlapping safety block (div) to avoid possible selection of the
|
|
underlying text.
|
|
|
|
* UI/WebServerResources/MailerUI.js (startDragging): idem.
|
|
|
|
2012-03-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoFolder+CardDAV.m (_isValidFilter:):
|
|
accept "email" as filter name.
|
|
(_appendObject:withBaseURL:toREPORTResponse:): fixed the ordering
|
|
of XML elements as the address*-data props where put outside of
|
|
the <D:prop> tree.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m (-allEntryIDs): take the _filter
|
|
ivar into account.
|
|
|
|
2012-03-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/SOGoMAPIFSMessage.m
|
|
(_readFileChangesDataWithDate:andInode:): use the inode number
|
|
rather than the filesize as change indicator since a new file is
|
|
created each time the dictionary is written to disk, thanks to the
|
|
"atomically" flag.
|
|
(-save): write the file atomically.
|
|
|
|
* SoObjects/Contacts/SOGoFolder+CardDAV.m (_isValidFilter:):
|
|
accept "email" as filter name.
|
|
(_appendObject:withBaseURL:toREPORTResponse:): fixed the ordering
|
|
of XML elements as the address*-data props where put outside of
|
|
the <D:prop> tree.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m (-allEntryIDs): take the _filter
|
|
ivar into account.
|
|
|
|
2012-03-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m
|
|
(-lookupName:inContext:acquire:): overriden method that enables
|
|
the lookup of hidden public sources with iOS devices.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDIFEntry.m (-davAddressData): new
|
|
getter similar to davCalendarData.
|
|
|
|
* SoObjects/Contacts/SOGoContactSourceFolder.m
|
|
(-davAddressbookMultiget): new REPORT handler based on
|
|
-[SOGoAppointmentFolder davCalendarMultiget].
|
|
|
|
* SoObjects/Contacts/SOGoUserFolder+Contacts.m
|
|
(-davDirectoryGateway): new getter that returns the url to the
|
|
first available directory source.
|
|
(-davResourceType): declare resource as "directory" (carddav).
|
|
|
|
2012-03-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m
|
|
(-lookupName:inContext:acquire:): overriden method that enables
|
|
the lookup of hidden public sources with iOS devices.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDIFEntry.m (-davAddressData): new
|
|
getter similar to davCalendarData.
|
|
|
|
* SoObjects/Contacts/SOGoContactSourceFolder.m
|
|
(-davAddressbookMultiget): new REPORT handler based on
|
|
-[SOGoAppointmentFolder davCalendarMultiget].
|
|
|
|
* SoObjects/Contacts/SOGoUserFolder+Contacts.m
|
|
(-davDirectoryGateway): new getter that returns the url to the
|
|
first available directory source.
|
|
(-davResourceType): declare resource as "directory" (carddav).
|
|
|
|
2012-03-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreTasksMessage.m (-save): take PR_HTML as
|
|
possible value for the COMMENT field, as as with
|
|
MAPIStoreCalendarMessages.
|
|
|
|
* OpenChange/MAPIApplication.m (-init): removed hack pertaining to
|
|
UnixSignalHandler since the class no longer exists.
|
|
|
|
2012-03-23 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* Tools/SOGoToolUserPreferences.m (-run): we now take the proper
|
|
argument when setting the user defaults from the command-line.
|
|
|
|
2012-03-22 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m (-emptyTrashAction:): we now
|
|
unsubscribe from the folders found in the trash.
|
|
|
|
2012-03-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreTasksMessage.m (-save):
|
|
PidLidPercentComplete is a double, that we need to convert in
|
|
order to obtain the proper value.
|
|
|
|
2012-03-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m (_compactAndCompleteContacts:):
|
|
if "mail" is an array, all values are added to "c_emails".
|
|
|
|
* SoObjects/Contacts/SOGoContactSourceFolder.m
|
|
(_flattenedRecord:): if "mail" is an array, we only take the first
|
|
value of it.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDIFEntry.m (-simplifiedRecord):
|
|
new record guaranteeing that all array values have been stripped
|
|
and converted to strings.
|
|
|
|
2012-03-20 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m
|
|
(_contentForEditingFromKeys:): prefer the HTML part over the text
|
|
part when composing HTML messages.
|
|
|
|
2012-03-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m (-davLastName, -davFirstName):
|
|
quick and dirty implementation of those getters.
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m (-_setupITIPContext):
|
|
ensure method is uppercase.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m
|
|
(-getPidLidAppointmentSequence:inMemCtx:): new getter.
|
|
(-save): properly initialize CREATED, LAST-MODIFIED, DTSTAMP and
|
|
SEQUENCE from MAPI properties.
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m
|
|
(-getPidLidAppointmentSequence:inMemCtx:): new getter.
|
|
|
|
* OpenChange/NSDate+MAPIStore.m (-isNever): new accessor for dates
|
|
occurring in 4500.
|
|
|
|
* OpenChange/MAPIStoreTypes.m (MAPIChangeKeyGUIDCompare): NSData
|
|
arguments passed as "id" due to the pickiness of some versions of
|
|
gcc.
|
|
|
|
2012-03-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Main/SOGo+DAV.m (_fillCollections:where:matches:inContext:):
|
|
added bogosupport for
|
|
"{http://calendarserver.org/ns/}email-address-set".
|
|
(_principalCollectionsMatching:inContext:): relationship between
|
|
search criteria is now and "OR" rathern than an "AND".
|
|
|
|
* SoObjects/Appointments/SOGoUserFolder+Appointments.m
|
|
(-davCalendarUserType, -davEmailAddressSet): new DAV accessors.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m (-save): check recipients
|
|
even if PidLidAppointmentStateFlags is nil or 0, since all that
|
|
matters is that the "recipients" dict be present in the properties
|
|
dictionary.
|
|
|
|
* OpenChange/SOGoMAPIFSMessage.m (-init): init 2 new ivars:
|
|
fileSize and lastModificationTime.
|
|
(-properties): check the current file size and last modification
|
|
time against cached values and reload the props file if anything
|
|
changed.
|
|
(-creationTime, -lastModificationTime): new return type: NSDate
|
|
instead of NSCalendarDate.
|
|
|
|
2012-03-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreGCSFolder.m
|
|
(-predecessorChangeListForMessageWithKey:): same as below.
|
|
(-setChangeKey:forMessageWithKey:): synchronise the version cache
|
|
if the message entry is not found.
|
|
(-updateVersionsForMessageWithKey:withChangeKey:): new method,
|
|
common to all GCS messages, that updates the folder cache and
|
|
insert the PidTagChangeKey provided by the client during the save
|
|
operations.
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m
|
|
(-predecessorChangeListForMessageWithKey:): the returned list must
|
|
be binary ordered by GUID (as specified in the SPEC). We now do so
|
|
using the new function below.
|
|
(-getPidTagMessageClass:inMemCtx:): removed method, as folders are
|
|
not supposed to return a PidTagMessageClass attribute.
|
|
|
|
* OpenChange/MAPIStoreTypes.m (MAPICNCompare): added as void *
|
|
parameter so that the function can be used as a comparator
|
|
function in NSArray sort methods.
|
|
(MAPIChangeKeyGUIDCompare): new comparator function to compare the
|
|
GUID of two change key streams.
|
|
|
|
* OpenChange/MAPIStoreGCSMessage.m (-updateVersions): new proxy
|
|
method for -[MAPIStoreGCSFolder
|
|
updateVersionsForMessageWithKey:withChangeKey:].
|
|
|
|
* OpenChange/MAPIStoreGCSBaseContext.m
|
|
(+createRootSecondaryFolderWithFID:andName:forUser:): setup the
|
|
userContext in the MAPIApp object.
|
|
|
|
* OpenChange/MAPIStoreMailContext.m
|
|
(+createRootSecondaryFolderWithFID:andName:forUser:): setup the
|
|
userContext in the MAPIApp object.
|
|
|
|
* OpenChange/MAPIStoreContactsFolder.m
|
|
(-getPidTagDefaultPostMessageClass:inMemCtx:): new getter.
|
|
|
|
* OpenChange/MAPIStoreCalendarFolder.m
|
|
(-getPidTagDefaultPostMessageClass:inMemCtx:): new getter.
|
|
|
|
* OpenChange/MAPIStoreTasksFolder.m
|
|
(-getPidTagDefaultPostMessageClass:inMemCtx:): new getter.
|
|
|
|
* OpenChange/MAPIStoreFolder.m
|
|
(-getPidTagDefaultPostMessageClass:inMemCtx:): new getter.
|
|
|
|
* OpenChange/MAPIStoreMessage.m
|
|
(-getPidTagMessageStatus:inMemCtx:): removed useless getter.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_backend_init): check for
|
|
"SOGoDebugLeaks" in the user defaults and activate GSDebug
|
|
allocation utilities.
|
|
|
|
* OpenChange/NSData+MAPIStore.m (+dataWithChangeKeyGUID:andCnt:):
|
|
new method replacing _dataFromChangeKeyGUID:andCnt: from
|
|
MAPIStore{GCS,Mail}Folder.
|
|
|
|
2012-03-16 Jean Raby <jraby@inverse.ca>
|
|
|
|
* sogo.spec debian/sogo.postint: upon installation, update timestamp
|
|
on WebServerResources/* to let the webserver know the files changed.
|
|
Should fix issues where browsers would use a locally cached version
|
|
of a resource when the sogo package have just been upgraded.
|
|
|
|
2012-03-15 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (onPreferencesClick): don't
|
|
allow the user to open the preferences window multiple times.
|
|
|
|
* UI/WebServerResources/SOGoDragHandles.js (enableRightSafety):
|
|
new method to display a "safety" block on top of the right block
|
|
when dragging the handle. This fixes a problem when the right
|
|
block contains an instance of CKEditor.
|
|
|
|
2012-03-14 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m (-deleteAction): we now
|
|
unconditionaly unsubscribe from the folder and subscribe to the
|
|
folder moved to the trash.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m (-renameTo): idem.
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (focusCKEditor)
|
|
(hideSignature): new functions to wait until the CKEditor is ready
|
|
before performing certain actions. Fixes a problem with IE.
|
|
|
|
* UI/WebServerResources/SOGoTimePicker.js (position): new method
|
|
to be able to recompute the position of the widget.
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js
|
|
(refreshAttendees): when changing the attendees, we recompute the
|
|
position of the time pickers because the attendees link could
|
|
shift up or down the time fields.
|
|
|
|
2012-03-13 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxFilterEditor.js (savePreferences):
|
|
only save the filters if there's at least one rule and one action defined.
|
|
|
|
* UI/WebServerResources/ContactsUI.js (configureDraggables):
|
|
increased the delay before starting drag and drop.
|
|
|
|
* UI/WebServerResources/MailerUI.js (configureDraggables): idem.
|
|
|
|
* UI/WebServerResources/UIxAclEditor.js (addUser): fixed
|
|
positioning of new user.
|
|
|
|
2012-03-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCalendarFolder.m
|
|
(-getPidTagDefaultPostMessageClass:inMemCtx:): new getter.
|
|
|
|
* OpenChange/MAPIStoreFolder.m
|
|
(_modifyPermissionEntryForUser:withRoles:isAddition:withACLFolder:):
|
|
skip any modification when user is nil.
|
|
(_usernameFromEntryId:): when the bytes array is nil or is empty,
|
|
we return a nil username.
|
|
(-modifyPermissions:withCount:andFlags:): ignore the presence of
|
|
certain fields but not others depending on the requested
|
|
modification.
|
|
|
|
2012-03-12 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/WORequest+SOGo.m (-isIPhoneAddressBookApp): catch
|
|
the user agent of iOS 5.0.1 on iPad.
|
|
|
|
2012-03-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreGCSFolder.m (-lastMessageModificationTime):
|
|
force a synchronisation from here to ensure that the cache is
|
|
up-to-date.
|
|
|
|
* OpenChange/MAPIStoreTypes.m (_reverseCN): fixed used of ull
|
|
constants on 32 bit platforms.
|
|
|
|
* OpenChange/MAPIStoreGCSFolder.m (-componentQualifier): now
|
|
provided by the parent class itself.
|
|
(-contentComponentQualifier): new method that returns a qualifier
|
|
that translated to "c_content like '%BEGIN:XXX%'". This is a hack
|
|
to work-around the fact that calendar folders may content both
|
|
vevent and vtodo and that c_component, being part of the quick
|
|
table, is no longer available when a record is deleted.
|
|
(-synchroniseCache): update version values for deleted records
|
|
too, by taking into account the fact that their c_version value
|
|
might still be 0. Make use of contentComponentQualifier above.
|
|
Remove the modified records from the SOGoGCSFolder cache.
|
|
(-getDeletedKeysFromChangeNumber:andCN:inTableType:): wander the
|
|
list of deleted records and no longer increase the change number,
|
|
as this is now done from "synchroniseCache". Also, handle the case
|
|
were deleted records might already have been reported by comparing
|
|
their change number to the one provided as parameter. The
|
|
resulting change number is now guaranteed to be the highest one.
|
|
(-component): new subclassable method that returns a string
|
|
matching the folder's handled component.
|
|
|
|
* OpenChange/MAPIStoreFolder.m
|
|
(-getPidTagLocalCommitTimeMax:inMemCtx:): returns
|
|
MAPISTORE_ERR_NOT_FOUND if the resulting date is nil.
|
|
|
|
* OpenChange/MAPIStoreGCSMessage.m
|
|
(-getPidTagPredecessorChangeList:inMemCtx:): when the list is
|
|
missing, request a synchronisation from the container as the
|
|
message might now have been synchronised yet...
|
|
|
|
* OpenChange/MAPIStoreTypes.m (MAPICNCompare): new function that
|
|
returns an NSComparisonResult for two change numbers (reverse
|
|
format).
|
|
|
|
2012-03-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m
|
|
(-getPidLidAppointmentMessageClass:inMemCtx:): returns "IPM.Appointment".
|
|
(-getPidLidSideEffects:inMemCtx:): returns the value specified in
|
|
OXOCAL, section 2.2.2.2.
|
|
(_fixupAppointmentObjectWithUID:): renamed method and made more
|
|
generic, in order to handle the case where the response record has
|
|
already been deleted.
|
|
(-save): handle organizer and attendees more in compliance with
|
|
the spec, in order to avoid ending up with an empty event when an
|
|
invitation is being replied to. Of course, the documentation
|
|
happened to be inexact with regardes to the value of
|
|
"PidTagRecipientTrackStatus", which can be 5 even though the user
|
|
replied with another value... Also, lowered the priority of
|
|
SOGo-specific hacks for setting the organizer.
|
|
|
|
2012-03-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailVolatileMessage.m (-submitWithFlags:):
|
|
skip any message that is not of class "IPM.Note", in order to
|
|
avoid sending invitations or responses.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m (-renameTo:): reset the
|
|
imap4URL to nil and change the nameInContainer after a successful
|
|
operation.
|
|
|
|
* OpenChange/MAPIStoreFolder.m
|
|
(-getTable:andRowCount:tableType:andHandleId:): if the current
|
|
user is not the owner of the folder, the permissions table cannot
|
|
be open and MAPISTORE_ERR_DENIED is now returned.
|
|
|
|
* SoObjects/Contacts/NGVCard+SOGo.m
|
|
(_setupEmailFieldsInLDIFRecord:): the value of card elements were
|
|
not properly extracted when no email field were of type "home" or
|
|
"work".
|
|
|
|
2012-03-08 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (getTopWindow): extend the
|
|
attributes of document.body before calling "hasClassName" to fix
|
|
an error with IE9.
|
|
|
|
2012-03-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFolder.m: commented out key cache ivars
|
|
(temporarily).
|
|
|
|
* OpenChange/MAPIStoreContext.m (-getRootFolder:inMemCtx:): do not
|
|
store the looked up folders when they are not descendants of
|
|
SOGoObject. Return MAPISTORE_ERR_NOT_FOUND when the looked up
|
|
folder is owner by the current user and MAPISTORE_ERR_DENIED
|
|
otherwise.
|
|
|
|
* OpenChange/MAPIStoreGCSFolder.m (-synchroniseCache): ensure that
|
|
any record that are marked as updated are removed from the record
|
|
cache of the corresponding SOGoGCSFolder instance.
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-getPidTagSubFolders:inMemCtx:):
|
|
invoke [self folderKeys] rather than the corresponding ivar.
|
|
|
|
* OpenChange/MAPIStoreTypes.m (NSObjectFromMAPISPropValue)
|
|
(NSObjectFromSPropValue): treat PT_ERROR just as PT_LONG.
|
|
|
|
2012-03-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
(-archiveUIDs:inArchiveNamed:inContext:): output filename is now
|
|
escaped without its extension.
|
|
|
|
* SoObjects/Contacts/NGVCard+SOGo.m
|
|
(-_setupEmailFieldsInLDIFRecord:): simplified code and fixed a bug
|
|
where the home mail would be taken for both first and second email
|
|
fields when no work mail was present.
|
|
|
|
2012-03-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m,,
|
|
OpenChange/MAPIStoreAttachment.m,
|
|
OpenChange/MAPIStoreCalendarAttachment.m,
|
|
OpenChange/MAPIStoreCalendarMessage.m,
|
|
OpenChange/MAPIStoreContactsAttachment.m,
|
|
OpenChange/MAPIStoreContactsMessage.m,
|
|
OpenChange/MAPIStoreFAIMessage.m,
|
|
OpenChange/MAPIStoreFSMessageTable.m,
|
|
OpenChange/MAPIStoreFolder.m, OpenChange/MAPIStoreFolderTable.m,
|
|
OpenChange/MAPIStoreGCSFolder.m, OpenChange/MAPIStoreGCSMessage.m,
|
|
OpenChange/MAPIStoreGCSMessageTable.m,
|
|
OpenChange/MAPIStoreMailAttachment.m,
|
|
OpenChange/MAPIStoreMailFolder.m,
|
|
OpenChange/MAPIStoreMailMessage.m,
|
|
OpenChange/MAPIStoreMailMessageTable.m,
|
|
OpenChange/MAPIStoreMessage.m, OpenChange/MAPIStoreNotesMessage.m,
|
|
OpenChange/MAPIStoreObject.m,
|
|
OpenChange/MAPIStorePermissionsTable.m,
|
|
OpenChange/MAPIStoreTasksMessage.m,
|
|
OpenChange/MAPIStoreVolatileMessage.m: updated name of getters to
|
|
reflect the new nomenclature.
|
|
|
|
* OpenChange/NSArray+MAPIStore.[hm]: updated to new name of
|
|
handled structs.
|
|
|
|
* OpenChange/gen-property-selectors.py: adapted for new getters
|
|
name, based on new property names. Added all new clashing
|
|
properties to bannedProps.
|
|
|
|
2012-03-02 Jean Raby <jraby@inverse.ca>
|
|
|
|
* Scripts/sogo-backup.sh: new script to automate backups.
|
|
Updated sogo.cron to include a commented out entry for sogo-backup.sh
|
|
Include updates.php in the packages
|
|
|
|
2012-03-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m (_convertRecordToLDAPAttributes):
|
|
make sure no field get listed twice in the list of valid field
|
|
names by using "removeDoubles".
|
|
(_makeLDAPChanges): don't bother checking whether the removed
|
|
attributes are strings.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m (-[NSMutableArray
|
|
removeDoubles]): new method removing doublons.
|
|
|
|
2012-03-01 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js (appendAddressBook): assume
|
|
that lists can be created in the new addressbook.
|
|
|
|
2012-02-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m
|
|
(-moveCopyMessagesWithMIDs:andCount:fromFolder:withMIDs:andChangeKeys:wantCopy:):
|
|
we sync the version cache with the folder in order to update the
|
|
target message change keys, which was causing versioning issues
|
|
with Outlook 2010.
|
|
|
|
* OpenChange/gen-property-selectors.py: bannedProps is now an
|
|
array instead of a dict of "True" values.
|
|
Added "PrOabContainerGuid" to bannedProps.
|
|
|
|
2012-02-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreUserContext.m (-rootFolders:):
|
|
-[NGImap4Connection enableExtensions:] now takes an array of
|
|
strings rather than a single string argument.
|
|
|
|
2012-02-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m: ensure the imap connection is
|
|
available before performing certain operations, otherwise return
|
|
an exception. This only applies on methods that return an
|
|
exception, others were left untouched.
|
|
|
|
2012-02-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailContext.m
|
|
(+listContextsForUser:withTDBIndexing:inMemCtx:): added back
|
|
"trashName".
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
(-sendEMailUsingTemplateNamed:forObject:previousObject:toAttendees:withType:):
|
|
added a "msgType" parameter that is added as value to the new
|
|
"x-sogo-message-type" header.
|
|
(-sendIMIPReplyForEvent:from:to:): added a "x-sogo-message-type"
|
|
to the headers.
|
|
|
|
* OpenChange/MAPIStoreMailContext.m
|
|
(+listContextForUser:withTDBIndexing:inMemCtx:): make sure special
|
|
folders have all the "folder" prefixes appended to their list of
|
|
names (for nested folders).
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(+createRootFolder:withFID:andName:forUser:withRole:): when the
|
|
creation of a folder fails in the proper contact, fallback on the
|
|
fallback context.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m
|
|
(-toManyRelationshipKeysWithNamespaces:): for some reason, we were
|
|
explicitly returning the drafts folder name in the batch whether
|
|
the corresponding folder exists or not, which is useless and
|
|
wrong since the folder in question might actually be a child of
|
|
another folder.
|
|
|
|
* OpenChange/MAPIStoreContext.m (-init): restored "containersBag"
|
|
mechanism where root context folders that are deeper than the
|
|
first level of their hierarchy needs to have their parent folders
|
|
retained.
|
|
|
|
2012-02-23 Jean Raby <jraby@inverse.ca>
|
|
|
|
* debian/rules: add a symlink to let gdb find debugging symbols
|
|
for libSOGo on debian/ubuntu. (gdb bug #9538)
|
|
|
|
2012-02-22 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m
|
|
(-authenticationSourceIDsInDomain:): when looking for a specific
|
|
domain, also return sources that are not associated to a domain.
|
|
|
|
* SoObjects/SOGo/SOGoSource.h
|
|
(-lookupContactEntryWithUIDorEmail:inDomain:): changed this method
|
|
of the protocol to specify a domain.
|
|
(-fetchContactsMatching:inDomain:): idem.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolder.h
|
|
(-lookupContactsWithFilter:onCriteria:sortBy:ordering:inDomain:):
|
|
changed this method of the protocol to specify a domain.
|
|
|
|
* UI/WebServerResources/UIxAclEditor.js (addUser): fixed case when
|
|
both canSubscribeUsers and isPublicAccessEnabled are disabled.
|
|
|
|
* SoObjects/SOGo/SQLSource.m
|
|
(-_lookupContactEntry:considerEmail:inDomain:): if the configuration
|
|
parameter DomainFieldName is defined for the source, set the user
|
|
domain to the value of this field.
|
|
(-fetchContactsMatching:inDomain:): when the configuration parameter
|
|
DomainField is defined, limit the results to the entries matching
|
|
the specified domain.
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m (-sourceIDsInDomain): if the
|
|
source is not associated to a domain, set it to the requested
|
|
domain. It will be used by sources with dynamic domain assignation.
|
|
|
|
2012-02-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SQLSource.m (_lookupContactEntry:considerEmail:):
|
|
make sure the value of column pointer to by _kindField is not nil,
|
|
nor an NSNull instance before treating it like a string.
|
|
Use the value of "_imapHostField", when available, to map the
|
|
"c_imaphostname" value of the contact/user record.
|
|
(-init): new "_imapHostField" ivar, holder of the value of
|
|
IMAPHostFieldName of the source configuration dictionary.
|
|
|
|
2012-02-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoSQLUserProfile.m (-fetchJSONProfileFromDB):
|
|
removed an escaping hack for Oracle that should no longer be
|
|
required after the recent fixes in the Oracle adaptor, and which
|
|
was causing bad unescaping of double-escaped backslashes.
|
|
|
|
* Tests/Unit/TestSBJsonParser.m (-test_parseJSONString): added a
|
|
line for escaped characters.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
(-davEventsDefaultClassification,)
|
|
(setDavEventsDefaultClassification:)
|
|
(-davTasksDefaultClassification)
|
|
(-setDavTasksDefaultClassification:): new DAV accessors for the
|
|
default classification preferences.
|
|
|
|
* Tests/Integration/test-default-classification.py: new test
|
|
module for setting/getting defaults classification preferences.
|
|
|
|
2012-02-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-setComponent:): fetch
|
|
default classification from user defauts.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m
|
|
(-calendarClassificationsList): new getter for the list of
|
|
classifications.
|
|
(-itemClassificationText): new i81n getter.
|
|
(-setEventsDefaultClassification:, -eventsDefaultClassification)
|
|
(-setTasksDefaultClassification:, -tasksDefaultClassification):
|
|
new accessors.
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m
|
|
(-setCalendarEventsDefaultClassification:)
|
|
(-calendarEventsDefaultClassification)
|
|
(-setCalendarTasksDefaultClassification:)
|
|
(-calendarTasksDefaultClassification): new accessors related to
|
|
the user-configured default classification of calendar components.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m: s/privacy/classification/g,
|
|
which is a better description for the "CLASS" attribute.
|
|
|
|
2012-02-20 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js (onWindowResize): we now
|
|
make use of the ckeditor javascript api to reszie the container.
|
|
|
|
2012-02-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreGCSFolder.m (-setDisplayName:): new method
|
|
that intercept the setting of PR_DISPLAY_NAME_UNICODE following
|
|
the mechanism described below.
|
|
(-getPrDisplayName:inMemCtx): overriden method.
|
|
|
|
* OpenChange/MAPIStoreGCSBaseContext.m (+folderNameSuffix): new
|
|
method that returns an optional suffix to differentiate between
|
|
SOGo folders that are common to multiple Outlook folders, in
|
|
particular for Calendar and Tasks folder.
|
|
(+getFolderDisplayName:): new utility method that returns a
|
|
display name with the above suffix added properly.
|
|
|
|
* OpenChange/MAPIStoreObject.m (-setMAPIRetainCount)
|
|
(-retainCount): removed accessors as well as the corresponding
|
|
"mapiRetainCount" ivar as this was part of an unused feature.
|
|
|
|
2012-02-16 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAttendeesEditor.js (checkAttendee):
|
|
stop observing events on input field before removing the row,
|
|
otherwise the blur event is triggered and generates an error.
|
|
|
|
2012-02-14 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js (contactsListCallback): when
|
|
restoring selection after the folder refresh, call "selectElement"
|
|
on each row. This fixes the contacts selection retrieval when using the
|
|
contextual menu.
|
|
|
|
2012-02-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m (_compactAndCompleteContacts:):
|
|
we make sure that "source" is not nil before assigning it to the
|
|
compact record.
|
|
|
|
* SoObjects/SOGo/SQLSource.m (_lookupContactEntry:considerEmail:):
|
|
assign self as value for "source" in the returned record.
|
|
(-fetchContactsMatching): same as above.
|
|
|
|
* SoObjects/SOGo/SOGoSQLUserProfile.m (_sqlJsonRepresentation:):
|
|
removed obsolete method.
|
|
(-storeJSONProfileInDB:): we now properly escape the stored value
|
|
via the adaptor methods and by using a hacking EOAttribute
|
|
instance (FIXME).
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-ensureFolderExists): new
|
|
method that attempts to create a folder when it does not exists
|
|
and returns NO if that creation failed or YES in any other case.
|
|
(-createFolder:withFID:andKey:): rc was never initialized when in
|
|
success code.
|
|
(-messageKeysMatchingQualifier:andSortOrderings:)
|
|
(-folderKeysMatchingQualifier:andSortOrderings:)
|
|
(-permissionEntries): invoke "ensureFolderExists" prior to any
|
|
operation.
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(+createRootFolder:withFID:andName:forUser:withRole:): removed the
|
|
"andTDBIndexing:" argument.
|
|
(+createRootSecondaryFolderWithFID:andName:forUser:): same as
|
|
above.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m
|
|
(-subscriberCanReadMessage): returns YES when the current role is
|
|
ComponentDAndTViewer too.
|
|
|
|
2012-02-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/JavascriptAPIExtensions.js
|
|
(String.asCSSIdentifier): escape the "+" character as its going to
|
|
be used in a regexp.
|
|
|
|
2012-02-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactView.m (-photoURL, -hasPhoto): copied code
|
|
from UIxContactEditor, thereby replacing "photosURL".
|
|
|
|
2012-02-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m (+initialize): added
|
|
all simple tag to "VoidTags", based on list from
|
|
http://www.w3.org/TR/html4/index/elements.html.
|
|
|
|
* UI/WebServerResources/JavascriptAPIExtensions.js
|
|
(String.asCSSIdentifier): same as below.
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m (-setupCSSEscaping): add
|
|
"_P_" as escaping sequence for "+".
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m (+initialize): added
|
|
all simple tag to "VoidTags", based on list from
|
|
http://www.w3.org/TR/html4/index/elements.html.
|
|
|
|
2012-02-10 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (openMailTo): recipients are
|
|
now a JSON string (see commit of February 2nd).
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
(-startElement:namespace:rawName:attributes:): we should not add
|
|
end tags to void tags (ex: <br>).
|
|
|
|
2012-02-08 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (+webdavAclManager): must include
|
|
"write" in the "current-user-privilege-set" so the latest version
|
|
of AddressBook.app (bundled with 10.7.3) knows the personal
|
|
addressbook is writable by the owner.
|
|
|
|
* UI/WebServerResources/UIxAttendeesEditor.js
|
|
(performSearchCallback): set the uid parameter to null instead of
|
|
an empty string when the returned contact has no uid (ie, it comes
|
|
from a personal addressbook).
|
|
|
|
2012-02-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m: escape built DNs using the new
|
|
-[NSString escapedForLDAPDN] method.
|
|
|
|
2012-02-03 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js (onRemoveAttachments):
|
|
instead of extracting the filename from the text nodes under the
|
|
list element, we now use the title attribute. This fixes an issue
|
|
with IE that would append an extra space to the filename.
|
|
|
|
2012-02-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFolderTable.m
|
|
(-evaluatePropertyRestriction:intoQualifier:): overriden method to
|
|
always return true for restrictions on PR_CHANGE_NUM, in order to
|
|
help the fxics mechanism.
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-deleteFolder): cleanup the caches
|
|
in order to let the folder disappear.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_backend_create_root_folder):
|
|
new backend method.
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-createFolder:withFID:andKey:):
|
|
modified method to return a enum mapistore_error, in order to
|
|
better determine of the failures that occur.
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-deleteFolder): overriden method.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m (-exists): new method that
|
|
returns whether an IMAP folder exists or not yet.
|
|
|
|
2012-02-02 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m (-composeAction): recipient
|
|
addresses are now passed as a JSON-formatted string.
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m (-composeAction): the
|
|
received "mailto" parameter is now a JSON-formatted string; we
|
|
parse it accordingly.
|
|
|
|
2012-02-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreUserContext.m (-destroy): dont't release
|
|
"username" as it is not initially retained.
|
|
(+userContextWithUsername:andTDBIndexing:): the resulting instance
|
|
is cached in the table from here instead.
|
|
|
|
* OpenChange/MAPIStoreTable.m (-destroyHandle:): skih operation if
|
|
the handle parameter is 0.
|
|
|
|
* OpenChange/SOGoMAPIFSMessage.m (-delete): returns the exception
|
|
rather than raising it.
|
|
|
|
* OpenChange/SOGoMAPIFSFolder.m (-delete): new method that removes
|
|
the directory from the filesystem.
|
|
|
|
* OpenChange/MAPIStoreGCSFolder.m (-deleteFolder): overriden method.
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-deleteFolder): implemented method.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m (-removeSubFolder): new method
|
|
that removes a subfolder entry from the folder cache.
|
|
|
|
* OpenChange/MAPIApplication.m (-setUserContext:): do not retain
|
|
the user context.
|
|
|
|
2012-02-01 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxCalUserRightsEditor.js (onUpdateACL):
|
|
added some serious warnings when giving access rights to any
|
|
authenticated users or public access.
|
|
|
|
* UI/WebServerResources/UIxMailUserRightsEditor.js (onUpdateACL): idem.
|
|
|
|
* UI/WebServerResources/UIxContactsUserRightsEditor.js (onUpdateACL): idem.
|
|
|
|
* UI/Common/UIxUserRightsEditor.m (-folderName): new method that
|
|
returns the folder display name.
|
|
(-userDisplayName): now also return the names of anonymous and
|
|
authenticated users.
|
|
|
|
2012-01-31 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/WOResourceManager+SOGo.m
|
|
(-pathToLocaleForLanguageNamed:): if the language has a CamelCase
|
|
form, add the first part to the lookup languages.
|
|
|
|
2012-01-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailContext.m
|
|
(+listContextsForUser:withTDBIndexing:inMemCtx:): now returns
|
|
secondary folders.
|
|
(+[MAPIStoreOutboxContext
|
|
listContextsForUser:withTDBIndexing:inMemCtx:]): overridden method
|
|
in outbox-specific class.
|
|
|
|
2012-01-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-addProperties): overriden
|
|
method in order to intercept rename operations.
|
|
(-initWithSOGoObject:inContainer:): removed obsolete method.
|
|
|
|
* OpenChange/MAPIStoreGCSFolder.m (-addProperties): overriden
|
|
method in order to intercept rename operations.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m (-renameTo:): new method,
|
|
implementing most of the code from [UIxMailFolderActions
|
|
renameFolderAction].
|
|
|
|
* OpenChange/MAPIStoreFallbackContext.m
|
|
(+listContextsForUser:withTDBIndexing:inMemCtx:): now returns the
|
|
fallback subfolders as secondary contexts (tmp hack).
|
|
|
|
* OpenChange/MAPIStoreUserContext.m (-rootFolders): new method
|
|
replacing the "...root" methods in way that can match the
|
|
MAPIModuleName.
|
|
|
|
* OpenChange/MAPIStoreGCSBaseContext.m
|
|
(+listContextsForUser:inMemCtx:): centralized code for all GCS
|
|
classes.
|
|
|
|
2012-01-30 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxCalUserRightsEditor.js (onUpdateACL):
|
|
ask confirmation when giving access to all authenticated users or
|
|
when giving public access.
|
|
|
|
* UI/WebServerResources/UIxMailUserRightsEditor.js (onUpdateACL): idem.
|
|
|
|
* UI/WebServerResources/UIxContactsUserRightsEditor.js (onUpdateACL): idem.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (onViewEventCallback):
|
|
moved start/end time just under the event name.
|
|
|
|
* UI/WebServerResources/generic.js (showConfirmDialog): this
|
|
function now accepts two additional arguments to change the
|
|
default "yes" and "no" buttons.
|
|
|
|
2012-01-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailContext.[hm]: removed
|
|
"MAPIStoreInboxContext", "MAPIStoreSentItemsContext",
|
|
and child folders."MAPIStoreDraftsContext" and
|
|
"MAPIStoreOutboxContext" which have made obsolete by the new
|
|
provisioning and instantiation mechanisms.
|
|
|
|
* OpenChange/MAPIStoreContext.m (-woContext:, -mapping)
|
|
(-authenticator): those methods are now part of
|
|
MAPIStoreUserContext.
|
|
(-setupBaseFolder:): removed method, obsoleted by those below.
|
|
(-getRootFolder:withFID:): the "root folder" is now instantiated
|
|
by lookups from the root folder provided by the user context and
|
|
the chain of folders listed in the context url path.
|
|
(-MAPIStoreFolderClass): new method returning the Class object
|
|
representing the context's class of objects.
|
|
(-rootSOGoFolder): new method that returns the proper root folder
|
|
depending on the context's class of objects.
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-initWithURL:inContext:): all
|
|
folders are now instantiated the same way since root objects are
|
|
now stored in the MAPIStoreUserContext instancesB.
|
|
(-setContext:): new setter to provide a reference to the folder's
|
|
mapistore context instance from the topmost parent.
|
|
(-setupVersionsMessage:): new helper method invoked during the
|
|
folder instantiations, from the moment its parent context has been
|
|
made available, which does not occur at the same moment for parent
|
|
and child folders...
|
|
|
|
* OpenChange/MAPIApplication.m (-init): removed the "mapiContext"
|
|
but added the "userContext" ivars.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m (-outlookFolderClass): removed
|
|
useless method.
|
|
|
|
* OpenChange/MAPIStoreUserContext.[hm]: new class for accessing
|
|
user data common to all "mapistore contexts" as a singleton: the
|
|
same instance is used across all requests until all related
|
|
objects have been freed.
|
|
|
|
2012-01-27 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(bareFetchFields: ...) - we now cache the returned
|
|
results - just like for fetchFields:...
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolderObject.m
|
|
(_folderCalenars) - we now ask for the c_content and use
|
|
a local autorelease pool to avoid consuming too much memory
|
|
|
|
2012-01-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCommonViewsContext.[hm],
|
|
OpenChange/MAPIStoreDeferredActionsContext.[hm],
|
|
OpenChange/MAPIStoreFreebusyContext.[hm],
|
|
OpenChange/MAPIStoreJournalContext.[hm],
|
|
OpenChange/MAPIStoreRemindersContext.[hm],
|
|
OpenChange/MAPIStoreScheduleContext.[hm],
|
|
OpenChange/MAPIStoreSearchContext.[hm],
|
|
OpenChange/MAPIStoreShortcutsContext.[hm],
|
|
OpenChange/MAPIStoreSpoolerContext.[hm],
|
|
OpenChange/MAPIStoreViewsContext.[hm]: deleted obsolete classes.
|
|
|
|
* OpenChange/MAPIStoreFolder.m (supportsSubFolders): new
|
|
overridable method that returns whether the current folder can
|
|
contain subfolders, nowithstanding the right of the current user
|
|
to create or access them.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_backend_list_contexts): new
|
|
backend method.
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(+listAllContextsForUser:inMemCtx:): centralized method for
|
|
returning all contexts available from all context classes for one
|
|
user.
|
|
(+listContextsForUser:inMemCtx:): new individual method invoked by
|
|
the above. Overridden by concrete subclasses.
|
|
|
|
2012-01-26 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.{h,m} - now honor
|
|
userPasswordAlgorithm when changing the password with
|
|
no password-policy. It'll now be encrypted per your
|
|
preference. This fixes #755
|
|
|
|
2012-01-25 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SOPE/GDLContentStore/GCSFolder.m - we now use the proper
|
|
method to determine column types, avoiding the generation
|
|
of broken UPDATE statements on MySQL when snoozing alarms.
|
|
|
|
2012-01-24 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalFolderActions.m (-importAction): failback to
|
|
latin-1 when utf-8 decoding doesn't work.
|
|
|
|
2012-01-19 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxMailToSelection.js
|
|
(addressFieldChanged): remove commas before testing email regexp.
|
|
|
|
2012-01-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxFilterEditor.js (setupNewFilterData):
|
|
mark new filter as active by default.
|
|
|
|
2012-01-17 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (initPreferences): When
|
|
the mail composer is set to use HTML, the reply position popup
|
|
menu is disabled. When switching to text-based message,
|
|
the popup menu is now correctly re-enabled.
|
|
|
|
2012-01-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SQLSource.m (_lookupContactEntry:considerEmail:)
|
|
(fetchContactsMatching:): assigned self to the "source" key of the
|
|
returned dictionaries.
|
|
|
|
2012-01-13 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-caldavFreeBusyRequestOnRecipient:withUID:andOrganizer:from:to:):
|
|
if the recipient is not associated to a user (from an
|
|
authentication source), verify if it is a contact (from an
|
|
addressbook source). If it is, SOGoFreeBusyObject will take care
|
|
of fetching the freebusy information if the contact is associated
|
|
to a MS Exchange server.
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m
|
|
(-iCalPersonWithUID:): if no user is found from an authentication
|
|
source, verify if it matches a contact from an addressbook
|
|
source.
|
|
(-contentAsStringWithMethod:andUID:andOrganizer:andContact:from:to:):
|
|
added new parameter "contactID".
|
|
|
|
* SoObjects/Appointments/iCalPerson+SOGo.m (-contactIDInContext:):
|
|
new method that tries to associated the person's email address to
|
|
a contact ID.
|
|
|
|
2012-01-12 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoSource.h (-bindDN, -bindPassword)
|
|
(-MSExchangeHostname): new accessors to the SOGoDNSource protocol.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m (-_convertLDAPEntryToContact:):
|
|
added a reference to the instance source in the returned dictionary.
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m
|
|
(-_compactAndCompleteContacts:): keep the source instance in the
|
|
returned dictionary.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m (-readFreeBusyAction): the http
|
|
post can now include an optional "uid" parameter to perform the
|
|
freebusy lookup on the user corresponding to the specified
|
|
uid. This covers the special case where we want to query a user
|
|
from a contact source (not an authentication source) and for which
|
|
external freebusy information is available (currently limited to a
|
|
Microsoft Exchange server with Web Services enabled).
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m
|
|
(-fetchFreeBusyInfosFrom:to:forUser:): new method currently
|
|
limited perform a SOAP request to a MS Exhange server to retrieve
|
|
the freebusy information of a user.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-_loadAttendees): when the
|
|
attendee's email address doesn't match a user from the
|
|
authentication source(s), perform a lookup in the addressbook
|
|
source(s). If the email matches a user from a source with a
|
|
MSExchangeHostname, return a concatenation of the active user uid
|
|
and this contact uid.
|
|
|
|
* UI/WebServerResources/UIxAttendeesEditor.js
|
|
(performSearchCallback): if a matching contact has the
|
|
"isMSExchange" attribute, prefix the uid with the login uid.
|
|
(_performAjaxRequest): query the freebusy information from the
|
|
login user (/SOGo/so/<loginuser>/freebusy.ifb/ajaxRead?uid=<contact>)
|
|
when a contact uid is specified. Otherwise, perform the query on
|
|
the user instance as usual (/SOGo/so/<contactuser>/freebusy.ifb/ajaxRead).
|
|
|
|
2012-01-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m (-save): same as below +
|
|
ensure that nil fields are removed from non-new instances.
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m
|
|
(-getPrStartDate:inMemCtx:, -getPrEndDate:inMemCtx:): remove the
|
|
tz offset from dates in all-day events.
|
|
|
|
* OpenChange/MAPIStoreTasksMessage.m (-save): the dates provided
|
|
by Outlook for start, due and completed are all-day dates, we thus
|
|
need to remove the timezone offset from those dates.
|
|
|
|
2012-01-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreGCSMessageTable.m
|
|
(_fixedDatePropertyRestriction:inMemCtx:): attached the result to
|
|
the memCtx passed as parameter to avoid a leak.
|
|
|
|
2012-01-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
(_requireResponseFromAttendees:): initialize listHasChanged to NO.
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (_parseCOPYUID): the uniString
|
|
buffer was allocated one byte too short.
|
|
|
|
2012-01-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/NSObject+MAPIStore.m (-getValue:forTag:inMemCtx:):
|
|
handle PT_SVREID just as PT_BINARY.
|
|
|
|
* OpenChange/MAPIStoreCalendarFolder.m (-exchangeRightsForRoles):
|
|
add the freebusy read rights when the user has read permission on
|
|
calendar objects.
|
|
|
|
2012-01-05 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m (-_registerSource:inDomain::):
|
|
log error when duplicated IDs are found.
|
|
|
|
2012-01-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js
|
|
(onAddressBooksMenuPrepareVisibility): the "new list", "sharing" and "import"
|
|
options are now greyed out properly, depending on the object type
|
|
and the new attributes below.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m
|
|
(-currentContactFolderAclEditing)
|
|
(-currentContactFolderListEditing): new attribute accessors.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m (-sendFolderAdvisoryTemplate:):
|
|
moved method from SOGoGCSFolder in order to make it available to
|
|
other folder classes.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m (-initFromUDSource:inDomain:): use
|
|
the new setters for certain ivars + take the new "abOU" key into
|
|
account.
|
|
(-setListRequiresDot:, -listRequiresDot:, -setSourceID:)
|
|
(-setDisplayName, -displayName, -setModifiers:): new accessors.
|
|
(-_convertRecordToLDAPAttributes): we now strip object classes that
|
|
are not supported by the server prior to remove the related fields.
|
|
(-hasUserAddressBooks): new method that returns whether user
|
|
addressbooks are supported, i.e. when "abOU" is set.
|
|
(-addressBookSourcesForUser:): when "abOU" is set, returns an
|
|
array of LDAPSource instances representing the personal
|
|
addressbooks of the specified user.
|
|
(-addAddressBookSource:withDisplayName:forUser:)
|
|
(-renameAddressBookSource:withDisplayName:forUser:)
|
|
(-removeAddressBookSource:forUser:): new methods with a
|
|
self-explicit name.
|
|
|
|
* SoObjects/Contacts/SOGoContactSourceFolder.m
|
|
(-setIsPersonalSource, -isPersonalSource): new accessors for the
|
|
"isPersonalSource ivar".
|
|
(-lookupName:inContext:acquire:): setup the object classes of the
|
|
new entries to "inetorgperson" and "mozillaabpersonalpha".
|
|
(-lookupContactsWithFilter:onCriteria:sortBy:ordering:): check
|
|
whether "listRequiresDot" is set on the current source and return
|
|
the full listing if not required.
|
|
(-compare:): enhanced to treat personal sources as if they were
|
|
regular GCS folders, in order to sort them properly.
|
|
(-delete, -renameTo:): implemented method, required for the
|
|
corresponding web methods.
|
|
(-ownerInContext:) adapted method to personal sources.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m (-appendPersonalSource):
|
|
overriden method for returning LDAP-based user addresbook sources.
|
|
(-newFolderWithName:andNameInContainer:): idem
|
|
(-renameLDAPAddressBook:withDisplayName:): new method that enables
|
|
the renaming of LDAP-based user addresbook sources.
|
|
(-removeLDAPAddressBook:): new method that enables
|
|
the removal of LDAP-based user addresbook sources.
|
|
|
|
2012-01-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m (-appendPersonalSources): made
|
|
method public so that it can be easily overriden in subclasses.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-authenticationSource): new method
|
|
that returned the SOGoSource instance that successfully recognized
|
|
the user represented by the current instance.
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m
|
|
(_fillContactInfosForUser:withUIDorEmail:inDomain:): we now set
|
|
the identifier of the source that authenticated the specified user
|
|
as the "SOGoSource" entry of the returned dictionary.
|
|
|
|
2012-01-03 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAptMailNotification.m (-setupValues):
|
|
don't set the start/end times when dealing with an all-day event.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailInvitation.m (-getBody): don't
|
|
display the start/end times when dealing with an all-day event.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailReceipt.m (-_formattedUserDate:): idem.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailUpdate.m (-getSubject): idem.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailDeletion.m (-getBody): idem.
|
|
|
|
2012-01-02 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (getFilterFromEditor):
|
|
return a string (JSON) so the data is properly passed to the
|
|
opened window with IE7.
|
|
|
|
* UI/WebServerResources/UIxFilterEditor.js (ensureFieldValidity):
|
|
a field value is always considered invalid when empty.
|
|
|
|
2011-12-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSourceSchema.[hm]: new class module enabling
|
|
schema auto-discovery.
|
|
|
|
* UI/WebServerResources/UIxContactEditor.js
|
|
(validateContactEditor): the birth date is validated slightly
|
|
differently, by enabling empty and 2-digit years as well as single
|
|
digits months and days.
|
|
|
|
* UI/Contacts/UIxContactView.m (-defaultAction, -dealloc): retain
|
|
and release the "card" ivar.
|
|
(_formattedURL:): the url should be displayed only if it is
|
|
non-nil AND non-empty.
|
|
(-vcardAction): removed useless method.
|
|
|
|
* UI/Contacts/UIxContactEditor.m (init): removed the "snapshot",
|
|
"preferredEmail", "card", "photosURL" and "contactCategories" ivars.
|
|
(-ldifRecord): new getter that proxy the invocation to the client
|
|
object, but by taking the contactEmail and contactFN url
|
|
parameters. Replaces the "-snapshot" getter, since the LDIF record
|
|
is now directly edited.
|
|
(-addressBooksList): the client object container class is no
|
|
longer taken into account when fetching the current user's permissions.
|
|
(-supportCategories, -supportPhotos): new getters that enables the
|
|
categories and photo tabs.
|
|
(-setJsonContactCategories:, -jsonContactCategories): now make
|
|
use of the special "vcardcategories" parameter found in the
|
|
contact LDIF record.
|
|
|
|
* SoObjects/SOGo/SQLSource.m (_lookupContactEntry:considerEmail:):
|
|
enhanced to copy the "c_XX" fields to unprefixed equivalents.
|
|
|
|
* SoObjects/Contacts/NSString+LDIF.m (mustEncodeLDIFValue): new
|
|
method, replacing "_isLDIFSafe" in a clearly public manner.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m (-[NGLdapEntry _asDictionary]): new
|
|
utility method to convert an entry into a "SOGo LDIF record".
|
|
(-[NGLdapAttribute _asArrayOrString]): new utility method to
|
|
convert an LDAP attribute into a string or an array of strings
|
|
when the attribute has one or more values.
|
|
(-initFromUDSource:inDomain:): handle the new "modifiers",
|
|
"mapping" and "objectClasses" configuration keys, used when the
|
|
source instance is used as an addressbook. All LDAP fields are now
|
|
converted to lowercase.
|
|
(_searchAttributes): removed method as the special "*" attribute
|
|
is not costly enough to justify its existence, thereby reducing
|
|
code complexity.
|
|
(-lookupContactEntry:, -lookupContactEntryWithUIDorEmail:)
|
|
(-lookupLoginByDN:): merged common code in the new
|
|
-_lookupLDAPEntry: method, that accepts an EOQualifier as argument.
|
|
(--addContactEntry:withID:, -updateContactEntry: and
|
|
removeContactEntryWithID:): new methods for editing addressbook
|
|
sources.
|
|
|
|
* SoObjects/Contacts/SOGoContactSourceFolder.m (-source): new
|
|
getter for the "source" ivar.
|
|
(-lookupName:inContext:acquire:): accept the creation of new LDIF
|
|
entries via web methods ending with "AsContact".
|
|
(-saveLDIFEntry:, -deleteLDIFEntry:): new proxy methods for the
|
|
new SOGoSource -addContactEntry:withID:, -updateContactEntry: and
|
|
removeContactEntryWithID: methods, enabling the creation,
|
|
modification and deletion of LDAP contacts.
|
|
(-aclsForUser:): implemented method based on the array returned by
|
|
-[<SOGoSource> modifiers].
|
|
|
|
* SoObjects/Contacts/SOGoContactLDIFEntry.m (-vCard): the vcard is
|
|
now generated automatically from the LDIF record of the entry,
|
|
using the new method provided by NGVCard+SOGo.
|
|
(-aclsForUser:): new overriden method similar to the
|
|
implementation from SOGoContentObject.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSEntry.m (-setLDIFRecord)
|
|
(-ldifRecord, -hasPhoto): new accessors required by the
|
|
SOGoContactObject protocol.
|
|
(-lookupName:inContext:acquire:): return the only photo element
|
|
when the "photo" key is requested, if present in the card.
|
|
(-save): now returns an NSException, instead of void.
|
|
|
|
* SoObjects/Contacts/SOGoContactEntryPhoto.m
|
|
(+entryPhotoWithID:inContainer:, -setPhotoID:): removed methods,
|
|
since there can only be one PHOTO element per contact.
|
|
(-photo): simplified thanks to the constraint mentionned above.
|
|
|
|
* SoObjects/Contacts/NSDictionary+LDIF.m (-ldifRecordAsString):
|
|
new method implementing the code previously found in
|
|
SOGo/NSDictionary+Utilities.m, in order to produce a textual
|
|
representation of an LDIF record.
|
|
|
|
* SoObjects/Contacts/NSDictionary+LDIF.[hm]: new category module.
|
|
|
|
* SoObjects/Contacts/NGVCard+SOGo.m (-asLDIFRecord): new method
|
|
implementing the conversion code previously found in
|
|
UIxContactEditor, in order to produce an "LDIF record" in the form
|
|
of an NSDictionary matching the inetOrgPerson and
|
|
mozillaAbPersonAlpha object classes.
|
|
(-updateFromLDIFRecord:) reciprocal method to "-asLDIFRecord",
|
|
with conversion code moved from UIxContactEditor.
|
|
|
|
* SoObjects/Contacts/SOGoFolder+CardDAV.m (_isValidFilter:): make
|
|
use of the lowercase instance of the string, which was erroneously
|
|
ignored previously.
|
|
|
|
2011-12-29 Ludovic Marcotte <lmarcotte@inverse.ca.>
|
|
|
|
* SoObjects/SOGo/SOGoSQLUserProfile.m (_sqlJsonRepresentation:):
|
|
don't escape the / character as it's generating invalid JSON
|
|
output on newer versions of PostgreSQL.
|
|
|
|
* Dropped all references to "SOGoMailCheckAllUnseenCounts". We
|
|
now check all folders for which filters are defined with a
|
|
"fileinto" action - even if they are disable.
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m (_jsonFolders:) - we
|
|
use a local autorelease pool in the tight loop to avoid consuming
|
|
too many LDAP connections during its execution.
|
|
|
|
2011-12-23 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m (-viewAction): the end
|
|
date/time is now also returned.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-vacationEndDate): return
|
|
current date when no end date is defined.
|
|
|
|
* Tools/SOGoToolUserPreferences.m (-run): fixed possible out of
|
|
bound exception when parsing arguments.
|
|
|
|
2011-12-22 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m (-takeValuesFromRequest:inContext:): remove alarms
|
|
when no start date is defined.
|
|
|
|
* UI/WebServerResources/UIxTaskEditor.js (onTimeControlCheck):
|
|
disable the reminder popup menu when no start date is defined.
|
|
|
|
2011-12-15 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoSieveManager.m - slightly reworked
|
|
the code to use NSURL in order to instanciate the SOPE
|
|
Sieve code - that permits using TLS.
|
|
|
|
2011-12-14 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js (getMenus): register the
|
|
function onWindowResize only if it's not already defined.
|
|
|
|
2011-12-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/iCalEvent+SOGo.m (-quickRecord): set
|
|
"c_category" to NULL when empty.
|
|
|
|
* OGoContentStore/OCSContactFieldExtractor.m
|
|
(-extractQuickFieldsFromVCard:): same as above.
|
|
|
|
2011-12-12 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* Tools/SOGoEAlarmsNotifier.m
|
|
(-_sendMessageWithHeaders:content:toAttendee:from:withMailer:):
|
|
encode sender and recipient addresses in quoted printatble.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m
|
|
(-fixupContactRecord:): fallback on organization name when the
|
|
contact has no display name, no firstname, and no lastname.
|
|
|
|
* UI/Contacts/UIxContactView.m (-fullName): idem.
|
|
|
|
2011-12-09 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoRootPage.m (_cookieWithUsername:): the SOGoLogin
|
|
cookie now expires in one month.
|
|
|
|
2011-12-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/SOGoUI/UIxComponent.m (-userHasCalendarAccess)
|
|
(-userHasMailAccess): moved from UIxPageFrame.
|
|
|
|
* UI/Common/UIxToolbar.m (-cssClasses): new accessor that
|
|
generates the CSS classes dynamically depending on the button
|
|
state and it descriptor's cssClass.
|
|
|
|
* UI/WebServerResources/generic.js (parent$): handle the case
|
|
where window.opener is null.
|
|
|
|
2011-12-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFSMessageTable.m
|
|
(-evaluatePropertyRestriction:intoQualifier:): interpret filtering
|
|
on PR_SUBJECT_UNICODE in order to include
|
|
PR_NORMALIZED_SUBJECT_UNICODE and PR_SUBJECT_PREFIX_UNICODE in the
|
|
search, as PR_SUBJECT_UNICODE might not actually exist on the FS
|
|
messages.
|
|
|
|
* OpenChange/MAPIStoreObject.m (-addPropertiesFromRow:): perform
|
|
test on PT_STRING8 alone after "masking" the ulPropTag with 0xfff,
|
|
since PT_XX values are not bitmasks.
|
|
|
|
2011-12-06 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js (contactsListCallback):
|
|
Force deselection of all rows when changing addressbook.
|
|
|
|
2011-12-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/iCalEvent+SOGo.m (-firstOccurrenceRange):
|
|
same as below.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(_flattenCycleRecord:forRange:intoArray:): reverted to retrieving
|
|
the event start date using the old and buggy method, adapted to
|
|
the new NGCards API.
|
|
|
|
2011-12-05 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (deleteSelectedMessages)
|
|
(onMailboxTreeItemClick, onMessageSelecitionChange)
|
|
(configureMessageListEvents): update the message content div only
|
|
if it exists (will be hidden in single-window mode).
|
|
|
|
* UI/WebServerResources/UIxContactsUserFolders.js
|
|
(initUserFoldersWindow): registered "click" event on new Done button.
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js (onContactAdd): show
|
|
contacts in a pane instead of a new window.
|
|
(onContactFolderChange): new method to update the contacts list
|
|
when changing contacts folder from the new popup menu.
|
|
(configureDragHandle): new method to allow the new contacts pane
|
|
to be resizable.
|
|
(onMailEditorResize): was onWindowResize. Now computes the space
|
|
used by the search contacts pane.
|
|
|
|
* UI/WebServerResources/ContactsUI.js (getMenus): the function now
|
|
overloads the returning array with the menus defined by the
|
|
previously defined function with the same name. Used in
|
|
UIxMailEditor.wox that loads both MailerUI.js and ContactsUI.js.
|
|
(contactsListCallback): added support for 2-column view. Also
|
|
used in mail editor to refresh the new contacts pane.
|
|
(initContacts, onContactSelectionChange): don't update contactView when the div
|
|
doesn't exist.
|
|
(configureDraggables): don't allow drag'n'drop when the folders
|
|
list doesn't exist.
|
|
|
|
* UI/MainUI/UIxLoading.m: new class for empty template used when
|
|
loading the iframe in single-window mode.
|
|
|
|
2011-12-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-setCategory): ensure that
|
|
the new category is reported in the "categories" ivar.
|
|
|
|
* SoObjects/Appointments/iCalEvent+SOGo.m (-quickRecord):
|
|
-[iCalEntityObject categories] returns an NSArray that we need to
|
|
convert to a string for the database content.
|
|
|
|
* SoObjects/Appointments/iCalToDo+SOGo.m (-quickRecord):
|
|
-[iCalEntityObject categories] returns an NSArray that we need to
|
|
convert to a string for the database content.
|
|
|
|
2011-12-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreNotesMessage.m
|
|
(-getPrMessageClass:inMemCtx:): explicit method.
|
|
(-getPrSubject:inMemCtx:): explicit method.
|
|
|
|
* OpenChange/MAPIStoreMessage.m (-getPrAccess:inMemCtx:)
|
|
(-getPrAccessLevel:inMemCtx:): reimplemented methods in a generic
|
|
way just like the MAPIStoreFolder versions.
|
|
|
|
* OpenChange/MAPIStoreFSMessage.m (-subscriberCanModifyMessage):
|
|
handle the case where the message is being created.
|
|
|
|
* OpenChange/MAPIStoreFSFolder.m
|
|
(-messageKeysMatchingQualifier:andSortOrderings:): ensure the
|
|
active user can read the folder messages before returning them.
|
|
|
|
2011-12-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFAIMessage.m (-subscriberCanReadMessage)
|
|
(-subscriberCanModifyMessage): always return "NO" for subscribers.
|
|
|
|
* OpenChange/MAPIStoreFSFolder.m: mapped role strings into
|
|
variables.
|
|
|
|
* OpenChange/MAPIStoreGCSMessage.m (-getPrAccess:inMemCtx:)
|
|
(-getPrAccessLevel:inMemCtx:): return a value based on the ACL
|
|
getters below.
|
|
|
|
* OpenChange/MAPIStoreFSMessage.m (-subscriberCanReadMessage):
|
|
returns YES when the message is of class
|
|
"IPM.Microsoft.ScheduleData.FreeBusy", as a hack until freebusy
|
|
messages are handled by the backend.
|
|
|
|
* OpenChange/MAPIStoreContext.m (_prepareContextClass): now return
|
|
the context via a pointer parameter. Return a proper "enum
|
|
mapistore_error" value.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m (-appointmentWrapper):
|
|
pass the owner user as parameter to the appointment wrapper
|
|
contructor rather than the active user.
|
|
(-save): make use of the owner user coordinates instead of the
|
|
ones of the active user. Handle the "sent-by" parameter for the
|
|
organizer element.
|
|
|
|
* OpenChange/MAPIStoreFolder.m
|
|
(-openMessage:withMID:forWriting:inMemCtx:): takes a new
|
|
"forWriting:" parameter and make use of subscriberCanModifyMessage
|
|
and subscriberCanReadMessage to return a proper error code, if
|
|
needed.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_folder_open_message): added the
|
|
"write_access" parameter.
|
|
|
|
* OpenChange/MAPIStoreTasksMessage.m:
|
|
invoke component:secure: with the secure parameter set to "YES" in
|
|
all accessors that requires the iCalTask object.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m (-appointmentWrapper):
|
|
invoke component:secure: with the secure parameter set to "YES".
|
|
|
|
* OpenChange/MAPIStoreTasksMessageTable.m
|
|
(-evaluatePropertyRestriction:intoQualifier:): return
|
|
MAPIRestrictionStateAlwaysTrue for PR_SENSITIVITY since privacy
|
|
filtering is performed internally.
|
|
|
|
* OpenChange/MAPIStoreGCSMessageTable.m (-componentQualifier):
|
|
removed useless accessor, left over by a previous commit.
|
|
|
|
* OpenChange/MAPIStoreGCSFolder.m (-aclQualifier): new accessor
|
|
providing an additional qualifier when listing elements of a
|
|
table, based on the current user rights.
|
|
(-messageKeysMatchingQualifier:andSortOrderings:): make use of the
|
|
new -aclQualifier method when the active user is not the owner of
|
|
the sogo object. Slightly simplified code by storing all
|
|
qualifiers in an array passed as parameter to the EOAndQualifier
|
|
constructor.
|
|
|
|
* OpenChange/MAPIStoreMessage.m (-subscriberCanReadMessage)
|
|
(-subscriberCanModifyMessage): new getters for ACL operations at
|
|
the message level.
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-subscriberCanCreateMessages)
|
|
(-subscriberCanModifyMessages, -subscriberCanReadMessages)
|
|
(-subscriberCanDeleteMessages, -subscriberCanCreateSubFolders):
|
|
new getters for ACL operations at the folder level.
|
|
|
|
2011-11-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m
|
|
(_expandPropertyResponse:forObject:): set the element in the 404
|
|
bag only if the value is nil to avoid iCal complaining about lack
|
|
of support for sharing.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarProxy.m (+webdavAclManager):
|
|
overriden method.
|
|
(-davGroupMemberSet, -setDavGroupMemberSet:): instantiate the
|
|
"Calendar" object from the result of -[self lookupUserFolder]
|
|
instead of "container", since we might attach proxy objects to
|
|
other containers.
|
|
|
|
* Main/SOGo+DAV.m (-davPrincipalURL): new DAV getter.
|
|
(-davPrincipalSearchPropertySet): added "calendar-user-type", even
|
|
though it's a lie.
|
|
(-davComplianceClassesInContext:): declare
|
|
"calendar-query-extended", "extended-mkcol",
|
|
"calendarserver-principal-property-search" as additional classes,
|
|
even though it's a lie.
|
|
|
|
* SoObjects/Appointments/SOGoUserFolder+Appointments.m
|
|
(-davCalendarUserAddressSet): make sure each email address is
|
|
reported only once, we also return the user principal in the list
|
|
(for iCal).
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (-davComplianceClassesInContext:):
|
|
declare "calendar-query-extended", "extended-mkcol",
|
|
"calendarserver-principal-property-search" as additional calendar
|
|
classes, even though it's a lie.
|
|
(-davCurrentUserPrincipal): new method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m (-davResourceId):
|
|
new DAV getter.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m (-davResourceId): new DAV getter.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m (-davPrincipalURL): moved from
|
|
SOGoUserFolder.
|
|
|
|
* SoObjects/SOGo/WORequest+SOGo.m (-isICal, -isICal4): updated for
|
|
iCal 5.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentInboxFolder.m
|
|
(-davScheduleDefaultCalendarURL): fixed method to return a
|
|
properly formatted XML chunk.
|
|
(-displayName): returns nameInContainer.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-davCalendarTimeZone): fixed by embedding the VTIMEZONE element
|
|
in a VCALENDAR.
|
|
|
|
2011-11-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreTypes.m (NSObjectFromSPropValue): set the
|
|
resulting string to @"" when the unicode or string pointers are
|
|
NULL.
|
|
|
|
2011-11-28 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/SOGoUI/UIxComponent.m (-singleWindowModeEnabled): new method
|
|
that returns true if the single-window mode is enabled. This mode
|
|
can be forced by setting the cookie "SOGoWindowMode" to "single".
|
|
|
|
* UI/MailerUI/UIxMailEditor.m (-contactFolders)
|
|
(-personalContactInfos, -setCurrentFolder:, -currentContactFolderId)
|
|
(-currentContactFolderName, -currentContactFolderOwner)
|
|
(-currentContactFolderClass): getters/setters for new contacts
|
|
pane in the mail editor.
|
|
|
|
2011-11-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(-initFromURL:withConnectionInfo:andTDBIndexing:): assign a
|
|
SOGoUser corresponding to the object owner and to the active user
|
|
to the "ownerUser" and "activeUser" ivars.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-bareFetchFields:from:to:title:component:additionalFilters:):
|
|
we must not attempt to instantiate an EOQualifier with a "nil"
|
|
format, otherwise it causes an exception. Settings the qualifier
|
|
as nil instead.
|
|
|
|
2011-11-24 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js (resetCategoriesMenu): the
|
|
event listener must be on mousedown since click is already
|
|
observed by document.body.
|
|
|
|
2011-11-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContactsMessageTable.m
|
|
(-evaluatePropertyRestriction:intoQualifier:): returns
|
|
"MAPIRestrictionStateAlwaysTrue" for PR_SENSITIVITY.
|
|
|
|
* OpenChange/MAPIStoreContactsMessage.m
|
|
(-getPrSensitivity:inMemCtx:): new getter that always returns 0.
|
|
|
|
2011-11-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/NSArray+MAPIStore.m (-asMVUnicodeInMemCtx:) renamed
|
|
from "asArrayOfUnicodeStringsInCtx".
|
|
(-asMVUnicodeInMemCtx:, -asMVLongInMemCtx:): new conversion
|
|
methods.
|
|
|
|
* OpenChange/MAPIStoreTypes.m (NSObjectFromValuePointer):
|
|
simplified method by using set_SPropValue_proptag and
|
|
NSObjectFromSPropValue.
|
|
|
|
* OpenChange/NSObject+MAPIStore.m (-getValue:forTag:inMemCtx:):
|
|
renamed from "getMAPIValue:...".
|
|
(-arrayFromMAPIMVLong:, +arrayFromMAPIMVUnicode:)
|
|
(+arrayFromMAPIMVString:, +arrayFromMAPIMVBinary:)
|
|
(+arrayFromMAPIMVGuid:, +arrayFromMVShort:, +arrayFromMVLong:)
|
|
(+arrayFromMVI8:, +arrayFromMVUnicode:, +arrayFromMVString:)
|
|
(+arrayFromMVBinary:, +arrayFromMVGuid:, +arrayFromMVFileTime:)
|
|
new constructors for multivalue types.
|
|
|
|
2011-11-21 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/WORequest+SOGo.m - for now, we consider iCal 4
|
|
and iCal 5 to be the same and added new strings to recognize
|
|
Apple Address Book on Mac OS X 10.7 (Lion)
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m - we now skip list
|
|
if we deal with Apple Address Book. If we don't do this and
|
|
a "vlist" is present, no card will be displayed at all.
|
|
|
|
2011-11-21 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (initPreferences):
|
|
initialize calendar for the new vacation end date optional parameter.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-enableVacationEndDate)
|
|
(-disableVacationEndDate, -setEnableVacationEndDate:)
|
|
(-vacationEndDate, -setVacationEndDate:): getters/setters for the
|
|
new optional vacation end date.
|
|
|
|
2011-11-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-lookupFolder:): explicitly set
|
|
the MAPIStoreContext's woContext as context to the looked up
|
|
folder, although one could expect it to have been set during the
|
|
lookup at the SOGo level...
|
|
|
|
* OpenChange/MAPIStoreFSFolder.m (-lookupFolder:): removed useless
|
|
overriding of method.
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-[MAPIStoreMailFolder
|
|
lookupFolder:]): removed useless overriding of method.
|
|
(-[MAPIStoreInboxFolder lookupFolder:]): in altnamespace mode,
|
|
perform the same association of the woContext to the looked up
|
|
folder as in MAPIStoreFolder.
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(-initFromURL:withConnectionInfo:andTDBIndexing:): instantiate a
|
|
SOGoUser corresponding to the username of the new context and
|
|
associated it to the woContext ivar.
|
|
|
|
2011-11-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-permissionEntries): new public
|
|
method.
|
|
(-modifyPermissions:withCount:andFlags:): new backend op public
|
|
method.
|
|
(-aclFolder, -rolesForExchangeRights:, -exchangeRightsForRoles:):
|
|
new mandatory methods.
|
|
|
|
* OpenChange/SOGoMAPIFSFolder.m (-defaultUserID, -addUserInAcls:)
|
|
(-removeAclsForUsers:, -aclUsers, -aclsForUser:)
|
|
(-setRoles:forUser:): implemented standard ACL methods.
|
|
|
|
* OpenChange/MAPIStorePermissionsTable.m
|
|
(+[MAPIStorePermissionEntry
|
|
entryWithUserId:andMemberId:forFolder:]): constructor now takes a
|
|
memberId and the container folder as parameters.
|
|
(-[MAPIStorePermissionEntry getPrMemberId:inMemCtx:]): now based
|
|
on the new memberId ivar.
|
|
(-[MAPIStorePermissionEntry getPrEntryId:inMemCtx:]): now make use
|
|
of MAPIStoreInternalEntryId for regular member ids and return an
|
|
empty blob for special ones, as specified in oxcperm.
|
|
(-[MAPIStorePermissionEntry getPrMemberName:inMemCtx:]): now
|
|
returns the real CN of the user for regular member ids and return
|
|
@"" or @"Anonymous" for special ones, as specified in oxcperm.
|
|
(-[MAPIStorePermissionEntry getPrMemberName:inMemCtx:]): now
|
|
returns the real member rights, based on the aclFolder of the
|
|
container, using standard SOGo methods.
|
|
|
|
* OpenChange/MAPIStorePermissionsTable.h
|
|
(MAPIStorePermissionsEntry): made class public.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_folder_modify_permissions): new
|
|
backend op.
|
|
(sogo_backend_init): invoke "disableLocalCache" to avoid the
|
|
caching of ACL.
|
|
|
|
* SoObjects/SOGo/SOGoCache.m (-disableLocalCache): new method to
|
|
disable the local cache altogether (helper for non-WO access).
|
|
|
|
2011-11-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreSamDBUtils.m: new module containing helpers
|
|
pertaining to the SamDB.
|
|
(MAPIStoreSamDBUserAttribute): new function that returns the value
|
|
of a specified key from a user record matching one simple criteria.
|
|
(MAPIStoreInternalEntrydId, MAPIStoreExternalEntryId): moved
|
|
functions from MAPIStoreMessage.m.
|
|
|
|
* OpenChange/MAPIStoreMessage.m (MAPIStoreInternalEntryId): now
|
|
takes a ldb_context * parameter pointing to the samdb, which
|
|
enables us: 1) to return the real legacyExchangeDN 2) to make use
|
|
of sAMAccountName as search parameter for the username.
|
|
|
|
2011-11-16 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoSieveManager.m (-updateFiltersForLogin:...)
|
|
We now handle connection exceptions to avoid crashing sogod.
|
|
|
|
2011-11-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContactsMessage.m (-getPrBody:inMemCtx:):
|
|
same as below.
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m (-getPrBody:inMemCtx:):
|
|
removed parsing hack since things are now done properly from
|
|
NGCards.
|
|
|
|
* Tests/Unit/TestVersit.m (-test_rendering, -test_parsing):
|
|
adapted to new NGCards data structure and improved to test further
|
|
important use cases.
|
|
|
|
2011-11-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/Unit/TestVersit.m: new test module for versit parsing and
|
|
outputting.
|
|
|
|
2011-11-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m (-save): set the DESCRIPTION
|
|
field to the value of PR_BODY_UNICODE or, a textual version of
|
|
PR_HTML. COMMENT would be nice later.
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m (-getPrBody:inMemCtx:):
|
|
make use of -[NSString asCardAttributeValues].
|
|
|
|
* OpenChange/MAPIStoreContactsMessage.m (-save): set the NOTE
|
|
field to the value of PR_BODY_UNICODE or, a textual version of
|
|
PR_HTML.
|
|
|
|
* OpenChange/MAPIStoreMessage.m (-addProperties): intercept
|
|
PR_RTF_COMPRESSED attributes and convert them automatically to a
|
|
PR_HTML attribute.
|
|
|
|
* OpenChange/MAPIStoreVolatileMessage.m (-addProperties:):
|
|
transfer the content of the "properties" ivar instead of the
|
|
"newProperties" parameter, so as to benefit from treatment that
|
|
could have happened in parent classes.
|
|
|
|
* OpenChange/MAPIStoreMailVolatileMessage.m
|
|
(_generateMailDataWithBcc:): don't write the resulting mail body
|
|
to /tmp/mimegen.eml.
|
|
|
|
2011-11-09 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SOGoRootPage.js (onLoginClick): don't
|
|
assume that the checkbox rememberLogin is always part of the template.
|
|
|
|
2011-11-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreRecurrenceUtils.m
|
|
(-fillRecurrencePattern:withStartDate:andEndDate:): fixed a crash
|
|
occurring when no byday mask was specified. We also force a value
|
|
for the monthday in the case of a yearly event without a proper
|
|
one.
|
|
|
|
2011-11-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-addProperties:): we now override
|
|
this method instead of -addPropertiesFromRow:. Also, invoking
|
|
resetCache is no longer required since the "properties" ivar is
|
|
no longer used in this class.
|
|
|
|
* OpenChange/MAPIStoreObject.m (-addPropertiesFromRow:): now
|
|
invokes [self addProperties:] to modify the "properties" ivar,
|
|
instead of doing it directly. This enables subclasses to only need
|
|
overriding -addProperties:.
|
|
(-resetProperties): removed useless method.
|
|
|
|
* OpenChange/MAPIStoreVolatileMessage.m (-addPropertiesFromRow:):
|
|
removed obsolete overloading of method.
|
|
|
|
2011-11-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMessage.m (-setReadFlag:): make overrides
|
|
optional.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m (-save): handle all day
|
|
events based on the value of PidLidAppointmentSubType.
|
|
Don't add the timezone component to the vCalendar in that case.
|
|
Take PidLidAppointmentStateFlags into account before building the
|
|
list of attendees. Take the organizer passed in the recipients
|
|
into account when specified.
|
|
|
|
2011-11-01 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAclEditor.js (addUser): fixed CSS class
|
|
"normal-person" that was replaced by "normal-user".
|
|
|
|
2011-11-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m (-save): added work-around
|
|
for setting of organizer as an attendee record.
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m (-setReadFlag:): implemented
|
|
basic method, only dealing with actual setting or unsetting of
|
|
"\Seen".
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m (-setReadFlag:): overriden
|
|
with dumb implementation, since it seems to be invoked on this
|
|
kind of object.
|
|
|
|
2011-10-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContactsAttachment.m
|
|
(-getPrAttachEncoding:inMemCtx:, -getPrAttachFlags:inMemCtx:)
|
|
(-getPrAttachmentFlags:inMemCtx:)
|
|
(-getPrAttachmentHidden:inMemCtx:)
|
|
(-getPrAttachmentLinkid:inMemCtx:, -getPrAttachSize:inMemCtx:):
|
|
new getters.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_message_set_read_flag): new
|
|
backend op.
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m (-_fetchBodyData): fetch body
|
|
keys with BODY.PEEK rather than just BODY, to disabled the
|
|
automatic setting of the "\Seen" flag.
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m (-fetchBLOBWithPeek:): new
|
|
method that enables the fetching of body parts either via "BODY"
|
|
or "BODY.PEEK".
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m
|
|
(-addRequiredKeysOfStructure:path:toArray:acceptedTypes:withPeek:):
|
|
added a "withPeek" parameter that enables the fetching of body
|
|
parts either via "BODY" or "BODY.PEEK".
|
|
|
|
2011-10-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailVolatileMessage.m (_generateMailData):
|
|
don't consider "orig" type recipients.
|
|
Added "withBCC" parameter. Reorganized code to produce better
|
|
mime-compliant messages, in particular with regards to the
|
|
handling of multipart/* body parts. Split method in many
|
|
specialized submethods for code clarity.
|
|
(-getMessageData:inMemCtx:): overriden method for this class.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_message_modify_recipients):
|
|
adapted backend function to the new prototype, where the message
|
|
recipients are preparsed and now passed an array of "struct
|
|
mapistore_message_recipient", rather than a struct
|
|
ModifyRecipientRow.
|
|
|
|
* OpenChange/MAPIStoreTypes.m (NSObjectFromValuePointer): new
|
|
function returning an instance of an appropriate class based on a
|
|
property tag and a corresponding value passed as void *.
|
|
|
|
* OpenChange/MAPIStoreFSMessage.m (-canGetProperty:): method moved
|
|
up in MAPIStoreVolatileMessage.
|
|
|
|
2011-10-27 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAttendeesEditor.js
|
|
(performSearchCallback): show a list email address (usually an
|
|
LDAP group) unless the list has no email address (usually a
|
|
personal contacts list).
|
|
|
|
* UI/WebServerResources/SOGoRootPage.js (initLogin): added sliding
|
|
effect to about box.
|
|
|
|
2011-10-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreObject.m (-canGetProperty:): new method that
|
|
determines whether a property can be requested on a
|
|
MAPIStoreObject instance or descendant thereof, in order to take
|
|
different ways of fetching properties into account, whether
|
|
through a dynamic getter or some dictionary...
|
|
(-getAvailableProperties:inMemCtx:): now compute the returned
|
|
array based on the result of invocations of -[self
|
|
canGetProperty:].
|
|
|
|
* OpenChange/MAPIStoreFSMessage.m
|
|
(+getAvailableProperties:inMemCtx:): fixed a leak by attaching the
|
|
array of enum MAPITAGS to "properties".
|
|
(-canGetProperty:): overriden method.
|
|
|
|
* OpenChange/MAPIStoreVolatileMessage.m: MAPIStoreMemMessage renamed
|
|
to MAPIStoreVolatileMessage.
|
|
(-getAvailableProperties:inMemCtx:) removed obsolete method.
|
|
(-init): creationTime and lastModificationTime are now ivars.
|
|
(-lookupAttachment:): implemented manadatory method.
|
|
|
|
* OpenChange/SOGoMAPIVolatileMessage.m: SOGoMAPIMemMessage renamed
|
|
to SOGoMAPIVolatileMessage.
|
|
|
|
2011-10-26 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SQLSource.m
|
|
(-checkLogin:password:perr:expire:grace:): authentication can be
|
|
performed against any database column defined in the new
|
|
LoginFieldNames defaults parameter.
|
|
(-_lookupContactEntry:considerEmail:): idem.
|
|
|
|
2011-10-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFSMessage.m,
|
|
OpenChange/MAPIStoreMailVolatileMessage.m: new descendants of
|
|
MAPIStoreMemMessage.
|
|
|
|
* OpenChange/MAPIStoreDraftsMessage: replaced class with
|
|
MAPIStoreMemMessage, enabling the creation of mails from any mail
|
|
folder.
|
|
|
|
* OpenChange/MAPIStoreMessage.m
|
|
(-modifyRecipientsWithRows:andCount:andColumns:): take BCC
|
|
recipients into account.
|
|
|
|
* OpenChange/MAPIStoreMessage.m
|
|
(_convertRecipientFromRow:andColumns:): temp hack: make use of
|
|
set_mapi_SPropValue_sogo instead of set_mapi_SPropValue, which was
|
|
reversed in openchange to the old behaviour.
|
|
|
|
* OpenChange/MAPIStoreObject.m (-init): renamed "newProperties"
|
|
ivar to "properties".
|
|
(-addNewProperties:): renamed to "-addProperties:"
|
|
(-resetNewProperties:): renamed to "-resetProperties:"
|
|
(-setProperties:): renamed to "-addPropertiesFromRow:"
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_message_create_attachment):
|
|
implemented new backend method.
|
|
|
|
2011-10-25 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoRootPage.m (-cookieUsername)
|
|
(-cookieWithUsername:): getter/setter for the new SOGoLogin
|
|
cookie. This is used for the new "Remember username" checkbox that
|
|
appears on the login page.
|
|
|
|
2011-10-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/EOQualifier+MAPIFS.[hm]: now evaluates
|
|
SOGoMAPIMemMessage.
|
|
|
|
* OpenChange/SOGoMAPIFSMessage.[hm]: now a subclass of
|
|
SOGoMAPIMemMessage.
|
|
|
|
* OpenChange/MAPIStoreDraftsMessage.m (_saveAttachment:): make use
|
|
of MAPIStoreMIME.
|
|
|
|
* OpenChange/MAPIStoreMIME.[hm]: new class module implementing a
|
|
singleton helper that deduces mime types from file extensions,
|
|
based on the content of /etc/mime.types.
|
|
|
|
* OpenChange/MAPIStoreAttachment.m,
|
|
OpenChange/MAPIStoreCalendarAttachment.m,
|
|
OpenChange/MAPIStoreMailAttachment.m: replaced the
|
|
getProperty:withTag:inMemCtx: method with its switch case to make
|
|
use of the more recent dynamic property getters API.
|
|
|
|
* OpenChange/gen-property-selectors.py: added a few exclusions,
|
|
which are either undocumented or unused.
|
|
|
|
2011-10-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreAttachment.m
|
|
(-getProperty:withTag:inMemCtx:): fallback on super's
|
|
implementation to benefit from the property getters methods.
|
|
|
|
* OpenChange/MAPIStoreContactsMessage.m (-getPrBody:inMemCtx:): if
|
|
the attribute length is 0, return MAPISTORE_ERR_NOT_FOUND.
|
|
(-_fetchAttachmentParts, -getPidLidHasPicture:inMemCtx:)
|
|
(-attachmentKeysMatchingQualifier:andSortOrderings:)
|
|
(-lookupAttachment:): new methods for retrieving contact pictures
|
|
in the VCARD.
|
|
(_updatePhotoInVCard:fromProperties:): new method that inserts a
|
|
"PHOTO" element in the VCARD depending on the PR_ATTACH_*
|
|
properties.
|
|
|
|
* OpenChange/MAPIStoreContactsAttachment.[hm]: new class module
|
|
for handling contact "attachments", that is, contact pictures.
|
|
|
|
* OpenChange/plreader.m (PLReaderDumpPListFile): ignore "error" if
|
|
the returned property list object is not nil, since "error" might
|
|
still be set with GNUstep.
|
|
|
|
2011-10-21 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m
|
|
(-_compactAndCompleteContacts:): add the key "isGroup" when defined.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m (:_usersForResults:inDomain:):
|
|
add a boolean value in the returning array that identifies if the
|
|
user is actually a group.
|
|
|
|
* UI/Common/UIxAclEditor.m (-currentUserClass): return the CSS
|
|
class that identifies the user as a single contact or list of contacts.
|
|
|
|
* UI/WebServerResources/UIxContactsUserFolders.js
|
|
(addUserLineToTree): extract the new field that is set to 1 when
|
|
the user is actually a group.
|
|
|
|
* UI/WebServerResources/UIxAclEditor.js (addUser): new argument to
|
|
to identify the type of user (person or group).
|
|
|
|
* UI/WebServerResources/UIxMailToSelection.js
|
|
(expandContactListCallback): don't expand contacts without an
|
|
email address.
|
|
|
|
2011-10-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreDraftsMessage.m (-getPrDisplayTo:inMemCtx:)
|
|
(-getPrDisplayBcc:inMemCtx:): new getters.
|
|
|
|
2011-10-18 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (log): fixed an issue with
|
|
Firefox and IE when SOGo was opened using a targeted link.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
(-copyUIDs:toFolder:inContext:): now returns the raw IMAP response
|
|
when the copy operation failed (most probably something like "Over quota").
|
|
|
|
2011-10-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_backend_init): invoke
|
|
-[NSProcessInfo initializeWithArguments:count:environment:] in
|
|
order to avoid an infinite loop with GNUstep occurring under
|
|
strange circumstances. Make use of "samba" as process name.
|
|
|
|
* OpenChange/MAPIStoreMapping.m (-initForUsername:withIndexing:):
|
|
attach the struct tdb_wrap *indexing to a new memCtx ivar, in
|
|
order to make sure its value is retained until the release of the
|
|
mapping instance.
|
|
|
|
2011-10-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreGCSMessageTable.m
|
|
(-evaluatePropertyRestriction:intoQualifier:): removed useless
|
|
condition to avoid warnings with certain versions of gcc.
|
|
|
|
2011-10-14 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxMailToSelection.js
|
|
(addressFieldChanged): we now split on commas only if no email
|
|
address is detected.
|
|
|
|
* UI/WebServerResources/SOGoMailDataSource.js (load): associated a
|
|
unique id to the source using the url and its parameters.
|
|
|
|
* UI/WebServerResources/SOGoDataTable.js (render): add the new
|
|
source id to the current render id. This should solve incorrect
|
|
messages appearing when fast-switching between folders or sort order.
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m (-_rangeOfURLInRange:):
|
|
fixed handling of brackets (inequality signs <>).
|
|
|
|
2011-10-14 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (setRoles:forUser:..)
|
|
We now even cache "None" roles.
|
|
* SoObjects/Mailer/SOGoMailObject.m (fetchCoreInfos)
|
|
We now handle correctly untagged responses.
|
|
|
|
2011-10-13 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* Tools/SOGoToolUserPreferences.m (-run): added possibility to
|
|
specify a file (-f filename) when setting a user
|
|
default/setting. Removed the constraint of specifying
|
|
administrative credentials of the SIeve server when not setting a
|
|
parameter related to Sieve.
|
|
|
|
2011-10-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_manager_generate_uri): new
|
|
backend op. Code from j.kerihuel@openchange.org.
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m
|
|
(-initWithICalEvent:andUser:andSenderEmail:inTimeZone:): take a
|
|
new "senderEmail" parameter in order to help the process of
|
|
deducting the attendee in an invitation message not including a
|
|
"METHOD".
|
|
(-_setupITIPContextFromAttendees): fixed method to set the method
|
|
as "REPLY" when the user is organizer rather than the other way
|
|
around.
|
|
|
|
2011-10-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m (-_setupITIPContext):
|
|
new method that contains the common code for determining the ITIP
|
|
status of the event and of the attendees.
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m (-init): "headerMethod" has
|
|
become obsolete.
|
|
(-getPrIconIndex:inMemCtx:, -getPrMessageClass:inMemCtx:): when
|
|
mail is event, forward the invocation to the
|
|
MAPIStoreAppointmentWrapper equivalent.
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m
|
|
(-getPidLidReminderSet:inMemCtx:)
|
|
(-getPidLidReminderDelta:inMemCtx:)
|
|
(-getPidLidReminderTime:inMemCtx:)
|
|
(-getPidLidReminderSignalTime:inMemCtx:)
|
|
(-getPidLidReminderOverride:inMemCtx:)
|
|
(-getPidLidReminderType:inMemCtx:)
|
|
(-getPidLidReminderPlaySound:inMemCtx:)
|
|
(-getPidLidReminderFileParameter:inMemCtx:): implemented those
|
|
alarm-related getters (see OXORMDR).
|
|
(-getPrIconIndex:inMemCtx:, -getPrMessageClass:inMemCtx:): updated
|
|
code to handle REQUEST, REPLY (positive, negative and tentative)
|
|
as well as "COUNTER" and "CANCEL".
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m (_setupAlarmDataInEvent:):
|
|
new method invoked from -save that sets VALARM elements on the
|
|
current event based on the PidLidReminder* properties.
|
|
(-getPidLidReminderSet:inMemCtx:)
|
|
(-getPidLidReminderDelta:inMemCtx:)
|
|
(-getPidLidReminderTime:inMemCtx:)
|
|
(-getPidLidReminderSignalTime:inMemCtx:)
|
|
(-getPidLidReminderOverride:inMemCtx:)
|
|
(-getPidLidReminderType:inMemCtx:)
|
|
(-getPidLidReminderPlaySound:inMemCtx:)
|
|
(-getPidLidReminderFileParameter:inMemCtx:): new alarm-related
|
|
forwarders to homonymous methods in MAPIStoreAppointmentWrapper.
|
|
|
|
2011-10-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-synchroniseCache): improved
|
|
method to only fetch non-deleted messages in part 1, and to
|
|
automatically remove message records in part 2, so that we know
|
|
when a delete message has already been taken into account with
|
|
regards to version numbers. The version number generation having
|
|
been moved from getDeletedKeysFromChangeNumber:andCN:inTableType:.
|
|
This also fixes the case where the last modification date was
|
|
increased when any deleted message was found, because "known
|
|
deleted messages" are now ignored.
|
|
(-getDeletedKeysFromChangeNumber:andCN:inTableType:) Simplified
|
|
method by moving most of it into -synchroniseCache and by
|
|
returning the highest deleted modseq reported by the latter.
|
|
|
|
2011-10-07 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxPreferences.js
|
|
(displayAccountSignature): fixed the link to edit the signature
|
|
when no signature was defined.
|
|
|
|
2011-10-06 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (getListIndexForFolder): the
|
|
personal folder now stays on top, as returned by the server.
|
|
|
|
2011-10-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (-davComplianceClassesInContext:):
|
|
take all the supported DAV object classes in charge, in order to
|
|
simplify the handling of those on topmost folders.
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-deleteMessageWithMID:andFlags:):
|
|
invoke "prepareDelete" on the message object when available.
|
|
|
|
2011-10-03 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (snoozeAlarm): new function to
|
|
snooze an alarm for a specific number of minutes.
|
|
(showAlarmCallback): offer the user to snooze the alarm right
|
|
after triggering the browser-native alert.
|
|
(showSelectDialog): new function that construct a dialog box with
|
|
a popup menu.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m (-viewAction): accepts the
|
|
new form parameter snoozeAlarm, which delays the alarm to the
|
|
specified number of minutes.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m (-snoozeAlarm:):
|
|
new method to set the next alarm of the event in a specified
|
|
number of minutes. Only affect the quick table, not the original vCalendar.
|
|
|
|
2011-10-03 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:)
|
|
We compare sequence numbers to make sure we correctly accept
|
|
invitation replies for the "right" objects
|
|
|
|
2011-10-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreDraftsMessage.m (-submit): unregister id
|
|
from mapping after operation.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_message_modify_recipients):
|
|
this backend op now has a "columns" arguments for the user data
|
|
row.
|
|
|
|
2011-09-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m (-getMessageData:inMemCtx:):
|
|
same as below.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m
|
|
(-getMessageData:inMemCtx:): delegated code to
|
|
MAPIStoreAppointmentWrapper so that organizers and invitees are
|
|
properly reported both in invitation emails and events.
|
|
|
|
* OpenChange/MAPIStoreMessage.m (MAPIStoreInternalEntryId)
|
|
(MAPIStoreExternalEntryId): new helper functions that return an
|
|
NSData with the entry id for the requested user or contact.
|
|
(-getMessageData:inMemCtx:): adapted to the new mapistore_message
|
|
struct and column handling.
|
|
|
|
* OpenChange/NSData+MAPIStore.m (-appendUInt16): new method.
|
|
|
|
* OpenChange/EOQualifier+MAPIFS.m (-[EOKeyValueQUalifier
|
|
_evaluateMAPIFSMessageProperties:): ensure finalKey is never nil
|
|
nor undefined.
|
|
|
|
2011-09-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFSMessage.m (-getPrChangeKey:inMemCtx:):
|
|
first return the value stored in the plist, if present. Otherwise
|
|
fallback to the method making use of objectVersion.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_folder_move_copy_messages):
|
|
added the "target_change_keys" parameter.
|
|
|
|
* OpenChange/MAPIStoreFolder.m
|
|
(-moveCopyMessagesWithMID:fromFolder:withMID:wantCopy:): ensure
|
|
the message URL exists in the MAPIStoreMapping, otherwise fail
|
|
with MAPISTORE_ERR_NOT_FOUND, to avoid a crash. Passe the target
|
|
changeKey as property to the new message.
|
|
|
|
* OpenChange/MAPIStoreFSMessage.m (-objectVersion): return
|
|
0xff...fff when "version" does not exist in the object properties.
|
|
|
|
2011-09-27 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Common/UIxPageFrame.m (-userHasVacationEnabled): new method
|
|
that returns whether the user has an automatic vacation message enabled.
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m (-setBusyOffHours): new setter
|
|
for the new defaults SOGoBusyOffHours, which defines if periods
|
|
outside business hours should be opaque (busy).
|
|
(-busyOffHours): getter corollary to the new method above.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-setBusyOffHours:): new
|
|
setter for the new defaults SOGoBusyOffHours.
|
|
(-busyOffHours): getter corollary to the new method above.
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m
|
|
(-fetchFreeBusyInfosFrom:to:): add off-hours if defaults
|
|
SOGoBusyOffHours is true.
|
|
|
|
2011-09-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFolder.m
|
|
(-moveCopyMessagesWithMID:fromFolder:withMID:wantCopy:): ensure
|
|
that "data" is not NULL before passing it to
|
|
set_SPropValue_proptag as it might be converted to a PT_ERROR
|
|
value.
|
|
(-moveCopyMessageWithMID:fromFolder:withMID:wantCopy:): fixed
|
|
method name. Added PR_CHANGE_KEY and PR_PREDECESSOR_CHANGE_LIST to
|
|
list of excluded properties.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m (-sendMailAndCopyToSent:):
|
|
renamed "sendMail" and made copying the messsage to the sent
|
|
folder opetional.
|
|
(-sendMail): new method that invokes the above one with "yes".
|
|
|
|
* OpenChange/MAPIStoreMemMailMessage.m (-save): fixed "subject"
|
|
header, "to" and other recipients. Fixed "content-type", that was
|
|
deduced after "message" was generated. Take the client-provided
|
|
PR_CHANGE_KEY into account to avoid synchronisation errors.
|
|
|
|
* OpenChange/MAPIStoreDraftsMessage.m (-_commitProperties): make
|
|
use of "PR_SUBJECT_PREFIX_UNICODE" and
|
|
"PR_NORMALIZED_SUBJECT_UNICODE" to construct the "subject" header.
|
|
(-submit): invoke the new "-sendMailAndCopyToSent:" method with
|
|
"NO".
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m (-getPrChangeKey:inMemCtx)
|
|
(-getPrPredecessorChangeList:inMemCtx): when a record is not
|
|
returned, invoke the container's synchroniseCache method, as was
|
|
done in -objectVersion.
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-synchroniseCache): renamed
|
|
local var "folderWasModified" to "foundChange", as in
|
|
MAPIStoreGCSFolder's version. Fixed a bug where "foundChange"
|
|
would be reset to NO when deletes were not found, even if new
|
|
elements were detected.
|
|
|
|
2011-09-23 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-defaultCalendarList, -itemCalendarText,
|
|
-userDefaultCalendar, -setUserDefaultCalendar:): new methods to
|
|
show a popup menu for the new defaults SOGoDefaultCalendar. This
|
|
option sets which calendar is used when creating an event or a
|
|
task (selected, personal, first enabled).
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (eventsListCallback):
|
|
events are always editable and erasable for superusers.
|
|
(newEvent): added supported for the new defaults SOGoDefaultCalendar.
|
|
|
|
2011-09-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreGCSMessage.m (-getPrChangeKey:inMemCtx:):
|
|
first force a synchronisation of the parent cache if the change key
|
|
cannot be retrieved and invoke abort if the change key is still
|
|
not available afterwards.
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m (-getPrChangeKey:inMemCtx:):
|
|
same as above.
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-lastMessageModificationTime):
|
|
invoke "synchroniseCache" in order to make sure we return the real
|
|
last modification time.
|
|
(-synchroniseCache): improved to increment the last modification
|
|
time when messages have been deleted.
|
|
|
|
* OpenChange/SOGoMAPIFSMessage.m (-mapistoreMessageClass): method
|
|
implemented poorly (but work for now) and that differentiates
|
|
between the MAPIStoreMessage classes based on certain elements in
|
|
their folder path.
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-messageClass): removed method,
|
|
replaced with the new mechanism below.
|
|
|
|
* OpenChange/NSObject+MAPIStore.h (-mapistoreMessageClass): new
|
|
category method that returns the proper MAPIStoreMessage wrapper
|
|
class from instances of SOGoObject and children classes.
|
|
|
|
2011-09-22 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContactsMessage.m
|
|
Added more field mappings (surname, given name,
|
|
middle name, etc.)
|
|
|
|
2011-09-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-createMessage): return a MAPIStoreMemMailMessage.
|
|
|
|
* OpenChange/SOGoMemMessage.m: new class that only provides a
|
|
temporary (memory-based) dictionary of Exchange attributes.
|
|
Similar to SOGoMAPIFSMessage except for the ability to save the
|
|
dictionary in question.
|
|
|
|
* OpenChange/MAPIStoreMemMailMessage.m: new class that enables the
|
|
saving of composed mail messages, during the different copy
|
|
operations.
|
|
|
|
* OpenChange/MAPIStoreDraftsMessage.m (-getPrChangeKey)
|
|
(-getPrPredecessorChangeList:inMemCtx:): return
|
|
MAPISTORE_ERR_NOT_FOUND.
|
|
(-getPidLidImapDeleted:inMemCtx:, -getPrInternetMessageId:inMemCtx:): same
|
|
as above.
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-[MAPIStoreDraftsFolder
|
|
messageClass, createMessage]): restore methods.
|
|
|
|
* OpenChange/MAPIStoreFolder.m
|
|
(-moveCopyMessagesWithMIDs:andCount:fromFolder:withMIDs:wantCopy:):
|
|
adapted to be invoked from the target folder.
|
|
Implemented generic version for specialized folders lacking an
|
|
implementation and for copying/moving items across folders of
|
|
different types.
|
|
(-postNotificationsForMoveCopyMessagesWithMIDs:andMessageURLs:andCount:fromFolder:withMIDs:wantCopy:):
|
|
new helper method that performs the whole notification magic for
|
|
message moves.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_folder_move_copy_messages):
|
|
adapted to last backend changes.
|
|
|
|
2011-09-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m
|
|
(-moveCopyMessagesWithMIDs:andCount:toFolder:withMIDs:wantCopy:):
|
|
improved by acting directly on source and dest MIDs, by handling
|
|
multiple messages at once and by accepting proper UID ranges in
|
|
the COPYUID response.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_folder_move_copy_messages):
|
|
adapted to new backend prototype.
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-createMessage): reverse the
|
|
specification of the "mid" parameter as the copy/move hack in
|
|
MAPIStoreMailFolder is no longer needed.
|
|
|
|
2011-09-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreObject.m (-getReplicaKeyFromGlobCnt:): new
|
|
method that returns the same result as
|
|
getReplicaKey:fromGlobCnt:inMemCtx: in the form of an NSData
|
|
instance.
|
|
|
|
* OpenChange/MAPIStoreContactsMessage.m (-save): same as below.
|
|
|
|
* OpenChange/MAPIStoreTasksMessage.m (-save): same as below.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m (-save): set the
|
|
PR_CHANGE_KEY to the value passed by the client after the version
|
|
cache has been updated a first time.
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m (-getPrChangeKey:inMemCtx:,
|
|
(-getPrPredecessorChangeList:inMemCtx:): same as below.
|
|
|
|
* OpenChange/MAPIStoreGCSMessage.m (-getPrChangeKey:inMemCtx:,
|
|
(-getPrPredecessorChangeList:inMemCtx:): wrapper accessors around
|
|
the getters defined in MAPIStoreGCSFolder below.
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m
|
|
(-setChangeKey:forMessageWithKey:, -changeKeyForMessageWithKey:)
|
|
(-predecessorChangeListForMessageWithKey:): same as below.
|
|
|
|
* OpenChange/MAPIStoreGCSFolder.m (-changeKeyForMessageWithKey:)
|
|
(-predecessorChangeListForMessageWithKey:)
|
|
(-setChangeKey:forMessageWithKey: (NSString *) messageKey): new
|
|
methods for retrieving or setting the PR_CHANGE_KEY for the
|
|
specified record. The PR_PREDECESSOR_CHANGE_LIST is also handled,
|
|
albeit set automatically.
|
|
|
|
* OpenChange/NSString+MAPIStore.m (+stringWithGUID:)
|
|
(-extractGUID:): new wrapper methods around the GUID utility
|
|
functions in libndr.
|
|
|
|
* OpenChange/NSData+MAPIStore.m (+dataWithXID: asXIDInMemCtx:):
|
|
new method to handle XID structs.
|
|
(-appendUInt8, -appendUInt32): new methods to easily append
|
|
integer values.
|
|
|
|
2011-09-19 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreDraftsMessage.m: (_commitProperties)
|
|
We now correctly handle the "importance" property
|
|
|
|
* Added handling of PR_IMPORTANCE and PidLidBusyStatus
|
|
for event objects
|
|
|
|
2011-09-14 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m: (imap4Connection):
|
|
Cache "corruption" bug fix that could lead us to using the
|
|
wrong IMAP connection for OpenChange users
|
|
|
|
* OpenChange/MAPIStoreMapping.m: (unregisterURLWithID:)
|
|
We also remove the keys/values from the indexing database
|
|
|
|
* OpenChange/MAPIStoreSOGo.m
|
|
RopMoveCopyMessages, RopCopyTo and messages move/copy
|
|
notifications support for messages
|
|
|
|
* OpenChange/MAPIStoreContactsMessage.m: massive improvements
|
|
to support many new properties
|
|
|
|
* OpenChange/MAPIStoreTasksMessage.m: massive improvements
|
|
to support many new properties
|
|
|
|
* OpenChange/MAPIStoreFolder.m: (getPrAccess:inMemCtx:) fixed
|
|
permissions issue - we were returning a wrong value leading to
|
|
IMAP subfolders not being "writable"
|
|
|
|
* SoObject/Mailer/SOGoMailFolder.m (prefetchCoreInfosForMessageKeys:)
|
|
Fixed a MAJOR issue regarding keys handling. We should NEVER assume
|
|
the untagged IMAP response's order will be the same as the FETCH's one!
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m: (imap4Connection) We now
|
|
ensure the context is valid to properly get the user's login by
|
|
using the container's context if the current one is nil
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m: (moveCopy...) Cleaned up some
|
|
code and we now also correctly send notification updates for the
|
|
destination folder
|
|
|
|
2011-09-04 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMapping.m: (MAPIStoreMappingTDBTraverse())
|
|
Fixed a major issue regarding the use of strtoll. It was overflowing
|
|
keys as they are unsigned long long int. We now make use of strtoull
|
|
which fixes the problem and avoids major cache corruption of the
|
|
indexing.tdb database (per user).
|
|
|
|
* OpenChange/MAPIStoreSOGo.m: Some cleanups to ease current and
|
|
future debugging
|
|
|
|
2011-08-18 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxContactEditor.js
|
|
(regenerateCategoriesMenu): register the onMenuClickHandler
|
|
function on the mouse down event instead of the click event, since
|
|
the contextual menu is hidden on the mouse down event. This fixes
|
|
the bug where a predefined category could never be selected from
|
|
the combo box.
|
|
|
|
2011-08-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m
|
|
(-[MAPIStoreMailFolder createFolder:withFID:inContainer:): new method
|
|
that enables the specification of a SOGo object container.
|
|
(-[MAPIStoreMailFolder createFolder:withFID:): rewritten method to make
|
|
use of the above.
|
|
(-[MAPIStoreInboxFolder createFolder:withFID:): rewritten method to make
|
|
use of the above, with the choice container depending on the
|
|
"usesAltNamespace" ivar.
|
|
(-[MAPIStoreInboxFolder initWithURL:inContext:): overriden method
|
|
to initialize the "usesAltNamespace" ivar based on the flags set
|
|
on the "INBOX" folder.
|
|
(-[MAPIStoreInboxFolder
|
|
folderKeysMatchingQualifier:andSortOrderings:])
|
|
(-[MAPIStoreInboxFolder lookupFolder:]):
|
|
overriden methods to make use of "usesAltNamespace".
|
|
(-[MAPIStoreMailFolder _imapFolderNameRepresentation:): new
|
|
private method that combines the SOGo representation of an IMAP
|
|
folder leaf, without the "folder" prefix, with the current folder
|
|
as parent.
|
|
(-[MAPIStoreMailFolder _cleanupSubfolderKeys:): new private method
|
|
that tests the list of children keys passed as parameter and
|
|
compare each one of them with the special folders: trash, sent and
|
|
drafts and those that are found.
|
|
(-[MAPIStoreInboxFolder _imapFolderNameRepresentation:): overriden
|
|
method by taking the "altnamespace" ivar into account.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m
|
|
(-toManyRelationshipKeysWithNamespaces:): new method, superseding
|
|
"toManyRelationshipKeys" that enables the returning of namespaces
|
|
"folders" or not.
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m (-objectVersion): updated code
|
|
as in MAPIStoreGCSMessage's version.
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-messageTable): we no longer
|
|
cache the table object as we don't want to assign different
|
|
handles to the same memory object, causing inconsistencies with
|
|
tables instantiated twice with different parameters.
|
|
|
|
2011-08-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
(-lookupName:inContext:acquire:): fixed a crash occurring when the
|
|
key didn't end with ".eml".
|
|
|
|
2011-08-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailMessageTable.m
|
|
(-getRow:withRowID:andQueryType:inMemCtx:): overriden method to
|
|
prefetch the "core infos" of messages that are going to be
|
|
fetched.
|
|
|
|
2011-08-12 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/HTMLElement.js (refreshSelectionByIds):
|
|
replaced the call to the Prototype method "down" in favor to a
|
|
global access with the element ID. This fixes a multiple-message
|
|
selection issue with IE.
|
|
|
|
2011-08-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
(-prefetchCoreInfosForMessageKeys:): new method that enables the
|
|
prefetching and caching of "core infos" for messages.
|
|
(-lookupName:inContext:acquire:): looked up messages are now fed
|
|
with their cached core infos, if present.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m: (addFlags:, removeFlags:)
|
|
release "coreInfos" rather than flagsCache, which has been
|
|
obsoleted.
|
|
(_hasFlag:): make use of "coreInfos" to fetch the flags since most
|
|
of the time the other infos will be fetch for the same object,
|
|
bringing a 30ms speedup per message.
|
|
(-setCoreInfos): new accessor that enables setting coreInfos from
|
|
an external object.
|
|
(+initialize): coreInfoKeys was renamed to SOGoMailCoreInfoKeys
|
|
and has now been published.
|
|
|
|
* OpenChange/MAPIStoreTable.m (-setHandleId:): only register the
|
|
table in the notification cache if the provided handle id is not
|
|
null.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m (-save): resynchronise the
|
|
container cache after the operation.
|
|
|
|
* OpenChange/MAPIStoreTasksMessage.m (-save): resynchronise the
|
|
container cache after the operation.
|
|
|
|
* OpenChange/MAPIStoreContactsMessage.m (-save): resynchronise the
|
|
container cache after the operation.
|
|
|
|
* OpenChange/MAPIStoreGCSMessage.m (-objectVersion): ensure that a
|
|
change number is available when the message is "not new", but
|
|
resynchronise the cache in doing so.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_table_handle_destructor): added
|
|
new backend operation.
|
|
|
|
* OpenChange/NSAutoreleasePool+MAPIStore: removed module since it
|
|
was a lot of code to handle one specific case.
|
|
|
|
* OpenChange/MAPIStoreGCSMessageTable.m
|
|
(-evaluatePropertyRestriction:intoQualifier:): create a local
|
|
talloc context and free it at the end when generating a new date
|
|
restriction.
|
|
|
|
* OpenChange/plreader.m (-displayKey:withIndentation:): display
|
|
alternative hex representation of the keys.
|
|
|
|
2011-08-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFSFolderTable.[hm]: new module.
|
|
|
|
* OpenChange/MAPIStoreFSFolder.m (-folderTable): overriden method
|
|
to return a "MAPIStoreFSFolderTable" instance.
|
|
(-folderKeysMatchingQualifier:andSortOrderings:): overriden method
|
|
in order to evaluate folders by applying the received qualifer to
|
|
the properties message.
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-objectVersion): implemented
|
|
method based on the value provided in the folder props dictionary.
|
|
(-propertiesMessage): new getter.
|
|
|
|
* OpenChange/MAPIStoreObject.m (-objectVersion): now a mandatory
|
|
method for subclasses.
|
|
|
|
2011-08-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMapping.m
|
|
(+mappingForUsername:withIndexing:): modified contrusctor to make
|
|
use of a "username" parameter that enable per-user "singletons".
|
|
(-increateUseCount, -decreaseUseCount): new accessors that enable
|
|
the registration/unregistration of the mapping object from the
|
|
singleton registry.
|
|
|
|
2011-08-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-lookupMessage:): set the WOContext
|
|
of the resulting SOGoObject to the value attached to the current
|
|
MAPIStoreContext.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessageTable.m
|
|
(-evaluatePropertyRestriction:intoQualifier:): implemented
|
|
searches on PR_OWNER_APPT_ID in order to enable the retrieval of
|
|
the requested invitation.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m (-save): fixed attendees
|
|
handling (only change the attendee partstat) and avoid saving the
|
|
event when the newpartstat is "undefined".
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m
|
|
(-getPrOwnerApptId:inMemCtx:): properly reimplemented the method
|
|
following the spec.
|
|
(-getPidLidServerProcessed:inMemCtx:): now returns yes in order to
|
|
prevent the client from uselessly updating the event.
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m
|
|
(-getPrReplyRequested:inMemCtx:): commented out method.
|
|
(-getPrResponseRequested:inMemCtx:): returns NO when the message
|
|
is an invitation, as the mail handling is performed internally by
|
|
SOGo.
|
|
(-getPrOwnerApptId:inMemCtx:): properly forwards the call to
|
|
MAPIStoreAppointmentWrapper when required.
|
|
(-getPidLidMeetingType:inMemCtx:): new method.
|
|
|
|
* OpenChange/MAPIStoreContext.m (-activeUser): new helper method.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_backend_init): invoke
|
|
-activateApplication on the new app in order to make it accessible
|
|
via [WOApplication application].
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-lookupCalendarFoldersForUID:): make use of -[SOGoUser
|
|
lookupCalendarFoldersForUID:].
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
(_handleAttendee:withDelegate:ownerUser:statusChange:inEvent:):
|
|
enable updating the attendee's calendar when a WORequest is not
|
|
available at all, for example from OpenChange.
|
|
|
|
2011-08-05 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactView.m (-contactCardTitle): removed this
|
|
method since we no longer prefix the contact name by a label
|
|
("Card For").
|
|
(-_cardStringWithLabel:value:url:): new method that wraps the
|
|
value with an <A> link with the specified URL type. Used for
|
|
telephone numbers.
|
|
|
|
2011-08-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m
|
|
(-getPidLidGlobalObjectId:inMemCtx:)
|
|
(-getPidLidCleanGlobalObjectId:inMemCtx:): reimplemented methods
|
|
by following the spec carefully (MS-OXICAL: 2.1.3.1.1.20.26).
|
|
|
|
* OpenChange/NSString+MAPIStore.m (-convertHexStringToBytes): new
|
|
method that returns an NSData from a string of hex values
|
|
represented as text.
|
|
|
|
2011-08-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreDraftsMessage.m (-getMessageData:inMemCtx:):
|
|
overriden method.
|
|
Made module able to handle SOGoMailObject as well, since we can
|
|
possibly have such objects as value for sogoObject.
|
|
(-getPrImportance:inMemCtx:): overriden method.
|
|
(-getPrReceivedByEmailAddress:inMemCtx:): overriden method.
|
|
(-getPrSenderEmailAddress:inMemCtx:): overriden method.
|
|
(-getPrDisplayCc:inMemCtx:): overriden method.
|
|
|
|
* OpenChange/MAPIApplication.m (+isCachingEnabled): new overriden
|
|
method that returns "NO" in order to avoid leaking dictionaries
|
|
that we don't use since we are not WO-based.
|
|
|
|
* OpenChange/MAPIStoreMapping.m (-initWithIndexing:)
|
|
(-registerURL:withID:): removed noisy warnings.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_backend_create_context):
|
|
adaoted to new prototype.
|
|
|
|
2011-08-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-permissionsTable): new method
|
|
that returns a permissions table for the current folder.
|
|
|
|
* OpenChange/MAPIStorePermissionsTable.[hm]: new class module for
|
|
handling permission objects. Currently only provide stub entries
|
|
for the "anonymous" and "default" users.
|
|
|
|
* OpenChange/MAPIStoreContactsMessageTable.m
|
|
(-evaluateContentRestriction:intoQualifier:): overriden method in
|
|
order to evaluate PR_MESSAGE_CLASS_UNICODE.
|
|
(-evaluatePropertyRestriction:intoQualifier:): added stub support for
|
|
PidLidAddressBookProviderArrayType,
|
|
PidLidAddressBookProviderEmailList and real support for
|
|
PidLidEmail[123]OriginalDisplayName.
|
|
|
|
* OpenChange/MAPIStoreTable.m (-operatorFromRestrictionOperator):
|
|
code split from -evaluatePropertyRestriction:intoQualifier: and
|
|
exposed for external use.
|
|
|
|
2011-08-02 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (_onMenuLabelFlagX): fixed a
|
|
bug when changing the flag of multiple messages.
|
|
|
|
* UI/WebServerResources/SOGoRootPage.js (onLoginClick): reset
|
|
error message (if any) when login in.
|
|
|
|
2011-08-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFSMessage.m
|
|
(-getAvailableProperties:inMemCtx:): take only NSNumber keys into
|
|
account.
|
|
|
|
2011-07-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreTable.m (-dealloc): free the list of
|
|
columns, otherwise the last list set is leaked.
|
|
|
|
2011-07-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_folder_get_deleted_fmids):
|
|
implemented new backend method.
|
|
|
|
* OpenChange/MAPIStoreTable.m (-loggingPrefix): removed method as
|
|
it was causing crashes when the parent object was deallocated.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m (-statusForFlags:): new method
|
|
that returns the values of flags passed as parameters.
|
|
(-fetchUIDsOfVanishedItems:): new method that returns the list of
|
|
UID that are reported to have vanished since the specified modseq.
|
|
|
|
2011-07-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreGCSMessageTable.m
|
|
(-evaluatePropertyRestriction:intoQualifier:): now handles
|
|
PR_CHANGE_NUM using the new methods below.
|
|
|
|
* OpenChange/MAPIStoreGCSMessage.m (-objectVersion): overriden
|
|
method to make use of -[MAPIStoreGCSFolder
|
|
changeNumberForMessageWithKey:].
|
|
|
|
* OpenChange/MAPIStoreGCSFolder.m (-initWithURL:inContext:)
|
|
(initWithSOGoObject:inContainer:): initialise the new
|
|
"versionsMessage" ivar, pointing to a SOGoMAPIFSMessage object
|
|
that includes versioning information.
|
|
(-lastMessageModificationTime): return the date value stored in
|
|
"versionsMessage".
|
|
(-synchroniseCache): new method that updates "versionsMessage"
|
|
differentually with versioning data from the server.
|
|
(-lastModifiedFromMessageChangeNumber:): new helper method that returns
|
|
the corresponding c_lastmodified from a MAPI change number.
|
|
(-changeNumberForMessageWithKey:): new helper method that returns the
|
|
version number associated with a message.
|
|
|
|
* OpenChange/MAPIStoreMailMessageTable.m
|
|
(-evaluatePropertyRestriction:intoQualifier:): now handles
|
|
PR_CHANGE_NUM using the new methods below.
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m (-objectVersion): overriden
|
|
method to make use of -[MAPIStoreMailFolder
|
|
changeNumberForMessageUID:].
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-initWithURL:inContext:)
|
|
(initWithSOGoObject:inContainer:): initialise the new
|
|
"versionsMessage" ivar, pointing to a SOGoMAPIFSMessage object
|
|
that includes versioning information.
|
|
(-lastMessageModificationTime): return the date value stored in
|
|
"versionsMessage".
|
|
(-synchroniseCache): new method that updates "versionsMessage"
|
|
differentually with versioning data from the server.
|
|
(-modseqFromMessageChangeNumber:): new helper method that returns
|
|
the corresponding IMAP "modseq" from a MAPI change number.
|
|
(-messageUIDFromMessageKey:): new helper method.
|
|
(-changeNumberForMessageUID:): new helper method that returns the
|
|
version number associated with a message.
|
|
|
|
* OpenChange/MAPIStoreTable.m (-loggingPrefix): overriden method
|
|
in order to get more useful informations.
|
|
|
|
* OpenChange/MAPIStoreObject.m (-loggingPrefix): overriden method
|
|
in order to get more useful informations.
|
|
|
|
* OpenChange/MAPIStoreFSMessageTable.m
|
|
(-evaluatePropertyRestriction:intoQualifier:): overriden method to
|
|
handle PR_CHANGE_NUM, based on the messages version number.
|
|
|
|
* OpenChange/MAPIStoreFSMessage.m (-objectVersion): overriden
|
|
method to retrieve the object version from the "version" attribute
|
|
in the properties list.
|
|
(-save): update the "version" attribute in the saved property list
|
|
from openchangedb.
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m
|
|
(-getPidLidGlobalObjectId:inMemCtx:): work-around certain buggy
|
|
events which might now have a "CREATED" element.
|
|
|
|
* OpenChange/MAPIStoreContactsMessage.m: commented out
|
|
"-getPrOabName:inMemCtx:" and "-getPrOabLangid:inMemCtx:" as they
|
|
seem to be useful only for contact lists.
|
|
|
|
* OpenChange/MAPIStoreFolder.m
|
|
(-faiMessageKeysMatchingQualifier:andSortOrderings:):
|
|
reimplemented method to make use of the new method below.
|
|
|
|
* OpenChange/SOGoMAPIFSFolder.m
|
|
(-toOneRelationshipKeysMatchingQualifier:andSortOrderings:): moved
|
|
method from -[MAPIStoreFSFolder
|
|
messageKeysMatchingQualifier:andSortOrderings:] in order to make
|
|
it available to all the SOGoMAPIFSFolder clients.
|
|
|
|
* OpenChange/MAPIStoreContext.m (-getNewChangeNumber): new
|
|
utility method that returns a change number from the mapistore db
|
|
via the openchangedb API.
|
|
|
|
* OpenChange/SOGoMAPIFSMessage.m (-save): serialize the properties
|
|
dictionary in binary plist format to avoid GNUstep bugs where
|
|
high unsigned long long values are not parsed properly.
|
|
(-properties): corrolary to the above change.
|
|
|
|
* OpenChange/NSArray+MAPIStore.m (-asArrayOfUnicodeStringsInCtx:):
|
|
the return type is now "struct WStringArray_r *".
|
|
|
|
* OpenChange/NSString+MAPIStore.m (-asUnicodeInMemCtx): return an
|
|
empty string when length == 0, otherwise the resulting pointer
|
|
will be NULL.
|
|
|
|
* OpenChange/plreader.m: new test tool to dump property lists
|
|
independently from their serialization format.
|
|
|
|
2011-07-27 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m (-ownerInContext:): in case the
|
|
user domain is specified in the URL but not in the user login
|
|
name, we remove it (user@domain => user).
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): drop
|
|
the domain from the login name when loginDomains are enabled but
|
|
domain-based UID is disabled.
|
|
|
|
2011-07-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailFolderTable.[hm]: removed useless class.
|
|
|
|
* OpenChange/MAPIStoreTable.m (-lookupChild:)): new method that
|
|
subclasses must override and that a child object matching the
|
|
table type.
|
|
|
|
* OpenChange/MAPIStoreObject.m (-lookupChild:): removed method as
|
|
it was too generic. Each subclass has now its own set of
|
|
specialized methods.
|
|
(-childKeysMatchingQualiflier:andSortOrderings:) same as above.
|
|
|
|
* OpenChange/MAPIStoreMessage.m (-lookupAttachment:): new method,
|
|
replacing -[MAPIStoreObject lookupChild:].
|
|
(-attachmentKeysMatchingQualiflier:andSortOrderings:) same as
|
|
above, replacing (-[MAPIStoreObject
|
|
childKeysMatchingQualiflier:andSortOrderings:]).
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-lookupFolder:, -lookupMessage:)
|
|
(-lookupFAIMessage:): new methods, replacing -[MAPIStoreObject
|
|
lookupChild:].
|
|
(-messageKeysMatchingQualiflier:andSortOrderings:) same as
|
|
above, replacing (-[MAPIStoreObject
|
|
childKeysMatchingQualiflier:andSortOrderings:]).
|
|
(-faiMessageKeysMatchingQualiflier:andSortOrderings:) same as
|
|
above, replacing (-[MAPIStoreObject
|
|
childKeysMatchingQualiflier:andSortOrderings:]).
|
|
(-folderKeysMatchingQualiflier:andSortOrderings:) same as
|
|
above, replacing (-[MAPIStoreObject
|
|
childKeysMatchingQualiflier:andSortOrderings:]).
|
|
|
|
2011-07-26 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailListActions.m
|
|
(-getUIDsInFolder:withHeaders:): we check if the array of messages
|
|
UIDs is nil prior adding it to the returned dictionary.
|
|
|
|
2011-07-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m (-hasCapability): new proxy
|
|
method that determines whether an IMAP capability is present on
|
|
the server.
|
|
(-supportsQResync): new method that returns whether the server
|
|
supports the "QRESYNC" capability.
|
|
|
|
2011-07-25 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoRootPage.m (-connectAction): don't add the domain
|
|
if domain-based UIDs are not enabled.
|
|
(-changePasswordAction): idem.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): added
|
|
test for the ivar "realUID" since it can be undefined if the
|
|
corresponding source is down.
|
|
|
|
2011-07-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_table_get_row_count): added new
|
|
backend operation.
|
|
|
|
* Tests/Unit/SaxXMLReaderFactory+SOGoTests.m: new module offering
|
|
a category on SaxXMLReaderFactory that enables finding our NGCards
|
|
SAX driver in our source directories.
|
|
|
|
2011-07-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m: make use of the new class
|
|
below for calendar contents.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m: make use of the new class
|
|
below.
|
|
(-save): handle invitation replies.
|
|
|
|
* OpenChange/MAPIStoreAppointmentWrapper.m: new wrapper class
|
|
module that implements the getters for iCalEvent objects.
|
|
|
|
2011-07-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m (-subject): new overridable
|
|
accessor common to certain properties.
|
|
|
|
* OpenChange/MAPIStoreObject.m: moved "-getEmptyString:inMemCtx:",
|
|
"-getLongZero:inMemCtx:", "-getYes:inMemCtx:", "-getNo:inMemCtx:"
|
|
into NSObject+MAPIStore.m
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-lookupFolder:, -createMessage:):
|
|
assign the parent context woContext to the newly created
|
|
SOGoObject to enable access to "activeUser".
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (-setContext, -context): new
|
|
accessors for the "context" ivar.
|
|
|
|
2011-07-20 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxMailToSelection.js
|
|
(addressFieldLostFocus): call addressFieldChanged to validate the
|
|
entry and split recipients in multiple fields.
|
|
|
|
2011-07-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m: reordered certain private
|
|
methods.
|
|
(-ownerTimeZone): moved into MAPIStoreObject.
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m (-_setupBodyData): new
|
|
centralized method that performs the common operations required to
|
|
fetch the message body.
|
|
(-getPrHtml:inMemCtx,-getPrBody:inMemCtx:): make use of the above
|
|
method.
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m
|
|
(-countOccurrencesOfString:): new self-explicit method.
|
|
|
|
2011-07-19 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m (-_davFetchUsersMatching:):
|
|
append the domain to the username when SOGoEnableDomainBasedUID is
|
|
set to YES. When using domains, fetch matching users from visible
|
|
domains.
|
|
|
|
2011-07-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/NSString+MAPIStore.m (-asUnicodeInMemCtx:): use an
|
|
alternative method to convert the string to a utf8 array of bytes
|
|
to avoid an undefined conditional bug in GNUstep.
|
|
|
|
2011-07-18 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoSystemDefaults.m (-enableDomainBasedUID): new
|
|
method that returns the boolean value of the new system defaults
|
|
SOGoEnableDomainBasedUID if at least one domain is defined.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): try to
|
|
extract the domain part of the login name only if the new system
|
|
defaults SOGoEnableDomainBasedUID is set to YES. If the domain is not
|
|
specified but SOGoEnableDomainBasedUID is enabled, add the domain to the
|
|
login name.
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m
|
|
(-contactInfosForUserWithUIDorEmail): try to extract the domain
|
|
part of the login name only if the new system defaults
|
|
SOGoEnableDomainBasedUID is set to YES..
|
|
|
|
* SoObjects/SOGo/SOGoSession.m
|
|
(+decodeValue:usingKey:login:domain:password:): idem.
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m
|
|
(-_sourceCheckLogin:andPassword:domain:perr:expire:grace:): the
|
|
domain argument is now a pointer so it will be set according to
|
|
the matching authentication source.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m (-usersSearchAction): only append
|
|
the domain to the user's login if the new system defaults
|
|
SOGoEnableDomainBasedUID is set to YES.
|
|
|
|
2011-07-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_backend_init): disable the use
|
|
of the requests cache as objects are retained by the mapistore as
|
|
needed.
|
|
|
|
* SoObjects/SOGo/SOGoCache.m (-disableRequestsCache): new method
|
|
that adds the ability to not put requests object in the cache.
|
|
|
|
* OpenChange/MAPIStoreDraftsAttachment.m: removed useless class.
|
|
|
|
* OpenChange/MAPIStoreMessage.m (-createAttachment): moved method
|
|
from MAPIStoreDraftsMessage
|
|
(-childKeysMatchingQualifier:andSortOrderings:): same as above.
|
|
|
|
* OpenChange/*.m: make use of mapistore error code rather than
|
|
MAPI ones.
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m (-getPrHtml:inMemCtx:): fixed
|
|
leak.
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-createFolder:withRow:andFID:):
|
|
fixed referencing of resulting folder.
|
|
(+initialize): fixed initialization of MAPIStoreFAIMessageK.
|
|
(-getTable:andRowCount:tableType:andHandleId:): properly return
|
|
MAPISTORE_ERR_NOT_FOUND for tables that are not handled by the
|
|
folder.
|
|
|
|
2011-07-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreSOGo.m: finalized the new API.
|
|
|
|
* OpenChange/MAPIStoreTable.m: added memory debugging output.
|
|
|
|
* OpenChange/NSArray+MAPIStore.m (-asFoldersListInCtx:) removed
|
|
useless method.
|
|
(-asArrayOfUnicodeStringsInCtx:) properly connect the talloc
|
|
hierarchy nodes.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m: adapted to latest mapistore_backend
|
|
nomenclature.
|
|
|
|
2011-07-14 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailListActions.m
|
|
(-getUIDsInFolder:withHeaders:): don't add the quota if there's no
|
|
quota for the mail account.
|
|
|
|
* UI/WebServerResources/UIxAttendeesEditor.js (onContactKeydown):
|
|
fixed glitch when pressing the tab key from an empty input field.
|
|
(onFreeBusyLoadHandler): removed redundant calls that were causing
|
|
errors when retrieving the attendees freebusy information.
|
|
|
|
* UI/WebServerResources/SOGoTimePicker.js (onChange): specified
|
|
the radix when calling parseInt since a string starting with 0
|
|
would be parsed as an octal number.
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js (validateAptEditor): idem.
|
|
|
|
2011-07-14 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (davCollectionTag)
|
|
We now correctly cast the sync tag value.
|
|
|
|
2011-07-13 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js (handleAllDay)
|
|
(_setDate): fixed errors when event lasts all-day.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
(-deleteUIDs:useTrashFolder:inContext:): the withTrash argument is
|
|
now a pointer since the method can modify it when the current
|
|
folder is the trash folder.
|
|
|
|
* SoObjects/Contacts/SOGoContactSourceFolder.m
|
|
(-_flattenedRecord:): added c_component key so the proper icon
|
|
appears beside entries in the Web interface.
|
|
|
|
* UI/WebServerResources/generic.js (_showAlertDialog): added fade
|
|
effect when showing or hiding a dialog box.
|
|
|
|
2011-07-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContext.m (-init): removed the messages
|
|
cache dictionary, as its purpose has been superseeded by the
|
|
features of the "POC api".
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_op_openmessage)
|
|
(sogo_op_createmessage): now return a "poc api"-compatible
|
|
object.
|
|
(sogo_op_savechangesmessage, sogo_op_submitmessage)
|
|
(sogo_op_modifyrecipients): replaced methods with pocop
|
|
implementations.
|
|
(sogo_op_*attach*): methods to their final form'
|
|
(sogo_op_get_fid_by_name): removed obsolete method.
|
|
(sogo_op_release_record): removed obsolete method.
|
|
|
|
* OpenChange/NSObject+MAPIStore.m (MAPIStoreTallocWrapperDestroy):
|
|
the object release now occurs within an NSAutoreleasePool.
|
|
|
|
* Tools/sogo-tool.m (main): instantiate SOGoSystemDefaults in
|
|
order to properly inject the entries from SOGoDefaults.plist.
|
|
|
|
2011-07-12 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m (-batchDeleteAction): we
|
|
only return the quota when not using the trash folder.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m (-compare:): handle the case when
|
|
the display name is not defined.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m
|
|
(-_fetchFields:forComponentOfType:): test the calendar name and
|
|
set it to an empty string if it's not defined.
|
|
|
|
* UI/Scheduler/UIxCalendarSelector.m (-calendars): idem.
|
|
|
|
* UI/WebServerResources/UIxCalendarProperties.js (onOKClick):
|
|
refuses to save the properties if the calendar name is empty.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (updateCalendarProperties):
|
|
Create a new text node in case the calendar has no name.
|
|
|
|
2011-07-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFSMessage.m
|
|
(+getAvailableProperties:inMemCtx:): added memCtx parameter.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m: (sogo_op_get_table_property)
|
|
(sogo_op_get_available_table_properties)
|
|
(sogo_op_set_restrictions,sogo_op_set_sort_order): removed
|
|
obsolete methods.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessageTable.m,
|
|
OpenChange/MAPIStoreContactsMessageTable.m,
|
|
OpenChange/MAPIStoreFAIMessageTable.m,
|
|
OpenChange/MAPIStoreFSMessageTable.m,
|
|
OpenChange/MAPIStoreMailMessageTable.m,
|
|
OpenChange/MAPIStoreTasksMessageTable.m: overriden
|
|
"+childObjectClass" to enable "getAvailableProperties:inMemCtx:"
|
|
to work properly.
|
|
|
|
* OpenChange/MAPIStoreTable.m
|
|
(-getRow:withRowID:andQueryType:inMemCtx:): slight change of
|
|
prototype in order to leave the structure initialization to the
|
|
backend.
|
|
|
|
2011-07-11 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m
|
|
(-takeValuesFromRequest:inContext:): when switching from an
|
|
all-day event to a non-all-day event, we must add the vTimeZone
|
|
definition. The opposite is also fixed.
|
|
|
|
* SoObjects/Appointments/SOGoComponentOccurence.m
|
|
(-prepareDelete): when deleting an occurrence of a floating
|
|
all-day event, we must adjust the exception date to the user's timezone.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-_flattenCycleRecord:forRange:intoArray:): when computing
|
|
occurrences of a floating all-day event, we must also ajdust the
|
|
exception dates to the user's timezone.
|
|
|
|
2011-07-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/*: made backend ops consistent with the talloc API,
|
|
where resources are allocated in a tree of "talloc contexts".
|
|
|
|
* OpenChange/NSObject+MAPIStore.m (-tallocWrapper:): new method
|
|
enabling the wrapping of obj-c objects into talloc structures, in
|
|
order to ease memory management.
|
|
|
|
2011-07-08 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailListActions.m (-getUIDsAndHeadersInFolder)
|
|
(-getSortedUIDsAction): both methods now return the inbox quota
|
|
along with the other data.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m (-batchDeleteAction): return
|
|
the inbox quota when the messages were successfully deleted.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
(-deleteUIDs:useTrashFolder:inContext:): when not using the trash folder
|
|
or when deleting a message within the trash folder, we now expunge the
|
|
folder immediately.
|
|
|
|
* UI/WebServerResources/SOGoMailDataSource.js (init): quotas
|
|
information can now be passed as argument. It will be passed back
|
|
to the method "updateQuotas" from MailerUI.js.
|
|
|
|
2011-07-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContext.m (-openDir:): implemented.
|
|
(-closeDir): added useful comments.
|
|
(-_tableForFID:andTableType:, -openMessage:withMID:inFID:)
|
|
(-createMessageWithMID:inFID:isAssociated:):
|
|
(-getProperties:ofTableType:inRow:withMID:):
|
|
(-setPropertiesWithFMID:ofTableType:inRow:):
|
|
(-deleteMessageWithMID:inFID:withFlags:): make use of the new
|
|
folder cache instead of using lookupFolderWithFID:, especially
|
|
since the last ones now instantiates, caches and keep a usage
|
|
count of the folders.
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-lastMessageModificationTime):
|
|
implemented method by making use of the new -[SOGoMailFolder
|
|
mostRecentMessageDate] message, which is currently a more or less
|
|
precise way to obtain the mailbox's last modification date.
|
|
(-lastModificationTime): removed method.
|
|
|
|
* OpenChange/MAPIStoreObject.m (-setMAPIRetainCount:)
|
|
(-mapiRetainCount:): moved methods from MAPIStoreMessage.
|
|
|
|
* OpenChange/MAPIStoreTable.m
|
|
(-evaluateContentRestriction:intoQualifier:): temporarily
|
|
commented out code initializing "operator" as this local var is
|
|
never used.
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-initWithSOstringByAddingPercentEscapesUsingEncodinGoObject:inContainer:):
|
|
make use of -[NSString stringByAddingPercentEscapesUsingEncoding:]
|
|
to properly escape folder names with non-ascii characters.
|
|
|
|
* OpenChange/MAPIStoreFSFolder.m (-createFolder:withFID:): same as
|
|
above.
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(+contextFromURI:withConnectionInfo:andFID:inMemCtx:): same as
|
|
above.
|
|
|
|
* OpenChange/SOGoMAPIFSFolder.m (-initWithName:inContainer:):
|
|
added method to properly initialize the "directory" ivar when
|
|
initialized as a subfolder.
|
|
|
|
* OpenChange/MAPIStoreMailContext.m: MAPIStoreDeletedItemsContext
|
|
is now temporarily a fs-based context.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
(_fetchMessageProperties:matchingQualifier:andSortOrderings::):
|
|
properly implement this method, as properties should be an array
|
|
instead of a dictionary.
|
|
(-mostRecentMessageDate): new method that returns the date of the
|
|
last available message.
|
|
|
|
2011-07-07 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxListEditor.js (endEditable): when a
|
|
string doesn't match an existing card, keep the entry but
|
|
highlight it in red.
|
|
(serializeReferences): when an entry is not associated to a card,
|
|
extract the email and fullname from the string to create a new card.
|
|
|
|
* UI/Contacts/UIxListEditor.m (-setReferencesValue:): if a card
|
|
reference doesn't match a known vCard UID, create a new vCard
|
|
like Thunderbird does.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m (-_usersForResults:inDomain:):
|
|
fixed bug when the domain was empty.
|
|
(-usersSearchAction): idem.
|
|
|
|
2011-07-06 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Mailer/NSData+Mail.m (bodyDataFromEncoding:)
|
|
Consider "binary" just like 7 or 8bit.
|
|
|
|
2011-07-06 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (onShowCompletedTasks)
|
|
(updateCalendarStatus): removed exception for Safari version prior
|
|
to 3.
|
|
|
|
2011-07-05 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m
|
|
(-_setupChosenEventAndEventObject:) we now correctly
|
|
update the right event in the database in order to
|
|
update major properties coming from external invitations
|
|
during updates.
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:)
|
|
We check if uid is not nil prior comparing it to the
|
|
owner. This fixes bug #1323
|
|
* Added patches included in bug #1348 - which now allows
|
|
group-based ACLs for IMAP.
|
|
* SoObjects/SOGo/SOGoSieveManager.m: Added patch from
|
|
bug #1344 - which fixes Sieve script generation errors
|
|
for reject filters.
|
|
* SOPE/GDLContentStore/GCSFolderManager.m (
|
|
-_reallyCreateFolderWithName:andFolderType:...): Fix
|
|
path handling for recent GNUstep base versions. This
|
|
fixes bug #1327.
|
|
* SoObjects/SOGo/LDAPSource.m (-checkLogin:password:...)
|
|
We now make sure to use the original source's bindDN/password
|
|
when looking up the user's DN for indirect binds. This should
|
|
fix bug #1342.
|
|
|
|
2011-07-02 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:)
|
|
We now update the request's content in case we got participants
|
|
with status change (for resources, for example)
|
|
|
|
2011-06-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_op_get_folders_list): method
|
|
removed from struct mapistore_backend.
|
|
|
|
* OpenChange/MAPIStoreContext.m: the ldb connection handle to
|
|
openchange.ldb is now passed via struct mapistore_connection_info.
|
|
|
|
2011-06-29 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added get/set/unset capabilities to sogo-tool to set
|
|
user's defaults/settings. Refactored some code to be
|
|
more cleanly structured.
|
|
|
|
2011-06-24 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoSystemDefaults.m (-loginDomains): new method
|
|
that returns the content of the defaults key SOGoLoginDomains, which
|
|
is a list of domains that should be selectable from the Web login page.
|
|
(-visibleDomainsForDomain:): new method that returns a list of
|
|
domains visible from the specified domain and defined by the
|
|
defaults key SOGoDomainsVisibility, which is a list of lists of domains.
|
|
|
|
* SoObjects/SOGo/SQLSource.m
|
|
(-_lookupContactEntry:considerEmail:): when an IMAP login field is
|
|
defined, only consider the value from the table if it's not null.
|
|
|
|
* SoObjects/SOGo/SOGoSession.m
|
|
(+decodeValue:usingKey:login:domain:password:): now accepts the
|
|
form login@domain. The domain must be part of the SOGoLoginDomains.
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m
|
|
(-getImapLoginForUID:inDomain:): the method now accepts the
|
|
user's domain.
|
|
(_sourceCheckLogin:andPassword:domain:perr:expire:grace:): idem.
|
|
(checkLogin:password:domain:perr:expire:grace:): idem.
|
|
(_fillContactInfosForUser:withUIDorEmail:inDomain:): idem.
|
|
(-contactInfosForUserWithUIDorEmail:inDomain:): idem.
|
|
(-contactInfosForUserWithUIDorEmail:): now accepts the form login@domain.
|
|
|
|
* SoObjects/SOGo/SOGoWebAuthenticator.m (-checkCredentials:):
|
|
perform the authentication in a domain when specified in the
|
|
web session.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m (-appendSystemSources):
|
|
when using domains, append addressbooks from visible domains.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): now
|
|
accepts the form login@domain.
|
|
(-loginInDomain): new method. When bound to a domain, it returns
|
|
the username part of the login.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m (-_usersForResults:inDomain:): was
|
|
_usersResponseForResults:. Now returns only an array
|
|
containing the matching users.
|
|
(-usersSearchAction): added the results from the visible domains,
|
|
if the defaults key SOGoDomainsVisibility is defined.
|
|
|
|
* UI/MainUI/SOGoRootPage.m (-connectAction): a domain from the
|
|
defaults key SOGoLoginDomains can now be received.
|
|
|
|
2011-06-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreTypes.h: removed PRIx64 definitions, that
|
|
can be found in the libc inttypes.h.
|
|
|
|
2011-06-20 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js (_getDate):
|
|
retrieve the time using a regexp to insure a valid entry.
|
|
|
|
* UI/WebServerResources/MailerUI.js (onMenuEmptyTrashCallback):
|
|
when emptying the trash folder, reset the unseen count and reset
|
|
the reference to the last selected message.
|
|
|
|
2011-06-17 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SOGoTimePicker.js (onChange): the
|
|
semi-colon is no longer necessary. Also fixed the update the
|
|
widget when manually entering a time.
|
|
|
|
* UI/WebServerResources/MailerUI.js (configureDraggables): added
|
|
delay of 100ms before dragging starts.
|
|
|
|
2011-06-17 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SOPE/NGCards/iCalEvent.m (setAllDayWithStartDate:duration:):
|
|
We now correctly remove the duration value in case we're
|
|
"converting" the event to an all-day one. This fixes
|
|
bug #1312.
|
|
|
|
2011-06-16 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFolderActions.m (importLdifData:):
|
|
Fixed folded lines import and base64 encoded values. Patch
|
|
from bug #1251
|
|
|
|
2011-06-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (mapistore_init_backend): accept
|
|
double registration seamlessly.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m (-displayName): make use of
|
|
the decoded subject.
|
|
|
|
* Tools/SOGoToolRenameUser.m: new sogo-tool module that updates
|
|
the references after a change of user id for a specific user.
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m (-asSafeSQLString): new
|
|
method that properly escape strings passed as values in SQL
|
|
queries.
|
|
|
|
2011-06-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreSpoolerContext.[hm]: new backend context.
|
|
|
|
2011-06-14 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAttendeesEditor.js: adjustments for the
|
|
new SOGoTimePicker.
|
|
|
|
2011-06-13 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SOGoTimePicker.js: new interface to add a
|
|
time picker widget to an input field.
|
|
|
|
* UI/Scheduler/UIxTimeDateControl.m: replaced hours and minutes
|
|
popup menu by one input field.
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js: idem.
|
|
|
|
* UI/WebServerResources/UIxTaskEditor.js: idem.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m (-newStartDate): round
|
|
minutes to the nearest 15-minute.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m (-newStartDate): idem.
|
|
|
|
2011-06-08 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (initMailer): added the Thread
|
|
column if missing from the columnsOrder user's defaults.
|
|
|
|
2011-06-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/*:
|
|
- (context) cached last requested folder and table
|
|
- (context) open folders are now cached in an nsdictionary
|
|
- getPrLastModificationTime and getPrCreationTime are now
|
|
centralized in MAPIStoreObject and rely on mandator lastModificationTime
|
|
and creationTime methods on individual subclasses.
|
|
- openMessage now takes a "struct mapistore_message **" argument.
|
|
- MAPIStoreFSFolder can now create subfolders
|
|
- converted MAPIStoreFolder to the new property API, by
|
|
implementing one method per property.
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m: (-getPrExpiryTime:) removed
|
|
method as we don't want the message to appear as "expired".
|
|
(-getPrOriginalSensitivity:): uppercased the "o" in "getPrOriginal..."
|
|
|
|
* OpenChange/MAPIStoreSOGo.m
|
|
(sogo_pocop_get_available_table_properties): now takes a
|
|
SPropTagArray ** argument.
|
|
(sogo_pocop_get_available_properties): same as above.
|
|
(sogo_op_get_available_table_properties): new, non-poc operation,
|
|
to retrieve the list of available properties from a table.
|
|
|
|
* OpenChange/MAPIStoreTable.m (-notifyChangesForChild:): same as below.
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(_saveOrSubmitChangesInMessageWithMID:andFlags:save:):
|
|
mapistore_push_notification now takes a struct mapistore_context *
|
|
as parameter.
|
|
(-deleteMessageWithMID:inFID:withFlags:): same as above.
|
|
|
|
2011-06-06 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (configureLinksInMessage):
|
|
when a link has the attribute moz-do-not-send set to true, remove
|
|
it and force a new mailto href.
|
|
|
|
2011-06-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/SOGoMAPIFSFolder.m (-creationTime)
|
|
(-lastModificationTime): new self-explicit accessors.
|
|
(-initWithURL:andTableType:): accept the "MAPISTORE_FOLDER_TABLE",
|
|
for storing folder properties.
|
|
|
|
* OpenChange/SOGoMAPIFSMessage.m (-completeFilename): new method
|
|
that returns the full filename for the property list file.
|
|
(-appendProperties:) simplified method.
|
|
(-save) removed obsolete hack.
|
|
(-creationTime, -lastModificationTime): new self-explicit
|
|
accessors.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_op_opendir): op_opendir no
|
|
longer takes the parent fid as parameter.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessageTable.m
|
|
(-sortIdentifierForProperty:): c_isallday and c_creationdate as
|
|
mappings for PidLidAppointmentSubType and PR_CREATION_TIME.
|
|
|
|
* OpenChange/MAPIStoreContext.m: MAPIStoreMapping instances are
|
|
now per-user instances rather than class singletons.
|
|
|
|
* OpenChange/MAPIStoreMapping.m: now makes use of the records
|
|
already present in indexing.tdb for building the initial mapping
|
|
dictionary.
|
|
|
|
* OpenChange/MAPIStoreSpoolerContext.[hm]: new context module,
|
|
which subclasses MAPIStoreSpoolerContext from
|
|
MAPIStoreFSBaseContext rather than MAPIStoreOutboxContext.
|
|
|
|
2011-06-03 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (initMenu): the wrong callbacks
|
|
were associated to menu entries when the menu was splitted in
|
|
multiple ULs.
|
|
(popupSubmenu): fixed the position so it stays beside the menu
|
|
entry when the main menu is splitted in multiple ULs. The submenu
|
|
will no longer be displayed outside the window viewport.
|
|
|
|
2011-06-02 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (hideMenu): now fires a custom
|
|
event (contextmenu:hide) to properly define a callback function
|
|
when a contextual menu is hidden.
|
|
|
|
* UI/WebServerResources/MailerUI.js (onFolderMenuClick):
|
|
registered the function onFolderMenuHide on the new event
|
|
"contextmenu:hide". This function was never called since it was
|
|
relying on an event never triggered ("hideMenu").
|
|
|
|
* UI/WebServerResources/ContactsUI.js (onContactContextMenu): idem.
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (_setupEvents): reload
|
|
main page when enabling or disabling mail threads.
|
|
|
|
2011-06-01 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m (-setMailSortByThreads)
|
|
(-mailSortByThreads): new accessors for the "SOGoMailSortByThreads"
|
|
user defaults.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-setSortByThreads)
|
|
(sortByThreads): idem.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
(-fetchUIDsMatchingQualifier:sortOrdering:threaded:): new method
|
|
to fetch a threaded-view of the folder.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m (-flattenedArray): added
|
|
recurrence to flatten interleaved arrays.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m (-updateFilters): write
|
|
multiple 'redirect' directives when forwarding to multiple email
|
|
addresses.
|
|
|
|
* UI/MailerUI/UIxMailListActions.m (-threadedUIDs): new method
|
|
that returns a flatten representation of messages threads.
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m (-columnsMetaData): added CSS
|
|
classnames for the thread column.
|
|
(-columnsDisplayOrder): add or remove the thread column depending
|
|
on the user's defaults.
|
|
|
|
* UI/MailerUI/UIxMailListActions.m (-getUIDsAndHeadersInFolder)
|
|
(-getSortedUIDsAction): added support for threads.
|
|
|
|
* UI/WebServerResources/ContactsUI.js (onContactContextMenu):
|
|
select row at pointer position when not already selected.
|
|
|
|
* UI/WebServerResources/MailerUI.js: added support for the
|
|
threaded view.
|
|
(onMessageContextMenu): select row at pointer position when not
|
|
already selected.
|
|
|
|
* UI/WebServerResources/SOGoMailDataSource.js: added support for
|
|
the threaded view.
|
|
|
|
2011-05-31 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (initCalendarSelector): use
|
|
events delegation in the calendars list.
|
|
|
|
* UI/WebServerResources/HTMLElement.js (selectElement): if element
|
|
has no ID, keep track of it anyway. This fixes an issue when
|
|
deleting attachments in the mail composition window.
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js (initMailEditor): use
|
|
events delegation in the attachments list.
|
|
|
|
* UI/Scheduler/NSArray+Scheduler.m (-compareTasksAscending): sort
|
|
the tasks by their name if they are from the same calendar.
|
|
|
|
2011-05-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreTypes.m (NSObjectFromMAPISPropValue)
|
|
(NSObjectFromSPropValue): handle PT_I8 properties.
|
|
|
|
* OpenChange/NSObject+MAPIStore.m
|
|
(-getMAPIValue:forTag:inMemCtx:): added case to handle PT_I8
|
|
properties via the new method below.
|
|
|
|
* OpenChange/NSValue+MAPIStore.m (-asI8InMemCtx:): new method that
|
|
extracts an uint64_t from an NSNumber.
|
|
|
|
* OpenChange/MAPIStoreFallbackContext.[hm]: new class module for
|
|
the "fallback" context, used by the OpenChange core to create
|
|
contexts that are not specifically handled.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_create_context): a new struct
|
|
mapistore_connection_info * is now passed as parameter, which
|
|
contains useful data about the current connection.
|
|
|
|
* OpenChange/MAPIStoreTable.m: (-deactivate): removed obsolete
|
|
method, which was part of a hack anyway.
|
|
|
|
* OpenChange/MAPIStoreObject.m: (-addActiveTable:)
|
|
(-removeActiveTable:) removed obsolete methods.
|
|
|
|
* OpenChange/MAPIStoreFolder.m: (-init) removed obsolete ivars
|
|
"activeMessageTables", "activeFAIMessageTables" and "activeFolderTables".
|
|
(-activeMessageTables, -activeFAIMessageTables)
|
|
(-activeFolderTables, _cleanupTableCaches): make use of the new
|
|
MAPIStoreActiveTables class.
|
|
|
|
* OpenChange/MAPIStoreActiveTables.[hm]: new class module that
|
|
provides a facility for keeping track of all the instantiated
|
|
tables.
|
|
|
|
2011-05-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/code-MAPIStorePropertySelectors.m
|
|
(MAPIStorePropertyGettersForClass): insert the newly created table
|
|
in the hash in order to avoid a leak... and to enable it to be
|
|
found during the next search.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m (-version, -createDate)
|
|
(-lastModified): new accessors that return the value of the
|
|
corresponding ivar.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-davCollectionTag): base the
|
|
return value on the new -[GCSFolder lastModificationDate] method.
|
|
(_isValidSyncToken): same as above.
|
|
|
|
* OpenChange/NSDate+MAPIStore.[hm]: renamed from
|
|
NSCalendarDate+MAPIStore.[hm]. Provides the same methods as
|
|
before but on NSDate rather than NSCalendarDate.
|
|
|
|
* OpenChange/gen-property-selectors.py (ParseExchangeHDefinition):
|
|
Fixed exclusion of records ending with "Error" and "Unicode".
|
|
Also, we now exclude PidTag properties with a value > 0x80000000
|
|
since they may overlap with named properties.
|
|
(__main__): replace multi-string with multi-unicode identifiers
|
|
too.
|
|
(__main__): we output getter indexes as 16 bit hex values, for
|
|
consistency.
|
|
|
|
2011-05-30 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js (contactsListCallback):
|
|
restored activation of drag'n'drop.
|
|
(configureAddressBooks, onFolderSelectionChange)
|
|
(appendAddressBook): delegated rows events to the table.
|
|
(setEventsOnAddressBook): this function removed following the new event
|
|
delegation model.
|
|
|
|
2011-05-27 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-forwardAddress)
|
|
(-setForwardAddress): allow to define multiple forwarding addresses.
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (savePreferences): test
|
|
each specified forwarding address.
|
|
|
|
2011-05-17 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* We now remove the /inverse.ca/20101018_1/ identifier
|
|
from all NGCards' timezone files.
|
|
|
|
2011-05-16 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m: Added a
|
|
workaround for a libxml's issue where the charset
|
|
specified in meta tags have precedence over the one
|
|
we "force" when creating the parser. This "bug" has
|
|
just been fixed in libxml but it'll take years before
|
|
all distributions get that fix. For now, we strip
|
|
that tag, unconditionnaly.
|
|
|
|
2011-05-10 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* NSDictionary+Utilities.m (userRecordAsLDIFEntry):
|
|
Fix to avoid a crash when backing up resources' LDIF entries
|
|
|
|
2011-05-06 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxPreferences.js
|
|
(displayAccountSignature): fixed an issue with an HTML signature
|
|
that start with a paragraph tag.
|
|
|
|
2011-05-05 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m - fixed an issue
|
|
with namespace handling in Dovecot. We do not try
|
|
to swap the mailbox name, which can correspond to an
|
|
username if we are dealing with the top-level mailbox.
|
|
|
|
2011-05-03 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js (createAttachment): show
|
|
the attachment name as the list entry's title.
|
|
|
|
* UI/WebServerResources/generic.js (onRowClick): in some cases
|
|
under ID, the event is trigger on the dragging identifier
|
|
and must be ignored.
|
|
|
|
* UI/WebServerResources/MailerUI.js (deleteSelectedMessages): we no
|
|
longer wait for the callback before invalidating the caches.
|
|
(mailListToggleMessagesRead): idem.
|
|
|
|
2011-04-28 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SQLSource.{h,m}: Added resources support,
|
|
just like for LDAP-based sources.
|
|
* SoObjects/SOGo/SOGoParentFolder.m (_createPersonalFolder):
|
|
We now also autocreate database tables if the "user"
|
|
is a resource.
|
|
|
|
2011-04-25 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (onFolderUnsubscribeCB):
|
|
select the personal calendar to avoid trying creating an event or
|
|
a task in the calendar to which the user has just unsubscribed.
|
|
|
|
2011-04-25 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added the concept of "resources" in SOGo in order
|
|
to avoid double-bookings (if not more) and also, handle
|
|
auto-accepts. This works for the web interface and
|
|
over DAV - generating 403 errors in case of a conflict.
|
|
|
|
2011-04-21 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added the possibility of translating IMAP namespaces
|
|
and we now extract the full name the mailbox owner under
|
|
the "Other Users" namespace.
|
|
|
|
2011-04-21 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (deleteEvent): we now show
|
|
in the confirmation dialog box which events will be deleted.
|
|
|
|
* UI/WebServerResources/generic.js (createDialog): the legend
|
|
argument can now be a string or an element.
|
|
(isWebKit): was isSafari; now consider all WebKit-based browsers together.
|
|
|
|
* UI/WebServerResources/UIxMailToSelection.js: various
|
|
improvements to behave like in Thunderbird.
|
|
|
|
* UI/WebServerResources/SOGoAutoCompletion.js: idem.
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js (initAddresses): was
|
|
initTabIndex. We were not handling the tab indexes properly which
|
|
was causing incorrect behavior in IE.
|
|
|
|
2011-04-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailAttachment.m (-): binary properties are
|
|
represented by a struct Binary_r.
|
|
|
|
* OpenChange/NSObject+MAPIStore.m
|
|
(-getMAPIValue:forTag:inMemCtx:): binary properties are
|
|
represented by a struct Binary_r.
|
|
|
|
* OpenChange/MAPIStoreTypes.m (NSObjectFromMAPISPropValue)
|
|
(NSObjectFromSPropValue): we now support PT_SVREID and handle it
|
|
exactly as PT_BINARY.
|
|
|
|
* OpenChange/MAPIStoreMessage.m (-attachmentTable): as all the
|
|
subclasses were using the same MAPIStoreAttachmentTable
|
|
implementation, this method now performs the same operation and
|
|
thereby no longer requires subclasssing.
|
|
|
|
* OpenChange/MAPIStoreObject.m (-getProperty:withTag:): compute
|
|
the method selector and pass it as argument to the IMP of the
|
|
property getter, as would be with any regular method invocation.
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m (-getPrBody:): no longer check
|
|
the size of the returned content, as streams are now handled
|
|
internally by OpenChange.
|
|
(-getPrHtml): same as above.
|
|
|
|
* OpenChange/MAPIStoreTypes.m (NSObjectFromStreamData): removed
|
|
helper function as it's no longer used.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_op_set_property_from_fd)
|
|
(sogo_op_get_property_into_fd): those backend methods are no
|
|
longer used, as OpenChange handles the property streams internally
|
|
now.
|
|
|
|
* OpenChange/gen-property-selectors.py: added code to generate
|
|
MAPIStoreSupportedProperties as the array of properties that are
|
|
handled by OpenChange and MAPIStoreSupportedPropertiesCount as the
|
|
count of those properties.
|
|
|
|
* OpenChange/MAPIStoreObject.m (+getAvailableProperties): ObjC
|
|
corollary of the "sogo_pocop_get_available_properties" backend
|
|
method.
|
|
(-getAvailableProperties): proxy to the class method of the same
|
|
name.
|
|
|
|
* OpenChange/MAPIStoreTable.m (+childObjectClass): new mandatory
|
|
method that returns the Class of the objects represented in the
|
|
rows of the table.
|
|
(-getAvailableProperties:): ObjC corollary of the
|
|
"sogo_pocop_get_available_table_properties" backend method.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m
|
|
(sogo_pocop_get_available_table_properties): new backend getter
|
|
that returns the list of properties that can be queried on the
|
|
table rows.
|
|
(sogo_pocop_get_available_properties): new backend getter
|
|
that returns the list of properties that can be queried on the
|
|
discrete object passed as parameter.
|
|
|
|
* OpenChange/code-MAPIStorePropertySelectors.m
|
|
(MAPIStorePropertyGettersForClass): use the
|
|
"MAPIStoreProeprtyGetter" type rather than IMP as result type.
|
|
|
|
* OpenChange/MAPIStoreFolderTable.m (-restrictedChildKeys): no
|
|
longer a mandatory method, returns [self childKeys] when not
|
|
overriden and issue an error message.
|
|
|
|
* OpenChange/MAPIStoreFolder.m (-createMessage): no longer a
|
|
mandatory method. Returns nil when not overriden.
|
|
|
|
2011-04-19 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-_flattenCycleRecord:forRange:intoArray:): fixed the
|
|
verification of the event's timezone.
|
|
|
|
2011-04-15 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/iCalEvent+SOGo.m (-firstOccurenceRange):
|
|
we now compute the end date by looking at the occurrence
|
|
interval. This way, we support events with an end date or a duration.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-_flattenCycleRecord:forRange:intoArray:): also compute the end
|
|
date by looking at the occurrence interval.
|
|
(-importCalendar:): added a duration to events with no end date nor duration.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
(-_adjustEventsInRequest:): new method to verify the vCalendar for
|
|
any inconsistency or missing attributes. Currently, it only adds a
|
|
duration if no end date nor duration is found.
|
|
|
|
* UI/WebServerResources/ckeditor/config.js: Changed the default
|
|
enter mode to use BR instead of P. This matches the behavior of Thunderbird.
|
|
|
|
2011-04-14 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxContactEditor.js
|
|
(validateContactEditor): now uses the regexp defined in generic.js
|
|
(emailRE) to validate the email addresses. This fixes an issue
|
|
with valid addresses starting with an underscore (bug #1246).
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m (-composeAction): properly decode
|
|
submitted recipients and subjects (URL-encoded).
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m (-getImapLoginForUID:): we now
|
|
consider the source parameter IMAPLoginFieldName. We continue to support
|
|
SOGoForceIMAPLoginWithEmail at the domain/system level.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m: we can now define a new parameter
|
|
named IMAPLoginFieldName to specify which field to use for IMAP
|
|
authentication. By default, we use the value of the UIDFieldName.
|
|
|
|
* SoObjects/SOGo/SQLSource.m
|
|
(-checkLogin:password:perr:expire:grace:): if the defaults parameter
|
|
authenticationFilter is defined, we add it to the SQL where clause.
|
|
(_lookupContactEntry:considerEmail:): we add a new key
|
|
(canAuthenticate) to the returned dictionary that specifies if the
|
|
user can authenticate or not. We also add c_imaplogin when the
|
|
user must authenticate with a different username to the IMAP server.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-canAuthenticate): new method that
|
|
returns true if the user can authenticate, based on the
|
|
authentication filter associated to the source.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-ocsFolder): don't automatically
|
|
create the folder if the user can't authenticate.
|
|
|
|
* UI/Contacts/UIxContactsListActions.m: was
|
|
UIxContactsListView.m. The new method contactsListAction now
|
|
returns a JSON representation of the addressbook.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m (-personalContactInfos): new
|
|
method used to populate the wox template with the personal
|
|
addressbook. The addressbook module is now pre-loaded with it,
|
|
eliminating an Ajax query.
|
|
|
|
* UI/WebServerResources/ContactsUI.js (initContacts): delegate
|
|
all events to the table instead of each row.
|
|
(contactsListCallback): we now receive a JSON representation of
|
|
the contacts and reuse the existing table rows instead of
|
|
overwriting the table.
|
|
|
|
2011-04-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreObject.m: make use of the IMP cache methods
|
|
available in MAPIStorePropertySelectors to query object
|
|
properties.
|
|
* OpenChange/*{Message,Folder}.m: replaced the implementations of
|
|
-getProperty:withTag: with equivalent property getter methods.
|
|
|
|
* OpenChange/MAPIStoreContext.m (-url): new method that returns
|
|
the context url.
|
|
|
|
* OpenChange/gen-property-selectors.py: new generator script that
|
|
outputs MAPIStorePropertySelectors.[hm], which is a helper
|
|
module that provides methods for handling of cached
|
|
property method IMPs.
|
|
|
|
2011-04-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m
|
|
(-bodyPartForAttachmentWithName:): don't choose "quoted-printable"
|
|
if the mimetype is anything else than "text/plain" or "text/html",
|
|
to avoid issues with filenames attached with a wrong mime type.
|
|
|
|
2011-04-12 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-importCalendar:): we now associate the proper vtimezone to each
|
|
event found in the calendar.
|
|
|
|
2011-04-11 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxMailToSelection.js
|
|
(addressFieldLostFocus): split content separated by commas
|
|
or semi-colons.
|
|
|
|
2011-04-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/Unit/TestNSString+URLEscaping.m: new test module.
|
|
(-test_stringByEscapingURL): new test method for -[NSString
|
|
stringByEscapingURL].
|
|
|
|
* Tests/Unit/sogo-tests.m (main): added volatile user defaults for
|
|
utf8 url encoding.
|
|
|
|
2011-04-07 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (onMenuRenameFolderConfirm):
|
|
encode the folder name in the URL.
|
|
|
|
2011-04-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailMessageTable.m
|
|
(-evaluateExistRestriction:intoQualifier:): declare that
|
|
PR_CLIENT_SUBMIT_TIME always exists on messages, which prevents
|
|
Outlook from looping on a search request that always returns the
|
|
same unexpected result...
|
|
|
|
2011-04-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m (-getProperty:withTag):
|
|
restored/implemented PR_START_DATE, PidLidAppointmentStartWhole,
|
|
PidLidCommonStart and their "end" equivalent.
|
|
|
|
* OpenChange/MAPIStoreMailFolder.m (-createFolder:): implemented
|
|
method by adapting old code that was still commented out.
|
|
(-folderKeys): implemented method.
|
|
(-lookupChild:): overriden method to return a folder object when
|
|
the child key is contained in the folder keys.
|
|
|
|
* OpenChange/MAPIStoreContext.m (_tableForFID:andTableType:): make
|
|
use of lookupFolder: to retrieve the right folder based on the FID.
|
|
(-setPropertiesWithFMID:ofTableType:inRow:): silently discard by
|
|
log the settings of properties on folders.
|
|
|
|
2011-04-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m
|
|
(-_fillBlocks:withEvent:withNumber:): fixed type confusion between
|
|
char * and NSString * that could cause a crash under certain
|
|
circumstances.
|
|
|
|
2011-04-01 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:):
|
|
when adding a new occurrence, instantiate an occurrence from the
|
|
previous calendar in order to perform a proper changes comparison.
|
|
|
|
2011-04-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/Unit/TestSBJsonParser.m (-test_parseJSONString): input and
|
|
expected result are embedded in an array since SBJsonParser needs
|
|
a "container" class.
|
|
(-test_parseJSONNumber): same as above.
|
|
|
|
* Tests/Integration/all.py: (from Jean Raby) make use of the
|
|
"SOGoLanguage" defaults key rather than the old "Language" one.
|
|
|
|
* Tests/Integration/sogoLogin.py: (from Jean Raby) new
|
|
authentication module, required by the new session-based code.
|
|
|
|
* Tests/Integration/preferences.py: (from Jean Raby) derive
|
|
authentication cookie from the new sogoLogin module.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (initCalendars): initialize
|
|
"showCompletedTaskls" to 0 when the ShowCompletedTasks settings
|
|
variable is not available.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
(-contentAsString): strip alarms from component if the alarms are
|
|
disabled on the containing calendar.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (-davComplianceClassesInContext:):
|
|
added "calendar-auto-schedule", "calendar-proxy" and "calenderserver-principal-property
|
|
|
|
* Main/SOGo+DAV.m (-davComplianceClassesInContext:): overwritten
|
|
with same code as in SOGoObject.
|
|
(-davPrincipalCollectionSet): added dav property.
|
|
|
|
2011-03-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m
|
|
(_setupRecurrenceInCalendar:withMasterEvent:fromData:): moved the
|
|
code pertaining to the handling of struct RecurrencePattern into
|
|
the new module below, in the -[iCalCalendar setupRecurrenceWithMasterEntity:
|
|
fromRecurrencePattern:) category method.
|
|
(_fillAppointmentRecurrencePattern): moved the
|
|
code pertaining to the handling of struct RecurrencePattern into
|
|
the new module below, in the -[iCalRecurrenceRule
|
|
fillRecurrencePattern:withStartDate:andEndDate:] category method.
|
|
(-createAttachment): instantiate a MAPIStoreCalendarAttachment
|
|
object.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m: added new
|
|
"sogo_pocop_open_embedded_message" backend method.
|
|
|
|
* OpenChange/MAPIStoreCalendarAttachment.[hm]: new class module
|
|
for handling event attachments or "exceptions".
|
|
|
|
* OpenChange/MAPIStoreMessage.m (-getProperty:withTag:):
|
|
handles PR_HASATTACH, previously found in MAPIStoreMailMessage.
|
|
|
|
* OpenChange/MAPIStoreAttachment.m (-nameInContainer): overriden
|
|
method to return "aid" in the form of a NSString.
|
|
(-mimeAttachTag): new helper method derived from old code in
|
|
getProperty:withTag: for subclasses.
|
|
(-getProperty:withTag:): handles PR_MID, PR_ATTACH_NUM and
|
|
PR_RENDERING_POSITION, previously found in
|
|
MAPIStoreMailAttachment.
|
|
(-openEmbeddedMessage:withMID:withMAPIStoreMsg:andFlags:): new
|
|
backend method.
|
|
(-openEmbeddedMessage, -createEmbeddedMessage): new overridable
|
|
methods.
|
|
|
|
* OpenChange/MAPIStoreEmbeddedMessage.[hm]: new class module for
|
|
attachment embedded messages.
|
|
|
|
* OpenChange/MAPIStoreObject.m (-url): make use of
|
|
-[MAPIStoreObject nameInContainer] rather than the equivalent on
|
|
SOGoObject to make that code reusable for objects that are not
|
|
based on SOGoObject instances.
|
|
|
|
* OpenChange/MAPIStoreRecurrenceUtils.m: new module implementing
|
|
methods useful for handling recurrences in events and tasks.
|
|
|
|
2011-03-31 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (messageListCallback): put an
|
|
non-breaking space in empty cells, not only for IE.
|
|
|
|
* UI/Contacts/UIxContactView.m (_cardStringWithLabel:value:):
|
|
remove useless carriage returns to avoid JavaScript errors in IE7.
|
|
|
|
2011-03-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m (-copyMessagesAction)
|
|
(-expungeAction, -emptyTrashAction): use "-mailAccountFolder" in
|
|
order to retrieve the account folder as the clientObject may
|
|
actually be a nested folder...
|
|
|
|
* UI/WebServerResources/UIxTaskEditor.js (initializeStatusLine):
|
|
bind onStatusListChange as callback to "change" rather than
|
|
"mouseup" as it otherwise fails to be invoked on Chrome.
|
|
|
|
* SoObjects/SOGo/SOGoBuild.m: export new SOGoVersion NSString.
|
|
|
|
* Main/SOGo.m (+initialize): moved most initialization code from
|
|
-init and -run here since this method is invoked before forking
|
|
and data memory is in "copy-on-write" mode, slightly reducing
|
|
memory usage of combined SOGo processes.
|
|
(+applicationWillStart): new method replacing +initialize.
|
|
|
|
2011-03-30 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-fetchFreeBusyInfosFrom:to:): we must fetch the c_content in
|
|
order to flatten cyclic events.
|
|
|
|
* SoObjects/SOGo/SOGoSystemDefaults.m (-pageTitle): new method to
|
|
retrieve the Web page title from the new system defaults "SOGoPageTitle".
|
|
|
|
* UI/Common/UIxPageFrame.m (-title): consider the new system
|
|
default attribute "SOGoPageTitle".
|
|
|
|
2011-03-29 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/iCalEvent+SOGo.m
|
|
(-updateRecurrenceRulesUntilDate:): shifts the "until dates" of
|
|
the recurrence rules of the event with respect to the previous end
|
|
date of the event.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
(-updateComponent: ): splitted method "saveComponent:" to avoid
|
|
saving the component multiple times during the same session.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m (-saveComponent):
|
|
make use of the new "updateComponent" method mentioned above.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-_flattenCycleRecord:forRange:intoArray:): when the event has a
|
|
timezone, the "until dates" of recurrence rules must be adjusted.
|
|
|
|
* UI/Scheduler/UIxAppointmentActions.m (-adjustAction): when
|
|
modifying an event, also modify the "until dates" of recurrence rules.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m (-_adjustRecurrentRules):
|
|
the "until date" of finite recurrence rules must be based on the
|
|
event end date, not the start date.
|
|
|
|
2011-03-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tools/SOGoToolRemoveDoubles.m
|
|
(-detectDoublesFromRecords:withQuickField:): added a quick field
|
|
parameter to enable the use of other fields than just c_mail.
|
|
|
|
2011-03-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactsListView.m (-currentContactClasses): new
|
|
method that returns the classes associated to the current contact.
|
|
For now, only the c_component.
|
|
|
|
2011-03-24 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailListActions.m (-imap4SortOrdering): verify
|
|
that the sort is defined when rollbacking to the user's settings.
|
|
|
|
* SoObjects/SOGo/SQLSource.m (_encryptPassword:): new method to
|
|
encrypt a user's password according to the configured algorithm.
|
|
(-changePasswordForLogin:oldPassword:newPassword:perr:):
|
|
now implemented (thanks to Martin Rabl).
|
|
|
|
2011-03-23 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:):
|
|
Fix for bug #1092. We were incorrectly looking up
|
|
the organizer of an exception to a recurrence and
|
|
we were also incorrectly always updating the master
|
|
event with the part-state.
|
|
|
|
2011-03-23 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-timeZonesList): we make use
|
|
of the new method [iCalTimeZone knownTimeZoneNames] instead of
|
|
[NSTimeZone knownTimeZoneNames] to avoid listing tons of useless timezones.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-userTimeZone): since we now
|
|
offer a limited number of timezones, the user timezone could be
|
|
unrecognized. In this case, try to find a timezone with the same
|
|
GMT offset.
|
|
|
|
2011-03-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m (-init): new method to
|
|
initialize the attachment ivars.
|
|
(-ownerTimeZone): new method with common code.
|
|
(-getProperty:withTag): (PR_ICON_INDEX) return a more precise icon depending on
|
|
the recurring nature of the event as well on its number of
|
|
attendees. (PidLidAppointmentStartWhole,
|
|
PidLidAppointmentEndWhole) removed properties. (PidLidRecurring,
|
|
PidLidIsRecurring), returns YES when recurring.
|
|
(PidLidAppointmentRecur) property handles property, by using
|
|
-_computeAppointmentRecur and other submethods.
|
|
|
|
* OpenChange/NSCalendarDate+MAPIStore.m (-asMinutesSince1601):
|
|
corollary to +dateFromMinutesSince1601.
|
|
|
|
2011-03-21 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* Tools/SOGoToolBackup.m (-fetchUserIDs:): when choosing to backup
|
|
all users, fetch the users list from the folder info table instead
|
|
of the configured sources. This fixes an issue when trying to
|
|
retrieve the users from LDAP sources that limit the number
|
|
of results.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m (:_qualifierForFilter): avoid
|
|
duplicated filters on the CN attribute.
|
|
|
|
* UI/WebServerResources/UIxPreferences.js
|
|
(displayAccountSignature): strips the tags and unescape the HTML
|
|
to improve readability.
|
|
|
|
* UI/WebServerResources/MailerUI.js (updateWindowTitle): new
|
|
function used to update the window title with respect to the
|
|
currently selected mailbox.
|
|
|
|
* UI/WebServerResources/MailerUI.js (openMailbox): exchanged sort
|
|
arrows to match Thunderbird's GUI.
|
|
|
|
* UI/MailerUI/UIxMailListActions.m (-imap4SortOrdering): when the
|
|
sort is not specified in the request, retrieve the user's previous sort.
|
|
|
|
2011-03-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m
|
|
(-_setupRecurrenceInCalendar:withMasterEvent:fromData:): new
|
|
method for setting recurrence info from "PidLidAppointmentRecur"
|
|
(no exdate, exrule or modified occurrence for now).
|
|
|
|
* OpenChange/NSCalendarDate+MAPIStore.m
|
|
(+dateFromMinutesSince1601): new constructor, helpful for MAPI
|
|
recurrence structures.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessageTable.m,
|
|
OpenChange/MAPIStoreTasksMessageTable.m,
|
|
OpenChange/MAPIStoreContactsMessageTable.m,
|
|
OpenChange/MAPIStoreMailMessageTable.m,
|
|
OpenChange/MAPIStoreTasksMessage.m, OpenChange/MAPIStoreMessage.m,
|
|
OpenChange/MAPIStoreMailMessage.m,
|
|
OpenChange/MAPIStoreContactsMessage.m: cast property tags to
|
|
uint32_t in switch statements to avoid fatal warnings about
|
|
uncovered cases.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m
|
|
(-takeValuesFromRequest:inContext:): added some sanity checks to
|
|
avoid crashes when alarm data is not properly entered.
|
|
|
|
2011-03-18 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (initCalendars): we must
|
|
set "showCompletedTasks" earlier in order to properly fetch the
|
|
tasks upon the first refresh.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m
|
|
(-takeValuesFromRequest:inContext:): we no longer associate a
|
|
vTimeZone to start/end dates of an all-day vEvent.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m
|
|
(-_fetchFields:forComponentOfType:): we don't add components
|
|
outside the covered period. This could happen with all-day events,
|
|
since their dates are always GMT.
|
|
|
|
* SoObjects/Appointments/iCalEvent+SOGo.m (-quickRecord): an all-day
|
|
event usually doesn't have a timezone. However, if it does, we must
|
|
convert its dates to GMT. All-day events are "floating", in the
|
|
sense that they are timezone-independant.
|
|
|
|
2011-03-17 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m (-listMailboxesAction):
|
|
moved code that fetches the inbox quota to [SOGoMailAccount getInboxQuota].
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m (-getInboxQuota): new method
|
|
created partially from the method [UIxMailAccountActions listMailboxesAction].
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m (-deleteAction)
|
|
(-copyMessagesAction, -expungeAction, -emptyTrashAction): we now
|
|
return a JSON representation of the inbox quota when these actions
|
|
succeeds.
|
|
(-quotasAction): removed this method which was no longer used.
|
|
|
|
* UI/WebServerResources/MailerUI.js (updateQuotas): new function
|
|
extracted from updateMailboxTreeInPage. It is called when a folder
|
|
operation returns the inbox quota.
|
|
|
|
2011-03-15 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailListActions.m (-getMailAction): removed this
|
|
method that is no longer used since live-loading.
|
|
(-getSortedUIDsAction): restored the call to
|
|
expungeLastMarkedFolder so that the last visited folder is
|
|
expunged when switching folder.
|
|
|
|
2011-03-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m
|
|
(-setDavContactsCategories:): we need to handle the case where the
|
|
"category" element has more than one subnode, in particular when
|
|
xml entities are used.
|
|
|
|
2011-03-11 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/HTMLElement.js (onContextMenu): hide the
|
|
menu on a mousedown, not a click. This fixes a problem on Webkit browsers.
|
|
|
|
* UI/WebServerResources/generic.js: cleanup some event observers
|
|
related to contextual menus.
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js (initMailEditor): added
|
|
the SpellChecker button in the HTML editor toolbar, and disabled
|
|
the "check while typing" option (scayt).
|
|
|
|
* UI/WebServerResources/ContactsUI.js (initContacts): don't define
|
|
the categories contextual menu if the contacts list doesn't
|
|
exist. This fixes a problem when adding categories to a contact
|
|
using IE7.
|
|
|
|
2011-03-10 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m (-fixupRecord):
|
|
the time of all-day events must be adjusted for the user's timezone.
|
|
|
|
* UI/WebServerResources/UIxContactEditor.js (initEditorForm):
|
|
the input category field doesn't appear if the card is
|
|
read-only. Adjusted the code accordingly.
|
|
|
|
* UI/WebServerResources/ContactsUI.js
|
|
(onCategoriesMenuItemCallback): new callback that refreshes the
|
|
displayed card when a category is added or removed.
|
|
|
|
2011-03-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js (onCategoriesMenuItemClick):
|
|
makes use of "encodeURIComponent" rather than "escape" to encode
|
|
URL parameters, because for some reason the former takes the
|
|
encoding into account and not the latter.
|
|
|
|
2011-03-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreCalendarMessage.m (-save): accept entries
|
|
with an "x500dn" record since they are now properly converted.
|
|
|
|
* OpenChange/MAPIStoreContext.m (_convertRecipientFromRow:):
|
|
properly find out the coordinates of internal users.
|
|
|
|
2011-03-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFSFolder.m (-createMessage): fixed typo that
|
|
was making contents messages saved in the FAI folder.
|
|
|
|
* OpenChange/MAPIStoreContext.m (_prepareContextClass): now takes
|
|
the context fid as argument.
|
|
|
|
* OpenChange/MAPIStore*Context.m (+registerFixedMappings): removed
|
|
method, made obsolete by the fact that we now receive the context
|
|
fid during initialization.
|
|
|
|
* OpenChange/MAPIStoreFAIMessageTable.[hm]: restored class module
|
|
in order to reenable proper class testing during notifications.
|
|
|
|
* OpenChange/MAPIStoreTypes.h (MAPIPropertyKey): we now make use
|
|
of the full property tag again since the modified properties need
|
|
to be reported during notifications.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_pocop_open_table)
|
|
(sogo_pocop_set_table_restrictions)
|
|
(sogo_pocop_set_table_sort_order): new poc methods.
|
|
(sogo_pocop_release): invoke -deactivate on the released object if
|
|
it responds to it.
|
|
|
|
* OpenChange/MAPIStoreContext.m (-setRestrictions:withFID:andTableType:getTableStatus:):
|
|
(-setSortOrder:withFID:andTableType:getTableStatus:):
|
|
(-getTableProperty:withTag:atPosition:withTableType:andQueryType:inFID:):
|
|
adversise methods as obsolete in the log for debugging purposes.
|
|
(_saveOrSubmitChangesInMessageWithMID:andFlags:save:): added code
|
|
to push the relevant folder, message and table notifications.
|
|
(-deleteMessageWithMID:inFID:withFlags:): same as above.
|
|
(-getTable:andRowCount:withFID:tableType:andHandleId:): new pocop
|
|
helper method to instantiate tables.
|
|
|
|
* OpenChange/MAPIStoreTable.m (-notifyChangesForChild:): new
|
|
method that pushes an appropriate table notification with regards
|
|
to the child passed as parameters.
|
|
(-deactivate): new helper method that enables the table to
|
|
unregister itself from its container prior to be released.
|
|
(-setHandleId): new helper accessor enabling reporting the table
|
|
handle during notifications.
|
|
|
|
* OpenChange/MAPIStoreObject.m (-addActiveTable:)
|
|
(-removeActiveTable:): new methods to add or remove tables from
|
|
the active table arrays, used later for notifications.
|
|
(-resetNewProperties): new method to empty the "newProperties"
|
|
dictionary once a "save changes" or a "submit" happened.
|
|
|
|
* OpenChange/MAPIStore*Folder.m (-messageTable, -messageFAITable,
|
|
-folderTable)
|
|
* OpenChange/MAPIStore*Message.m (-attachmentTable): no longer
|
|
cache the resulting table.
|
|
|
|
* SoObjects/SOGo/SOGoCache.m
|
|
(-unregisterObjectWithName:inContainer:): same as below.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-removeChildRecordWithName:):
|
|
new method to ensure a child records is removed from the cache
|
|
when modified or deleted.
|
|
|
|
2011-03-04 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.h/m:
|
|
-importCalendar: we now also import the timezone definition
|
|
when present
|
|
* SoObjects/SOGo/SQLSource.m
|
|
We now consider the domain belonging to the SQLSource instance
|
|
|
|
2011-02-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailContext.[hm]: renamed from
|
|
MAPIStoreMailBaseContext and merged in all subclass modules due to
|
|
their small size.
|
|
|
|
2011-02-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreTypes.m (NSObjectFromStreamData): convert
|
|
read PT_UNICODE stream data as UTF-16.
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(-setProperty:withFMID:ofTableType:fromFile:): considering the
|
|
cached message as a MAPIStoreMessage instance instead of NSDictionary.
|
|
|
|
* OpenChange/MAPIStoreMailMessage.m
|
|
(_fetchAttachmentPartsInBodyInfo:withPrefix:): detect attachment
|
|
parts based on the existence of the "filename" info parameter.
|
|
|
|
* OpenChange/MAPIStoreTable.m: refactored class to be used as an
|
|
accessor on MAPIStoreFolder or other MAPIStoreObject derivatives
|
|
based on a defined set of methods. Now strictly handle the sorting
|
|
and filtering of folder entries, the getting of properties having
|
|
been moved to the MAPIStoreMessage classes.
|
|
|
|
* OpenChange/SOGoMAPIFSMessage.m (-appendProperties:): new name
|
|
for "setMAPIProperties:"
|
|
(-save): new name for "MAPISave", since those were methods
|
|
ususally found in the obsolete category modules.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m:
|
|
(sogo_pocop_get_attachment_table, sogo_pocop_get_attachment)
|
|
(sogo_pocop_create_attachment, sogo_pocop_set_table_columns)
|
|
(sogo_pocop_get_table_row, sogo_pocop_get_properties)
|
|
(sogo_pocop_set_properties, sogo_pocop_release): new backend
|
|
methods (with counterparts in SOGoContext) that are used as part
|
|
of the new proof-of-concept API, where objects are accessed
|
|
directly from memory instead of needed to be resolved via their
|
|
fid, mid or aid identifiers.
|
|
|
|
* OpenChange/MAPIStoreAttachment.m: new super class, derived from
|
|
MAPIStoreObject and used for MAPI attachment objects.
|
|
|
|
* OpenChange/MAPIStoreFolder.m: new super class used as wrapper
|
|
around SOGoFolder objects, by decoupling the code previously found
|
|
in the SOGo*Context classes and which implement basic and uniform
|
|
content key facilities.
|
|
|
|
* OpenChange/MAPIStoreMessage.m: new super class used for
|
|
wrapper objects replacing the category modules on the SOGoObject.
|
|
|
|
* OpenChange/MAPIStoreObject.m: new super class used as base the
|
|
MAPI objects counterparts (MAPIStoreMessage, MAPIStoreFolder and
|
|
MAPIStoreAttachment).
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSEntry.m
|
|
(-saveContentString:baseVersion:): release the "card" ivar to
|
|
avoid caching issues.
|
|
|
|
* SoObjects/Appointments/SOGoTaskObject.m
|
|
(-saveContentString:baseVersion:): same as below.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
(-saveComponent:): release fullCalendar, safeCalendar and
|
|
originalCalendar after modification to avoid caching issues.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m (-davContentLength): return 0
|
|
when "content" is nil to avoid a value of "(nil)".
|
|
(-setMAPIContent:, -MAPIContent): removed obsolete methods (fixed
|
|
hack).
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m (_hasFlag:): put the flags in
|
|
a cache to avoid multiple queries.
|
|
|
|
2011-02-24 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-_flattenCycleRecord:forRange:intoArray:): fixed the condition
|
|
that checks if the event lasts all-day.
|
|
|
|
2011-02-23 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* We now strip the bcc header in SOGoDraftObject instead
|
|
of doing it in SOPE. Prior to stripping the bcc header,
|
|
we keep a copy of the message for proper saving in the
|
|
Sent IMAP folder.
|
|
|
|
* Improved the Installation and Configuration Guide regarding
|
|
the SQL-based authentication sources (required database columns)
|
|
and also the "id" uniqueness of authentication sources in general
|
|
|
|
* UI/WebServerResources/UIxPreferences.js:
|
|
Added many checks in case the Mail module is disabled for
|
|
proper behavior of the Preferences panel.
|
|
|
|
2011-02-23 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m (-lookupInfoForBodyPart:): we
|
|
now compare the path with a string only if it is a string (and not
|
|
an array).
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-fixupCycleRecord:cycleRange:firstInstanceCalendarDateRange:withEventTimeZone:):
|
|
avoid fixing the timezone if no event timezone is defined.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
(-newOccurenceWithID): set the occurrence timezone to the user's
|
|
timezone. This fixes an issue when accessing occurrences of a
|
|
recurrent event.
|
|
|
|
2011-02-22 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m (
|
|
-_fillBlocks:withEvent:withNumber:): don't compute the block if
|
|
the end date is before the start date. This fixes a rare segfault that
|
|
occurs with recurrent event with multiple exceptions.
|
|
|
|
2011-02-17 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoFolder+CardDAV.m (-parseContactFilter:):
|
|
we now consider all DOM elements from the text-match element. This
|
|
fixes problems when the query contains one or more HTML entities.
|
|
|
|
2011-02-17 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Modified all tools to NOT check for SOGoUserSources
|
|
as it'll break if we are in multi-domain with no
|
|
master sources defined.
|
|
* Modified SOGoAuthenticator: -imapPasswordInContext: ...
|
|
to pass the server URL and not the host particle in order
|
|
to determine if we are using SSL or not.
|
|
|
|
2011-02-16 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (-appendSieveFilterRow):
|
|
fixed a bug with IE8 that would not set the "checked" attribute
|
|
properly on a checkbox.
|
|
|
|
2011-02-15 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
We add extra verifications before trying to instantiate
|
|
SOGoEMailAlarmsManager in order to make sure
|
|
SOGoEnableEMailAlarms was set to YES prior doing this.
|
|
This fixes bug #1079.
|
|
|
|
2011-02-14 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxDatePicker.m
|
|
(-takeValuesFromRequest:inContext:): we now consider the timezone
|
|
offset with respect to the current date, ie we properly consider daylight
|
|
saving time offset.
|
|
|
|
2011-02-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreFSMessageTable.m
|
|
(-getChildProperty:forKey:withTag:): move type conversion code
|
|
into NSObject+MAPIStore.
|
|
|
|
* OpenChange/NSObject+MAPIStore.[hm]: new category module that
|
|
provides type methods common to all NSObject descendants.
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(-createMessagePropertiesWithMID:inFID:isAssociated:): create a
|
|
fake PR_SEARCH_KEY on new message to make Outlook happy when
|
|
composing invitations.
|
|
(-getProperties:ofTableType:inRow:withMID:): perform property
|
|
searches on "live messages" (unsaved ones) as well.
|
|
|
|
* OpenChange/MAPIStoreMailMessageTable.m (-restrictedChildKeys):
|
|
no longer excluded messages marked with "\Deleted".
|
|
(-getChildProperty:forKey:withTag:): display the right icon for
|
|
replied, forwarded, read/unread and deleted messages.
|
|
|
|
* OpenChange/MAPIStoreMailFolderTable.m
|
|
(-getChildProperty:forKey:withTag:): compute propre response for
|
|
PR_CONTENT_UNREAD, even though this will work only for subfolders
|
|
and mapistore v2, neither of which is supported right now...
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m (-isNewMail, -replied)
|
|
(-forwarded, -deleted): new accessors for the \Recent, \Answered,
|
|
$Forwarded and \Deleted IMAP flags.
|
|
|
|
2011-02-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartViewer.m (-decodedFlatContent):
|
|
finally make use of the -bodyDataFromEncoding: category method
|
|
from NSData+Mail (Mailer module).
|
|
(-flatContentAsString): moved charset-decoding code into a new
|
|
category method named "-bodyStringFromCharset:" in NSData+Mail
|
|
(Mailer module).
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m (-lookupInfoForBodyPart:):
|
|
accept "text" as path parameter and return the main bodyStructure
|
|
in that case.
|
|
|
|
* OpenChange/MAPIStoreMailMessageTable.m
|
|
(-getChildProperty:forKey:withTag:): enhanced treatment of
|
|
PR_BODY_UNICODE to accept text/plain parts when more than one is
|
|
available, by selecting the first one only. This requires the
|
|
prior detection of text/html parts in order to exclude the
|
|
property or not.
|
|
Make use of the category methods offered in NSData+Mail to
|
|
properly decode the body data for PR_BODY_UNICODE and PR_HTML.
|
|
|
|
2011-02-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(-getProperties:ofTableType:inRow:withMID:): small code size
|
|
optimization.
|
|
(-getProperty:withFMID:ofTableType:intoFile:): added support for
|
|
NSString values.
|
|
|
|
* OpenChange/MAPIStoreMailMessageTable.m
|
|
(-getChildProperty:forKey:withTag:): return
|
|
MAPI_E_NOT_ENOUGH_MEMORY for values of PR_HTML or PR_BODY_UNICODE
|
|
that are larged than 16Kib (arbitrary limit).
|
|
|
|
* OpenChange/MAPIStoreCalendarMessageTable.m
|
|
(-sortIdentifierForProperty): added support for
|
|
PidLidAppointmentEndWhole and PidLidRecurring.
|
|
|
|
* OpenChange/MAPIStoreTable.m
|
|
(-warnUnhandledProperty:inFunction:): renamed and made method public.
|
|
|
|
* OpenChange/MAPIStoreGCSMessageTable.m
|
|
(-evaluatePropertyRestriction:intoQualifier:)
|
|
took version of method from MAPIStoreTable and modified it to
|
|
handle all string comparisons with the "UPPER" operator.
|
|
(-_fixedDatePropertyRestriction:): renamed version of
|
|
evaluateDatePropertyRestriction:intoQualifier: which now returns a
|
|
new restriction instead of repassing it to evaluatePropert...
|
|
|
|
* OpenChange/NSAutoreleasePool+MAPIStore.m: new utility module
|
|
that enables the reparenting of a talloc pointer to the current
|
|
NSAutoreleasePool.
|
|
|
|
* OpenChange/MAPIStoreContactsMessageTable.m
|
|
(-sortIdentifierForProperty:): implemented basic table for
|
|
supporting the sorting implied by the use of the addressbook label
|
|
buttons.
|
|
|
|
* OpenChange/MAPIStoreTasksMessageTable.m
|
|
(-sortIdentifierForProperty:): implemented basic table for
|
|
supporting common header sorts from the OL interface.
|
|
|
|
* OpenChange/MAPIStoreCalendarMessageTable.m
|
|
(-sortIdentifierForProperty:): implemented basic table.
|
|
|
|
* OpenChange/MAPIStoreGCSMessageTable.m (-setSordOrder:):
|
|
implemented overriden method, making use of the new
|
|
"sortIdentifierForProperty:" subclass method for the mapping of
|
|
sort fields and SQL fields.
|
|
|
|
2011-02-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContactsMessageTable.m
|
|
(-getChildProperty:forKey:withTag:): added support for the
|
|
following props: PR_SEND_INTERNET_ENCODING, PidLidFileUnderId,
|
|
PidLidEmail1DisplayName, PidLidEmail1EmailAddress,
|
|
PidLidEmail2EmailAddress, PR_ACCOUNT_UNICODE,
|
|
PR_CONTACT_EMAIL_ADDRESSES_UNICODE,
|
|
PR_EMS_AB_TARGET_ADDRESS_UNICODE, PR_SEARCH_KEY,
|
|
PR_MAIL_PERMISSION
|
|
|
|
* OpenChange/MAPIStoreMessageTable.m
|
|
(-getChildProperty:forKey:withTag:): returns a default value for
|
|
PR_ORIG_MESSAGE_CLASS_UNICODE based of PR_MESSAGE_CLASS_UNICODE.
|
|
|
|
* OpenChange/NSArray+MAPIStore.m (-asArrayOfUnicodeStringsInCtx:):
|
|
new method for returning array of "PT_UNICODE" values.
|
|
|
|
2011-02-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMessageTable.m
|
|
(-getChildProperty:forKey:withTag:): removed PR_MESSAGE_CODEPAGE
|
|
and PR_INTERNET_CPID.
|
|
|
|
* OpenChange/MAPIStoreMailMessageTable.m
|
|
(-getChildProperty:forKey:withTag:): removed non-unicode string
|
|
proptags. Added support for case
|
|
PR_RCVD_REPRESENTING_ADDRTYPE_UNICODE,
|
|
PR_RECEIVED_BY_ADDRTYPE_UNICODE, PR_SENDER_ADDRTYPE_UNICODE,
|
|
PR_ORIGINAL_AUTHOR_NAME_UNICODE, PR_SENDER_NAME_UNICODE,
|
|
PR_SENDER_EMAIL_ADDRESS_UNICODE,
|
|
PR_RECEIVED_BY_EMAIL_ADDRESS_UNICODE and
|
|
PR_RCVD_REPRESENTING_EMAIL_ADDRESS_UNICODE.
|
|
Removed code returning MAPI_E_NOT_ENOUGH_MEMORY when content
|
|
values where larger than 3999 bytes.
|
|
(_sortIdentifierForProperty:): enabled sorting on
|
|
PR_CLIENT_SUBMIT_TIME.
|
|
Added support for PR_INTERNET_CPID, currently returning "utf-8"
|
|
only (65001).
|
|
|
|
2011-02-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreNotesMessageTable.m
|
|
(-getChildProperty:forKey:withTag:): make PR_SUBJECT_UNICODE an
|
|
alias to PR_NORMALIZED_SUBJECT_UNICODE.
|
|
|
|
* OpenChange/MAPIStoreMailMessageTable.m
|
|
(-getChildProperty:forKey:withTag:): return a proper value for
|
|
PR_SUBJECT_PREFIX_UNICODE and PR_NORMALIZED_SUBJECT_UNICODE.
|
|
|
|
* OpenChange/MAPIStoreMessageTable.m
|
|
(-getChildProperty:forKey:withTag:): now return standard values
|
|
(checked against doc) for PR_ORIGINAL_SUBJECT_UNICODE,
|
|
PR_CONVERSATION_TOPIC_UNICODE, PR_SUBJECT_PREFIX_UNICODE and
|
|
PR_NORMALIZED_SUBJECT_UNICODE, the two latter being common to all
|
|
modules except MAPIStoreMailMessageTable.
|
|
|
|
* OpenChange/MAPIStoreContext.m (-openMessage:forKey:inTable:):
|
|
only return PR_SUBJECT_PREFIX_UNICODE,
|
|
PR_NORMALIZED_SUBJECT_UNICODE as those are the only fields
|
|
required by the doc.
|
|
|
|
* OpenChange/MAPIStoreMailMessageTable.m
|
|
(-getChildProperty:forKey:withTag:): handle PR_FLAG_STATUS and
|
|
PR_FOLLOWUP_ICON based on the "Flagged" message flag.
|
|
|
|
* OpenChange/SOGoMailObject+MAPIStore.m: new category module for
|
|
handling IMAP metadata on messages.
|
|
|
|
* OpenChange/MAPIStoreDraftsContext.m
|
|
(-createMessageOfClass:inFolderAtURL:): implemented method to
|
|
avoid a crash when "saving" drafts messages in Outlook.
|
|
|
|
2011-02-07 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreDeletedItemsContext.m: now a subclass of
|
|
MAPIStoreMailContext and make use of the trash folder as module
|
|
folder.
|
|
|
|
* OpenChange/MAPIStoreDraftsContext.m: now a subclass of
|
|
MAPIStoreMailContext and make use of the drafts folder as module
|
|
folder.
|
|
|
|
2011-02-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailMessageTable.m (-setSordOrder):
|
|
overriden method with proper mapping of IMAP sort fields, still
|
|
lack handling of categories.
|
|
|
|
* OpenChange/MAPIStoreMessageTable.m (-setSortOrder:): implemented
|
|
stub method.
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(-setSortOrder:withFID:andTableType:getTableStatus:): implemented
|
|
backend method for sorting messages.
|
|
|
|
* OpenChange/SOGoMAPIFSMessage.m (-MAPISave): restored old way of
|
|
decoding the property dictionary from the property list as the
|
|
"new method" was working around that was solved elsewhere and was
|
|
causing trouble with value typing.
|
|
|
|
2011-02-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/SOGoMAPIFSMessage.m (-properties): initialize
|
|
properties to an empty dictionary if the initialization from file
|
|
failed.
|
|
|
|
* OpenChange/MAPIStoreMailMessageTable.m (-childKeys)
|
|
(-restrictedChildKeys): now only return non-deleted elements.
|
|
|
|
* OpenChange/SOGoMAPIFSMessage.m (-MAPISave): use an alternative
|
|
way of producing the property list file as, for some reason,
|
|
invoking -writeToFile:atomically: can fail on NSDictionary.
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(-deleteMessageWithMID:inFID:withFlags:): we need to invoke
|
|
-cleanupCaches on the related table to avoid listing deleted
|
|
elements after this operation.
|
|
|
|
2011-02-03 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* OpenChange/SOGoAppointmentObject+MAPIStore.m
|
|
(-setMAPIProperties:): added code to handle attendees. Make use of
|
|
the new MAPIContent ivar (temp hack).
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m (-MAPIContent)
|
|
(-setMAPIContent:): new accessors for querying/modifying the new
|
|
"MAPIContent" ivar, as part of a hack to enable events to be
|
|
modified multiple times as one.
|
|
|
|
* OpenChange/MAPIStoreCalendarContext.m
|
|
(-openMessage:forKey:inTable:): overriden method to return
|
|
attendees as recipients.
|
|
|
|
* OpenChange/SOGoMAPIFSMessage.m (-delete): implemented method.
|
|
(-setMAPIProperties:): append the new properties to the existing
|
|
ones instead of replacing them.
|
|
|
|
* OpenChange/MAPIStoreTable.m (-setRestrictions:): log the old
|
|
restriction when unset.
|
|
|
|
* OpenChange/MAPIStoreMapping.m (-unregisterURLWithID:): new
|
|
method for removing entries from the mapping dictionaries.
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(-deleteMessageWithMID:inFID:withFlags:): implemented backend method.
|
|
|
|
2011-02-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(_saveOrSubmitChangesInMessageWithMID:andFlags:save:): silently
|
|
ignore "IPM.Schedule.Meeting.Request" messages from Outlook
|
|
and return a success code.
|
|
|
|
* SoObjects/SOGo/WOResourceManager+SOGo.m: new category module
|
|
defining methods useful to the vanilla and OpenChange frontends.
|
|
(-localeForLanguageNamed:): method moved from SOGo.m.
|
|
|
|
2011-02-01 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.h,m: Fixed
|
|
the salt for crypt-based encoding
|
|
|
|
2011-02-01 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/scriptaculous/dragdrop.js (-updateDrag:):
|
|
fixed JavaScript error with Offset object. This object is now
|
|
casted as an array.
|
|
|
|
* UI/WebServerResources/MailerUI.js (-startDragging): improved
|
|
behavior of drag and drop.
|
|
|
|
2011-01-28 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (-onDocumentKeydown): set
|
|
the global variables lastClickedRow and lastClickedRowId to fix
|
|
the behavior of subsequent selections of multiple messages.
|
|
(-configureMessageListEvents): set the table listener on mouseup
|
|
instead of mousedown to improve the drag'n'drop experience.
|
|
|
|
2011-01-27 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m
|
|
(-checkLogin:password:perr:expire:grace:): the caching of the DN
|
|
is now performed only if the DN was found.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m (-save): we no longer use the
|
|
relative URL of the draft folder when it must be created. This
|
|
fixes an issue when using a subfolder as the drafts folder.
|
|
|
|
2011-01-26 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-setComponent:): retrieve the
|
|
organizer from the master component when not present in the
|
|
current component.
|
|
|
|
2011-01-24 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m (_qualifierForFilter:): added
|
|
support for the parameter "SearchFieldNames" that can be added to
|
|
the source defaults to specify which LDAP attributes to use when
|
|
filtering contacts. It defaults to the previous values, ie sn,
|
|
displayname, and telephonenumber.
|
|
|
|
2011-01-21 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/iCalRepeatableEntityObject+SOGo.m
|
|
(-doesOccurOnDate:): we set the timezone of floating all-day
|
|
events to the one of the date passed as argument.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m (-defaultAction): when
|
|
dealing with "floating" start dates (no timezone), we convert it to
|
|
the user's timezone.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(:_flattenCycleRecord:forRange:intoArray:): we must set the
|
|
timezone of floating all-day events to the user's timezone.
|
|
(_flattenCycleRecords:fetchRange:): Adjust the range so it ends at
|
|
midnight. This is necessary when calculating recurrences of all-day events.
|
|
|
|
2011-01-17 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoEMailAlarmsManager.m
|
|
(-_lookupEntityMatchingRecord:inCalendar:): We check if
|
|
recurrenceId is nil prior calling -timeIntervalSince1970.
|
|
|
|
2011-01-14 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/iCalRepeatableEntityObject+SOGo.m
|
|
(-doesOccurOnDate:): exception rules be adjusted to the event's
|
|
timezone since the recurrence calculation is also based on the
|
|
event's timezone.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-_flattenCycleRecord:forRange:intoArray:): idem.
|
|
|
|
2011-01-14 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Work on the OpenChange backend: added more property
|
|
support such as priority for tasks, events and mails,
|
|
secondary email address support for contacts, nickname
|
|
and birthday support for contacts and a few more or
|
|
some fixes there and there.
|
|
* OpenChange/SOGoMAPIFSMessage.m: -MAPISave added a hack
|
|
to AVOID saving informations on the fs when dealing
|
|
with the "inbox" folder - as it'll crash Outlook upon
|
|
next restarts
|
|
* Added OpenChange/MAPIStoreNotesMessageTable.{h,m} to
|
|
later extend and improve Notes support.
|
|
|
|
2011-01-13 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/iCalRepeatableEntityObject+SOGo.m
|
|
(-doesOccurOnDate:): the date to verify must be adjusted to the
|
|
event's timezone before performing the calculation of the
|
|
recurrence rule.
|
|
|
|
* SoObjects/Appointments/iCalEvent+SOGo.m (-firstOccurenceRange):
|
|
extract the original start and end dates from the event, based on
|
|
the event's timezone.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-fixupCycleRecord:cycleRange:firstInstanceCalendarDateRange:withEventTimeZone:):
|
|
the event dates must be first be adjusted to the event's timezone
|
|
before being adjusted to the user's timezone.
|
|
(-_flattenCycleRecord:forRange:intoArray:): the calculation of the
|
|
occurrences must be performed with respect to the event's
|
|
timezone, not the user's timezone.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
(-newOccurenceWithID:): new occurrences are now independant of the
|
|
user's timezone.
|
|
|
|
2011-01-11 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContactsMessageTable.m
|
|
Added more properties: home/work URL, nickname
|
|
and department.
|
|
|
|
2011-01-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/SOGoTaskObject+MAPIStore.m (-setMAPIProperties):
|
|
release fullCalendar and safeCalendar to force a rebuild of
|
|
the root object when next requested.
|
|
|
|
* OpenChange/SOGoAppointmentObject+MAPIStore.m (-setMAPIProperties):
|
|
idem.
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(-createMessagePropertiesWithMID:inFID:isAssociated:): added a
|
|
retain count handling.
|
|
(-releaseRecordWithFMID:ofTableType:): same as above.
|
|
(-_saveOrSubmitChangesInMessageWithMID:andFlags:save:): cleanup
|
|
table caches even for modifications.
|
|
|
|
* OpenChange/MAPIStoreMessageTable.m
|
|
(-getChildProperty:forKey:withTag:): fixed PR_ACCESS and
|
|
PR_ACCESS_LEVEL to avoid displaying the "read-only" status.
|
|
|
|
* OpenChange/MAPIStoreTable.m (-cleanupCaches): remove lastChild
|
|
from cache too.
|
|
|
|
* OpenChange/MAPIStoreTasksMessageTable.m
|
|
(-getChildProperty:forKey:withTag:): fixed typo affecting
|
|
PidLidTaskStatus.
|
|
|
|
* OpenChange/MAPIStoreContext.m (-openMessage:withMID:inFID:):
|
|
create a message dictionary in the message cache in order to
|
|
enable modifications.
|
|
|
|
* OpenChange/MAPIStoreContactsMessageTable.m
|
|
(-_element:ofType:excluding:inCard:): new version of the previous
|
|
-_phoneOfType:excluding:inCard: method, which now returns the
|
|
requested element rather than it's first value and which enables
|
|
the specification of the tag.
|
|
(-getChildProperty:forKey:withTag:): added support for
|
|
PidLidPostalAddressId, PR_POSTAL_ADDRESS_UNICODE,
|
|
PR_POST_OFFICE_BOX_UNICODE, PR_STREET_ADDRESS_UNICODE,
|
|
PR_LOCALITY_UNICODE, PR_STATE_OR_PROVINCE_UNICODE,
|
|
PR_POSTAL_CODE_UNICODE, PR_COUNTRY_UNICODE, PidLidWorkAddress,
|
|
PidLidWorkAddressPostOfficeBox, PidLidWorkAddressStreet,
|
|
PidLidWorkAddressCity, PidLidWorkAddressState,
|
|
PidLidWorkAddressPostalCode and PidLidWorkAddressCountry.
|
|
|
|
* OpenChange/MAPIStoreContext.m (-openMessage:forKey:inTable:):
|
|
avoid taking NULL values into account when returning the basic
|
|
properties.
|
|
|
|
* OpenChange/SOGoContactGCSEntry+MAPIStore.m
|
|
(-setMAPIProperties:): added support for work address and its
|
|
corresponding addresse label. Preliminary support for
|
|
"PidLidPostalAddressId" which enables us to set a certain address
|
|
as preferred.
|
|
Carefully replace existing handled fields to avoid removing them
|
|
during modification.
|
|
|
|
2011-01-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContext.m (-typeLessTag:): removed method as
|
|
types are now determined from openchange core.
|
|
|
|
2011-01-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContext.m (_typeLessTag:): new method
|
|
designed to return a known value type for typeless tags that were
|
|
requested via getprops. This abstract the missing type from the
|
|
call to getChildProperty:...
|
|
|
|
* OpenChange/MAPIStoreMessageTable.m
|
|
(-getChildProperty:forKey:withTag:): added generic values for some
|
|
standard props.
|
|
|
|
* OpenChange/SOGoAppointmentObject+MAPIStore.m: same as below.
|
|
|
|
* OpenChange/SOGoTaskObject+MAPIStore.m (-setMAPIProperties:): set
|
|
a value for CREATED and DTSTAMP
|
|
|
|
2011-01-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreTasksMessageTable.m
|
|
(-getChildProperty:forKey:withTag:): silently returns
|
|
MAPI_E_NOT_FOUND when the completion date is not available. Added
|
|
stubs for PidLidTaskMode, PidLidTaskFRecurring,
|
|
PidLidTaskActualEffort and PidLidTaskEstimatedEffort.
|
|
|
|
* OpenChange/MAPIStoreFolderTable.m
|
|
(-backendIdentifierForProperty:): new overriden method to avoid an
|
|
exception under certain circumstances.
|
|
|
|
* OpenChange/SOGoMAPIFSMessage.m (-MAPISave): make use of
|
|
"ensureDirectory" on the container folder to avoid errors with
|
|
NSDictionary failing to save itself to the filesystem.
|
|
|
|
* OpenChange/SOGoMAPIFSFolder.m (-ensureDirectory): method made
|
|
public and which ensures that the directory pointed to by the
|
|
instances of this class does exist.
|
|
|
|
* OpenChange/SOGoContactGCSEntry+MAPIStore.m (-setMAPIProperties):
|
|
take "PidLidEmail1EmailAddress" id as key for the contact email
|
|
address.
|
|
|
|
2011-01-05 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SQLSource.m - we now honor the "mail" column
|
|
and we also support "MailFieldNames" in the SQL source - which
|
|
is essentially and array of column names holding additonnal email
|
|
addresses of users (beside the "mail" column). Also updated
|
|
the documentation to reflect this change.
|
|
|
|
2011-01-05 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SOGoAutoCompletion.js (onKeydown): added
|
|
support for the delete key (confirmed value was not reset and
|
|
therefore used as the field value when loosing focus).
|
|
|
|
* UI/WebServerResources/generic.js (showConfirmDialog): buttons
|
|
callbacks must be updated when retrieving dialog box from cache.
|
|
|
|
2011-01-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContactsMessageTable.m
|
|
(-getChildProperty:forKey:withTag:): result the same value for
|
|
"PR_SUBJECT" as for "PR_DISPLAY_NAME_UNICODE" instead of a stub
|
|
string.
|
|
|
|
2010-12-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailMessageTable.m
|
|
(-getChildProperty:forKey:withTag:): return "NO" for
|
|
PR_REPLY_REQUESTED and PR_RESPONSE_REQUESTED. Commented out
|
|
responses for "PidLidHeaderItem" and "PidLidRemoteTransferSize".
|
|
Return "PR_ORIGINAL_DISPLAY_TO/CC/BCC_UNICODE" based on their
|
|
non-"ORIGINAL" counterpart and return an empty string when
|
|
missing.
|
|
Modified the return code of "PR_RTF_COMPRESSED" to
|
|
"MAPI_E_NOT_FOUND".
|
|
|
|
* OpenChange/MAPIStoreTypes.m (NSObjectFromSPropValue)
|
|
(NSObjectFromMAPISPropValue): force booleans to be int to avoid
|
|
creating EOQualifier values where the strings "YES" or "NO" appear
|
|
as a result to "stringValue".
|
|
|
|
* OpenChange/SOGoTaskObject+MAPIStore.m
|
|
(-setMAPIProperties:): same as below.
|
|
|
|
* OpenChange/SOGoAppointmentObject+MAPIStore.m
|
|
(-setMAPIProperties:): make use of proper named properties macro
|
|
symbols rather than their values, now that they are handled better
|
|
in the openchange core.
|
|
|
|
* OpenChange/SOGoMAPIFSFolder.m (-initWithURL:andTableType:):
|
|
accepts a new "tableType" parameter to store messages in a
|
|
different place of the fs folder hierarchy.
|
|
|
|
* OpenChange/NSValue+MAPIStore.m (-asDoubleInMemCtx): really
|
|
returns a double rather than an uint64_t.
|
|
|
|
* OpenChange/MAPIStoreTypes.m (MAPIDoubleValue): new wrapper
|
|
methods for generating data of "double" type.
|
|
(NSObjectFromMAPISPropValue, NSObjectFromSPropValue): now handle
|
|
the PT_CLSID mapi type.
|
|
(
|
|
(MAPIStoreDumpMessageProperties): enhanced logging of property
|
|
keys.
|
|
|
|
* OpenChange/NSData+MAPIStore.m (+dataWithFlatUID)
|
|
(-asFlatUIDInMemCtx:, +dataWithGUID:, asGUIDInMemCtx:): new
|
|
methods for handling the two GUID mapistore types.
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(-createMessageOfClass:inFolderAtURL:): renamed from
|
|
"-createMessageInFolder:", taking an additional message class
|
|
parameter that enables the subclasses to accept or deny a message
|
|
creation.
|
|
|
|
* OpenChange/EOQualifier+MAPIFS.m (-evaluateMAPIFSMessage:): added
|
|
logging for easier debugging.
|
|
|
|
* OpenChange/MAPIStoreSentItemsContext.[hm]: class is now derived
|
|
from MAPIStoreMailContext and set up its module folder to the
|
|
user-configured sentFolder of his/her default account.
|
|
|
|
* OpenChange/MAPIStoreMailFolderTable.[hm]: new class module
|
|
subclassed from MAPIStoreFolderTable, that provides the interface
|
|
for folders in MAPIStoreMailContext.
|
|
|
|
* OpenChange/MAPIStoreMailContext.m: Old table methods (see
|
|
below) split into the new "MAPIStoreMailMessageTable" class.
|
|
(+registerFixedMappings:): changed handled uri to
|
|
@"sogo://openchange:openchange@inbox/".
|
|
|
|
* OpenChange/MAPIStoreGCSBaseContext.m: Old table methods (see
|
|
below) split into the new "MAPIStoreGCSMessageTable" class.
|
|
|
|
* OpenChange/MAPIStoreContactsContext.m: Old table methods (see
|
|
below) split into the new "MAPIStoreContactsMessageTable" class.
|
|
(+registerFixedMappings:): changed handled uri to
|
|
@"sogo://openchange:openchange@contacts/".
|
|
|
|
* OpenChange/MAPIStoreTasksContext.m: Old table methods (see
|
|
below) split into the new "MAPIStoreTasksMessageTable" class.
|
|
(+registerFixedMappings:): changed handled uri to
|
|
@"sogo://openchange:openchange@tasks/".
|
|
|
|
* OpenChange/MAPIStoreCalendarContext.m: Old table methods (see
|
|
below) split into the new "MAPIStoreCalendarMessageTable" class.
|
|
(+registerFixedMappings:): changed handled uri to
|
|
@"sogo://openchange:openchange@calendar/" as we now consider that
|
|
the "host" part of the uri names the context that handles it.
|
|
|
|
* OpenChange/MAPIStoreFAIMessageTable.[hm]: new class module,
|
|
subclassed from MAPIStoreFSMessageTable, that provides the
|
|
interface for FAI messages in MAPIStoreContext.
|
|
|
|
* OpenChange/MAPIStoreFSBaseContext.[hm]: renamed from
|
|
MAPIStoreFileSystemBaseContext. Old table methods (see below)
|
|
split into the new "MAPIStoreFSMessageTable" class.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_op_openmessage): added some
|
|
debugging.
|
|
(sogo_op_createmessage): takes a new "associated" flag parameter.
|
|
|
|
* OpenChange/MAPIStoreContext.m: refactored to extract the table
|
|
handling code into a separate class. This enables the introduction
|
|
of real classes for contents tables, folder tables and FAI tables,
|
|
as well as any other type that could be handled later. Changes:
|
|
- new messageTableClass and folderTableClass methods for
|
|
determining the class that is appropriate to the current datatype.
|
|
- new messageTable, folderTable ivars.
|
|
- new faiTable ivar, always an instance of
|
|
MAPIStoreFAIMessageTable.
|
|
- created MAPIStoreTable, subclassed into MAPIStoreMessageTable
|
|
and MAPIStoreFolderTable from which appropriate subclasses are
|
|
derived for handling mails, tasks or calendar items.
|
|
- renamed
|
|
"getMessageTableChildproperty:atURL:withTag:inFolder:withFID:" and
|
|
"getFolderTableChildproperty:atURL:withTag:inFolder:withFID:" to
|
|
the simpler "getChildProperty:forKey:withTag:" form and moved them
|
|
to the MAPIStoreTable class.
|
|
- moved "-setRestrictions:" to MAPIStoreTable.
|
|
- renamed "getFolderMessageKeys:matchingQualifier:" to
|
|
"cachedChildKeys" and "cachedRestrictedChildKeys" and moved them
|
|
to MAPIStoreTable.
|
|
- moved all the "evaluateRestriction:intoQualifier:" methods to
|
|
MAPIStoreTable.
|
|
(-createMessagePropertiesWithMID:inFID:isAssociated:): now takes a
|
|
"isAssociated" parameter to determine whether the message is part
|
|
of the contents table or the fai table.
|
|
|
|
* OpenChange/EOBitmaskQualifier.m (-description): new method.
|
|
|
|
2010-12-29 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Moved the string encryption code from SoObjects/SOGo/SQLSource.m
|
|
to SoObjects/SOGo/NSString+Utilites.m
|
|
* SoObjects/SOGo/SOGoUserManager.m: We now store the passwords
|
|
in memcached as a SHA1 encrypted string.
|
|
|
|
2010-12-28 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Implemented secured sessions. We no longer store in the
|
|
browser's cookie the base64 encoded version of username:password
|
|
You MUST now set OCSSessionsFolderURL to a value like:
|
|
postgresql://sogo:sogo@127.0.0.1:5432/sogo/sogo_sessions_folder
|
|
and the database table will be created automatically upon
|
|
next SOGo's startup.
|
|
|
|
2010-12-23 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added the /SOGo/so/<user>/Calendar/reloadWebCalendarsAndRedirect
|
|
action which is particularly useful for WebAuth users
|
|
|
|
2010-12-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStore*Context.m: added handling of a few more
|
|
filters and a few more properties, in particular "named
|
|
properties".
|
|
|
|
2010-12-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(-evaluateBitmaskRestriction:intoQualifier:): implemented method.
|
|
(-releaseRecordWithFMID:ofTableType:): return MAPI_E_SUCCESS even
|
|
when the message passed as parameter was not found.
|
|
|
|
* OpenChange/MAPIStoreMailContext.m
|
|
(-evaluateContentRestriction:intoQualifier:): new overriden method
|
|
handling tests on the PR_MESSAGE_CLASS_UNICODE property.
|
|
|
|
* OpenChange/EOQualifier+MAPIFS.m (-[EOBitmaskQualifier
|
|
_evaluateMAPIFSMessageProperties:]): new method adapted to the new
|
|
class below.
|
|
|
|
* OpenChange/EOBitmaskQualifier.[hm]: new class module
|
|
implementing a new EOQualifier subclass that's adapted to the MAPI
|
|
bitmask restrictions.
|
|
|
|
2010-12-14 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Implemented the "bindAsCurrentUser" feature (when
|
|
set to the LDAP SOGoUserSources, to YES) which forces
|
|
SOGo to use the DN of the currently "requesting" user
|
|
to perform all LDAP-related operations
|
|
|
|
2010-12-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/EOQualifier+MAPIFS.[hm]: new category module for
|
|
evaluating qualifiers with regards to SOGoMAPIFSMessage objects.
|
|
|
|
* OpenChange/MAPIStoreGCSBaseContext.[hm]: new class module
|
|
containing all the code common to SOGoGCSFolder-based context
|
|
classes, in particular with regards to restriction handling.
|
|
|
|
* OpenChange/MAPIStoreContext.m (-init): added new
|
|
"restrictedMessageCache" dictionary to retain the ids matching the
|
|
active restriction filter and "parentFoldersBag" array to retain
|
|
folder objects that are parents of the module folder.
|
|
|
|
(-getCommonTableChildproperty:atURL:withTag:inFolder:withFID:):
|
|
added handling for PR_SEARCH_KEY.
|
|
(-evaluateContentRestriction:intoQualifier:)
|
|
(-evaluateExistRestriction:intoQualifier:) implemented fallback
|
|
code.
|
|
(-getTableProperty:withTag:atPosition:withTableType:andQueryType:inFID:):
|
|
added the new 'query_type' parameter, as required by the upstream
|
|
changes. Adapted the code to check if the active row matches the
|
|
filter (live filtering) or to return a pre-filtered set of rows
|
|
altogether.
|
|
(-releaseRecordWithFMID:ofTableType:) implementation of
|
|
op_release_record.
|
|
|
|
* OpenChange/MAPIStoreMapping.m (MAPIStoreMappingInitDictionary):
|
|
new function used during the instance initialization to fetch
|
|
pre-existing ids from tdb index.
|
|
|
|
* OpenChange/MAPIStoreTypes.h (MAPIPropertyKey): renamed from
|
|
MAPIPropertyNumber, changed behaviour to only take the 2 msb into
|
|
account to generate a value key.
|
|
|
|
* OpenChange/NSData+MAPIStore.m (-asShortBinaryInMemCtx:): new
|
|
corrolary method to +dataWithShortBinary:.
|
|
|
|
* OpenChange/MAPIStoreFileSystemBaseContext.[hm]: new base
|
|
MAPIStoreContext class that handles requests for objects based on
|
|
the SOGoMAPIFSFolder and SOGoMAPIFSMessage classes.
|
|
|
|
* MAPIStoreCommonViewsContext.[hm],
|
|
MAPIStoreDeferredActionsContext.[hm],
|
|
MAPIStoreDeletedItemsContext.[hm], MAPIStoreDraftsContext.[hm],
|
|
MAPIStoreFreebusyContext.[hm], MAPIStoreJournalContext.[hm],
|
|
MAPIStoreNotesContext.[hm], MAPIStoreRemindersContext.[hm],
|
|
MAPIStoreScheduleContext.[hm], MAPIStoreSearchContext.[hm],
|
|
MAPIStoreSentItemsContext.[hm], MAPIStoreShortcutsContext.[hm],
|
|
MAPIStoreViewsContext.[hm]:
|
|
new subclasses of MAPIStoreFileSystemBaseContext.
|
|
|
|
* OpenChange/NSValue+MAPIStore.[hm]: new category module for
|
|
returning native MAPI types.
|
|
|
|
* OpenChange/SOGoMAPIFSFolder.[hm]: new class module that
|
|
implements a SOGoFolder subclass that stores and retrives data
|
|
to/and from the file system in the form of a plist.
|
|
|
|
* OpenChange/SOGoMAPIFSMessage.[hm]: new class module that
|
|
implements a SOGoObject subclass that stores and retrives data
|
|
to/and from the file system in the form of a plist.
|
|
|
|
2010-12-09 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObject/SOGo/SQLSource.m - added SHA password
|
|
hash support for SQL authentication sources.
|
|
* Added patch from bug #1048
|
|
* SoObjects/Mailer/SOGoDraftObject.m:
|
|
-mimeHeaderMapWithHeaders:excluding: axed the "replyTo"
|
|
code as it was always 'empty', leading to Reply-To being
|
|
always set to the From: address, which is rather stupid.
|
|
|
|
2010-12-08 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (onMenuEmptyTrashCallback):
|
|
refresh the folders tree if there're folders in the trash.
|
|
|
|
2010-12-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(-setRestrictions:withFMID:andTableType:getTableStatus:): new
|
|
backend method that accepts a struct mapi_SRestriction * in order
|
|
to filter the table rows.
|
|
(-evaluateRestriction:intoQualifier:)
|
|
(-evaluateNotRestriction:intoQualifier:)
|
|
(-evaluateAndRestriction:intoQualifier:)
|
|
(-evaluateOrRestriction:intoQualifier:): new low-level restriction
|
|
handlers for converting MAPI restrictions into EOQualifier
|
|
equivalents.
|
|
(-evaluateContentRestriction:intoQualifier:)
|
|
(-evaluatePropertyRestriction:intoQualifier:)
|
|
(-evaluateBitmaskRestriction:intoQualifier:)
|
|
(-evaluateExistRestriction:intoQualifier:) new overridable
|
|
restriction handlers.
|
|
(-backendIdentifierForProperty:): new overridable restriction
|
|
helper for converting restriction attributes into database or IMAP
|
|
fields, depending on the module in use. Used by the topmost
|
|
version of -evaluatePropertyRestriction:intoQualifier: for
|
|
handling "needs eval" restriction types.
|
|
(-saveOrSubmitChangesInMessageWithMID:andFlags:save:) prevent any
|
|
creation or modification of messages with a type attribute of
|
|
"IPM.Microsoft.FolderDesign.NamedView", at least for now, because
|
|
no module is able to handle those view-related messages.
|
|
|
|
* OpenChange/MAPIStoreSpoolerContext.m: new experimental subclass
|
|
of MAPIStoreOutboxContext.
|
|
|
|
* OpenChange/MAPIStoreTypes.m (NSObjectFromMAPISPropValue): new
|
|
helper function, similar in semantics to NSObjectFromSPropValue
|
|
but taking a struct mapi_SPropValue * as parameter.
|
|
|
|
* OpenChange/NSData+MAPIStore.m: (+dataWithShortBinary:): new
|
|
constructor for returning an NSData instance from a struct
|
|
SBinary_short.
|
|
|
|
2010-12-03 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js
|
|
(deleteSelectedMessagesCallback): must set the value of
|
|
lastClickedRow and lastClickedRowId when selecting the next row.
|
|
|
|
* UI/WebServerResources/HTMLElement.js (refreshSelectionByIds):
|
|
log invalid references to element IDs.
|
|
|
|
2010-12-02 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Main/SOGo+DAV.m - we avoid assuming a range is found
|
|
and check for it, returning no location if necessary
|
|
|
|
2010-12-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContext.m: prevent leaks by adding an
|
|
additional mutable array that retains the required parent folders
|
|
until deallocation of the context.
|
|
(-getCommonTableChildproperty:atURL:withTag:inFolder:withFID:):
|
|
log the name of the missing properties for easier diagnostics.
|
|
|
|
2010-11-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMailContext.m
|
|
(-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:):
|
|
when the property is larger than 4000 bytes, register it in a
|
|
"message" dictionary and return MAPI_E_NOT_ENOUGH_MEMORY so that
|
|
it can be fetched later via the streaming mechanism.
|
|
|
|
* OpenChange/MAPIStoreTypes.h (MAPIPropertyNumber): changed the
|
|
prototype to use an enum MAPITAGS instead of an int32_t.
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(-getFolderTableChildproperty:atURL:withTag:inFolder:withFID:)
|
|
(-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:)
|
|
(-getCommonTableChildproperty:atURL:withTag:inFolder:withFID:):
|
|
now return an "enum MAPISTATUS" for making debugging easier.
|
|
(_createMessageWithMID:inFID:): display an error when the returned
|
|
message is nil.
|
|
(-getMessageProperties:inRow:atURL:): when an error code is
|
|
returned from the getXXXChildProperty.. methods, the tag is set to
|
|
its corresponding error tag and the error code is returned as a
|
|
long value.
|
|
(-getProperty:withFMID:ofTableType:intoFile:): implemented
|
|
"op_get_property_into_fd" backend method.
|
|
|
|
2010-11-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreTypes.m (NSObjectFromStreamData): new
|
|
function for returning an NSObject from a property tag and a data
|
|
pointer.
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(-setProperty:withFMID:ofTableType:fromFile:): new method
|
|
implementing the "set_property_from_fd" backend operation.
|
|
|
|
2010-11-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/SOGoDraftObject+MAPIStore.m: new category module.
|
|
(-setMAPIProperties,-MAPISubmit,-MAPISave): implemented the MAPI
|
|
methods for sending messages.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m: (sogo_op_modifyrecipients): new
|
|
backend operation.
|
|
|
|
* OpenChange/MAPIStoreContext.m:
|
|
(-modifyRecipientsWithMID:inRows:withCount:): new method
|
|
implementing the new "modifyrecipients" operation.
|
|
|
|
* OpenChange/MAPIStoreOutboxContext.m: new class module
|
|
implementing the "outbox" folder type, as a subclass of
|
|
MAPIStoreMailContext.
|
|
(-createMessageInFolder:): new method that returns an instance of
|
|
SOGoDraftObject.
|
|
|
|
2010-11-23 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (deletePersonalCalendar):
|
|
argument is now the list node instead of simply the node id. The
|
|
confirmation callback (deletePersonalCalendarConfirm) is binded to
|
|
this object.
|
|
(deletePersonalCalendarConfirm): unselect and hide the calendar
|
|
node in the list until the Ajax call returns.
|
|
(deletePersonalCalendarCallback): remove the hidden calendar node
|
|
on success and show it when the Ajax call failed.
|
|
(drawNowLine): fixed the selection of the target cells.
|
|
|
|
2010-11-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreTypes.m (NSObjectFromSPropValue): added
|
|
support for "PT_BINARY".
|
|
|
|
* OpenChange/NSData+MAPIStore.m (+dataWithBinary:): new
|
|
constructor for generating an NSData instance from a struct
|
|
Binary_r *.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m (-setIsHTML, -isHTML): new
|
|
accessors, which enables the setting of html mode from the caller
|
|
rather than from the user defaults.
|
|
(-mimeMessageForContentWithHeaderMap:, -bodyPartForText): make use
|
|
of "isHTML".
|
|
|
|
* UI/MailerUI/UIxMailEditor.m (-setIsHTML, -isHTML): new
|
|
accessors. The former sets the "isHTML" ivar based on a previous
|
|
request on the latter, which actually returns the value stored in
|
|
the user defaults. This enables the user to change composition
|
|
type while editing a message without altering the proper logic
|
|
underneat.
|
|
(-_saveFormInfo): forward the value of "isHTML" to the co.
|
|
|
|
2010-11-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(_prepareContextClass): new static function for clearing up
|
|
+contextFromURI:inMemCtx:.
|
|
(+registerFixedMappings:): new subclassable method.
|
|
(_prepareContextClass): the static mappings are now initialized
|
|
from the context class themselves, via the use of an unique
|
|
invocation of +registerFixedMappings: when the class is
|
|
instantiated first.
|
|
(+MAPIModuleName): new method that returns the corresponding
|
|
module name for parsing or constructing MAPI urls.
|
|
(+initialize): wander the list of subclasses and construct a
|
|
static dictionary with the help of the new method above for
|
|
further user from +contextFromURI:inMemCtx:. This replaces the
|
|
static code therein with a more dynamic approach.
|
|
(-submitMessageWithMID:andFlags:): implemented method via a
|
|
private method derived from
|
|
-saveChangesInMessageWithMID:andFlags:, invoking -MAPISubmit on
|
|
the resulting object.
|
|
(-saveChangesInMessageWithMID:andFlags:) make use of the same
|
|
private method as above, invoking -MAPISave on the resulting
|
|
object.
|
|
|
|
* OpenChange/SOGoTaskObject+MAPIStore.m (-setMAPIProperties:): the
|
|
start date must be taken from the 0x811e0040 property rather than
|
|
"PR_START_DATE" (contrary to the event properties), we now handle
|
|
the due date (0x811f0040) as well as the task "body", set as
|
|
comment.
|
|
|
|
2010-11-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreTasksContext.m (-createMessageInFolder:):
|
|
implemented method.
|
|
|
|
* OpenChange/SOGoTaskObject+MAPIStore.[hm]: new category
|
|
module.
|
|
(setMAPIProperties:): partially implemented, in order to be able
|
|
to create basic tasks.
|
|
|
|
* OpenChange/MAPIStoreFreebusyContext.[hm]: new class module for
|
|
the "SCHEDULE+ FREE BUSY" public folder (0x70001).
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(-setPropertiesWithFMID:type:inRow:): renamed to
|
|
-setPropertiesWithFMID:ofTableType:inRow:.
|
|
(-getProperties:inRow:withMID:type:): renamed to
|
|
-getProperties:ofTableType:inRow:withMID:.
|
|
|
|
* OpenChange/MAPIStoreContactsContext.m (-createMessageInFolder:):
|
|
mark new entry as new.
|
|
|
|
* OpenChange/MAPIStoreCalendarContext.m (-createMessageInFolder:):
|
|
implemented method.
|
|
|
|
* OpenChange/SOGoAppointmentObject+MAPIStore.[hm]: new category
|
|
module for SOGoAppointmentObject.
|
|
(setMAPIProperties:): partially implemented, in order to be able
|
|
to create basic events.
|
|
|
|
* OpenChange/MAPIStoreTypes.m: new helper module designed to
|
|
handle type conversion between MAPI types and NS types.
|
|
|
|
* OpenChange/NSDate+MAPIStore: renamed back to
|
|
NSCalendarDate+MAPIStore.
|
|
|
|
2010-11-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContactsContext.m (-createMessageInFolder:):
|
|
implemented method and returns an instance of SOGoContactGCSEntry.
|
|
|
|
* OpenChange/SOGoContactGCSEntry+MAPIStore.m: new category module.
|
|
(setMAPIProperties:) new method that resets the properties on the
|
|
current object and update the corresponding record in the database.
|
|
|
|
* OpenChange/MAPIStoreContext.m
|
|
(-setPropertiesOfMessage:fromRow:): check the size of the integers
|
|
on the build platform to invoke the right constructor of NSNumber.
|
|
(-saveChangesInMessageWithMID:andFlags:): implemented method by
|
|
looking up the requested object and creating one via "[self
|
|
createMessageInFolder:]" if not exist. Afterwards, the MAPI props
|
|
previously passed via setProperties.... are commited into the
|
|
created/updated SOGo object.
|
|
|
|
* OpenChange/MAPIStoreMailContext.m
|
|
(-getMessageProperties:inRow:atURL:): moved method into
|
|
MAPIStoreContext.m since it's generic enough to apply to all the
|
|
stores.
|
|
|
|
* OpenChange/MAPIStoreSOGo.m (sogo_create_context): we now make
|
|
sure that the MAPIStoreContext class has been loaded. Otherwise we
|
|
return MAPISTORE_ERROR.
|
|
|
|
* OpenChange/MAPIApplication.m (-init): most of the setup code has
|
|
been moved into MAPIStoreSOGo.m.
|
|
|
|
* OpenChange/GNUmakefile: the MAPIStoreSOGo library is now just a
|
|
wrapper that loads the new "SOGoBackend" bundle from
|
|
SoProductRegistry.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m (-outlookMessageClass):
|
|
removed useless method.
|
|
|
|
2010-11-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/Integration/test-davacl.py (DAVPublicAccessTest.setUp):
|
|
renamed "init" method to "setUp" to force reinitialization of the
|
|
client objects before each test.
|
|
|
|
2010-11-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js: (onCASRecoverIFrameLoaded):
|
|
the ajax recovery request is now performed from a timeout attached
|
|
to the window, to make sure it does not reference the iframe
|
|
itself. The iframe is removed from a similar timeout, to avoid
|
|
reference errors and a continuous spinning wheel after a recovery
|
|
request.
|
|
|
|
2010-11-15 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (refreshMailbox): now calls
|
|
refreshUnseenCounts so the unseen count is updated when the user
|
|
clicks on the "Get Mail" button.
|
|
|
|
2010-11-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m (-saveAction): check the
|
|
equality of componentCalendar and previousCalendar by comparing
|
|
their ocsPath, since the objects themselves might be different
|
|
instances when the current user has logged in with a different
|
|
identifier than his/her uid.
|
|
|
|
2010-11-12 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (messageFlagCallback): now
|
|
remove the message headers from the cache.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
|
(-folderPropertyValueInCategory:forUser:): new method that allows
|
|
to specify the user from which to fetch the settings.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-includeInFreeBusy): the verification is now performed on the
|
|
calendar owner's settings instead of the activer user's settings.
|
|
|
|
2010-11-11 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (deleteSelectedMessages):
|
|
don't try to delete message(s) when the selected mailbox is not a
|
|
folder.
|
|
(deleteSelectedMessagesCallback): when automatically selecting the
|
|
next message after deletion, invalidate this message header if it
|
|
was unread.
|
|
(refreshCurrentFolder): don't refresh the selected mailbox if it's
|
|
not a folder.
|
|
|
|
* UI/WebServerResources/SOGoDataTable.js (_emptyTable): now removes
|
|
references to previously selected rows.
|
|
|
|
2010-11-10 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailEditor.m (-sendAction): the error message (if
|
|
any) is now translated in the HTTP response.
|
|
|
|
* SoObjects/SOGo/SOGoMailer.m
|
|
(:_smtpSendData:toRecipients:sender:): added exception handling
|
|
when the smtp server is not accessible.
|
|
|
|
* UI/WebServerResources/MailerUI.js (openMailbox): improved
|
|
behavior when reloading the mailbox.
|
|
(onMenuEmptyTrashCallback): new callback exclusive to the "empty
|
|
trash" menu option; it deletes the cached data source and refresh
|
|
the current folder instead of jumping to the inbox.
|
|
|
|
2010-11-08 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SOPE/GDLContentStore/GCSAlarmsFolder.m
|
|
We now check for non-nil values before calling
|
|
-timeInterval...
|
|
* SoObjects/Mailer/SOGoMailAccount.m
|
|
We try to fallback to the imap server prior falling
|
|
back to localhost
|
|
|
|
2010-11-08 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SOGoDragHandles.js (adjust): for vertical
|
|
drag handles, prioritize the top limit rather than the bottom one.
|
|
|
|
* UI/WebServerResources/UIxContactEditor.js (onComboButtonClick):
|
|
return false so the form is not submitted when the button is clicked.
|
|
|
|
* UI/WebServerResources/ContactsUI.js
|
|
(onCategoriesMenuPrepareVisibility): don't verify the selection if
|
|
the list doesn't exist (happens in the contact editor).
|
|
|
|
2010-11-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreSOGo.m: added debugging witnesses call to
|
|
each method.
|
|
|
|
* OpenChange/MAPIStoreContext.m: added a private category to NSObject.
|
|
(+[NSObject objectFromSPropValue:]) new generic constructor for
|
|
converting mapi types to NS* types.
|
|
(-init): added a new "messages" NSMutableDictionary ivar for
|
|
storing messages in constructions.
|
|
(-createMessageWithMID:inFID:): implemented method by registering
|
|
a new message object in "messages".
|
|
(-setPropertiesWithFMID:type:inRow:): implemented the message part
|
|
of the method by resolving the message passed as parameter and
|
|
passing it to the new setPropertiesOfMessage:fromRow: method.
|
|
(-setPropertiesOfMessage:fromRow:): new method that wanders in the
|
|
property array of the aRow parameter, converts each member via
|
|
+[NSObject objectFromSPropValue:] and stores the result in the
|
|
message passed as parameter.
|
|
|
|
* OpenChange/NSDate+MAPIStore.[hm]: this module now implements a
|
|
category for NSDate rather than NSCalendarDate.
|
|
(+dateFromFileTime): new method that returns an NSDate from a
|
|
struct FILETIME
|
|
|
|
* SoObjects/Appointments/SOGoAptMailReceipt.m (-getSubject)
|
|
(-getBody): invoked setupValues if values is nil to ensure that
|
|
the timezone has been set properly.
|
|
|
|
2010-11-05 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailListActions.m (-getSortedUIDsAction): now
|
|
accepts the form parameter "no_headers" so only the UIDs are
|
|
returned, without the prefetched headers.
|
|
|
|
* UI/WebServerResources/SOGoMailDataSource.js (init): made the
|
|
headers argument optional.
|
|
(_loadCallback): handled the case when the server doesn't send the
|
|
prefetched headers.
|
|
|
|
* UI/WebServerResources/SOGoDataTable.js (_refresh): new method to
|
|
force the refresh of the data table with the data of the data source.
|
|
(remove): don't update the internal variables (index and count) if
|
|
the UID was not found in the data source.
|
|
|
|
* UI/WebServerResources/MailerUI.js (openMailbox): when reloading
|
|
a mailbox, only fetch the messages UIDs (without the headers).
|
|
(loadMessageCallback): only reload the headers if the seen state
|
|
has changed.
|
|
|
|
2010-11-04 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
SoObjects/SOGo/SOGoMailer.m
|
|
We stop when we see an invalid recipient and we inform the
|
|
client back with what are the invalid recipients
|
|
|
|
2010-11-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tools/SOGoSockDOperation.m (_getFolderWithId:forUser:): invoke
|
|
-[SOGoParentFolder lookupPersonalFolder:ignoringRights:] directly,
|
|
in order to avoid a useless permission check.
|
|
|
|
2010-11-03 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SOGoDataTable.js (remove): we must
|
|
decrement the value of renderedIndex when the row removed is
|
|
before the first rendered row. We also call deselect in order to
|
|
update the internal array of selected rows IDs.
|
|
(refresh): new method to force the recomputation of the top and
|
|
bottom padding rows of the table.
|
|
|
|
2010-11-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/Integration/teststrings.sh: new utility script to test the
|
|
parsability of the localization strings file.
|
|
|
|
* UI/WebServerResources/generic.js: (onCASRecoverIFrameLoaded):
|
|
go back to the user's page instead of the logoff page.
|
|
|
|
2010-11-02 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Implemented http://sogo.nu/bugs/view.php?id=821
|
|
|
|
2010-11-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSDictionary+BSJSONAdditions.[hm]:
|
|
SoObjects/SOGo/NSScanner+BSJSONAdditions.[hm]: removed classes,
|
|
obsoleted by the use of the SBJson library.
|
|
|
|
2010-11-01 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (mailListToggleMessagesRead):
|
|
we now accepts an element as argument to directly set a message as
|
|
read or unread. Also fix the bug of marking multiple messages.
|
|
(mailListToggleMessagesFlagged): idem.
|
|
(messageListCallback): no more observers are registered on the
|
|
rows and cells. All events are delegated to the table.
|
|
(onMessageSelectionChange): implemented event delegation on the
|
|
table.
|
|
(configureMessageListEvents): idem.
|
|
|
|
* UI/WebServerResources/generic.js (onRowClick): we now accepts an
|
|
element as argument, bypassing the event's target element and the
|
|
event listener.
|
|
|
|
* UI/MailerUI/UIxMailListActions.m (-messageSubject): we now
|
|
escape HTML tags in the returned string.
|
|
|
|
2010-11-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAptMailUpdate.m (-setupValues): avoid
|
|
setting values that are already set in SOGoAptMailNotification.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailDeletion.m (-getBody): added
|
|
the same details as for the meeting invitations.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailNotification.m (-setupValues):
|
|
merged setup code from SOGoAptMailInvitation.m.
|
|
|
|
* UI/WebServerResources/ContactsUI.js: (resetCategoriesMenu)
|
|
(onCategoriesMenuPrepareVisibility, onCategoriesMenuItemClick)
|
|
(setCategoryOnNode, unsetCategoryOnNode): new methods designed to
|
|
handle the handling of categories directly from the contacts list.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m (+initialize): we now
|
|
return the "c_categories" field too.
|
|
|
|
* UI/Contacts/UIxContactActions.m: new class module implementing
|
|
actions on contacts.
|
|
(-setCategoryAction, -unsetCategoryAction): new actions.
|
|
|
|
* UI/WebServerResources/generic.js (triggerAjaxRequest): invoke
|
|
the request callback only when set on the http object.
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m (-_createIMAP4Connection):
|
|
we need to initialize newConnection to nil when the return
|
|
password is nil.
|
|
|
|
2010-10-28 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m
|
|
(-mimeHeaderMapWithHeaders:excluding:): added the X-Forward header
|
|
with the user's IP address, if available and not equal to 'localhost'.
|
|
|
|
2010-10-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
(-_migrateWebCalendarsSettings): fixed a bug where the active
|
|
user's login name would be used as comparison prefix, leading to a
|
|
corrupted and very long calendar key. Added code to migrate those
|
|
previously corrupted keys to their proper form.
|
|
|
|
2010-10-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactView.m (-categories): new accessor for
|
|
displaying card categories.
|
|
|
|
* UI/WebServerResources/UIxContactEditor.js: (onComboButtonClick):
|
|
take the container's scrollTop into account when displaying the
|
|
combobox menu.
|
|
|
|
2010-10-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactSourceFolder.m
|
|
(-lookupContactsWithFilter:onCriteria:sortBy:ordering:): added the
|
|
handling of the new "criteria" parameter, returning an empty set
|
|
if no known one has been passed.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m
|
|
(-lookupContactsWithFilter:onCriteria:sortBy:ordering:): added the
|
|
handling of the new "criteria" parameter, returning an empty set
|
|
if no known one has been passed.
|
|
|
|
* OGoContentStore/OCSContactFieldExtractor.m
|
|
(-extractQuickFieldsFromVCard:): we now extract the list of
|
|
categories from the vcard.
|
|
|
|
* UI/WebServerResources/UIxPreferences.js: added code to handle
|
|
the new "Contacts Options" tab, in particular the contacts
|
|
categories.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-languageCategories): renamed
|
|
to "_languageCalendarCategories" as it is a private method. The
|
|
dictionary key has also been renamed to
|
|
"calendar_category_labels" since we now handle contact categories
|
|
too.
|
|
(-calendarCategoriesValue, -setCalendarCategoriesValue:): renamed
|
|
from "categories" method.
|
|
(-contactsCategoryList, -contactsCategoriesValue)
|
|
(-setContactsCategoriesValue:): new methods for handling contacts
|
|
categories in the preferences. Transfers are in JSON.
|
|
|
|
* UI/WebServerResources/UIxContactEditor.js: (saveCategories)
|
|
(appendCategoryInput, onComboButtonClick, onCategoryInputChange)
|
|
(onCategoryInputFocus, regenerateCategoriesMenu)
|
|
(onCategoryMenuEntryClick, onEmptyCategoryClick) new methods added
|
|
for handling the contact categories.
|
|
|
|
* UI/Contacts/UIxContactEditor.m (-dealloc): release
|
|
addressBookItem, item, componentAddressBook and contactCategories
|
|
ivars.
|
|
(-setContactCategories, -contactCategories): new accessors for
|
|
getting/setting the contact vcard categories. Transfers are made
|
|
in JSON.
|
|
(-contactCategoriesList): new accessor to return the list of
|
|
categories defined in the preferences, combined with the list of
|
|
those found int the contact.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m (-mergedArrayWithArray:): new
|
|
method that returns the contact of the current array merged with
|
|
a unique copy of the objects of the array passed as parameter.
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m (-{set}ContactsCategories):
|
|
renamed version of the "contactCategories" accessors.
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m (-objectFromJSONString): new
|
|
method replacing the one below in a more generic way. I.e. the
|
|
method will accept any JSON object as input and not only
|
|
dictionaries.
|
|
|
|
* SoObjects/SOGo/NSDictionary+BSJSONAdditions.m
|
|
(+dictionaryWithJSONString:): removed method, replaced with
|
|
the more generic -[NSString objectFromJSONString] in
|
|
NSString+Utilities.
|
|
|
|
2010-10-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m (-setContactCategories)
|
|
(-contactCategories): new accessors for the
|
|
"SOGoContactCategories" user default. Accept/return an array of
|
|
strings.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m
|
|
(-setDavContactCategories, -davContactCategories): new accessors
|
|
for the new
|
|
"{urn:ietf:params:xml:ns:inverse-dav}contact-categories" custom
|
|
property. Make use of the new methods above.
|
|
|
|
2010-10-25 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFolderActions.m (-importLdifData:): use
|
|
lowercase keys for the contact dictionary.
|
|
|
|
2010-10-21 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Changes required for http://sogo.nu/bugs/view.php?id=795
|
|
|
|
2010-10-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m (-davContentLength): fixed a
|
|
potential crash (see http://www.sogo.nu/bugs/view.php?id=915) by
|
|
evaluating the length differently.
|
|
|
|
2010-10-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m (_fixDates:): restored
|
|
deleted code, see explanation in the code.
|
|
|
|
2010-10-15 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m - remove the ACL cache
|
|
and moved it to SOGoCache with memcached support. Also
|
|
modified _setDisplayNameFromRow: to NOT use SOGoUser
|
|
instances and it is _very costly_ to do so.
|
|
* SoObjects/SOGo/SOGoCache.{h,m} - added support for
|
|
caching ACLs locally and in memcached
|
|
|
|
2010-10-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContext.m (-getPath:ofFMID:withTableType:):
|
|
returns a found path IIF the fmid matches the current context.
|
|
Print an error message when the cause of mismatch is the lack of
|
|
sync with the indexing file.
|
|
(-getFoldersList:withFMDI:): returns a list IIF the FMID matches
|
|
the current context.
|
|
|
|
* OpenChange/MAPIStoreMapping.m (+sharedMapping): singleton
|
|
constructor.
|
|
|
|
2010-10-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js: (triggerAjaxRequest): save the
|
|
content in the request object in the case a retry is needed.
|
|
(onCASRecoverIFrameLoaded): on the first retry, the content
|
|
parameter is passed back to "triggerAjaxRequest".
|
|
|
|
* OpenChange/MAPIStoreMailContext.m
|
|
(-getMessageProperties:inRow:atURL:): new method.
|
|
(-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:):
|
|
added responses for PR_BODY, PR_HTML and fake responses for
|
|
PR_RTF_COMPRESSED, PR_RTF_IN_SYNC.
|
|
|
|
* OpenChange/NSData+MAPIStore.m: new category module.
|
|
(-asBinaryInMemCtx:): new method returning a struct Binary_r.
|
|
|
|
* OpenChange/MAPIStoreMailContext.m (-openMessage:atURL:): basic
|
|
implementation returning the "to" recipients only and a few
|
|
unchecked tags.
|
|
|
|
* OpenChange/MAPIStoreContext.m (-openMessage:withMID:inFID:):
|
|
implemented method by resolving the url corresponding to the MID
|
|
and transferring the call to the new subclassable
|
|
"openMessage:atURL:" method.
|
|
(-openMessage:atURL:): new subclassable method.
|
|
(-createMessageWithMID:inFID:)
|
|
(-saveChangesInMessageWithMID:andFlags:):
|
|
(-submitMessageWithMID:andFlags:):
|
|
(-getProperties:inRow:withMID:type:):
|
|
(-getFID:byName:inParentFID:)
|
|
(-setPropertiesWithMID:type:inRow:)
|
|
(-deleteMessageWithMID:withFlags:): return MAPISTORE_ERROR for
|
|
those unimplemented methods.
|
|
(-getMessageProperties:inRow:atURL:): new subclassable method.
|
|
|
|
2010-10-14 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (updateUnseenCount): used the
|
|
method charAt to read a string character instead of accessing it
|
|
as an array (was not supported by IE).
|
|
(saveAs): fixed a selection bug where only the first message would
|
|
be saved.
|
|
|
|
* UI/WebServerResources/UIxAttendeesEditor.js
|
|
(performSearchCallback): improved autocompletion when changing
|
|
field before completion has returned.
|
|
|
|
* UI/WebServerResources/UIxMailToSelection.js (fancyAddRow): when
|
|
using IE, the input element is now removed and created when cloning
|
|
a row. Also convert the onFocus and onBlur attributes to
|
|
JavaScript calls.
|
|
|
|
2010-10-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreMapping.m (-registerURL:): commented method out.
|
|
(-_setupFixedMapping): new method that registers well-known ids
|
|
with well-known urls.
|
|
|
|
* OpenChange/MAPIStoreContext.m (+contextFromURI:): no longer
|
|
register the URI mapping since the basic ones are always
|
|
registered.
|
|
(-setURI:andMemCtx:): new method,
|
|
replacing setMemCtx, which also stores the context uri in the new
|
|
"uri" ivar.
|
|
(-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:)
|
|
added assertions for context id searches. Make the context id
|
|
search without the "sogo://" prefix.
|
|
Added missing "break" statement, leading PR_FID to get the value
|
|
of PR_MID.
|
|
(-parentFID): simply returns fid...
|
|
(-getPath:ofFMID:withTableType:): implemented.
|
|
(-getFoldersList:withFMID:): new temporary store method,
|
|
implemented.
|
|
|
|
* OpenChange/NSArray+MAPIStore.m: new category module.
|
|
(-asFoldersListInCtx:): new method returning a properly populated
|
|
"struct struct indexing_folders_list *" from an array of fids.
|
|
|
|
* SoObjects/Mailer/SOGoMailNamespace.m (-toOneRelationshipKeys):
|
|
removed method since it seems that certain servers allow messages
|
|
to be put in certain "namespace folders" (like Courier IMAP).
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m (-imap4Connection): split
|
|
initialization of the connection is the new
|
|
"_createIMAP4Connection" method, make use of the cache below.
|
|
|
|
* SoObjects/SOGo/SOGoCache.m (-registerIMAP4Connection:forKey:)
|
|
(-imap4ConnectionForKey:): new accessors that enabling the
|
|
per-request caching of IMAP4 connections, in a valid state or not.
|
|
|
|
2010-10-13 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m (_qualifierForUIDFilter:): removed
|
|
duplicated constraints in the filter when using bind fields.
|
|
|
|
* UI/WebServerResources/HTMLElement.js (deselectAll): fixed a bug
|
|
where the properties where not removed from the proper element
|
|
(table instead of the tbody).
|
|
|
|
* UI/Scheduler/NSArray+Scheduler.h: added index constants for
|
|
events fields.
|
|
(compareEventsCalendarNameAscending): new method to sort by
|
|
calendar name.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m: now uses the above
|
|
mentioned constants.
|
|
(+initialize): added calendar name to events fields.
|
|
(eventsListAction): added sort by calendar name.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (eventsListCallback): added
|
|
calendar name column.
|
|
(onCalendarSelectEvent): improved list selection.
|
|
|
|
2010-10-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreContext.m (-setMemCtx): argument is now of
|
|
type "struct mapistore_context *". The new ldbCtx ivar is
|
|
iinitialized from here.
|
|
(-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:):
|
|
added support for PR_MESSAGE_CODEPAGE, PR_MESSAGE_LOCALE_ID,
|
|
PR_MESSAGE_FLAGS, PR_MESSAGE_SIZE, PR_MSG_STATUS,
|
|
PR_SUBJECT_PREFIX_UNICODE, PR_IMPORTANCE, PR_PRIORITY,
|
|
PR_SENSITIVITY.
|
|
Add registration of unregistered MID to ldb.
|
|
(-getFolderTableChildproperty:atURL:withTag:inFolder:withFID:):
|
|
Add registration of unregistered FID to ldb.
|
|
|
|
* OpenChange/MAPIStoreCalendarContext.m: added support for case
|
|
PR_CREATION_TIME.
|
|
|
|
* Scripts/cas-proxy-validate.py: new script that resolve
|
|
reentrancy issues occurring when using SOGo in CAS mode, when SOGo
|
|
requests a PGT from the CAS server.
|
|
|
|
2010-10-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAttendeesEditor.js:
|
|
(performSearchCallback): same as below.
|
|
|
|
* UI/WebServerResources/SOGoAutoCompletion.js:
|
|
(SOGoAutoCompletionInterface.performSearchCallback): when the
|
|
match string is not found in "completeEmail" (due to a match with a
|
|
non-displayed attribute), don't put emphasize anything
|
|
graphically.
|
|
|
|
* UI/WebServerResources/ContactsUI.js:
|
|
(onToolbarWriteToSelectedContacts): display an error message when
|
|
no contact is selected rather than composing a new message. Fixed
|
|
the method to only have one return point.
|
|
|
|
* UI/WebServerResources/generic.js: (triggerAjaxRequest): added an
|
|
optional "attempt" argument that enables counting the number of
|
|
invocations for an ajax request.
|
|
(onCASRecoveryIFrameLoaded): don't repeat a failed request more
|
|
than once.
|
|
|
|
* UI/WebServerResources/HTMLElement.js:
|
|
(Element.getSelectedNodesId): if the element has not
|
|
"selectedIds", set "selArray" to an empty array before checking
|
|
the "selectedElements" attribute. This enables the caller to not
|
|
check for a "null" return value.
|
|
|
|
2010-10-08 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (showConfirmDialog)
|
|
(showPromptDialog): keys for cached dialogs are now build from a
|
|
combination of the dialog title and label to avoid collisions.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js
|
|
(deleteEventFromViewCancel): new function loaded if the user
|
|
cancel the deletion of an event. It clears the array of events to
|
|
delete.
|
|
(onCalendarSelectEvent): don't clear the selection if the
|
|
contextual menu is going to appear.
|
|
|
|
* UI/WebServerResources/ContactsUI.js (onDocumentKeydown):
|
|
improved character key identification to fix a bug with some
|
|
browsers.
|
|
|
|
* UI/WebServerResources/MailerUI.js (onDocumentKeydown): idem.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (onDocumentKeydown): idem.
|
|
|
|
2010-10-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalDateSelector.m (-viewTimeZone): restored
|
|
accessor, required for the proper display of the minimonth.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-removeFolderSettings:withReference:): new method which removes
|
|
the settings for keys "FreeBusyExclusions", "FolderColors",
|
|
"FolderShowAlarms", "FolderShowTasks", "InactiveFolders",
|
|
"FolderSyncTags" and "FolderSynchronize". Code taken from
|
|
-[SOGoGCSFolder subscribeUser:reallyDo:].
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
|
(-removeFolderSettings:withReference:): new overridable method
|
|
which enables the removal of user settings pertaining to a folder
|
|
and its type when deleting the folder or unsubscribing from it.
|
|
This implementation removes the folder reference from the
|
|
"FolderDisplayNames" key.
|
|
(-delete): make use of the new method above.
|
|
|
|
* UI/WebServerResources/ContactsUI.js: (setEventsOnAddressBook)
|
|
enable the "dblclick" event on non-owned addressbooks, except the
|
|
public ones (owned by "nobody")
|
|
(onAddressBookModify): enable the renaming of non-owned
|
|
addressbooks, except the public ones
|
|
|
|
2010-10-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-_appendSystemMailAccount): check
|
|
that -[url scheme] and -[url query] are not null before the
|
|
comparison, since nil == 0 == NSOrderedSame....
|
|
|
|
* OpenChange/MAPIStoreContext.m:
|
|
(-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:)
|
|
added response for PR_ROW_TYPE (always 1) and PR_DEPTH (always 0).
|
|
(MAPIBoolValue, MAPILongValue, MAPILongLongValue): new helpers for
|
|
talloc'd C values.
|
|
|
|
2010-10-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreTasksContext.m
|
|
(-getMessageTableChildproperty:atURL:withTag:inFolder:withFID:)
|
|
implemented the following properties: PR_SUBJECT_UNICODE,
|
|
PR_NORMALIZED_SUBJECT_UNICODE, PR_CONVERSATION_TOPIC_UNICODE,
|
|
0x8124000b, 0x81250040, PR_CREATION_TIME,
|
|
PR_MESSAGE_DELIVERY_TIME, PR_CLIENT_SUBMIT_TIME,
|
|
PR_LOCAL_COMMIT_TIME, PR_LAST_MODIFICATION_TIME, 0x81200003 as
|
|
well as stubs for 0x68340003, 0x683a0003, 0x68410003.
|
|
|
|
2010-10-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OpenChange/MAPIStoreTasksContext.[hm]: new mapi context class
|
|
for tasks.
|
|
|
|
* OpenChange/SOGoGCSFolder+MAPIStore.m (-componentKeysWithType:):
|
|
new method that return the keys of components corresponding to the
|
|
type passed as parameter.
|
|
|
|
* OpenChange/SOGoGCSFolder+MAPIStore.[hm]: new category module.
|
|
|
|
* OpenChange/MAPIStoreContext.m (-lookupObject): return nil when
|
|
the parsed URL is nil.
|
|
(-getFolderMessageKeys:): new subclass method designed to return
|
|
the appropriate "message" keys depending on the folder type.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (-displayName): new accessor.
|
|
|
|
2010-09-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxContactsUserFolders.js:
|
|
(onConfirmFolderSelection): fixed the regexp used when sanitizing
|
|
a username containing a user info field.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m (-identities): the account
|
|
identities are now kept in an ivar until the account object is
|
|
released. Moreoever, we invoke the new
|
|
"_appendDelegatorIdentities" method when the account
|
|
nameInContainer is "0".
|
|
(-_appendDelegatorIdentities): new method that appends the mail
|
|
values of all delegators for the owner user.
|
|
|
|
* UI/WebServerResources/MailerUI.js: (onMenuAccountDelegation):
|
|
new menu action for showing the new dialog below.
|
|
(onAccountIconMenuPrepareVisibility): new setup function.
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m (-addDelegateAction)
|
|
(-removeDelegation): new action methods.
|
|
|
|
* SoObjects/Mailer/SOGoUser+Mailer.m: new category module.
|
|
(mailDelegators, addMailDelegator, removeMailDelegator): new
|
|
accessors.
|
|
|
|
* UI/MailerUI/UIxMailUserDelegationEditor.m: new window for
|
|
choosing account delegates
|
|
|
|
* UI/WebServerResources/UIxMailUserDelegationEditor.js: new page
|
|
file, derived from UIxAclEditor.js.
|
|
|
|
* SoObjects/SOGo/NSDictionary+BSJSONAdditions.m
|
|
(+[NSMutableDictionary dictionaryWithJSONString:]): return nil
|
|
directly if the json string is empty.
|
|
|
|
2010-09-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-_appendSystemMailAccount): cleaned
|
|
up method by using NSNumber as class for port and removing useless
|
|
tests on nil values.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m (-createFolderAction):
|
|
modified to make use of -[SOGoMailFolder create].
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m (-displayName): new accessor.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m (-displayName): fixed accessor
|
|
to return the real folder name rather than the nameInContainer,
|
|
which is escaped and prefixed with "folder".
|
|
(-create): new method intented to align the operations on this
|
|
class to the ones in SOGoGCSFolder.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSEntry.m (-displayName): new
|
|
accessor.
|
|
|
|
2010-09-24 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added caching support for LDAP-based groups
|
|
* SoObjects/SOGo/LDAPSource.m
|
|
Improved SafeLDAPCriteria() to properly escape '%'
|
|
* Dropped lots of unnecessary and worthless files
|
|
|
|
2010-09-22 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js
|
|
(onToolbarDeleteSelectedContacts): delete the selected addressbook
|
|
if no contact is selected. Also checked if rows is defined
|
|
otherwise it would cause an error with Safari.
|
|
|
|
2010-09-20 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
|
(+folderWithSubscriptionReference:inContainer:)
|
|
We now consider the localIsSubscription when
|
|
building the folderName
|
|
|
|
2010-09-20 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m (-davContentLength): use UTF8
|
|
encoding instead of latin1.
|
|
|
|
* UI/WebServerResources/MailerUI.js (deleteWithoutTrash): new
|
|
function used when the messages can't be copied to the trash
|
|
folder (usually because the user's mailbox is overquota).
|
|
|
|
* UI/WebServerResources/generic.js (showConfirmDialog): added new
|
|
argument variable to overwrite the default callback when user
|
|
clicks on the "No" button.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
(-deleteUIDs:useTrashFolder:inContext:): new "useTrashFolder"
|
|
argument variable that avoids moving the messages to the trash is
|
|
set to YES.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m (-batchDeleteAction): now
|
|
accepts a new form variable, "withoutTrash".
|
|
|
|
2010-09-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m (-_searchAttributes): added
|
|
"IDField" to the search attributes for constructing addressbook
|
|
entries with a valid "c_name".
|
|
|
|
* Tests/Integration/test-davacl.py
|
|
(DAVCalendarPublicAclTest.testCollectionAccessNormalUser): make
|
|
use of the fix below when removing the rights for the subscriber
|
|
user.
|
|
|
|
* Tests/Integration/utilities.py (TestACLUtility.setupRights):
|
|
when "rights" is None or unspecified, the user is now deleted from
|
|
the access list. This enable default roles to take place for the
|
|
specified user, which is different from simply removing all its
|
|
rights.
|
|
|
|
2010-09-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Main/SOGo+DAV.m (-davComplianceClassesInContext:): new method to
|
|
declares DAV capabilities.
|
|
|
|
2010-09-17 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-renameTo:): don't act as the
|
|
owner of the folder when user is a superuser.
|
|
(-_realAclsForUser:forObjectAtPath:): don't ignore "None" access
|
|
right in order to avoid rollbacking to default roles for the
|
|
calendar module (SOGoCalendarDefaultRoles) when the user has
|
|
specifically no rights.
|
|
|
|
2010-09-14 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoUserFolder+Appointments.m
|
|
(_davSpecialCalendarURLWithName:): we do not return
|
|
the schedule-inbox-URL if the CAL is iCal and
|
|
the owner isn't the current user
|
|
|
|
2010-09-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Common/UIxPageFrame.m (-systemAdditionalJSFiles): new web
|
|
accessor for the new method below.
|
|
|
|
* SoObjects/SOGo/SOGoDomainDefaults.m (-additionalJSFiles): new
|
|
accessor for the new "SOGoUIAdditionalJSFiles" user default.
|
|
|
|
2010-09-13 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated Ukrainian translation - patch from
|
|
Oleksa Stasevych <oleksiy.stasevych@gmail.com>
|
|
* Updated Italian translation - patch from
|
|
Alessio Fattorini (alessio.fattorini@nethesis.it)
|
|
|
|
2010-09-09 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Main/NSException+Stacktrace.m - reworked entirely
|
|
so we use the backtrace() function to generate an
|
|
interesting backtrace when an exception is raised
|
|
|
|
2010-09-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js: (recoverRequest): removed
|
|
obsolete function.
|
|
(onAjaxRequestStateChange): when a recovery request is required,
|
|
we now use the new "createCASRecoveryIFrame" function and the
|
|
"onCASRecoverIFrameLoaded" to handle the request.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m (-recoverAction): new method,
|
|
returning a simple text-based response with HTTP code 200,
|
|
ensuring that the CAS authentication process has succeeded.
|
|
|
|
* UI/MainUI/SOGoRootPage.m (-recoverAction): removed method.
|
|
|
|
2010-09-02 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (openMailTo): replaced calls to
|
|
encodeURI by encodeURIComponent to make sure symbols such as '?'
|
|
and '&' are encoded.
|
|
|
|
* SoObjects/SOGo/NSDictionary+URL.m (-asURLParameters): escaped
|
|
keys and values using [NSString+misc stringByEscapingURL] from SOPE.
|
|
|
|
2010-09-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m (-allContactSearchAction):
|
|
inverted the contact/list condition test as the vlist test is
|
|
faster to execute.
|
|
|
|
* UI/MailerUI/UIxMailView.m (_receiptMessageHeaderTo:): properly
|
|
escape the message subject in QP when needed.
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js:
|
|
(onMenuCheckReturnReceipt): the function has an event parameter
|
|
which we need. This fixes an exception occurring when clicking the
|
|
"Options" menu.
|
|
|
|
2010-09-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/Unit/SOGoTest.m (-run): fixed build on GNUstep >= 1.20.
|
|
|
|
* UI/MailerUI/UIxMailView.m (-sendMDNAction): new action for
|
|
sending an MDN from the confirmation dialog.
|
|
|
|
* UI/WebServerResources/MailerUI.js: (handleReturnReceipt): new
|
|
function, crafted to be executed both from the main window and the
|
|
popup mail window, where the value of the new "shouldAskReceipt"
|
|
field is evaluated and where a popup is displayed accordingly.
|
|
(onMessageConfirmMDN): new callback function for dialog mentionned
|
|
above.
|
|
|
|
* UI/WebServerResources/JavascriptAPIExtensions.js:
|
|
(String.prototype.cssIdToHungarianId) new helper method that
|
|
compose the hungarian representation from an identifier where the
|
|
parts are separated with a dash, such as css class and id
|
|
identifiers.
|
|
|
|
* UI/WebServerResources/UIxPreferences.js: added code for handling
|
|
prefs pertaining to return receipts.
|
|
|
|
* UI/MailerUI/UIxMailView.m (-shouldAskReceipt): new accessor that
|
|
returns a JS bool string when the current message satisfy the
|
|
conditions required for asking the user whether to send a receipt
|
|
or not. Additionally, it will send the receipt automatically if
|
|
the message category falls in a category where the unconditonnal
|
|
send is required as per the user preferences. If "ask" or "always"
|
|
is the returned value, the "$MDNSend" flag is automatically set on
|
|
the IMAP message, since we want to avoid asking the user twice.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m
|
|
(-_extractMainReceiptsPreferences:): new method for extracting
|
|
prefs pertaining to return receipts and save them in the user
|
|
prefs dictionary.
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m (-setAllowUserReceipt:)
|
|
(-allowUserReceipt, setUserReceiptNonRecipientAction:)
|
|
(userReceiptNonRecipientAction)
|
|
(setUserReceiptOutsideDomainAction:)
|
|
(userReceiptOutsideDomainAction, setUserReceiptAnyAction:)
|
|
(userReceiptAnyAction): new accessors pertaining to return
|
|
receipts.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-_appendSystemMailAccount): append
|
|
preferences pertaining to return receipts.
|
|
|
|
2010-08-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSScanner+BSJSONAdditions.m (-scanJSONValue:):
|
|
make use of NSUInteger rather than "unsigned int" for length
|
|
values.
|
|
(-scanJSONNumber:): now scan float numbers too.
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js
|
|
(onMenuCheckReturnReceipt): new function.
|
|
(getMenus): added entries for initializing the new "Options" menu
|
|
as well as the "Priority" menu.
|
|
|
|
* UI/MailerUI/UIxMailEditor.m (-setReceipt, -receipt): new
|
|
accessors for the "receipt" hidden input field, meant to interract
|
|
the the "return receipt" entry in the "Options" menu.
|
|
(-setReplyTo, -replyTo): removed obsolete methods.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m (-setHeaders:)
|
|
(-mimeHeaderMapWithHeaders:excluding:): added handling for the
|
|
"Disposition-Notification-To" header.
|
|
|
|
2010-08-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tools/SOGoToolRemoveDoubles.m, UI/MailerUI/UIxMailFormatter.m:
|
|
adapted classes to use "NSInteger" and "NSUInteger" instead of
|
|
"int" and "unsigned int" for compatibility with versions of
|
|
GNUstep base >= 1.20.
|
|
|
|
2010-08-27 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (newBaseEventDIV): now adds
|
|
icon for event classification (confidential or private).
|
|
|
|
2010-08-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/ckeditor/: updated to v3.4.
|
|
|
|
* UI/WebServerResources/ckeditor/{ckeditor_source.js,ckeditor_basic_source.js,ckeditor.pack}:
|
|
dropped useless files.
|
|
|
|
* UI/WebServerResources/UIxPreferences.js: (appendSieveFilterRow):
|
|
we bind the "click" event on the activation checkbox rather than
|
|
"change", because a certain obsolete browser simply ignores it.
|
|
(updateFilterFromEditor): the "filter" argument is replaced with a
|
|
JSON-encoded string representing the filter in question. On a
|
|
certain obsolete browser, object referencing is so messed up that
|
|
closing the "creator" window will suddenly invalidate the created
|
|
objects. This solves the voodoo error message "The callee (server
|
|
[not server application]) is not available and disappeared; all
|
|
connections are invalid." when saving and closing.
|
|
(setupMailboxesFromJSON): new method, created due the same issue
|
|
as above, that enables the creation of an array from the response
|
|
received by the filter editing window.
|
|
(updateSieveFilterRow): we avoid removing the activation cb since
|
|
further update event would no longer be taken into account.
|
|
However we reset its "checked" status to the activation status of
|
|
the updated filter.
|
|
|
|
2010-08-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m (-asQPSubjectString:): we
|
|
use "NGEncodeQuotedPrintableMime" instead of
|
|
"dataByEncodingQuotedPrintable" (NGQuotedPrintableCoding), as it's
|
|
more suited for email header fields.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m (_quoteSpecials:): now work
|
|
on single strings.
|
|
(_quoteSpecialsInArray:): new method that offers the same
|
|
functionality as _quoteSpecials: did before the change above.
|
|
|
|
* UI/MailerUI/UIxMailEditor.m (_emailFromIdentity:): the "from"
|
|
field is handled in SOGoDraftObject, therefore we don't need to
|
|
modify it here, especially since this will alterate the display.
|
|
|
|
* Tests/Unit/TestNGMimeAddressHeaderFieldGenerator.m: new test
|
|
module for NGMimeAddressHeaderFieldGenerator.
|
|
|
|
2010-08-25 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (copyEventToClipboard)
|
|
(copyEventFromClipboard, copyEventToPersonalCalendar, copyEvents):
|
|
new functions to allow the copy/paste of events.
|
|
(selectCalendarEvent): fixed various bugs with the selection of
|
|
events.
|
|
(onMenuCurrentViewPrepareVisibility): new function to disable the
|
|
delete option when no event is selected and to disable the copy
|
|
option when the event is owned by the user.
|
|
(onDocumentKeydown): added actions for Ctrl-C and Ctrl-V.
|
|
(deleteEvent): avoid showing a confirmation dialog with recurrent
|
|
events that the user can't erase.
|
|
|
|
* UI/WebServerResources/SOGoDataTable.js: Overrided methods from
|
|
HTMLElement (selectRange, selectAll) to handle selection based on rows ID.
|
|
|
|
|
|
* UI/WebServerResources/MailerUI.js: selected messages are now
|
|
identified by their row ID to handle live loading.
|
|
|
|
* UI/WebServerResources/HTMLElement.js (getSelectedNodesId): take
|
|
advantage of the selectedIds attribute.
|
|
(selectElement): also verify if the element is in the selectedIds
|
|
array.
|
|
(deselectAll): performance improvement; unselect elements based on
|
|
the _selected class.
|
|
|
|
* UI/Scheduler/UIxAppointmentActions.m (-copyAction): new method
|
|
to copy the appointment to a different calendar.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
(-copyComponent:toFolder:): was copyToFolder. This new method
|
|
accepts a specific calendar component.
|
|
(-copyToFolder:): uses the above method with the current calendar.
|
|
|
|
2010-08-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxListEditor.m: slightly improved code at various
|
|
places.
|
|
|
|
2010-08-25 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* It's now possible to use SSL or TLS for the
|
|
SOGoIMAPServer value. Also updated the documentation
|
|
to give samples. Fixed the "port" value save from
|
|
the preferences module.
|
|
|
|
2010-08-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js: (log): added a hack to enable
|
|
child windows to log messages in the log console of the main window.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSList.m (-davAddressData): added
|
|
method.
|
|
|
|
2010-08-24 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/Templates/PreferencesUI/UIxPreferences.wox
|
|
Enabled the UI widgets related to SSL/TLS.
|
|
SOPE *must* be updated for them to work properly.
|
|
|
|
2010-08-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js: (clickEditorSend): make
|
|
use of the iframe hack for receiving the POST's response and
|
|
interpret it as JSON, with error handling.
|
|
|
|
* UI/WebServerResources/HTMLElement.js: (Element.allTextContent):
|
|
fetch the concatenated text content of the all the child nodes of
|
|
the element, recursively.
|
|
|
|
* UI/WebServerResources/MailerUI.js: (initMailer): use
|
|
"UserSettings" only if we are the main window.
|
|
|
|
* UI/MailerUI/UIxMailEditor.m (-sendAction): return a json
|
|
representation of the success of the operation, with a message if
|
|
an exception was returned.
|
|
|
|
* UI/WebServerResources/MailerUI.js: (mailListToggleMessagesRead):
|
|
new method, spun from "mailListMarkMessage", which is basically
|
|
replaces in a more generic way by acting on all selected messages
|
|
in the msg list.
|
|
(mailListToggleMessagesFlagged): same as above for
|
|
"mailListFlagMessageToggle".
|
|
(onMenuToggleMessageRead, onMenuToggleMessageFlag): new menu
|
|
callback methods.
|
|
(onMarkMenuPrepareVisibility): new visibility method for the
|
|
"mark-menu".
|
|
(getMenus): activated the "mark as read" and "toggle flag" menu
|
|
options of the "mark menu".
|
|
|
|
2010-08-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoDAVAuthenticator.m (-checkLogin:password:):
|
|
same as below.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:): same as
|
|
below.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (_deduceObjectNamesFromURLs:):
|
|
accept "@" chars encoded as "%40".
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m (-appendSystemSources):
|
|
append nothing if used from an iPhone.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m (-appendPersonalSources): we
|
|
now that "owner" is always set properly from the init methods, no
|
|
need to invoke ownerInContext: anymore.
|
|
|
|
* SoObjects/SOGo/WORequest+SOGo.m (-isMacOSXAddressBookApp):
|
|
renamed from "isAddressBookApp".
|
|
(-isIPhoneAddressBookApp): new method to detect whether the
|
|
request has been performed from the AB of iOS.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m (-davEntityTag): we no return a
|
|
pseudo etag for collections for compatibility with the broken
|
|
Apple clients.
|
|
|
|
2010-08-19 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (showConfirmDialog): new
|
|
function to replace window.confirm().
|
|
|
|
* UI/WebServerResources/MailerUI.js (onMenuEmptyTrash): delete the
|
|
cache of the trash mailbox when called.
|
|
|
|
2010-08-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tools/sogo-ealarms-notify.m: new tool meant to be executed every
|
|
minute from cron for handling email alarms notifications.
|
|
|
|
* SoObjects/Appointments/SOGoEMailAlarmsManager.[hm]: new GCS
|
|
aware singleton class for main email alarms operations on the db.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m (-deleteUIDs:inContext:): make
|
|
the use of the "result" variable clearer by declaring it with a
|
|
proper class name and avoiding type confusion within the code.
|
|
|
|
* UI/WebServerResources/MailerUI.js: (initDnd): removed useless
|
|
method.
|
|
(onMessageListPrepareVisibility): fixed a bug where the current
|
|
mailbox name would be attemptedly taken from the menu target,
|
|
while it really should have been deduced from
|
|
"Mailer.currentMailbox".
|
|
(configureDraggables): we now take all label nodes under
|
|
"#mailboxTree" into account and accept them as droppable when they
|
|
are not an account node. Also, we associate an account tag with
|
|
all of them.
|
|
(startDragging): we set the drag classname of the drag handle to
|
|
the correct account tag, to avoid visual feedback when hovering
|
|
mailboxes from another account.
|
|
|
|
* UI/WebServerResources/UIxReminderEditor.js
|
|
(initialiseFormValues): added code to configure the "actionList"
|
|
if present (email alarms enabled).
|
|
(onEditorOkClick): modify the parent's reminderAction,
|
|
reminderEmailOrganizer, reminderEmailAttendees when email alarms
|
|
are available. "reminderAction" is conditionally set to "display"
|
|
otherwise.
|
|
|
|
* UI/Scheduler/UIxReminderEditor.m (-emailAlarmsEnabled): new accessor.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
(-saveComponent:): invoke SOGoEMailAlarmsManager to register any
|
|
email alarms in the saved component.
|
|
(-PUTAction:): new super method to perform the same as the above.
|
|
(-prepareDelete): new super method. Invoke SOGoEMailAlarmsManager
|
|
to unregister any email alarms in the deleted component.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-init): added the
|
|
"reminderAction", "reminderEmailOrganizer" and
|
|
"reminderEmailAttendees" ivars.
|
|
(_loadEMailAlarm:) new setup method for setting up parameters that
|
|
are specific to email alarms.
|
|
(_appendAttendees:toEmailAlarm:,_appendOrganizerToEmailAlarm:):
|
|
new method for adding "attendees" to email alarms.
|
|
(-emailAlarmsEnabled): new accessor.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m (-prepareDelete):
|
|
we now invoke -[super prepareDelete] since SOGoCalendarComponent
|
|
now implements the method.
|
|
(-DELETEAction:): invoke -prepareDelete instead of
|
|
-prepareDeleteOccurence: since we want -[super prepareDelete] to
|
|
be invoked from here too.
|
|
|
|
* Main/SOGo.m (-_checkMandatoryTables): added code to create the
|
|
alarms table if email alarms are enabled.
|
|
|
|
* SoObjects/SOGo/SOGoSystemDefaults.m (-enableEMailAlarms): new
|
|
method for the "SOGoEnableEMailAlarms" user default.
|
|
|
|
2010-08-19 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (showPromptDialog): new
|
|
function to replace window.prompt().
|
|
|
|
2010-08-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/iCalEvent+SOGo.m (-quickRecord): we now
|
|
make use of the new -[iCalAlarm nextAlarmDate] method.
|
|
|
|
* SoObjects/Appointments/iCalToDo+SOGo.m (-quickRecord): we now
|
|
make use of the new -[iCalAlarm nextAlarmDate] method.
|
|
|
|
2010-08-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUIdTree.js: (getMailboxNode): fixed
|
|
method to return unfolded nodes too.
|
|
|
|
* UI/WebServerResources/MailerUI.js: (updateUnseenCount): renamed
|
|
from "updateStatusFolders" and improved to use DOM methods.
|
|
|
|
* UI/WebServerResources/dtree.js: (Node): removed the "hasUnseen"
|
|
parameter.
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m (-listMailboxes): make use
|
|
of the "application/json" content type in the response.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m: (-unseenCount): renamed and
|
|
moved implementation of the -[UIxMailAccountActions statusFolders]
|
|
method, splitted thereof since we now execute the method on all
|
|
mail folders.
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m (-defaultColumnsOrder): removed
|
|
accessor, made obsolete by the new propagation mechanism of user
|
|
defaults.
|
|
(-getUnseenCountForAllFolders): new accessor that returns the
|
|
value below as a string value.
|
|
|
|
* SoObjects/SOGo/SOGoDomainDefaults.m (-mailCheckAllUnseenCounts):
|
|
new method returning whether the unseen count of all mailboxes
|
|
should be checked.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m (-updateFilters): when the
|
|
first login attempt fails, we must request a new password to the
|
|
authenticator (as intended originally).
|
|
|
|
* UI/WebServerResources/generic.js: (onAjaxRequestStateChange):
|
|
when using CAS authentication and when the return code is 0 and
|
|
when the request status is 4, chances are that the initial ajax
|
|
request failed due to the expiration of the CAS ticket entry in
|
|
memcached. In FF 3.5 and above, a bug prevents the initial cookie
|
|
from being given back to the reauthentication redirect from an
|
|
AJAX request. Therefore we open a window that will do this for us
|
|
and will close one the authentication has succeeded again.
|
|
|
|
* UI/MainUI/SOGoRootPage.m (-revoverAction): new fake action that
|
|
perform the CAS redirection and then trigger the respawn of the
|
|
initial request.
|
|
|
|
* UI/Common/UIxPageFrame.m (-usesCASAuthentication): new accessor
|
|
used for recovery of redirected requests.
|
|
|
|
* SoObjects/Contacts/SOGoFolder+CardDAV.m:
|
|
(_appendObject:withBaseURL:toREPORTResponse:): moved method here
|
|
from SOGOContact{GCS,Source}Folder since its implementation was
|
|
mostly the same in the two classes and never invoked anywhere
|
|
else.
|
|
Modified to return both "address-data" and "addressbook-data"
|
|
(draft rev < 4) unless we parse the requested props appropriately.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m
|
|
(-davAddressbookMultiget): new method that responds the
|
|
CardDAV addressbook-multiget report.
|
|
(-davSQLFieldsTable): new overriden method that adds support for
|
|
the CardDAV address-data property.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-davCalendarMultiget:): make use of the new method below.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
|
(-performMultigetInContext:inNamespace:): collection-type
|
|
independent form of -[SOGoAppointmentFolder davCalendarMultiget:],
|
|
moved along with all its private methods.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m
|
|
(-toManyRelationshipKeys): new overriden method to return only the
|
|
personal addressbook when the request is performed by
|
|
AddressBook.app.
|
|
|
|
2010-08-11 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
Removed all the old calendar-schedule code and
|
|
instead, implemented calendar-auto-schedule. The old
|
|
code will always succeed and the new code reuses
|
|
all the business logic used for the Web interface
|
|
of SOGo.
|
|
* SOPE/NGCards/iCalRecurrenceRule.m
|
|
Modified setInterval: so that when the value is
|
|
equal to 1, we do NOT set it.
|
|
* UI/WebServerResources/UIxAclEditor.js
|
|
In addUserCallback(), we remove the owner of the
|
|
resource if it was added. This fixes #682.
|
|
* We now correctly encode/decode the '&'
|
|
character in the mailbox name when copying and moving
|
|
messages and also when opening mailboxes. This
|
|
fixes #716.
|
|
|
|
2010-08-11 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (refreshMessage): if the
|
|
current mailbox is the sent folder, refresh the mailbox instead of
|
|
only the message.
|
|
|
|
2010-08-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: (initCalendars): avoid
|
|
setting "showCompletedTasks" when in a popup, since this needs
|
|
access to a UserDefaults dictionary which is not present nor event
|
|
required.
|
|
|
|
* Main/SOGo+DAV.m (-davCurrentUserPrincipal): new method
|
|
implementing the "{DAV:}current-user-principal" property.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSEntry.m (-davAddressData): new
|
|
DAV property accessor returning the card content.
|
|
|
|
* SoObjects/SOGo/WORequest+SOGo.m (-isAddressBookApp): new
|
|
(hackish) test method to determine whether the client is Apple's
|
|
AddressBook.app.
|
|
|
|
* UI/Common/UIxPageFrame.m (_dictionaryWithKeys:fromSource:):
|
|
set an NSNull as value for keys which return no results, in order
|
|
to avoid an NSInvalidArgumentException.
|
|
|
|
2010-08-10 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (showAlertDialog): new function
|
|
to replace window.alert().
|
|
|
|
2010-08-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (openMailbox): removed the
|
|
"updateStatus" parameter, which is never used.
|
|
|
|
* UI/WebServerResources/generic.js (log): fixed handling of
|
|
messages ending with "\n".
|
|
|
|
* UI/Common/UIxPageFrame.m (-setUserDefaultsKeys:)
|
|
(-hasUserDefaultsKeys, -setUserSettingsKeys:)
|
|
(-hasUserSettingsKeys): new accessor for determining explicitly
|
|
which user defaults/settings keys are returned. The new
|
|
corresponding ivars are "udKeys" and "usKeys" respectively.
|
|
(-userDefaults, -userSettings): rewrote methods to create a
|
|
dictionary containing only the requested keys (see above). Since
|
|
the source are now explicitly queried, the values can now be
|
|
inherited from the domain and system defaults.
|
|
|
|
* UI/WebServerResources/UIxFilterEditor.js (loadMailboxes): the
|
|
first account is now always identitied with "0", therefore we no
|
|
longer need the "firstMailAccount" variable.
|
|
|
|
* UI/PreferencesUI/UIxFilterEditor.m (-firstMailAccount): removed
|
|
osbolete accessor.
|
|
|
|
* UI/WebServerResources/UIxPreferences.js: (onMailAccountAdd)
|
|
(onMailAccountDelete): set "hasChanged" to 1 when triggered.
|
|
(onColorPickerChoice): don't invoke "onChoiceChanged" as it is an
|
|
event callback.
|
|
|
|
2010-08-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (reloadPreferences): dropped
|
|
useless method.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (_extractAuxiliaryAccounts:):
|
|
since we no longer transfer the user password to the client, the
|
|
old password has to be fetched from the old account unless a new
|
|
password has been set.
|
|
(-mailAccounts): we now strip the passwords from the returned mail
|
|
accounts, to avoid transferring them uselessly with a risk of
|
|
keeping them in cache.
|
|
|
|
* UI/WebServerResources/MailerUI.js: (initMailboxTree): make use
|
|
of the new class below and drop all code related to keeping track
|
|
of active requests.
|
|
|
|
* UI/WebServerResources/generic.js: (AjaxRequestsChain): new class
|
|
that implements the chaining of ajax requests.
|
|
|
|
* UI/WebServerResources/MailerUI.js: (dropAction): ensure that the
|
|
destination mailbox is in the same mail account as the message
|
|
being dragged.
|
|
(getMenus): arranged menu descriptions as as single statement.
|
|
Added "prepareVisibility" callbacks for the "messageListMenu",
|
|
"messagesListMenu" and "messageContentMenu" (move/copy ops) and
|
|
"inboxIconMenu", "trashIconMenu", "mailboxIconMenu" menus (folder
|
|
sharing).
|
|
(onMessageListMenuPrepareVisibility): new vis. callback designed
|
|
to attach the right folder submenu to the copy and move ops.
|
|
(onFolderMenuPrepareVisibility): new vis. cb for disabling the
|
|
share of folders for auxiliary accounts.
|
|
(updateMailboxMenus): simplified method by removing the first
|
|
level of submenus, where the account names used to be.
|
|
(openInbox): "openMailbox" only takes 3 parameters. Using "null"
|
|
instead of "false" was also pretty lame.
|
|
(updateStatusFolders): take the mailbox name as parameter and
|
|
arranged for multiple mail accounts. In particular, "unseenCount"
|
|
is now a class identifier rather than an element id.
|
|
(markMailInWindow): make use of
|
|
MailerUIdTreeExtension.getMailboxNode.
|
|
|
|
* UI/WebServerResources/ContactsUI.js
|
|
(onToolbarDeleteSelectedContacts): use translated labels.
|
|
|
|
* UI/WebServerResources/MailerUIdTree.js:
|
|
(MailerUIdTreeExtension._addFolderNode): no longer set a SPAN
|
|
arroung the unseen count.
|
|
(MailerUIdTreeExtension.getMailboxNode): new method returning the
|
|
DIV.dTreeNode corresponding to the mailbox name passed as
|
|
parameter.
|
|
|
|
* UI/WebServerResources/UIxPreferences.js: (_setupEvents): no
|
|
longer take any parameter, which simplifies the method, as
|
|
removing the "change" observers on input field is not useful.
|
|
(initMailAccounts): new method that parses the mail accounts JSON
|
|
dictionary, populates the mail account UL and setup related
|
|
events.
|
|
(onMailAccountInfoChange, onMailIdentityInfoChange)
|
|
(onMailIdentitySignatureClick, onMailIdentitySignatureOK)
|
|
(createMailAccountLI, onMailAccountEntryClick, displayMailAccount)
|
|
(displayAccountSignature, createMailAccount)
|
|
(onMailAccountAdd, onMailAccountDelete, saveMailAccounts)
|
|
(compactMailAccounts): new methods completing the above.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-identitiesList)
|
|
(-itemIdentityText, -signature, -setSignature): removed obsolete
|
|
methods.
|
|
(-defaultAction): when updating filters, we now only need to query
|
|
the "0" account since accounts are no longer identified by "name".
|
|
(-mailAuxiliaryUserAccountsEnabled): new bool method.
|
|
(-setMailAccounts): new accessor that decodes the new mail
|
|
accounts dictionary in JSON format and validates it prior to save
|
|
it in the user defaults.
|
|
(-mailAccounts): new accessor.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m (_setFolderPurpose:): we now
|
|
use the corresponding methods on the SOGoUserDefaults instance
|
|
rather than in the user settings (old bug) when setting folders
|
|
for the main account. Additionally, we now handle the entries from
|
|
auxiliary accounts.
|
|
|
|
* UI/MailerUI/UIxMailEditor.m (-fromEmails): the list of
|
|
identities is now taken from the corresponding mail account dict.
|
|
|
|
* SoObjects/Mailer/SOGoMailForward.m (-signature): same as below.
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m (-composeAction): same as below.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m (-fetchMailForForwarding):
|
|
the signature is now taken from the original mail's corresponding
|
|
account.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
(-copyUIDs:toFolder:inContext:): we now ensure that the operation
|
|
is not attempted on two separate accounts.
|
|
(-httpURLForAdvisoryToUser): the returned mail account is now
|
|
always "0".
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m (-imap4URL): we now add
|
|
the "tls=YES" url parameter if the corresponding account
|
|
encryption is set to "tls".
|
|
(-imap4Login): removed useless method.
|
|
(-imap4PasswordRenewed:): now a proxy to the same method on the
|
|
instance account folder.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m (-identities, -signature)
|
|
(encryption): new helper methods that return the corresponding key
|
|
in the appropriate mail account dictionary.
|
|
(-_migrateFolderWithPurpose:): moved method in SOGoMailAccount.m.
|
|
(-_userFolderNameWithPurpose): rewrote method to make use of the
|
|
mail account dictionaries. Fallback on the main account of the
|
|
auxiliary ones do not have the required entry.
|
|
(-imap4PasswordRenewed:): moved method from SOGoMailBaseObject.m
|
|
and use the "password" entry in auxiliary account dicts depending
|
|
on "nameInContainer".
|
|
(-imap4LoginFromHTTP, -imap4Login): removed useless methods.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-mailAccounts): we now conditionnally
|
|
append the array of auxiliary user accounts, if enabled in the
|
|
domain defaults.
|
|
(-_appendSystemMailAccount): the user main signature and the
|
|
sent, drafts, trash folder location are now stored in the account
|
|
dictionaries. Added migration code from us to ud from
|
|
SOGoMailAccount.m.
|
|
|
|
* SoObjects/SOGo/SOGoDomainDefaults.m
|
|
(-mailAuxiliaryUserAccountsEnabled): new method returning a BOOL
|
|
describing whether the domain users can access auxiliary mail
|
|
accounts.
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m (-setAuxiliaryMailAccounts:)
|
|
(auxiliaryMailAccounts): new methods that receives and returns an
|
|
NSArray of NSDictionary describing the user's auxiliary mail
|
|
accounts.
|
|
|
|
* UI/WebServerResources/HTMLElement.js: (deselectAll): if the
|
|
container has a "selectedElements" attribute, then it's no longer
|
|
required to wander through the "selectedIds" attribute. This fixes
|
|
a strange bug on IE when modifying the selection on LI lists.
|
|
|
|
2010-08-05 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SOGoResizableTable.js
|
|
(computeColumnsWidths): was previous part of saveColumnsState.
|
|
Used when the user hasn't modify the columns widths but the local
|
|
"ratios" hash still need to be built.
|
|
|
|
2010-08-04 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (createDialog): when the
|
|
position class is set to "none", the dialog will be modal (with a
|
|
dimmed background).
|
|
|
|
* UI/WebServerResources/ContactsUI.js: replaced window.confirm by
|
|
a CSS modal dialog.
|
|
|
|
2010-08-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/RowEditionController.js:
|
|
(RowEditionController.startEditing): avoid setting the whole
|
|
element class. Make use of addClassName/removeClassName instead,
|
|
so that classes added/removed via other evt handlers are not
|
|
ignored.
|
|
|
|
2010-08-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-_appendSystemMailAccount): new
|
|
private method with the mailbox code split from -[mailAccounts].
|
|
|
|
* UI/WebServerResources/MailerUI.js (composeNewMessage): the first
|
|
account is always identified as "0".
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m (-mailAccounts): we now return
|
|
tje JSON rep. of a simple and flat array containing the account
|
|
display names, since the account are represented with an integer
|
|
index.
|
|
(-inboxData): we directly fetch the first mail account by using
|
|
the "0" key.
|
|
(-composeAction): same as above.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m (-imap4URLString): the
|
|
"nameInContainer" now represents the index of the current account
|
|
in the array of user mail accounts, which simplifies this method.
|
|
We also handle the "encryption" key, albeit currently unused, and
|
|
we now add the port to the url as needed.
|
|
(-shortTitle): removed method.
|
|
(-davDisplayName): we only need to return the "name" key of the
|
|
current account.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccounts.m (-mailAccounts): new utility
|
|
method that returns the mail account dictionaries corresponding to
|
|
the owner.
|
|
(-toManyRelationshipKeys): we now identify mail accounts via their
|
|
index in the array of accounts, since the order will never vary,
|
|
this simplifies the code.
|
|
(-lookupName:inContext:acquire:): same as the above.
|
|
|
|
* UI/WebServerResources/RowEditionController.js:
|
|
RowEditionController.startEditing: keep the "_selected" class
|
|
when starting edition, if exists.
|
|
RowEditionController.acceptEdition: revert the changes if the new
|
|
value is an empty string (might be wrong, though).
|
|
RowEditionController.onInputKeyDown: we now handle the tab key
|
|
too.
|
|
|
|
2010-08-03 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Applied patch for bug #690
|
|
* Applied patch for bug #703
|
|
* Applied patch for bug #714
|
|
* Updated Ukrainian translation - patch from
|
|
Oleksa Stasevych <oleksiy.stasevych@gmail.com>
|
|
|
|
2010-08-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/RowEditionController.js: new class module
|
|
that implements the handling of editable list items.
|
|
|
|
* SoObjects/SOGo/NSNumber+Utilities.m (-jsonRepresentation):
|
|
returns "true" or "false" when the initial return value is "YES"
|
|
or "NO".
|
|
|
|
2010-07-30 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (deleteEvent): improved
|
|
the function to delete all selected events cells.
|
|
(onSelectAll): improved the function to select all events cells.
|
|
(onDocumentKeydown): select all elements upon ctrl-A.
|
|
(onCalendarSelectEvent): allow multiple selections.
|
|
|
|
* UI/WebServerResources/HTMLElement.js (selectAll): new method to
|
|
select all entries of a list or a table.
|
|
|
|
* UI/WebServerResources/scriptaculous/dragdrop.js (initDrag):
|
|
avoid stopping the event propagation so the blur event is properly
|
|
fired on the search input field when it isfocused.
|
|
|
|
2010-07-28 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (deleteCachedMailboxByType,
|
|
deletedCachedMailbox): new methods to update the datasources
|
|
(mailboxes) cache.
|
|
|
|
* UI/WebServerResources/UIxComponentEditor.js (getCalendarOwner):
|
|
new function that returns the event organizer or the calendar
|
|
owner in case of an event with no organizer yet.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-organizerProfile): was
|
|
jsonOrganizer. Now caches the resulting dictionary in an ivar.
|
|
(-calendarOwnerList): new method called from the wox template and
|
|
use to display the event organizer in the edition window of the
|
|
attendees.
|
|
|
|
2010-07-27 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SOGoAutoCompletion.js
|
|
(performSearchCallback): minor change on when the popup menu has
|
|
to be positioned differently.
|
|
|
|
2010-07-22 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added Migration/Horde/* - scripts used to migrate
|
|
the address books and email signatures from Horde to
|
|
the SOGo database.
|
|
|
|
2010-07-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js: (dropSelectedContacts):
|
|
reenabled copying contacts from system (LDAP) addressbooks.
|
|
|
|
2010-07-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m (_subFoldersFromFolder:): we
|
|
need to validate the current user's access to the listed folders
|
|
again because of the recent changes on SOGoParentFolder.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m (_subFoldersFromFolder:):
|
|
removed unused method.
|
|
|
|
2010-07-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactEditor.m (-photosURL): copy of the method
|
|
below.
|
|
|
|
* UI/Contacts/UIxContactView.m (-photosURL): new access that
|
|
returns the URL to the photos contained in the VCARD, whether
|
|
inline or not.
|
|
(-tabSelection): removed unused method.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSEntry.m
|
|
(-lookupName:inContext:acquire:): new overriden method to handle
|
|
"photoX" lookups and return the corrsponding SOGoContactEntryPhoto
|
|
instance, if exists.
|
|
|
|
* SoObjects/Contacts/SOGoContactEntryPhoto.[hm]: new controller
|
|
class for VCARD PHOTO objects.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m (-davContentLength): fixed a
|
|
crash occurring with certain versions of GNUstep by using
|
|
NSISOLatin1StringEncoding instead of UTF8. This is actually the
|
|
correct way of doing things anyway since we want to return the
|
|
length in bytes and not in characters.
|
|
|
|
2010-07-16 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactView.m
|
|
In secondaryEmail, we make sure that we loop
|
|
in all available email address and we pick the
|
|
first one that doesn't match the primaryEmail
|
|
* UI/Contacts/UIxContactEditor.m
|
|
UI/Contacts/UIxContactView.m - we make sure,
|
|
when excluding a type, that we reset the
|
|
local variable to nil since we might exclude
|
|
all values in our array.
|
|
|
|
2010-07-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
(_handleUpdatedEvent:fromOldEvent:): added handling of delegation
|
|
chains when resetting the participation status of the attendees.
|
|
Fixes #688.
|
|
|
|
2010-07-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-personalCalendarFolderInContext:):
|
|
we now make use of -[SOGoParentFolder
|
|
lookupPersonalFolder:ignoringRights:] with @"personal" and YES as
|
|
arguments.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-lookupCalendarFolderForUID:): removed useless method, which can
|
|
be replaced with -[SOGoUser personalCalendarFolderInContext:].
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m
|
|
(_aptFolder:withClientObject:): removed unused method.
|
|
(_fixDates:): apply fix also for monthly views.
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js
|
|
(onComposeToAllAttendees): take the status image DIV into account
|
|
when detecting the user fullnames.
|
|
(onComposeToUndecidedAttendees): same as above.
|
|
|
|
* Tests/Integration/test-davacl.py
|
|
(DAVCalendarPublicAclTest.testCollectionAccessNormalUser): print
|
|
the amount of received hrefs.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
(-folderObjectKeys): we now check the "AccessObject"
|
|
right on the returned folders to determine whether their ICS or
|
|
XML version should be accessible.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m
|
|
(_fetchPersonalFolders:withChannel:): we no longer check access
|
|
rights from here as this method is too low level and prevent other
|
|
mechanisms from working properly.
|
|
(-lookupPersonalFolder:ignoringRights:): new method enabling the
|
|
lookup of a user's personal folders only and offering the choice
|
|
of respecting (or not) the active user's permission before
|
|
returning it.
|
|
(-lookupName:inContext:acquire:): we now make use of the above
|
|
method when looking up personal folders ("personal" or not).
|
|
(-toManyRelationShipKeys): same as lookupName... above.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (-ignoreRights): new utility method
|
|
that determines whether the current object must check access
|
|
rights on subobjects.
|
|
|
|
2010-07-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-aclSQLListingFilter): return an
|
|
empty string when the active user is a super user.
|
|
(-initializeQuickTablesAclsInContext:): set
|
|
"userCanAccessAllObjects" to YES also when the active user is a
|
|
super user.
|
|
|
|
* Tests/Integration/test-davacl.py
|
|
(DAVCalendarAclTest._testEventIsSecureVersion): accept a differing
|
|
SUMMARY since it will always change depending on the user's
|
|
language and is a pain to adapt.
|
|
(DAVCalendarPublicAclTest.testCollectionAccessNormalUser): added
|
|
code to accept and handle the XML and ICS calendar variants.
|
|
(DAVCalendarSuperUserAclTest.__init__): new test access class for
|
|
ensuring that super users have full, inconditionnal and complete
|
|
access to simple user's collections
|
|
|
|
2010-07-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/Integration/test-put.py: new test module executing X puts
|
|
based on a number of auto-generated events configured in config.py
|
|
|
|
* Tests/Integration/ev_generator.py: new module producing
|
|
auto-generated events based on a number of days
|
|
|
|
* Tests/Integration/sogotests.py: new module overriding
|
|
certain methods from the "unittest" module in order to
|
|
automatically execute the tests in verbose mode and by displaying
|
|
a timing of the test execution.
|
|
|
|
* Tests/Integration/test-webdavsync.py (WebdavSyncTest.test):
|
|
adapted to suit the new handling of empty collections in SOGo
|
|
|
|
2010-07-09 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAttendeesEditor.js (onContactKeydown):
|
|
reset left scroll uppon autocompletion (fix for IE).
|
|
(onAttendeeResultClick): idem.
|
|
(prepareAttendees): add the organizer at the top of the attendees list.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-jsonOrganizer): new method
|
|
that returns a JSON representation of a dictionary describing the
|
|
organizer of the event.
|
|
|
|
2010-07-07 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/HTMLInputElement.js: renamed valueAsDate
|
|
as inputAsDate since it conflicts with the DOM attribute with the same
|
|
name in HTML5.
|
|
|
|
2010-07-06 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m (-_setupCSSEscaping): added
|
|
the single quote (') in the list of characters to escape.
|
|
|
|
* UI/WebServerResources/JavascriptAPIExtensions.js
|
|
(asCSSIdentifier): idem.
|
|
|
|
2010-07-05 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxContactEditor.js
|
|
(validateContactEditor): added validation of birthdate.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (onCalendarModify): fixed
|
|
proper identification of web calendars and adjusted height of
|
|
popup window.
|
|
|
|
2010-07-04 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* In the Contacts module, we prioritize the
|
|
WORK number while excluding the FAX one in case
|
|
we see the latter before the former.
|
|
|
|
2010-07-01 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* In the Contacts module, improved the label
|
|
of the birthday field.
|
|
|
|
2010-06-30 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* When displaying or editing cards, we make sure
|
|
we properly fallback to the homeURL field when
|
|
a work value is defined but we also have one other
|
|
untagged value defined.
|
|
|
|
2010-06-30 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailEditor.m (-localeCode): new method that
|
|
returns the language two-letter code. Used to set the language in
|
|
the CKEditor instance in JavaScript.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-localeCode): idem.
|
|
|
|
2010-06-30 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* When displaying cards, we now make sure that
|
|
the "service" is non-empty prior creating the
|
|
proper field value.
|
|
|
|
2010-06-30 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (savePreferences): added
|
|
email validation of forward address (if enabled).
|
|
|
|
* UI/WebServerResources/MailerUI.js (onDocumentKeydown): improved
|
|
scrolling when using the arrows keys.
|
|
|
|
2010-06-29 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxCalendarProperties.js
|
|
(onLoadCalendarProperties): we now make use of tabs in the
|
|
properties window.
|
|
|
|
* UI/Scheduler/UIxCalendarProperties.m (-isPublicAccessEnabled):
|
|
new method, copied from Common/UIxAclEditor.m.
|
|
(-_basePublicCalDAVURL): new method that return the public base
|
|
URL of the calendar.
|
|
(-publicCalDavURL, -publicWebDavICSURL, -publicWebDavXMLURL): new
|
|
methods to return the various public URLs associated to the calendar.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-publicDavURL): new method to
|
|
return the public DAV URL of the folder.
|
|
|
|
2010-06-28 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SOPE/sope-patchset-r1664.diff
|
|
Fixed the LF/CRLF encoding issue in NGSmtpClient.m
|
|
* SOPE/sope-patchset-r1664.diff
|
|
We now also consider https connections for WOHTTPURLHandle.m
|
|
* SoObjects/Appointments/SOGoWebAppointmentFolder.m
|
|
(-loadWebCalendar):
|
|
Modified so that we use SOPE's WOHTTPURLHandle class instead
|
|
of the NSURL code to fetch remote ICS calendars. This allow
|
|
use to support SSL by using SOPE class instead of the SSL
|
|
bundle of GNUstep (which is generally not available anywhere).
|
|
|
|
2010-06-28 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactEditor.m (-initSnapshot, -_saveSnapshot):
|
|
added support for "extended" work/home addresses.
|
|
|
|
2010-06-25 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m (-inboxData): new method used to
|
|
avoid an AJAX call when first loading the webmail module. It
|
|
returns a dictionary with the UIDs of the inbox folder as well as
|
|
the headers of the first few messages.
|
|
|
|
* UI/MailerUI/UIxMailListActions.m (-imap4SortOrdering): fixed an
|
|
issue that would not save the sorting state when matching the
|
|
default sort key but not the sort direction.
|
|
(-getUIDsAndHeadersInFolder:): new method that returns all UIDs of
|
|
a mail folder and the headers of the first corresponding messages.
|
|
(-getHeadersForUIDs:inFolder:): was getHeadersAction. It now
|
|
returns an array of arrays instead of an array of
|
|
dictionaries. The first array contains the previous dictionary
|
|
keys so we can easily reconstruct a dictionary in JavaScript.
|
|
|
|
* UI/MailerUI/UIxMailEditor.m (-setSourceUID:, -sourceUID,
|
|
-setSourceFolder:, -sourceFolder): new methods to keep track of
|
|
the source folder replying or forwarding a message.
|
|
(-sendAction): now calls the JavaScript function refreshMessage
|
|
instead of refreshCurrentMailbox.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m (-setSourceFolder:,
|
|
-setSourceFolderWithMailObject:, -sourceFolder): new methods to
|
|
keep track of the source folder replying or forwarding a message.
|
|
(-fetchMailForEditing:): fixed the message UID value.
|
|
|
|
* UI/WebServerResources/SOGoMailDataSource.js (remove): new
|
|
function that was integrated to invalidate. There are now
|
|
splitted.
|
|
(init): new function to initialize the data source with
|
|
pre-fetched uids and headers.
|
|
(getData): if the source is not yet loaded, the function will now
|
|
be called by the method _loadCallback.
|
|
(_getRemoteDataCallback): headers received from the server are no
|
|
formatted as a hash but as an array with the first entry
|
|
corresponding the previous hash keys.
|
|
|
|
* UI/WebServerResources/SOGoDataTable.js (initSource): was
|
|
setSource which was redefined to received a data source as
|
|
argument.
|
|
(invalidate): new function to refresh a single row.
|
|
|
|
* UI/WebServerResources/MailerUI.js (openMailbox): added caching
|
|
of data sources (IMAP folders). The previous selection is now
|
|
restored when chaning folders.
|
|
(loadMessageCallback): the window is no longer reloaded if the
|
|
message doesn't exist; only the proper row is removed.
|
|
(refreshMessage): new function called after sending a message.
|
|
(onMailboxMenuMove, onMailboxMenuCopy): remove cache of target
|
|
folder.
|
|
|
|
2010-06-24 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailEditor.m (-sendAction): trigger the new
|
|
JavaScript function refreshMessage() instead of
|
|
refreshCurrentFolder() so we only refresh one row.
|
|
|
|
2010-06-23 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m (-language): verify that the
|
|
language is part of the supported languages of the system configuration.
|
|
|
|
* UI/Scheduler/UIxCalMonthView.m (-init): retrieve the locale
|
|
associated to the user's language.
|
|
|
|
2010-06-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-_lastModified): new method that
|
|
returns the last modified timestamp of the folder. Taken from
|
|
previous implementation of davCollectionTag.
|
|
(-davCollectionTag): make use of the new method above.
|
|
(_isValidSyncToken:): new method that perform a real validation of
|
|
the sync token passed as parameter.
|
|
(-davSyncCollection): make use of the new method above.
|
|
|
|
2010-06-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoDAVAuthenticator.m (-checkLogin:andPassword:)
|
|
we save the CAS session information to the cache after a
|
|
successful authentication/validation.
|
|
|
|
2010-06-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoDAVAuthenticator.m (-checkLogin:andPassword:)
|
|
(imapPasswordInContext:forServer:forceRenew:): when using CAS
|
|
authentication, make use of the password as a CAS ticket instead
|
|
of as identifier, since we don't make use of those in DAV.
|
|
|
|
2010-06-17 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxMailToSelection.js
|
|
(addressFieldLostFocus): improved intelligence when parsing
|
|
recipient.
|
|
(expandContactListCallback): we remove the container attribute to
|
|
avoid triggering the event autocompletion:changedlist once again.
|
|
|
|
* UI/WebServerResources/SOGoAutoCompletion.js (bind): remove the
|
|
container attribute for the same reason.
|
|
|
|
2010-06-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
(-reloadWebCalendars:): invoke -[self
|
|
_migrateWebCalendarsSettings] for when we are executing from a
|
|
non-Calendar module.
|
|
|
|
2010-06-16 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxListEditor.js (onDocumentKeydown):
|
|
submit form when pressing the return key.
|
|
|
|
* UI/WebServerResources/UIxContactEditor.js (onDocumentKeydown):
|
|
idem.
|
|
|
|
* UI/WebServerResources/SOGoAutoCompletion.js
|
|
(performSearchCallback): fixed the position of the popup menu when
|
|
the input is within a relatively positioned div (mainly the
|
|
contacts list editor).
|
|
|
|
2010-06-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m
|
|
(_fillBlocks:withEvent:withNumber:): "c_iscycle" and "c_recurrence_id"
|
|
have position 13 and 15 instead of 12 and 13, respectively.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m
|
|
(_purgeRecipients:fromAddresses:): we need to compare the email
|
|
addresses case-insensitively.
|
|
|
|
2010-06-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoDAVAuthenticator.m (-checkLogin:password:):
|
|
perform authentication in LDAP inconditionnally and fallback on
|
|
CAS if enabled for DAV.
|
|
|
|
2010-06-14 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxPreferences.js: Fixed a bug when saving
|
|
the preferences while some of the calendar categories are still editable.
|
|
|
|
2010-06-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMainActions.m (-saveUrl:forCalendar:):
|
|
removed method since obsoleted by the code below.
|
|
|
|
* SoObjects/Appointments/SOGoWebAppointmentFolder.m
|
|
(-loadWebCalendar): removed the URL parameter since it's
|
|
read-only.
|
|
(-delete): simplified method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
(-newWebCalendarWithName:atURL:): new self-explicit method.
|
|
(-reloadWebCalendars): we now make use of the @"WebCalendar" name
|
|
as a property key.
|
|
(_migrateWebCalendarsSettings): new method that converts
|
|
WebCalendar entry keys in a format suitable for use as a property
|
|
key.
|
|
|
|
* UI/Scheduler/UIxCalFilterPanel.m (+initialize): commented out
|
|
the "All Events" option as this could cause a delay too long in IE
|
|
when drawing the list.
|
|
|
|
2010-06-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoDAVAuthenticator.m (-checkLogin:password:):
|
|
use CAS in proxy mode when SOGoDAVAuthenticationType is set to
|
|
"cas".
|
|
(-imapPasswordInContext:forServer:forceRenew:): now a copy of the
|
|
equivalent method in SOGoWebAuthenticator, when the above
|
|
condition is true.
|
|
|
|
* UI/Common/UIxPageFrame.m (-logoffPath): reverted previous change
|
|
as we now make use of the logoffAction to redirect to the CAS
|
|
logout url.
|
|
|
|
* SoObjects/SOGo/SOGoSystemDefaults.m (-davAuthenticationType):
|
|
new method similar to -authenticationType. Currently used for CAS
|
|
or non-CAS authentication.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m (-logoffAction): split method in
|
|
smaller submethods for the sake of clarity. Also, we provide as
|
|
"CAS" mode where the redirection is made to the CAS logout page.
|
|
|
|
* SoObjects/SOGo/SOGoCASSession.m
|
|
(+CASSessionWithTicket:fromProxy:): added a new "fromProxy" parameter.
|
|
(+CASSessionWithIdentifier:fromProxy:): idem.
|
|
(-fetchData): if the session is used by a proxy client, we invoke
|
|
"proxyValidate" rather than "serviceValidate".
|
|
|
|
* SoObjects/SOGo/SOGoDAVAuthenticator.m (-userInContext:):
|
|
reorganized method.
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m
|
|
(-composeURLWithAction:parameters:andHash:): don't attempt to add
|
|
parameters if the parameters argument is empty.
|
|
|
|
* UI/Common/UIxPageFrame.m (-canLogoff)): return YES when the
|
|
authentication type is set to "cas" and SOGoCASLogoutEnabled is
|
|
set.
|
|
(-logoffPath): return an href to the CAS service logout URL when
|
|
using "cas" as authentication type.
|
|
|
|
* SoObjects/SOGo/SOGoSystemDefaults.m (-CASLogoutEnabled): new
|
|
method that returns whether the "SOGoCASLogoutEnabled" ud is set.
|
|
|
|
2010-06-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m (_subFoldersFromFolder:):
|
|
restore the "owner" record that went bugously missing a few days
|
|
ago.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolderObject.m
|
|
(-_folderCalendars): we now fetch the records only covering the
|
|
value of SOGoDAVCalendarStartTimeLimit in days with the current
|
|
date as the middle of the time range.
|
|
|
|
2010-06-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAttendeesEditor.js
|
|
(initializeAttendeeRole): new function that initialize an input's
|
|
row appearance based in the associated uid.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js:
|
|
(onCalendarsMenuPrepareVisibility): the "export" menu option is
|
|
now disabled for non-owner users, since the function itself will
|
|
not do anything otherwise.
|
|
(onCalendarExport): we make use of the URLForFolderId method,
|
|
which reduces code size.
|
|
|
|
* UI/Scheduler/UIxCalFolderActions.m (-exportAction): this web
|
|
method is now bound to the ICS folder object, thereby removing
|
|
duplicate code.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolderObject.m
|
|
(-displayName, -davDisplayName): new accessors that are forwarded
|
|
to the real folder object.
|
|
|
|
* UI/WebServerResources/UIxAclEditor.js: (onAclLoadHandler) we
|
|
bind the "unload" event rather than "beforeunload", which does not
|
|
seem to work on IE.
|
|
|
|
2010-06-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAclEditor.js (onAclLoadHandler): add
|
|
tooltips to the special user entries.
|
|
|
|
* UI/Common/UIxAclEditor.m (_displayNameForUID:):
|
|
(-ownerName, hasOwner): removed useless methods.
|
|
(-currentUserDisplayName): make use of the method below from the um.
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m (-getFullEmailForUID:):
|
|
enhanced to return a proper string for users with an empty "cn" or
|
|
an empty "c_email".
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
(-toOneRelationShipKeys): with a request from iCal, we return
|
|
nothing to avoid confusing iCal 3 with non-collection resources.
|
|
|
|
* UI/Common/UIxAclEditor.m (-isPublicAccessEnabled): we now expose
|
|
the state of public access in order to not show the "anonymous"
|
|
user when not needed.
|
|
|
|
2010-06-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalendarProperties.m (-calDavURL, -webDavICSURL)
|
|
(-webDavXMLURL): new accessors for the URL now appearing at the
|
|
bottom of the properties page.
|
|
|
|
* UI/WebServerResources/generic.js (onBodyClickContextMenu):
|
|
leave the context menu to appear on "A" elements with a
|
|
"clickableLink" class.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-realDavURL): new method that
|
|
returns the the owner version of the URL to the current folder.
|
|
|
|
2010-06-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalParticipationStatusView.m: removed obsolete module.
|
|
|
|
* UI/Common/UIxUserRightsEditor.m
|
|
(-sendACLAdvisoryTemplateForObject:): don't attempt to send a
|
|
notification email to the "anonymous" or the default user.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolderXML.[hm]: same as
|
|
below for XML.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolderICS.[hm]: new class
|
|
module that exports personal calendars as one ICS file.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
(-folderObjectKeys): new method that return the "toOne..." keys
|
|
mapping XML or ICS representation of calendars.
|
|
|
|
2010-06-03 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added Ukrainian translation (first pass) from
|
|
Oleksa Stasevych <oleksiy.stasevych@gmail.com>
|
|
|
|
2010-06-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (CurrentModule): new function
|
|
that returns the name of the currently active module.
|
|
|
|
* UI/WebServerResources/UIxAclEditor.js (addUser): take into
|
|
account the fact that the "default roles" button has been replaced
|
|
with a new "authenticated users" entry and that we want to keep
|
|
that entry at the end of the list.
|
|
(nodeForUser): added a "canSubscribe" parameter that determines
|
|
whether the "subcribe user" button should be displayed.
|
|
(openRightsForUserId): when the user id is "anonymous", the acl
|
|
window is reduced by 42 pixels. If the window to display is the
|
|
one pertaining to contacts rights, 21 pixels are substracted again.
|
|
(openRightsForDefaultUser): removed function.
|
|
|
|
* UI/Scheduler/UIxCalUserRightsEditor.m (-objectRights): the list
|
|
of rights must be limited to the immutative ones whe the active
|
|
user is "anonymous".
|
|
|
|
* UI/Common/UIxUserRightsEditor.m (-userIsAnonymousUser): new
|
|
accessor that returns whether the selected user is "anonymous", in
|
|
which case certain UI elements need to be adapted.
|
|
|
|
* UI/Common/UIxAclEditor.m (-_prepareUsers): added support for
|
|
"anonymous" user id.
|
|
|
|
2010-06-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/*.js: replaced all remaining calls to
|
|
"getLabel" with calls to "_".
|
|
|
|
* Tests/Integration/test-davacl.py (DAVPublicAccessTest): new test
|
|
class that implements tests strictly related to accessing the
|
|
"/public" prefix.
|
|
(DAVCalendarPublicAclTest.setUp): new test class that tests the
|
|
behaviour of calendar resources with regards to the super user,
|
|
a non-owner user, the "anonymous" user and the default user
|
|
(for default roles).
|
|
|
|
* Tests/Integration/utilities.py (TestACLUtility.setupRights): we
|
|
excape the value for the "user" attribute with
|
|
xml.sax.saxutils.escape.
|
|
|
|
* Tests/Integration/webdavlib.py (HTTPPUT.__init__): added the
|
|
"content_type" and "exclusive" optional parameters. The latter
|
|
implies the use of the "if-none-match" header.
|
|
(WebDAVPUT): removed useless operation class
|
|
|
|
* SoObjects/SOGo/WORequest+SOGo.m (-handledByDefaultHandler):
|
|
fixed a bug where the -requestHandlerKey method would be invoked
|
|
on the "request" (NGHttpRequest) ivar rather than on self.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m (_subFoldersFromFolder:):
|
|
thanks to the change below, the ACL checking code is no longer
|
|
needed here, where we can now concentrate on returning subfolders
|
|
metadata.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m
|
|
(_fetchPersonalFolders:withChannel:): if the active user is not
|
|
the owner of the current parent folder, subfolders are returned
|
|
only when he/she has permissions set on them even for the
|
|
"personal" subfolder.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-aclsForUser:forObjectAtPath:):
|
|
extracted db code into a new "_realAclsForUser:forObjectAtPath:"
|
|
private method. When the "None" special role is returned, we
|
|
remove it from the list. Finally, we don't allow fetching default
|
|
roles when the specified uid is "anonymous".
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m (-appendSystemSources):
|
|
we now add public sources to the list of folders if and only if
|
|
the active user is the owner of the current parent folder.
|
|
|
|
* SoObjects/SOGo/SOGoWebAuthenticator.m (-userInContext): if the
|
|
returned user has the login "anonymous", we return a corresponding
|
|
instance of SOGoUser to make sure methods are never invoked on
|
|
SoUser instances.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-rolesForObject:inContext:): now make
|
|
use of the new "isInPublicZone" method of SOGoObject to give the
|
|
"PublicUser" role to the unauthenticated user.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (-isInPublicZone): same as below,
|
|
but we cache the result in a new "isInPublicZone" ivar.
|
|
|
|
* Main/SOGo.m (-lookupName:inContext:acquire): when the "public"
|
|
key is requested in DAV mode, we now instantiate a
|
|
"SOGoPublicBaseFolder", if the "SOGoEnablePublicAccess" user
|
|
default is set.
|
|
(-isInPublicZone): new method that always returns "NO" and is
|
|
meant to be called from child objects.
|
|
|
|
* SoObjects/SOGo/SOGoPublicBaseFolder.m: new class module that
|
|
enables anonymous access to resources. Instantiated from the
|
|
"SOGo" object. Implements a method "-isInPublicZone" that always
|
|
returns "YES".
|
|
|
|
2010-06-02 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m (_userStateInEvent): fixed
|
|
array indexes that would cause the user participation state to no
|
|
longer be returned.
|
|
|
|
2010-06-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/WORequest+SOGo.m (-handledByDefaultHandler): test
|
|
the request handler key instead of invoking isSoWebDAVRequest,
|
|
which performs additional and permission tests.
|
|
|
|
* Tests/Integration/test-davacl.py
|
|
(DAVCalendarAclTest._testRights): reenabled test code even when no
|
|
classification rights are available.
|
|
|
|
* SoObjects/SOGo/SOGoSystemDefaults.m (-enablePublicAccess): new
|
|
accessor for the SOGoEnablePublicAccess boolean user default.
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m
|
|
(-contactInfosForUserWithUIDorEmail:): return a fixed dictionary
|
|
of information for uid = "anonymous".
|
|
|
|
* Tests/Integration/test-*.py: take the API changes in
|
|
webdavlib.py into accounts with regards to XPath queries.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-_privacySqlString): renamed to the new standardized
|
|
"aclSQLListingFilter". Again, a difference is now made between
|
|
empty and nil return strings, which we now apply here too.
|
|
(-bareFetchFields:from:to:title:component:additionalFilters:,
|
|
(-fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:):
|
|
make use of the new semantics to the above method.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-aclSQLListingFilter): new
|
|
overridable method designed to return a filter to SQL queries that
|
|
avoids requesting records that are not meant to be visible to the
|
|
active user. Replaces and extends -[SOGoAppointmentFolder
|
|
_privacySqlString] with the additional convention that returning a
|
|
nil string will prevent any query at all.
|
|
(-toOneRelationshipKeys): new overriden method (see below). Make
|
|
use of the new aclSQLListingFilter method to retrieve records so
|
|
that unaccessible records are not even listed.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m (-fetchContentObjectNames): removed
|
|
this useless alias to "toOneRelationshipKeys".
|
|
|
|
* Tests/Integration/all.py: disable multilanguage tests by
|
|
default, reverting the "disbale-languages" cmd-line parameter to
|
|
"enable-languages".
|
|
|
|
* Tests/Integration/webdavlib.py (WebDAVClient.__init__): made
|
|
"username" and "password" parameters optional to enable anonymous
|
|
connections. Also, M2Crypto.httpslib is imported explicitly only
|
|
when an SSL connection is requested. This renders this library
|
|
optional.
|
|
(WebDAVQuery.set_response): we now make use of the xml.etree API
|
|
instead of the one from xml.dom.
|
|
(xpath_evaluate): the above change makes this method obsolete
|
|
since XPath queries can now be performed directly on returned
|
|
elements.
|
|
|
|
* SoObjects/SOGo/SOGoCache.m (-setValue:forKey:expire:): display
|
|
the memcached error string when an error occurs.
|
|
|
|
2010-05-28 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m (-saveColumnsStateAction): new
|
|
method to save the relative sizes of the columns widths. It will
|
|
also save the columns order when the web interface supports it.
|
|
|
|
* UI/WebServerResources/SOGoResizableTable.js (saveColumnsState): idem.
|
|
|
|
2010-05-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxComponentEditor.js:
|
|
(findDeleteAddress): new function that returns the properly
|
|
formatter full email of the delegate attendee.
|
|
(findAttendeeWithFieldValue): new function that wanders through
|
|
the list of attendees and returns the one that has the field
|
|
passed as parameter equal to the value passed as parameter.
|
|
|
|
2010-05-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/WOContext+UIxMailer.m
|
|
(-mailEnvelopeAddressFormatter): declare result as
|
|
UIxEnvelopeAddressFormatter.
|
|
|
|
* UI/MailerUI/UIxMailListActions.m (-getHeadersAction):
|
|
"addressFormatter" really is a UIxEnvelopeAddressFormatter.
|
|
|
|
* UI/WebServerResources/UIxAttendeesEditor.js: (prepareAttendees):
|
|
automatically append a new attendee line when the window is loaded
|
|
and no attendee is present in the list yet.
|
|
|
|
2010-05-27 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailListActions.m: renamed from
|
|
UIxMailListview.m. Associated .wox was removed and converted to a
|
|
WODirectAction.
|
|
(-getSortedUIDsAction): new method that returns a JSON
|
|
array with all the messages UIDs of the mailbox, sorted as requested.
|
|
(-getHeadersAction): new method that returns a JSON dictionary of
|
|
the headers of requested messages UIDs.
|
|
|
|
* UI/Common/WODirectAction+SOGo.m (-pageResourceManager,
|
|
-urlForResourceFilename): methods copied from UIxComponent.
|
|
|
|
* UI/WebServerResources/SOGoDataTable.js: new interface to add
|
|
"live loading" to a table.
|
|
|
|
* UI/WebServerResources/SOGoMailDataSource.js: new class that
|
|
dynamically fetches the message headers depending on the requests
|
|
from a SOGoDataTable.
|
|
|
|
* UI/WebServerResources/SOGoResizableTable.js: new interface to
|
|
add resizable headers to a table.
|
|
|
|
* UI/WebServerResources/MailerUI.js (initMailer): associates a DIV
|
|
with the new SOGoDataTable interface.
|
|
(openMailbox): uses the new SOGoMailDataSource class to fetch the
|
|
messages list.
|
|
(messageListCallback): new function called to populate a row from
|
|
the data received from the SOGoDataTable interface and
|
|
SOGoMailDataSource class.
|
|
(updateMessageListCounter): new function to update the message
|
|
counter that appears in the headers table.
|
|
(toggleAddressColumn): new
|
|
function to toggle the address column header content
|
|
(From/To). This column changes depending on the mailbox type
|
|
selected (draft, sent or other).
|
|
|
|
* UI/WebServerResources/HTMLElement.js (refreshSelectionByIds):
|
|
new method to restore the selection based on the elements IDs instead
|
|
of the elements themselves.
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m (-showToAddress,
|
|
-columnsMetaData, -columnsMetaData, -columnsDisplayOrder,
|
|
-columnsOrder, setCurrentColumn, -currentColumn, -columnTitle):
|
|
moved those methods from UIxMailListView, since the messages table
|
|
is now populated with a JSON representation of the data.
|
|
|
|
2010-05-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAttendeesEditor.js:
|
|
(toggleOfficeHours): removed obsolete method.
|
|
(initialiseTimeSlotWidgets): we now initialize the time range
|
|
hours to the day start hour and day end hour, respectively,
|
|
instead of the event start and end time.
|
|
(handleAllDay): we make use of the "dayStartHour" and "dayEndHour"
|
|
variables instead of hardcoded values. Also, we hide the time
|
|
range widgets when this code is executed.
|
|
(availabilityController.onNextSlotClick,
|
|
availabilityController.onPreviousSlotClick): ignore clicks when a
|
|
request is already active.
|
|
|
|
2010-05-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
(_bodyPartForICalObject:): new help method designed to return a
|
|
body part representing the event in iso-8859-1 and falling back on
|
|
UTF-8 if not possible.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailNotification.m (+initialize):
|
|
removed obsolete method.
|
|
(-viewTZ, setViewTZ): idem.
|
|
(-setupValues): the "viewTZ" is now initialized from here, using
|
|
the active user's defaults.
|
|
|
|
* UI/WebServerResources/SchedulerUIDnD.js:
|
|
(SOGoEventDragEventCoordinates.setLocation)
|
|
(SOGoEventDragGhostController.setLocation): new self-explanatory
|
|
methods.
|
|
(SOGoEventDragController.attachToEventCells): now take the event
|
|
location SPAN into acccount when drawing the ghost.
|
|
|
|
2010-05-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAptMailUpdate.m (-valueForProperty:):
|
|
set the timezone of date objects to the active user's timezone.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: (resetCategoriesStyles):
|
|
fixed an exception occurring when
|
|
UserDefaults['SOGoCalendarCategoriesColors'] is undefined.
|
|
|
|
2010-05-21 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (onMenuCurrentView):
|
|
propagate the click event when right-clicking on an event.
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (endEditable,
|
|
onColorPickerChoice): those functions will automatically trigger
|
|
the reload of the current module (hasChanged is set to 1).
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (resetCategoriesStyles):
|
|
new method to manage the CSS associated to the event categories.
|
|
(newBaseEventDIV): a CSS class is added to the event div if a
|
|
category is associated to the event.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-fetchCoreInfosFrom:to:title:component:additionalFilters:): added
|
|
c_category field so UIxCalListingActions can fetch it.
|
|
|
|
2010-05-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: (newEventDIV): we now add
|
|
a span with class "location" when the location field is available.
|
|
|
|
2010-05-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/iCalEvent+SOGo.m (-quickRecord): extract
|
|
the event category into the c_category column.
|
|
|
|
* SoObjects/Appointments/iCalToDo+SOGo.m (-quickRecord): extract
|
|
the task category into the c_category column.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m (+initialize): added the
|
|
new "c_category" field to the list of fields that require
|
|
fetching.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (newBaseEventDIV): shifted
|
|
field indexes by 1 from the 9th field, which is now the "category"
|
|
field.
|
|
|
|
* Main/SOGo.m (-dispatchRequest:): send a "SOGoRequestDuration"
|
|
header back to the client with the time delta as value when
|
|
SOGoDebugRequests is set to YES.
|
|
|
|
2010-05-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAttendeesEditor.js
|
|
(redisplayEventSpans): "event spans" are now stored in a cache to
|
|
improve performance.
|
|
(availabilityController): new class designed to handle the
|
|
interaction with the availability widgets.
|
|
(availabilitySession): new class, used by the above, for
|
|
triggering availability searchs in the available freebusys.
|
|
Listeners should implement the "onRequestComplete" method.
|
|
(freeBusyRequest): new class designed to asynchronosly fetch a user
|
|
freebusy between specific dates. Makes use of an internal cache
|
|
and may trigger ajax requests covering more that the specified
|
|
range in order to take advantage of that cache. Listeners should
|
|
implement the "onRequestComplete" method.
|
|
(_freeBusyCacheEntry): new class, used internally by
|
|
"freeBusyRequests" for handling cache entries.
|
|
(initializeTimeSlotWidgets): new method that initializes the new
|
|
widgets that controls the time range behaviour in the freebusy
|
|
searches.
|
|
(editorConflictHander): new class that handles time conflicts.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m (-findPossibleSlotAction):
|
|
removed action method and submethods since the slot resolution is
|
|
now performed directly in javascript to benefit from the freebusy
|
|
cache and to improve performance.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m (-readFreeBusyAction): simplified
|
|
method by using -[self responseWithStatus:andString:].
|
|
|
|
* UI/WebServerResources/generic.js (log): improved the method's
|
|
performance by making use of DOM methods on the "logConsole"
|
|
object.
|
|
|
|
* UI/WebServerResources/JavascriptAPIExtensions.js
|
|
(Date.prototype.clone): new method for copying the Date object
|
|
into another instance.
|
|
(Date.prototype.deltaDays): new method that returns the number of
|
|
days separating the current date with another one passed as
|
|
parameter.
|
|
(Date.prototype.beginOfDay): new method that returns a new date
|
|
instance corresponding to time 00:00 of the current instance.
|
|
|
|
2010-05-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/Integration/test-caldav-scheduling.py
|
|
(CalDAVPropertiesTest): new class for testing caldav-specific
|
|
properties
|
|
(CalDAVPropertiesTest.testDavScheduleCalendarTransparency): new
|
|
test method for testing "schedule-calendar-transp".
|
|
|
|
* UI/Scheduler/UIxCalendarProperties.m (-includeFreeBusy)
|
|
(-setIncludeFreeBusy): new template accessors for the equivalent
|
|
methods below.
|
|
(-userIsOwner): new accessor that returns whether the current user
|
|
is the calendar's owner.
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m
|
|
(-fetchFreeBusyInfosFrom:to:): test whether the listed calendars
|
|
must be included in the freebusy.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-setIncludeInFreeBusy, -includeInFreeBusy): new accessors that
|
|
determines whether the current calendar is included in the
|
|
computing of its owner's freebusy.
|
|
(-davScheduleCalendarTransparency)
|
|
(-setDavScheduleCalendarTransparency:): equivalent DAV accessors
|
|
for the above.
|
|
|
|
2010-05-05 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (tasksListCallback):
|
|
refresh the tasks list when receiving the AJAX response instead of
|
|
emptying the list before sending the AJAX request.
|
|
|
|
2010-05-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAttendeesEditor.js (onContactKeydown):
|
|
the code for the "enter" and "tab" has been merged, since it was
|
|
similar. We also resolve individual contacts from list entries.
|
|
(resolveListAttendees): new function that fetches the indivual
|
|
entries from contacts lists.
|
|
(resolveListAttendeesCallback): callback for the above, that
|
|
create rows and input fields corresponding to the returned
|
|
entries, and trigger a contact search on each of them.
|
|
(performSearch): take an "input" field as argument since
|
|
"attendeesEditor.currentField" is no longer used.
|
|
(performSearchCallbacks): roles and partstats are now stored in
|
|
individual attributes rather than in the element class. We also
|
|
now behave differently depending on whether the event owner is
|
|
returned or another type of user, in order to match Lightning's
|
|
behaviour.
|
|
(newAttendee): no longer a callback, and now takes an optional
|
|
argument that indicates with attendee row precedes the one being
|
|
created. Also the new row is returned.
|
|
(checkAttendee): no longer a callback. Now takes an "input"
|
|
argument.
|
|
(onInputBlur): new callback that invokes "checkAttendee" and
|
|
handle the cleanup of the entries menu.
|
|
(displayFreeBusyForNode): use DOM methods rather than "innerHTML"
|
|
to modify the cell contents.
|
|
(updateFreeBusyDataCallback): freebusy requests are no longer
|
|
sequential.
|
|
(prepareAttendees): we now modify the DOM attributes rather than
|
|
the HTML attributes.
|
|
|
|
* UI/Contacts/UIxListView.m (-propertiesAction): we now invoke
|
|
-[self responseWithStatus:andJSONRepresentation:] to build the
|
|
resulting WOResponse.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m (-allContactSearchAction):
|
|
the type of returned component can now be deduced from the value
|
|
of "c_component" rather than from the c_name extension... Also, we
|
|
avoid autoreleasing variables where it's not needed.
|
|
(-contactSearchAction): removed obsolete method.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m (+initialize): new
|
|
method initializing "folderListingFields" as a static NSArray
|
|
rather than as macro. Added "c_component" to the list of fields to
|
|
retrieve.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-ownerLogin): new accessor
|
|
the differenciate between the type of users in the list of
|
|
attendees.
|
|
|
|
* UI/WebServerResources/UIxAttendeesEditor.js
|
|
(performSearchCallback): differenciate between the organizer user
|
|
and other attendees, as in Lightning.
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js
|
|
(setupAttendeeNode): removed useless calls to $().
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m
|
|
(-ownerIsAttendee:andClientObject:)
|
|
(delegateIsAttendee:andClientObject:): handle the case where the
|
|
user is found but has no RSVP or one with "FALSE" as value.
|
|
(-userHasRSVP): renamed from "userIsAttendee", since we don't
|
|
enable users without a RSVP set as "TRUE" to repond to
|
|
invitations.
|
|
(-currentAttendeeClasses): new method.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m (-tentativeAction):
|
|
new action method for the "TENTATIVE" partstat.
|
|
|
|
* SoObjects/Appointments/iCalEntityObject+SOGo.m
|
|
(-userIsParticipant:): renamed to "userIsAttendee:". We now
|
|
request the list of attendees rather than the list of
|
|
participants.
|
|
(-userAsParticipant:): renamed to "userAsAttendee:". Again, we
|
|
return the attendee matching the user, whether he/she is a
|
|
participant or not.
|
|
|
|
* SoObjects/SOGo/iCalEntityObject+Utilities.[hm]: removed useless
|
|
module, since it implemented methods already found elsewhere.
|
|
|
|
2010-05-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js (initContacts): we must
|
|
configure the ab toolbar even when in popup mode, provided
|
|
"tabsContainer" does resolve to an existing element since the
|
|
script will be included for utility windows too.
|
|
|
|
2010-05-04 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactSourceFolder.m
|
|
(-lookupName:inContext:acquire:): verify the result of
|
|
lookupContactEntry as it will not necessarily return a contact.
|
|
* Updated version number to 1.2.2.
|
|
|
|
2010-04-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tools/sogo-tool.m (setupUserDefaults): new function that sets up
|
|
a few parameters on the user defaults. Notably, we override the
|
|
values for "SOGoLDAPQueryLimit" and "SOGoLDAPQueryTimeout" so that
|
|
they do not limit the amount of records that can be exported.
|
|
|
|
* Tools/SOGoToolBackup.m (-proceed): we empty the autorelease pool
|
|
every 10 iterations to avoid an excess of unreleased LDAP
|
|
connections.
|
|
|
|
2010-04-26 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Modified all folder/ACL templates in order
|
|
to remove (ie., comment out) broken links.
|
|
|
|
2010-04-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/Integration/test-webdav.py
|
|
(WebDAVTest.testPrincipalPropertySearch): new test method for
|
|
testing the "principal-property-search" REPORT on SOGo.
|
|
|
|
* Tests/Integration/webdavlib.py: added copyright notice
|
|
(WebDAVPrincipalPropertySearch): new class that handles the
|
|
"principal-property-search" REPORT.
|
|
|
|
* Main/SOGo+DAV.m (-davPrincipalPropertySearch:): restored method.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m (-collectionDavKey:matches:):
|
|
moved this tester method for REPORT queries from SOGo+DAV.m.
|
|
|
|
* Tools/SOGoSockDOperation.m (-_performSearch): we now support an
|
|
additional identifier in the object DN, for specifying specific
|
|
objects.
|
|
(_appendEntry:toResult:): we take the additional particle into
|
|
account when building the dn. Also, we add the "uid" field for
|
|
LDAP compliance.
|
|
|
|
* SoObjects/Contacts/SOGoContactSourceFolder.m
|
|
(_flattenedRecord:): new method with the repetitive code from
|
|
_flattenedRecords. Snipped to offer the same functionality with
|
|
single records.
|
|
(-lookupContactWithName:): implemented this method to ensure
|
|
compatibility with SOGoGCSFolder (and <SOGoContactFolder>).
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m
|
|
(_qualifierForFilter:): adjusted qualifiers to perform the same
|
|
search that Thundebird perform in its local abooks.
|
|
(-lookupContactWithName:): fixed method to use an equality
|
|
qualifier. Simplified code by reducing the amount of required
|
|
variables.
|
|
|
|
2010-04-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-renameTo:): when the active
|
|
user is a super user, we modify the real owner's version of the
|
|
displayname.
|
|
|
|
* Tests/Integration/webdavlib.py
|
|
(_WD_XMLTreeElement.appendSubtree): added handling of unicode
|
|
subtrees
|
|
|
|
2010-04-22 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* Tests/Unit/TestiCalRecurrenceCalculator.m: new test module for
|
|
iCalRecurrenceRule. Added full test method for
|
|
recurrenceRangesWithinCalendarDateRange:.
|
|
|
|
2010-04-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Main/SOGo+DAV.m: commented out incomplete code for handling
|
|
DAV:principal-property-search
|
|
|
|
2010-04-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-mailAccounts): use the user's first
|
|
email address as displayname for the mail account. Also, we avoid
|
|
autoreleasing objects that do not required to.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
(-startElement:namespace:rawName:attributes:): "ignoreContent" is
|
|
no longer a BOOL but an int, and was renamed to "ignoredContent".
|
|
This enables to fix a bug where an ignored content tag could be
|
|
"unignored" by being closed more than once, triggering the passing
|
|
of further content though the sanitizer.
|
|
Also, we now rename the "classid" and "data" attributes of "object"
|
|
elements to prevent cross-site scripting.
|
|
(+initialize): "applet", "frame", "frameset" and "iframe" a now
|
|
banned tags too.
|
|
|
|
2010-04-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoWebAppointmentFolder.m (-setReloadOnLogin:)
|
|
(-reloadOnLogin): new accessors to the "AutoReloadedWebCalendars"
|
|
settings for the "Calendar" module.
|
|
|
|
* UI/Scheduler/UIxCalendarProperties.m (-setReloadOnLogin:)
|
|
(-reloadOnLogin): new accessors.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
(-reloadWebCalendars:): moved method from
|
|
UI/Scheduler/UIxCalMainActions.m and added a boolean parameter to
|
|
it indicating whether the "reload on login" setting should be
|
|
honoured or ignored.
|
|
|
|
2010-04-19 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-_loadRRules): added support
|
|
for all the rules that can be defined from the Web interface:
|
|
custom yearly/monthly/daily rules.
|
|
(-_handleCustomRRule:): idem.
|
|
|
|
* UI/WebServerResources/UIxRecurrenceEditor.js: added support for
|
|
custom monthly and yearly occurrences.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m (:_fixDates): the recurrence
|
|
ID must be adjusted even when in the month view.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m (-viewAction): no longer
|
|
necessary to adjust event date with the daylight saving time.
|
|
|
|
2010-04-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFolderActions.m (-exportAction): improved
|
|
method by providing the encoded filename of the address book
|
|
following rfc2047. Make the "uids" parameter optional: when
|
|
omitted, the address book is exported completely.
|
|
|
|
* UI/WebServerResources/ContactsUI.js (getMenus): added entry for
|
|
exporting the address books, slightly reorganized the entries.
|
|
(onAddressBooksMenuPrepareVisibility): grey out the "export" entry
|
|
for LDAP address books.
|
|
(onAddressBookExport): new callback for exporting addressbooks
|
|
from the contextual menu.
|
|
|
|
* UI/WebServerResources/generic.js (URLForFolderID): avoid double
|
|
slashes in the URL returned for personal folders.
|
|
|
|
2010-04-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
(-lookupOccurence:): the looked up occurrence might be the master
|
|
event.
|
|
|
|
* UI/WebServerResources/UIxMailPopupView.js (initPopupMailer): we
|
|
assign window.messageUID from here now (by concatenating
|
|
"mailboxName" and "messageName", as it will disappear if the
|
|
window is reloaded.
|
|
|
|
2010-04-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (onDocumentKeydown): when
|
|
deleting an event, we must make sure that the even dialog
|
|
disappears, as it the case with the click on the corresponding
|
|
toolbar button.
|
|
|
|
* Tools/SOGoToolRemove.m: new sogo-tool utility to remove user
|
|
data from the database.
|
|
|
|
* Tools/SOGoSockDOperation.m (_appendEntry:toResult:): include
|
|
"telephonenumber" in the entry information.
|
|
|
|
2010-04-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (onMenuArchiveFolder): new
|
|
menu callback method that invokes "exportFolder" on the target
|
|
mailbox.
|
|
(saveAs): we use "window.location.href" instead of "window.open"
|
|
when exporting messages, as it avoids the flickering of opening an
|
|
ephemeral window.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m (-exportFolderAction): new
|
|
action that triggers the archiving of the selected folder.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
(-archiveUIDs:inArchiveNamed:inContext:): new version of
|
|
"-archiveUIDs:inContext:" taking an optional archive name as
|
|
argument, to be used as the filename of the attachment in the mime
|
|
headers of the response. Fixed a bug naming the messages following
|
|
their identifier's address rather than their identifier. We now
|
|
encode the provided filename as a qp utf-8 string when needed.
|
|
(-archiveAllMessagesInContext:): new method that uses the above
|
|
method for archiving all the messages in an archive named after
|
|
the folder's IMAP name.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (onDocumentKeydown): new
|
|
callback method for handling keypresses. Initial code handles
|
|
event/task deletion.
|
|
|
|
* UI/WebServerResources/generic.js (onRowClick): fixed a typo.
|
|
|
|
2010-04-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxContactEditor.js (initEditorForm): we
|
|
need to instantiate a tabs controller here too.
|
|
|
|
2010-04-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoProxyAuthenticator.m (-passwordInContext:):
|
|
use the "authorization" header to determine the password of the
|
|
user, if any.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailReceipt.m (-getSubject)
|
|
(-getBody): taken methods from old version of
|
|
SOGoAptMailNotification, to avoid a crash regarding a lock of
|
|
method override.
|
|
|
|
* UI/WebServerResources/SOGoTabsController.js: new js module for
|
|
handling tabs, replacing non-object code from generic.js. Added
|
|
handling of tab overflows, with the appearance of two left/right
|
|
buttons to make them scroll.
|
|
|
|
2010-04-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m
|
|
(_eventObjectWithUID:forUser:): fixed a typo that would cause the
|
|
found event to never be returned.
|
|
(-updateUserStatusAction): return a 404 status code when the
|
|
corresponding event is not found.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m (-aclsForUser:): don't fetch
|
|
ACL when the current user is not the mailbox owner. Also, we don't
|
|
set default viewing roles when the uid is not the active user.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (-labelForKey:): restored method.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailUpdate.m,
|
|
SoObjects/Appointments/SOGoAptMailInvitation.m,
|
|
SoObjects/Appointments/SOGoAptMailICalReply.m,
|
|
SoObjects/Appointments/SOGoAptMailDeletion.m: revamped to make use
|
|
of language dictionaries rather than language-specific classes.
|
|
This hugely simplifies the code and ease the job of implementing
|
|
languages for SOGo.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (-labelForKey:) removed method,
|
|
obsoleted by the new one below.
|
|
|
|
* SoObjects/SOGo/NSObject+Utilities.m (-labelForKey:inContext:):
|
|
new method that enables the querying of module based language
|
|
dictionaries from non SoComponent instances.
|
|
|
|
* Tests/Integration/utilities.py (TestUtility.fetchUserInfo): same
|
|
as below.
|
|
|
|
* Tests/Integration/test-webdav.py
|
|
(WebDAVTest.testExpandProperty): same as below
|
|
|
|
* Tests/Integration/test-caldav-scheduling.py (fetchUserInfo):
|
|
accept empty displayname property.
|
|
|
|
* Tests/Integration/test-maildav.py: temporarily disabled test
|
|
|
|
2010-04-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailEditor.m (-fromEMails, -from): make use of
|
|
the new _emailFromIdentity: method.
|
|
(_emailFromIdentity:): new method that returns a from header
|
|
compliant with rfc822.
|
|
|
|
2010-04-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m
|
|
(_eventObjectWithUID:forUser:): we check that the target event
|
|
exists only in the specified user's calendar, as it may already
|
|
exists in subcribed calendars belonging to other attendees.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m (-toManyRelationshipKeys): we
|
|
now check if the mailbox exists before returning the message
|
|
identifiers.
|
|
(-lookupName:inContext:acquire:): we no longer check whether the
|
|
folder exists as it causes problems when it is a "noselect" parent
|
|
folder. Existence of folders is thus checked only when messages
|
|
are accessed.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m
|
|
(_appendNamespace:toFolders:): it may happen that the namespace
|
|
"folders" have already been added via the list command, therefore
|
|
we now ensure that the folder names do not already exist before
|
|
adding them to the array.
|
|
|
|
2010-04-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (prototypeIfyFilters):
|
|
we don't attempt to duplicate the rules if they don't exist.
|
|
(copyFilter): same as above.
|
|
|
|
* UI/WebServerResources/UIxFilterEditor.js (setupFilterViews): we
|
|
execute the callback for the match type SELECT in order to show or
|
|
hide the rules area depending on its initial value.
|
|
(onRuleAddClick): when the rules array does not exist, we must
|
|
create it.
|
|
|
|
2010-04-05 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/WebServerResources/SOGoRootPage.js
|
|
We now correctly use our rounded value for the
|
|
expire value when using ppolicy.
|
|
|
|
* UI/Contacts/UIxContactEditor.m
|
|
We now use URL: in cards w/o a home/work preferred
|
|
value as a home URL.
|
|
|
|
* UI/Contacts/UIxContactEditor.m
|
|
We now fallback to TEL;VOICE: when neither HOME
|
|
or WORK are defined. We set that value as the
|
|
WORK telephone number in this particular case.
|
|
|
|
2010-04-02 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
(-sendEMailUsingTemplateNamed:forObject:previousObject:toAttendees:):
|
|
when looking for the organizer email, we now rely on the previous
|
|
event when the organizer is not defined in the new event. This is
|
|
important when the organizer is deleting the only attendee of an event.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (onClickableCellsDblClick):
|
|
hack to ignore double-click in the scrollbar in the month view &
|
|
fix for Firefox.
|
|
|
|
2010-04-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m (-updateFilters): we ensure
|
|
the active script is deactivated so that we can delete it on
|
|
Dovecot. This enables scripts to be deleted when all the filters
|
|
are disabled.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m
|
|
(_fillFreeBusy:forUid:fromDate:): fixed a crash occuring when the
|
|
length of an event would happen after the period covered by the
|
|
freebusy.
|
|
|
|
2010-03-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tools/sogo-slapd-sockd.m, Tools/SOGoSockDOperation.m,
|
|
Tools/SOGoSockDScanner.m, Tools/SOGoSockD.m: new modules
|
|
implementing the sockd backend tool for slapd.
|
|
|
|
* Tools/sogo-tool.m (-run): return a proper return code rather
|
|
than "NO".
|
|
|
|
2010-03-31 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m (+initialize): updated the
|
|
User-Agent header with the proper version.
|
|
|
|
* UI/WebServerResources/SchedulerUIDnD.js (onDragStart): don't
|
|
start the dragging when the target element has a scrollbar.
|
|
|
|
2010-03-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactSourceFolder.m
|
|
(-lookupName:inContext:acquire:): lookup the object in the
|
|
"childRecords" cache prior to fetching it from the source. If the
|
|
latter happens, the resulting record is cached.
|
|
(-lookupContactsWithFilter:sortBy:ordering:): populate the
|
|
"childRecords" cache with resulting records to avoid further
|
|
lookups of the same data.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m
|
|
(-changePasswordForLogin:oldPassword:newPassword:perr:): fixed a
|
|
typo that could potentially cause crashes.
|
|
|
|
2010-03-29 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
SoObjects/Appointments/SOGoWebAppointmentFolder.m
|
|
We no longer use the NSData's method to load
|
|
the data as GNUstep will be caching it.
|
|
|
|
2010-03-28 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Translated to French all the ppolicy stuff
|
|
|
|
2010-03-26 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated the documentation with regard to
|
|
the passwordPolicy setting and deprecated
|
|
the WOApplicationRedirectURL setting.
|
|
|
|
2010-03-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-setHasChanged:)
|
|
(-hasChanged): restored accessors.
|
|
(-defaultAction): when "hasChanged" is YES, we request a reload of
|
|
the parent window. This feature was carelessly removed recently.
|
|
|
|
2010-03-25 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxContactsUserFolders.js
|
|
(onFolderSearchKeyDown, buildUsersTree): change color of search
|
|
text to red when no result returned from server.
|
|
|
|
2010-03-24 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added a patch from Christophe Palanche and
|
|
Guillaume Schreiner which makes the SOGo
|
|
cache code usable with repcached
|
|
(http://repcached.lab.klab.org/)
|
|
|
|
* SOPE/NGCards/versitCardsSaxDriver/VSSaxDriver.m
|
|
(- _parseLine:) fixed incorrrect handling
|
|
of QP-encoded attributes.
|
|
|
|
* SoObjects/SOGo/SQLSource.m - we now properly
|
|
escape quotes for SQL parameters coming from
|
|
user's input.
|
|
|
|
2010-03-22 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m - we strip
|
|
the bcc header prior to sending mails.
|
|
|
|
2010-03-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m
|
|
(_fetchFields:forComponentOfType:): fix dates only in day-based
|
|
views or for all-day events.
|
|
|
|
* Tests/Unit/TestiCalTimeZonePeriod.m: new test module for
|
|
iCalTimeZonePeriod. Added full test method for
|
|
_occurenceForDate:byRRule:.
|
|
|
|
* Tests/Unit/SOGoTestRunner.m (-init): messages must be
|
|
initialized to a mutable array.
|
|
|
|
2010-03-19 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added the SOGoiPhoneForceAllDayTransparency
|
|
preference (and its associated code to handle
|
|
it in SOGoAppointmentObject.m) to force
|
|
transparency on all-day events coming from
|
|
the iPhone-OS based devices.
|
|
|
|
2010-03-18 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Replaced SOGoUIxUserCanChangePassword with
|
|
SOGoPasswordChangeEnabled
|
|
|
|
* Removed unused prefs / code.
|
|
|
|
2010-03-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m (-davUsersQuery): we invoke
|
|
"prepareDAVResponse" only when there is content to return.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m (_fixDates:): the events
|
|
appearing in the month view needs to have their dates fixed too.
|
|
Also, the algorithm was lightly simplified.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-initWithName:inContainer:): "davTimeLimitSeconds" and
|
|
"davTimeHalfLimitSeconds" were erroneously reverted to 0 after
|
|
initialization.
|
|
|
|
* UI/WebServerResources/SchedulerUIDnD.js (onDragStart): typo.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (_setupEventsDragAndDrop):
|
|
we were setting up drag controllers only for events belonging to
|
|
the current user. Now that we handle the "editable" flag, this
|
|
had become a limitation.
|
|
|
|
2010-03-14 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Improved the password policy code. All corner
|
|
cases should now be handled correctly.
|
|
|
|
2010-03-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
(-newOccurenceWithID): moved timezone handling code from
|
|
UIxAppointmentEditor to here. Simplified that code.
|
|
|
|
2010-03-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m (_davFetchUsersMatching:): we
|
|
were still using the "info" field from the result set for extra
|
|
user info, however that field as been renamed "c_info" a couple of
|
|
months ago.
|
|
|
|
* UI/WebServerResources/generic.js (SetLogMessage): we must attach
|
|
the message to the container even when the message is null.
|
|
|
|
2010-03-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (updateCalendarProperties):
|
|
the displayname can now also be set by subscribers, in their own
|
|
environment.
|
|
|
|
* UI/Scheduler/UIxCalendarProperties.m (-setCalendarName:): this
|
|
action is now unconditional.
|
|
(-calendarNameIsDisabled): removed obsolete accessor.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
|
(-setFolderPropertyValue:inCategory:): new setter for properties
|
|
pertaining to the ACTIVE user (who may or may not be the owner).
|
|
(-folderPropertyValueInCategory:): getter corollary to the new
|
|
method above.
|
|
(-_fetchDisplayNameFromSubscriber): new method for getting the
|
|
display name of the folder for the active user.
|
|
(renameTo:): split the method in an instance for the owner and
|
|
another one for subscribers. Respectively: _ownerRenameTo: and
|
|
_subscriberRenameTo:. The latter invoke the new methods above.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(_setCalendarProperty:forKey:): replaced method with a new
|
|
and more generic accessor from SOGoGCSFolder
|
|
"setFolderPropertyValue:inCategory:".
|
|
|
|
2010-03-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Common/WODirectAction+SOGo.m
|
|
(-responseWithStatus:andJSONRepresentation:): we now add the
|
|
"application/json" content type to the response object.
|
|
|
|
* UI/SOGoUI/UIxComponent.m
|
|
(-responseWithStatus:andJSONRepresentation:): we now add the
|
|
"application/json" content type to the response object.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m (_usersResponseForResults:): we now
|
|
return a JSON response with an encoded array of arrays.
|
|
|
|
* UI/WebServerResources/UIxContactsUserFolders.js
|
|
(onFolderSearchKeyDown): same as below.
|
|
(addUsersLineToTree): the responses for user search queries are
|
|
now JSON-encoded arrays, which avoids a lot of parsing issues and
|
|
reduces the size of the code.
|
|
|
|
* UI/WebServerResources/generic.js (IsCharacterKey): new helper
|
|
function that returns whether the pressed keycode is one that
|
|
changes the content of input fields.
|
|
(onSearchKeyDown): simplified method by making use of the new
|
|
function above.
|
|
(onSearchBlur): clear the timer if the field is empty, to avoid a
|
|
useless search on the ghost phrase.
|
|
|
|
2010-03-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (onSearchKeyDown): set the
|
|
search timeout to 500 ms instead of 1 sec.
|
|
|
|
* UI/WebServerResources/UIxContactsUserFolders.js
|
|
(onFolderSearchKeyDown): move the start of the animation to
|
|
onSearchFormSubmit.
|
|
|
|
* UI/WebServerResources/generic.js (createDialog): new method
|
|
designed to provide a normalized interface for creating popup
|
|
dialogs with DOM methods.
|
|
(createButton): same as above for buttons.
|
|
(SetLogMessage): new normalizing method for putting typed log
|
|
message in specified containers via DOM methods.
|
|
|
|
* UI/WebServerResources/SOGoRootPage.js: added code for popping up
|
|
a password change dialog whenever one is required by the server.
|
|
|
|
* UI/MainUI/SOGoRootPage.m (_responseWithLDAPPolicyError:): new
|
|
method for returning password change and login-based LDAP policy
|
|
errors.
|
|
|
|
* UI/WebServerResources/PasswordPolicy.js: new module that handle
|
|
the password change protocol and error codes.
|
|
|
|
* UI/WebServerResources/UIxPreferences.js
|
|
(onComposeMessagesTypeChange): we now do the proper widget
|
|
wizardry via DOM methods to alternate between the text-based or
|
|
html-based editor for changing the user's signature when the
|
|
message format is switched between "text" and "html".
|
|
(onChoiceChanged): removed obsolete callback.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-init): removed the
|
|
"hasChanged" and "composeMessageTypeHasChanged" ivars, as they are
|
|
no longer needed.
|
|
(-setHasChanged, -hasChanged): removed obsolete accessors.
|
|
(-defaultAction): simplified method as we no longer have to manage
|
|
the handling of the change of message format from here.
|
|
|
|
2010-03-08 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added SoObjects/SOGo/SOGoConstants.{h,m} - a new file
|
|
that will hold eventually all SOGo constants.
|
|
|
|
* Reworked the authentication code to use a generic
|
|
method for password authentication (LDAP + SQL).
|
|
|
|
* Added password change support
|
|
|
|
* Updated the SOPE patchset which now includes
|
|
password-policy support.
|
|
|
|
2010-03-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+DAV.m (-davSetterName): enhanced so that
|
|
DAV properties directely passed as parameters (and not as dav
|
|
method names deduced from DAVPropMap.plist) are handled properly
|
|
too.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m (-setDavSignature:): new
|
|
accessor for setting the
|
|
{urn:inverse:params:xml:ns:inverse-dav}signature property via DAV.
|
|
|
|
2010-03-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-nameLabel, -colorLabel):
|
|
removed useless methods.
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m (-sieveFilters)
|
|
(-setSieveFilters:): new accessors.
|
|
|
|
* SoObjects/SOGo/SOGoDomainDefaults.m (-sieveScriptEnabled): new
|
|
accessor.
|
|
|
|
* SoObjects/Mailer/SOGoSieveConverter.m: new class for producing
|
|
sieve scripts from user defaults.
|
|
|
|
* UI/PreferencesUI/UIxFilterEditor.m: new template class for
|
|
editing sieve scripts.
|
|
|
|
* UI/WebServerResources/generic.js (_): new gettextable equivalent
|
|
of "getLabel".
|
|
|
|
2010-03-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoDomainDefaults.m (-imapFolderSeparator): new
|
|
method.
|
|
|
|
2010-03-01 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js (-clickedEditorSend):
|
|
fixed wrong condition that would result in refusing to send a
|
|
message after having clicked on the Save button.
|
|
|
|
2010-02-23 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added a patch from Adam Yearout <ayearout@royal.wednet.edu>
|
|
to fix OpenSUSE compilation issues.
|
|
|
|
* Added a patch from dev@ib.pl to make the memcached port
|
|
being used by SOGo configurable using the SOGoMemcachedPort
|
|
default option.
|
|
|
|
2010-02-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m
|
|
(_fetchFields:forComponentOfType:): mark events of remote
|
|
calendars as non-editable.
|
|
|
|
* UI/Common/UIxPageFrame.m (-userIdentification): ancient
|
|
"userEmail" method, with a more generic name. Also we now return
|
|
the user's complete name.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m (-imapAclConformsToIMAPExt:)
|
|
now based on the server's capability string.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m (-createFolderAction): we
|
|
check if the clientObject responds to "aboluteImap4Name",
|
|
otherwise the subscription is made to the folderName alone.
|
|
|
|
* Main/SOGo.m (-run): moved initialization logs from +initialize
|
|
here, so that they are output to the redirected output stream.
|
|
Added version number to "starting" line.
|
|
|
|
2010-02-18 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m: Modified the
|
|
code so that we correctly subscribe/unsubscribe to
|
|
the folders (old/new) when renaming or deleting
|
|
a folder. Also corrected the creation of subfolders
|
|
by using -absoluteImap4Name.
|
|
|
|
2010-02-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tools/SOGoToolRestore.m (+initialize): removed method.
|
|
(-run): make use of the newly publicized SOGoProductLoader for
|
|
loading needed products.
|
|
|
|
* SoObjects/SOGo/SOGoProductLoader.m (-loadAllProducts): new name
|
|
for "loadProducts". Do not list product directories where no
|
|
products were loaded.
|
|
(-loadProducts:): new method accepting an array of products to
|
|
load from SOGo library directories.
|
|
|
|
* SoObjects/SOGo/SOGoBuild.m: moved from Main/build.h to here.
|
|
|
|
* SoObjects/SOGo/SOGoProductLoader.m: moved from Main/ to here.
|
|
|
|
* UI/MainUI/SOGoRootPage.m (-_casDefaultAction): when the local
|
|
cache has expired, we create a "cas-location" cookie before
|
|
redirecting to the CAS login page and we redirect the user back to
|
|
that page when the login has been completed. This way, the
|
|
event creation window or any AJAX request would seamlessly restart
|
|
where "interrupted" by the login process.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
(-sendEMailUsingTemplateNamed:forObject:previousObject:toAttendees:):
|
|
added a few headers to the ical attachment that could help
|
|
work-around bugs occurring with Outlook: content-transfer-encoding
|
|
= qp. Moreover a \r\n is added to the iCalString.
|
|
|
|
* SoObjects/SOGo/SOGoCache.m: worked around in bug in GCC
|
|
occurring with libmemcached >= 0.37 by making the servers and
|
|
handle ivars static globals.
|
|
|
|
2010-02-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js
|
|
(updateEventFromDraggingCallback): invoke refreshEventsAndDisplay
|
|
instead of changeCalendarDisplay alone.
|
|
|
|
2010-02-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (onMenuCurrentView): we
|
|
hide the "eventDialog" when the menu pops up.
|
|
|
|
* UI/WebServerResources/UIxColorPicker.js (onChooseColor): the
|
|
colour window is now closed once the user has made his choice.
|
|
|
|
2010-02-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (getTarget): ensure the
|
|
returned target has been initialized with prototype extensions.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (gotoToday): set the
|
|
selected day to the today date.
|
|
|
|
* UI/WebServerResources/SchedulerUIDnD.js
|
|
(SOGoEventDragGhostController.showGhosts): ghosts now also have an
|
|
"eventInside" DIV to contain the title and draw the border. This
|
|
avoids the overflow of extra pixels added to the DIV heights for
|
|
start and end ghosts.
|
|
(SOGoEventDragController.attachToDayNode): we determine whether
|
|
the event cell are for an invitation, in which case the dragging
|
|
event will be aborted even though the user is technically the
|
|
"owner" of the represented event.
|
|
|
|
2010-02-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (attachDragControllers): we
|
|
only attach handlers to subnodes of #calendarHeader DIV.days, not
|
|
..DIV.dayLabels.
|
|
(adjustCalendarHeaderDIV): adapted for IE.
|
|
|
|
2010-02-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMonthView.m (-currentDayId): new method.
|
|
(-currentDayNumber): new method.
|
|
|
|
* UI/Scheduler/UIxCalDayTable.m (-currentHourId): new method.
|
|
(-currentAllDayId): new method.
|
|
(-currentDayId): new method.
|
|
(-currentHourLineId): removed method because hourlines are no
|
|
longer present in the template.
|
|
(-currentDayNumber): new accessor, used in javascript to recover
|
|
selection faster when the currently selected date is no longer
|
|
available.
|
|
|
|
* UI/WebServerResources/SchedulerUIDnD.js (ScrollController.init):
|
|
enhanced scrolling by setting a limit of 6 steps rather than 2.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (newEventDIV): the right
|
|
limit of event cells is setup using the "right" attribute rather
|
|
than "width", to avoid issues with cell borders.
|
|
(adjustCalendarHeaderDIV): new method that setups the proper
|
|
¨right" attribute for the "calendarHeader" element on non-IE
|
|
browsers. This reduces the amount of hacks and failed attempts to
|
|
take the day view scrollbar into account.
|
|
(changeWeekCalendarDisplayOfSelectedDay): check the class of DIV
|
|
elements to avoid using fixed references that might change over
|
|
time and cause exceptions.
|
|
(onViewEventCallback): use prototype-expanded objects to avoid
|
|
exceptions on IE.
|
|
|
|
2010-02-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUIDnD.js: adapted code for
|
|
all-day events and monthly view. Added code to avoid modifying
|
|
events when the pointer is out of the draggable zone.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: adapted code for
|
|
all-day events and monthly view.
|
|
|
|
* UI/Scheduler/UIxAppointmentActions.m (-adjustAction): we now
|
|
handle all-day events.
|
|
|
|
2010-02-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SOGoRootPage.js (initLogin): discard the
|
|
login cookie with the appName set as cookie path.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (newEvent): removed the
|
|
useless "sender" parameter and added "day", "hour" and "duration"
|
|
parameters to obtain a more generic method.
|
|
(newEventFromWidget): new method the previous "newEvent" incarnation.
|
|
(minutesToHM): new method that converts an amount of minutes into
|
|
a string value suitable for an "hm" query parameter.
|
|
(newEventFromDragging): new method suitable as a drag and drop
|
|
callback for creating events.
|
|
(updateEventFromDragging): new method suitable as a drag and drop
|
|
callback for adjusting events.
|
|
(_setupEventsDragAndDrop): new method that setups drag and drop
|
|
controllers for instances of events per calendar.
|
|
(attachDragControllers): new method that instantiate a drag and
|
|
drop controller for each day column.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m
|
|
(_fillBlocks:withEvent:withNumber:): work around the situation
|
|
where the event start would occur after its end, causing a crash.
|
|
Still emits a warning.
|
|
|
|
* UI/Scheduler/UIxCalDayTable.m (-currentHourLineId): new method
|
|
replacing "currentHourLineClass". The hour identifier now being
|
|
the value of the element id, the hourline classes are populated
|
|
from the template itself.
|
|
|
|
* UI/WebServerResources/generic.js (generateQueryString): adjusted
|
|
method to take only "string" and "number" typed values into
|
|
account when constructing URL parameters.
|
|
|
|
* UI/WebServerResources/SchedulerUIDnD.js: new js module with
|
|
classes implementing drag and drop of events.
|
|
|
|
* UI/Scheduler/UIxOccurenceDialog.m (-confirmAdjustmentMethod):
|
|
new method for displaying a dialog suitable for start and duration
|
|
adjustments.
|
|
|
|
* UI/Scheduler/UIxAppointmentActions.m (-adjustAction): new method
|
|
that takes a "days", a "start" and a "duration" relative
|
|
parameters to adjust the current event or occurrence.
|
|
|
|
* UI/Scheduler/UIxAppointmentActions.[hm]: new module implementing
|
|
a WODirectAction class for ajax calls for appointments.
|
|
|
|
2010-02-08 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m (-verticalDragHandleStyle):
|
|
new method (was missing), borrowed from UIxCalMainView.m.
|
|
(-horizontalDragHandleStyle): idem.
|
|
(contactsListContentStyle): idem.
|
|
|
|
* UI/WebServerResources/ContactsUI.js (-onAddressBookRemove):
|
|
avoid selecting the personal addressbook prior to obtaining the
|
|
user's answer.
|
|
|
|
* UI/MailerUI/UIxMailListView.m (-messageSize): improved
|
|
formatting of message size.
|
|
|
|
2010-02-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoRootPage.m (-_standardDefaultAction): add an
|
|
ending "/" to the active url to avoid a mismatch with the login
|
|
cookie path.
|
|
|
|
2010-02-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactLDIFEntry.m
|
|
(-initWithName:withLDIFEntry:inContainer:): removed "name" ivar
|
|
which had the same purpose as "nameInContainer". We also invoke
|
|
[self initWithName:inContainer:] rather than [self init].
|
|
Incidentally this fixes a leak.
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m (-imap4URL): we assign our
|
|
"imap4URL" ivar so that it can be access directly in order
|
|
methods.
|
|
|
|
* Tests/Integration/test-davacl.py
|
|
(DAVCalendarAclTest._testEventDAVAcl): test
|
|
current-user-privilege-set on tasks too.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
(+webdavAclManager): moved method from SOGoAppointmentObject, so
|
|
that tasks can benefit from it too.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
(+webdavAclManager): view-whole-component and view-date-and-time
|
|
are now independent and children of "all". "read" is declared as
|
|
equivalent to the new "SOGoDAVReadPermission". This hack avoids
|
|
problems with ACL hierarchy.
|
|
|
|
* Tests/Integration/test-davacl.py (DAVCalendarAclTest._putTask):
|
|
new method that create tasks in the test collection based on a
|
|
template.
|
|
(DAVCalendarAclTest._currentUserPrivilegeSet): new method that
|
|
request the {DAV:}current-user-privilege-set property on the
|
|
specified DAV resource. Also checks whether the request expectedly
|
|
fails or succeeds.
|
|
(DAVCalendarAclTest._comparePrivilegeSets): new helper method to
|
|
compare to arrays.
|
|
(DAVCalendarAclTest._testCollectionDAVAcl): new test helper method
|
|
for ensure that DAV permissions are conform to the SOGo
|
|
permissions on collections.
|
|
(DAVCalendarAclTest._testEventDAVAcl): same as above for events.
|
|
|
|
2010-01-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoWebAuthenticator.h: conforms to
|
|
SOGoAuthenticator protocol.
|
|
|
|
* SoObjects/SOGo/SOGoDAVAuthenticator.h: conforms to
|
|
SOGoAuthenticator protocol.
|
|
|
|
* SoObjects/SOGo/SOGoProxyAuthenticator.m
|
|
(-imapPasswordInContext:forServer:forceRenew:): added method.
|
|
Returns nil when renew is set to YES so that no real retry occurs
|
|
(convention: null password is NO password) but returns an empty
|
|
string by default.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m (-ownerInContext:): invoke
|
|
setOwner: to retain user.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (-initWithName:inContainer:):
|
|
ownerInContext: already retains "owner".
|
|
|
|
* Main/SOGoProductLoader.m (-loadProducts): attempt to free some
|
|
memory after "loadAllProducts" is invoked, which consumes a lot of
|
|
RAM.
|
|
|
|
2010-01-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoSystemDefaults.m (-CASServiceURL)
|
|
(-authenticationType): new accessors.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (+globallyUniqueObjectId): fixed to
|
|
use the result of "random" rather than the function pointer.
|
|
|
|
* SoObjects/SOGo/SOGoCache.m (-setValue:forKey:expire)
|
|
(-setValue:forKey:, -valueForKey:, -removeValueForKey:): new
|
|
accessors.
|
|
(-CASTicketFromIdentifier:, -CASSessionWithTicket:)
|
|
(-setCASSession:withTicket:forIdentifier:): new accessors enabling
|
|
the CAS session management.
|
|
(-CASPGTIdFromPGTIOU:, -setCASPGTId:forPGTIOU:): new accessors
|
|
enabling proxy ticket management (see casProxyAction below).
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m (-logoffAction): we now pass the
|
|
request application name as cookie path.
|
|
|
|
* UI/MainUI/SOGoRootPage.m (-casProxyAction): new method invoked
|
|
by the CAS server when authenticating the SOGo server during a
|
|
proxy request.
|
|
(-_casDefaultAction): new "defaultAction" method executed in CAS mode.
|
|
|
|
* UI/Common/UIxPageFrame.m (-canLogoff): return NO in CAS mode.
|
|
|
|
* SoObjects/SOGo/SOGoWebAuthenticator.m (-checkLogin:password:)
|
|
when authentication type is set to "cas", the password is the
|
|
ticket identifying the CAS session. We therefore check if the
|
|
login and the session login match.
|
|
(-imapPasswordInContext:forServer:forceRenew:): new method that
|
|
returns the "password" to use for IMAP connections. In CAS mode,
|
|
a proxy ticket is fetched with the current CAS session. In
|
|
standard mode, we still use the current user's password. The
|
|
"forceRenew:" parameter enables the fetching of a new proxy ticket
|
|
if the current one has expired.
|
|
(-setupAuthFailResponse:withReason:inContext:): we know invoke
|
|
"defaultAction" on the SOGoRootPage instance to make sure all the
|
|
cookies and CAS tickets are taken into account.
|
|
We now pass the request application name as cookie path.
|
|
|
|
* SoObjects/SOGo/SOGoCASSession.[hm]: new class module
|
|
implementing the class in charge of CAS authentication and proxy
|
|
transactions.
|
|
|
|
2010-01-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tools/SOGoToolBackup.m (-fetchUserIDs): retain allUsers to avoid
|
|
a release between the pool rotation.
|
|
|
|
2010-01-25 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js
|
|
(restoreCurrentDaySelection): fixed selection of current day in
|
|
mini-calendar.
|
|
* Updated version number to 1.2.0.
|
|
|
|
2010-01-24 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Reorganized the layout of automated tests.
|
|
|
|
2010-01-22 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxListEditor.m (-references): avoid printing the
|
|
email address between brackets if not defined.
|
|
|
|
* UI/Contacts/UIxListView.m (-itemHasEmail): new method that
|
|
returns YES if the current list item has an email address.
|
|
|
|
2010-01-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (composeNewMessage): fixed
|
|
potential js error in IE when no mailbox is selected.
|
|
|
|
* Tools/SOGoToolRestore.m (+initialize): we need to invoke
|
|
[iCalEntityObject+SOGo initializeSOGoExtensions], otherwise the
|
|
extraction of quick records will cause a crash because some global
|
|
variables won't be initialized.
|
|
|
|
2010-01-21 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m
|
|
(_fetchFields:ofComponentType:): added field ownerIsOrganizer which
|
|
identifies whether or not the calendar owner is the organizer of
|
|
the event. Also added the field erasable which identifies if the
|
|
active user can delete objects in the current calendar.
|
|
* UI/WebServerResources/SchedulerUI.js
|
|
(-_deleteCalendarEventBlocks): when the organizer deletes an
|
|
event, also delete the event in the calendars of the attendees, if
|
|
visible. Also, don't allow to delete an event if the user can't
|
|
erase objects in the calendar.
|
|
(-_deleteCalendarEventCache:): new function to update the events cache.
|
|
|
|
2010-01-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentInboxFolder.m
|
|
(-davCalendarFreeBusySet): only advertise the collections owned by
|
|
the inbox's owner.
|
|
(-davScheduleDefaultCalendarURL): new caldav accessor.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
(-toManyRelationShipKeys): unconditionnally display the inbox
|
|
collection.
|
|
(-lookupName:inContext:acquire:): accepts "inbox" even when the
|
|
active user is not the owner.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-davResourceType): unconditionnally advertise "personal" as
|
|
schedule-outbox.
|
|
|
|
* UI/WebServerResources/scriptaculous.js: modified to use
|
|
ResourcesURL as base loading URL.
|
|
|
|
* UI/WebServerResources/UIxAclEditor.js (saveAcls): removed
|
|
method.
|
|
(nodeForUser): don't add a checkbox if "canSubscribeUsers" is
|
|
false.
|
|
|
|
* UI/Common/UIxAclEditor.m (-canSubscribeUsers): new accessor that
|
|
returns whether the clientObject has the required method to
|
|
subscribe users.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-itemTimeFormatTexts): the
|
|
default time format is not taken from the domain defaults rather
|
|
than the user locale.
|
|
|
|
2010-01-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
(-hasProxyCalendarsWithWriteAccess:forUserWithLogin:)
|
|
(-proxySubscribersWithWriteAccess)
|
|
(-addProxySubscribers:withWriteAccess:)
|
|
(removeProxySubscribers:withWriteAccess:): prevent caldav-proxy
|
|
operations on the owner's subscribed resources.
|
|
|
|
* UI/Common/UIxFolderActions.m (-subscribeUsersAction): new web
|
|
method that enables resource owners to subscribe other users to
|
|
their resources from the acl editor.
|
|
|
|
* UI/Common/UIxAclEditor.m (-currentUserIsSubscribed)
|
|
(-folderID): new accessors.
|
|
|
|
* Tests/utilities.py (TestACLUtility.(un)subscribe): added utility
|
|
methods.
|
|
|
|
* Tests/test-ical.py (iCalTest.testCalendarProxy2): test the
|
|
behaviour of the ical proxy mechanisms when subscriptions and
|
|
access rights are modified.
|
|
|
|
* SoObjects/SOGo/SOGoUserSettings.m (-subscribedCalendars)
|
|
(-subscribedAddressBooks): new accessors.
|
|
(-setCalendarProxyUsers:withWriteAccess:)
|
|
(-setCalendarProxySubscriptionUsers:withWriteAccess:) removed accessors.
|
|
|
|
* SoObjects/Appointments/SOGoUser+Appointments.m
|
|
(-adjustProxySubscriptionToUser:remove:forWriteAccess:) removed
|
|
methods.
|
|
(-hasSubscribedToCalendar:): new method that returns whether a
|
|
user has subscribed to a calendar resource. Might be a duplicate
|
|
of [SOGoGCSFolder userIsSubscriber:].
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
(-adjustProxyRolesForUsers:remove:forWriteAccess:)
|
|
(-adjustProxySubscriptionsForUsers:remove:forWriteAccess:):
|
|
removed methods.
|
|
(-hasProxyCalendarsWithWriteAccess:forUserWithLogin:): new method
|
|
that returns whether the user passed as parameter should be
|
|
returned in the list of subscribers corresponding to the proper
|
|
write access.
|
|
(-proxySubscribersWithWriteAccess:) new method that returns the
|
|
list of users that have a proxy access to the current account.
|
|
(-addProxySubscribers:withWriteAccess:,-removeProxySubscribers:withWriteAccess:)
|
|
setters for the above method.
|
|
|
|
* UI/WebServerResources/ContactsUI.js (initContacts): fixed a bug
|
|
causing a null exception error on IE7 when the window is not the
|
|
main window, and is therefore missing the "uploadCancel" and
|
|
"uploadOK" elements.
|
|
|
|
2010-01-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/utilities.py: new module implementing utility classes and
|
|
methods that are used in different test cases.
|
|
|
|
* Main/sogod.m (main): set the "GNUSTEP_STRING_ENCODING"
|
|
environment variable to NSUTF8StringEncoding to properly decode
|
|
the user defaults strings in UTF8.
|
|
|
|
2010-01-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserSettings.m
|
|
(-setCalendarProxyUsers:withWriteAccess:)
|
|
(calendarProxyUsersWithWriteAccess:)
|
|
(setCalendarProxySubscriptionUsers:withWriteAccess:)
|
|
(calendarProxySubscriptionUsersWithWriteAccess:): "Read" and
|
|
"Write" were inverted.
|
|
|
|
2010-01-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(+webdavAclManager): fixed "read-free-busy" namespace declaration.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (-davPrincipalCollectionSet): when
|
|
used with iCal 4, we provide a "DAV" header with the proper
|
|
compliance classes, since iCal 4 doesn't want to use OPTIONS.
|
|
|
|
* Tests/test-webdav.py (WebDAVTest.testExpandProperty): new method
|
|
to test the new "expand-propery" code in SOGo.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m (-davExpandProperty): new method to
|
|
handle the "expand-property" REPORT.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarProxy.m:
|
|
adapted module to new code for handling chosen calendars
|
|
delegation.
|
|
|
|
* Main/SOGo+DAV.[hm): new category module for handling dav methods
|
|
pertaining to /SOGo/dav/ as the principal-collection-set. Now
|
|
implements 3 methods that were previously found in SOGoUserFolder
|
|
categories.
|
|
|
|
* SoObjects/Appointments/SOGoUser+Appointments.[hm]: new category
|
|
module.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentInboxFolder.[hm]: new
|
|
class module that implements the basic "schedule-inbox"
|
|
collection mechanisms, enough to let iCal work properly. To be
|
|
completed for full invitation handling.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (-lookupObjectAtDAVUrl:): new method
|
|
that enables DAV reports to lookup objects based on the urls
|
|
passed in their parameters.
|
|
(-davURLAsString): simplified method by making it recurse from its
|
|
top parent.
|
|
(-setRoles:forUsers:): treat a list of users at once.
|
|
(-davPrincipalMatch): removed method since it really pertains to
|
|
/SOGo/dav, which the correct principal-collection-set.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m (-initSubcribedSubFolders):
|
|
enable the super user to see any user's subscriptions. This
|
|
enables a new set of tests to work properly in super user mode.
|
|
(-appendSubscribedSources): consequently to the above, the
|
|
references must be based on the owner user rather than the current
|
|
user.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m: removed commented out methods.
|
|
|
|
* SoObjects/SOGo/SOGoUserSettings.m (-setProxiedCalendars)
|
|
(-setCalendarProxyUsers:withWriteAccess:):
|
|
(-setCalendarProxySubscriptionUsers:withWriteAccess:): new method
|
|
for handling caldav-proxy related settings.
|
|
|
|
* SoObjects/SOGo/SOGoWebDAVAclManager.m (_registerChild:of:): only
|
|
emits a warning of the specified parent cannot be found, instead
|
|
of crashing.
|
|
|
|
* SoObjects/SOGo/WOResponse+SOGo.m (-prepareDAVResponse): new
|
|
method with common code for DAV responses generated from SOGo.
|
|
|
|
* Tests/webdavlib.py (WebDAVPROPPATCH): new class implementing the
|
|
"PROPPATCH" method.
|
|
(WebDAVExpandProperty): new class implementing the
|
|
"expand-property" REPORT.
|
|
(_WD_XMLTreeElement.appendSubtree): new method that enables the
|
|
addition of a tree of objects from a dictionary passed as
|
|
parameter.
|
|
|
|
* Tests/test-ical.py: new test script for tesing iCal-related
|
|
behaviours.
|
|
|
|
* Tools/SOGoToolBackup.m (-extractUserPreferences:intoRecord:):
|
|
fixed compilation warning.
|
|
|
|
2010-01-13 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js (-fixSearchFieldPosition):
|
|
replaced this function by the equivalent CSS definition.
|
|
(-initContacts): initialized import buttons even for "popup" mode.
|
|
|
|
2010-01-12 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m
|
|
We retain the autoreleased strings static variable
|
|
to avoir random issues with the -fromCSSIdentifier method
|
|
|
|
* Updated the Moz guide for the updateLink part of
|
|
the updates.php script.
|
|
|
|
2010-01-11 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFolderActions.m (-importVcardData:):
|
|
We now support multiple vCards in the same file during
|
|
the import process
|
|
|
|
2010-01-08 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.{h,m} - bindFields is now
|
|
an array instead of a list of strings separated by commas.
|
|
Updated the Installation & Configuration Guide to reflect
|
|
this change.
|
|
|
|
2010-01-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalDateLabel.m: dropped useless module.
|
|
|
|
* UnitTests/SOGoTestRunner.m: separated class "SOGoTestRunner"
|
|
from sogo-tests.m. Moved reporting and logging methods from
|
|
SOGoTest into SOGoTestRunner.m
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m (-_setupCSSEscaping): we
|
|
must initialize cssEscapingCount before using it. Also, fixed a
|
|
typo preventing the character buffer from being initialized
|
|
completely.
|
|
|
|
2010-01-07 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m (-asCSSIdentifier): replaced
|
|
%lc by %C.
|
|
(-fromCSSIdentifier): idem.
|
|
|
|
2010-01-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m (-fromCSSIdentifier): speed
|
|
things up a little bit by checking whether the current character
|
|
is '_', possibly announcing an escaped sequence, anything else
|
|
being treated regularly.
|
|
|
|
* SoObjects/SOGo/NSDictionary+BSJSONAdditions.m
|
|
(-jsonStringFromString:): convert "\" to "\\" rather than "\n".
|
|
|
|
* SoObjects/SOGo/NSScanner+BSJSONAdditions.m (-scanJSONString): we
|
|
now accept lowercase characters in characters coded in UCN.
|
|
|
|
* UnitTests/TestBSJSONAdditions.m: new unit test for
|
|
BSJSONAdditions.
|
|
|
|
* UnitTests/SOGoTest.m: base class for our unit test testcases.
|
|
Similar to JUnit and family.
|
|
|
|
* UnitTests/sogo-tests.m: main executable for our Objective-C test
|
|
framework.
|
|
|
|
2010-01-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (onViewEventCallback):
|
|
simplified lookup of "P" elements by groupings them in an array.
|
|
This also fixes a bug where all the returned information would not
|
|
be displayed. Also, we make use of the "calendar" field, which was
|
|
not used before.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m (-newAction): new events
|
|
have an ".ics" extension instead of ".vcf".
|
|
|
|
* UI/Scheduler/UIxCalMainView.m (-_setupContext): only invoked once
|
|
per instance.
|
|
(-checkDefaultModulePreference): synchronize the user defaults
|
|
after the login module was modified.
|
|
|
|
* UI/Scheduler/UIxDatePicker.m
|
|
(-takeValuesFromRequest:inContext:): we set the new date to the
|
|
user's timezone and recompute the proper offset compare to the
|
|
system timezone, which may differ from it.
|
|
|
|
* SoObjects/Appointments/iCalEntityObject+SOGo.m
|
|
(-quickRecordDateAsNumber:withOffset:forAllDay:): we only need to
|
|
compute the delta between the user's timezone and UTC rather than
|
|
the system timezone.
|
|
|
|
* SoObjects/Mailer/SOGoMailNamespace.m
|
|
(-lookupName:inContext:acquire:): overriden method because the
|
|
namespace "folders" cannot be created and cannot contain messages.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m
|
|
(-otherUsersFolderNamespaces): new method that returns all the
|
|
namespace "folders" in the "other user" namespace. Replaces the
|
|
old "otherUsersFolderName" method.
|
|
(-sharedFolderNamespaces): same as above for the "shared"
|
|
namespace.
|
|
|
|
* SoObjects/SOGo/SOGoDomainDefaults.m (-otherUsersFolderName)
|
|
(-sharedFolderName): removed obsolete methods.
|
|
|
|
2010-01-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (Mailbox): "this.name" is now
|
|
an escaped form of the mailbox name, that can thus be used to
|
|
generate folder URLs.
|
|
(Mailbox.findMailboxByName): escape the name passed as parameter
|
|
prior to doing a search.
|
|
|
|
* UI/WebServerResources/JavascriptAPIExtensions.js
|
|
(asCSSIdentifier): use two arrays rather than an "Object" in order
|
|
to improve performance.
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m (-fromCSSIdentifier): new
|
|
method that converts an escaped string back to a normal one.
|
|
(-asCSSIdentifier): no longer use "replaceString:withString:" in
|
|
order to avoid parsing the string multiple times. This probably
|
|
enhance performances a bit and also avoid double-encoding
|
|
problems.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m (-resultsOfSelector): new
|
|
method that applies a selector on the contained objects and
|
|
collect the result objects in a new array.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
(-lookupName:inContext:acquire:): we must check and create the
|
|
current folder even if the looked up key is a subfolder or a web
|
|
method.
|
|
|
|
* SOPE/sope-patchset-r1664.diff: new patchset replacing
|
|
-r1660.diff.
|
|
Added code to handle IMAP namespaces.
|
|
|
|
2010-01-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailForward.m (-): we use
|
|
-[SOGoUserDefaults mailComposeMessageType] instead of querying the
|
|
defaults key, so that the fallbacking mechanism between the
|
|
different preference layers can be used.
|
|
|
|
2009-12-26 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoMailer.m (_smtpSendData:
|
|
toRecipients:sender:): We now honor the 'port'
|
|
part in the SMTP server address. So one can now
|
|
specify hostname:port (like localhost:587) as
|
|
a value of SOGoSMTPServer. This fixes
|
|
http://www.sogo.nu/bugs/view.php?id=201
|
|
|
|
* SoObjects/Mailer/SOGoMailForward.m (init):
|
|
Now consider SOGoMailComposeMessageType instead
|
|
of ComposeMessagesType when checking if we are
|
|
using HTML mails composition mode. This fixes
|
|
http://www.sogo.nu/bugs/view.php?id=280
|
|
|
|
2009-12-25 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Tools/SOGoToolBackup.m (-fetchUserIDs:):
|
|
We now use a local autorelease pool and flush
|
|
it after every 100 requests to the LDAP (or
|
|
other source type) server.
|
|
|
|
2009-12-23 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalView.m
|
|
Don't call -configureFormatters in -init as it'll
|
|
invoke labelForKey prior to setPage: - resulting
|
|
in the wrong resources manager being selected.
|
|
This fixes: http://www.sogo.nu/bugs/view.php?id=286
|
|
|
|
* UI/Templates/ContactsUI/UIxContactFoldersView.wox
|
|
UI/Templates/SchedulerUI/UIxCalMainView.wox
|
|
Modified the uploadForm in those two templates (to add
|
|
const:href="") in order to avoid SOPE sessions being
|
|
created upon access to the calendar or address book module.
|
|
This fixes: http://www.sogo.nu/bugs/view.php?id=208
|
|
|
|
* SoObjects/SOGo/NSDictionary+Utilities.m (-userRecordAsLDIFEntry)
|
|
We skip the "isGroup" attribute from the list of attributes
|
|
to include during LDIF generation. This fixes:
|
|
http://www.sogo.nu/bugs/view.php?id=221
|
|
|
|
* UI/WebServerResources/SchedulerUI.js - we also invoke
|
|
refreshTasks() in onCalendarReload(). This fixes:
|
|
http://www.sogo.nu/bugs/view.php?id=250
|
|
|
|
2009-12-22 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Removed all the Kolab-related stuff (more specifically,
|
|
associated mail part viewers)
|
|
|
|
* Removed all references to "anais" stuff.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m (-deleteUIDs:inContext:):
|
|
we check if we aren't in the Trash folder already before try to
|
|
copy over deleted messages.
|
|
|
|
* We now offer a way to delete events from the context menu
|
|
in all calendar views.
|
|
|
|
2009-12-22 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m (-viewAction): added
|
|
calendar name in returned dictionary.
|
|
|
|
2009-12-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/test-webdav.py (WebDAVTest.testPrincipalCollectionSet2):
|
|
fixed test to use the proper collection URL as expected value,
|
|
rather that the freebusy.ifb resource URL.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(_appendComponentProperties:matchingFilters:toResponse:)
|
|
(_appendComponentProperties:matchingURLs:toResponse:): ensure that
|
|
baseURL ends with "/".
|
|
|
|
2009-12-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m (-fetchContentObjectNames):
|
|
fixed a potential crash by removing the "static" attribute of the
|
|
"cos" local variable.
|
|
|
|
2009-12-19 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoUserFolder+Appointments.m
|
|
(_davPersonalCalendarURL): We make sure we handle the
|
|
presence or not of the trailing slash when we call
|
|
-davURLAsString on the parent object. See
|
|
http://www.sogo.nu/bugs/view.php?id=74 for
|
|
all details.
|
|
|
|
2009-12-14 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
Dropped the use of NGMimeType and we now use
|
|
the same string decoding method as used
|
|
for text/plain parts.
|
|
|
|
2009-12-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tools/SOGoToolRemoveDoubles.m (-processFolder:ofUser:withFoM:):
|
|
same as below.
|
|
|
|
* Tools/SOGoToolCheckDoubles.m (-processIndexResults:withFoM:):
|
|
same as below.
|
|
|
|
* SoObjects/Mailer/NSString+Mail.m
|
|
(-stringByConvertingCRLNToHTML): invokde [NSString UTF8String]
|
|
rather than cStringUsingEncoding: NSUTF8StringEncoding, since the
|
|
latter provokes a crash that the former doesn't.
|
|
|
|
* UI/Common/UIxPageFrame.m (_stringsForFramework:): use the system
|
|
default when the active user does not resolve.
|
|
|
|
2009-12-11 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added a patch from Albrecht Gebhardt <albrecht.gebhardt@algepop.net>
|
|
that offers a "Reload" button in the Web contacts management
|
|
module.
|
|
|
|
2009-12-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-setUserShortDateFormat:):
|
|
fixed handling of the value "default", which actually should
|
|
unset the value in the user defaults.
|
|
|
|
2009-12-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m (-toManyRelationShipKeys)
|
|
(-lookupName:inContext:acquire:): fixed typo preventing access to
|
|
Contacts module.
|
|
|
|
2009-12-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/WORequest+SOGo.m (-handledByDefaultHandler):
|
|
return "not isSoWebDAVRequest".
|
|
|
|
* Main/SOGo.m (-lookupName:inContext:acquire:): ensure the web
|
|
access is enabled or the request is a DAV request before
|
|
proceeding.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m (-toManyRelationShipKeys)
|
|
(-fetchContentObjectNames): ensure the proper dav access is
|
|
enabled in order before listing the related objects.
|
|
|
|
* SoObjects/SOGo/SOGoSystemDefaults.m (-isWebAccessEnabled)
|
|
(-isCalendarDAVAccessEnabled, isAddressBookDAVAccessEnabled): new
|
|
self-explanatory accessors.
|
|
|
|
* Main/SOGo.m (-davURLAsString): we ensure that the url ends with
|
|
"/" since the /SOGo object is a collection and the caller may rely
|
|
on this.
|
|
|
|
2009-12-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-defaultAction):
|
|
setVacationOptions: and setForwardOptions: are now set from here.
|
|
|
|
* SoObjects/SOGo/SOGoDomainDefaults.m (-forwardEnabled)
|
|
(-vacationEnabled): we must query "SOGoForwardEnabled" and
|
|
"SOGoVacationEnabled", respectively.
|
|
|
|
2009-12-03 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/iCalEntityObject+Utilities.m (-findParticipant:):
|
|
we now search in all attendees, including attendees with role
|
|
NON-PARTICIPANT.
|
|
|
|
2009-12-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m (+initialize): we need to
|
|
initialize the profile class from the constructor as this method
|
|
may be invoked before all modules are loaded.
|
|
|
|
* SoObjects/SOGo/SOGoSource.h: added new "SOGoDNSource" protocol
|
|
as a child protocol of "SOGoSource".
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m: added new
|
|
"SOGoUserManagerRegistry" class that handles the mapping between
|
|
source types and their corresponding classes.
|
|
(-[SOGoUserManager registryClass]): new method that returns the
|
|
class name of the registry class, which can be overriden to handle
|
|
other types.
|
|
|
|
2009-12-01 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Reworked the calendar's categories (introduced
|
|
the "Meeting" category).
|
|
|
|
2009-12-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-categoryList): the returned
|
|
list is now sorted, except if the category of the event was not
|
|
always present in the list (kept on top).
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-categoryList): simplified
|
|
method by returning only the array of defined categories from the
|
|
user defaults or those defined in the Localizable.strings and sort
|
|
the resulting array.
|
|
(-categoryColor): new accessor that return the color associated
|
|
with the value in the "category" ivar, if not exists, we return
|
|
the default from SOGoCalendarDefaultCategoryColor.
|
|
(-setCategoriesValue): simplified method since we now receive a
|
|
dictionary. The dictionary is now transferred as a JSON object
|
|
rather than a property list.
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m
|
|
(-setCalendarCategoriesColors:, -calendarCategoriesColors):
|
|
SOGoCalendarCategoriesColors is now a dictionary. The values are
|
|
migrated in _migrateCalendarCategories.
|
|
|
|
* SoObjects/SOGo/SOGoDomainDefaults.m
|
|
(-calendarDefaultCategoryColor): new accessor for the domain
|
|
default SOGoCalendarDefaultCategoryColor.
|
|
|
|
* SoObjects/SOGo/SOGoDefaultsSource.m (-boolForKey:)
|
|
(-floatForKey:, -integerForKey:, -dataForKey:, -stringForKey:)
|
|
(-dictionaryForKey:, -arrayForKey:, -stringArrayForKey:): added
|
|
type checking and warnings.
|
|
|
|
2009-11-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoDefaultsSource.m (-setBool:forKey:): we
|
|
encode boolean values as integers to avoid confusing the boolean
|
|
objective-c parsers when reading values coming back from the JS
|
|
code.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (initCalendars): the
|
|
"ShowCompletedTasks" parameter is in the UserSettings dictionary.
|
|
|
|
* SoObjects/SOGo/SOGoDefaultsSource.m
|
|
(-migrateOldDefaultsWithDictionary:): when migrating between two
|
|
existing keys, the new value is automatically overwritten with the
|
|
old one, since it causes a problem with the values inherited from
|
|
SOGoDefaults.plist.
|
|
|
|
2009-11-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m
|
|
(-authenticationSourceIDsInDomain:): now takes a domain argument.
|
|
Contrarily to contact sources, specifying a domain will cause the
|
|
generic sources to be ignored.
|
|
(-fetchUsersMatching:inDomain:): now takes a domain argument.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m (-initFromUDSource:inDomain):
|
|
removed handing of "domain attribute", since the underlying
|
|
mechanism causes complex code for an unrealistic case.
|
|
|
|
2009-11-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserSettings.m: new class module designed to
|
|
be the counterpart to SOGoUserDefaults.m.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-): "hours" is now a static
|
|
variable, rather than an ivar.
|
|
|
|
* UI/MainUI/SOGoRootPage.m (+initialize): the supportedLanguages
|
|
are not available from the SOGoSystemDefaults
|
|
(SOGoDefaults.plist).
|
|
|
|
* UI/MailerUI/UIxMailView.m (+initialize): we never used
|
|
"SOGoDontUseETagsForMailViewer".
|
|
|
|
* UI/MailerUI/UIxMailEditor.m (+initialize): we never used
|
|
"SOGoShowInternetMarker" and "SOGoInternetMailHeaders".
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m (+initialize):
|
|
"TextPlainType" was never used.
|
|
|
|
* SoObjects/SOGo/SOGoSystemDefaults.m: new class module handling
|
|
the getting of system (or "application") defaults, as well as
|
|
default values for users and domains.
|
|
|
|
* SoObjects/SOGo/SOGoDomainDefaults.m: new class module handling
|
|
the getting of domain defaults, as well as default values for for
|
|
users belonging to the corresponding domain.
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m: new class module handling
|
|
the setting and getting of user defaults.
|
|
|
|
* SoObjects/SOGo/SOGoLDAPDefaults.h: new protocol module for the
|
|
handling of "recursive" ldap defaults.
|
|
|
|
* SoObjects/SOGo/SOGoDefaultsSource.m: new module class acting as
|
|
a proxy between NSDictionary, NSUserDefaults and SOGoUserProfile,
|
|
enabling the possibility of hierarchy and fallbacks.
|
|
|
|
* SoObjects/SOGo/SOGoUserProfile.m: new name for SOGoUserDefaults.
|
|
(-arrayForKey:, -stringForKey:, -dataForKey:, -boolForKey:)
|
|
(-floatForKey:): removed obsolete methods (as well as their setter
|
|
counterparts).
|
|
|
|
* SoObjects/SOGo/SOGoSQLUserProfile.m: new class module for
|
|
handling the SQL backend of the SOGoUserProfile.
|
|
|
|
* UI/SOGoUI/WOContext+UIx.m: removed obsolete class.
|
|
|
|
2009-11-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m (-fetchJSONProfileFromDB): the
|
|
isNew flag depends on the presence of the row in the database
|
|
rather than on the existence of the value.
|
|
|
|
2009-11-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m (-synchronize): avoid fetching
|
|
the values from the database/the cache when they are successfully
|
|
stored.
|
|
(-fetchJSONProfileFromDB): sql-quoted quote characters do not
|
|
apply here. Therefore we no longer need to unescape them.
|
|
|
|
* SoObjects/SOGo/SOGoCache.m (_cacheValues:ofType:forLogin:): we
|
|
also fill the local cache with the new value to avoid ignoring it
|
|
next time the cache is invoked.
|
|
|
|
* SoObjects/SOGo/NSDictionary+BSJSONAdditions.m
|
|
(+dictionaryWithJSONString:): method moved from NSDictionary into
|
|
NSMutableDictionary for consistency.
|
|
|
|
2009-11-26 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m
|
|
(_fetchFileAttachmentKey:intoArray:withPath:): we
|
|
try to also use basic types (application/, audio/, ...)
|
|
when forwarding a mail with attachments and no
|
|
Content-Disposition header (or filename) was found. This
|
|
avoid losing attachments when forwarding mails.
|
|
* UI/PreferencesUI/UIxPreferences.m
|
|
We retain/release properly the vacationOptions and
|
|
forwardOptions ivars.
|
|
|
|
2009-11-24 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Mailer/NSData+Mail.m (-decodedHeader): renamed from
|
|
decodedSubject. The decoding algorithm is now recursive.
|
|
|
|
* SoObjects/Mailer/NSString+Mail.m (-decodedHeader): renamed from
|
|
decodedSubject. The string is now decoded by parts.
|
|
|
|
2009-11-24 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGroup.m
|
|
Initialize the local var entry to nil to avoid
|
|
a crash if only one SQL source was specified
|
|
|
|
* SoObjects/SOGo/SQLSource.m
|
|
Properly invoke cancelFetch on cusors that can return
|
|
more than one value (prior to releasing the channel)
|
|
|
|
2009-11-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tools/sogo-tool.m (main): we check "SOGoUserSources" rather than
|
|
the obsolete "SOGoLDAPSources".
|
|
|
|
2009-11-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoDAVAuthenticator.m (-init): removed method,
|
|
removed the "SOGoAuthenticationMethod" user default, which was
|
|
never used.
|
|
|
|
* SoObjects/SOGo/SOGoWebAuthenticator.m (-init): removed method,
|
|
removed the "SOGoAuthenticationMethod" user default, which was
|
|
never used.
|
|
|
|
* SoObjects/SOGo/SOGoProxyAuthenticator.m (-init): removed method,
|
|
removed the "SOGoAuthenticationMethod" user default, which was
|
|
never used.
|
|
|
|
* Main/sogod.m (prepareUserDefaults): replaces
|
|
"convertOldSOGoDomain", automatically set WOMessageUseUTF8,
|
|
WOParsersUseUTF8 and NGUseUTF8AsURLEncoding to YES in the user
|
|
defaults.
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m (_sqlJsonRepresentation:): the
|
|
escaping of "\\" was done in the wrong direction.
|
|
(-storeJSONProfileInDB:): we commit the transaction to avoid a
|
|
lock on the profile table.
|
|
|
|
2009-11-19 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailReply.m (-messageBody): don't try to
|
|
remove the bottom signature when replying to an email, in order to
|
|
avoid situations where a previous message follows the last signature.
|
|
|
|
2009-11-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m (-fetchJSONProfileFromDB):
|
|
extracted the conversion of property list values to JSON values
|
|
into a new separate method (-_convertPListToJSON:), that will be
|
|
invoked by -jsonRepresentation.
|
|
|
|
* SoObjects/SOGo/SQLSource.m (-checkLogin:andPassword:):
|
|
(_lookupContactEntry:considerEmail:, -allEntryIDS)
|
|
(_lookupContactEntry:consideringEmail:, fetchContactsMatching:):
|
|
check whether the channel is valid before using it or report an
|
|
error otherwise. Also, we release the channel after our
|
|
operations, to avoid creating hundreds of biglions of useless
|
|
and stalled connections.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-userDefaults, -userSettings): the
|
|
cache handling has now been put in the SOGoUserDefaults class.
|
|
(-primaryUserDefaults, -primaryUserSettings): removed useless
|
|
methods.
|
|
(-userDefaultsClassName): added accessor to allow different
|
|
classes.
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m (-primaryFetchProfile): split
|
|
method to separate the cache data and the db data. We know invoke
|
|
the "jsonRepresentation" method, which is the real data accessor
|
|
now.
|
|
(-primaryStoreProfile): user profile data is now serialized as a
|
|
JSON string in order to avoid constant conversions between the
|
|
plist and the json formats, from and to the cache.
|
|
(-jsonRepresentation): we now handle the cache data from here, as
|
|
it made more sense and reduces the code size in SOGoUser.m.
|
|
(-fetchProfile): now a void method.
|
|
(-storeJSONProfileInDB:): new method that handles the DB portion
|
|
of primaryStoreProfile, providing a corollary to
|
|
fetchJSONProfileFromDB.
|
|
|
|
* SoObjects/SOGo/SOGoCache.m (+initialize): the memcached host can
|
|
now be configured using the "SOGoMemCachedHost" user default. The
|
|
method now contains initialization code for global vars that used
|
|
to be in -init instead.
|
|
(-userSettingsForLogin:,-userDefaultsForLogin:,-userAttributesForLogin:):
|
|
refactoring: those accessors now only return an NSString
|
|
associated with their respective key. There is no longer any
|
|
dictionary de-/serialization occuring in SOGoCache.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m (-subFolders): we raise the
|
|
exceptions we get only if the current request is a PROPFIND. This
|
|
avoids a useless restart of SOGo when the database is down during
|
|
the execution of other requests.
|
|
|
|
* Tools/sogo-tool.m (main): we now check that the SOGo
|
|
configuration is valid and consequently that the tool runs under
|
|
the same account as SOGo.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-_handleAttendeeData): make
|
|
direct use of the JSON constructor of NSDictionary rather than
|
|
instantiating an NSScanner. This simplifies the code.
|
|
|
|
2009-11-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m (-isJSONString): new utility
|
|
method that determines whether the current string is a json
|
|
document.
|
|
|
|
* SoObjects/SOGo/NSDictionary+BSJSONAdditions.m
|
|
(+dictionaryWithJSONString:): this constructor now explicitly
|
|
returns an NSMutableDictionary to avoid messing with mutable
|
|
copies and useless allocation/deallocation in the callers.
|
|
|
|
* Main/SOGo.m (+initialize): removed the "debugObjectAllocation" global
|
|
variable since "debugLeaks" has the same meaning. Instantiate a
|
|
"SOGoStartupLogger" object in order to avoid using NSLog when the
|
|
parent process is starting, in order to work-around the caching of
|
|
the pid in NSLog.
|
|
|
|
2009-11-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoCache.m: "cache", "users" and "localCache"
|
|
are now regular ivars. "sharedCache" is now located within the
|
|
"sharedCache" constructor. "killCache" is now an instance method.
|
|
|
|
2009-11-10 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-_handleAttendeesEdition):
|
|
avoid scanning JSON when there's no attendee.
|
|
|
|
2009-11-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/SOGoUI/UIxComponent.m (-applicationPath): new method that
|
|
really returns the name of the WO application.
|
|
(-modulePath): renamed the old applicationPath method to be more
|
|
accurate about its purpose.
|
|
|
|
2009-11-07 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoCache.m - if we get a JSON
|
|
error when trying to convert our string coming
|
|
from memcached, we don't store it to the cache
|
|
and we log the error.
|
|
* Modified the code so we always use lower-case
|
|
headers prior to sending mails. This is to avoid
|
|
an uber-lameness in SOPE. Also added warnings
|
|
around that code so we can get rid of SOPE-mime,
|
|
we'll do things cleanly.
|
|
|
|
2009-11-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (_setupEvents): we check
|
|
whether "categoriesValue" resolves properly before assigning it
|
|
a new value.
|
|
|
|
2009-11-05 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* Scripts/updates.php: Minor changes to support when PHP short_open_tag
|
|
parameter is set to Off.
|
|
|
|
* UI/WebServerResources/ContactsUI.js (getMenus): activated the
|
|
list creation option of the addresbooks contextual menu.
|
|
|
|
* UI/WebServerResources/SOGoRootPage.js (onFieldKeyDown): don't
|
|
submit the form if no password is typed.
|
|
|
|
2009-11-04 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* Major refresh of CSS stylesheets.
|
|
* UI/WebServerResources/SOGoAutoCompletion.js
|
|
(performSearchCallback): fixed position of popup menu when used in
|
|
the contacts list editor.
|
|
|
|
2009-11-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSDictionary+Utilities.m
|
|
(+dictionaryFromStringsFile:): instantiate autoreleased objects.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m (-jsonRepresentation):
|
|
instantiate autoreleased objects.
|
|
|
|
2009-10-30 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: the events list is now
|
|
refreshed in the AJAX callback. This avoid seeing an empty table
|
|
while refreshing the events list.
|
|
|
|
* UI/WebServerResources/UIxPreferences.js
|
|
(addDefaultEmailAddresses): fixed issue in vacation tab when
|
|
adding the defaults values to a empty list.
|
|
|
|
* UI/WebServerResources/UIxComponentEditor.js
|
|
(onComponentEditorClose): new method that closes definition popup
|
|
windows associated to the event (attendees/recurrence/reminder).
|
|
|
|
2009-10-28 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactView.m (-primaryEmail, -secondaryEmail):
|
|
remove double-quotes from FN attribute to avoid JavaScript errors.
|
|
|
|
* UI/WebServerResources/UIxMailToSelection.js: removed duplicated
|
|
functionality in addressFieldLostFocus. Removed the ability to set
|
|
an auto-completion text field to read-only.
|
|
|
|
* UI/WebServerResources/UIxListEditor.js: refactoring.
|
|
|
|
* UI/WebServerResources/ContactsUI.js: Improved text of import
|
|
cards dialog.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: Improved text of import
|
|
events dialog.
|
|
|
|
* UI/Contacts/UIxListEditor.m (-setReferencesValue:): rewrote
|
|
method since only the contacts IDs are received from the web
|
|
interface. The names and emails are retrieve from the addressbook.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m
|
|
(-lookupContactWithName): new method that returns a dictionary
|
|
with the attributes of a contact.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
(-changeParticipationStatus:withDelegate:forRecurrenceId:): added
|
|
exception when delegated user is the organizer.
|
|
|
|
2009-10-28 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m
|
|
(_setupChosenEventAndEventObject:) - we now
|
|
correctly save the event contained in the mail
|
|
when clicking on Accept/Decline/Delegate into
|
|
the user's calendar if it's not in there already.
|
|
|
|
2009-10-27 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Common/UIxPageFrame.m (userEmail): Added to display the user's email
|
|
address in the linkBanner.
|
|
* UI/Contacts/UIxListView.m
|
|
(itemHref, itemName, itemEmail): Added to allow clickable email addresses in
|
|
UIxListView.
|
|
(itemText): Removed, no longer needed.
|
|
|
|
2009-10-27 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (create)
|
|
We send the advisory to the owner of the newly
|
|
created collection, not the currently logged on
|
|
user (which might be different). The sender will
|
|
nevertheless be the currently logged on user, as
|
|
it's this particular user that triggered the
|
|
creation of the collection.
|
|
* Documentation/SOGo Installation Guide.odt
|
|
Updated to set WOUseRelativeURLs to YES instead
|
|
of NO by default.
|
|
* We now correctly lowercase the SOGoLDAPContactInfoAttribute
|
|
attribute everywhere.
|
|
|
|
2009-10-26 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js
|
|
(onContactDeleteEventCallback): fixed retrieval of card name when
|
|
deletion is not possible (caused by a possible bug in prototype.js).
|
|
(setEventsOnAddressBook): don't observe the double-click event on
|
|
addressbooks not owned by the user.
|
|
|
|
2009-10-25 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Fixed many compilation warnings
|
|
* Updated the Mobile Device Configuration Guide
|
|
in order to document the iPhone OS 3.x configuration
|
|
settings (iPhone / iPod)
|
|
* UI/Scheduler/UIxComponentEditor.m (_handleCustomRRule:)
|
|
Improved the robustness of the code.
|
|
|
|
2009-10-24 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated the Czech translation - patch from
|
|
Milos Wimmer <wimmer@zcu.cz>
|
|
* Added a French translation of the new Vacation
|
|
and Forward preference tabs.
|
|
* Updated the French translation in the
|
|
Administration module.
|
|
* Updated the French translation of the Calendar
|
|
properties window.
|
|
* Updated the French translation with regard to
|
|
event delegation support.
|
|
* UI/Scheduler/UIxCalListingActions.m
|
|
We now handle BOOL as real BOOL when storing them
|
|
in the prefs instead of going with NSNumber. No
|
|
need to do that and our JSON generator/parser
|
|
will handle this properly. This avoid a dump
|
|
crash when toying with the "Show completed tasks"
|
|
toggle in the calendar module.
|
|
|
|
2009-10-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactSourceFolder.m
|
|
(-initWithName:andDisplayName:inContainer:): use the source name
|
|
when the displayname is nil.
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m (_registerSource:): added
|
|
sanity checks and warnings to the user.
|
|
|
|
2009-10-23 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m (-subFoldersFromFolder:)
|
|
Addded a check to NOT return web calendars in this query.
|
|
|
|
2009-10-23 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m (-formattedMailtoString:): fixed
|
|
the case when dealing with a NGVCardReference (from a list) with
|
|
no FN attribute and no N attribute.
|
|
(-composeAction): fixed the case when dealing with a contact with
|
|
no email address.
|
|
(-composeAction): fixed the case when dealing with a contact from
|
|
an LDAP source.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-calendarList): added proper
|
|
verification of deletion rights on the current calendar and
|
|
creation rights on other calendars.
|
|
|
|
2009-10-22 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserManager.m
|
|
Modified so that we throw a warning when there are
|
|
no authentication sources defined.
|
|
|
|
* Updated all guides in preparation for the release.
|
|
|
|
2009-10-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-davCalendarTimeZone): new DAV accessor that returns the
|
|
user's timezone.
|
|
|
|
* SoObjects/Appointments/SOGoUserFolder+Appointments.m
|
|
(-davCalendarScheduleInboxURL, davCalendarScheduleOutboxURL):
|
|
return nil if used with iCal 4.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m (-davResourceType): removed
|
|
useless method.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (-davURLAsString): new method that
|
|
returns the resource url as a string, by taking WOUseRelativeURLs
|
|
into account.
|
|
|
|
* SoObjects/SOGo/WORequest+SOGo.m (-isICal4): new method that
|
|
determines whether to work-around iCal4 calamities.
|
|
|
|
2009-10-21 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m
|
|
(-_loadScheduleLimitsForUsers:): we must not consider users not
|
|
part of the system (no uid).
|
|
|
|
* UI/WebServerResources/UIxAttendeesEditor.js
|
|
(redisplayFreeBusyZone): removed logic around start/end
|
|
minutes. It was breaking the display of an event spanning multiple days.
|
|
|
|
2009-10-20 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added missing timezones
|
|
* SoObjects/SOGo/SOGoParentFolder.m:
|
|
-davCreateCollection:inContext:
|
|
We check, prior to creating the resource, if
|
|
where we create it is a supported target.
|
|
* SOPE/NGCards/iCalTimeZonePeriod.m
|
|
-_occurenceForDate:byRRule:
|
|
We correctly compute the number of shifting days
|
|
during DST changes.
|
|
|
|
2009-10-19 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSCalendarDate+SOGo.m: lower the values of
|
|
secondsOfDistantFuture and secondsOfDistantPast to solve a problem
|
|
with 64bit environment.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m
|
|
(-startDateIsEqualToEndDate): new method that returns whether or
|
|
not the start date is identical to the end date (used for all-day events).
|
|
|
|
2009-10-19 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
(saveComponent:) - in case of an update, we check
|
|
if no organizer was specified when handling
|
|
attendees addition to the event.
|
|
|
|
2009-10-17 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxListEditor.js (endEditable):
|
|
We use "uname" instead of "name" when reading back the
|
|
values from the autocompletion code.
|
|
|
|
2009-10-16 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (eventsListCallback): don't
|
|
set the hour attribute for all-day events.
|
|
(changeCalendarDisplay): enable auto-scroll when scrolling
|
|
to an event (!).
|
|
(refreshCalendarEventsCallback): idem.
|
|
(scrollDayView): don't scroll when selecting an all-day event.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-_loadRRules): the repeat
|
|
rule interval can be set unconditionally for weekly rules. When an
|
|
end date or repeat count is defined, the rule must be considered
|
|
"custom" in the web interface.
|
|
(_handleCustomRRule:): fixed a bug that would set a day mask even
|
|
when it was not defined. The day mask is optional in the RRULE definition.
|
|
|
|
2009-10-15 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
(+webdavAclManager): Added to fix issues with iPhones (3.1.2)
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(+webdavAclManager): Changed write-properties and write-content to
|
|
non-abstract, and set the equivalent for write-content to
|
|
SoPerm_AddDocumentsImagesAndFiles
|
|
* SoObjects/SOGo/SOGoWebDAVAclManager.m (-copyWithZone:): Added to allow
|
|
object copy (useful for SOGoAppointmentFolders)
|
|
|
|
2009-10-15 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added SOPE/NGCards/TimeZones/* - generated from
|
|
the official Olson databases. This is to allow SOGo
|
|
to include VTIMEZONE components on _new_ events or
|
|
tasks, which fix the problem we had with
|
|
recurring events over DST changes.
|
|
* SOPE/NGCards/iCalTimeZone.m
|
|
Introduced a cache for timezone files and added
|
|
a method to get it based on its name
|
|
* UI/Scheduler/UIxAppointmentEditor.m
|
|
UI/Scheduler/UIxTaskEditor.m
|
|
Modified the event/task editor to properly
|
|
add the timezone component for new events/tasks
|
|
* Updated the sogo.spec file to include the
|
|
new timezone files.
|
|
|
|
2009-10-15 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/AdministrationUI.js (help): new function
|
|
to display the help from the toolbar instead of the module title.
|
|
|
|
2009-10-15 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m
|
|
We check if the server supports quota prior to asking for
|
|
the value. The patchset has also been updated for faster
|
|
access of the server's capabilities.
|
|
|
|
2009-10-14 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-defaultEmailAddresses): new
|
|
method that returns a string representation of all the user's
|
|
email addresses.
|
|
|
|
* UI/WebServerResources/UIxPreferences.js
|
|
(addDefaultEmailAddresses): new function that make sure all of the
|
|
user's default email addresses appear in the addresses textarea of
|
|
the vacation tab.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js (changeCalendarDisplay):
|
|
don't highlight the day selection when in the day view.
|
|
(eventsListCallback): don't popup event window when
|
|
double-clicking on D&T events in the top list of the calendar module.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m (_fixDates:): start/end
|
|
dates must be adjust for DST only when dealing with the day based
|
|
view. No change is required for the month view, except for the
|
|
recurrence IDs.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-getEventRWType): the user
|
|
is not an attendee when dealing with web calendars.
|
|
(-_toolbarForOwner:andClientObject:): no toolbar should appear
|
|
when dealing with web calendars.
|
|
|
|
2009-10-14 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMainActions.m
|
|
We store the string value of the URL in our
|
|
prefs, not the NSURL instance.
|
|
|
|
2009-10-13 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSDictionary+BSJSONAdditions.m
|
|
Fixed the objCType comparison on GNUstep for boolean
|
|
values - we must consider 'c' and 'C'.
|
|
* SoObjects/SOGo/SOGoCache.m
|
|
Introduce a localCache static variable to avoid going
|
|
to memcached all the time. We'll cache values during
|
|
the request and flush them after.
|
|
* SoObjects/SOGo/SOGoUser.m
|
|
Modified -userDefaults to set the timezone when prefs
|
|
have first been set.
|
|
* SoObjects/SOGo/SOGoUserDefaults.m
|
|
Reworked the logic in order to use the correct UPDATE/INSERT
|
|
statement when prefs exist or not. Also cleaned up the
|
|
types definition.
|
|
* UI/PreferencesUI/UIxPreferences.m
|
|
Removed worthless NSLog() call.
|
|
|
|
2009-10-13 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (-ICalendarButtonCallback):
|
|
delegate the execution of this method to the parent when called
|
|
from a popup window. This way, popups are properly reloaded when necessary.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m (-
|
|
_handleAttendee:withDelegate:ownerUser:statusChange:inEvent:):
|
|
added proper initialization of variable.
|
|
|
|
2009-10-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-setComponent:): we invoke
|
|
_loadAttendee only when "jsonAttendees" is not set, even though
|
|
that condition should always be true.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-setCategoriesValue): we use
|
|
[self errorWithFormat:] rather than NSLog to output
|
|
deserialization errors.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m (-delegateAction): same as
|
|
below.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m (-delegateAction):
|
|
delegatedAttendee is autoreleased to avoid a leak.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m (-dealloc): we release the
|
|
"searchAttributes" ivar, even though LDAPSource instances are
|
|
never deallocated.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m (-contentForEditing):
|
|
"keys" must be autoreleased to avoid a leak.
|
|
|
|
* UI/Common/UIxAclEditor.m (-setUserUIDs): we need to retain the
|
|
array of user ids to avoid a zombie.
|
|
|
|
* UI/Common/UIxPageFrame.m (-dealloc): we release
|
|
additionalCSSFiles to avoid a leak.
|
|
|
|
2009-10-12 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated patchset to support properly windows-1250
|
|
charset instead of fallbacking stupidly to iso-8859-1
|
|
* Updated version number to 1.1.0
|
|
* Fixed type for the "Administration" module
|
|
|
|
2009-10-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m (-_emailEvent):
|
|
"eventString" is now released to avoid a leak.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m (-dealloc): ignoreTag
|
|
is released, to avoid a leak if the HTML content was not compliant.
|
|
|
|
* UI/Contacts/UIxListView.m (-checkListReferences): the copy of
|
|
"card" must be released once put in the "invalid" array, in order
|
|
to avoid a leak.
|
|
|
|
* Main/SOGo.m (-init): released "rm" when no longer needed.
|
|
(-dispatchRequest:): simplified leak catching code.
|
|
|
|
2009-10-09 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (+initialize, -init,
|
|
-isVacationEnabled, -setEnableVacation:, -enableVacation,
|
|
-setAutoReplyText:, -autoReplyText, -setAutoReplyEmailAddresses:,
|
|
-autoReplyEmailAddresses, -daysBetweenResponsesList,
|
|
-setDaysBetweenResponses:, -daysBetweenResponses,
|
|
-setIgnoreLists:. -ignoreLists, -isForwardEnabled,
|
|
-setEnableForward:, -enableForward, -setForwardAddress:,
|
|
-forwardAddress, -setForwardKeepCopy:, -forwardKeepCopy): added
|
|
web elements to set an auto-reply message and forward address in
|
|
the preferences window.
|
|
(-inTheOffice, setInTheOffice:): removed useless methods.
|
|
|
|
2009-10-08 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added filters support (Vacation and Forward) which
|
|
can be enabled using the SOGoVacationEnabled and
|
|
SOGoForwardEnabled defaults. One Sieve right now is
|
|
support and we assume the Sieve server is the same
|
|
as the IMAP server, running on port 2000.
|
|
* Cleaned up everything related to the old Sieve stuff
|
|
which was now useless with our new implementation.
|
|
|
|
2009-10-08 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-shortDateFormatsList): added
|
|
"default" option.
|
|
(-itemShortDateFormatText): added formatting for "default" option.
|
|
(-userShortDateFormat): falls back to "default" if not set for the user.
|
|
(-setUserShortDateFormat): removes user default if set to
|
|
"default".
|
|
(-longDateFormatsList, -itemLongDateFormatText,
|
|
-userLongDateFormat, -setUserLongDateFormat): new "default" option
|
|
support, like for the short date format.
|
|
(- timeFormatsList, -itemTimeFormatText, -setUserTimeFormat): new
|
|
"default" option support, like for the short date format.
|
|
|
|
2009-10-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m (-_searchAttributes): we already
|
|
have knowledge of the LDAPContactInfoAttribute so we no longer
|
|
need to fetch it from the user defaults.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDIFEntry.m
|
|
(-initWithName:withLDIFEntry:inContainer:): we no longer retain
|
|
"container" in order to avoid a leak.
|
|
(-vCard): we now use the "VCARD" profile, all in upper case. We
|
|
first resolve the full name using "c_cn", which is the special key
|
|
used by the LDAP sources to access the fullname attribute.
|
|
|
|
* Tests/webdavlib.py (MailDAVMailQuery._initSort): now handles the
|
|
"order" attribute from the "ascending" parameter.
|
|
|
|
* Tests/test-maildav.py (DAVMailCollectionTest._testSort): added a
|
|
boolean "ascending" parameter that defaults to True.
|
|
(DAVMailCollectionTest.testREPORTMailQueryFilters): method
|
|
replacing the filter part of testREPORTMailQuery.
|
|
(DAVMailCollectionTest.testREPORTMailQuerySort): method
|
|
replacing the sort part of testREPORTMailQuery.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m (_sortElementIsAscending:):
|
|
new method that determines whether the sort ordering is ascending
|
|
or not.
|
|
(_sortOrderingsFromSortElement:): new method relacing
|
|
"_mailSortingFromSortElement:", that returns an array of
|
|
EOSortOrdering instances based on the "sort" element passed as
|
|
parameter.
|
|
|
|
2009-10-07 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Mailer/EOQualifier+MailDAV.m
|
|
(buildQualifierFromFilters:): Now returns an EOQualifier, fixed
|
|
qualifier formats and constructor, refactored to regroup code.
|
|
* Tests/test-maildav.py (testREPORTMailQuery): Disabled a few
|
|
tests that don't pass for now.
|
|
* SoObjects/Mailer/EOQualifier+MailDAV.m (buildQualifierFromFilters:):
|
|
Removed, everything is now done in (qualifierFromMailDAVMailFilters:).
|
|
(qualifierFromMailDAVMailFilters:): Removed all parentheses in
|
|
qualifier.
|
|
* SoObjects/Mailer/EOQualifier+MailDAV.m
|
|
(qualifierFromMailDAVMailFilters:): Fixed segfault when there are
|
|
no filters.
|
|
|
|
2009-10-07 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m
|
|
(-_fetchFields:forComponentOfType:): the _fixDate method must not
|
|
be called when in the month view.
|
|
|
|
2009-10-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/webdavlib.py (MailDAVMailQuery._initSort): we now accept
|
|
multiple sort parameters.
|
|
|
|
* Tests/test-maildav.py (DAVMailCollectionTest._testSort): new
|
|
method to test sorting messages.
|
|
(DAVMailCollectionTest.testREPORTMailQuery): added some tests for
|
|
"SORT".
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m (-hasLocalSubfolderNamed):
|
|
rewritten parts of the method to better fit our coding standards.
|
|
Exported method in the SOGoParentFolder.h to avoid warnings where
|
|
it's used.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
(_fetchPersonalFolders:withChannel:): we now skip unexisting
|
|
folders declared in the list of web folder ids to avoid problems.
|
|
When such id is found, it is also reported in the logs to inform
|
|
the administrator of this inconsistency.
|
|
|
|
2009-10-06 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Mailer/EOQualifier+MailDAV.m (_formattedDate:): New method to
|
|
format a date correctly for imap search qualifiers.
|
|
(buildQualifierFromFilters:): Fixed selectors in qualifier strings, and
|
|
fixed date formatting.
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
(_fetchMessageProperties:matchingQualifier:andSorting:): Implementation.
|
|
(_davPropstatsWithProperties:andMethodSelectors:fromMessage:): Implementation.
|
|
(_appendProperties:fromMessages:toResponse:): Implementation.
|
|
|
|
2009-10-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m (_appendMessageData:usingId):
|
|
we no longer need to unselect the folder where the "append"
|
|
happens since it worked around a deeper bug in sope-mime which has
|
|
been fixed in the patchset.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
|
(-createChildComponentWithRecord:): made method public.
|
|
(-createChildComponentWithName:andContent:): made method public.
|
|
|
|
* SoObjects/SOGo/NSArray+DAV.m (-asDAVPropstatWithStatus:): new
|
|
method that creates a "PROPSTAT" element with the specified
|
|
status.
|
|
|
|
2009-10-06 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (_timeValue): improved parsing to
|
|
support single integers (not only the XY:00 form).
|
|
(-timeFormat): returns the user's time format or system
|
|
(SOGoTimeFormat) default if not defined.
|
|
(-replyPlacement): honor the system defaults (SOGoMailReplyPlacement).
|
|
(-signaturePlacement): honor the system defaults
|
|
(SOGoMailSignaturePlacement).
|
|
(-messageForwarding): honor the system defaults (SOGoMailMessageForwarding).
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m (-contentForReply):
|
|
reply and signature placement properly honors system defaults
|
|
(SOGoMailReplyPlacement and SOGoMailSignaturePlacement).
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-userTimeFormat): honor the
|
|
system defaults through the SOGoUser class.
|
|
(-userDayStartTime): idem.
|
|
(-userDayEndTime): idem.
|
|
(-userMessageForwarding): idem.
|
|
(-repyPlacement): idem.
|
|
(-signaturePlacement): idem.
|
|
|
|
* UI/Scheduler/UIxCalDayTable.m (-hoursToDisplay): honor the
|
|
system defaults through the SOGoUser class.
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (-initPreferences): fix
|
|
to properly set the initial status of the signature placement
|
|
select field.
|
|
|
|
2009-10-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/test-maildav.py (DAVMailCollectionTest._testFilter): fixed
|
|
to use the "test-dav-mail" folder name as collection during the
|
|
tests.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m (-davMailQuery): new method
|
|
implementing the "mail-query" REPORT for Inverse's maildav
|
|
protocol.
|
|
(-parseDAVRequestedProperties:): new method making use of the
|
|
"davIMAPFieldsTable" method below for parsing fields in the
|
|
mail-query request.
|
|
(-_mailSortingFromSortElement:): new method to parse the "sort"
|
|
element of mail-query requests.
|
|
(-_fetchMessageProperties:matchingQualifier:andSorting:): new
|
|
stub for a method that will fetch the IMAP messages based on the
|
|
criteria found above.
|
|
(-_appendProperties:fromMessages:toResponse:) new stub for a
|
|
method that will add the content of the resulting set of message
|
|
properties to the DAV response.
|
|
|
|
2009-10-05 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m (-davIMAPFieldsTable): new
|
|
method designed to match maildav properties on mail objects with
|
|
IMAP fields, for PROPFIND and REPORT methods.
|
|
|
|
* Tests/test-webdavlib.py: Added new tests for the URL parser / regexp.
|
|
|
|
* Tests/webdavlib.py: Fixed errors in the URL regexp.
|
|
|
|
* SoObjects/Mailer/EOQualifier+MailDAV.m: New category to generate IMAP
|
|
qualifiers from DAV filters. (REPORT)
|
|
(buildQualifierFromFilters:): Formatted dates using [NSCalendarDate
|
|
rfc822DateString]. Added NOT and extra fields.
|
|
|
|
2009-10-04 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Adjusted the Welsh and Dutch templates for
|
|
mail invitations - we were missing classes resulting
|
|
in crashers.
|
|
|
|
2009-10-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/webdavlib.py (MailDAVMailQuery): new class that implements
|
|
the "mail-query" DAV REPORT.
|
|
(WebDAVQuery._initProperties): new helper methods invoked by
|
|
PROPFIND and REPORT classes at initialization to format the "prop"
|
|
part of their query.
|
|
(HTTPUnparsedURL._parse): accept more valid URL characters.
|
|
|
|
* Tests/test-maildav.py
|
|
(DAVMailCollectionTest.testREPORTMailQuery): new method with
|
|
initial tests for "mail-query" report.
|
|
|
|
2009-10-01 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m: Added methods required for PROPFIND /
|
|
REPORT: _fetchProperty:, _hasFlag:, _emailAddressesFrom:, davDate,
|
|
hasAttachment, read, textDescription, cc, from, inReplyTo, messageId,
|
|
received, references, davDisplayName, to
|
|
* Tests/test-maildav.py (testPROPFIND): Added tests for the new MailDAV
|
|
PROPFIND.
|
|
* UI/PreferencesUI/UIxPreferences.m (languages, language, setLanguage:,
|
|
languageText): Added to support changing the language from the Preferences
|
|
dialog.
|
|
|
|
2009-10-01 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
(-appendMessage:inContext:usingId:): we no longer instantiate the
|
|
message to check whether it exists since we trust the fact that we
|
|
would receive an error from NGImap if the creation failed.
|
|
|
|
2009-10-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/test-webdavlib.py: new test script for testing the
|
|
webdavlib library itself.
|
|
(HTTPUnparsedURLTest.testURLParse): new test case for the new
|
|
HTTPUnparsedURL class.
|
|
|
|
* Tests/webdavlib.py (HTTPUnparsedURL): new utility class for
|
|
consistently parsing url strings
|
|
|
|
* Tests/test-maildav.py (DAVMailCollectionTest.testPUT): fixed to
|
|
delete the test collection prior to the test
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
(-proxyFoldersWithWriteAccess:): return an autoreleased
|
|
"proxyFolders" to avoid a leak.
|
|
|
|
* Tests/test-maildav.py (DAVMailCollectionTest._putMessage):
|
|
messages have "message/rfc822" mime-type.
|
|
(DAVMailCollectionTest.setUp): use servername
|
|
|
|
2009-09-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m (-init): removed "ldapConnection"
|
|
ivar, since we now always use it as an autoreleased local value.
|
|
(-_ldapConnection): modified implementation of
|
|
"_initLDAPConnection" that now returns an autoreleased instance of
|
|
NGLdapConnection or nil.
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m (-_setupContext): if
|
|
"moduleSettings" is non-nil, we don't reset it in the user
|
|
defaults.
|
|
(-composeAction): autorelease "addresses" to avoid a leak.
|
|
|
|
2009-09-29 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m (PUTAction:, _appendMessageData:usingId:):
|
|
Added new methods to enable MailDAV PUT on a collection.
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m (IMAP4IDFromAppendResult:): Moved
|
|
here, since SOGoDraftObject and SOGoMailFolder need it.
|
|
* SoObjects/Mailer/SOGoDraftObject.m (_IMAP4IDFromAppendResult): Removed,
|
|
replaced by [SOGoMailBaseObject IMAP4IDFromAppendResult:].
|
|
* SoObjects/SOGo/SOGoObject.m: Changed file extension from "mail" to "eml".
|
|
* SoObjects/Mailer/SOGoMailAccount.m: Added accountName to fix errors in MailDAV.
|
|
* SoObjects/Mailer/SOGoMailAccounts.m: Added management for account names
|
|
to fix errors in MailDAV.
|
|
* SoObjects/Mailer/SOGoMailFolder.m (appendMessage:): Added this method to
|
|
facilitate the PUT from a SOGoMailObject.
|
|
* SoObjects/Mailer/SOGoMailObject.m (PUTAction:): Added to enable MailDAV
|
|
PUT on a non-existing object.
|
|
* UI/MailerUI/UIxMailMainFrame.m (mailAccounts): Changed the return value to
|
|
include both the account name and display name.
|
|
* UI/MailerUI/UIxMailMainFrame.m: Fixed an error when composing from the
|
|
Address Book module.
|
|
|
|
2009-09-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (SOGoSelectorForPropertyGetter)
|
|
(SOGoSelectorForPropertySetter): fixed a case where propSel should
|
|
be initialized to NULL.
|
|
|
|
* SoObjects/SOGo/SOGoGroup.m (-members): we now cache the array of
|
|
members as an ivar.
|
|
(-hasMemberWithUID): new self-explicit method.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
|
(_fetchAclsForUser:forObjectAtPath:): refactored method to make it
|
|
actually work for group searches, without unitialized data and to
|
|
clarify code.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m
|
|
(_urlPreferringParticle:overThisOne:): instead of risking
|
|
confusion between SOPE, NSURL and friends, we revert this change
|
|
(see below) and choose other ways to avoid escaping of "@", "%",
|
|
etc...
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m (-stringByEscapingURLPart):
|
|
(revert) removed useless method.
|
|
|
|
2009-09-28 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAptMailInvitation.m: Added Spanish definition.
|
|
* SoObjects/Appointments/SOGoAptMailICalReply.m: Added Spanish definition.
|
|
* SoObjects/Appointments/SOGoAptMailDeletion.m: Added Spanish definition.
|
|
* SoObjects/Appointments/SOGoAptMailUpdate.m: Added Spanish definition.
|
|
* SoObjects/SOGo/NSString+Utilities.m (stringByEscapingURLPart): Added to
|
|
fix the URL parts for MailDAV
|
|
* SoObjects/Mailer/SOGoMailAccount.m (toManyRelationshipKeys): Added the
|
|
"folder" prefix for MailDAV compatibility.
|
|
* SoObjects/SOGo/SOGoObject.m (_urlPreferringParticle:): Fixed URL escaping
|
|
to make paths work in MailDAV.
|
|
|
|
2009-09-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (+initialize): avoid a crash when
|
|
SOGoProfileURL is not set.
|
|
|
|
2009-09-27 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Reworked the UIxMailPartSignedViewer to inherit
|
|
from UIxMailPartMixedViewer.
|
|
* UI/WebServerResources/SchedulerUI.js
|
|
We allow empty calendar imports.
|
|
* Avoid assumptions for .ics presence on URL
|
|
subscriptions.
|
|
|
|
2009-09-25 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Renamed SoObjects/Contacts/SOGoContactLDAPFolder to
|
|
SoObjects/Contacts/SOGoContactSourceFolder
|
|
* Renamed SoObjects/SOGo/LDAPUserManager to
|
|
SoObjects/SOGo/SOGoserManager.m
|
|
* Added SoObjects/SOGo/SOGoSource.h and
|
|
SoObjects/SOGo/SQLSource.{h,m}
|
|
We now support authentication and address book sources
|
|
coming from a SQL database. This can be used concurrently
|
|
with LDAP sources. Modified many classes to reflect this
|
|
change.
|
|
* SoObjects/SOGo/LDAPSource.m
|
|
We trim the bind field value prior to adding it to our
|
|
LDAP search filter.
|
|
* UI/MailPartViewers/UIxMailPartSignedViewer.m and friends:
|
|
We now show more information on the S/MIME encoded messages.
|
|
We also handle correctly multipart/alternative messages.
|
|
|
|
2009-09-24 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m (bareFetchFields:): Handled
|
|
the Exception when all conditions are nil.
|
|
* SoObjects/Contacts/NGVCard+SOGo.m (ldifString): Made corrections
|
|
reflecting from the fixes in NGVCard to properly format an address.
|
|
|
|
2009-09-23 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m (importComponent:): Fixed
|
|
addition of BEGIN/END block.
|
|
* SoObjects/Appointments/SOGoWebAppointmentFolder.m (deleteAllContent):
|
|
Created deleteAllContent to be able to change it in the store bundle.
|
|
* UI/Scheduler/UIxCalMainActions.m (addWebCalendarAction): Small improvement.
|
|
|
|
2009-09-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SOGoAutoCompletion.js
|
|
(SOGoAutoCompletionInterface.onKeyDown): (needs review) we don't
|
|
overwrite the input's name attributes with the "uname". Otherwise
|
|
the form will not have the correct data when submitted and the
|
|
to/cc/bcc fields will be ignored.
|
|
|
|
2009-09-23 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m
|
|
We now fallback to the default system selected day.
|
|
|
|
2009-09-22 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated the documentation for the Invisible -> Flagged
|
|
mail column change.
|
|
* SoObjects/Contacts/NGVCard+SOGo.m - better error-handling.
|
|
|
|
2009-09-22 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalFolderActions.m (exportAction): Used
|
|
bareFetchFields from SOGoAppointmentFolder instead of fetchFields
|
|
from SOGoGCSFolder.
|
|
|
|
2009-09-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m (-fetchPlainTextParts:):
|
|
handle the fact that the "fetch" key in a RawResponse (NGHashMap)
|
|
may not be the only response. Since [NGHashMap objectForKey:]
|
|
returns only the first one, we use the new "flattenedDictionaries"
|
|
to make sure we can retrieve all requested keys.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m (-flattenedDictionaries): new
|
|
method that merges the keys and values of all contained
|
|
dictionaries into one single dictionary.
|
|
|
|
* Tests/webdavlib.py (_WD_XMLTreeElement.__init__): added a new
|
|
optional parameter "attributes" that enables the setting of
|
|
element attributes during the rendering of the element.
|
|
|
|
* Tests/webdavlib.py (CalDAVCalendarQuery): new subclass of
|
|
WebDAVReport that handles "calendar-query" reports.
|
|
|
|
* UI/MailerUI/UIxMailListView.m (+initialize): new method
|
|
initialized the two new global NSArray: defaultColumnOrder
|
|
(hardcoded values), udColumnOrder (system default values).
|
|
(-columnsDisplayOrder): we now cache the resulting set of keys.
|
|
We also test for the presence of invalid keys by comparing the
|
|
configured array with the hardcoded one above.
|
|
(-setCurrentColumn:, currentColumn): new accessors.
|
|
|
|
2009-09-21 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SOPE/NGCards/versitCardsSaxDriver/VSSaxDriver.m
|
|
Avoid lameness when handling QP-encoded content.
|
|
|
|
2009-09-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (updateMailboxTreeInPage):
|
|
we assign the "quotaIndicator" to the quota DIV and when replacing
|
|
it, we ensure the DIV doesn't already exists.
|
|
|
|
2009-09-21 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMainActions.m (displayNameForUrl:): The calendar's
|
|
display name is extracted from the URL for web calendars.
|
|
* UI/Scheduler/UIxCalendarProperties.m (webCalendarURL, isWebCalendar):
|
|
Added new methods to display a web calendar's url in the properties dialog.
|
|
|
|
2009-09-21 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated the contact import text to be more
|
|
precise with regard to support input formats.
|
|
|
|
2009-09-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m
|
|
(-initWithTableURL:uid:fieldName:): removed the "shouldPropagete"
|
|
parameter.
|
|
(-primaryStoreProfile): we now propagate the values in the cache
|
|
unconditionally.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-initWithLogin:roles:trust:):
|
|
the trust no longer prevent user settings and defaults to
|
|
propagate in the cache, since we no longer use gdnc for it.
|
|
|
|
2009-09-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js (onLoadHandler): don't trigger
|
|
the alarm refresh if the "calendarBannerLink" link is not
|
|
available (when calendar is disabled).
|
|
|
|
* UI/WebServerResources/UIxPreferences.js (initPreferences)
|
|
(savePreferences): don't bother with the categoriesList if it's
|
|
not accessible (when calendar is disabled).
|
|
|
|
2009-09-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/test-config.py: new functional test to validate the test
|
|
configuration file.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m (-userComposeMessagesType):
|
|
return a default value of @"text" if the default compose type has
|
|
never been changed by the user. Otherwise, saving the preferences
|
|
will never enable the window to be closed since the new value will
|
|
always be different from nil.
|
|
|
|
2009-09-17 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Contacts/UIxListEditor.m: Renamed "name" to "listName"
|
|
|
|
2009-09-16 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated the ICS import text to be more specific
|
|
* We now warn for no SSL bundle in GNUstep when
|
|
trying to load a remote ICS file and it's failing
|
|
over SSL. It's a guess but it's better than nothing.
|
|
|
|
2009-09-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-lookupName:inContext:acquire:):
|
|
instanciated objects may be queried twice during the same session,
|
|
before being saved into the database. Therefore we cache them to
|
|
avoid losing their version number.
|
|
|
|
* UI/WebServerResources/AdministrationUI.js,
|
|
UI/WebServerResources/ContactsUI.js,
|
|
UI/WebServerResources/MailerUI.js,
|
|
UI/WebServerResources/MailerUIdTree.js,
|
|
UI/WebServerResources/SchedulerUI.js,
|
|
UI/WebServerResources/UIxAclEditor.js,
|
|
UI/WebServerResources/UIxCalendarProperties.js,
|
|
UI/WebServerResources/UIxComponentEditor.js,
|
|
UI/WebServerResources/UIxContactsUserFolders.js,
|
|
UI/WebServerResources/UIxMailEditor.js,
|
|
UI/WebServerResources/UIxPreferences.js,
|
|
UI/WebServerResources/UIxTaskEditor.js,
|
|
UI/WebServerResources/generic.js: renamed the function "label" to
|
|
"getLabel" to avoid overriding local function variables.
|
|
|
|
2009-09-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js (configureLoadImagesButton):
|
|
retrieve all "img" elements with an "unsafe-src" attribute and
|
|
remember them in an array attached to $("messageContent"). We also
|
|
void using "delete" on the stored array because IE 7 is too dumb.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
(-startElement:namespace:rawName:attributes:): treat tag names as
|
|
lowercase (xhtml compliance). Replace all "src" tagnames with
|
|
"unsafe-src" for distant images. No longer take an "unsafe" url
|
|
parameter into account.
|
|
|
|
* UI/MailPartViewers/UIxMailPartSignedViewer.[hm]: new module
|
|
class that implements the viewer for multipart/signed messages.
|
|
|
|
* UI/WebServerResources/MailerUI.js (configureSignatureFlagImage):
|
|
new method that check whether the message being displayed is
|
|
signed and if so, displays the proper image depending on the
|
|
validation status.
|
|
|
|
2009-09-14 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Common/UIxPageFrame.m (commonLocalizableStrings): clabels are no longer
|
|
necessary in popup windows.
|
|
|
|
2009-09-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SOGoRootPage.js (onLoginClick): avoid
|
|
setting an empty string as value to "document.cookie" since this
|
|
will actually create a cookie.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m (-logoffAction): fixed a typo in
|
|
the "cache-control" header.
|
|
|
|
* Main/SOGo.m (-sessionIDFromRequest:): overriden method that
|
|
returns nil to avoid any session cookie to be set by SOPE.
|
|
|
|
2009-09-11 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m (allContactSearchAction): Added
|
|
support for excludeLists, to prevent listing vList entries.
|
|
|
|
2009-09-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m (-logoffAction): adjusted to handle
|
|
the case where then authenticator doesn't handle authentication
|
|
cookies. In such cases, this method should theorically never be
|
|
invoked though.
|
|
|
|
* UI/Common/UIxPageFrame.m (-canLogoff): new bool accessor that
|
|
returns whether the current authenticator handles user
|
|
disconnection or not, in which case we hide the "logoff" link in
|
|
the UIxPageFrame.
|
|
|
|
* SoObjects/SOGo/SOGoCache.m (-registerUser:withName:): adjusted
|
|
method to take an additional "userName" parameter in order to
|
|
store users with the username used at login time rather than their
|
|
user id. This is especially useful when using indirect binds.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m (-_qualifierForUIDFilter:): we
|
|
include the bindFields in the request if they are specified in the
|
|
configuration.
|
|
|
|
* Main/SOGo.m (-authenticatorInContext:): we no return an instance
|
|
of SOGoProxyAuthenticator if "SOGoTrustProxyAuthentication" is
|
|
set in the configuration.
|
|
|
|
* SoObjects/SOGo/SOGoProxyAuthenticator.[mh]: new class module
|
|
that defines an authenticator that unconditionnaly trusts and
|
|
handle authentication done proxy-side. SOGo uses that
|
|
authenticator when the "SOGoTrustProxyAuthentication" user default
|
|
is set. The username is taken from the "x-webobjects-remote-user"
|
|
http header, you may have to adapt your proxy configuration
|
|
accordingly.
|
|
|
|
2009-09-10 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-_handleAttendeesEdition]): the attendees list is now submited as
|
|
a JSON string.
|
|
([UIxComponentEditor -_loadAttendees]): constructs a dictionary
|
|
with the attendees' information that will be passed as a JSON
|
|
string to the template.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([UIxMailPartICalViewer -currentAttendeeClass]): new method that
|
|
returns the attendee's partstat as the CSS class and adds
|
|
"attendeeUser" if the attendee is the active user.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m (-): added delegateAction.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-allContactSearchAction]): added the possibility to pass the form
|
|
parameter "excludeLists" in order to avoid returning groups.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m ([LDAPSource
|
|
_convertLDAPEntryToContact:]): added a key named "isList" to the
|
|
data representation of the LDAP entry if it matches specific objectClasses.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailICalReply.m
|
|
([SOGoAptMailICalReply -getBody]): trim spaces before returning
|
|
the body.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject
|
|
-_handleAttendee:withDelegate:ownerUser:statusChange:inEvent:]):
|
|
added support for invitation delegation.
|
|
([SOGoAppointementObject
|
|
-_updateAttendee:withDelegate:ownerUser:forEventUID:withRecurrenceId:withSequence:forUID:shouldAddSentBy:]):
|
|
fixed the case of chained delegates.
|
|
([SOGoAppointmentObject
|
|
-changeParticipationStatus:withDelegate:forRecurrenceId:]): when
|
|
delegating an invitation, verify that the delegated is not already
|
|
a participant nor a group of users.
|
|
|
|
2009-09-10 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoWebAppointmentFolder.m: New
|
|
SOGoAppointmentFolder subclass to manage iCal subscriptions.
|
|
* UI/Scheduler/UIxCalMainActions.m: New action class to handle actions on
|
|
the main calendar.
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m (importCalendar:): New
|
|
method to import everything from an iCalCalendar. (Refactoring from
|
|
UIxCalFolderActions)
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m (webCalendarIds): New
|
|
method to get uids of web calendar folders.
|
|
(_fetchPersonalFolders: withChannel:): Wrap the parent method to replace web
|
|
calendar folders with the correct class: SOGoWebAppointmentFolder. It also
|
|
removes invalid references in the WebCalendars setting.
|
|
* UI/Scheduler/UIxCalFolderActions.m (importAction): Moved a big part of the
|
|
method to [SOGoAppointmentFolder importCalendar:].
|
|
* SoObjects/Appointments/SOGoWebAppointmentFolder.m (delete): Wrap the
|
|
parent method to remove the calendar for the user's settings.
|
|
* SoObjects/Appointments/SOGoWebAppointmentFolder.m: Added some error
|
|
management, for when the url is invalid / not ical / etc.
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (_fetchAclsForUser: forObjectAtPath:):
|
|
Ignore group acls if we found acls for the user.
|
|
* UI/Contacts/UIxListView.m (propertiesAction): Added to list references
|
|
from a vList.
|
|
|
|
2009-09-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-setComment,comment):
|
|
properly substitute the form-provided "\r\n" sequences with "\n"
|
|
sequences and vice-versa.
|
|
|
|
2009-09-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-_getMaxStartDate): do not compute the start date if the active
|
|
user is a super user.
|
|
(_enforceTimeLimitOnFilter:withStartDate:andEndDate:): same as
|
|
above.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-rolesForObject:inContext:): directly
|
|
invoke [self isSuperUser]
|
|
|
|
2009-09-09 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* Tools/NSDictionary+SOGoTool.m: Removed, all methods were moved to
|
|
SoObjects/NSDictionary+Utilities.m, or SoObjects/NSString+Utilities.m
|
|
* UI/Contacts/UIxContactFolderActions.m: New class to handle actions on a
|
|
single contacts folder. (import/export)
|
|
* UI/Scheduler/UIxCalFolderActions.m: New class to handle actions on a
|
|
single agenda folder. (import/export)
|
|
* SoObjects/SOGo/NSDictionary+Utilities.m: Added userRecordAsLDIFEntry.
|
|
* SoObjects/SOGo/NSString+Utilities.m: Added methods useful for
|
|
userRecordAsLDIFEntry.
|
|
* UI/Contacts/UIxContactsListView.m: Removed import/export actions
|
|
* UI/Scheduler/UIxCalView.m: Removed import/export actions
|
|
* SoObjects/Contacts/NGVCard+SOGo.m: Added a new category to remove a
|
|
circular dependency issue.
|
|
* SoObjects/Contacts/NGVList+SOGo.m: Added a new category to remove a
|
|
circular dependency issue.
|
|
* UI/Contacts/UIxContactFolderActions.m: Changed import instructions to use
|
|
the new category.
|
|
|
|
2009-09-03 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactsListView.m: Added ldif / vcard import
|
|
* UI/Contacts/UIxContactsListView.m: Changed return types to know how many
|
|
cards were imported.
|
|
|
|
2009-09-02 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactsListView.m (exportAction): Added to support export.
|
|
* UI/Scheduler/UIxCalView.m (exportAction): Added to support export.
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m (importComponent): Added to
|
|
support import.
|
|
* UI/Scheduler/UIxCalView.m (importAction): Added to support import.
|
|
|
|
2009-08-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoCalendarProxy.[hm]: new class module
|
|
implementing the caldav proxy collections mentionned below. This
|
|
is a subclass of SOGoFolder.
|
|
|
|
* SoObjects/SOGo/WORequest+SOGo.m (-isAppleDAVWithSubstring:): new
|
|
method.
|
|
(-isICal): new method.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m
|
|
(-calendarProxy:withWriteAccess:): new method that instantiate a
|
|
proxy collections for read and write delegations.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m (-initSubscribedFolders): we
|
|
now make use of appendSubcribedSources with which we shared code.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-subscribeUser:reallyDo:): new
|
|
simplified and published version of
|
|
subscribe:inTheNamesOf:fromMailInvitation:inContext:.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m (-davGroupMemberSet)
|
|
(davGroupMembership): new DAV accessors that return an empty
|
|
array.
|
|
|
|
* SoObjects/Appointments/SOGoUserFolder+Appointments.m
|
|
(-davGroupMembership): new DAV accessor.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
(-toManyRelationshipKeys): overriden method for iCal: we don't
|
|
list the folders to which the current user is subscribed to
|
|
(because the iCal paradigm now requires calendar proxying), we
|
|
don't list the folders to which a delegator has subscribed to
|
|
either nor any of his/her secondary calendars.
|
|
(-proxyFoldersWithWriteAccess:): new methods that returns the list
|
|
of personal folder on which we are allowed to act as a proxy.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-requiredProxyRolesWithWriteAccess:): new method that returnes
|
|
the roles required for read/write proxying of users.
|
|
(-proxySubscribersWithWriteAccess:)
|
|
(setProxySubscribers:withWriteAccess:): new accessors making use
|
|
of the new method above.
|
|
|
|
* Tests/test-caldav-scheduling.py: new set of tests for CalDAV
|
|
scheduling (iTIP-over-DAV) operations. Implemented 9 scenarios for
|
|
invitation delegation.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
(_updateAttendee:withDelegate:ownerUser:forEventUID:withRecurrenceId:):
|
|
added "withDelegate:" parameter in order to be able to add or
|
|
remove the delegate corresponding to the attendee delegation. We
|
|
also adjust the "delegated-to:" and "delegated-from:" in the
|
|
corresponding attendee element from the event copy.
|
|
(-postCalDAVReplyTo:from:): deduce the delegate from the matching
|
|
attendee and pass it as parameter to subsequent method calls.
|
|
(-takeAttendeeStatus:withDelegate:from:withRecurrenceId:)
|
|
(changeParticipationStatus:withDelegate:forRecurrenceId:): take a
|
|
new "withDelegate:" parameter.
|
|
|
|
* Tests/webdavlib.py (HTTPQuery.__init__): the content-type is no
|
|
longer passed as parameter and should be directly set by the
|
|
client as an attribute.
|
|
(HTTPSimpleQuery.prepare_headers): new method to enable
|
|
query-specific headers.
|
|
(CalDAVPOST.__init__): new query type
|
|
|
|
2009-08-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m (-defaultAction): when the user has
|
|
never logged in or switched module, the SOGoUIxLastModule
|
|
preference would never be set, causing a crash when the moduleURL
|
|
was created, because of a nil parameter. Also, the "defaultModule"
|
|
global variable was set to the userDefinedModule, which is
|
|
simply wrong as the global variable impacts all the users and need
|
|
to be kept intact.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailReceipt.[hm]: new module
|
|
containing the template code for sending event receipts.
|
|
|
|
2009-08-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (+userWithLogin:): new constructor
|
|
designed to avoid the need to pass a nil role parameter.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
(-sendReceiptEmailUsingTemplateNamed:forObject:to:) new method
|
|
that enables the sending of receipts to an event modifier in case
|
|
of an invitation, modification or deletion.
|
|
|
|
2009-08-25 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSList.m (copyToFolder): Implementation to
|
|
support copying lists.
|
|
* UI/Scheduler/UIxCalDayTable.m: Added support for TimeFormat default.
|
|
|
|
2009-08-24 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m: Refactoring + added vLists support.
|
|
* UI/Contacts/UIxListEditor.m: Implementation.
|
|
* UI/Contacts/UIxContactsListView.m (contactSearchAction): added to support
|
|
search in a single folder.
|
|
|
|
2009-08-21 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Contacts/UIxListView.m: Implementation, allows VLISTs to be displayed.
|
|
* UI/Contacts/UIxListView.m (checkListReferences): Added list integrity
|
|
verification (make sure all references are valid).
|
|
|
|
2009-08-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/webdavlib.py (WebDAVQuery.xpath_evaluate): new method to
|
|
facilitate xpath evaluation from tests.
|
|
|
|
2009-08-20 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Common/UIxParentFolderActions.m (createFolderAction): Mantis 2040:
|
|
return a 409 code when a folder with the same name exists.
|
|
* SoObjects/SOGo/SOGoParentFolder.m (hasLocalSubFolderNamed): Added for
|
|
Mantis 2040.
|
|
* UI/Scheduler/UIxDatePicker.m: Fix to use user-defined format, if any.
|
|
Mantis 1911.
|
|
* UI/Scheduler/UIxDatePicker.m: Removed changes from 1911: too many issues.
|
|
* UI/Scheduler/UIxCalFilterPanel.m (selectedFilter): Added support for
|
|
CalendarDefaultFilter user default. Mantis 112
|
|
* UI/Scheduler/UIxCalListingActions.m (checkFilterValue): Added to support
|
|
CalendarDefaultFilter user default. Mantis 112
|
|
* SoObjects/SOGo/SOGoUser.m: Changed "signature" setting's place: MailSignature
|
|
Mantis 113.
|
|
* UI/PreferencesUI/UIxPreferences.m: Support for MailSignature setting.
|
|
Mantis 113.
|
|
* SoObjects/SOGo/SOGoUser.m (migrateSignature): Added. Mantis 113.
|
|
* SoObjects/SOGo/LDAPUserManager.m: Changed addObjectUniquely to addObject.
|
|
Mantis 113.
|
|
|
|
2009-08-19 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m (defaultAction): Added support for SOGoUIxDefaultModule
|
|
* UI/PreferencesUI/UIxPreferences.m: Added: availableModules,
|
|
itemModuleText, userDefaultModule, setUserDefaultModule to support
|
|
SOGoUIxDefaultModule in the preferences UI.
|
|
* UI/Contacts/UIxContactFoldersView.m (checkDefaultModulePreference): Added
|
|
to support "Last" SOGoUIxDefaultModule value.
|
|
* UI/MailerUI/UIxMailListView.m (checkDefaultModulePreference): Added to
|
|
support "Last" SOGoUIxDefaultModule value.
|
|
* UI/Scheduler/UIxCalMainView.m (checkDefaultModulePreference): Added to
|
|
support "Last" SOGoUIxDefaultModule value.
|
|
* UI/MailerUI/UIxMailListView.m (isMessageFlagged): Added for Mantis 1428
|
|
* UI/MailerUI/UIxMailActions.m (markMessageFlaggedAction,
|
|
markMessageUnflaggedAction): Added to support flagging
|
|
* UI/MailerUI/UIxMailListView.m: Renamed Invisible to Flagged
|
|
* UI/MailerUI/UIxMailMainFrame.m: Renamed Invisible to Flagged
|
|
|
|
2009-08-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (-parseETagList:): greatly
|
|
simplified method by using the "trimmedComponents" utility method.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m (-PUTAction:): removed "new"
|
|
hack. Sanitized var names.
|
|
|
|
2009-08-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
|
(-initializeQuickTablesAclsInContext:): don't give the right to
|
|
view everything to users who can delete objects. This may cause
|
|
deletion from working from a web method, but everyone who uses
|
|
such as configuration will probably use DAV instead.
|
|
|
|
2009-08-18 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalendarProperties.m ([UIxCalendarProperties
|
|
-allCalendarSyncTags]): new method that returns a concatenated
|
|
string of all the sync tags of the other calendars.
|
|
([UIxCalendarProperties -mustSynchronize]): new method that
|
|
returns true if the calendar must be synchronized, ie if it's the
|
|
personal calendar.
|
|
([UIxCalendarProperties -synchronizeCalendar]): new method that
|
|
returns true if the calendar must be synchronized or is set to be synchronized.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -_setCalendarProperty:forKey:]): new
|
|
common method for all methods that need to set a property in the
|
|
user's settings.
|
|
|
|
2009-08-17 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m: Added support for new user default:
|
|
ShowCompletedTasks.
|
|
|
|
2009-08-17 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m
|
|
Safety check in case no objectClass attribute is returned
|
|
from the LDAP server
|
|
* Updated NEWS file
|
|
|
|
2009-08-14 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/AdministrationUI/UIxAdministration.m: new administration
|
|
module. Initial functionalities are limited to ACLs management.
|
|
|
|
2009-08-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tools/SOGoToolBackup.m (-parseArguments): modified to either
|
|
accept "ALL" or a list of identifiers as arguments.
|
|
|
|
* Tools/SOGoToolRestore.m: new "sogo-tool" utility that restores
|
|
the specified user data previously created by the "backup"
|
|
command.
|
|
(+initialize): load the "Appointments.SOGo" and "Contacts.SOGo"
|
|
bundle in order to access some categories found therein that are
|
|
used by OGoContentStore.
|
|
(-parseModeArguments) mode arguments are now put at the beginning
|
|
of the command parameter string. Added "-F" mode that acts
|
|
"destructivelly". Added "-l" mode that enables the listing of
|
|
folders previously backed up.
|
|
(-createFolder:withFM:): new method that enables the restoration
|
|
of folders that were previously deleted.
|
|
|
|
* Tools/SOGoToolBackup.m (-extractUserPreferences:intoRecord:): we
|
|
must extract the values of the user defaults in order to put them
|
|
in the record dictionary. Putting the defaults themselves will
|
|
only produce serialized strings.
|
|
|
|
2009-08-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m: the objectClass are now all added
|
|
to the return user records.
|
|
|
|
* Tools/NSDictionary+SOGoTool.m (-userRecordAsLDIFEntry): new
|
|
method that converts a user record as returned by LDAPSource to a
|
|
compliant LDIF entry.
|
|
|
|
* Tools/NSDictionary+SOGoTool.[hm]: new category module.
|
|
|
|
* Tools/SOGoToolBackup.m: new "sogo-tool" utility that backs up
|
|
user data following the file-format specified in README.backup
|
|
|
|
* Tools/SOGoToolRemoveDoubles.m: new "sogo-tool" utility method
|
|
implementing the old "sogo-contacts-removedoubles" utility.
|
|
|
|
* Tools/SOGoToolCheckDoubles.m: new "sogo-tool" utility method
|
|
implementing the old "sogo-contacts-checkdoubles" utility.
|
|
|
|
* Tools/SOGoTool.m: new class module implementing the base class
|
|
for all management modules for "sogo-tool".
|
|
|
|
* Tools/sogo-tool.m: new command-line tool that offers a generic
|
|
utility for SOGo administration.
|
|
|
|
2009-08-12 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MainUI/Version (SUBMINOR_VERSION): 1.0.4 release.
|
|
|
|
2009-08-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m
|
|
(-takeValuesFromRequest:inContext:): same as below, for the organizer.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
(-changeParticipationStatus:forRecurrenceId): when setting the
|
|
"SENT-BY" attribute value, we need to use "setValue:0.." instead
|
|
"addValue:" to avoid invalid accumulation of values.
|
|
|
|
2009-08-11 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-_handleOrganizer]): remove organizer when the event has no attendee.
|
|
([UIxComponentEditor -_toolbarForOwner:andClientObject:]): return
|
|
the proper toolbar when editing the occurrence of a repeating event.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -saveComponent:]): when removing a single
|
|
attendee from an event, the organizer is no longer defined;
|
|
therefore, we must check if the owner is the organizer of the
|
|
previous version of the event, not the new event.
|
|
|
|
2009-08-10 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.m
|
|
Fixed an issue where the LDAP entries wouldn't be
|
|
cached properly in memcached.
|
|
|
|
2009-08-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction):
|
|
modified to handle the case where the active user has the "respond
|
|
to" permission, in which case we grab the copy of the iCalendar
|
|
which is already in the DB and modify the partstats thereof based
|
|
on the entries found in the uploaded iCalendar. The latter is
|
|
discarded silently to avoid any further change.
|
|
|
|
* SoObjects/Appointments/iCalEntityObject+SOGo.m
|
|
(-userAsParticipant): new method that returns the "PARTICIPANT"
|
|
entity of the SOGoUser passed as parameter, if found.
|
|
|
|
* Tests/webdavlib.py (WebDAVClient._prepare_headers): fixed a typo
|
|
causing the "depth" parameter to never be issued in query heades.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
(+webdavAclManager): don't register "respond-to-component" as
|
|
abstract, otherwise it won't appear in the returned list.
|
|
|
|
2009-08-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/test-davacl.py: added tests for the Contacts module.
|
|
|
|
* Tests/all.py: modified to load and run all the test modules
|
|
found in the current directory, as long as they are prefixed by
|
|
"test-".
|
|
|
|
2009-08-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tests/davacl.py: new functional testsuite for DAV acls on
|
|
Calendar collections, most rights and featured are covered.
|
|
Possible improvements are mentionned in the "TODO" section.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m (-aclsForUser:):
|
|
don't adjust roles based on the component access class if the
|
|
component is new.
|
|
|
|
* Tests/webdavlib.py (WebDAVClient._prepare_headers): we don't set
|
|
the "content-length" header if the body is None.
|
|
(HTTPSimpleQuery.render): method must take a "self" parameter.
|
|
(WebDAVCalendarMultiget.__init__): added transaction class.
|
|
|
|
2009-08-06 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m ([UIxPreferences
|
|
-defaultAction]): if the compose message type (HTML or plain text)
|
|
has changed, reload the page (don't close it). This is a fix for a
|
|
bug with disabling or enabling the CKEDITOR dynamically (in JavaScript).
|
|
|
|
2009-08-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-davSyncCollection): enhanced to
|
|
return a DAV error with the "valid-sync-token" condition tag when
|
|
a token is provided while the collection is empty.
|
|
|
|
* SoObjects/SOGo/WOResponse+SOGo.m: new class module.
|
|
(-appendDAVError:): utility method that adds and formats the XML
|
|
body of a DAV error, with the error condition passed as argument.
|
|
|
|
2009-08-05 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added missing files for Hungarian translation
|
|
* Fixed the reply / forward ops for many translations
|
|
|
|
2009-08-03 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Dropped the current caching subsystem based on
|
|
GNUstep's DO and replaced it with memcached. This
|
|
is much more efficient and scalable than DO and will
|
|
also prevent obscure libffi/libffcall crashes on
|
|
various platforms.
|
|
|
|
2009-08-03 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalView.m ([UIxCalView -setCurrentView:]): avoid
|
|
writing the user defaults if the current view hasn't change.
|
|
|
|
2009-07-29 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-hasAttendees]): new method used to show organizer only if the event
|
|
has attenddes (read-only view).
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor
|
|
-taskStartDateTimeText]): new method to return a localized
|
|
description of the start date and time.
|
|
([UIxTasEditor -taskDueDateTimeText]): idem for the due date and
|
|
time.
|
|
([UIxTaskEditor -statusDateText]): idem for the status (task
|
|
completed) date.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor -reply]):
|
|
the participation status of the calendar's owner is now returned
|
|
instead of the participation status of the active user.
|
|
([UIxComponentEditor -getDateFor:]): deleted, no longer needed.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-aptStartDateText]): new method to return a localized description
|
|
of the start date.
|
|
([UIxAppointmentEditor -aptStartDateTimeText]): idem for the start
|
|
date and time.
|
|
([UIxAppointmentEditor -aptEndDateTimeText]): idem for the end
|
|
date and time.
|
|
|
|
2009-07-29 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m: Added c_o as a search field.
|
|
|
|
2009-07-27 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-roleForComponentsWithAccessClass:forUser:]): now returns an empty
|
|
string when user is owner of the calendar.
|
|
|
|
2009-07-23 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (repeatLabel), (ownerIsAttendee),
|
|
(delegateIsAttendee), (eventIsReadOnly), (startDateString), (endDateString):
|
|
Added for Mantis 78.
|
|
|
|
2009-07-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-davPOSTRequest:withContentType:inContext:) we use a simple comma
|
|
as recipient separator but with trim the resulting elements.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m (-trimmedComponents): new
|
|
method that returns a trimmed/stripped version of the strings
|
|
contained in the array.
|
|
|
|
2009-07-22 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m: Added "editable" field to tasks, so
|
|
that the UI can disable the checkboxes next to them.
|
|
|
|
2009-07-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoUserFolder+Appointments.m
|
|
(-davCalendarScheduleInboxURL, -davCalendarScheduleOutboxURL)
|
|
(-davDropboxHomeURL, -davNotificationsURL): proxied methods to a
|
|
common accessor.
|
|
|
|
2009-07-21 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalendarProperties.m: Prevent doing anything when not
|
|
executing @"saveProperties". Added wrapper methods for
|
|
showCalendarTasks/Alarms. Added reloadTasks var.
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m: Added
|
|
(set/showCalendarTasks), (set/showCalendarAlarms)
|
|
* SoObjects/SOGo/SOGoGCSFolder.m: Added dicts to cleanup on unsubscribe.
|
|
* UI/Scheduler/UIxCalListingActions.m: Added support for
|
|
showCalendarAlarms/Tasks.
|
|
|
|
2009-07-21 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
|
|
-stringByEscapingURL]): the UTF-8 encoding is now specified for the
|
|
filename of an attachment.
|
|
|
|
2009-07-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-caldavFreeBusyRequest:): the list of recipients is now deduced
|
|
from the list of attendees specified in the VFREEBUSY.
|
|
|
|
2009-07-20 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m (davResourceType): Removed
|
|
a few things for the iPhone calDAV sync (schedule-inbox, schedule-outbox,
|
|
vevent-collection, vtodo-collection).
|
|
* SoObjects/SOGo/WORequest+SOGo.m (isIPhone): Added new method to detect
|
|
iPhone's DAV client.
|
|
|
|
2009-07-20 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:):
|
|
avoid returning repeating events when no end date is
|
|
defined. Ultimately, we should return the first occurrence of
|
|
repeating events when no end date is defined and therefore, move
|
|
the logic into iCalRecurrenceCalculators.
|
|
|
|
2009-07-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/SOGoUI/UIxComponent.m (-responseWithStatus:): revert the
|
|
default content-type to text/plain; charset=utf-8.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: initialize the
|
|
"listFilter" global var depending on the value of the filter
|
|
popup.
|
|
|
|
* UI/Scheduler/UIxCalFilterPanel.m (-selectedFilter): return
|
|
"view_today" as default filter.
|
|
|
|
2009-07-17 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-mailerContactsAction]): restored method lost with
|
|
UIxContactsListViewContainer.
|
|
|
|
2009-07-17 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(freebusyResponseForRecipient): Removed CDATA tag
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m (iCalPersonWithUID): Removed
|
|
setCn, since iCal fails when present.
|
|
|
|
2009-07-16 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -setOwner:]): update
|
|
ivar activeUserIsOwner when changing owner.
|
|
|
|
2009-07-16 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m: Added categories, categoriesValue,
|
|
setCategoriesValue to allow editing of calendar categories.
|
|
* UI/Scheduler/UIxComponentEditor.m: Made modifications to fetch categories
|
|
from user defaults, if they exist.
|
|
|
|
2009-07-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m (-categoryList): insert the
|
|
category of the current component in the list, don't convert it
|
|
to upper case and sort the resulting list alphabetically.
|
|
|
|
2009-07-14 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m: Added a default title for
|
|
vevents and vtodos
|
|
|
|
2009-07-14 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -buildDate]): moved
|
|
method from UIxPageFrame.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent _updateRecurrenceIDsWithEvent:]): fixed a
|
|
crash that occurs when saving a recurrent task with
|
|
originalCalendar not initialized.
|
|
|
|
2009-07-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoUserFolder+Appointments.m
|
|
(-davCalendarUserAddressSet): we return the "MAILTO:" prefix in
|
|
lower case instead.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
(-davCalendarComponentSet): new method, copied from
|
|
SOGoAppointmentFolder.
|
|
|
|
2009-07-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m (-davResourceType): new
|
|
resource that returns an empty string for DAV compliance.
|
|
|
|
2009-07-09 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailRenderingContext.m: Display .tiff as
|
|
attachments, some browsers don't support tiff.
|
|
* SoObjects/Mailer/SOGoDraftObject.m: Fixed content type for multipart
|
|
messages.
|
|
|
|
2009-07-07 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-attach:]): new method to return the ATTACH property of the
|
|
component.
|
|
([UIxComponentEditor -setAttach:]): associated setter method.
|
|
|
|
* iCalEntityObject.m ([iCalEntityObject -attach]): new method to return the
|
|
ATTACH property of the component as a URL.
|
|
([iCalEntityObject -setAttach:]): new method to set the ATTACH property.
|
|
|
|
2009-07-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-additionalWebdavSyncFilters): overriden method for returning a
|
|
clause that takes the DAV time limit into account.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-davSyncCollection:): added the
|
|
ability to specify additional filters for elements that must be
|
|
returned.
|
|
(-additionalWebdavSyncFilters): new method that returns a
|
|
parametrable where clause for reset queries.
|
|
|
|
2009-07-07 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js: Fixed Drag&Drop issue (header was
|
|
draggable)
|
|
* UI/WebServerResources/ContactsUI.js: Fixed Drag&Drop issue (header was
|
|
draggable)
|
|
* UI/WebServerResources/MailerUI.js: Revert
|
|
* UI/WebServerResources/ContactsUI.js: Revert
|
|
* UI/WebServerResources/MailerUI.js: Fixed Mantis #45
|
|
* UI/WebServerResources/ContactsUI.js: Fixed Mantis #45
|
|
* UI/MailerUI/UIxMailListView.m: Made "Size" column sortable
|
|
* SoObjects/SOGo/SOGoGCSFolder.m: Fixed Mantis #48
|
|
|
|
2009-07-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m (-eventsBlocksAction): added
|
|
sanity checks to avoid crashes when quick fields were wrongly
|
|
parsed.
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.m (_fillContactMailRecords:): if
|
|
the user uid contains a "@", we set it directly as system email
|
|
rather than suffixing it with the default mail domain.
|
|
|
|
2009-07-02 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
|
-columnsDisplayOrder]): added the size column to the default columns.
|
|
|
|
2009-07-02 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m: Added auto-subscribe on imap folder
|
|
creation.
|
|
|
|
2009-07-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-lookupName:inContext:acquire:): handle "AsTask" and
|
|
"AsAppointment" url suffix only for the default "so" handler.
|
|
|
|
2009-07-01 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m: Remove color from user settings on
|
|
unsubscribe.
|
|
* SoObjects/SOGo/SOGoGCSFolder.m: Re-fixed to also remove from InactiveFolders
|
|
and FolderSyncTags.
|
|
* UI/MailerUI/UIxMailFolderActions.m (_trashedURLOfFolder:withCO:): Fixed
|
|
issue when deleting a folder with the same name as one already in the Trash.
|
|
|
|
2009-06-30 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m
|
|
([UIxMailPartICalActions -addToCalendarAction]): new method to add
|
|
a calendar from an invitation (used to work?!).
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m ([NSString
|
|
-_handleURLs:textToMatch:prefix:inRanges:]): fixed offset
|
|
of range after replacement.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m ([NSArray
|
|
-hasRangeIntersection:]): fixed error in range comparison.
|
|
|
|
2009-06-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-davCalendarMultiget, -davCalendarQuery): certain dav attribute
|
|
methods do not necessitate additional fields, we declare their
|
|
corresponding fields to "". Also, we make sure those fake fields
|
|
are not specified in the SQL query and we ensure all the fields
|
|
are only requested once each.
|
|
(-davCalendarComponentSet): we need to retain the returned
|
|
array to avoid a crash during the next access to the attribute.
|
|
|
|
2009-06-30 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js: Added drag & drop support!
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m: Removed an extra NSLog
|
|
* UI/MailerUI/UIxMailListView.m: Added support for "Size" column, fixed a
|
|
bug when number of columns != 7.
|
|
|
|
2009-06-29 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js: Added drag & drop support
|
|
* UI/WebServerResources/ContactsUI.js: Disabled drag & drop for lists
|
|
|
|
2009-06-29 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
-initSubFolders]): system folders (LDAP sources) are now loaded
|
|
unconditionally.
|
|
([SOGoFolderParent -initSubscribedSubFolders]): new method to load
|
|
only subscribed folders.
|
|
([SOGoParent -lookupName:inContext:acquire:]): we now properly
|
|
lookup in subscribed folders.
|
|
([SOGoParentFolder -subFolders]): since the subscribed folders are
|
|
now stored in its own dictionary, we must return keys from both
|
|
dictionaries.
|
|
|
|
2009-06-26 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.[hm]: this class was
|
|
removed along with the template and moved to UIxContactFoldersView.
|
|
|
|
2009-06-26 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxPreferences.js: Fixed a bug when
|
|
ComposeMessagesType isn't set, removed an "alert"
|
|
|
|
2009-06-25 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailReply.m: Added proper blockquote
|
|
* UI/WebServerResources/UIxMailEditor.js: Use CKeditor
|
|
* SoObjects/Mailer/SOGoMailForward.m: Added htmlComposition property,
|
|
changed almost all methods to escape what needsto be escaped.
|
|
* UI/WebServerResources/UIxPreferences.js: Fixed CKeditor toggle issue
|
|
|
|
2009-06-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-davSyncCollection:): certain
|
|
dav attribute methods do not necessitate additional fields, we
|
|
declare their corresponding fields to "". Also, we make sure those
|
|
fake fields are not specified in the SQL query and we ensure all
|
|
the fields are only requested once each.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(+initialize): we no longer need reportQueryFields nor
|
|
reducedReportQueryFields.
|
|
(-davCalendarQuery:,-davCalendarMultiget:): automatically include
|
|
"c_component" in the requested fields, so that items can be
|
|
instantiated properly.
|
|
|
|
2009-06-23 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Mailer/NSString+Mail.m (stringByConvertingCRLNToHTML): Added
|
|
* UI/MailPartViewers/UIxMailPartTextViewer.m (stringByConvertingCRLNToHTML):
|
|
Removed
|
|
* SoObjects/Mailer/SOGoDraftObject.m: Added support for html content type
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m: Added support for html content
|
|
type in mail reply
|
|
* SoObjects/Mailer/SOGoMailReply.m: Added support for html in mail editor
|
|
* UI/PreferencesUI/UIxPreferences.m: Added option to se content type for
|
|
mail editing
|
|
* UI/WebServerResources/GNUmakefile: Added fckeditor entry
|
|
* UI/WebServerResources/UIxMailEditor.js: Plugged-in FCKEditor
|
|
* UI/WebServerResources/UIxPreferences.js: Plugged-in FCKEditor, handle html
|
|
toggle for signature box
|
|
|
|
2009-06-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-davSyncCollection:): deleted
|
|
records are always ignored when fetching fields from the quick
|
|
table, we thus need to make two separate queries.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-davResourceType): return the "schedule-inbox" and
|
|
"schedule-inbox" caldav types when the user is the owner and the
|
|
collection is its personal calendar.
|
|
(-davCalendarComponentSet): new method that returns VEVENT and
|
|
VTODO.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (davSyncCollection:): new method
|
|
that implements the draft webdav sync specification
|
|
(http://ietfreport.isoc.org/idref/draft-daboo-webdav-sync/).
|
|
|
|
* SoObjects/SOGo/NSString+DAV.m (asWebDAVTupleWithContent:): new
|
|
method that returns a DAV dictionary from a flat DAV element (self)
|
|
string and a content.
|
|
|
|
* SoObjects/SOGo/NSArray+DAV.m (asWebDavStringWithNamespaces:): we
|
|
no longer use an NSEnumerator in order to be a bit faster.
|
|
|
|
2009-06-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/DOMNode+SOGo.m
|
|
(-flatPropertyNameOfSubElements): new method that returns
|
|
flattened ({namespace}tag) names of the first direct child
|
|
elements.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-davSQLFieldsTable): new method
|
|
that returns a correspondance table between requested dav
|
|
properties and SQL fields required to answer them.
|
|
(-parseDAVRequestedProperties:): new method derived from a similar
|
|
one in SOGoAppointmentFolder which will return a dictionary of DAV
|
|
properties that are requested as well as their corresponding SQL
|
|
fields.
|
|
|
|
* SoObjects/SOGo/DOMNode+SOGo.[hm]: new category module that
|
|
implement helper methods for DOM processing.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(davCalendarQuery:): specify default values for "start" and "end"
|
|
whenever one of them is missing.
|
|
|
|
2009-06-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-fetchFields:...): don't use the privacySqlString twice.
|
|
The component parameter MUST be a NSString from now on. Fixed a
|
|
syntax problem in the where clause occuring when vtodo components
|
|
were requested.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m (-storedEventObject):
|
|
use the new "storedEventFetched" bool ivar to specify whether we
|
|
already attempted to fetch the event from the user calendars.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m (-rolesForObject:inContext:): do not
|
|
query the acls for the object if the current user is its owner.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m (-initSubFoldersMatching:):
|
|
renamed from "initSubFolders". Take a string argument that, if
|
|
specified, will stop the search of folders when the name can be
|
|
found in the folders list.
|
|
|
|
2009-06-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-davCalendarQuery:, davCalendarMultiget:): we now fetch the only
|
|
fields that are required by the DAV query from the database
|
|
tables.
|
|
(-bareFetchFields:from:to:title:component:additionalFilters:,fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:):
|
|
optimized the privacy SQL string to a single where clause based on
|
|
the tables computed in initializeQuickTablesAclsInContext:.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m (-valuesForKeys:)
|
|
overriden method to speed up PROPFIND requests.
|
|
|
|
2009-06-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m (-hasRangeIntersection):
|
|
modified to use the range pointers rather than serialized
|
|
representations.
|
|
|
|
2009-06-15 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-_appendCycleException:firstInstanceCalendarDateRange:fromRow:forRange:toArray:]):
|
|
for exceptions in the date range, add the boolean key
|
|
"isException" to the dictionary.
|
|
(-_flattenCycleRecords:fetchRange:): renamed method (was
|
|
-fixupCyclicRecords:fetchRange:).
|
|
|
|
2009-06-12 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor
|
|
-addressBooksList]): LDAP-based addressbooks must not be
|
|
editable, even for super users.
|
|
|
|
2009-06-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m (-davUserQuery:): do not return
|
|
the user information for the current user.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m (-usersSearchAction): do not return
|
|
the user information for the current user.
|
|
(-foldersSearchAction): the method only search folders for the
|
|
owner of the current folder. The "user" parameter has thus been
|
|
removed.
|
|
|
|
2009-06-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m (-stringByDetectingURLs):
|
|
fixed a leak. Fixed a crash on GNUstep by using arrays of pointers
|
|
to NSRange instead of converting/parsing them to/from NSString.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m (-addRange): removed method.
|
|
(-addNonNSObject:withSize:copy:): new helper method to add object
|
|
pointers to arrays.
|
|
(-freeNonNSObjects): new helper method to release the above object
|
|
pointers.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m: fixed rendering of
|
|
CSS content containing comment characters. Ignore certain HTML
|
|
tags that can alter the appearance of the SOGo display altogether
|
|
(SCRIPT, LINK, BASE, META, TITLE).
|
|
|
|
2009-06-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m
|
|
(-iCalStringForFreeBusyInfos:withMethod:andUID:andOrganizer:from:to:):
|
|
accept additional "UID" and "organizer" parameters that will be set as
|
|
attributes on the reported freebusy object.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-freebusyResponseForRecipient:withUser:andCalendarData:): expose
|
|
the calendar-data as as !CDATA element.
|
|
|
|
* SoObjects/SOGo/SOGoWebDAVValue.m
|
|
(-asWebDavStringWithNamespaces): new overriden method to enable
|
|
the passing of unescapable strings.
|
|
|
|
2009-06-09 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalView.m ([UIxCalView -setCurrentView:]): new
|
|
method to save the user's current view in her/his settings.
|
|
|
|
* UI/Scheduler/UIxCalMainView.m ([UIxCalMainView -currentView]):
|
|
returns the active user's last calendar view.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -_sqlStringRangeFromto:]): dates are not
|
|
necessarily defined in case of vTODOs; don't apply the range
|
|
constraint when dates are null so the SQL query return tasks.
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:from:to:title:component:additionalFilters:includeProtectedInformation:]):
|
|
recurrent tasks are now returned as normal components and are
|
|
shown in the web interface. They are not flatten as recurrent
|
|
events are.
|
|
|
|
2009-06-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m (-davCollectionTag): moved method
|
|
from SOGoAppointmentFolder since we will need it for contacts
|
|
folders as well.
|
|
|
|
2009-06-08 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m: Added c_cycleenddate in
|
|
dav date limitation. Added c_cycleenddate = NULL
|
|
|
|
2009-06-05 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m: Added support to ignore
|
|
office hours.
|
|
* UI/Templates/SchedulerUI/UIxAttendeesEditor.wox: Removed old commented-out
|
|
buttons, added text as a proper string.
|
|
* UI/WebServerResources/UIxAttendeesEditor.js: Fixed scrolling issues,
|
|
added support for "onlyOfficeHours" checkbox
|
|
|
|
2009-06-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m: add a default
|
|
attachment path of "1" when path is nil and thus unique.
|
|
|
|
* UI/SOGoUI/UIxComponent.m (-_parseQueryString:): fixed handling
|
|
of bad charsets in the parameters encoding. Invalid values will be
|
|
discarded.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m
|
|
(-lookupContactsWithFilter:sortBy:ordering:): same as below.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m: properly escaped user-entered
|
|
strings which may contain quotes and thereby mess up the LDAP
|
|
queries.
|
|
|
|
2009-06-04 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m: Added everything needed for the
|
|
findSlot action. Fixes for allday & multiday events.
|
|
|
|
* UI/WebServerResources/UIxAttendeesEditor.js: Added everything needed for
|
|
the findSlot action. Fixes for allday events. Fixed scrolling issues
|
|
|
|
* UI/Scheduler/UIxCalListingActions.h (findPossibleSlotAction): Added header.
|
|
|
|
2009-06-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
|
(-initializeQuickTablesAclsInContext:): new method that
|
|
initializes the new "userCanAccessAllObjects" ivar.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
(-initWithName:inContainer:): added new
|
|
"userCanAccessObjectsClassifiedAs" ivar (array of bools) to
|
|
quickly determine whether a user can access a component
|
|
informations.
|
|
(-initializeQuickTablesAclsInContext:): new method that
|
|
initializes the new ivar above.
|
|
(-davCalendarQuery:, -davCalendarMultiget:): invoke the new method
|
|
above.
|
|
|
|
* Main/NSException+Stacktrace.m, SOPE/NGCards/NGCardsSaxHandler.m,
|
|
SOPE/NGCards/NSString+NGCards.m,
|
|
SOPE/NGCards/versitCardsSaxDriver/VSSaxDriver.m,
|
|
SoObjects/Appointments/SOGoAppointmentFolder.m,
|
|
SoObjects/SOGo/NSArray+Utilities.m,
|
|
SoObjects/SOGo/SOGoGCSFolder.m,
|
|
SoObjects/SOGo/SOGoLDAPUserDefaults.m,
|
|
UI/MailPartViewers/UIxMailPartTextViewer.m,
|
|
UI/MainUI/SOGoUserHomePage.m, UI/Scheduler/UIxCalListingActions.m:
|
|
replaced all invocations of "malloc", "realloc", "free" by similar
|
|
invocations to NSZoneMalloc, NSZoneRealloc and NSZoneFree.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m (+initialize):
|
|
removed obsolete security declarations.
|
|
(-davCalendarQuery, -davCalendarMultiget): delegate conversion of
|
|
"properties" NSArray to C array to submethods. Those submethods
|
|
now pass a count parameter to properly evaluate the amount of
|
|
responses instead of the static 100 value. Make use of
|
|
NSZoneMalloc instead of malloc.
|
|
|
|
* Tools/sogo-contacts-removedoubles.m: added code to avoid
|
|
removing cards referenced in vlists.
|
|
|
|
2009-06-02 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -postCalDAVEventRequestTo:from:]): remove
|
|
alarms from invitation and set organizer of master event when
|
|
dealing with a recurrent event.
|
|
|
|
2009-06-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Tools/sogo-contacts-removedoubles.m: new maintenance utility
|
|
that removes double records in specified addressbooks.
|
|
|
|
* Tools/sogo-contacts-checkdoubles.m: new maintenance utility that
|
|
helps determine which contact folders need cleanup.
|
|
|
|
2009-06-02 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m (_enforceTimeLimitOnFilter):
|
|
Rewrote algorithm, fixed cyclic events issue.
|
|
* UI/WebServerResources/UIxAttendeesEditor.js: Fixed update bug on "enter"
|
|
* UI/Templates/SchedulerUI/UIxAttendeesEditor.wox: Removed next/prev hour
|
|
and zoom buttons
|
|
|
|
2009-06-02 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated the documentation (version change, Russian
|
|
language addition and documentation of the WOApplicationRedirectURL
|
|
parameter)
|
|
|
|
2009-06-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m (-deleteFolderAction):
|
|
renamed to deleteAction to match the methods in UI/Common/*Actions.m
|
|
|
|
* UI/Common/UIxFolderActions.m (-): removed useless method since
|
|
SOGoFolders can use the "delete" web method to achieve the same result.
|
|
|
|
* SoObjects/SOGo/SOGoPermissions.m: declared new "Delete Object"
|
|
permission.
|
|
|
|
2009-06-01 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxContactsUserFolders.js (onSearchFormSubmit):
|
|
Fixed encoding issue/crash.
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m (_parseCalendarFilter):
|
|
Added support for default SOGoDAVCalendarStartTimeLimit, which is the
|
|
maximum number of days for dav queries.
|
|
Added: _enforceTimeLimitOnFilter, _getMaxStartDate and _getStartTimeLimit
|
|
|
|
2009-05-30 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Modified SOGoCalendarComponent.m so that we
|
|
explicitely add the MIME-Version header when
|
|
sending out invitation messages.
|
|
|
|
2009-05-23 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added Russian tranlation - patch from
|
|
Alex Kabakaev <lists@kas.tomsk.ru>
|
|
|
|
2009-05-22 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* Main/sogod.m (main): verify if the default parameter
|
|
WOApplicationRedirectURL is defined and if so, removed any
|
|
trailing slash.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-_toolbarForOwner:andClientObject:]): ignore the participation
|
|
status for tasks so the usual edition toolbar appears.
|
|
|
|
2009-05-21 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Regenerated the SOPE patchset so we now correctly
|
|
support the windows-1251 charset
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
We now correctly support the koi8-r and windows-1251
|
|
encodings when decoding HTML mails.
|
|
|
|
2009-05-19 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-allFolderPaths]): if the user default "showSubscribedFoldersOnly"
|
|
is not defined for the user, use the application default
|
|
"SOGoMailShowSubscribedFoldersOnly".
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m ([UIxPreferences
|
|
-showSubscribedFoldersOnly]): return the user default or the
|
|
application default if not defined.
|
|
([UIxPreferences-setShowSubscribedFoldersOnly]): when false, set
|
|
the user default parameter "showSubscribedFoldersOnly" to NO
|
|
instead of removing the entry. This will ensure user defaults are
|
|
taking precedence over application defaults.
|
|
|
|
2009-05-15 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SOPE/sope-ldap/NGLdap/NGLdapConnection.m: added methods
|
|
primaryFetchMailboxHierarchyForURL:onlySubscribedFolders: and
|
|
allFoldersForURL:onlySubscribedFolders: to offer the possibility
|
|
to use the IMAP command LSUB instead of LIST.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-allFolderPaths]): return only subscribed folders if user default
|
|
"showSubscribedFoldersOnly" is true.
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m ([SOGoUserDefaults
|
|
-setObject:forKey:]): fix an issue when calling removeObjectForKey
|
|
and value is nil.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m ([UIxPreferences
|
|
-setShowSubscribedFoldersOnly:]): setter for the user default
|
|
"showSubscribedFoldersOnly".
|
|
|
|
2009-05-12 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m ([LDAPSource -initFromSource:]):
|
|
retrieves the user default attribute "IMAPHostFieldName" so the
|
|
IMAP server name can be fetched from the LDAP directory.
|
|
([LDAPSource -_fillEmailsOfEntry:intoContactEntry:]): if a IMAP
|
|
hostname field is specified for the source, retrieve the LDAP
|
|
attribute and set the value to the key "c_imaphostname".
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m (SOGoMailAccount
|
|
-_urlHostString]): the IMAP server name is now retrieved from the
|
|
SOGoUser object and no longer hardcoded to the fallbackIMAP4Server
|
|
user default.
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager
|
|
-_fillContactInfosForUser:withUIDorEmail:]): now fills the user
|
|
attributes dictionary with the IMAP hostname if specified and defined.
|
|
|
|
2009-05-06 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-removeAclsForUsers:atObjectPath:]): verify if user is a group and
|
|
prefix the UID with "@" if so.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -expandGroupsInEvent:]): new method from
|
|
the code that was in [SOGoAppointmentObject -_handleAddedUsers:]
|
|
and [SOGoAppointmentObject -_PUTAction:] that expands the groups
|
|
among the attendees of the passed event.
|
|
|
|
2009-05-05 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
+userWithLogin:roles:trust:]): don't set the roles if the passed
|
|
roles are not defined.
|
|
|
|
2009-05-03 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Common/UIxUserRightsEditor.m ([UIxUserRightsEditor
|
|
-_initRights:]): add the "@" prefix to groups UID.
|
|
|
|
* SoObjects/SOGo/SOGoGroup.m ([SOGoGroup +groupWithIdentifier:]):
|
|
returns a SOGoGroup instance matching the specified UID value or
|
|
nil if no group is found.
|
|
([+groupWithEmail:]): idem for the specified email address.
|
|
([-members]): now properly search among all LDAP sources for the
|
|
members of the group.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-_fetchAclsForUser:forObjectAtPath:]): also search for entries
|
|
prefixed by a "@" corresponding to group entries. For those
|
|
entries, find the members and add the ACLs if the user if part of
|
|
the group.
|
|
([-setRoles:forUser:forObjectAtPath:]): prefix the UID with the
|
|
"@" character when dealing with a group.
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager
|
|
-getLoginForDN:]): searches among all defined LDAP sources and
|
|
returns the UIDFieldName value for the requested DN.
|
|
([-contactInfosForUserWithUIDorEmail:]): prior to perform the
|
|
search, removes the "@" prefix used to identified groups in the
|
|
ACL tables.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m ([LDAPSource -lookupLoginByDN:]):
|
|
returns the UIDFieldName value for the requested DN.
|
|
([-lookupGroupEntryByUID:]): returns the LDAP entry corresponding
|
|
to a group (ie with an objectClass of member, uniqueMember,
|
|
memberUid, or memberOf) for the requested UID.
|
|
([-lookupGroupEntryByEmail]): idem for the requested email address.
|
|
([-lookupGroupEntryByAttribute:andValue:]): idem for the specified
|
|
value for the specified attribute.
|
|
([-baseDN]): accessor for the base DN.
|
|
|
|
* UI/Common/UIxAclEditor.m ([UIxAclEditor -_displayNameForUID:]):
|
|
removes the "@" prefix before looking up for the CN and email address.
|
|
|
|
2009-05-01 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -PUTAction:]): Slightly optimized
|
|
and we now consider the "X-SOGo: NoGroupsDecomposition"
|
|
special header.
|
|
|
|
2009-04-30 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added SoObjects/SOGo/SOGoGroup.{h.m} and
|
|
modified the LDAPSource, LDAPUserManager, SOGoAppoinmentObject
|
|
in order to add initial groups support which decomposes
|
|
groups to members when events are saved.
|
|
|
|
2009-04-27 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-_fillBlocks:withEvent:withNumber:]:): fixed index of recurrence
|
|
ID.
|
|
|
|
2009-04-22 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-alarmsListAction]): only return the alarms active for the next 48
|
|
hours and exclude any recurring event (for now).
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-viewAction]): if the form parameter "resetAlarm" is true, set the
|
|
property X-WebStatus to "triggered" in the event's alarm.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -viewAction]): new
|
|
method that returns some of the task properties. Currently only
|
|
used for the alarms. Behavior is similar to UIxAppointmentEditor.
|
|
|
|
* SoObjects/Appointments/iCalEvent+SOGo.m ([iCalEvent
|
|
-quickRecord]): don't update the c_nextalarm field if the event is
|
|
recurrent or if the property X-WebStatus is set to "triggered" in
|
|
the alarm's trigger definition.
|
|
|
|
* SoObjects/Appointments/iCalToDo+SOGo.m ([iCalToDo
|
|
-quickRecord]): idem.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -fetchAlarmInfosFrom:to:]): new method
|
|
that returns attributes of events and todos for which there's an
|
|
active alarm within the next 48 hours.
|
|
|
|
2009-04-21 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added Welsh translation - patches from the
|
|
National Library of Wales.
|
|
* Regenerated the SOPE patchset so that we correctly
|
|
handle Oracle's reconnection problems on RAC. We now
|
|
try by default 3 times before giving up when there
|
|
is a failover to an other node part of the RAC.
|
|
* Dropped old ChangeLog files and combined them
|
|
in ChangeLog.old
|
|
* Dropped old NOTES files
|
|
* Added Scripts/sql-update-101_to_102.sh to update
|
|
the database schema for the 1.0.2 release
|
|
* Scripts/sogod-wrapper - updted this script to
|
|
handle the TNS_NAMES environment variable for
|
|
Oracle RAC.
|
|
* Added the possibility to disable cache propagation
|
|
in SOGoCache (together with SOGoUser and SOGoUserDefaults)
|
|
in order to greatly reduce gdnc contention when a massive
|
|
amount of operations are performed by the SOGo super-usernames
|
|
* SoObjects/SOGo/SOGoGCSFolder.m: We avoid cache
|
|
propagation when subscribing users to resources as
|
|
a superuser.
|
|
* UI/Scheduler/UIxCalListingActions.{h,m}: Added
|
|
-alarmsListAction so that we correctly return the upcoming
|
|
alarms. It does NOT yet handle correctly recurring components.
|
|
|
|
2009-04-21 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor
|
|
-takeValuesFromRequest:inContext:]): removes any alarm if the
|
|
vTodo doesn't have a due date.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-_loadAlarms]): new method to extract the first alarm of the component.
|
|
|
|
* SoObjects/Appointments/iCalEvent+SOGo.m ([iCalEvent
|
|
-quickRecord]): added support for an event's alarm. The database
|
|
field "c_nextalarm" must first be added to all tables.
|
|
|
|
2009-04-13 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m: cleaned up and
|
|
also correctly implemented -lookupContactEntry.
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m:
|
|
we now use the correctly implemented -lookupContactEntry
|
|
method instead of -lookupContactEntryWithUIDorEmail
|
|
* Regenerated the SOPE patchset to include a fix
|
|
for Oracle RAC.
|
|
|
|
2009-04-09 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Reverted previous patch and provided the correct
|
|
fix in SOGoMailFolder: -postData:flags:
|
|
* Fixed the compilation of unit tests for NGCards.
|
|
* SoObjects/Mailer/SOGoMailFolder.m: Added -displayName
|
|
which returns -nameInContainer to avoid crashes when
|
|
sending ACL changes notifications for email folders.
|
|
|
|
2009-04-09 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject
|
|
-sendMail]): create the Sent folder if it doesn't exist.
|
|
|
|
2009-04-07 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* UI/Common/UIxPageFrame.m (isCompatibleBrowser): Fixed Safari 3 issue,
|
|
was only accepting 4+
|
|
|
|
2009-04-06 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Improved the sogod-wrapper script in order to
|
|
consider the IP address that can be specified
|
|
in the WOPort user default. Patch from
|
|
Romain LE DISEZ <romain.ledisez@netensia.fr>
|
|
* SoObjects/SOGo/LDAPSource.{h.m}: Now possible to
|
|
specify a scope for LDAP operations. Patch from
|
|
Yann Cezard <yann.cezard@univ-pau.fr>
|
|
|
|
2009-04-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m: we now support an "encryption"
|
|
parameter, having either a value of "ssl" or "starttls" to define
|
|
the type of encryption to be used, if any.
|
|
|
|
2009-04-01 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Dropped worthless tools
|
|
* Fixed tons of compiler warnings
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder appendObject:withBaseURL:
|
|
toREPORTResponse:]): We now check if we've got
|
|
an exception when looking up contacts and the LDAP-part
|
|
of SOGo is misconfigured and warn the admin (by adding
|
|
a log entry) about it.
|
|
|
|
2009-03-31 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
_fetchFieldsforComponentOfType:]): the method _fixDates must be
|
|
called even for the month view.
|
|
|
|
2009-03-25 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -siteFavicon]): new
|
|
method to allow the customization of the site favicon through the
|
|
user defaults SOGoFaviconRelativeURL.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -language]): must retain
|
|
the ivar language to avoid a crash if the language is retrieved
|
|
from the user agent header returned by the browser.
|
|
|
|
2009-03-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-takeValuesFromRequest:_rqinContext:_ctx]): ensure the values
|
|
meant to construct the custom recurrence rule are consistent.
|
|
|
|
* UI/Scheduler/UIxCalMainView.m: if the module settings key
|
|
exists, do not reset it.
|
|
|
|
2009-03-24 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailListView.m
|
|
([UIxMailListView messages)]:
|
|
Adjusted the sort so it's a little bit faster
|
|
and correctly work in case the server returns us
|
|
the FETCH response in an order different that what
|
|
we asked for.
|
|
|
|
2009-03-24 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -invalidateLanguage]):
|
|
new method to invalidate the language ivar.
|
|
|
|
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage -connectAction]): must
|
|
invalidate user's language ivar when it changes.
|
|
|
|
* SoObjects/SOGo/SOGoCache.m ([SOGoCache
|
|
-_userDefaultsHaveChanged:]): must invalidate the user's language
|
|
ivar when the defaults change.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent
|
|
-sendEMailUsingTemplateNamed:forObject:previousObject:toAttendees:]):
|
|
no longer send a deletion notification to an attendee who already
|
|
declined the meeting.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m
|
|
([UIxMailPartICalActions -_eventObjectWithUID:forUser:]): when
|
|
looking for an event for a specific user, we now search into all
|
|
the user's calendar folders.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([UIxMailPartICalViewer -startCalendarDate]): new method that returns
|
|
the start date with the proper timezone.
|
|
([-endCalendarDate]): idem for the end date.
|
|
([-startDate]): new method that returns a formatted string of the
|
|
start date.
|
|
([-endDate]): idem for the end date. Also take care of all-day events.
|
|
([-startTime]): new method that returns a formatted string ot the
|
|
start time.
|
|
([-endTime]): idem for the end time.
|
|
([-isEndDateOnSameDay]): must subtract 1 second from end date when
|
|
it's a all-day event.
|
|
|
|
2009-03-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-_loadAttendees]): make use of autoreleased strings to avoid a leak.
|
|
([UIxComponentEditor -dealloc]): release componentCalendar.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
-_prepareDefaultMailAccounts]): return an autoreleased array to
|
|
avoid a leak.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-initWithRequest:newRequest]): retain dateFormatter, since it is
|
|
released in -dealloc.
|
|
([UIxCalListingActions -dealloc]): do not release startDate and
|
|
endDate since they are not retained.
|
|
|
|
2009-03-23 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -_lookupEvent:forUID:]): when looking for
|
|
an event for a specific user, we now search into all the user's
|
|
calendar folders.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -lookupCalendarFoldersForUID:]): new
|
|
method that returns an array of a user's calendar folders
|
|
excluding the subscriptions.
|
|
|
|
2009-03-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-subscribe:reallyDoinTheNamesOf:delegatedUsersfromMailInvitation:isMailInvitationinContext:localContext]):
|
|
when the user preferences didn't already contain a key matching
|
|
the current module name, the subscriptions would not work. We thus
|
|
create one if none exists yet.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
|
|
-appendSystemSources]): modified the return type and returns nil,
|
|
to match the new SOGoParentFolder definition of the method.
|
|
Otherwise, a confusion is created on the stack.
|
|
|
|
2009-03-23 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m:
|
|
Don't retain/release the language ivar.
|
|
|
|
2009-03-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -language]): cache the
|
|
language in an ivar again, that is reset when the user settings or
|
|
defaults have been loaded successfully.
|
|
([SOGoUser -userDefaults]): invoke "fetchProfile" on the defaults
|
|
instance, in order to validate the DB connection.
|
|
|
|
2009-03-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
-initWithLogin:newLoginroles:newRoles]): removed "mailAccounts" ivar.
|
|
([-mailAccounts]): no longer cache the mailAccounts info in an ivar.
|
|
|
|
2009-03-20 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.{h,m}
|
|
We are now way quicker to react when the database
|
|
is down.
|
|
|
|
2009-03-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-allContactSearchAction]): trap @"SOGoDBException" and return nil
|
|
in that case.
|
|
|
|
* SoObjects/SOGo/SOGoUserDefaults.m ([SOGoUserDefaults
|
|
-jsonRepresentation]): return "{}" if values is nil (due to a DB
|
|
connection error).
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -userDefaults]): ensure the
|
|
values are not nil before putting them in the cache. This fixes an
|
|
exception occuring for setting a nil key in a dictionary.
|
|
([SOGoUser -userSettings]): same as above.
|
|
([SOGoUser -userDefaults]): if "value" is null, meaning that
|
|
database connectivity has failed, don't try to set default values,
|
|
which would trigger other connection tries.
|
|
|
|
2009-03-19 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-_fetchFields:forComponentOfType:]): the _fixDates method doesn't
|
|
have to be called for the month view.
|
|
|
|
2009-03-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-foldersOfType:folderTypeforUID:uid]): now also returns the owner
|
|
of the folders in the folder dictionary.
|
|
([SOGoUserFolder -davCollectionQuery:queryContext]): works again
|
|
for multiple users if the DAV:owner property is specified in the
|
|
query. The response is formatted in a way that is compatible with
|
|
both the 0.8x and 0.9x SOGo extensions.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
-homeFolderInContext:context]): no longer put the home folder in
|
|
cache, since it uses an context that is freed and invalidated
|
|
afterwards, which can cause crashes.
|
|
|
|
2009-03-19 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated the sope.spec file wrt to changes
|
|
related to 0.9 -> 1.0
|
|
* Updated the SOGo documentation to also reflect
|
|
the version change.
|
|
|
|
2009-03-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m: initialize max to the correct value.
|
|
|
|
2009-03-18 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage -version]): new method
|
|
that returns the application version.
|
|
|
|
* SOPE/NGCards/iCalDateTime.m ([iCalDateTime -dateTime]): when not
|
|
defined, the timezone is now guessed from the date of the current object.
|
|
|
|
2009-03-18 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated the documentation for the SOGo
|
|
update server.
|
|
* Enabled support for Konqueror. We use the
|
|
Safari 'exceptions' in the JavaScript code.
|
|
* Main/SOGo.m: Corrected a small mistake in previous
|
|
commit wrt sogod-0.9 > sogod change
|
|
* Updated the NEWS file for the release
|
|
|
|
2009-03-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactLDIFEntry.m ([SOGoContactLDIFEntry
|
|
-vCard]): same as below.
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
|
|
-iCalStringForFreeBusyInfos:_infoswithMethod:methodfrom:_startDateto:_endDate]):
|
|
same as below.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -calendar:create:secure]): specify
|
|
"-//Inverse inc./SOGo 1.0//EN" as PRODID.
|
|
|
|
* Main/sogod.m (convertOldSOGoDomain): new function that convert
|
|
the old "sogod-0.9" NSUserDefaults domain to "sogod".
|
|
|
|
* Main/SOGoProductLoader.m ([SOGoProductLoader
|
|
+sogoMajorVersion]): removed useless method.
|
|
([SOGoProductLoader +sogoMinorVersion]): removed useless method.
|
|
([SOGoProductLoader -init]): productDirectoryName is no longer an
|
|
ivar but a static string.
|
|
([SOGoProductLoader -productSearchPathes]): removed FHS paths from
|
|
search paths.
|
|
|
|
* Main/SOGo.m ([SOGo -name]): returns "SOGo".
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
-appendPersonalSources]): returns an NSException.
|
|
([SOGoParentFolder -appendSystemSources]): same as above.
|
|
([SOGoParentFolder -appendSubscribedSources]): same as above.
|
|
([SOGoParentFolder
|
|
-lookupName:nameinContext:lookupContextacquire:acquire]): if
|
|
initSubfolders returns an exception, this probably means a db
|
|
error occured, so we log the exception reason and return a 503.
|
|
([SOGoParentFolder -subFolders]): this method is invoked when a
|
|
PROPFIND is made on the current collection. If a DB error occurs,
|
|
we raise it to prevent SOPE from returning a 207 status code.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-lookupName:_keyinContext:_ctxacquire:_flag]): no longer invoke
|
|
the _accessDeniedPage when accessing the module is forbidden to
|
|
the current user. Instead, returns an HTTP exception with code
|
|
404.
|
|
|
|
2009-03-17 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Documentation/SOGo Installation Guide.odt
|
|
Updated to mention MySQL and to refer as 1.0
|
|
as the version number
|
|
* Scripts/sogo-init.d-debian and
|
|
Scripts/sogo-init.d-redhat
|
|
We now kill gdnc (only processes belonging to
|
|
the sogo user) when stopping sogod.
|
|
|
|
2009-03-16 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m: We now support
|
|
the specification of a filter. Also updated
|
|
the installation guide to document this new parameter
|
|
* sogo.spec: Modified so that we use our tmpwatch
|
|
script from /etc/cron.daily
|
|
|
|
2009-03-16 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-_fixDates:]): moved corrections for daylight saving time in this
|
|
new method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fixupCycleRecord:_recordcycleRange:_rfirstInstanceCalendarDateRange:_firforViewRange:_viewRange]):
|
|
propagate the start date of the cycle so it can be used later to
|
|
adjust the timezone.
|
|
* ([SOGoAppointmentFolder
|
|
-_appendCycleException:firstInstanceCalendarDateRange:fromRow:forRange:toArray:]): idem .
|
|
|
|
2009-03-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -occurence:occ]): create the occurence
|
|
with the first calendar event as master.
|
|
|
|
* SoObjects/Appointments/SOGoTaskObject.m ([SOGoTaskObject
|
|
-occurence:occ]): create the occurence with the first calendar
|
|
task as master.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent
|
|
-lookupName:lookupNameinContext:localContextacquire:acquire]):
|
|
initialize "isNewComponent" to NO if it's not, to avoid problems
|
|
with unitialized memory.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m ([LDAPSource
|
|
-setBaseDN:newBaseDNIDField:newIDFieldCNField:newCNFieldUIDField:newUIDFieldmailFields:newMailFieldsandBindFields:newBindFields]):
|
|
bug setting the CN and UID field only if they were set before,
|
|
rather than checking their value passed as parameter.
|
|
|
|
2009-03-13 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Optimized the IMAP client code to avoid
|
|
unnecessary STATUS calls.
|
|
|
|
2009-03-12 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated the SOPE patchset in order to
|
|
fix a bug in NGMimeBodyParser.
|
|
* Updated again the SOPE patchset to enable
|
|
MySQL support.
|
|
|
|
2009-03-11 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage
|
|
-readFreeBusyAction]): we now set the content-type to "text/plain"
|
|
to fix issues with nginx.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-contactSearchAction]): idem.
|
|
|
|
2009-03-11 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
We now correctly escape caracters that can be
|
|
present in the filename prior to initalizing
|
|
the NSURL instance.
|
|
* UI/MailerUI/UIxMailAccountActions.m
|
|
We correctly intialize the "unseen" variable
|
|
to nil in _statusFolders.
|
|
|
|
2009-03-09 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Documentation/SOGo Installation Guide.odt
|
|
Added two examples for default ACL.
|
|
* Updated the SOPE patchset
|
|
|
|
2009-03-08 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated the SOGo Mozilla Thunderbird Configuration
|
|
guide to add a note that WOApplicationRedirectURL
|
|
MUST match the updateURL in extensions.rdf from
|
|
SOGo Integrator
|
|
|
|
2009-03-05 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated prototype to the latest development version
|
|
in order to fix an IE7 bug related to the DOM load event
|
|
* Improved the mod_proxy/mod_proxy_balancer configuration
|
|
|
|
2009-03-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoLDAPUserDefaultsBootstrap.m: new module for
|
|
the libSOGoNSUserDefaults.so.1 library built when enabling
|
|
ldap-based configuration.
|
|
|
|
* Main/sogod.m (BootstrapNSUserDefaults): added function to load a
|
|
library named "libSOGoNSUserDefaults.so.1" which would bootstrap
|
|
the NSUserDefaults class with an arbitrary "pose class".
|
|
|
|
2009-03-04 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Fixed a small issue when fetching parts where
|
|
the encoding could be nil and subsequently, the
|
|
path couldn't be set.
|
|
|
|
2009-03-03 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Fixed various small issues with the SOGo
|
|
cache subsystem.
|
|
|
|
2009-03-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable -dayClasses]):
|
|
fixed the way the number of the current day is deduced,
|
|
independently from the timezone (d. saving time or not).
|
|
|
|
2009-03-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoComponentOccurence.m
|
|
([SOGoComponentOccurence -setComponent:newComponent]): retain the
|
|
component's parent instead of the component itself, which is
|
|
already retain by its parent anyway. See 2009-02-06 from me below.
|
|
([SOGoComponentOccurence -setMasterComponent:newMaster]): no
|
|
longer retain the "master" occurence since its parent is already
|
|
retained.
|
|
|
|
2009-03-02 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m
|
|
([SOGoObject -davRecordForUser:parameters:]):
|
|
Don't initialize the SOGoUser variable of
|
|
nocn AND noemail are passed.
|
|
* Dropped Protocols/* from the repository.
|
|
* Added missing Dutch wox templates
|
|
|
|
2009-02-23 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated German translation. Patch from
|
|
Alexander Greiner-Baer <sogo-algb@freenet.de>
|
|
* Added Italian translation. Patch from
|
|
Marco Lertora <marco.lertora@infoporto.it>
|
|
* Combined the various caches and moved the logic
|
|
towards the SOGoCache class. Deprecated the
|
|
SOGoLDAPUserManagerCleanupInterval defaults.
|
|
Now only SOGoCacheCleanupInterval should be used.
|
|
|
|
2009-02-19 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactsListView.m ([UIxContactsListView
|
|
-defaultSortKey]): replaced "displayName" by "c_cn", following
|
|
changes made on 2009-02-06.
|
|
|
|
* UI/Common/WODirectAction+SOGo.m ([WODirectAction
|
|
-responseWithStatus:]): set the default type so Firefox doesn't
|
|
complain when using nginx with SOGo.
|
|
|
|
2009-02-17 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactLDIFEntry.m ([SOGoContactLDIFEntry
|
|
-vCard]): We now correctly handle most address fields coming from
|
|
an LDAP server during the generation of the vCard.
|
|
|
|
2009-02-17 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView -messages]):
|
|
forced ordering of messages based on sorted UIDs.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-allContactSearchAction]): replaced references to "displayName" by
|
|
"c_cn", following changes made on 2009-02-06.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-_qualifierForFilter:]): changed search in email address to match
|
|
search behavior of Thunderbird.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m ([LDAPSource -_qualifierForFilter:]): idem.
|
|
|
|
2009-02-16 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated Dutch translation - patch from
|
|
Robert-Jan van Baal
|
|
|
|
2009-02-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder
|
|
-appendObject:objectwithBaseURL:baseURLtoREPORTResponse:r]): don't
|
|
lookup the returned object if its c_name has no length.
|
|
|
|
2009-02-06 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoUserFolder+Contacts.[hm]: new class to
|
|
add CardDAV stuff. Currently only implements the
|
|
addressbook-home-set report from the principal URL.
|
|
|
|
2009-02-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filtersincludeProtectedInformation:_includeProtectedInformation]):
|
|
added the "c_cycleinfo" and "c_cycleenddate" fields to the list of
|
|
fields that should not be stripped when removing protected informations.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -dealloc])
|
|
([UIxTaskEditor -todo]): same as below (apts).
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-event]): retain the event parent calendar object instead of the
|
|
event itself.
|
|
([UIxAppointmentEditor -dealloc]): release the above calendar.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([UIxMailPartICalViewer -dealloc]): no longer release "inEvent"
|
|
since it does not need to be retained.
|
|
|
|
* Main/SOGo.m ([SOGo +initialize]): added handling of the
|
|
"SOGoDebugLeaks" configuration variable.
|
|
([SOGo -dispatchRequest:_request]): log the classes of instances
|
|
that were leaked between the handling of the request, if
|
|
SOGoDebugLeaks is set.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-aclsForUser:uidforObjectAtPath:objectPathArray]): cache an empty
|
|
array if not acl have been returned for the specified user.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]):
|
|
same as below.
|
|
([SOGoContactGCSFolder -fixupContactRecord:contactRecord]): new
|
|
method that initializes c_mail, c_screenname, c_o,
|
|
c_telephonenumber to empty strings if not found.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder
|
|
-lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]):
|
|
no longer make use of the displayName, mail, screenName, phone and
|
|
org intermediary keys.
|
|
|
|
* UI/Contacts/UIxContactsListView.m ([-currentCName]): removed
|
|
useless method.
|
|
|
|
2009-02-05 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -responseWithStatus:):
|
|
we now set the content-type to "text/plain" to fix issues with nginx.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
([UIxMailPartHTMLViewer
|
|
-startElement:namespace:rawName:attributes:]): the base tag must be ignored.
|
|
|
|
2009-01-22 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated the Apache section in the installation
|
|
and configuration guide
|
|
* Apache/SOGo.conf
|
|
Updated to use mod_proxy and mod_proxy_balancer
|
|
instead of mod_ngobjweb. We now also distribute
|
|
requests across three sogod processes.
|
|
* sogo.spec
|
|
Removed mod_ngobjweb from the build dependancies
|
|
|
|
2009-01-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -fixupRecord:_record]): removed the unused
|
|
isAllDay local variable.
|
|
([SOGoAppointmentFolder -fixupRecords:records]): removed the
|
|
unused "fetchRange:" argument.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
+folderWithSubscriptionReference:referenceinContainer:aContainer]):
|
|
same as below.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -realNameInContainer]):
|
|
escape the owner name as a potential CSS identifier.
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m ([NSString
|
|
-asCSSIdentifier]): escape the "_" character first.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-subscribe:reallyDoinTheNamesOf:delegatedUsersfromMailInvitation:isMailInvitationinContext:localContext]):
|
|
explicitly set the content-type of the response to text/plain with
|
|
charset='utf-8' to work-around a bug in Firefox, complaining about
|
|
a hypothetical text/xml content he does not receive.
|
|
* UI/Common/WODirectAction+SOGo.m ([WODirectAction
|
|
-responseWith204]):
|
|
same as above.
|
|
|
|
2009-01-19 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Main/SOGo.m
|
|
We check if we have an empty configuration upon startup
|
|
and warn the user about this.
|
|
|
|
2009-01-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m ([NSString
|
|
-asCSSIdentifier]): new method returning a "safe" CSS identifier
|
|
based on the original string.
|
|
|
|
2009-01-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -userDefaults]): make use
|
|
of more explicit names for the variables used. Invoke a new [self
|
|
primaryUserDefaults] that fetches the defaults from the database,
|
|
so as to separate that mechanism from the caching mechanisme.
|
|
([SOGoUser -userSettings]): same as above.
|
|
|
|
2009-01-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-aclUsers]): fixed method to invoke [container
|
|
aclUsersForObjectAtPath:] with the resulting path as argument
|
|
instead of the path itself.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-sendFolderAdvisoryTemplate:template]): the condition check for
|
|
sending folder advisories has been moved here.
|
|
([SOGoGCSFolder -sendFolderAdvisoryTemplate:template]): now a
|
|
public method.
|
|
|
|
2009-01-07 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added Documentation/SOGo Mobile Devices Configuration.odt
|
|
* Fixed typos in the Intallation & Configuration guide
|
|
* Added Documentation/SOGo Mozilla Thunderbird Configuration.odt
|
|
|
|
2009-01-07 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-_handleCustomRRule:]): set the proper timezone for the end date.
|
|
([UIxComponentEditor -_loadRRules]): idem.
|
|
([UIxComponentEditor -init): instantiates an UIxDatePicker object
|
|
to retrieve the proper date format.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-saveAction]): for recurrent events with an end date, the method
|
|
_adjustRecurrentRules must be called unconditionally. This fixes
|
|
the missing occurence on the last day.
|
|
([UIxAppointmentEditor -_adjustRecurrentRules]): fixed adjustment
|
|
of end date by using the proper timezone.
|
|
|
|
2009-01-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m ([NSString
|
|
-doubleQuotedString]): new method that returns a double-quoted and
|
|
properly escaped version of the string. Since it's the same
|
|
algorithm used in jsonRepresentation, the latter is now calling
|
|
this new method.
|
|
|
|
2009-01-06 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -_filterComponent:]):
|
|
We now set the proper component summary just like
|
|
we do in the Web UI when 'securing' the
|
|
returned component. Also adjusted the Localizable.strings
|
|
files accordingly.
|
|
|
|
2008-12-30 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Dropped the following files:
|
|
UI/Scheduler/UIxAppointmentProposal.m
|
|
UI/Scheduler/UIxTaskProposal.m
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
SoObjects/Contacts/SOGoContactGCSFolder.m
|
|
UI/WebServerResources/SchedulerUI.js
|
|
Fixed the escaping of characters and associated
|
|
search methods.
|
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
|
([SOGoGCSFolder aclsForUser:forObjectAtPath:]):
|
|
Added two new defaults to control the default
|
|
ACLs when none are specified:
|
|
SOGoCalendarDefaultRoles and SOGoContactsDefaultRoles
|
|
They are both arrays in which we set strings,
|
|
for example :
|
|
SOGoCalendarDefaultRoles = ("ObjectCreator", "PublicViewer");
|
|
SOGoContactsDefaultRoles = ("ObjectEditor");
|
|
|
|
2008-12-30 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -newOccurenceWithID:]): fixed the start
|
|
date when returning an occurrence of an all-day event.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fixupCycleRecord:cycleRange:firstInstanceCalendarDateRange:forViewRange:]):
|
|
Fixed the start/end dates and recurrence id of events that span a
|
|
time period where the daylight saving time changes.
|
|
([SOGoAppointmentFolder
|
|
-_appendCycleException:firstInstanceCalendarDateRange:fromRow:forRange:toArray:]):
|
|
idem.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-defaultAction]): idem.
|
|
([UIxAppointmentEditor -viewAction]): idem.
|
|
|
|
2008-12-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-eventsBlocksAction]): fixed a crash occuring in the rare
|
|
situation where an event end date would be inferior than its start
|
|
date.
|
|
|
|
2008-12-23 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.{h,m}
|
|
Added an additional parameter to fetchFields:...
|
|
so that we can avoid stripping relevant information.
|
|
This is useful when verifying the freebusy of
|
|
meeting participants as we must not strip the
|
|
c_partstates/c_partmails fields.
|
|
* SoObjects/SOGo/SOGoObject.{h,m}
|
|
We now permit two parameters during the user-list
|
|
REPORT in order to avoid LDAP lookups.
|
|
|
|
2008-12-23 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-_adjustRecurrentRules]): new method to adjust the until date of a
|
|
recurrent rule using the start time of the event.
|
|
|
|
2008-12-21 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added the "sent-by" field to all invitation
|
|
update templates.
|
|
|
|
2008-12-19 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* iCalWeeklyRecurrenceCalculator.m ([iCalDailyRecurrenceCalculator
|
|
-recurrenceRangesWithinCalendarDateRange:_r]): rewrote method to
|
|
handle timezones. Removed usage of julian numbers.
|
|
|
|
* iCalDailyRecurrenceCalculator.m ([iCalWeeklyRecurrenceCalculator
|
|
-recurrenceRangesWithinCalendarDateRange:_r]): idem. Also fixed
|
|
the handling of intervals.
|
|
|
|
2008-12-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -userSettings]): new
|
|
accessor method to avoid loading the user settings with an
|
|
additional json request.
|
|
([UIxPageFrame -userDefaults]): same as above for user defaults.
|
|
|
|
2008-12-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
-lookupName:nameinContext:lookupContextacquire:acquire]): we avoid
|
|
getting subscribed sources if not needed, which reduces the amount
|
|
of requests to the database.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-dealloc]): we release componentCalendar here to avoid a leak
|
|
(since if set, it was through a call to ASSIGN()).
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-setComponent:newComponent]): since componentCalendar is released
|
|
at deallocation, we need to retain it, and to release the previous
|
|
value to avoid a leak...
|
|
|
|
2008-12-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject +webdavAclManager]):
|
|
same as below.
|
|
([SOGoObject -doesRetainContainer]): return "NO" here in order to
|
|
avoid leaks.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder +webdavAclManager]): same as below.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject +webdavAclManager]): same as below.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder +webdavAclManager]):
|
|
same as below.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
+webdavAclManager]): same as below.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject +webdavAclManager]):
|
|
same as below.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
+webdavAclManager]): declare singleton as static to avoid leaking.
|
|
|
|
2008-12-15 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated german translations - patch from
|
|
Alexander Greiner-Baer <sogo-algb@freenet.de>
|
|
* SoObjects/Contacts/SOGoContactLDIFEntry.m
|
|
([SOGoContactLDIFEntry -vCard]): We now force
|
|
the usage of the SOGoLDAPContactInfoAttribute,
|
|
if defined, over "description" when generating
|
|
the "NOTE" attribute.
|
|
* SoObjects/SOGo/SOGoObject.m
|
|
Optimized a bit and we also now support setting
|
|
roles, or adding/removing roles for multiple users
|
|
at once.
|
|
|
|
2008-12-14 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -_buildStripFieldsFromFields:]):
|
|
Don't strip the c_isopaque for the DAndTViewer role.
|
|
|
|
2008-12-09 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -_handleUpdatedEvent:fromOldEvent:]): if
|
|
the sequence doesn't change, attendees will no longer receive a
|
|
notification by email.
|
|
([SOGoAppointmentObject
|
|
-_updateAttendee:ownerUser:forEventUID:withRecurrenceId:withSequence:forUID:shouldAddSentBy:]):
|
|
if an attendee accepts all events, on the master event of a
|
|
repeating event will be updated; occurrences will no longer be affected.
|
|
([SOGoAppointmentObject -postCalDAVEventRequestTo:from:]): when
|
|
dealing with an occurrence of a repeating event, the function now
|
|
proprly update each attendee's calendar.
|
|
([SOGoAppointmentObject
|
|
-takeAttendeeStatus:from:withRecurrenceId:]): fixed handling of an
|
|
occurrence of a repeating event.
|
|
([SOGoAppointmentObject -postCalDAVEventReplyTo:from:]): idem.
|
|
|
|
2008-12-08 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder bareFetchFields:...]): we now
|
|
correctly handle the privacy SQL string w/o loosing
|
|
the previously defined filters.
|
|
|
|
2008-12-05 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -_updateRecurrenceIDsWithEvent:]): fixed
|
|
modification of the new event and added adjustement of the
|
|
exception dates.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject
|
|
-_removeEventFromUID:owner:withRecurrenceId:]): for a repeating
|
|
event, the occurrence was not properly removed.
|
|
|
|
* SoObjects/Appointments/SOGoComponentOccurence.m
|
|
([SOGoComponentOccurence -prepareDelete]): for a repeating event,
|
|
the exception date was not added and the occurence was not
|
|
properly deleted.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([UIxMailPartICalViewer -isEventStoredInCalendar]): when dealing
|
|
with an occurrence of a repeating event, the function now properly
|
|
verify the presence of the occurence and not only the event.
|
|
|
|
2008-12-05 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SOPE/NGCards/NSString+NGCards.m
|
|
We avoid escaping the comma during content generation
|
|
* SOPE/NGCards/iCalDailyRecurrenceCalculator.m
|
|
Fixed RRULE lamenesses.
|
|
|
|
2008-12-04 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Fixed a typ in SoObjects/SOGo/SOGoCache.m
|
|
that would lead to a crash
|
|
|
|
2008-12-03 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([UIxMailPartICalViewer -storedEvent]): returns the occurence of
|
|
the repeating event if recurrenceId is defined.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m
|
|
([UIxMailPartICalActions -_setupChosenEventAndEventObject:]):
|
|
fixed comparison of the calendar and email event when dealing with
|
|
an occurence of a repeating event.
|
|
([UIxMailPartICalActions -_updateAttendee:ownerUser:forEventUID:withRecurrenceId:forUID:shouldAddSentBy:]):
|
|
fixed handling of status update for one occurence of a repeating event.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -saveComponent:]): fixed handling of an
|
|
occurence modification (resulting a properly written email sent to
|
|
attendees).
|
|
([SOGoAppointmentObject
|
|
_removeEventFromUID:owner:withRecurrenceId]:): fixed handling of
|
|
an occurrence deletion. In this case an exception date must be
|
|
added to the event.
|
|
|
|
2008-12-02 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
Modified to handle correctly the classification
|
|
of events when fetching the etags in order to
|
|
not return unaccessible components.
|
|
|
|
2008-12-01 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Improved the cache sync process and added
|
|
safetiness using a db transaction.
|
|
|
|
2008-12-01 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -prepareDeleteOccurence:]): fixed handling
|
|
of occurence deletion by an attendee.
|
|
([-changeParticipationStatus: forRecurrenceId:]): fixed handling
|
|
of changing the attendee's status when no occurrence was
|
|
previously defined.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-takeValuesFromRequest: inContext:]): replaced pulldown
|
|
transparency menu by a checkbox (Show Time as Free).
|
|
|
|
2008-12-01 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* We now try to match the c_name and c_uid
|
|
when creating events from the Web interface.
|
|
This can avoid creating duplicate events
|
|
with IMIP when calendar refreshes haven't occured
|
|
before the accept/decline/tentative actions.
|
|
|
|
2008-11-29 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated german translation - patch from
|
|
Alexander Greiner-Baer <sogo-algb@freenet.de>
|
|
|
|
2008-11-28 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* We no longer show the previous/new location
|
|
if it's empty in the invitation update templates.
|
|
|
|
2008-11-26 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
|
We correctly wrap ACL additions around a
|
|
database transaction.
|
|
* Updated the code wrt acting on behalf of
|
|
someone else to speed up things and also to
|
|
honor the participation status of the one acting
|
|
on behalf of someone else.
|
|
|
|
2008-11-26 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
|
We escape the ' character in the folder name
|
|
before trying to set it.
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
We now handle the originator/organizer correctly
|
|
when posting CalDAV messages.
|
|
|
|
2008-11-24 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* We now sort the results in the subsription window
|
|
|
|
2008-11-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
-toManyRelationshipKeys]): return the subfolders in the order by
|
|
which they appear in the web interface, to avoid confusing
|
|
Lighting with its Inbox management and so that the folders appear
|
|
in an ordered way.
|
|
|
|
2008-11-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage
|
|
-usersSearchAction]): new method, derived from the previous
|
|
version of foldersSearchAction, but that only returns username and
|
|
contact info about matching users.
|
|
([SOGoUserHomePage -foldersSearchAction]): new implementation that
|
|
returns the folders available for subscription of the only user
|
|
passed as parameter.
|
|
|
|
2008-11-23 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m - _loadAttendees
|
|
We set the name to the rfc822 email address if the
|
|
cn is not available. This avoid NOT showing attendees
|
|
from the Web interface when only the email address
|
|
was specified from the attendee list.
|
|
|
|
2008-11-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-davCollectionQuery:queryContext]): simplified method by returning
|
|
only the folders with the specified type that are shared by the
|
|
owner of the current user folder. The folder owner is now
|
|
identified correctly with his personal folder principal.
|
|
([SOGoUserFolder -davUserQuery:queryContext]): when an LDAP info
|
|
attribute is available for the user, we return it too.
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager
|
|
+initialize]): we need to retain the LDAPContactInfoAttribute
|
|
static var, to avoid a zombie.
|
|
([LDAPUserManager -fetchContactsMatching:filter])
|
|
([LDAPUserManager -fetchUsersMatching:filter]): the info attribute
|
|
is returned if the related entry does NOT contain it yet: the test
|
|
was reverted.
|
|
|
|
2008-11-22 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Modified the invitation "update" templates
|
|
to display the summar in the email subject.
|
|
* Commented out a premature optimization in
|
|
SOGoAppointmentFolder.m
|
|
|
|
2008-11-20 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Fixed a crash issue in SOGoCache - we don't
|
|
replaced the cached object.
|
|
* Reworked the freebusy code to ignore c_status
|
|
and rather consider the values of the particpant
|
|
states (accepted/needs-action/declined)
|
|
|
|
2008-11-18 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
Modified postCalDAVEventRequestTo: from: to handle
|
|
invitation updates from normal ones.
|
|
|
|
2008-11-17 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Added back the appointment update notification
|
|
templates from RC8 and updated them.
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
Greatly improved the speed of getetag calls
|
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
|
We now allow multiple users subscribe/unsubscribe
|
|
requests during one DAV call.
|
|
|
|
2008-11-13 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
We now remove the SENT-BY when updating attendees
|
|
if it's the attendee himself that changes his
|
|
particpation status
|
|
* SoObjects/SOGo/SOGoUserFolder.m
|
|
Improve the comparison of strings by rather using
|
|
URL objects.
|
|
* SOPE/NGCards/CardVersitRenderer.m
|
|
We now properly quote attribute values if they
|
|
contain an ':' in them
|
|
* SoObjects/Appointments/iCalPerson+SOGo.m
|
|
Fixed the check for quoted SENT-BY
|
|
* Updated the iCal invitation replies to take
|
|
the SENT-BY into account.
|
|
|
|
2008-11-11 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Fixed a couple of issues in the new pref caching
|
|
subsystem.
|
|
* Cleaned up the caching code and activated
|
|
distributed notifications by default.
|
|
|
|
2008-10-29 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([-userDefaults]): added support for
|
|
system-wide defaults for ReplyPlacement, SignaturePlacement,
|
|
MessageForwarding, and MessageCheck.
|
|
|
|
2008-10-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoMailer.m ([SOGoMailer
|
|
-sendMailData:datatoRecipients:recipientssender:sender]): don't
|
|
HELO the server after connecting, since the connectToHost: method
|
|
already has "EHLO"'d it after the connection was established.
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m ([-quotaSupport]): removed
|
|
useless method.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m ([NSArray
|
|
-objectsForKey:keynotFoundMarker:marker]): added a
|
|
"notFoundMarker:" parameter to the "objectsForKey:" method. When
|
|
the marker is nil and no match is found in the current dictionary,
|
|
the entry is ignored.
|
|
|
|
2008-10-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-contactSearchAction]): fixed typing of "contacts", which actually
|
|
is an NSArray.
|
|
|
|
2008-10-17 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Common/UIxPageFrame.m ([NSString userLanguage]): returns the
|
|
user's language. Used to make this information available through
|
|
JavaScript.
|
|
|
|
2008-10-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -davURL])
|
|
([SOGoObject -soURL]): adjusted last change by checking that the
|
|
port returned initially is not nil before initializing the
|
|
returned NSURL.
|
|
|
|
2008-10-15 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([_setupEmailFields]): avoid
|
|
setting the work mail if only the home mail is defined.
|
|
|
|
* OGoContentStore/OCSContactFieldExtractor.m ([NSMutableDictionary
|
|
extractQuickFieldsFromVCard:vCard]): set email address to an empty
|
|
string if not defined.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([WOActionResults
|
|
allContactSearchAction]): returned array is now properly
|
|
initialized if no result is found.
|
|
|
|
2008-10-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
|
-columnsDisplayOrder]): slightly optimized method by reducing the
|
|
amount of method calls. Initialized userDefinedOrder as an
|
|
NSMutableArray instead of an NSArray. Fixed indentation.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -davURL])
|
|
([SOGoObject -soURL]): appended the port number to the hostname
|
|
used to construct the NSURL instance.
|
|
|
|
2008-10-03 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([WOResponse
|
|
_foldersResponseForResults]): include the value of the attribute value
|
|
from user defaults SOGoLDAPContactInfoAttribute.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([WOActionResults
|
|
allContactSearchAction]): return a dictionary with the found
|
|
contacts and the original search string.
|
|
([WOActionResults contactSearchAction]): idem.
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.m ([NSArray
|
|
_compactAndCompleteContacts:]): add the attribute from user
|
|
defaults SOGoLDAPContactInfoAttribute for each returned contact.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m ([EOQualifier _qualifierForFilter:
|
|
]): the filter doesn't match only the beginning of the attribute's
|
|
value anymore.
|
|
([NSArray _searchAttributes]): add the attribute from user
|
|
defaults SOGoLDAPContactInfoAttribute if not already included.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m ([NSArray
|
|
_flattenedRecords]): added the key "contactInfo" with the value of
|
|
the attribute from user defaults SOGoLDAPContactInfoAttribute.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([NSDictionary
|
|
_responseForResults:]): returns a dictionary instead of a
|
|
WOResponse. Currently only called by contactSearchAction.
|
|
|
|
2008-10-03 Cyril Robert <crobert@inverse.ca>
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
Added copyUIDs and moveUIDs
|
|
|
|
* UI/MailerUI/UIxMailActions.m
|
|
Removed copyAction and moveAction
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m
|
|
Added copyMessagesAction and moveMessagesAction
|
|
|
|
* UI/WebServerResources/MailerUI.js
|
|
Removed _onMailboxMenuAction
|
|
Modified onMailboxMenuCopy and onMailboxMenuMove
|
|
|
|
Copying/Moving messages is now done with one POST.
|
|
Fixed bug #1893
|
|
|
|
2008-10-02 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
Modified zip command acces path, defaults to /usr/bin/zip,
|
|
overwritable by sogo defaults
|
|
|
|
* UI/MailPartViewers/UIxMailPartViewer.m
|
|
Added - (NSString *) mimeImageUrl to get an icon path for attachments
|
|
|
|
* UI/MailerUI/UIxMailListView.m
|
|
Added:
|
|
- (NSArray *) columnsDisplayOrder
|
|
Returns the current columns order, either from sogo defaults or user defaults.
|
|
- (NSDictionary *) columnsMetaData
|
|
Returns an array of metadata (id, class) for columns header.
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m
|
|
Added - (NSString *) defaultColumnsOrder to get the order from a js call.
|
|
|
|
Summary:
|
|
* Columns in UIxMailListView can now be changed
|
|
* "Priority" column is smaller
|
|
* Path to zip command now configurable
|
|
* Fixed a js bug (loadImagesButton is null)
|
|
* Attachments now have an icon according to their mimetype
|
|
|
|
2008-10-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent
|
|
-sendEMailUsingTemplateNamed:newPageNameforObject:objecttoAttendees:attendees]):
|
|
changed method to only accept one event from now on, since we
|
|
actually use less information with the Lightning-inspired
|
|
templates than before.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailNotification.m ([-homePageURL])
|
|
([-setHomePageURL:newhomePageURL], [-appointmentURL], [-viewTZ])
|
|
([-setViewTZ:newViewTZ]): removed obsolete accessors.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailICalReply.m
|
|
([SOGoAptMailICalReply -attendeeName]): new method returning the
|
|
cn of the attendee.
|
|
|
|
2008-09-30 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Implemented external loading of images
|
|
in HTML mails the same way Thunderbird does it.
|
|
|
|
2008-09-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoLDAPUserDefaults.m ([SOGoLDAPUserDefaults
|
|
-objectForKey:key]): properly handle arrays of record references.
|
|
|
|
* SoObjects/SOGo/SOGoLDAPUserDefaults.m ([SOGoLDAPUserDefaults
|
|
-objectForKey:key]): added support for dn+attribute lookup. The
|
|
lookup syntax has been generalized by testing for "ref-dn" instead
|
|
of "dict-dn". Make use of only non-deprecated LDAP functions.
|
|
|
|
2008-09-30 Cyril Robert <crobert@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftsFolder.m
|
|
Moved userSpoolFolderPath method to SOGoMailFolder.m
|
|
* SoObjects/Mailer/SOGoMailFolder.h
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
Added userSpoolFolderPath from SOGoDraftsFolder
|
|
Added archiveUIDs method to create an archive from email uids
|
|
* UI/MailerUI/UIxMailFolderActions.h
|
|
* UI/MailerUI/UIxMailFolderActions.m
|
|
Added saveMessagesAction method to handle the /saveMessages call
|
|
* UI/MailerUI/product.plist
|
|
Added a definition for saveMessages
|
|
|
|
2008-09-28 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Modified the following files:
|
|
SoObjects/Mailer/SOGoDraftObject.m
|
|
UI/MailerUI/Dutch.lproj/Localizable.strings
|
|
UI/MailerUI/English.lproj/Localizable.strings
|
|
UI/MailerUI/French.lproj/Localizable.strings
|
|
UI/MailerUI/German.lproj/Localizable.strings
|
|
UI/MailerUI/Italian.lproj/Localizable.strings
|
|
UI/MailerUI/Spanish.lproj/Localizable.strings
|
|
UI/MailerUI/Toolbars/SOGoDraftObject.toolbar
|
|
UI/MailerUI/UIxMailEditor.m
|
|
UI/MailerUI/UIxMailListView.m
|
|
UI/Templates/MailerUI/UIxMailEditor.wox
|
|
UI/Templates/MailerUI/UIxMailListView.wox
|
|
UI/WebServerResources/UIxMailEditor.js
|
|
in order to add support for X-Priority in emails.
|
|
* Regenerated the sope-patchset in order to add
|
|
capabilities to parse BODY[HEADER.FIELDS ...] responses.
|
|
|
|
2008-09-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoLDAPUserDefaults.m ([SOGoLDAPUserDefaults
|
|
-objectForKey:key]): implemented overriden method by using c types
|
|
and methods to avoid recursive calls from objective-c methods.
|
|
|
|
2008-09-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoLDAPUserDefaults.[hm]: new class module
|
|
designed to substitute the system NSUserDefaults system with
|
|
access to an LDAP directory.
|
|
|
|
2008-09-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
|
|
-deleteUIDs:uidsinContext:localContext]): explicitly select the
|
|
current mailbox.
|
|
|
|
2008-09-22 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
|
|
-deleteMessagesAction]): make use of the new SOGoFolder's
|
|
deleteUIDs:inContext: method described below.
|
|
|
|
* UI/MailerUI/UIxMailActions.m ([-trashAction]): removed web method.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([-trashInContext:_ctx]):
|
|
removed method, obsoleted by the new "deletedUIDS:..." method
|
|
described below.
|
|
|
|
* SoObjects/Mailer/SOGoMailManager.[hm]: removed all methods
|
|
except -copyMailURL:srcurltoFolderURL:desturlpassword:pwd, which
|
|
is the only one still used.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
|
|
-deleteUIDs:uidsinContext:localContext]): new method enabling the
|
|
deletion of many IMAP uids in one batch.
|
|
|
|
2008-09-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -davCollectionTag]): do not ignore deleted
|
|
records when "computing" the ctag. Also, the EOSpecification
|
|
instance should not be static, otherwise any subsequent queries
|
|
will be based on the ctag of the first calendar ever queried.
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m ([NSString
|
|
-asQPSubjectString:encoding]): replace spaces with underscore
|
|
characters to comply with rfc 2047.
|
|
|
|
2008-09-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer
|
|
-decodedFlatContent]): same as below...
|
|
|
|
* SoObjects/Mailer/NSData+Mail.m ([NSData
|
|
-bodyDataFromEncoding:encoding]): invoke
|
|
"dataByDecodingQuotedPrintableTransferEncoding" on the NSData
|
|
instance to avoid decoding "_" chars.
|
|
|
|
2008-09-17 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m ([WOResponse
|
|
-listMailboxesAction]): also returns the inbox quota, wrapped in a
|
|
new dictionary with keys "mailboxes" and "quotas". Uses the new user
|
|
default "SOGoSoftQuotaRatio" to force a quota and ignore the one
|
|
returned by the IMAP server.
|
|
|
|
2008-09-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-fetchAttachmentIds]): if the parts have no filename associated
|
|
with them, we still return the prefix url so that we still can
|
|
access the attachment from HTML messages.
|
|
|
|
2008-09-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage -logoffAction]):
|
|
log the username performing the logoff operation.
|
|
|
|
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage -connectAction]): log
|
|
success information about current attempt.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-lookupName:lookupNameinContext:localContextacquire:acquire]): do
|
|
not use the object returned by "bindToObject:inContext:".
|
|
Otherwise the clientObject isn't set in the context.
|
|
|
|
2008-09-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartAlternativeViewer.m
|
|
([UIxMailPartAlternativeViewer -selectChildInfo]): give precedence
|
|
on multipart/mixed parts over text/* parts.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject
|
|
-isValidAttachmentName:filename]): accept all filenames except
|
|
".", ".." and those that contain "/". Any other is valid and will
|
|
be accepted.
|
|
|
|
2008-09-08 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m ([LDAPSource
|
|
-checkLogin:loginToCheckandPassword:passwordToCheck])
|
|
([LDAPSource -allEntryIDs])
|
|
([LDAPSource -fetchContactsMatching:match])
|
|
([LDAPSource -lookupContactEntry:entryID])
|
|
([LDAPSource -lookupContactEntryWithUIDorEmail:uid]): catch any
|
|
LDAP connection failure exception and return an empty result if
|
|
such as situation has happened.
|
|
|
|
2008-09-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailReply.m: made class a child of
|
|
SOGoMailForward, since we need to access more or less the same
|
|
fields from the original message, especially in outlook reply mode.
|
|
([SOGoMailReply -setOutlookMode:newOutlookMode]): new accessor
|
|
defining in which mode we are.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject
|
|
-contentForReply]): if the reply style is outlook, then we use the
|
|
content generated for inline forwarding.
|
|
([SOGoMailObject -useOutlookStyleReplies]): new method that
|
|
indicates whether the ud key "SOGoMailUseOutlookStyleReplies".
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
|
|
-expungeLastMarkedFolder]): do not perform the expunge if the
|
|
marked folder is the current folder.
|
|
|
|
2008-09-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartAlternativeViewer.m
|
|
([UIxMailPartAlternativeViewer -selectPartIndexFromTypes:]): give
|
|
precedence on multipart/related parts.
|
|
|
|
* UI/MailPartViewers/UIxMailRenderingContext.m
|
|
([UIxMailRenderingContext -viewerForBodyInfo:_info]): add the
|
|
mixed viewer as the viewer for "multipart/digest" content.
|
|
|
|
* UI/MailPartViewers/UIxMailPartTextViewer.m (convertChars):
|
|
fixed a buffer overflow. Incremented the buffer size to 8192.
|
|
|
|
2008-09-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailManager.m ([NGImap
|
|
-copyMailURL:toFolderURL:password:]): do not compare the urls
|
|
based on the instance that NGImap4ConnectionManager returns,
|
|
because disabling the pooling will generate a bad result, even
|
|
though the host:port pairs are the same.
|
|
|
|
2008-09-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailView.m ([UIxMailView
|
|
-appendToResponse:_responseinContext:_ctx]): no longer invoke
|
|
[NGImap4Client logout], since this is now handled by the
|
|
NGImap4Connection manager (or not).
|
|
|
|
* UI/MailerUI/UIxMailActions.m ([UIxMailActions
|
|
-markMessageUnreadAction]): no longer make use of [SOGoMailFolder
|
|
unselect].
|
|
([UIxMailActions -markMessageReadAction]): idem.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([-unselect]): removed method
|
|
since we no longer need it.
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject
|
|
-dealloc]): release "imap4". If the IMAP4 connection pooling is
|
|
disabled, the object will otherwise never be released.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
+initialize]): use the user default "SOGoFallbackIMAP4Server" to
|
|
override the value of "serverName" from the actual user settings.
|
|
Fallback to "localhost" if value is unset.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-imap4URLString]): use the value of SOGoFallbackIMAP4Server, as
|
|
mentionne above.
|
|
|
|
* UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -from]): retain the
|
|
initialized value of from, otherwise we create a future zombie.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-initWithName:_nameinContainer:_container]): we no longer retain
|
|
the context, to avoid making a circular reference.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
-initWithLogin:newLoginroles:newRoles]): moved the core from init
|
|
here.
|
|
([-init]): removed method.
|
|
|
|
2008-08-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailView.m ([UIxMailView
|
|
-appendToResponse:_responseinContext:_ctx]): logout from the imap
|
|
connectin once the response has been appended.
|
|
|
|
2008-08-29 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject
|
|
-addRecipients:recipientstoArray:array]): same as below.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m:
|
|
([SOGoDraftObject -addEMailsOfAddresses:_addrstoArray:_ma]): test
|
|
if the returned email is nil before adding it to the array.
|
|
|
|
2008-08-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailActions.m ([UIxMailActions
|
|
-markMessageUnreadAction]): unselect the mailbox after the operation.
|
|
([UIxMailActions -markMessageReadAction]): same as above.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([UIxMailPartICalViewer -hasCalendarAccess]): new method that
|
|
returns whether the current user has access to the calendar
|
|
module, so that buttons can be hidden.
|
|
|
|
2008-08-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
|
|
-lookupImap4BodyPartKey:inContext:]): if the "parts" object is not
|
|
found, we try "body"->"parts".
|
|
|
|
2008-08-26 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m ([composeAction]): build the
|
|
contact's fullname from its card's attribute "n" if "fn" is
|
|
not defined.
|
|
|
|
* UI/Contacts/UIxContactView.m ([fullName]): idem.
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([addressBooksList]): new
|
|
method to retrieve the address books to which the user can write.
|
|
([saveAction]): if the user change the destination address
|
|
book, the contact is now correctly moved to it.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([viewAction]): new
|
|
method that returns a JSON representation of an event.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([newAction]): removed
|
|
the rights validation from the product.plist to this method so
|
|
the user redirect to the proper folder if rights are insufficient.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([newAction]): idem.
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([newAction]): idem.
|
|
|
|
* UI/Scheduler/UIxCalendarSelector.m ([calendars]): removed
|
|
the roles as they are no longer verified through JavaScript.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m
|
|
([_compareByNameInContainer:otherFolder]): fixed an order
|
|
problem with the personal folders.
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m
|
|
([_rangeOfURLInRange:refRange]): added some ending characters.
|
|
([_handleURLs:selfCopy textToMatch:match prefix:prefix
|
|
inRanges:ranges]): fixed the parsing so URLs are properly identified.
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m ([-composeAction]):
|
|
added support to define the subject through the URL.
|
|
|
|
2008-08-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage -setUserName:_value])
|
|
([SOGoRootPage -userName]): removed accessors, since the
|
|
corresponding ivar is not used and was removed too.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([-shortUserNameForDisplay]): no longer
|
|
make use of the "wrongusernamepassword" hack.
|
|
|
|
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage -connectAction]): return
|
|
HTTP code 403 if the username and the password passed in the
|
|
request are not valid.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-lookupName:_keyinContext:_ctxacquire:_flag]): whenever a user has
|
|
no access to the specified module, a response with code 403 and
|
|
the content of "UIxModuleAccessDenied" will be generated.
|
|
|
|
* UI/SOGoUI/UIxModuleAccessDenied.[hm]: new template module
|
|
displaying an error message.
|
|
|
|
2008-08-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailRenderingContext.m
|
|
([UIxMailRenderingContext -viewerForBodyInfo:_info]): display
|
|
parts with a bodyId as an attachment.
|
|
|
|
* UI/Contacts/UIxContactView.m ([UIxContactView -workUrl])
|
|
([UIxContactView -homeUrl]): the test for the presence of a
|
|
protocol was inverted, causing the output of wrong urls anyway...
|
|
|
|
* SoObjects/Contacts/SOGoContactLDIFEntry.m ([SOGoContactLDIFEntry
|
|
-vCard]): replaced query for field "notes" with "description".
|
|
Added support for Mozilla custom fields 1 to 4.
|
|
|
|
* SoObjects/Mailer/SOGoHTMLMailBodyPart.[hm]: new class module
|
|
implementing the HTML content body parts.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
([UIxMailPartExternalHTMLViewer -init]): new class derived from
|
|
UIxMailPartHTMLViewer but which as as a full page wrapper.
|
|
|
|
2008-08-22 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Modified SoObjects/Mailer/NSData+Mail.m
|
|
-decodedSubject so we correctly implement decoding
|
|
instead of relying on the broken SOPE implementation.
|
|
|
|
2008-08-21 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.m
|
|
Renamed the SOGOLDAPUserManagerCleanupInterval defaults to
|
|
SOGoLDAPUserManagerCleanupInterval.
|
|
We correctly add our timer to the runloop and fixed
|
|
a typo in the selector name.
|
|
|
|
2008-08-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m ([NSString
|
|
-caseInsensitiveMatches:match]): new method that helps matching
|
|
strings against patterns.
|
|
|
|
2008-08-21 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* Updated the icons to use those from Thunderbird 2
|
|
and from Lightning 0.9. Also added those new files :
|
|
|
|
UI/WebServerResources/tbtv_account_17x17.png
|
|
UI/WebServerResources/tbtv_drafts_17x17.png
|
|
UI/WebServerResources/tbtv_inbox_17x17.png
|
|
UI/WebServerResources/tbtv_leaf_corner_17x17.png
|
|
UI/WebServerResources/tbtv_sent_17x17.png
|
|
UI/WebServerResources/tbtv_trash_17x17.png
|
|
|
|
Dropped :
|
|
|
|
UI/WebServerResources/tbtv_account_17x17.gif
|
|
UI/WebServerResources/tbtv_drafts_17x17.gif
|
|
UI/WebServerResources/tbtv_inbox_17x17.gif
|
|
UI/WebServerResources/tbtv_leaf_corner_17x17.gif
|
|
UI/WebServerResources/tbtv_sent_17x17.gif
|
|
UI/WebServerResources/tbtv_trash_17x17.gif
|
|
|
|
2008-08-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxAdditionalPreferences.[hm]: new template
|
|
class that enables the user to append links or other infos needed
|
|
to change preferences not handled by SOGo. The tab will display
|
|
when setting the ud key "SOGoUIxAdditionalPreferences" to YES.
|
|
|
|
2008-08-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoBrowsersPanel.[hm]: new template class that helps
|
|
displaying a choice of browsers compatible with SOGo. The code was
|
|
extracted from UIxPageFrame.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-viewAction]): apply the user's timezone to the startdate before
|
|
formatting it.
|
|
|
|
2008-08-18 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject
|
|
-mimeHeaderMapWithHeaders:_headers]): properly quote atoms in mail
|
|
addresses.
|
|
|
|
* UI/MailPartViewers/UIxMailPartMessageViewer.m
|
|
([UIxMailPartMessageViewer -formattedComponents:components]):
|
|
don't report nil components.
|
|
|
|
2008-08-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/iCalEventChanges+SOGo.m
|
|
([iCalEventChanges -sequenceShouldBeIncreased]): added summary and
|
|
comment.
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager
|
|
-contactInfosForUserWithUIDorEmail:uid]): only use the
|
|
authentication sources.
|
|
|
|
2008-08-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoComponentOccurence.m
|
|
([SOGoComponentOccurence
|
|
+occurenceWithComponent:newComponentwithMasterComponent:newMasterinContainer:newContainer]):
|
|
seconds is now a NSTimeInterval instead of an int, to avoid
|
|
casting problems on the PowerPC architecture.
|
|
|
|
2008-08-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([UIxMailPartICalViewer -currentUserAttendee]): select the most
|
|
recent event.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject -copyToFolder:newFolder])
|
|
([SOGoContentObject -moveToFolder:newFolder]): new operation methods.
|
|
|
|
2008-08-10 Ludovic Marcotte <lmarcotte@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactView.m ([UIxContactView -homeUrl])
|
|
([UIxContactView -workUrl]): prefixes the urls with "http://" if
|
|
not already prefixed.
|
|
|
|
2008-08-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoComponentOccurence.m
|
|
([SOGoComponentOccurence -changeParticipationStatus:newPartStat]):
|
|
implemented proxy method.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent
|
|
-sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]):
|
|
the sender email is always the one of the owner, even though the
|
|
action might be done by a delegate. If the case, we setup the
|
|
"SENT-BY" parameter of the organizer field.
|
|
([SOGoCalendarComponent -sendResponseToOrganizer]): If needed,
|
|
setup the "SENT-BY" parameter of the attendee field.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-toolbar]): changed algoritm so that a delegate would really see
|
|
what the owner would, depending on his/her rights.
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
|
|
-lookupImap4BodyPartKey:inContext:]): find a class based on the
|
|
mime type of the subpart described by the partInfo.
|
|
|
|
* SoObjects/Appointments/iCalEntityObject+SOGo.m
|
|
([iCalEntityObject
|
|
-quickRecordDateAsNumber:_datewithOffset:offsetforAllDay:allDay]):
|
|
changed the type of "seconds" to NSTimeInterval to avoid casting
|
|
errors on PPC.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m ([UIxMailPartICalActions -updateUserStatusAction])
|
|
([UIxMailPartICalActions -acceptAction])
|
|
([UIxMailPartICalActions -declineAction]): if the event doesn't
|
|
exist in the user table, declare it as new.
|
|
|
|
2008-08-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager
|
|
-fetchContactsMatching:filter]): fetch entries matching filter
|
|
only in addressbooks.
|
|
([LDAPUserManager -fetchUsersMatching:filter]): same as above for
|
|
authentication sources only.
|
|
|
|
* SoObjects/Appointments/SOGoUserFolder+Appointments.m
|
|
([SOGoUserFolder -davCalendarUserAddressSet]): the addresses
|
|
returned should be those of the owner and not of the current user.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject +webdavAclManager]): declare DAV:write as
|
|
equivalent of ..._ModifyComponent (instead of DAV:write-content).
|
|
|
|
2008-08-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor -isNew]):
|
|
invoke "isNew" to the client object only if it is an instance of
|
|
SOGoContentObject...
|
|
|
|
2008-08-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -calendar:create:secure]): we now return a
|
|
deep copy of the current calendar element, so that further
|
|
modifications do not impact the original copy.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser +initialize]): same as
|
|
below.
|
|
|
|
* Main/SOGo.m ([SOGo -run]): rename AgenorProfileURL to
|
|
SOGoProfileURL automagically.
|
|
|
|
2008-07-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-eventsBlocksAction]): return event blocks with the serial number
|
|
of the event they refer to in the events list (first array) rather
|
|
than their cname, so that specific occurences can be
|
|
differenciated.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-davUserQuery:queryContext]): make searches only in user
|
|
repositories and not in addressbooks.
|
|
|
|
2008-07-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMonthView.m ([UIxCalMonthView
|
|
-weeksToDisplay]): add one day to the computed delta, because
|
|
there is always at least one week displayed.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-foldersOfType:typematchingUID:uid]): make searches only in user
|
|
repositories and not in addressbooks.
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager
|
|
-fetchUsersMatching:filter]): new method allowing to make searches
|
|
only in user repositories.
|
|
|
|
2008-07-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMainView.m ([UIxCalMainView -dayStartHour]):
|
|
new getter for computing the default scroll point in the day and
|
|
week views.
|
|
|
|
* UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable
|
|
-clickableHourCellClass]): the "dayEndHour" is the hour where the
|
|
outOfDay class starts.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -hasChanged])
|
|
([UIxPreferences -setHasChanged:newHasChanged]): new accessors
|
|
method for a new hidden input field that is set to 1 if the values
|
|
have changed and require a refresh of the main window.
|
|
|
|
* SoObjects/SOGo/AgenorUserDefaults.[hm]: renamed module class and
|
|
class moduel to SOGoUserDefaults.
|
|
|
|
* Main/SOGo.m ([SOGo -run]): the table referred to as
|
|
"AgenorProfileURL" is now referred to as "SOGoProfileURL".
|
|
|
|
2008-07-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoWebAuthenticator.m ([SOGoWebAuthenticator -checkLogin:_loginpassword:_pwd]),
|
|
SoObjects/SOGo/SOGoDAVAuthenticator.m ([SOGoDAVAuthenticator -checkLogin:_loginpassword:_pwd]):
|
|
disable "bypass" authentification method, since it doesn't work anyway.
|
|
|
|
* SoObjects/SOGo/SOGoWebAuthenticator.m ([SOGoWebAuthenticator -init]),
|
|
SoObjects/SOGo/SOGoDAVAuthenticator.m ([SOGoDAVAuthenticator
|
|
-init]): use "SOGoAuthenticationMethod" first, since
|
|
"SOGoAuthentificationMethod" was a typo. If none are specified,
|
|
fallback on "LDAP".
|
|
|
|
2008-07-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -secureContentAsString]): use a mutable
|
|
copy of the calendar in order to be able to modify it, otherwise
|
|
SOGo crashes.
|
|
([-isFolderish]): removed method, so that the components won't be
|
|
listed as DAV collections.
|
|
|
|
2008-07-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-PUTAction:_ctx]): when the object is new, return 201. Otherwise,
|
|
return 204 as success code.
|
|
|
|
2008-07-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalWeekView.m ([UIxCalWeekView -startDate]):
|
|
same as below.
|
|
|
|
* UI/Scheduler/UIxCalMonthView.m ([UIxCalMonthView
|
|
-weeksToDisplay]): use the user's first day of week to chose the
|
|
day to start the series.
|
|
([UIxCalMonthView -dayCellClasses]): take the user's first day of
|
|
week into account.
|
|
([UIxCalMonthView -endDate]): same as above.
|
|
|
|
* UI/Scheduler/UIxCalMainView.m ([UIxCalMainView
|
|
-firstDayOfWeek]): new template accessor.
|
|
|
|
* UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable
|
|
-currentHourLineClass]): new template accessor.
|
|
([UIxCalDayTable -clickableHourCellClass]): add the class
|
|
'outOfDay' when the current hour is out of the user's day start
|
|
and end hour ranges.
|
|
|
|
* UI/Scheduler/UIxCalDateSelector.m ([UIxCalDateSelector
|
|
-firstDayOfWeek]): new template accessor.
|
|
|
|
* UI/Scheduler/UIxAttendeesEditor.m ([UIxAttendeesEditor -dayStartHour])
|
|
([UIxAttendeesEditor -dayEndHour]): new template accessors.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -newStartDate]),
|
|
UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-newStartDate]): take the user-configured day start hour into account.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m ([UIxPreferences
|
|
-firstWeekList]): no longer list the option that enables the
|
|
hiding of week numbers.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -firstDayOfWeek])
|
|
([SOGoUser -firstDayOfWeekForDate:date])
|
|
([SOGoUser -dayOfWeekForDate:date], [SOGoUser -dayStartHour])
|
|
([SOGoUser -dayEndHour])
|
|
([SOGoUser -firstWeekOfYearForDate:date])
|
|
([SOGoUser -weekNumberForDate:date]): new methods that help take
|
|
the calendar-related user preferences into account.
|
|
|
|
2008-07-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMonthView.m ([UIxCalMonthView
|
|
-weeksToDisplay]): we now display rows of weeks rather than columns
|
|
of week days.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-eventsBlocksAction]): event blocks now that the "c_recurrence_id"
|
|
virtual field into account.
|
|
|
|
* UI/Common/UIxObjectActions.m ([UIxObjectActions -deleteAction]):
|
|
new action method, moved from UIxContactView so that it is
|
|
generalized to all SOGoObjects.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -init]): we now save the calendar to avoid
|
|
multiple parsing and instantiation of children components.
|
|
([SOGoCalendarComponent -toOneRelationshipKeys]): declare
|
|
components as children.
|
|
([SOGoCalendarComponent
|
|
-lookupName:lookupNameinContext:localContextacquire:acquire]):
|
|
handle the search for components and their occurences.
|
|
([SOGoCalendarComponent -saveComponent:newObject]): added code to
|
|
update recurrence ids whenever the user saves a new version of the
|
|
master component.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m ([SOGoAppointmentObject -occurence:occ])
|
|
([SOGoAppointmentObject -newOccurenceWithID:recID])
|
|
([SOGoAppointmentObject -prepareDeleteOccurence:occurence]): new
|
|
methods to handle occurences.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -fixupCycleRecord:_recordcycleRange:_r]):
|
|
declare a new "c_recurrence_id" field, that will be overwritten
|
|
with further exception occurences.
|
|
|
|
* UI/Scheduler/UIxOccurenceDialog.[hm]: new dialog asking whether
|
|
to edit/delete all occurences of a recurrent event or only the one
|
|
selected.
|
|
|
|
* SoObjects/Appointments/SOGoComponentOccurence.[hm]: super class
|
|
of new classes belows.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentOccurence.[hm]: new class
|
|
module that handle occurences within events.
|
|
|
|
* SoObjects/Appointments/SOGoTaskOccurence.[hm]: new class
|
|
module that handle occurences within todos.
|
|
|
|
2008-07-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-eventsBlocksAction]): take user participation status into account
|
|
again.
|
|
|
|
* SoObjects/Appointments/iCalEntityObject+SOGo.m
|
|
([iCalEntityObject
|
|
-quickRecordDateAsNumber:_datewithOffset:offsetforAllDay:allDay]):
|
|
enhanced method to do the special computations for all day events.
|
|
|
|
2008-07-16 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([BOOL isNew])
|
|
([void setAddressBookItem:_item])
|
|
([id addressBookItem])
|
|
([NSArray addressBooksList])
|
|
([SOGoContactFolder componentAddressBook])
|
|
([NSString addressBookDisplayName]): new methods to allow the
|
|
selection of the destination address book when creating a new contact.
|
|
|
|
2008-07-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/NSDictionary+Scheduler.m: new category module that
|
|
implement helper methods for the Scheduler module.
|
|
([NSDictionary -compareEventByStart:otherEvent]): new method that
|
|
compares event block dictionaries based on their value for
|
|
"start".
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-eventsBlocksAction]): new web method that returns the list of
|
|
events as well as the precomputed blocks of events, whether "all
|
|
day" or not.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchCoreInfosFrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filters]):
|
|
requests "c_iscycle".
|
|
|
|
2008-07-15 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFolderActions.m: new class for actions
|
|
on contacts of a specific address book.
|
|
|
|
* UI/Contacts/UIxContactFolderActions.m
|
|
([NSException _moveContacts:toFolder:andKeepCopy:]): private method to
|
|
move and optionnaly copy one or many contacts to another
|
|
address book.
|
|
|
|
* UI/Contacts/UIxContactFolderActions.m ([WOActionResults
|
|
copyAction]): copy one or many contacts to another address book.
|
|
|
|
* UI/Contacts/UIxContactFolderActions.m ([WOActionResults
|
|
moveAction]): move one or many contacts to another address book.
|
|
|
|
2008-07-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-setIsNew:newIsNew]): new setter that declares the record as new,
|
|
since it is no longer so by default.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m ([SOGoAppointmentFolder -davCalendarOrder])
|
|
([SOGoAppointmentFolder -setDavCalendarOrder:newColor]): new
|
|
accessors to handle Apple's "calendar-order" property.
|
|
|
|
* SoObjects/Appointments/iCalRepeatableEntityObject+SOGo.m
|
|
([iCalRepeatableEntityObject -cycleInfo]): exception dates are now
|
|
returned as an array of strings.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fixupCyclicRecords:_recordsfetchRange:_r]): fix an infinite loop
|
|
occuring when the exception date was not the first date in the list.
|
|
|
|
2008-07-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filters]):
|
|
take exceptional modifications into account.
|
|
|
|
* SoObjects/Appointments/iCalToDo+SOGo.m: new class module with
|
|
category methods for iCalToDo.
|
|
([iCalToDo -quickRecord]): same as for method below.
|
|
|
|
* SoObjects/Appointments/iCalEvent+SOGo.m ([iCalEvent
|
|
-quickRecord]): new method taken from OCSiCalFieldExtractor.
|
|
|
|
2008-07-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+DAV.m ([NSString -asWebDAVTuple]): new
|
|
method that parses a webdav tag in the form "{ns:}tag" and returns
|
|
a dictionary.
|
|
|
|
* SoObjects/Appointments/SOGoUserFolder+Appointments.m
|
|
([SOGoUserFolder -davPrincipalPropertySearch:queryContext]): new
|
|
method to answer to "principal-property-search" report.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m
|
|
([SOGoAppointmentFolders -davComplianceClassesInContext:]): new
|
|
method that declares "calendar-access" and "calendar-schedule".
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent
|
|
-sendIMIPReplyForEvent:eventto:recipient]): new method, derived from
|
|
sendResponseToOrganizer but more generic.
|
|
([SOGoCalendarComponent -sendResponseToOrganizer]): make use of
|
|
the new method mentionne above.
|
|
|
|
2008-07-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m ([SOGoAppointmentFolders -davCreateCalendarCollection:newNameinContext:createContext]):
|
|
new method that execute a "MKCALENDAR" request.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m (SOGoSelectorForPropertyGetter): new
|
|
function that returns the selector for the getter method for the
|
|
specified property.
|
|
(SOGoSelectorForPropertySetter): same as above for the setter
|
|
method.
|
|
|
|
* SoObjects/SOGo/WORequest+SOGo.m ([WORequest
|
|
-davPatchedPropertiesWithTopTag:topTag]): new category method to
|
|
help with parsing properties modified or removed from PROPPATCH
|
|
methods and alike.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-PUTAction:_ctx]): increment the version number only if the record
|
|
is not new.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -davCalendarFreeBusySet]): new method that
|
|
returns the HREF to the calendars involved in the user's freebusy.
|
|
([SOGoAppointmentFolder
|
|
-setDavCalendarFreeBusySet:newFreeBusySet]): new method that
|
|
PRETENDS to modify the list of calendars mentionned above.
|
|
([SOGoAppointmentFolder
|
|
-caldavEventRequest:eventwithContent:iCalStringfrom:originatorto:recipients]):
|
|
add support for the "CANCEL" method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -postCalDAVEventCancelTo:recipients]): new
|
|
method that implements support for the CalDAV "CANCEL" method for
|
|
POSTs.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-PUTAction:_ctx]): the version passed to
|
|
saveContentString:baseVersion: is the current value of "version".
|
|
If the operation is succesful, the version is incremented from
|
|
here since no refresh is done from GCS. The returned etag has thus
|
|
now the correct value.
|
|
|
|
2008-07-09 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m ([WOActionResults
|
|
composeAction]): added support to specify an address book and
|
|
one more many contact IDs.
|
|
|
|
2008-07-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-caldavEventRequest:eventwithContent:iCalStringfrom:originatorto:recipients]):
|
|
simplified method since REPLY and REQUEST posts are very similar.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -postCalDAVEventReplyTo:recipients]): new
|
|
method that handle CalDAV REPLY posts by updating the event in the
|
|
table of the SOGo users and send the reply by email as well.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent
|
|
-sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]):
|
|
take the current user as originator rather than the object's owner.
|
|
|
|
2008-07-07 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([WOActionResults
|
|
allContactSearchAction]): new method to search contacts among
|
|
all address books.
|
|
|
|
2008-07-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-POSTAction:localContext]): take the content type as well as the
|
|
request and pass them as parameter to the new method below.
|
|
([SOGoObject
|
|
-davPOSTRequest:requestwithContentType:cTypeinContext:localContext]):
|
|
new method designed to handle POST requests on DAV objects.
|
|
|
|
2008-06-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-caldavEventRequest:eventfrom:originatorto:recipients]): handle
|
|
caldav replies.
|
|
([SOGoAppointmentFolder -lookupComponentByUID:uid]): new method
|
|
that returns an event search by uid.
|
|
|
|
* SoObjects/Appointments/SOGoUserFolder+Appointments.m ([SOGoUserFolder -davCalendarHomeSet])
|
|
([SOGoUserFolder -davCalendarScheduleInboxURL])
|
|
([SOGoUserFolder -davCalendarScheduleOutboxURL])
|
|
([SOGoUserFolder -davDropboxHomeURL])
|
|
([SOGoUserFolder -davNotificationsURL]): new methods for
|
|
supporting the caldav-schedule draft extension to CalDAV.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -davComplianceClassesInContext:]): append
|
|
"calendar-schedule" to the list.
|
|
([SOGoAppointmentFolder -POSTAction:localContext]): new method to
|
|
handle POST CalDAV requests.
|
|
([SOGoAppointmentFolder -davCollectionTag]): new method.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder
|
|
-lookupName:objectNameinContext:lookupContextacquire:acquire]):
|
|
use lookupContactentryWithUIDorEmail to make sure we use the ID
|
|
field specified in the user defaults to match the username, and
|
|
that the users can be found using their email.
|
|
|
|
2008-06-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
|
|
-contentAsString]): add the ending interval to "today" instead of
|
|
to the start date.
|
|
([SOGoFreeBusyObject
|
|
-contentAsStringWithMethod:methodfrom:_startDateto:_endDate]): new
|
|
method that accepts a method parameter to specify in the returned
|
|
iCalendar object.
|
|
|
|
2008-06-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -labelForKey:key]):
|
|
enhanced method to request the user language, his/her browser
|
|
languages and the system language as fallback.
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.m
|
|
([-currentContactFolderName]): no longer interprets the name of
|
|
the personal folder, since the default name is now localized at
|
|
creation time.
|
|
|
|
2008-06-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalendarProperties.m ([UIxCalendarProperties -calendarSyncTag])
|
|
([UIxCalendarProperties -setCalendarSyncTag:newTag]): new
|
|
accessors to retrieve and set the calendar tags from the template.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m ([SOGoAppointmentFolder -syncTag])
|
|
([SOGoAppointmentFolder -setSyncTag:newSyncTag]): new accessors
|
|
that retrieves and set the calendar tags.
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor
|
|
-canCreateOrModify]): new overriden method that checks whether the
|
|
current clientObject is an instance of SOGoContactLDIFEntry before
|
|
returning the super method. This is to avoid the case where the
|
|
"save" button would appear because the user is listed as a super
|
|
user, which owns everything.
|
|
|
|
2008-06-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage
|
|
-readFreeBusyAction]): accelerated the process of rendering free
|
|
busy information by using ptr** instead of NSArray.
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
|
|
+initialize]): initialize the default interval based on the new
|
|
"SOGoFreeBusyDefaultInterval" user default array.
|
|
([SOGoFreeBusyObject
|
|
-fetchFreeBusyInfosFrom:startDateto:endDate]): fetch the events
|
|
from all the owner calendars.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filters]):
|
|
add processed recurrent events to the list of records.
|
|
([SOGoAppointmentFolder
|
|
-fetchFreeBusyInfosFrom:_startDateto:_endDate]): request the
|
|
"c_cycleinfo" field in order for the recurrent events to be taken
|
|
into account.
|
|
|
|
2008-06-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([-fetchContentObjectNames]): removed useless method.
|
|
([-fetchAllSOGoAppointments]): removed useless method.
|
|
([SOGoAppointmentFolder
|
|
-fetchCoreInfosFrom:_startDateto:_endDatetitle:titlecomponent:_componentadditionalFilters:filters]):
|
|
retrieve the fields required for object instantiation and cache
|
|
the resulting records.
|
|
([SOGoAppointmentFolder
|
|
-bareFetchFields:fieldsfrom:startDateto:endDatetitle:titlecomponent:componentadditionalFilters:filters]):
|
|
new method based on the non-bare part but simpler and without the
|
|
handling of cyclic records.
|
|
([SOGoAppointmentFolder -davCalendarQuery:queryContext])
|
|
([SOGoAppointmentFolder -davCalendarMultiget:queryContext]):
|
|
optimized those methods by replacing often-used NSArray instances
|
|
with arrays of ptr** and by removing utility submethods when
|
|
useful.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry
|
|
-vCard]): use the new "content" ivar.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m
|
|
([-deduceObjectForName:inContext:]): removed method since the
|
|
object type is now deduced in the parent class.
|
|
([SOGoContactGCSFolder -objectClassForResourceNamed:name]): new
|
|
overriden method.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
|
([-fetchContentStringsAndNamesOfAllObjects]): removed useless method.
|
|
([SOGoGCSFolder
|
|
-lookupName:keyinContext:localContextacquire:acquire]): added new
|
|
overriden method, to fetch all the required metadata and content
|
|
for basic handling of SOGoContentObjects.
|
|
([SOGoGCSFolder -fetchContentObjectNames]): prefetch and cache all
|
|
the metadata and content of children objects since this method is
|
|
used by the PROPFIND operation, which will likely require children
|
|
instantiation.
|
|
([SOGoGCSFolder -objectClassForComponentName:componentName]): new
|
|
mandatory method for subclasses.
|
|
([SOGoGCSFolder -objectClassForContent:content]): new mandator
|
|
method for subclasses.
|
|
([SOGoGCSFolder
|
|
-lookupName:keyinContext:localContextacquire:acquire]): fetch and
|
|
cache the requested child object record.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-ownerInContext:localContext]): set a new ivar: activeUserIsOwner
|
|
to reduce method calls.
|
|
|
|
* Main/SOGo.m ([SOGo -dispatchRequest:_request]): we now report
|
|
the time taken by the request, if the "SOGoDebugRequests" user
|
|
default is set.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
+objectWithRecord:objectRecordinContainer:newContainer]): new
|
|
constructor that instantiate an object based on the data found in
|
|
the corresponding database record.
|
|
([SOGoContentObject -setOCSPath:newOCSPath]): removed this method and
|
|
other OCS related ones, since we no longer fetch the record data
|
|
from here. Indeed, the object is now built from within its
|
|
container, so that caches can be created and queries avoided.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m ([NSArray
|
|
-asPointersOfObjects]): new method that transforms an NSArray into
|
|
an array of ptr**;
|
|
|
|
2008-06-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([UIxMailPartICalViewer -canOriginalEventBeUpdated]): new template
|
|
accessor that return whether the use status has changed in the
|
|
original reply and if its sequence number concurs.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m
|
|
([UIxMailPartICalActions -updateUserStatusAction]): we accept the
|
|
modification if the sequence number from the reply is equal or
|
|
SUPERIOR (for Lightning bugs), rather than inferior, where the
|
|
reply is obsolete anyway.
|
|
|
|
2008-05-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
|
|
+initialize]): new method where we read the three new defaults
|
|
variables "SOGoIMAPAclStyle", "SOGoIMAPAclUsernamesAreQuoted",
|
|
"SOGoIMAPAclConformsToIMAPExt".
|
|
([SOGoMailFolder +imapAclStyle]): new method that returns the rfc
|
|
number to which the imap server conforms to regarding the acl.
|
|
([SOGoMailFolder -aclsForUser:uid]): added right 'c' and 'd' from
|
|
rfc2086.
|
|
([SOGoMailFolder -setRoles:rolesforUser:uid]): convert SOGo
|
|
permissions to the acl rights conforming to the RFC configured
|
|
with SOGoIMAPAclStyle.
|
|
([SOGoMailFolder -aclUsers]): unquote usernames if
|
|
"SOGoIMAPAclUsernamesAreQuoted" is set. Remove usernames listed as
|
|
special usernames in
|
|
http://www.tools.ietf.org/wg/imapext/draft-ietf-imapext-acl/ if
|
|
"SOGoIMAPAclConformsToIMAPExt" is set.
|
|
|
|
* UI/MailerUI/UIxMailUserRightsEditor.m ([UIxMailUserRightsEditor conformsToRFC4314]): new template getter.
|
|
|
|
2008-05-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-davCollectionQuery:queryContext]): fixed the owner url returned
|
|
in the list so that it matches what the regular davOwner method
|
|
returns.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
|
|
-renameFolderAction]): select the INBOX folder before renaming the
|
|
target folder.
|
|
|
|
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage -loginSuffix]): new
|
|
method that returns the login suffix configured in the user
|
|
defaults.
|
|
([SOGoRootPage -hasLoginSuffix]): returns whether a login suffix
|
|
has been configured in the user defaults.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -mailAccounts]): request
|
|
the user login to the imap server from the LDAP user manager.
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager
|
|
-getImapLoginForUID:uid]): new method that returns the user
|
|
identifier to use when login to the imap server, in case it's not
|
|
the ldap uid. This is configurable through the boolean user
|
|
default "SOGoForceIMAPLoginWithEmail".
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject
|
|
-sendMail]): the email passed as parameter to sendmail is now the
|
|
bare user email.
|
|
|
|
2008-05-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
|
|
-deleteFolderAction]): select the INBOX folder before removing the
|
|
target folder, so that Courier does not complain about the current
|
|
mailbox being in use.
|
|
|
|
2008-05-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-subscribe:reallyDoinTheNameOf:delegatedUserfromMailInvitation:isMailInvitationinContext:localContext]):
|
|
published method.
|
|
([-folderReference]): no longer distingish between the user owned
|
|
and the subscribed folders.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -compare:otherFolder]):
|
|
no longer use the "_" in the folder's nameInContainer.
|
|
|
|
* UI/Common/UIxFolderActions.m ([UIxFolderActions -subscribeAction])
|
|
([UIxFolderActions -unsubscribeAction]): use the client object's
|
|
method for un-/subscribing.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-pathArrayToSOGoObject]): removed useless method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -davCalendarQuery:queryContext]): added
|
|
partial support for the "text-match" caldav directive.
|
|
|
|
2008-05-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([-newAction]): removed
|
|
useless method.
|
|
|
|
2008-05-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-davAclQuery:queryContext]): parse the names only of element nodes.
|
|
|
|
* UI/Common/UIxFolderActions.m ([UIxFolderActions -activateFolderAction])
|
|
([UIxFolderActions -deactivateFolderAction]): reversed the logic
|
|
and remove or add the folder name from/into the 'InactiveFolders'
|
|
settings key.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -create]): no longer write the folder name
|
|
in the 'ActiveFolders' settings key.
|
|
([-isActive]): returns whether the folder is NOT listed in the
|
|
'InactiveFolders' settings key.
|
|
|
|
2008-05-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Main/SOGo.m ([SOGo -davURL], [SOGo -soURL]): copied methods from
|
|
SOGoObject.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-davDisplayName]): new overriden method to provide a display name
|
|
to the users principal.
|
|
|
|
* SoObjects/SOGo/SOGoPermissions.[hm]: removed the "Save Acls"
|
|
permission since its purposes matches SOPE's "Change Permissions".
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
+webdavAclManager]): new overriden method.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
+webdavAclManager]): new overriden method.
|
|
|
|
* UI/MailPartViewers/UIxMailPartTextViewer.m (convertChars): do
|
|
not cast pointers to unsigned int to avoid problems with big
|
|
endian archs.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m ([-davNamespaces]):
|
|
removed method.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([-davNamespaces]):
|
|
removed method.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
+webdavAclManager]): new overriden method.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder +webdavAclManager]):
|
|
new overriden method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject +webdavAclManager]): new overriden method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder +webdavAclManager]): new overriden method.
|
|
([-davNamespaces]): removed method.
|
|
([-lookupGroupFolderForUIDs:_uidsinContext:])
|
|
([-lookupGroupCalendarFolderForUIDs:_uidsinContext:_ctx]):
|
|
disabled methods.
|
|
|
|
* SoObjects/SOGo/SOGoWebDAVAclManager.[hm]: new class module that
|
|
implements the rendering of DAV acl trees as well as their mapping
|
|
from SOGo permissions.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject +initialize]): libSOGo
|
|
is now a framework, so we can simplify the loading of the DAVReportMap.
|
|
([-lookupGroupsFolder]): disabled method.
|
|
([SOGoObject -davOwner], [SOGoObject -davAclRestrictions])
|
|
([SOGoObject -davPrincipalCollectionSet])
|
|
([SOGoObject -davCurrentUserPrivilegeSet])
|
|
([SOGoObject -davSupportedPrivilegeSet], [SOGoObject -davAcl])
|
|
([SOGoObject -davPrincipalMatch:localContext])
|
|
([SOGoObject -davSupportedReportSet]): (re-)implemented dav
|
|
methods with our new dav rendering paradigm.
|
|
([-davNamespaces]): removed method.
|
|
([SOGoObject -domNode:nodegetChildNodesByType:type]): new helper
|
|
method to help subclass with parsing dav requests, especially wrt
|
|
REPORT ones.
|
|
([SOGoObject +webdavAclManager]): new overridable method that
|
|
returns a properly configured DAV acl manager (see above).
|
|
|
|
* SoObjects/Appointments/SOGoUserFolder+Appointments.[hm]: new
|
|
category module that implements DAV methods required by CalDAV.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -applicationPath]):
|
|
disabled all mentions of "SOGoGroupFolder*".
|
|
|
|
* SoObjects/SOGo/SOGoDAVRendererTypes.[hm]: removed subclass
|
|
module, superseded by the new method mentionned below.
|
|
|
|
* SoObjects/SOGo/SOGoWebDAVValue.m ([SOGoWebDAVValue
|
|
-stringForTag:_keyrawName:setTaginContext:contextprefixes:prefixes]):
|
|
a simple wrapper that returns an uninterpreted NSString to SOPE.
|
|
|
|
* SoObjects/SOGo/NSArray+DAV.[hm],
|
|
* SoObjects/SOGo/NSDictionary+DAV.[hm],
|
|
* SoObjects/SOGo/NSObject+DAV.[hm],
|
|
* SoObjects/SOGo/NSString+DAV.[hm],
|
|
* SoObjects/SOGo/NSURL+DAV.[hm]: new class category modules that
|
|
handle the correct generation of DAV entries, with namespace
|
|
accounting. Those were implemented to enable the use of a simple
|
|
SoWebDAVValue as the root of the resulting string, thereby
|
|
avoiding the xml escaping done by SOPE when returning a real NSString.
|
|
|
|
2008-04-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m ([LDAPSource -fetchContactsMatching:match])
|
|
([LDAPSource -lookupContactEntryWithUIDorEmail:uid]): take all the
|
|
mail fields into account when doing a search.
|
|
|
|
2008-04-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject +initialize]): the
|
|
module is now a framework and we now load the new DAVReportMap
|
|
description file.
|
|
([-davOwner]): the principal URL is now based on the DAV
|
|
application URL.
|
|
([SOGoObject
|
|
-lookupName:lookupNameinContext:localContextacquire:acquire]): we
|
|
now lookup report methods from here (code from SOGoFolder). The
|
|
method has changed to refer to the new DAVReportMAP description
|
|
file in order to resolve the lookups on self.
|
|
([SOGoObject -davSupportedReportSet]): implemented the new
|
|
"supported-report-set" dav method, based on the new mechanism
|
|
described above.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m: REPORT lookups are now done
|
|
directly from SOGoObject.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
-initWithLogin:newLoginroles:newRoles]): we make sure realUID is
|
|
not an empty string.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-davResourceType]): we declare self as a "principal".
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-davContentLength]): the content length should is now based on the
|
|
UTF-8 encoding.
|
|
|
|
2008-04-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalendarSelector.m ([UIxCalendarSelector
|
|
-contrastingTextColor]): new method (code taken from Lightning)
|
|
that returns a foreground color easily readible based on the
|
|
brightness of the background color.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-setDavDisplayName:newName]): deny the renaming of the folder if
|
|
not owner.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-davSetProperties:setPropsremovePropertiesNamed:removedPropsinContext:localContext]):
|
|
certain properties should be authorized when not owner.
|
|
|
|
2008-04-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxColorPicker.[hm]: new class module that
|
|
implements a javascript-based color picker.
|
|
|
|
* UI/Scheduler/UIxCalendarProperties.[hm]: new class module that
|
|
implements the interface for renaming and recoloring the
|
|
calendars.
|
|
|
|
2008-04-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
([_UIxHTMLMailContentHandler -characters:_charslength:_len])
|
|
([_UIxHTMLMailContentHandler -comment:_charslength:_len]): don't
|
|
cast the unichar data to char, to avoid issues with endianness
|
|
which prevents the CSS from being parsed properly.
|
|
|
|
* UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -isMailReply]): new
|
|
method that returns the JS values "true" or "false" as strings is
|
|
the mail has a non-null count of recipients.
|
|
|
|
2008-04-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m ([SOGoAppointmentFolder -davCalendarQuery:queryContext])
|
|
([SOGoAppointmentFolder -davCalendarMultiget:queryContext]):
|
|
deduce the cname of objects even if we are using hostless urls.
|
|
|
|
2008-03-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/SOGoUI/SOGoACLAdvisory.m ([SOGoACLAdvisory -resourceName]):
|
|
use the resource display name instead of its "nameInContainer".
|
|
|
|
2008-03-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactLDIFEntry.m ([SOGoContactLDIFEntry
|
|
-isFolderish]): new overriden method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-appendObject:objectproperties:propertieswithBaseURL:baseURLtoComplexResponse:r]):
|
|
check whether the current user has access to the objects returned
|
|
before including their properties.
|
|
|
|
2008-03-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
|
|
-primaryFetchProfile]): we unescape the fetched value before
|
|
constructing the NSDictionary.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-setComponent:newComponent]): the weeks start on sunday in
|
|
OpenStep and are indexed from 0.
|
|
|
|
2008-03-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-takeValuesFromRequest:_rqinContext:_ctx]): treat the regular
|
|
monthly recurrences as all others.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-davSetProperties:setPropsremovePropertiesNamed:removedPropsinContext:localContext]):
|
|
returns an exception if the property to modify is not
|
|
"davDisplayName" and if the current user has not the owner role
|
|
over the current collection.
|
|
|
|
2008-03-25 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMainView.m ([UIxCalMainView
|
|
-verticalDragHandleStyle]): CSS style wrt to position of drag
|
|
handle saved by current user.
|
|
([UIxCalMainView -horizontalDragHandleStyle]): idem.
|
|
([UIxCalMainView -eventsListViewStyle]): idem.
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.m
|
|
([UIxContactsListViewContainer -verticalDragHandleStyle]): CSS
|
|
style wrt to position of drag handle saved by current user.
|
|
([UIxContactsListViewContainer -horizontalDragHandleStyle]): idem.
|
|
([UIxContactsListViewContainer -contactsListContentStyle]): idem.
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame
|
|
-verticalDragHandleStyle]): CSS style wrt to position of drag
|
|
handle saved by current user.
|
|
([UIxMailMainFrame -horizontalDragHandleStyle]): idem.
|
|
([UIxMailMainFrame -mailboxContentStyle]): idem.
|
|
|
|
2008-03-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -davCalendarMultiget:queryContext]):
|
|
implemented new CalDAV method.
|
|
([SOGoAppointmentFolder -davCalendarQuery:queryContext]):
|
|
refactored method to return exactly the properties requested in
|
|
the query and to share code with the new method above.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -davCalendarData]): added method for
|
|
better CalDAV compliance.
|
|
|
|
2008-03-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-davAclQuery:queryContext]): declare the "text/xml" mime type only
|
|
when the content is not empty. Otherwise, returns no mime type at
|
|
all and set the status code to 204.
|
|
|
|
2008-03-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMonthViewOld.m ([UIxCalMonthViewOld
|
|
-endDate]): removed useless method.
|
|
|
|
* SoObjects/SOGo/NSCalendarDate+SOGo.m
|
|
([-dayOfWeeK:_dayoffsetFromSunday:_offset]): removed useless
|
|
method.
|
|
([-sundayOfWeek]): removed useless method.
|
|
|
|
2008-03-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OGoContentStore/OCSContactFieldExtractor.m
|
|
([OCSContactFieldExtractor -extractQuickFieldsFromVList:vList]):
|
|
new method to handle extraction of quick information from the
|
|
VLIST components. I.e.: the display name of the card.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
|
|
-isValidContentName:name]): moved method from
|
|
SOGoAppointmentFolder's isValidAppointmentName.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder -objectClassForContent:content])
|
|
([SOGoContactGCSFolder -deduceObjectForName:inContext:])
|
|
([SOGoContactGCSFolder -requestNamedIsHandledLater:name])
|
|
([SOGoContactGCSFolder -lookupName:inContext:acquire:]): those
|
|
methods were modified to match the ones in SOGoAppointmentFolder,
|
|
in order to manage both vcard and vlist components.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSList.[hm]: new class module
|
|
that implements the list counterpart to VCARD: VLIST.
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor -saveURL]):
|
|
new accessor that returns the url + "saveAsContact".
|
|
([UIxContactEditor
|
|
-shouldTakeValuesFromRequest:requestinContext:context]): changed
|
|
method to match the one from the event and todo editor module.
|
|
([UIxContactEditor -editActionName]): changed to "editAsContact".
|
|
([UIxContactEditor -newAction]): changed method to match the one
|
|
from the event and todo editor module.
|
|
|
|
* UI/Contacts/UIxListView.m: new view module for the VLIST format
|
|
components.
|
|
|
|
* UI/Contacts/UIxListEditor.m: new edition module for the VLIST
|
|
format components.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSList.m: new controller module
|
|
for the VLIST format.
|
|
|
|
2008-03-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -isFolderish]): new
|
|
parent method, meant to be overriden.
|
|
([SOGoObject -davIsCollection]): moved method from SOGoFolder up
|
|
to this parent class.
|
|
|
|
2008-02-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-davSubscribe:queryContext]): implemented subscribing users other
|
|
that the current one, if the user doing the operation is a superuser.
|
|
([SOGoGCSFolder -davUnsubscribe:queryContext]): same as above for
|
|
unsubscription.
|
|
|
|
2008-02-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-davUserQuery:queryContext]): new method for the "user-query"
|
|
inverse DAV method.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-aclUsersForObjectAtPath:objectPathArray]): return unique uids.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([-davNamespaces]): removed method.
|
|
|
|
* SoObjects/SOGo/SOGoDAVRendererTypes.h (SoWebDAVValue): added
|
|
SOGoDAVDictionary webdav value class.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m ([NSArray -uniqueObjects]):
|
|
new method that returns unique occurences of the objects.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-davNamespaces]): same as below.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -davNamespaces]): take the parents
|
|
namespaces into account.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -addUserInAcls:uid]):
|
|
new method.
|
|
([SOGoObject -removeUserFromAcls:uid]): new methods (see below).
|
|
([SOGoObject -davNamespaces]): declare the
|
|
"urn:inverse:params:xml:ns:inverse-dav" namespace.
|
|
([SOGoObject -davRecordForUser:user])
|
|
([SOGoObject -davAclQuery:queryContext]): new methods to answer to
|
|
the "user-list", "roles", "set-roles", "add-user", "remove-user"
|
|
inverse DAV methods.
|
|
|
|
* UI/Common/UIxObjectActions.m ([UIxObjectActions -addUserInAclsAction])
|
|
([UIxObjectActions -removeUserFromAclsAction]): moved the core of
|
|
those methods into SOGoObject and translate its result into an
|
|
appropriate HTTP status.
|
|
|
|
2008-02-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder -davInverseACL]):
|
|
first implementation of a DAV interface to SOGo roles. Returns the
|
|
result in JSON.
|
|
|
|
2008-02-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* GNUmakefile: migrated to GNUstep Make 2.
|
|
|
|
2008-02-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
|
|
-iCalStringForFreeBusyInfos:_infosfrom:_startDateto:_endDate]): we
|
|
no longer invoke [container login], since this method has been
|
|
removed. Instead we invoke ownerInContext:.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
|
|
-fetchContentObjectNames]): new model method for all subclasses.
|
|
This will be removed in the future since toOneRelationshipKeys
|
|
must be sufficient.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-defaultFilenameExtension]): removed useless method.
|
|
([-toOneRelationshipKeys]): moved method into SOGoFolder.m.
|
|
|
|
2008-02-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([UIxMailPartICalViewer -currentUserAttendee]): new method that
|
|
returns the current user as an attendee representation in the
|
|
displayed event, if found.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-_urlHostString]): replace "@" with %40 AFTER invoking
|
|
stringByEscapingURL.
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject
|
|
-isBodyPartKey:key]): hacked a little bit to test for the length
|
|
of the key trimmed from its bordering digits. So if the key
|
|
contains only digits, we consider it to be a body part key. There
|
|
is room for improvement but we can consider this will be accurate
|
|
in 99.99% of the cases. Also, removed the context parameter which
|
|
was useless.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-davComplianceClassesInContext:localContext]): new method,
|
|
declaring "access-control" in the compliance classes.
|
|
|
|
2008-02-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-imap4URLString]): compose the mail hostname part of the url by
|
|
escaping the username. This is part of the fix below.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -mailAccounts]): if the
|
|
loginname for the default mail account contains an "@", it should
|
|
be url-escaped to avoid confusing NSURL.
|
|
([SOGoUser -accountWithName:accountName]): new method that wanders
|
|
the accounts list and returns the one that matches the name passed
|
|
as parameter, if found.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([-login]): removed useless
|
|
method.
|
|
([SOGoUserFolder -ownerInContext:_ctx]): compute the owner name
|
|
from a SOGoUser instance initialized with the nameInContainer as
|
|
initial login name. This way, all the objects belonging to the
|
|
corresponding user will be accessible with all the fields
|
|
mentionned in the "bindFields" LDAP settings value.
|
|
([SOGoUserFolder -privateCalendars:keyinContext:localContext])
|
|
([SOGoUserFolder -privateContacts:_keyinContext:_ctx]): use -[self
|
|
ownerInContext:] to determine the OCS path.
|
|
|
|
* SoObjects/Mailer/SOGoSharedMailAccount.[hm]: removed useless
|
|
module.
|
|
|
|
* SoObjects/Mailer/SOGoSharedInboxFolder.[hm]: removed useless
|
|
module.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m ([UIxPreferences
|
|
-setSignature:newSignature]): invoke -[SOGoUser saveMailAccounts]
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -defaultIdentity]): method
|
|
moved from UIxPreferences.m.
|
|
([SOGoUser -saveMailAccounts]): new methods that save the
|
|
"MailAccounts" preference in the user settings.
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager
|
|
+initialize]): issue a warning whenever "SOGoDefaultMailDomain"
|
|
is not configured in the user defaults, setting it to "localhost"
|
|
by default.
|
|
([LDAPUserManager +defaultMailDomainIsConfigured]): new method
|
|
that returns whether "SOGoDefaultMailDomain" is configured.
|
|
|
|
2008-02-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder -ocsFolder]):
|
|
send an email only when not in a dav request.
|
|
([SOGoGCSFolder -delete]): same as above.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-supportsQuotas]): test quota support by querying the server
|
|
capability.
|
|
|
|
2008-02-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m
|
|
([UIxMailPartICalActions -acceptAction])
|
|
([UIxMailPartICalActions -declineAction]): define the organizer of
|
|
the event as one of the reply-to or from addresses whenever the
|
|
organizer is not specified in those Outlook invitations.
|
|
|
|
2008-02-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame
|
|
-quotaSupport]): new json string that lists the quota support
|
|
among the user's mail accounts.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-supportsQuotas]): new method that returns whether the current
|
|
account server has support for quotas.
|
|
|
|
2008-01-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-davSetProperties:setPropsremovePropertiesNamed:removedPropsinContext:localContext]):
|
|
new method that takes the displayname into account.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
-davCreateCollection:pathInfoinContext:localContext]): new method
|
|
that acts as a proxy to newFolderWithName:andNameInContainer:.
|
|
|
|
2008-01-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-takeValuesFromRequest:_rqinContext:_ctx]): make use of the <<
|
|
operator to handle the day masks in custom rules.
|
|
|
|
2008-01-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
+userWithLogin:newLoginroles:newRoles]): test if the user is well
|
|
initialized before registering it with the SOGo cache.
|
|
([SOGoUser -initWithLogin:newLoginroles:newRoles]): returns a user
|
|
only if the realUID has been found, otherwise we dealloc self and
|
|
return nil.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m: if c_cycleinfo
|
|
is an NSNull instance, we consider it to be empty and return
|
|
automatically with an error message in the log.
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
|
|
-extractQuickFieldsFromTodo:_task]): handle recurrence info in
|
|
tasks.
|
|
|
|
* UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer
|
|
-pathToAttachment]): in the case where the client object is not a
|
|
mail body part (when the message IS the attachment), we append 0
|
|
to generate the url, instead of the filename.
|
|
|
|
2008-01-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatetitle:titlecomponent:_component]):
|
|
change the algorithm a little bit to compare the roles of the
|
|
current users to see if he is an "owner" instead of solely
|
|
checking its login name. This enables the users listed as
|
|
"SuperUsers" to be considered as owners and see everything as
|
|
expected.
|
|
|
|
2008-01-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoFolder+CardDAV.m ([SOGoFolder
|
|
-davAddressbookQuery:queryContext]): when empty values are fed to
|
|
SOGo, their dictionary should be explicitly set to nil.
|
|
|
|
2008-01-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoCache.m ([SOGoCache
|
|
-registerObject:objectwithName:nameinContainer:container]):
|
|
register the object and its parents too.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
+userWithLogin:newLoginroles:newRoles]): try to retrieve the
|
|
specified user from the SOGoCache.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-lookupName:lookupNameinContext:localContextacquire:acquire]): try
|
|
to retrieve the object specified from the cache and returns it if
|
|
it exists.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -lookupName:inContext:acquire:]): cache
|
|
the result in the SOGoCache.
|
|
|
|
* Main/SOGo.m ([SOGo -dispatchRequest:_request]): initialize and
|
|
kill the shared cache before and after the connection processing.
|
|
|
|
* SoObjects/SOGo/SOGoCache.[hm]: new cache module implementing a
|
|
per-connection cache mechanism.
|
|
|
|
2008-01-16 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* Minor adjustments / bug fixes to previous commit.
|
|
|
|
2008-01-14 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* Added files related to the custom recurrence
|
|
editor of the SOGo Web interface. The CSS
|
|
needs to be done correctly.
|
|
|
|
* Fixed a bug in the daily recurrence generator.
|
|
We now consider the byDayMask, if any.
|
|
|
|
* Moved the repeat/reminder code to the
|
|
UIxComponentEditor class / template.
|
|
|
|
* Added a few JavaScript methods to HTMLElement.js
|
|
|
|
2008-01-08 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions
|
|
-composeAction]): the mailto form parameter can now be a
|
|
comma-separated list of email addresses.
|
|
|
|
2007-12-21 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactView.m
|
|
Modified -secondaryEmail so that we always get
|
|
the "last" email address in case no preferred
|
|
one was specified in the vCard. Also fixed
|
|
a memory leak in this method.
|
|
|
|
2007-12-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-aclsForUser:uid]): removed useless ACL checks on the current
|
|
object to reduce DB usage.
|
|
|
|
2007-12-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -attachmentNames]):
|
|
initialize "attachmentNames" if it was NOT initialized... I think
|
|
this was a typo.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject
|
|
-fetchMailForForwarding:sourceMail]): append the signature to
|
|
mails forwarded as attachment.
|
|
|
|
* UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer
|
|
-clientPart]): new method that returns the corresponding
|
|
SOGoMailPart instance.
|
|
([UIxMailPartViewer -pathToAttachment]): simplified method, ensure
|
|
the filename is present. If the part has none, create one with the
|
|
"Untitled-" prefix. Add an extension if none is found.
|
|
|
|
* UI/MailPartViewers/UIxMailPartImageViewer.m
|
|
([UIxMailPartImageViewer -pathToImage]): removed method since it
|
|
implementents exactly the same functionality as
|
|
[UIxMailPartViewer -pathToAttachment].
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
|
|
-filename]): new method that returns the filename to the current
|
|
part by taking the different mime implementations into account.
|
|
[SOGoMailBodyPart -isBodyPartKey:inContext:]: commented out method
|
|
because we need to handle the part recognition in a different way,
|
|
by using the prefix "part" for example. One day we will do that.
|
|
|
|
* UI/Scheduler/NSArray+Scheduler.m ([NSMutableArray
|
|
-reverseArray]): new category method.
|
|
|
|
2007-12-17 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame
|
|
-composeAction]): fixed URL when no recipient is specified.
|
|
|
|
2007-12-14 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
We set headers in lowercase so that they get properly
|
|
encoded by SOPE.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m
|
|
Minor cleanups.
|
|
|
|
2007-12-13 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame -saveFoldersStateAction])
|
|
([UIxMailMainFrame -getFoldersStateAction]): new methods to get
|
|
and set the folders state of the user's web view.
|
|
|
|
2007-12-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage -crashAction]): new
|
|
action methods that generates a segmentation faults.
|
|
([SOGoRootPage -exceptionAction]): new method that returns an
|
|
exception object.
|
|
([SOGoRootPage -raisedExceptionAction]): new method that raises an
|
|
exception without returning it.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -responseWithStatus:status])
|
|
([UIxComponent -responseWithStatus:statusandString:contentString])
|
|
([UIxComponent -responseWithStatus:statusandJSONRepresentation:contentObject])
|
|
([UIxComponent -responseWith204]): new utility methods.
|
|
|
|
* UI/Common/WODirectAction+SOGo.m ([WODirectAction
|
|
-responseWithStatus:statusandString:contentString])
|
|
([WODirectAction
|
|
-responseWithStatus:statusandJSONRepresentation:contentObject]):
|
|
new utility methods.
|
|
|
|
* SoObjects/SOGo/NSScanner+BSJSONAdditions.m ([NSScanner
|
|
-scanJSONStringDelimiterString]): new category module taken from
|
|
BSJSONAdditions 1.3.
|
|
|
|
* SoObjects/SOGo/NSDictionary+BSJSONAdditions.[hm]: new category
|
|
module taken from BSJSONAdditions 1.3.
|
|
http://blakeseely.com/downloads.html
|
|
|
|
2007-12-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m ([NSString
|
|
-stringByDetectingURLs]): we now go back until the real start of
|
|
the found url.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-fetchAttachmentIds]): new method that wanders through the mail
|
|
structure to collect the attachment content ids and to associate
|
|
them with their url.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
([_UIxHTMLMailContentHandler
|
|
-startElement:_localNamenamespace:_nsrawName:_rawNameattributes:_attributes]):
|
|
the content-ids are now enclosed between "<>" before retrieval
|
|
from the attachment dictionary.
|
|
([UIxMailPartHTMLViewer -cssContent])
|
|
([UIxMailPartHTMLViewer -flatContentAsString]): the content-ids
|
|
are now fetch from the clientobject (an instance of
|
|
SOGoMailObject) with the new "fetchAttachmentIds" method.
|
|
|
|
2007-12-12 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-eventsListAction]): added the state of the calendar's owner with
|
|
respect to the current event.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-_loadAttendees]): added the retrieval of attendees state on
|
|
current event.
|
|
|
|
2007-12-12 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailRenderingContext.{h,m}
|
|
Removed template caching which added very little
|
|
and created re-entrant issues.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
Added a hack (and stated so in the source file)
|
|
to avoid what seems to be a bug in libxml.
|
|
|
|
2007-12-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-davCreationDate])
|
|
([SOGoContentObject -davLastModified])
|
|
([SOGoContentObject -davContentLength]): implemented dav methods.
|
|
|
|
2007-12-10 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
|
|
-GETAction:]): when asAttachment is set to true, the header
|
|
"content-disposition" is set to "attachment" so browsers like IE
|
|
and Safari properly asks the user to save the file.
|
|
|
|
2007-12-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
([UIxMailPartHTMLViewer -flatContentAsString]): when in
|
|
UIxMailPartAlternative, scan the filenames of potential cid at the
|
|
same level as our parent.
|
|
|
|
2007-12-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Main/SOGo.m ([SOGo -run]): the table creation script now have a
|
|
@{tableName} substitution variable to be substitued with the real
|
|
table name obtained from the configuration variables.
|
|
|
|
2007-12-07 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailRenderingContext.m
|
|
We treat multipart/appledouble like multipart/mixed
|
|
for now. That allows the user to save both parts.
|
|
|
|
* Corrected typos in Localizable.string files.
|
|
|
|
2007-12-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Common/UIxAclEditor.m ([-currentUserIsOwner]): replaced
|
|
method with -canModifyAcls that invokes the security manager
|
|
instead for the permission "SaveAcls" on the client object.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -contentAsString]): securize the returned content.
|
|
([SOGoCalendarComponent -aclsForUser:uid]): check whether the user
|
|
is an organizer or a participant as well.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -changeParticipationStatus:_status]): the
|
|
user we should change the status of is not the active user but the
|
|
owner of the object. This is for delegation.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -fetchContentObjectNames]): fetch the
|
|
elements through the fetchFields:from:to:title:component: method
|
|
method, so that the result is already filtered depending on the
|
|
acl.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-toolbar]): if the current user is a delegate, take the permission
|
|
"ModifyComponent" into account. Also, do not let him/her modify an
|
|
event for which he/she is the organizer.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder -davResourceType]): declared as a carddav
|
|
addressbook collection.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-davResourceType]): declared as a carddav addressbook collection.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -davLastModified]):
|
|
override SoObject's implementation. Otherwise a localized date is returned.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -isCalendar])
|
|
([UIxPageFrame -isContacts], [UIxPageFrame -isMail]): getters to
|
|
determine which module is the current one.
|
|
|
|
2007-12-06 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/NSArray+Scheduler.m ([NSArray -compareEventsTitleAscending:otherEvent])
|
|
([NSArray -compareEventsLocationAscending:otherEvent])
|
|
([NSArray -compareEventsEndDateAscending:otherEvent])
|
|
([NSArray -reversedArray]): new methods that sort an array of
|
|
events depending of various parameters.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-eventsListAction]): added support for sorting events.
|
|
|
|
2007-12-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -saveAction])
|
|
([UIxMailEditor -sendAction]): make sure that the attachments
|
|
having the same filename are correctly sequenced (ex: base.ext,
|
|
base-1.ext, base-2.ext).
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
|
|
-fetchBLOB]): added support for quoted-printable decoding. Also,
|
|
we return nil if the type is not supported.
|
|
|
|
2007-12-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -newAction]):
|
|
create task obejcts with the .ics extension.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-newAction]): create appointment objects with the .ics extension.
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor -newAction]):
|
|
create objects with the .vcf extension.
|
|
|
|
* Main/NSException+Stacktrace.m: added missing symbols from
|
|
NSException.m and NSDebug.m (GNUstep).
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage
|
|
-foldersSearchAction]): make use of the new search methods in
|
|
SOGoUserFolder (see below).
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([-foldersSearchAction]):
|
|
moved method into ../MainUI/SOGoUserHomePage.m.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-foldersOfType:folderTypeforUID:uid]): only return folders owned
|
|
by the specified user.
|
|
|
|
2007-12-05 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m: the condition for replyToAll
|
|
has to be done later to avoid duplicated to and cc addresses.
|
|
|
|
2007-12-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -davCalendarQuery:queryContext]): fixed a leak.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder -davSubscribe:localContext])
|
|
([SOGoGCSFolder -davUnsubscribe:localContext]): subscribe an
|
|
unsubscribe from DAV-based accesses. We could be compatible with
|
|
Microsoft's extensions but we have no need for a "subcription id",
|
|
so we implement our own.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-POSTAction:localContext]): new method to intercept DAV POSTs,
|
|
which we now use to implement certain custom commands such as
|
|
"subscribe" and "unsubscribe".
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-davNamespaces]): declare the
|
|
"urn:inverse:params:xml:ns:inverse-dav" xml ns.
|
|
([SOGoUserFolder -foldersOfType:folderTypeforUID:uid]): new method
|
|
designed to replace the UIxContactFoldersView.m mechanism for
|
|
displaying folders to subcribe to, as a common code base for both
|
|
Web and DAV-based subscriptions.
|
|
([SOGoUserFolder -foldersOfType:typematchingUID:uid]): same as
|
|
above.
|
|
([SOGoUserFolder -davCollectionQuery:queryContext]): new method
|
|
that implement a custom DAV-based protocol query for querying
|
|
folder based on specified attributes.
|
|
|
|
2007-12-03 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* Main/NSException+Stacktrace.{h,m} - new files
|
|
to handle automatic stack trace generation
|
|
upon an uncaught exception.
|
|
|
|
* Updated the templates and Localizable.string files
|
|
to fix typos and add new strings.
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m
|
|
Fixed attachment retreival when the first character
|
|
is a digit.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
|
Fixed the sending of emails when folders are created/removed.
|
|
Notifications are sent if the defaults SOGoFoldersSendEMailNotifications
|
|
is set to YES.
|
|
|
|
* UI/Common/UIxUserRightsEditor.m
|
|
* UI/Templates/SOGoACLEnglishModificationAdvisory.wox
|
|
* UI/Templates/SOGoACLFrenchModificationAdvisory.wox
|
|
* UI/Templates/SOGoACLGermanModificationAdvisory.wox
|
|
Added the capabilities to email notifications when ACLs have
|
|
changed on a DAV collection or an IMAP mailbox. Also added
|
|
new templates (3 .wox) to deal with this.
|
|
|
|
* UI/WebServerResources/ContactsUI.js
|
|
UI/WebServerResources/SchedulerUI.js
|
|
Added warnings on operations w/o selection.
|
|
|
|
2007-11-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
-appendSubscribedSources]): don't include sources for which we
|
|
don't have the SOGoPerm_AccessObject permission.
|
|
|
|
* SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate
|
|
-rfc822DateString]): we want positive timezones to be specified
|
|
with a leading "+" too.
|
|
|
|
2007-11-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
+folderWithSubscriptionReference:referenceinContainer:aContainer]):
|
|
return nil if the subscribed folder has no display name (meaning
|
|
it no longer exists).
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
-appendPersonalSources]): don't include sources which are no
|
|
longer existing.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-ocsPathOfContainer]): return the intended value, not that of
|
|
ocsPath...
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -sendResponseToOrganizer]): send the
|
|
message only of sendEMailNotifications is set.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -subscriptionRoles]):
|
|
new method that returns the roles that qualifies for adding the
|
|
special "authorized subscribed" sogo role.
|
|
|
|
2007-11-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-aclsForUser:uid]): copy all the roles from the container. If the
|
|
object is new, make sure the roles contain "ObjectEditor" if and
|
|
only if "ObjectCreator" is present.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-aclsForUser:uid]): no longer take the "ObjectReader" role into
|
|
account.
|
|
|
|
* UI/Common/UIxFolderActions.m ([UIxFolderActions
|
|
-canAccessContentAction]): always return HTTP status 204. We want
|
|
this because we are relying on the SOPE access control manager to
|
|
grant access to this method. This requires a fine-tuned access
|
|
control in SOGo itself...
|
|
|
|
* UI/Contacts/UIxContactsUserRightsEditor.m ([-userCanReadObjects])
|
|
([-setUserCanReadObjects:userCanReadObjects]): removed methods.
|
|
|
|
* UI/MailerUI/UIxMailUserRightsEditor.m ([UIxMailUserRightsEditor
|
|
-updateRights]): no longer take the "ObjectReader" role into account.
|
|
([-userCanReadMails], [-setUserCanReadMails:userCanReadMails]):
|
|
removed methods.
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
|
|
-fetchFreeBusyInfosFrom:_startDateto:_endDate]): specify context
|
|
when looking up the Calendar folder.
|
|
|
|
2007-11-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -todo]): same as below.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-event]): create the event if it doesn't exist.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -userHasCalendarAccess])
|
|
([UIxPreferences -userHasMailAccess]): same as below, for
|
|
displaying preference tabs.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame
|
|
-userHasCalendarAccess]): new accessor for the link banner.
|
|
([UIxPageFrame -userHasMailAccess]): same as above.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-toManyRelationshipKeys]): do not report the path to modules to
|
|
which the user has no access. No longer cache this information
|
|
statically, the array will be generated at each call.
|
|
([SOGoUserFolder -lookupName:_keyinContext:_ctxacquire:_flag]):
|
|
ignore the path to modules to which the user has no access.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -canAccessModule:module]):
|
|
new method that returns whether the user has access to the
|
|
specified module.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m ([LDAPSource
|
|
-initFromUDSource:udSource]): take a new parameter named
|
|
'ModulesContraints' that defines a set of constraints for
|
|
accessing specified named modules. This is an optout, meaning the
|
|
modules will be present unless a constraint is specified.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-roleForComponentsWithAccessClass:accessClassforUser:uid]): cache
|
|
acl to reduce method calls.
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatetitle:titlecomponent:_component]):
|
|
if the user is not the current user, we strip the useless info
|
|
from the meta data.
|
|
|
|
* UI/Common/WODirectAction+SOGo.m ([WODirectAction
|
|
-labelForKey:key]): new category method.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-event]): same as below.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -todo]): request a
|
|
secured version of the component.
|
|
|
|
* UI/MailPartViewers/UIxMailPartViewer.m
|
|
([-fallbackStringEncoding]): removed method.
|
|
([UIxMailPartViewer -flatContentAsString]): we no longer use [self
|
|
fallbackStringEncoding]. Instead we directly specify
|
|
NSISOLatin1StringEncoding if UTF-8 has failed.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([-fallbackStringEncoding]): removed method.
|
|
|
|
2007-11-25 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailForward.m
|
|
Use [sourceMail decodedSubject] instead of [sourceMail subject]
|
|
Signature fix in -signature - see the comment
|
|
for SOGoMailReply.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m
|
|
Improved -stringFromData: to try UTF-8 then fallback to Latin1
|
|
|
|
* SoObjects/Mailer/SOGoMailReply.m
|
|
Modified -messageBody to strip the signature from the reply.
|
|
Also modified -signature to add "-- \n%@" instead of the
|
|
broken ""--\r\n%@" pattern.
|
|
|
|
* UI/MailPartViewers/UIxMailPartAlternativeViewer.m
|
|
We now favor text/calendar parts over text/html and
|
|
text/plain parts when viewing a multipart/alternative mail.
|
|
This allows us to show the email invitations coming from
|
|
Microsoft Outlook.
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m
|
|
Signature fix in -composeAction - see the comment
|
|
for SOGoMailReply.
|
|
|
|
* UI/MailPartViewers/UIxMailPartViewer.m
|
|
Modified -flatContentAsString to use UTF-8 as the
|
|
default fallback encoding for 8-bit content.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m
|
|
Modified _fillInReplyAddresses:replyToAll:envelope:
|
|
so that if there's no recipient, we add at least
|
|
ourself to the list.
|
|
Fixed a mem leak in the same method.
|
|
|
|
2007-11-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailRenderingContext.m
|
|
([UIxMailRenderingContext -viewerForBodyInfo:_info]): same as below.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-plainTextContentFetchKeys]): same as below.
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
|
|
+bodyPartClassForMimeType:mimeTypeinContext:_ctx]): accept the
|
|
application/ics type from Google Calendar.
|
|
|
|
* SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate
|
|
+distantFuture]): rewrote method to return an object that is
|
|
compatible with NSCalendarDate, unlike the implementation in
|
|
GNUstep.
|
|
([NSCalendarDate +distantPast]): same as above.
|
|
|
|
2007-11-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m: fixed infinite loop
|
|
when charset is us-ascii, match it to ascii rather than none.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatetitle:titlecomponent:_component]):
|
|
added search on the c_title column too.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-eventsListAction]): take the "search" url parameter into account.
|
|
([UIxCalListingActions -eventsListAction]): fetch events matching
|
|
the title filter too.
|
|
|
|
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage -connectAction]): the
|
|
user infos are now posted as "application/x-www-form-urlencoded".
|
|
So we have to have like a form has been posted.
|
|
|
|
2007-11-21 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-calendarList]): also returns the calendar of the current
|
|
event. This is required so the proper calender is selected when
|
|
you view an event to which you don't have write access.
|
|
|
|
* UI/Common/UIxAclEditor.m ([UIxAclEditor -currentUserIsOwner]):
|
|
also returns true for super users.
|
|
|
|
2007-11-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-lookupImap4BodyPartKey:inContext:]): return a correct body part
|
|
when "0" is requested, taking its mime-type into account.
|
|
|
|
* UI/MailPartViewers/UIxMailRenderingContext.m
|
|
([UIxMailRenderingContext -flatContentForPartPath:_partPath]):
|
|
return content for part "0", which would be the message body.
|
|
|
|
2007-11-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
([_UIxHTMLMailContentHandler
|
|
-setContentEncoding:newContentEncoding]): new method that
|
|
specifies an xml charset to return to the parser.
|
|
([UIxMailPartHTMLViewer -flatContentAsString]): specifies the
|
|
charset to the content handler before parsing.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m: don't take an
|
|
empty c_name as a valid response when looking up an event. Create
|
|
one in that case instead.
|
|
|
|
2007-11-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -signature]):
|
|
returns the signature for the default identity of the default
|
|
accouunt...
|
|
([UIxPreferences -setSignature:newSignature]): accessor that sets
|
|
the default signature.
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions
|
|
-composeAction]): append the message signature to the new draft.
|
|
|
|
* SoObjects/Mailer/SOGoMailReply.m ([SOGoMailReply -signature]):
|
|
same as above.
|
|
|
|
* SoObjects/Mailer/SOGoMailForward.m ([SOGoMailForward
|
|
-signature]): new method that takes the user's signature and put
|
|
it at the end of the message, if exists.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -isSuperUser]): new
|
|
accessor that forwards the call to the active user.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -signature]): returns the
|
|
user default signature.
|
|
([SOGoUser -isSuperUser]): declares whether the user is listed
|
|
among the super users.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-setComponent:newComponent]): retain the component object.
|
|
([UIxComponentEditor -organizerIdentity]): new accessor method to
|
|
handle list of possible organizers.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-event]): retain the returned event object.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -saveComponent:newEvent]): reset the
|
|
organizer only if there are no attendees AND the owner of the
|
|
component is not the organizer him-/herself.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-toolbar]): rewrote in a way that ensures that each case is
|
|
handled properly.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -isEqual:otherUser]): new
|
|
override method.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([-acceptAction])
|
|
([-declineAction]): commented out unused methods.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m
|
|
([UIxMailPartICalActions -deleteFromCalendarAction]): actually
|
|
delete the found object.
|
|
|
|
2007-11-18 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m
|
|
SoObjects/Mailer/SOGoMailObject.m
|
|
UI/MailPartViewers/UIxMailPartViewer.m
|
|
Added support of messages containing non-textual
|
|
content and no parts.
|
|
|
|
* UI/MailerUI/UIxMailView.m
|
|
SoObjects/Mailer/SOGoMailObject.m
|
|
UI/Templates/MailerUI/UIxMailView.wox
|
|
Added support for the Reply-To header upon
|
|
message display.
|
|
|
|
2007-11-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -saveAction]):
|
|
invoke saveComponent:.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor -hasOrganizer])
|
|
([UIxComponentEditor -organizerName]): new template accessor
|
|
related to displaying the event's organizer.
|
|
([-containsConflict:_component]): removed method.
|
|
([UIxComponentEditor -takeValuesFromRequest:_rqinContext:_ctx]):
|
|
set RSVP to "TRUE" on each attendee.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-saveAction]): invoke saveComponent:.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([UIxMailPartICalViewer -isLoggedInUserTheOrganizer]): make use of
|
|
the -userIsOrganizer: category method.
|
|
([-isLoggedInUserAnAttendee]): make use of -userIsParticipant:.
|
|
([UIxMailPartICalViewer -hasSenderStatusChanged]): new template
|
|
accessor that determines whether the "Update" button should be
|
|
displayed.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalActions.m
|
|
([UIxMailPartICalActions -deleteFromCalendarAction]): implemented
|
|
action.
|
|
([UIxMailPartICalActions -updateUserStatusAction]): implemented
|
|
action.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame
|
|
-setCssFiles:newCSSFiles]): new accessor that enables the
|
|
sub-templates to specify extra CSS files to load.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
-homeFolderInContext:context]): cache the home folder of the user
|
|
object instead of the current user.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
-deleteEntriesWithIds:ids]): invokes the "prepareDelete" optional
|
|
method if the child object implements it.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([-setContentString:])
|
|
removed method.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m ([LDAPSource
|
|
-setBaseDN:newBaseDNIDField:newIDFieldCNField:newCNFieldUIDField:newUIDFieldmailFields:newMailFieldsandBindFields:newBindFields]):
|
|
take a new "mailFields" parameter defining an array of fields
|
|
where to look at when searching the user's emails. It defaults to
|
|
the standard "mail" LDAP field.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailICalReply.[hm]: new
|
|
SoComponent implementing a template for ITIP replies.
|
|
|
|
* SoObjects/Appointments/iCalPerson+SOGo.m ([iCalPerson
|
|
-mailAddress]): new method that returns a properly formatted email
|
|
address for the specified person entry.
|
|
([iCalPerson -uid]): new method that tests whether the user is
|
|
known to the system and if so, returns its user id.
|
|
|
|
* SoObjects/Appointments/iCalPerson+SOGo.[hm]: new category module.
|
|
|
|
* SoObjects/Appointments/iCalEventChanges+SOGo.m
|
|
([iCalEventChanges -sequenceShouldBeIncreased]): determine whether
|
|
the changes involved need a sequence inscrease, based on the
|
|
RFC2446 (ITIP).
|
|
|
|
* SoObjects/Appointments/iCalEventChanges+SOGo.[hm]: new category
|
|
module.
|
|
|
|
* SoObjects/Appointments/iCalEvent+SOGo.m ([iCalEvent
|
|
-isStillRelevant]): new overriden method determining the relevance
|
|
of the current event based on its end date.
|
|
|
|
* SoObjects/Appointments/iCalEvent+SOGo.[hm]: new category module.
|
|
|
|
* SoObjects/Appointments/iCalEntityObject+SOGo.m
|
|
([iCalEntityObject -attendeeUIDs]): new category methods that
|
|
returns an array containing the uids of the system-know attendees.
|
|
([iCalEntityObject -isStillRelevant]): new template method.
|
|
([iCalEntityObject -itipEntryWithMethod:method]): clone the
|
|
current entry calendar with the specified ITIP method.
|
|
([iCalEntityObject -attendeesWithoutUser:user]): returns an array
|
|
of attendees while making sure the specified user is not listed.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -calendar:create:secure]): new name for
|
|
-calendar:. Added a "secure" parameter that specifies whether a
|
|
stripped calendar instance is needed or not. Also, we no longer
|
|
cache the content to simplify handling of new data.
|
|
([SOGoCalendarComponent -component:create:secure]): same as above.
|
|
([SOGoCalendarComponent
|
|
-sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]):
|
|
test whether the component is "still relevant" before sending an
|
|
email...
|
|
([SOGoCalendarComponent -sendResponseToOrganizer]): new method for
|
|
sending ITIP replies.
|
|
([SOGoCalendarComponent -getUIDsForICalPerson:iCalPerson]):
|
|
removed method. Replaced with -[iCalPerson uid] category method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.[hm]: rewrote
|
|
class. No longer override saveContentString:,
|
|
saveContentString:baseSequence:, .... Implemented the
|
|
saveComponent: and the prepareDelete methods instead. Those
|
|
methods are called only from the web methods. This avoids the
|
|
risks related to email sending and changes propagation.
|
|
|
|
* UI/Common/UIxTabItem.m: removed useless class module.
|
|
|
|
* UI/Common/UIxTabView.[hm]: removed useless class module.
|
|
|
|
* UI/Common/UIxPrintPageFrame.m: removed useless class module.
|
|
|
|
* UI/Common/UIxAppNavView.m: removed useless class module.
|
|
|
|
2007-11-16 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m
|
|
Fixed typo.
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m
|
|
We also grok image/jpeg and return the SOGoMailBodyPart
|
|
for attachments fetching.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m
|
|
Prevent a crash in case body decoding failed during
|
|
a reply.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m
|
|
Improved body decoding during a reply to also try
|
|
latin1 as an encoding.
|
|
|
|
* UI/MailPartViewers/UIxMailRenderingContext.m
|
|
Greatly improved the display mechanisms for emails.
|
|
Also properly consider the content disposition for
|
|
most content types.
|
|
|
|
* UI/MailerUI/UIxMailToSelection.m
|
|
Removed worthless code.
|
|
|
|
* UI/WebServerResources/MailerUI.css
|
|
CSS fix for table views.
|
|
|
|
2007-11-15 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js
|
|
We now check for empty selection and warn the
|
|
user about it when deleting messages
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m
|
|
Correctly check for the presence of a subject
|
|
before attempting to forward a message from
|
|
the Drafts folder.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m
|
|
We no longer use "[Fwd: ]" but simply "Fwd:"
|
|
when forwarding email messages.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m
|
|
Modified the default forwarding format to be
|
|
inline instead of "attachment".
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m
|
|
We now create and use a NGMimeContentDispositionHeaderField
|
|
in order to avoid encoding the whole Content-Disposition
|
|
header in case a non-ASCII char is present!
|
|
|
|
2007-11-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/iCalEntityObject+Utilities.m ([iCalEntityObject
|
|
-findParticipant:user]): new method based on the one removed from
|
|
SOGoCalendarComponent below.
|
|
|
|
* SoObjects/SOGo/iCalEntityObject+Utilities.[hm]: new category
|
|
module for iCalEntityObject.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([-findParticipant:user]): removed method.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-setContentString:newContent]): new accessor method.
|
|
([SOGoContentObject
|
|
-saveContentString:newContentbaseVersion:newBaseVersion]): invoke
|
|
-[self setContentString:].
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([UIxMailPartICalViewer -authorativeEvent]): returns the most
|
|
up-to-date event.
|
|
([-isLoggedInUserTheOrganizer]): make use of -[SOGoUser
|
|
hasEmail:].
|
|
|
|
* UI/MailPartViewers/UIxMailPartTextViewer.m ([NSString
|
|
-stringByConvertingCRLNToHTML]): fixed crashes due to overflows in
|
|
temporary buffer we are handing.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-setComponent:newComponent]): check that newComponent is non-nil
|
|
before replacing the default values.
|
|
([UIxComponentEditor -calendarList]): privacy is already an ivar.
|
|
We don't need to refetch it.
|
|
|
|
2007-11-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject
|
|
-fetchMailForReplying:sourceMailtoAll:toAll]): remove the current
|
|
user from the list of recipients and make sure no other address is
|
|
counted twice.
|
|
|
|
* UI/MailPartViewers/UIxMailPartTextViewer.m ([NSString
|
|
-stringByConvertingCRLNToHTML]): build the returned NSString
|
|
without the ending \0.
|
|
|
|
2007-11-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([UIxMailPartICalViewer -acceptLink])
|
|
([UIxMailPartICalViewer -declineLink])
|
|
([UIxMailPartICalViewer -tentativeLink]): removed useless methods.
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalAction.m
|
|
([UIxMailPartICalAction -addToCalendarAction])
|
|
([UIxMailPartICalAction -deleteFromCalendarAction]): new stub
|
|
methods.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-lookupImap4BodyPartKey:]): make use of the new method below.
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
|
|
+bodyPartClassForMimeType:mimeTypeinContext:_ctx]): new method
|
|
that returns an appropriate Class depending on a given mime type.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -canCreateOrModify]):
|
|
new boolean accessor that determines whether someone can create
|
|
(i.e. modify a new entry) or modify an existing entry.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-lookupName:lookupNameinContext:localContextacquire:acquire]):
|
|
overriden method to bind looked up keys to So methods but by
|
|
avoiding a call to toOneRelationshipKeys. This will be the top
|
|
method of the chain, meant to override SoObject's behaviour.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder
|
|
-lookupName:objectNameinContext:lookupContextacquire:acquire]):
|
|
removed hack to prevent [super lookupName...] to read the entire
|
|
LDAP directory when looking up a record.
|
|
|
|
2007-11-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([SOGoGCSFolder
|
|
+folderWithSubscriptionReference:referenceinContainer:aContainer]):
|
|
fixed a leak.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
([UIxMailPartHTMLViewer -_attachmentIds]): the reference was one
|
|
character too short, which cause the images not to be displayed
|
|
sometimes and crashes to happen whenever the references on a
|
|
message were wrong (due to bugs in SOPE).
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
|
-hasMessageAttachment]): consider an attachment any content that
|
|
has a non-nil disposition.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
-newFolderWithName:nameandNameInContainer:newNameInContainer]):
|
|
fixed method to make use of the parameters instead of the useless
|
|
remains that weren't even initialized.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -saveContentString:_iCalbaseSequence:_v]):
|
|
don't propagate the event among the attendees if this is not an
|
|
"so" request.
|
|
([SOGoAppointmentObject -deleteWithBaseSequence:]): same as above.
|
|
|
|
* Main/SOGo.m ([SOGo -authenticatorInContext:context]): make use
|
|
of the new category method below.
|
|
|
|
* SoObjects/SOGo/WORequest+SOGo.m ([WORequest
|
|
-handledByDefaultHandler]): new method that returns whether this
|
|
is an "so" or alike request.
|
|
|
|
* SoObjects/SOGo/WORequest+SOGo.[hm]: new category module.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
-newFolderWithName:nameandNameInContainer:newNameInContainer]):
|
|
write the new folder's name in the folder cache.
|
|
|
|
* UI/Scheduler/UIxCalendarSelector.m ([UIxCalendarSelector
|
|
-calendars]): same as below.
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.m
|
|
([UIxContactsListViewContainer -currentContactFolderName]):
|
|
translate the display name if its the default one.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -create]): overriden method that invokes
|
|
its ancestor and then activate itself within the user settings.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
-appendPersonalSources]): when the user is the owner of the
|
|
current folder, we create the "personal" folder if it doesn't
|
|
exist by invoking "create".
|
|
|
|
* SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
|
|
-primaryFetchProfile]): when no row is returned, we initialize
|
|
"values" to a new dictionary. This solves a bug where the defaults
|
|
would not be initialized properly.
|
|
|
|
2007-11-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.m ([-compare:otherFolder]): method
|
|
moved into the SOGoFolder class.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -saveContentString:_iCalinUIDs:_uids]):
|
|
simplified method by directly building a similar appointment
|
|
object with the current folder as container.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder
|
|
-appendObject:objectwithBaseURL:baseURLtoREPORTResponse:r]):
|
|
take the content of an object returned by
|
|
lookupName:inContext:acquire: instead of the dictionary passed as
|
|
parameter since it represents a flattened entry return by
|
|
lookupContactsWithFilter...
|
|
|
|
* SoObjects/Contacts/SOGoFolder+CardDAV.m: NSObject+CardDAV
|
|
category renamed to SOGoFolder+CardDAV.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m: no longer a subclass of
|
|
SOGoObject, but of SOGoFolder instead.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m: no longer a subclass of
|
|
SOGoGCSFolder, but of SOGoFolder instead.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -lookupCalendarFolderForUID:uid]): fixed
|
|
to take the new SOGoParentFolder class into account. Also, create
|
|
the personal folder if it doesn't exist.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.[hm]: new class module implementing
|
|
the parent of all SOGo containers.
|
|
|
|
* SoObjects/SOGo/SOGoGCSFolder.[hm]: SOGoFolder class renamed to
|
|
SOGoGCSFolder.
|
|
|
|
2007-11-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailToSelection.m ([UIxMailToSelection
|
|
-getAddressesFromFormValues:_dict]): take NSString and NSArray
|
|
values. Ignore addresses with a length of 0.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -mailAccounts]): we now
|
|
fetch the accounts from the user defaults and create default
|
|
values if missing.
|
|
|
|
2007-11-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartTextViewer.m
|
|
([UIxMailPartTextViewer -flatContentAsString]): re-added
|
|
conversion of line-break to sequences of HTML "BR", with a fast
|
|
algorithm in C.
|
|
|
|
* UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer
|
|
-flatContentAsString]): simplified method now that we know
|
|
-[NSString stringWithData:usingEncodingNamed:] has a more robust
|
|
implementation.
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
|
-showToAddress]): the answer is cached.
|
|
|
|
* UI/Common/UIxObjectActions.m ([UIxObjectActions +initialize]):
|
|
read "SOGoACLsSendEMailNotifications" from the user defaults to
|
|
determiner whether to send an email when a user is added or
|
|
removed from an object's acl.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject
|
|
-contentForEditing]): make sure the htmlContent flag is set to NO
|
|
when we select the textual part. Also we select only the relevant
|
|
keys for fetching.
|
|
|
|
* UI/MailerUI/WOContext+UIxMailer.m ([-mailSubjectFormatter]):
|
|
removed method.
|
|
|
|
* UI/MailerUI/UIxMailView.m ([UIxMailView -messageSubject]): new
|
|
method replacing -objectTitle, written like the ones below.
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
|
-messageSubject]): rewrote method to act the one below.
|
|
|
|
* UI/MailPartViewers/UIxMailPartMessageViewer.m
|
|
([UIxMailPartMessageViewer -messageSubject]): new method that
|
|
returns the decoded mail subject or "Untitled" if the subject is
|
|
empty.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-decodedSubject]): new method that invoke -decodedSubject from the
|
|
NSString and NSData class, depending on the identity of the
|
|
subject obtained from the envelope.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject
|
|
-subjectForReply]): take the value of -[SOGoMail decodedSubject]
|
|
instead of the subject of the envelope.
|
|
([SOGoMailObject -filenameForForward]): same as above.
|
|
([SOGoMailObject -subjectForForward]): same as above.
|
|
|
|
* SoObjects/Mailer/NSString+Mail.m ([NSString -decodedSubject]):
|
|
same as below for NSString.
|
|
|
|
* SoObjects/Mailer/NSData+Mail.m ([NSData -decodedSubject]): new
|
|
method that decodes the subject of a mail taken as an NSData
|
|
instance. Handling the exceptions and the badly formatted headers.
|
|
|
|
* UI/MailerUI/UIxSubjectFormatter.[hm]: dropped class module.
|
|
|
|
2007-11-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
|
|
-deleteEntriesWithIds:ids]): make sure the objects returned by
|
|
lookupName:... are not instances of NSException.
|
|
|
|
2007-11-03 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m
|
|
Fixed monthly recurrences support.
|
|
|
|
2007-11-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -deleteWithBaseSequence:]): an email was
|
|
sent when modifying an event, when the event was considered
|
|
relevant. The same thing is now implemented for event deletion.
|
|
|
|
* SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
|
|
-primaryFetchProfile]): make sure that the deserialized "values"
|
|
is an instance of NSMutableDictionary, otherwise we override it
|
|
with one.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject
|
|
-contentForReply]): make use of the SOGoMailReply WO page.
|
|
|
|
* SoObjects/Mailer/SOGoMailReply.[hm]: new class module copied
|
|
from SOGoMailForward to handle mail replies instead. Only three
|
|
methods remaining: date, from and messageBody. The latter is
|
|
quoted properly.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject
|
|
-fetchMailForForwarding:sourceMail]): fetch attachments for
|
|
forwarded messages.
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
|
-hasMessageAttachment]): initialize hasAttachment with "NO" to
|
|
avoid false positives.
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor -extractQuickFieldsFromEvent:_event])
|
|
([OCSiCalFieldExtractor -extractQuickFieldsFromTodo:_task]):
|
|
set title to an empty string where the event/task summary is null.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject
|
|
-setHeaders:newHeaders]): make sure there is a message id in the
|
|
headers dictionary, if not, generate one.
|
|
([SOGoDraftObject -fetchMailForEditing:sourceMail]): retrieve the
|
|
message id from the existing draft.
|
|
([SOGoDraftObject -mimeHeaderMapWithHeaders:_headers]): store the
|
|
message id in the header map.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
|
|
-deleteFolderAction]): no longer prefix the target folder with
|
|
"folder".
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions
|
|
-listMailboxesAction]): base the folder type on the folder
|
|
traversal path.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
|
|
-lookupName:_keyinContext:acquire:_acquire]): compare the full
|
|
traversal to the potential looked up folder with the special
|
|
folder names and return an object with the appropriate
|
|
SOGoMailFolder subclass.
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject
|
|
-traversalFromMailAccount]): don't prepend the whole string with
|
|
"/".
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m
|
|
([-lookupSentFolder:_keyinContext:_ctx])
|
|
([-lookupDraftsFolder:_keyinContext:_ctx])
|
|
([-lookupTrashFolder:_keyinContext:_ctx])
|
|
([-lookupFiltersFolder:_key:_ctx]): removed methods.
|
|
([SOGoMailAccount -inboxFolderNameInContext:])
|
|
([SOGoMailAccount -draftsFolderNameInContext:_ctx])
|
|
([SOGoMailAccount -sentFolderNameInContext:])
|
|
([SOGoMailAccount -trashFolderNameInContext:]): no longer prefixes
|
|
the resulting name with "prefix" since we might return a nested
|
|
foldername.
|
|
([SOGoMailAccount -allFolderPaths]): prefixes all special folder
|
|
names with "/". Sorts the resulting folder list with
|
|
localizedCaseInsensitiveCompare: instead of
|
|
caseInsensitiveCompare:. No longer use the -[lookupXXX] methods
|
|
that were removed, instead, we choose the appropriate class
|
|
depending on the folder name. And since we are in SOGoMailAccount,
|
|
we don't have to compute a traversal path to match the key with
|
|
the foldernames.
|
|
([SOGoMailAccount
|
|
-folderWithTraversal:traversalandClassName:className]): new method
|
|
that returns an instance of the specified SOGoMailFolder subclass,
|
|
based on the traversal path passed as parameter.
|
|
([SOGoMailAccount -inboxFolderInContext:_ctx])
|
|
([SOGoMailAccount -draftsFolderInContext:_ctx])
|
|
([-sentFolderInContext:_ctx])
|
|
([SOGoMailAccount -trashFolderInContext:_ctx]): invoke the new
|
|
-folderWithTraversal:andClassName: method described above.
|
|
|
|
* SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
|
|
-primaryFetchProfile]): make use of -[NSPropertyListSerialization
|
|
propertyListFromData:mutabilityOption:format:errorDescription:] to
|
|
deserialize the plist. Removed variant for libFoundation since it
|
|
should support the above.
|
|
([AgenorUserDefaults -generateSQLForInsert])
|
|
([AgenorUserDefaults -generateSQLForUpdate]): make use of
|
|
-[NSPropertyListSerialization
|
|
dataFromPropertyList:format:errorDescription:] to serialize the
|
|
plist. Removed variant for libFoundation since it should support
|
|
the above. Escape the backslashes from the resulting string.
|
|
|
|
2007-10-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.[hm]: added a new subclass of
|
|
SOGoMailFolder: SOGoMailSpecialFolder.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-traversalFromMailAccount]): overridden method that returns the
|
|
initialized mutable string.
|
|
([SOGoMailAccount -allFolderPaths]): take the special folder paths
|
|
with -traversalFromMailAccount and reposition them at the
|
|
beginning of the list. By creating the special folders during that
|
|
request, we also make sure that the folder exists thanks to the
|
|
new initialisation method of the new "SOGoSpecialMailFolder"
|
|
class.
|
|
([SOGoMailAccount -lookupSentFolder:_keyinContext:_ctx]): new
|
|
method.
|
|
([SOGoMailAccount -lookupTrashFolder:_keyinContext:_ctx]): new
|
|
method.
|
|
([SOGoMailAccount -lookupName:_keyinContext:acquire:_flag]): no
|
|
longer use lookupImap4Folder.
|
|
([SOGoMailAccount -lookupImap4Folder:_keyinContext:_ctx]): removed
|
|
method.
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject
|
|
-traversalFromMailAccount]): new method that returns the full
|
|
IMAP4 path to the object.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser +initialize]): retain
|
|
"superUsernames" after fetching it from the ud.
|
|
|
|
2007-10-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-eventsListAction]): substitude the start and end date with their
|
|
UTC counterpart, taking into account the offset from UTC related
|
|
to those dates instead of the current one. This renders
|
|
-[UIxCalMainView -userUTCOffset] obsolete because the computings
|
|
that occured in javascript are now done server-side.
|
|
|
|
* UI/Scheduler/UIxCalMainView.m ([UIxCalMainView -userUTCOffset]):
|
|
removed obsolete method.
|
|
|
|
* SoObjects/Mailer/NSString+Mail.m ([NSString -htmlToText]): new
|
|
method converting html content to plain text.
|
|
|
|
* SoObjects/Mailer/NSString+Mail.[hm]: new category module
|
|
enhancing NSString with utility methods pertaining to mail handling.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m
|
|
([-shouldFetchPartOfType:_typesubtype:_subtype]): removed obsolete method.
|
|
([SOGoMailObject
|
|
-addRequiredKeysOfStructure:infopath:ptoArray:keysacceptedTypes:types]):
|
|
modified method to be always recursive and to take an array of the
|
|
accepted mime-types as parameter. The returned array now contains
|
|
the mime-type as well as the part keys.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject
|
|
-contentForEditingOnParts:_prtskeys:_k]): removed obsolete method.
|
|
([SOGoMailObject -contentForEditing]): rewrote method to take into
|
|
account the first text/plain part or the first text/html part
|
|
converted to text/plain with our new -[NSString htmlToText]
|
|
category method.
|
|
|
|
* UI/MailerUI/UIxMailActions.m ([-replyToAllAction]): invoke
|
|
"replyToAll:" with YES as parameter instead of NO.
|
|
|
|
2007-10-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
|
|
-davContentType]): ignore any possible parameter taken from the
|
|
mime-info of the body part.
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
|
-lastFirstMessageNumber]): new accessor that returns the first
|
|
message number of the last series of messages.
|
|
([UIxMailListView -fetchKeys]): request the bodystructure for each
|
|
listed message.
|
|
([UIxMailListView -hasMessageAttachment]): extract the attachment
|
|
information from the message bodystructure.
|
|
|
|
2007-10-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
|
|
-GETAction:]): use the "application/octet-stream" mime type for
|
|
elements of type "application/x-xpinstall" to avoid confusing
|
|
Firefox.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m ([UIxPreferences -messageCheckList])
|
|
([UIxPreferences -itemMessageCheckText])
|
|
([UIxPreferences -userMessageCheck])
|
|
([UIxPreferences -setUserMessageCheck:newMessageCheck]): new
|
|
methods for handling the retrieval of new messages automatically.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -messageCheck]): new method
|
|
that returns the interval of time between automatic message
|
|
retrievals.
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
|
-defaultAction]): now expunges the last folder marked for expunge.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-trashInContext:_ctx]): now marks the container folder for
|
|
expunge.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
|
|
-markForExpunge]): new method that marks the folder for the next
|
|
automatic expunge operation in the user settings.
|
|
([SOGoMailFolder -expungeLastMarkedFolder]): new methods that
|
|
takes the last folder marked for expunge, expunges it and removes
|
|
it from the user settings, if it exists.
|
|
|
|
2007-10-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
|
-messageSubjectCellStyleClass]): added support for replied,
|
|
forwarded, forwarded and replied mails.
|
|
|
|
* SoObjects/Mailer/NSData+Mail.m ([NSData
|
|
-bodyDataFromEncoding:encoding]): new utility method that decodes
|
|
the NSData instance properly depending on the encoding string
|
|
passed as parameter.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject
|
|
-fetchFileAttachmentKeys]): fetch the attachment encoding as well.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-stringForData:_datapartInfo:_info]): simplified by invoking
|
|
-bodyDataFromEncoding: from our new NSData category methods.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject
|
|
-fetchMailForEditing:sourceMail]): work-around a bug in SOPE-mime
|
|
where only the body part of the first of the keys fetched was
|
|
returned. Also decodes the body parts properly following their
|
|
encoding.
|
|
|
|
* SoObjects/Mailer/NSData+Mail.[hm]: new extension module that
|
|
extends the NSData class with utility methods useful for handling
|
|
mail.
|
|
|
|
2007-10-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m
|
|
([NSArray -stringsWithFormat:format]): replace instances of NSNull
|
|
with empty strings.
|
|
|
|
* SoObjects/SOGo/NSDictionary+Utilities.m ([NSDictionary
|
|
-keysWithFormat:keyFormat]): replace instances of NSNull with
|
|
empty strings.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m: if "displayName" is
|
|
empty, use "c_cn" instead.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount -inboxFolderInContext:_ctx])
|
|
([SOGoMailAccount -draftsFolderInContext:_ctx])
|
|
([SOGoMailAccount -sentFolderInContext:_ctx]): no longer make use
|
|
of the "SOGoSpecialFoldersInRoot" user defaults. The folders will
|
|
no always be specified from the root instead of sometimes from the
|
|
INBOX.
|
|
|
|
2007-10-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -commonLocalizableStrings])
|
|
([UIxPageFrame -productLocalizableStrings]): invoke the new
|
|
+[SOGoUser language] method if the user is nil.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser +language]): new method
|
|
that returns any generically-found language.
|
|
([SoUser -language]): modified to call the above.
|
|
([SOGoUser -language]): modified to call the above if the user
|
|
language has a null length.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDIFEntry.m ([SOGoContactLDIFEntry
|
|
-davEntityTag]): modified to return the "hash" of the vCard string.
|
|
|
|
* UI/MailerUI/UIxMailActions.m ([UIxMailActions
|
|
-removeAllLabelsAction]): new method that removes all label flags
|
|
from the associated message.
|
|
([UIxMailActions -addLabel1Action]
|
|
[UIxMailActions -addLabel2Action]
|
|
[UIxMailActions -addLabel3Action
|
|
[UIxMailActions -addLabel4Action]
|
|
[UIxMailActions -addLabel5Action]): new methods that adds label
|
|
flags to the associated message.
|
|
([UIxMailActions -removeLabel1Action]
|
|
[UIxMailActions -removeLabel2Action]
|
|
[UIxMailActions -removeLabel3Action
|
|
[UIxMailActions -removeLabel4Action]
|
|
[UIxMailActions -removeLabel5Action]): new methods that removes
|
|
label flags from the associated message.
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView -msgLabels]):
|
|
new accessor that returns the labels associated with the message.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
|
|
-allFolderPaths]): new method that returns all the paths of all
|
|
the subfolders of the folder object.
|
|
([SOGoMailFolder -allFolderURLs]): new method replacing
|
|
subfoldersURL.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-aclsForUser:uid]): object inherits the 'SOGoRole_ObjectEditor'
|
|
role from its parent folder.
|
|
|
|
2007-10-19 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m
|
|
([SOGoUser -rolesForObject:objectinContext:context]): allow
|
|
multiple super usernames to be defined. The user default
|
|
SOGoSuperUsername is renamed SOGoSuperUsernames and must be
|
|
an array.
|
|
|
|
2007-10-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoWebAuthenticator.m ([SOGoWebAuthenticator
|
|
-userInContext:]): override the super method by returning
|
|
anonymous if the super returns nil.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame
|
|
-productLocalizableStrings]): new method that returns the
|
|
product-specific translation dictionary as a JSON hash.
|
|
([UIxPageFrame -commonLocalizableStrings]): same as above but for
|
|
the "Common" framework.
|
|
([UIxPageFrame -setJsFiles:newJSFiles]): new setter that enables
|
|
the requestor components to require additional Javascript files.
|
|
This is useful now that all the scripts are loaded at the end of
|
|
the HTML code.
|
|
([UIxPageFrame -additionalJSFiles]): new getter related to the
|
|
above.
|
|
|
|
2007-10-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailActions.m ([UIxMailActions -copyAction]):
|
|
implemented new web method.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-copyToFolderNamed:folderNameinContext:]): new method with the
|
|
code cut/pasted from -moveToFolderNamed:inContext:.
|
|
([SOGoMailObject -moveToFolderNamed:folderNameinContext:]):
|
|
modified to use the code from -copyToFolderNamed:inContext:, which
|
|
is common between the two actions.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount -draftsFolderNameInContext:_ctx])
|
|
([SOGoMailAccount -sentFolderNameInContext:])
|
|
([SOGoMailAccount -trashFolderNameInContext:]): modified to take
|
|
the user settings into account.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions -setAsDraftsFolderAction])
|
|
([UIxMailFolderActions -setAsSentFolderAction])
|
|
([UIxMailFolderActions -setAsTrashFolderAction]): new web methods
|
|
that change the purpose of the active folder to "Sent", "Drafts"
|
|
or "Trash".
|
|
|
|
* UI/SOGoUI/SOGoACLAdvisory.m ([SOGoACLAdvisory -subject]):
|
|
returns the subject as quoted-printable.
|
|
|
|
* UI/SOGoUI/SOGoACLAdvisory.[hm]: added two intermediary classes:
|
|
SOGoACLAdditionAdvisory and SOGoACLRemovalAdvisory implementing
|
|
the "aclMethod" method for the subsequent language-dependent
|
|
subclasses.
|
|
|
|
* UI/SOGoUI/SOGoFolderAdvisory.m ([SOGoFolderAdvisory -subject]):
|
|
returns the subject as quoted-printable.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-dealloc]): release item, aptStartDate and aptEndDate.
|
|
|
|
2007-10-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
|
|
-initWithName:newNameinContainer:newContainer]): the owner of a
|
|
shared folder is set to "nobody" by default.
|
|
|
|
* UI/Common/UIxAclEditor.m ([UIxAclEditor -hasOwner]): new method
|
|
that returns whether the object has an owner or not.
|
|
|
|
2007-10-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -ocsFolder]): create
|
|
the folder even if the current user is not its owner.
|
|
|
|
2007-10-10 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* We now send advisory emails when folders
|
|
are created / deleted.
|
|
|
|
* Fixed the sending of advisory emails upon
|
|
ACL changes on folders.
|
|
|
|
2007-10-10 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m
|
|
Implemented event/task priority support.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m
|
|
Added CardDAV support.
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.m and SOGoUser.m
|
|
Implemented From: based on LDAP results based on
|
|
the MailFieldNames attribute (an array) specified
|
|
in every LDAP-based authentication sources.
|
|
|
|
* UI/MailPartViewers/UIxMailPartTextViewer.m and
|
|
UI/WebServerResources/MailerUI.css
|
|
We avoid replacing "\r\n" and "\n" with <br /> and
|
|
rather use CSS capabilities for proper formatting.
|
|
This is _WAY_ faster on very large mails.
|
|
|
|
2007-10-10 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m
|
|
([UIxComponentEditor -componentCalendar]): returns the calendar
|
|
object of the current event.
|
|
|
|
2007-10-05 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js
|
|
We check if at least one message is selected
|
|
before performing a Reply/Reply All/Forward
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
and others - implemented support for recurring
|
|
events (with some known limitations right now,
|
|
all soon to be fixed).
|
|
|
|
2007-10-04 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* Main/SOGo.m ([SOGo -isUserName:_keyinContext:_ctx]): removed
|
|
the constraint that a username can't start with a digit.
|
|
|
|
2007-10-02 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* Moved SOPE/sope-gdl1/GDLContentStore from the default trunk
|
|
repository to Inverse's branch.
|
|
|
|
2007-09-28 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m
|
|
([SOGoDraftObject -isValidAttachmentName:_name]): removed
|
|
constraint on space in file name.
|
|
([SOGoDraftObject -saveAttachment:_attachwithMetadata:metadata]):
|
|
now removes from file name all characters preceding a backslash.
|
|
This happens with IE7 because the complete attachment file path
|
|
is sent.
|
|
|
|
2007-09-25 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAptMailNotification.m
|
|
([SOGoAptMailNotification -appointmentURL]): set personal as the
|
|
default calendar where to add the event.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage +initialize]):
|
|
activate the SOGoUIxDefaultModule user defaults.
|
|
|
|
2007-09-21 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/SOGoUI/UIxComponent.m
|
|
([UIxComponent -shortUserNameForDisplay]): returns the string
|
|
"wrongusernamepassword" when authentication failed.
|
|
|
|
2007-09-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m
|
|
([UIxMailPartICalViewer -calendarFolder]): returns the "personal"
|
|
entry of the Calendars parent folder.
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
|
-messageSubject]): new accessor method to work-around a problem
|
|
within SOPE where a subject could be returned as an NSData.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
-appendPersonalSources]): make sure the value of the "c_path4" of
|
|
the returned rows are not NSNull, otherwise, discard them.
|
|
|
|
2007-09-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-compare:otherFolder]): new overriden method that compares two
|
|
contact foldes based on their class and then transfer the control
|
|
to the super method in SOGoFolder.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder -compare:otherFolder]): new method that
|
|
compare two contact folders based on their class and then their
|
|
display name.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -compare:otherFolder]):
|
|
new method for sorting folders. The folders are compared based on
|
|
their ownership, whether they are a main folder and finally
|
|
depending on their display name.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-pathArrayToSOGoObject]): do not reorder the paths if the third
|
|
element is an instance of NSNull.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.m ([SOGoParentFolder
|
|
-subFolders]): returns a sorted array using the "compare:"
|
|
selector.
|
|
|
|
2007-09-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalendarSelector.m ([UIxCalendarSelector
|
|
-calendars]): also returns the owner of the listed folders.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([-deleteEntriesWithIds:ids]): moved method into SOGoFolder.
|
|
|
|
* UI/Scheduler/UIxCalMainView.m ([-batchDeleteAction]): moved
|
|
method into UIxFolderActions.
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
|
|
-fetchFreeBusyInfosFrom:_startDateto:_endDate]): fetch the
|
|
freebusy info from the "personal" calendar.
|
|
|
|
* UI/Common/UIxParentFolderActions.m ([UIxParentFolderActions
|
|
-createFolderAction]): new standardized method for requesting
|
|
folder creations among gcs-based modules.
|
|
|
|
* UI/Common/UIxParentFolderActions.[hm]: new action class module.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolders.m: new class
|
|
module, equivalent to the SOGoParentFolder's child
|
|
SOGoContactFolders, but for calendars.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -labelForKey:key]): new
|
|
method that returns translated strings for controller bundles
|
|
(same as what UIxComponent does for view bundles).
|
|
([SOGoObject -pathArrayToSOGoObject]): new method that returns
|
|
the real path to a subscribed folder (if subscribed).
|
|
([SOGoObject +globallyUniqueObjectId]): move method from SOGoFolder.
|
|
([SOGoObject -globallyUniqueObjectId]): new instance method
|
|
calling its class equivalent.
|
|
|
|
2007-09-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage -defaultAction]): test
|
|
whether the user is logged in and if so, redirect to his/her
|
|
homepage.
|
|
([SOGoRootPage -appendToResponse:inContext:]): removed useless
|
|
method.
|
|
|
|
2007-09-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
|
|
+folderWithName:aNameandDisplayName:aDisplayNameinContainer:aContainer]):
|
|
new method.
|
|
([SOGoFolder -displayName]): new method.
|
|
([SOGoFolder -delete]): accept to proceed only if nameInContainer
|
|
!= "personal".
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder
|
|
+folderWithName:aNameandDisplayName:aDisplayNameinContainer:aContainer]):
|
|
renamed from "contactFolderWithName..." for compatibility with SOGoFolder.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
+contactFolderWithName:aNameandDisplayName:aDisplayNameinContainer:aContainer]):
|
|
removed method, reimplemented in SOGoFolder.
|
|
([SOGoContactGCSFolder -displayName]): removed method,
|
|
reimplemented in SOGoFolder.
|
|
([-delete]): removed method, modified in SOGoFolder.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.[hm]: modified class to be
|
|
a subclass of SOGoParentFolder.
|
|
|
|
* SoObjects/SOGo/SOGoParentFolder.[hm]: new class module derived
|
|
from SOGoContactFolders and modified to be more content-independent.
|
|
|
|
* UI/MailerUI/UIxMailActions.m ([UIxMailActions -markMessageUnreadAction])
|
|
([UIxMailActions -markMessageReadAction]): new methods moved from
|
|
UIxMailListView and adapted to invoke the client object directly,
|
|
since the previous versions had to to a lookup from the parent
|
|
SOGoMailFolder.
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([-markMessageUnreadAction]): move
|
|
method into UIxMailActions.
|
|
([-markMessageReadAction]): same as above.
|
|
([-viewAction]): removed useless method.
|
|
([-javaScriptOK]): removed useless method.
|
|
([-isJavaScriptRequest]): removed useless method.
|
|
([-lookupActiveMessage]): removed useless method.
|
|
|
|
* UI/Common/WODirectAction+SOGo.m ([WODirectAction
|
|
-responseWithStatus:status]): new method that returns a WOResponse
|
|
initialized with the specified status code.
|
|
([WODirectAction -responseWith204]): new method that invokes the
|
|
above one with "204" as parameter.
|
|
([WODirectAction -redirectToLocation:newLocation]): rewrote method
|
|
to make use of -responseWithStatus:.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -responseWith204]): new
|
|
method that returns a WOResponse initialized with the 204 status
|
|
code.
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView -sortedUIDs]):
|
|
always use a "not deleted" search qualifier along with the user
|
|
qualifier (if present).
|
|
|
|
2007-09-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-contactSearchAction]): only return the records which have an
|
|
email set.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-trashInContext:_ctx]): no longer expunge the mailbox after
|
|
marking a message deleted.
|
|
([SOGoMailObject -moveToFolderNamed:folderNameinContext:]): same
|
|
as above.
|
|
|
|
* UI/MailerUI/UIxMailView.m ([-deleteAction]): removed method.
|
|
([-trashAction]): moved method into UIxMailActions.
|
|
([-moveAction]): moved method into UIxMailActions.
|
|
|
|
2007-09-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
([_UIxHTMLMailContentHandler
|
|
-endElement:_localNamenamespace:_nsrawName:_rawName]): remove HTML
|
|
comments from the CSS code, do not add the CSS code to the body
|
|
content and remove references of body from the CSS declarations.
|
|
([UIxMailPartHTMLViewer -cssContent]): new accessor method.
|
|
([UIxMailPartHTMLViewer -flatContentAsString]): separated code
|
|
common with cssContent in a different method and invoke it only
|
|
once.
|
|
|
|
* UI/MainUI/SOGoRootPage.[hm]: made a subclass of UIxComponent
|
|
instead of UIxPageFrame.
|
|
|
|
2007-09-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoRootPage.m ([-defaultAction]): commented out.
|
|
([-appendToResponse:responseinContext:ctx]): commented out.
|
|
([SOGoRootPage -connectURL]): new accessor that returns the full
|
|
url the the "connect" method.
|
|
([-connectAction]): rewrote method to return a properly formatted
|
|
auth. cookie based on the username and password passed as
|
|
parameter.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage -logoffAction]):
|
|
set the value of the cookie to "discard" and set its expiration
|
|
date to yesterday.
|
|
|
|
* SoObjects/SOGo/SOGoWebAuthenticator.m ([SOGoWebAuthenticator
|
|
-preprocessCredentialsInContext:context]): consider the user
|
|
anonymous if the cookie value is "discard".
|
|
([SOGoWebAuthenticator
|
|
-setupAuthFailResponse:responsewithReason:reasoninContext:context]):
|
|
set the expiration date of the cookie to yesterday.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -applicationPath]):
|
|
returns the path to the application if the clientObject is not a
|
|
SOGoObject.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder +initialize]):
|
|
moved the requirement of authentication from the SOGo application
|
|
class to here.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -saveContentString:_iCalbaseSequence:_v]):
|
|
check whether the new appointment object is still relevant before
|
|
sending a notification.
|
|
|
|
2007-09-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoWebAuthenticator.m ([SOGoWebAuthenticator
|
|
-setupAuthFailResponse:responsewithReason:reasoninContext:context]):
|
|
render the login page through the SoDefaultRenderer.
|
|
|
|
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage
|
|
-isPublicInContext:localContext]): new overriden method that
|
|
returns YES.
|
|
|
|
* UI/Scheduler/UIxCalendarSelector.m ([UIxCalendarSelector
|
|
-currentCalendarLogin]): replace css-unsafe characters with _.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent
|
|
-shortUserNameForDisplay]): simplified method.
|
|
([-user]): removed method since [context activeUser] is as useful.
|
|
|
|
2007-09-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage -logoffAction]):
|
|
set the cookie path to "/".
|
|
|
|
* Main/SOGo.m ([SOGo -authenticatorInContext:_ctx]): choose the
|
|
authenticator based on the request handler key. "dav" returns the
|
|
SOGoDAVAuthenticator, anything else returns the Web authenticator.
|
|
|
|
* SoObjects/SOGo/SOGoDAVAuthenticator.m: renamed module from
|
|
"SOGoAuthenticator".
|
|
|
|
* SoObjects/SOGo/SOGoWebAuthenticator.m: new class module
|
|
implementing a subclass of SoCookieAuthenticator, designed for
|
|
web-based cookie authentication of users.m
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage -logoffAction]):
|
|
new method that resets the authentification cookie.
|
|
|
|
2007-08-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m ([LDAPSource
|
|
-checkLogin:loginToCheckandPassword:passwordToCheck]): initialize
|
|
didBind to NO to make sure no false authentication is returned if
|
|
the bind operation is not executed.
|
|
|
|
2007-08-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m: added support for the
|
|
"In-Reply-To" header field when replying.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m: add the "c_" prefix to the quick
|
|
table field names that are queried.
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
|
|
-iCalStringForFreeBusyInfos:_infosfrom:_startDateto:_endDate]):
|
|
add the "c_" prefix to the quick table field names that are
|
|
queried.
|
|
|
|
2007-08-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -lookupCalendarFolderForUID:uid]): add
|
|
"personal" to the ocs path of the appointment folder.
|
|
|
|
* UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer
|
|
-flatContentAsString]): use latin1 when the encoding is not
|
|
specified, and to reencode data chunk which were not correctly
|
|
decoded with the original charset.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m ([SOGoAppointmentFolder -aclUsersForObjectAtPath:objectPathArray])
|
|
([SOGoAppointmentFolder -aclsForUser:uidforObjectAtPath:objectPathArray])
|
|
([SOGoAppointmentFolder -setRoles:rolesforUser:uidforObjectAtPath:objectPathArray])
|
|
([SOGoAppointmentFolder
|
|
-removeAclsForUsers:usersforObjectAtPath:objectPathArray]):
|
|
override those methods to use the "personal" additional directory.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([-ocsPrivateCalendarPath]):
|
|
append "/personal" to the calendar path to simulate a single
|
|
calendar in a choice of many.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
|
|
-lookupName:_keyinContext:acquire:_acquire]): moved the lookup
|
|
methods back here. Moved the folder existence check here, and do
|
|
it on self only when the lookup happens for a non-folder object.
|
|
This permits to accept entries for folders with parents who
|
|
don't really exist.
|
|
|
|
2007-08-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor
|
|
-shouldTakeValuesFromRequest:requestinContext:context]): same as
|
|
below.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-shouldTakeValuesFromRequest:requestinContext:context]):
|
|
redesigned method since any method called can be received from a
|
|
POST or a GET. Instead we check the method call itself and we
|
|
accept only if it has the "save" prefix.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailNotification.m
|
|
([SOGoAptMailNotification -getSubject]): returns the subject an a
|
|
quoted-printable encoded string, if needed.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([NSString
|
|
-asQPSubjectString:encoding]): moved method into
|
|
NSString+Utilities.m.
|
|
|
|
2007-08-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m ([UIxPreferences
|
|
-messageForwardingList])
|
|
([UIxPreferences -itemMessageForwardingText])D
|
|
([UIxPreferences -userMessageForwarding])
|
|
([UIxPreferences -setUserMessageForwarding:newMessageForwarding]):
|
|
new template methods for manage the user preference regarding
|
|
message forwarding.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -language]): change the
|
|
algorithm to return, in order, the user's defined language or the
|
|
first browser language or, finally, the default language.
|
|
([SOGoUser -messageForwarding]): new method that returns the user
|
|
preference for message forwarding: "inline" or "attached",
|
|
defaulting to "attached".
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject
|
|
-contentForInlineForward]): new method that returns the content of
|
|
the message for inline forwarding based on the SOGoMailForward
|
|
templates.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject
|
|
-fetchMailForForwarding:sourceMail]): check the user preference
|
|
for message forwarding and compose inline forwarded messages if required.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent
|
|
-sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]):
|
|
now use a template based on the language returned from the
|
|
SOGoUser object.
|
|
|
|
* SoObjects/Mailer/SOGoMailEnglishForward.m: new module containing
|
|
a subclass of SOGoMailForward for English locale.
|
|
|
|
* SoObjects/Mailer/SOGoMailFrenchForward.m: new module containing
|
|
a subclass of SOGoMailForward for French locale.
|
|
|
|
* SoObjects/Mailer/SOGoMailForward.[hm]: new module class that
|
|
helps build template for inline forwarded messages.
|
|
|
|
2007-08-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/SOGoElements/SOGoIEConditional.m: new extension module class
|
|
to handle "<var:if-ie>" template tags.
|
|
|
|
* UI/SOGoElements: new extension bundle containing sogo-specific
|
|
dynamic elements.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-takeValuesFromRequest:_rqinContext:_ctx]): save the category
|
|
selected in the dialog.
|
|
([UIxComponentEditor -setComponent:newComponent]): retrieve the
|
|
first category, if ever, of the calendar entity.
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame
|
|
-composeAction]): restored method since it is needed by the
|
|
address book.
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions
|
|
-composeAction]): the address fields should be arrays and not
|
|
simple strings.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -buildDate]): new method
|
|
that returns the build date of SOGo in the template.
|
|
|
|
2007-08-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-_flattenedRecords:records]): when the c_cn field is empty,
|
|
returns set a formatted string with the concatenation of
|
|
c_givenname and c_sn as the displayName.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccounts.m ([SOGoMailAccounts
|
|
-isValidMailAccountName:_key]): prevent unknown accounts from
|
|
being accessed.
|
|
|
|
* UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer
|
|
-pathToAttachmentObject]): we no longer need the filename
|
|
extension for SoLookup...
|
|
|
|
* SoObjects/Mailer/SOGoMailBodyPart.m ([SOGoMailBodyPart
|
|
-lookupName:_keyinContext:_ctxacquire:_flag]): do not require the
|
|
filename to have an extension, and thus accept any filename.
|
|
|
|
* UI/Contacts/UIxContactsListView.m ([UIxContactsListView
|
|
-currentCName]): new method that returns the c_name of the
|
|
contact, correctly escaped to be passed by url afterwards.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
([UIxMailPartHTMLViewer -flatContentAsString]): pass the NSData
|
|
instance of [self decodedFlatContent] instead of the buggy
|
|
NSString from [super flatContentAsString] to the parser.
|
|
|
|
2007-08-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailActions.m ([UIxMailActions -deleteAction]):
|
|
new category method to reponds to the "delete" web command on
|
|
drafts.
|
|
([UIxMailActions -deleteAttachmentAction]): new category method to
|
|
reponds to the "deleteAttachment" web command on drafts, taking
|
|
the "filename" url parameter into account.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m ([SOGoMailObject
|
|
-contentForEditing]): new method that retrieve the editable mail
|
|
content.
|
|
([SOGoMailObject -fetchFileAttachmentKeys]): new method that
|
|
returns the body keys for attached files (parts with a "filename"
|
|
attribute).
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([NSString
|
|
-asQPSubjectString:encoding]): do not change the string if the
|
|
encoded string has the same length (which means it is already
|
|
7bit-safe).
|
|
([SOGoDraftObject -fetchMailForEditing:sourceMail]): new method
|
|
that retrieve a draft along with its attachments for editing.
|
|
([SOGoDraftObject -mimeHeaderMapWithHeaders:_headers]): no longer
|
|
choke if the "to" header field is empty.
|
|
([SOGoDraftObject -delete]): new method to delete the draft folder
|
|
whenever operations are done.
|
|
|
|
2007-08-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailEditor.m ([-patchFlagsInStore]): removed
|
|
useless stub method, of which the intention was implemented in
|
|
SOGoDraftObject.
|
|
([-lookupSentFolderUsingAccount]): removed obsolete method.
|
|
([-selectedMailIdentity]): removed obsolete method.
|
|
([-lookupSentFolderUsingFrom]): removed obsolete method.
|
|
([-storeMailInSentFolder:_path]): removed obsolete method, of
|
|
which the mechanism has been put in -[SOGoDraftObject sendMail]
|
|
method.
|
|
([UIxMailEditor -_saveFormInfo], [UIxMailEditor -defaultAction])
|
|
([UIxMailEditor -saveAction], [UIxMailEditor -sendAction]):
|
|
adapted algorithms to the new SOGoDraftObject methods.
|
|
([-deleteAction]): removed method since local draft objects cannot
|
|
be removed by the user.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
|
|
-expungeAction]): new method replacing the one previously found in
|
|
UIxMailListView.
|
|
([UIxMailFolderActions -createFolderAction])
|
|
([UIxMailFolderActions -renameFolderAction])
|
|
([UIxMailFolderActions -deleteFolderAction])
|
|
([UIxMailFolderActions -emptyTrashAction])
|
|
([UIxMailFolderActions -subscribeAction])
|
|
([UIxMailFolderActions -unsubscribeAction]): error situations
|
|
should have http return code 500 instead of 403.
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions
|
|
-composeAction]): new method replacing the one previously in
|
|
UIxMailMainFrame.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-imap4URLString]): removed overriden method (see below).
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder -aclUsers]):
|
|
cache the mailbox acl.
|
|
([SOGoMailFolder -aclsForUser:uid]): cache the mailbox acl.
|
|
([SOGoMailFolder -setRoles:rolesforUser:uid]): reset the mailbox
|
|
acl cache.
|
|
([SOGoMailFolder -httpURLForAdvisoryToUser:uid]): modified to use
|
|
the new method of determining the users mail accounts.
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m ([-imap4URLString]): no
|
|
longer adds a "/" at the end of the string (the default for
|
|
folders), therefore this will be overriden in SOGoMailFolder
|
|
rather than in SOGoMailObject.
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([-expungeAction]): removed
|
|
method, moved into the new UIxMailActions module class.
|
|
|
|
* SoObjects/Mailer/SOGoDraftsFolder.m ([SOGoDraftsFolder
|
|
-newDraft]): new method that returns a new SOGoDraftObject
|
|
instance with a unique filename based on the current timestamp and
|
|
the "newDraft" prefix.
|
|
([SOGoDraftsFolder
|
|
-lookupName:nameinContext:localContextacquire:acquire]): overriden
|
|
method by detecting local drafts with their "newDraft" prefix.
|
|
([SOGoDraftsFolder -isInDraftsFolder]): returns YES.
|
|
|
|
* SoObjects/Mailer/SOGoDraftsFolder.[hm]: rewrote class module
|
|
from scratch by making it a subclass of SOGoMailFolder.
|
|
|
|
* UI/MailerUI/UIxMailReplyAction.m: removed obsolete class
|
|
module.
|
|
|
|
* UI/MailerUI/UIxMailForwardAction.m: removed obsolete class
|
|
module.
|
|
|
|
* UI/MailerUI/UIxMailEditorAction.[hm]: removed obsolete class
|
|
module.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject -init]):
|
|
new method, initializing the new ivars: IMAP4ID, headers, text,
|
|
sourceURL and sourceFlag.
|
|
([-spoolFileManager], [SOGoDraftObject -userSpoolFolderPath])
|
|
([-_ensureUserSpoolFolderPath])
|
|
([-saveMimeMessageToTemporaryFileWithHeaders:])
|
|
([SOGoDraftObject -mimeMessageWithHeaders:_headers])
|
|
([-deleteTemporaryMessageFile:], [-delete], [-content])
|
|
([-GETAction:_ctx], [-DELETEAction:_ctx], [-fetchParts:])
|
|
([-uid], [-flags], [-size], [-envelope]): removed methods.
|
|
([SOGoDraftObject -storeInfo]): rewrote method to take the new
|
|
ivars into account.
|
|
([SOGoDraftObject -setSourceURL:newSourceURL])
|
|
([SOGoDraftObject -setSourceFlag:newSourceFlag]): new accessor
|
|
methods to store the url of the original message between accesses
|
|
so that, depending on the action taken (forward or reply), the
|
|
correct flag can be given.
|
|
([SOGoDraftObject -setIMAP4ID:]): new accessor method that sets
|
|
the imap4 id that is returned for the message whenever it is saved
|
|
into the drafts folder.
|
|
([SOGoDraftObject -save]): new method that takes in charge the
|
|
saving of the message in the IMAP drafts folder.
|
|
([SOGoDraftObject -fetchMailForReplying:sourceMailtoAll:toAll]):
|
|
new method that fills the original data of the new message with
|
|
the reply content of the original message.
|
|
([SOGoDraftObject -fetchMailForForwarding:sourceMail]): same as
|
|
above for message forwarding.
|
|
([-spoolFileManager]): removed useless method (only returned the
|
|
default filemanager...)
|
|
([SOGoDraftObject -mimeMessageAsData]): new method that returns
|
|
the resulting message as an NSData chunk.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject+Draft.m: new extension module
|
|
containing a rewrite of the mail action methods found in
|
|
UI/Mailer/, that needed to be put in the SOGoMailObject class.
|
|
([SOGoMailObject -subjectForReply]): new method that returns a
|
|
subject suitable for replies.
|
|
([SOGoMailObject -contentForReply]): new method that returns the
|
|
textual content of an email, quoted for replying.
|
|
([SOGoMailObject -filenameForForward]): new method that returns
|
|
the name of the filename that should contain the forwarded
|
|
message, based on its subject.
|
|
([SOGoMailObject -subjectForForward]): explicit.
|
|
|
|
2007-08-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame
|
|
-mailAccounts]): rewrote method to return the name of the mail
|
|
accounts now available with the -[SOGoUser mailAccounts] method.
|
|
([UIxMailMainFrame -showLinkBanner]): removed method.
|
|
([UIxMailMainFrame -bannerToolbarStyle]): removed method.
|
|
([UIxMailMainFrame -bannerConsumeStyle]): removed method.
|
|
([UIxMailMainFrame -rootURL]): removed method.
|
|
([UIxMailMainFrame -userRootURL]): removed method.
|
|
([UIxMailMainFrame -calendarRootURL]): removed method.
|
|
([UIxMailMainFrame -contactsRootURL]): removed method.
|
|
([UIxMailMainFrame -hasErrorText])
|
|
([UIxMailMainFrame -errorText])
|
|
([UIxMailMainFrame -errorAlertJavaScript]): removed methods.
|
|
([-composeAction]): removed method. Now provided by
|
|
UIxMailAccountActions.
|
|
([UIxMailMainFrame -setHideFolderTree:_flag]): removed method.
|
|
([UIxMailMainFrame -hideFolderTree]): removed method.
|
|
([UIxMailMainFrame -treeRootClassName]): removed method.
|
|
([UIxMailMainFrame +initialize]): removed method.
|
|
SOGoMailTreeRootClass userdefaults will no longer have any effect.
|
|
|
|
* UI/Common/WODirectAction+SOGo.m ([WODirectAction
|
|
-redirectToLocation:newLocation]): new method that implements the
|
|
same functionality as WOComponent.
|
|
|
|
* UI/Common/WODirectAction+SOGo.[hm]: new class extension module.
|
|
|
|
* UI/MailerUI/UIxMailView.m ([UIxMailView -mailIsDraft]): new
|
|
method that returns whether the current mail is store in the
|
|
drafts folder hierarchy.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([-fullEmail]): removed method.
|
|
([-primaryEmail]): removed method.
|
|
([SOGoUser -primaryIMAP4AccountString]): removed method.
|
|
([SOGoUser -mailAccounts]): new method that returns an array
|
|
containing description dictionaries for all the user mail
|
|
accounts. Each account also contain the user's identities for that
|
|
account.
|
|
([SOGoUser -allIdentities]): new utility method that returns all
|
|
the user identities on all accounts.
|
|
([SOGoUser -primaryIdentity]): new method return the first
|
|
identity of the first account.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder -httpURLForAdvisoryToUser:uid]):
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-isInDraftsFolder]): returns NO.
|
|
([-preferredIdentity]): removed method, replaced with -[SOGoUser
|
|
primaryIdentity].
|
|
([SOGoMailAccount -draftsFolderInContext:_ctx]): new method.
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject
|
|
-isInDraftsFolder]): new method that detects if self is contained
|
|
by the drafts folder by calling itself on the container object.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccounts.m ([-fetchAllIdentities]):
|
|
removed method.
|
|
([-fetchIdentitiesWithEmitterPermissions]): removed method.
|
|
([SOGoMailAccounts -toManyRelationshipKeys]): rewrote method to
|
|
return the name of the mail accounts now available with the
|
|
-[SOGoUser mailAccounts] method.
|
|
|
|
* SoObjects/Mailer/SOGoUser+Mail.[hm]: removed useless class
|
|
extension module.
|
|
|
|
* SoObjects/Mailer/SOGoMailIdentity.[hm]: removed useless class
|
|
module.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m ([NSArray
|
|
-keysWithFormat:format]): method that forward the method of the
|
|
same name to each member of the array, considering they all are
|
|
instances of NSDictionary.
|
|
([NSArray -objectsForKey:key]): same principle as above.
|
|
([NSArray -flattenedArray]): new method that transforms an array
|
|
of arrays into a single array containing all the elements of the
|
|
subarrays.
|
|
|
|
* SoObjects/SOGo/NSDictionary+Utilities.m ([NSDictionary
|
|
-keysWithFormat:keyFormat]): new method inspired by the python
|
|
string formatting system and which replaces occurences of "%{key}"
|
|
by the corresponding keys.
|
|
|
|
2007-08-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Main/SOGo.m ([SOGo -run]): check for channel-type specific
|
|
sql script before the generic one when initializing mandatory
|
|
system tables.
|
|
|
|
2007-08-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m ([NSString
|
|
-pureEMailAddress]): new utility method inspired by the
|
|
"_rawSender" private method in SOGoDraftObject, which it now
|
|
replaces.
|
|
|
|
* SoObjects/SOGo/SOGoMailer.m: new abstraction class module that
|
|
provides a common API for sending emails, no matter what the
|
|
transport is.
|
|
|
|
2007-08-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
|
|
-quotasAction]): invoke "relativeImap4Name" instead of
|
|
"nameInContainer" since the latter also returns the "folder"
|
|
prefix.
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions
|
|
-listMailboxesAction]): declare the output as text/plain in UTF-8.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
|
|
-deleteFolderAction]): fixed the url of the destination folder.
|
|
|
|
* Main/SOGo.m ([SOGo +initialize]): show the build date and
|
|
hostname at startup.
|
|
|
|
2007-08-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent
|
|
-sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]):
|
|
set the mail date to the current date string returned by our
|
|
rfc822DateString extension method.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-_gcsFoldersFromFolder:): ignore the personal folders who are
|
|
returned but don't really exist.
|
|
|
|
2007-08-02 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView _responseForResults:]):
|
|
has to return only one element.
|
|
|
|
2007-08-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartViewer.m ([UIxMailPartViewer
|
|
-content]): new method returning the decoded content of the
|
|
corresponding attachment as an NSData instance.
|
|
([UIxMailPartViewer -filename]): if the "filename" parameter of
|
|
the metadata parameterList is empty, try to find out the filename
|
|
from the "disposition" metadata returned with the BODYSTRUCTURE
|
|
imap4 tag.
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame
|
|
-composeAction]): prefix the INBOX folder with "folder".
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailBaseObject
|
|
-relativeImap4Name]): return nameInContainer stripped from its
|
|
first 6 characters since all folder names are prefixed with
|
|
"folder".
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject
|
|
-imap4URLString]): invoke -relativeImap4Name instead of
|
|
"nameInContainer" since the former will return the fixed IMAP4
|
|
foldername and the latter the SoObject name.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
+initialize]): we now fetch the "BODYSTRUCTURE" key instead of "BODY".
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount -inboxFolderNameInContext:])
|
|
([SOGoMailAccount -draftsFolderNameInContext:_ctx])
|
|
([SOGoMailAccount -sieveFolderNameInContext:_ctx])
|
|
([SOGoMailAccount -sentFolderNameInContext:])
|
|
([SOGoMailAccount -trashFolderNameInContext:]): prefix the folder
|
|
names with "folder".
|
|
([SOGoMailAccount -inboxFolderInContext:_ctx])
|
|
([SOGoMailAccount -sentFolderInContext:_ctx])
|
|
([SOGoMailAccount -trashFolderInContext:_ctx]): no longer prefix
|
|
the folder names with "folder" since they are prefixed earlier.
|
|
|
|
2007-07-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount -inboxFolderInContext:_ctx])
|
|
([-sentFolderInContext:], [-trashFolderInContext:]): folder keys
|
|
all starts with "folder".
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject +initialize]): no
|
|
longer declare security info from here.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m
|
|
([-isMessageKey:_keyinContext:_ctx]): removed useless method.
|
|
([SOGoMailFolder -lookupName:_keyinContext:acquire:_acquire]):
|
|
folder names now always start with "folder".
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m
|
|
([-lookupName:inContext:acquire:]): folder names now always start
|
|
with "folder".
|
|
|
|
2007-07-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailForwardAction.m ([UIxMailForwardAction
|
|
-forwardAction]): adapted to the new saveAttachment:withMetadata:
|
|
method (see below).
|
|
|
|
* UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -saveAction]): added
|
|
code to save the attached filenames with the filename returned by
|
|
the web server as well as their mime types.
|
|
|
|
* UI/MailPartViewers/UIxMailPartMessageViewer.m ([UIxMailPartMessageViewer -fromAddresses])
|
|
([UIxMailPartMessageViewer -toAddresses])
|
|
([UIxMailPartMessageViewer -ccAddresses]): new methods returning
|
|
the corresponding fields separated with a ", " (if needed).
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject
|
|
-saveAttachment:_attachwithMetadata:metadata]): new method
|
|
replacing -saveAttachment:withName: and which takes a dictionary
|
|
as parameter with the filename and the mime type of the
|
|
attachment.
|
|
The mimetype is then saved in a hidden text file.
|
|
([SOGoDraftObject -contentTypeForAttachmentWithName:]): if exists,
|
|
take the mime type from the hidden text file related to the
|
|
attachment.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ()
|
|
([SOGoContactGCSFolder
|
|
-lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]):
|
|
return records if the db records are > 0 and not just > 1...
|
|
|
|
2007-07-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactsListView.m ([-displayName]): removed
|
|
method.
|
|
([UIxContactsListView -defaultSortKey]): changed to "displayName".
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder
|
|
-lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]):
|
|
translate the returned records to a normalized form.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]):
|
|
translate the returned records to a normalized form.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m,
|
|
UI/Contacts/UIxContactsListView.m, SoObjects/SOGo/SOGoUser.m,
|
|
SoObjects/SOGo/AgenorUserDefaults.m,
|
|
SoObjects/Contacts/SOGoContactGCSFolder.m,
|
|
SoObjects/Appointments/SOGoAppointmentFolder.m,
|
|
OGoContentStore/OCSiCalFieldExtractor.m,
|
|
OGoContentStore/OCSContactFieldExtractor.m: prefixed all quick
|
|
table fields with "c_".
|
|
|
|
2007-07-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m ([LDAPSource +initialize]): query
|
|
the values for SOGoLDAPQueryLimit and SOGoLDAPQueryTimeout from
|
|
the application settings. If set, both limit will influence the
|
|
maximum size of the resultsets and the time taken to solve them.
|
|
([LDAPSource -_initLDAPConnection]): initialize the limits.
|
|
|
|
2007-07-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder -davNamespaces]): added new overriden
|
|
method that declares the DAV namespace related to CardDAV.
|
|
([SOGoContactGCSFolder -davComplianceClassesInContext:]): new
|
|
method that declares the "access-control" and "addressbook-access"
|
|
classes to the list.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([-lookupActionForCalDAVMethod:]): removed method.
|
|
([SOGoAppointmentFolder -davNamespaces]): added new overriden
|
|
method that declares the DAV namespace related to CalDAV.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -davNamespaces]): new
|
|
optional method for subclasses which handle specific extensions to
|
|
the DAV protocol: CardDAV or CalDAV.
|
|
([SOGoFolder
|
|
-lookupName:lookupNameinContext:localContextacquire:acquire]):
|
|
new overriden method that handles dav invocations for extensions
|
|
to DAV by returning an appropriate SoSelectorInvocation.
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m ([NSString
|
|
-asDavInvocation]): new method returning a dictionary with a "ns"
|
|
key representing the dav namespace and a "method" key representing
|
|
the dav method name of the request.
|
|
|
|
* UI/PreferencesUI/UIxPreferences.m ([UIxPreferences
|
|
+initialize]): scan the value of SOGoUIxUserCanChangePassword.
|
|
Default is "no".
|
|
([UIxPreferences -shouldDisplayPasswordChange]): new template
|
|
method that returns the value of SOGoUIxUserCanChangePassword.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage +initialize]):
|
|
scan the value of SOGoUIxDefaultModule. If not set, the default
|
|
module defaults to "Calendar".
|
|
([SOGoUserHomePage -defaultAction]): redirect the user to the
|
|
value of "SOGoUIxDefaultModule".
|
|
|
|
2007-07-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactsListView.m ([UIxContactsListView
|
|
-contactInfos]): cache the results to avoid multiple invocations.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder -toOneRelationshipKeys]): check whether we
|
|
really should return something or if we fake to return nil...
|
|
|
|
2007-07-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser +initialize]): set
|
|
acceptAnyUser to YES only when the SOGoAuthentificationMethod user
|
|
default is set to "bypass".
|
|
|
|
* SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
|
|
-checkLogin:_loginpassword:_pwd]): accepts unverified connections
|
|
when authMethod is set to "bypass" from now on. This would avoid a
|
|
security concern with a default installation of SOGo.
|
|
AuthentificationMethod is now prefixed with "SOGo" for better
|
|
clarity.
|
|
|
|
2007-07-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
|
|
-quotasAction]): new method that returns a json representation of
|
|
the mailbox quotas.
|
|
|
|
2007-07-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject
|
|
-imap4URL]): rewrote method to support accented mailbox names.
|
|
([SOGoMailBaseObject imap4Password]): rewrote to simply use
|
|
SOGoAuthenticator's passwordInContext:.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor
|
|
-takeValuesFromRequest:_rqinContext:_ctx]): explicitly set the
|
|
start and due dates to nil if hasStartDate and hasDueDate are
|
|
false.
|
|
|
|
* SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
|
|
-passwordInContext:context]): made method public.
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
|
|
-extractQuickFieldsFromTodo:_task]): set "isallday" and "isopaque"
|
|
to false to avoid a null violation.
|
|
|
|
2007-07-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-contentAsString]): returns the message encoded in ISO Latin 1
|
|
again.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser +initialize]): read the
|
|
SOGoSuperUsername user defaults.
|
|
([SOGoUser -initWithLogin:newLoginroles:newRoles]): simplified
|
|
method.
|
|
([SOGoUser -rolesForObject:objectinContext:context]): if the
|
|
current user is the superuser, grant him/her the "owner" role.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -ocsFolder]): create
|
|
the folder only if the current user is the owner of the future
|
|
folder.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -contentAsString]): we return the content
|
|
based on the permissions returned by the security manager instead
|
|
of by looking at the user roles.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -calendarFolders]): read the calendar
|
|
folders of the user to whom this folder belongs instead of the
|
|
active user. This way, a delegate user will be able to have the
|
|
same view that the original user has if he connects from his user
|
|
directory.
|
|
|
|
* Main/SOGo.m ([SOGo -lookupUser:_keyinContext:]): check if the
|
|
user exists before creating the SOGoUserFolder instance. If not,
|
|
returns nil.
|
|
|
|
* UI/MailerUI/UIxMailSourceView.[hm]: new class module designed to
|
|
return the message source code in plain text.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-contentAsString]): returns the message encoded in UTF8.
|
|
|
|
2007-07-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* OGoContentStore/iCalRepeatableEntityObject+OCS.m
|
|
([iCalRepeatableEntityObject -cycleInfo]): no longer take the
|
|
leading tagname into account when serializing the element values.
|
|
|
|
* Main/SOGoProductLoader.m: only load bundle directories ending
|
|
with the "SOGo" extension.
|
|
|
|
* Main/SOGo.m ([SOGo
|
|
-_checkTableWithCM:cmtableURL:urlandType:tableType]): empty the
|
|
result set if the query has caused no exception. Otherwise we get
|
|
an "evaluation is in progress exception".
|
|
|
|
2007-06-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
|
|
-generateSQLForInsert]): initialize error to nil before the
|
|
serialization. Otherwise the method can get confused if it ever is
|
|
initialized to something else.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-folderIsMandatory]): returns NO unconditionnally.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
|
|
-appendPersonalSources]): add the "personal" folder to the list of
|
|
user folders even if it doesn't exist, so that it is created when
|
|
the user accesses it.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-folderIsMandatory]): returns YES if nameInContainer is set to
|
|
"personal", which is the default address book.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -folderIsMandatory]): returns YES since
|
|
users must have one Calendar folder (one and only one).
|
|
([SOGoAppointmentFolder -_privacySqlString]): unescape the
|
|
escaping '\' so make the carriage return a real one. This way,
|
|
PgSQL 8 won't complain about escaping the string.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -ocsFolder]): new
|
|
method that create the folder if considered mandatory.
|
|
([SOGoFolder -folderIsMandatory]): new method that determines
|
|
whether the folder should be created automatically or not. To be
|
|
overriden by subclasses.
|
|
|
|
* Main/SOGo.m ([SOGo -run]): override method and create the
|
|
missing system tables if needed.
|
|
|
|
2007-06-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/WOContext+UIxMailer.m ([WOContext
|
|
-mailDateFormatter]): returns the user's date formatter.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject -date]):
|
|
applies the user timezone to the date object before returning it.
|
|
|
|
* UI/Common/UIxSortButton.m: removed useless class module.
|
|
|
|
* UI/Common/UIxSortableTableHeader.m: removed useless class
|
|
module.
|
|
|
|
* UI/Contacts/UIxContactsListView.m ([UIxContactsListView
|
|
-contactInfos]): use the "asc" url parameter instead of "desc" to
|
|
determine the ordering.
|
|
([-sortOrdering]): removed method.
|
|
([UIxContactsListView -init]): removed the "searchText" ivar.
|
|
(general): the template no longer use the UIxSortableTableHeader
|
|
components.
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
|
-defaultSortKey]): default sort following the messages arrival
|
|
instead of their date.
|
|
([-isSortedDescending]): removed method.
|
|
([-imap4SortOrdering]): use the "asc" url parameter instead of
|
|
"desc" to determine the ordering.
|
|
(general): the template no longer use the UIxSortableTableHeader
|
|
components.
|
|
|
|
2007-06-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView -sleep]):
|
|
removed method.
|
|
([-setQualifier:_msg], [-qualifier]): removed methods.
|
|
([UIxMailListView -defaultAction]): added code to handle the
|
|
search criteria and value passed as url parameters. Also, we now
|
|
handle the same search criterias as Thunderbird/Icedove.
|
|
|
|
2007-06-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/PreferencesUI/UIxJSONPreferences.m ([UIxJSONPreferences
|
|
-jsonDefaultsAction]): bug fix: returns a WOResponse instance with
|
|
the string instead of the string itself.
|
|
([UIxJSONPreferences -jsonSettingsAction]): same as above.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser +initialize]): new module
|
|
bool var "acceptAnyUser" that is set when the AuthenticationMethod
|
|
user default is nil.
|
|
([SOGoUser -initWithLogin:newLoginroles:newRoles]):
|
|
unconditionnally returns an instance whenever acceptAnyUser is set.
|
|
|
|
2007-06-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Main/sogod.m (main): prevent SOGo from running as root.
|
|
|
|
2007-06-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
-setCurrentPassword:newPassword]): new stub method.
|
|
([SOGoUser -dateFormatterInContext:context]): new method that
|
|
returns an instance of SOGoDateFormatter configured based on the
|
|
user defaults.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame
|
|
-relativePreferencesPath]): new method.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([-titleDateFormatter]):
|
|
removed useless method.
|
|
|
|
* SoObjects/SOGo/SOGoDateFormatter.m: rewrote class to accept
|
|
different configurable formats (long and short date + time).
|
|
|
|
* SoObjects/SOGo/SOGoDateFormatter.[hm]: moved from UI/SOGoUI/.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccounts.m ([SOGoMailAccounts
|
|
-isInternetRequest]): removed method.
|
|
|
|
* SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
|
|
-jsonRepresentation]): new method with an explicit name.
|
|
|
|
* UI/PreferencesUI/product.plist: new bundle that provides a web
|
|
ui for handling user defaults.
|
|
|
|
* UI/Scheduler/UIxTaskView.[hm]: removed unused module.
|
|
|
|
* UI/Scheduler/UIxAppointmentView.[hm]: removed unused module.
|
|
|
|
* SoObjects/SOGo/WOContext+Agenor.[hm]: removed unused module.
|
|
|
|
2007-06-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoLRUCache.m: removed unused module.
|
|
|
|
2007-06-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/NSArray+Scheduler.m ([NSArray
|
|
-compareEventsAscending:otherEvent]): no longer use compare: on
|
|
the time objects since one of them could be an NSNull, which
|
|
crashes when comparing with anything.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-eventsListAction]): sort events from here.
|
|
([UIxCalListingActions -tasksListAction]): sort tasks from here.
|
|
|
|
* SoObjects/SOGo/NSObject+AptComparison.[hm]: removed category
|
|
module, replaced with NSArray+Scheduler in UI/SchedulerUI/.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]):
|
|
no longer sort elements from here.
|
|
|
|
2007-06-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-aclsForUser:uid]): implemented method by forwarding the request
|
|
to the container. This fixes a bug where users could no longer
|
|
read emails from shared folders.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -init]): "isNew" is no longer defined
|
|
here, but rather in its parent class.
|
|
|
|
* UI/SOGoUI/SOGoDateFormatter.m ([SOGoDateFormatter
|
|
-stringForSecondsSinceThe70s:seconds]): new utility method.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-eventsListAction]): no longer reduce the end day of one day for
|
|
all day events since everything has been fixed in
|
|
OCSiCalFieldExtractor.
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
|
|
-extractQuickFieldsFromEvent:_event]): reduce the seconds/70 of
|
|
the end date of all day events of 1 so that they stay on their
|
|
real last day.
|
|
|
|
2007-06-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMonthView.m: no longer retrieve appointments.
|
|
|
|
* UI/Scheduler/UIxCalView.m ([-fetchCoreAppointmentsInfos]):
|
|
removed method.
|
|
([-fetchCoreTasksInfos]): removed method.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-init]): initialize an instance of SOGoDateFormatter.
|
|
([UIxCalListingActions -eventsListAction]): the display start and
|
|
end dates are added to the listing for each event.
|
|
|
|
* UI/Scheduler/UIxCalDayTable.m: no longer retrieve appointments.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-isAllDay]): returns YES if the "hm" url parameter is set to
|
|
"allday".
|
|
([UIxAppointmentEditor -defaultAction]): if isAllDay, the enddate
|
|
is displayed one day earlier.
|
|
|
|
2007-06-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
|
-_setupContext]): take the range of dates specified by the popup
|
|
into account.
|
|
|
|
* UI/Scheduler/UIxCalListingActions.[hm]: new subclass of
|
|
WODirectAction that returns WOResponse objects with the events or
|
|
todos satisfying the parameters passed in the url.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-takeValuesFromRequest:_rqinContext:_ctx]): take the new ivar
|
|
"isAllDay" into account and compute the amount of days to pass to
|
|
the iCalEvent.
|
|
|
|
2007-06-06 Francis Lachapelle <flachapelle@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSNumber+Utilities.m: initial import.
|
|
* SoObjects/SOGo/NSNull+Utilities.m: initial import.
|
|
* UI/Scheduler/UIxCalTasksListView.m ([WOResponse -tasksListAction]):
|
|
new method that returns a json-formatted array of the visible tasks
|
|
for the current user.
|
|
|
|
2007-06-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m: the owner of the
|
|
object must be present in the list of UIDs we delete the object
|
|
from. Otherwise Calendar objects having no organizer and no
|
|
attendees will remain in their owner's Calendar.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-_urlPreferringParticle:expectedoverThisOne:possible]): remove the
|
|
first 3 elements of the path array if the url returned by
|
|
baseURLInContext: returns a hostname.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
|
|
-_adjustOwner]): sharedFolderName and otherUsersFolderName may be
|
|
nil, in which case a crash happens when calling hasPrefix:.
|
|
([SOGoMailFolder -_sharesACLs]): same as above.
|
|
([SOGoMailFolder -otherUsersPathToFolder]): same as above. If
|
|
otherUsersFolderName is nil, we return nil.
|
|
([SOGoMailFolder -httpURLForAdvisoryToUser:uid]): if we receive
|
|
nil from [self otherUsersPathToFolder], we return nil too.
|
|
|
|
2007-06-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-_urlPreferringParticle:expectedoverThisOne:possible]): unescape
|
|
the result of [self baseURLInContext:] to avoid a double escaping
|
|
in the resulting string.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -aclsForUser:uid]): if
|
|
the user has the "ObjectReader" role on the parent container, then
|
|
he is granted the "ObjectViewer" role on this object. Same for
|
|
"ObjectEraser", although this might change later.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-toolbar]): determine the toolbar filename based on the
|
|
permissions declared by the securitymanager. The role mechanism
|
|
has been adjusted on a lowerlevel so we can simplify the code.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-initWithName:newNameinContainer:newContainer]): read the content
|
|
directly from here. That way we can determine whether the object
|
|
is being created.
|
|
([SOGoContentObject -aclsForUser:uid]): if the object is new and
|
|
the ObjectCreator role is enabled, we also grant the ObjectEditor
|
|
role to the current user.
|
|
|
|
* UI/Common/UIxFolderActions.m ([-canAccessContentAction]):
|
|
changed the method paradigm to only return HTTP code 204. Not test
|
|
is done whatsoever since the security manager does it for us.
|
|
|
|
* UI/Contacts/UIxContactsListView.m ([-canAccessContentAction]):
|
|
removed method because the same exists in UIxFolderActions.m
|
|
|
|
* UI/Contacts/UIxContactsUserRightsEditor.m
|
|
([UIxContactsUserRightsEditor
|
|
-setUserCanReadObjects:userCanReadObjects]): new method.
|
|
|
|
* SoObjects/SOGo/SOGoPermissions.m: added roles "FolderViewer" and
|
|
"FolderEraser" and special permission "Access Object". Removed
|
|
role "SOGoMailRole_MessageEraser" since "SOGoRole_ObjectEraser"
|
|
can be used instead. Removed "FolderReader" since it is useless.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry
|
|
-vCard]): directly use the "content" ivar since it is initialized
|
|
during object creation.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder -init]): no longer handle the
|
|
nameInContainer no the container ivars. They were removed because
|
|
this class is a descendant of SOGoObject which already has them.
|
|
([SOGoContactLDAPFolder -davDisplayName]): new overriden method
|
|
returning "displayName".
|
|
([SOGoContactLDAPFolder -isFolderish]): new overriden method
|
|
returning "YES".
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -isOrganizerOrOwner:user]): commented out.
|
|
([SOGoCalendarComponent -findParticipant:user]): new name for
|
|
method "participant:".
|
|
([SOGoCalendarComponent -findParticipantWithUID:uid]): same as
|
|
findparticipant but taking a uid string as parameter.
|
|
([SOGoCalendarComponent -contentAsString]): don't regenerate the
|
|
iCalendar automatically. Instead, this is done only when the user
|
|
is a "date and time viewer".
|
|
([SOGoCalendarComponent -aclsForUser:uid]): take delegation roles
|
|
(modifier and responder) into account by compiling them with the
|
|
owner's roles.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolder.h: removed
|
|
"nameInContainer" from the list of required methods.
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
|
|
-davContentType]): returns "text/calendar".
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder -davResourceType]): declare the correct
|
|
groupdav resource-type.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
|
|
-davContentType]): same as below.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
|
|
-initWithName:newNameinContainer:newContainer]): new overriden
|
|
method setting the custom owner directly.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccounts.m ([SOGoMailAccounts
|
|
-davContentType]): same as below.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-davContentType]): same as below.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -davContentType]):
|
|
declare "httpd/unix-directory".
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser +initialize]): declare
|
|
"UTC" as fallback timezone instead of "Canada/Eastern".
|
|
([-hasEmail:email]): make use of the new NSArray's
|
|
containsCaseInsensitiveString: method.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-davContentType]): declare "message/rfc822" as content type.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -_privacySqlString]): "owner" is now an
|
|
ivar in SOGoObject.
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): same as above.
|
|
([-fetchContentObjectNames]): commented out method since it was
|
|
usefull only for testing Funambol.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m ([NSArray
|
|
-containsCaseInsensitiveString:match]): an enhanced version of
|
|
containsObject:.
|
|
|
|
* UI/MailerUI/UIxMailView.m ([-isTrashingAllowed]): removed
|
|
useless method.
|
|
([-showMarkDeletedButton]): removed useless method.
|
|
([-showTrashButton]): removed useless method.
|
|
|
|
* SoObjects/Appointments/iCalEntityObject+SOGo.m
|
|
([iCalEntityObject -userIsParticipant:user]): new proxy method
|
|
that invoked isParticipant on self for each possible email
|
|
addresses of the user passed as parameter.
|
|
([iCalEntityObject -userIsOrganizer:user]): same as above.
|
|
|
|
* SoObjects/Appointments/iCalEntityObject+SOGo.[hm]: new class
|
|
extension module.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject
|
|
-saveContentString:contentStringbaseVersion:baseVersion]): remove
|
|
method since an event may not have an organizer.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-GETAction:localContext]): clarified method. Added support for
|
|
content-type (thanks to Helge Hess).
|
|
([SOGoObject -initWithName:_nameinContainer:_container]):
|
|
initialize and retain the owner.
|
|
([SOGoObject -davContentType]): returns "text/plain".
|
|
|
|
2007-05-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Common/UIxObjectActions.m ([UIxObjectActions
|
|
-addUserInAclsAction]): send an acl addition mail.
|
|
([UIxObjectActions -removeUserFromAclsAction]): send an acl
|
|
removal mail.
|
|
|
|
* UI/Common/UIxFolderActions.m ([UIxFolderActions
|
|
-_realActionWithFolderName:folderDict]): handle the possible
|
|
presence of the "mail-invitation" url parameter. If present, the
|
|
user will be redirected to the relevant folder.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -fullEmail]): new proxy method.
|
|
([SOGoUser -language]): new method that returns the user's
|
|
preferred language, or the system's if none has been set yet.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -davURL]): new method
|
|
that returns the full dav url to self.
|
|
([SOGoObject -soURL]): same as above but for the so url (Web UI).
|
|
([SOGoObject -soURLToBaseContainerForUser:uid]): new method that
|
|
returns the full so url to the base of the SOGo module to which
|
|
self belongs, and for the specified user.
|
|
([SOGoObject -soURLToBaseContainerForCurrentUser]): same as above
|
|
but for the current user.
|
|
([SOGoObject -httpURLForAdvisoryToUser:uid]): new protocol method
|
|
required by the acl advisory templates and which returns a link
|
|
the target user can click to activate its new subscription.
|
|
([SOGoObject -resourceURLForAdvisoryToUser:uid]): same as above
|
|
but for inclusion of the application/x-sogo-notification part,
|
|
which will be handled by the Lightning enhancer plugin.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions -subscribeAction])
|
|
([UIxMailFolderActions -unsubscribeAction]): new stub methods that
|
|
do nothing yet since imap folder subscription is not handled yet.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m
|
|
([-hasSupportForDefaultRoles]): removed method.
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager
|
|
-getFullEmailForUID:uid]): new method that returns the username +
|
|
email pair.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent +initialize]): the default language for
|
|
mail templates is now set to English.
|
|
|
|
* UI/SOGoUI/SOGoACLFrenchRemovalAdvisory.[hm]: new subclass of
|
|
SOGoACLAdvisory implementing the french template for user removal
|
|
from acls.
|
|
|
|
* UI/SOGoUI/SOGoACLFrenchAdditionAdvisory.[hm]: new subclass of
|
|
SOGoACLAdvisory implementing the french template for user
|
|
additions to acls.
|
|
|
|
* UI/SOGoUI/SOGoACLEnglishRemovalAdvisory.[hm]: new subclass of
|
|
SOGoACLAdvisory implementing the english template for user removal
|
|
from acls.
|
|
|
|
* UI/SOGoUI/SOGoACLEnglishAdditionAdvisory.[hm]: new subclass of
|
|
SOGoACLAdvisory implementing the english template for user
|
|
additions to acls.
|
|
|
|
* UI/SOGoUI/SOGoACLAdvisory.[hm]: new class module implemented the
|
|
supercall of all the acl advistory templates. The model is based
|
|
on SOGoAptMailNotification except that the template encapsulates
|
|
the message to be sent. Later, we might create a superclass common
|
|
to all template-based emails.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m ([NSMutableArray
|
|
-addRange:newRange]): new method that store a string
|
|
representation of the NSRange passed as parameter.
|
|
([NSMutableArray -hasRangeIntersection:testRange]): tests whether
|
|
any range contained in self intersect with the one passed as parameter.
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m ([-stringByDetectingURLs]):
|
|
store ranges in an array to prevent them from intersecting with
|
|
each other during the passes.
|
|
|
|
2007-05-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
|
|
-primaryFetchMailboxInfo]): useless method. Removed.
|
|
|
|
2007-05-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
|
|
-toManyRelationshipKeys]): invoke [self subfolders].
|
|
([SOGoMailFolder -subfolders]): new method containing what used to
|
|
be in toManyRelationshipKeys.
|
|
([SOGoMailFolder -subfoldersURL]): same as above but returns imap
|
|
urls.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-allFolderPaths]): renamed version of "allFolderPathes", sorted by
|
|
named and at the beginning of which we put the predefined folders.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
|
|
-emptyTrashAction]): new method inspired by a similar one from
|
|
UIxMailListView, to which we added the ability to remove
|
|
subfolders.
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([-emptyTrashAction]): removed
|
|
method. Replaced with a similar one in UIxMailFolderActions.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
|
|
-renameFolderAction]): implemented method.
|
|
([UIxMailFolderActions -deleteFolderAction]): no longer delete the
|
|
specified folder. Instead, we put it in the trash folder.
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([-createFolderAction]): removed
|
|
method, replaced with a similar method in the new
|
|
UIxMailFolderAction class module.
|
|
([-deleteFolderAction]): idem.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.m ([UIxMailFolderActions
|
|
-createFolderAction]): new method implementing subfolder creation.
|
|
([UIxMailFolderActions -renameFolderAction]): new method
|
|
implementing subfolder renaming (basic implementation to be
|
|
finalized later).
|
|
([UIxMailFolderActions -deleteFolderAction]): new method
|
|
implementing folder deletion.
|
|
|
|
* UI/MailerUI/UIxMailFolderActions.[hm]: new module implementing
|
|
web actions related to the handling of imap folder.
|
|
|
|
2007-05-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
|
|
-ownerInContext:localContext]): overriden method because we are an
|
|
IMAP4 client and we need a bit more intelligence to deduce the
|
|
owner of the current folder.
|
|
([SOGoMailFolder -aclsForUser:uid]): aclForMailboxAtURL might
|
|
return an NSException so we need to be careful here to avoid a
|
|
crash.
|
|
([SOGoMailFolder -aclUsers]): aclForMailboxAtURL might return an
|
|
NSException so we need to be careful here to avoid a crash.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccounts.m
|
|
([SOGoMailAccounts -fetchIdentitiesWithOnlyEmitterAccess:_flag])
|
|
there is no longer any concept of Intranet or Internet connection
|
|
handling.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-sharedFolderName]): new method.
|
|
([SOGoMailAccount -otherUsersFolderName]): new method.
|
|
|
|
* UI/MailerUI/UIxMailFolderMenu.[hm]: removed module, obsoleted by
|
|
new javascript code and the new UIxMailAccountActions class.
|
|
|
|
* UI/MailerUI/UIxMailTree.[hm]: removed module, obsoleted by new
|
|
javascript code and the new UIxMailAccountActions class.
|
|
|
|
* UI/MailerUI/UIxMailTreeBlock.[hm]: removed module, obsoleted by
|
|
new javascript code and the new UIxMailAccountActions class.
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.m ([UIxMailAccountActions
|
|
-listMailboxesAction]): new method that returns a json-formatted
|
|
tree of all the mailboxes available to the current user.
|
|
|
|
* UI/MailerUI/UIxMailAccountActions.[hm]: new module implementing
|
|
web actions related to the handling of mail accounts.
|
|
|
|
* SoObjects/SOGo/NSDictionary+Utilities.[hm]: new extension
|
|
module.
|
|
|
|
* SoObjects/SOGo/NSObject+Utilities.m ([NSObject
|
|
-jsonRepresentation]): new interface method meant to be overriden
|
|
by the primitive classes.
|
|
|
|
2007-05-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailSplashView.m: removed.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -getUIDsForICalPersons:iCalPersons]): add
|
|
the uid to the list only when the user email is recognized by the
|
|
user manager.
|
|
|
|
2007-05-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-isDeletionAllowed]): completed method with the new imap acl api.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -defaultAclRoles]):
|
|
removed method.
|
|
|
|
* SoObjects/SOGo/SOGoPermissions.m: added the new role
|
|
"SOGoMailRole_MessageEraser".
|
|
|
|
* UI/Common/UIxAclEditor.m ([UIxAclEditor -defaultUserID])
|
|
([UIxAclEditor -_prepareUsers]): take the new SOGoObject's
|
|
"defaultUserID" method into account.
|
|
|
|
* UI/Common/UIxUserRightsEditor.m ([UIxUserRightsEditor -userIsDefaultUser])
|
|
([UIxUserRightsEditor -_initRights]): take the new SOGoObject's
|
|
"defaultUserID" method into account.
|
|
|
|
* UI/MailerUI/UIxMailUserRightsEditor.m: added all the missing
|
|
methods to support the IMAP acls mentionned in the RFC 4314,
|
|
removed the ones specific to Cyrus.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -defaultUserID]): new
|
|
mandatory method for subclasses. Removed the SOGoDefaultUserID
|
|
global var.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -defaultUserID]):
|
|
overriden method to return @"<default>".
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-defaultUserID]): overriden method to return @"<default>".
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m ([SOGoMailFolder
|
|
-aclsForUser:uid]): overriden method.
|
|
([SOGoMailFolder -removeAclsForUsers:users]): overriden method.
|
|
([SOGoMailFolder -setRoles:rolesforUser:uid]): overriden method.
|
|
([SOGoMailFolder -defaultUserID]): overriden method.
|
|
([SOGoMailFolder -hasSupportForDefaultRoles]): overriden method.
|
|
|
|
2007-05-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
|
|
-aclUsersForObjectAtPath:objectPathArray]): new method that being
|
|
forwarded the calles to aclUsers for the GCS-based subclasses of
|
|
SOGoObject.
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m: removed all the previous
|
|
methods that would have been used to support IMAP acls. Replaced
|
|
them with the new protocol for them that has been implemented in
|
|
SOGo during the last few weeks.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-hasSupportForDefaultRoles]): override method by returning "YES".
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m ([NSMutableArray
|
|
-addObjectUniquely:object]): new method with an explicit name.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -aclUsers]): renamed
|
|
"acl" to "aclUsers". Now designed to return only the uid of the
|
|
users involved in an ACL.
|
|
([SOGoObject -hasSupportForDefaultRoles]): new method returning
|
|
"NO" by default. To indicate to the acl editor that we don't want
|
|
to handle a default user.
|
|
|
|
* SoObjects/SOGo/SOGoPermissions.[hm]: added the
|
|
SOGoRole_ObjectReader, SOGoRole_Folder*, and SOGoMailRole_*
|
|
symbols.
|
|
|
|
* UI/MailerUI/UIxMailUserRightsEditor.[hm]: new class module that
|
|
provides a view to the IMAP acls.
|
|
|
|
* UI/MailerUI/UIxMailFolderACLEditor.m: removed obsolete module.
|
|
|
|
* UI/WebServerResources/MailerUI.js: replaced all invocations of
|
|
addEventListener to the use of prototype's Event object. Also,
|
|
configured all menus programmatically following descriptions lists
|
|
containing their callbacks, or nulls, submenus id or separators.
|
|
|
|
2007-05-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Common/UIxObjectActions.m ([UIxObjectActions
|
|
-addUserInAclsAction]): save the previous roles of the user
|
|
(unlikely) or the default roles, or None instead of saving the
|
|
roles that should appear the first time in the role editor when no
|
|
default has been set...
|
|
|
|
* SoObjects/SOGo/SOGoObject.m: defined a new constant
|
|
"SOGoDefaultUserID".
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
|
|
-setRoles:rolesforUser:uidforObjectAtPath:objectPathArray]):
|
|
ignore the "AuthorizedSubscriber" role and add the "None" role
|
|
when no other role is found.
|
|
|
|
* UI/Common/UIxAclEditor.m: added a button for the new default
|
|
user roles feature.
|
|
|
|
* UI/Common/UIxUserRightsEditor.m ([UIxUserRightsEditor
|
|
-_initRights]): don't take the "None" role into account when
|
|
initializing the list of current roles.
|
|
|
|
* SoObjects/SOGo/SOGoPermissions.m: added a new void role
|
|
"SOGoRole_None".
|
|
|
|
2007-05-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m ([NSString
|
|
-_rangeOfURLInRange:refRange]): urls cannot end with "&" nor "=".
|
|
There is no need to subscract the start from the length if a space
|
|
is not found since the range has not changed either. Finally, the
|
|
first character before the url might also be a tab or a cr, so we
|
|
match it against the "urlAfterEndingChars" custom NSCharacterSet.
|
|
([NSString -stringByDetectingURLs]): modified to handle email
|
|
addresses and add a correct "mailto:" link.
|
|
|
|
2007-05-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -fetchContentObjectNames]): override
|
|
method to return the events in the range of 2 weeks ago up to 4
|
|
weeks from "now".
|
|
|
|
* UI/MailPartViewers/UIxMailPartTextViewer.m
|
|
([UIxMailPartTextViewer -flatContentAsString]): use the new
|
|
"stringByDetectingURLs" method to offer clickable urls.
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m ([NSString
|
|
-stringByDetectingURLs]): this new method replaces passive URLS
|
|
with active ones for HTML resolution of the text.
|
|
|
|
2007-05-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([NSString
|
|
-asQPSubjectString:encoding]): simplified method.
|
|
The headers indicates "utf-8" again thank to our fix in
|
|
sope-mime.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m: fail to build if libFoundation is
|
|
being used.
|
|
|
|
2007-05-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Common/UIxObjectActions.m ([UIxObjectActions
|
|
-removeUserFromAclsAction]): implemented this method which was
|
|
missing and is required to remove users from ACLs.
|
|
|
|
* UI/Common/UIxFolderActions.m ([UIxFolderActions
|
|
-subscribeAction]): folderDict was not autoreleased, resulting in
|
|
a leak...
|
|
|
|
* SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
|
|
-primaryFetchProfile]): when building with libFoundation, don't
|
|
use the "propertyList" method from NSString. Rather, we convert
|
|
the string to an NSData instance and passit as parameter to
|
|
NSDeserializer. This way, we obtain a mutable dictionary rather
|
|
than an immutable one.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([SOGoDraftObject -bodyPartForText])
|
|
([SOGoDraftObject -mimeMessageForContentWithHeaderMap:]): use the
|
|
constant string "contentTypeValue".
|
|
contentTypeValue is now set back to iso-8859-1 since NGMime
|
|
converts extracts the data in that encoding.
|
|
|
|
2007-05-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/LDAPSource.m ([LDAPSource
|
|
-checkLogin:loginToCheckandPassword:passwordToCheck]): if a
|
|
"bindFields" value is present in the user defaults, use the
|
|
specified fields to find the dn of the user to bind.
|
|
([LDAPSource -allEntryIDs])
|
|
([LDAPSource -fetchContactsMatching:match])
|
|
([LDAPSource -lookupContactEntry:entryID])
|
|
([LDAPSource -lookupContactEntryWithUIDorEmail:uid]):
|
|
bind and unbind the connection on each request.
|
|
|
|
* UI/MailerUI/UIxMailAddressbook.m: removed obsolete module.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-contactSearchAction]): simplified method to use the facilities
|
|
provided by the LDAPUserManager. No longer takes care of the
|
|
"ldap-only" url parameter since all requests are handled by the
|
|
usermanager now.
|
|
|
|
* SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
|
|
-primaryFetchProfile]): check that the value returned is not null
|
|
before interpreting it.
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.m ([LDAPUserManager
|
|
-contactInfosForUserWithUIDorEmail:uid]): check that uid is not empty.
|
|
([LDAPUserManager -_fillContactMailRecords:contact]): if the
|
|
system email is already present, remove it before adding it.
|
|
|
|
* SoObjects/SOGo/LDAPSource.m ([LDAPSource
|
|
-checkLogin:loginToCheckandPassword:passwordToCheck]): check that
|
|
loginToCheck is not empty.
|
|
([LDAPSource -fetchContactsMatching:match]): check that match is
|
|
not empty.
|
|
([LDAPSource -lookupContactEntry:entryID]): check that entryID is
|
|
not empty.
|
|
([LDAPSource -lookupContactEntryWithUIDorEmail:uid]): check that
|
|
uid is not empty.
|
|
|
|
2007-05-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -primaryEmail]): new name
|
|
for "mail" method.
|
|
([SOGoUser -systemEmail]): returns the email formed from the
|
|
username and the default mail domain.
|
|
([SOGoUser -hasEmail:email]): test whether the user has the
|
|
specified email, in a case-insensitive way.
|
|
|
|
* SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
|
|
-LDAPCheckLogin:_loginpassword:_pwd]): use the user manager to
|
|
check login information.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder
|
|
+contactFolderWithName:aNameandDisplayName:aDisplayNameinContainer:aContainer]):
|
|
no longer manage LDAP connections. The requests are forwarded to
|
|
the relevant LDAPSource instead.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
|
|
-appendSystemSources]): pass LDAPSource objects to
|
|
SOGoContactLDAPFolder instances.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m: extract the raw email
|
|
address of the "from" field before sending the message. Otherwise,
|
|
sending the mail won't work.
|
|
|
|
* UI/MailerUI/UIxMailEditor.m ([UIxMailEditor -fromEMails]):
|
|
rewrote this method to request all the available email identities
|
|
for the current user. Also, the from field also contains the full
|
|
name of the user, not just his/her email address.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -iCalPersonWithUID:uid]): new method taken
|
|
from the previous module iCalEntityObject+Agenor.
|
|
([SOGoCalendarComponent -getUIDForICalPerson:person]): idem.
|
|
([SOGoCalendarComponent -getUIDsForICalPersons:iCalPersons]):
|
|
idem.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDIFEntry.[hm]: new class module
|
|
replacing the SOGoContactLDAPEntry module. It was renamed as such
|
|
because it now receives a dictionary instead of an NGLdapEntry.
|
|
It thus can now handle data from any source of LDIF data, not
|
|
only coming from LDAP.
|
|
|
|
* SoObjects/SOGo/LDAPUserManager.[hm]: new class module
|
|
implementing most of what used to be the AgenorUserManager class.
|
|
The difference is that users are cached in the forme of
|
|
dictionaries and many sources are used. Also, it can be used to
|
|
search LDAP contacts.
|
|
|
|
* SoObjects/SOGo/LDAPSource.[hm]: new class module implementing
|
|
the concept of "ldap source", to be used by all the classes
|
|
needing access to LDAP-provided information: addressbooks and the
|
|
user manager. Most the method thereing are transcriptions of
|
|
methods previously found in SOGoContactLDAPFolder. It also contain
|
|
utility methods for user matching and authentification.
|
|
|
|
* SoObjects/Appointments/iCalEntityObject+Agenor.[hm]: removed
|
|
module, rendered useless by code refactoring.
|
|
|
|
* SoObjects/SOGo/AgenorUserManager.[hm]: removed module, replaced
|
|
with the freshly written "LDAPUserManager".
|
|
|
|
2007-05-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.[hm]: renamed to
|
|
SOGOContactLDIFEntry.
|
|
|
|
* SoObjects/Contacts/NGLdapEntry+Contact.[hm]: removed class
|
|
module, obsoleted by code in SOGo/LDAPSource.[hm].
|
|
|
|
2007-05-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Common/UIxAclEditor.m ([UIxAclEditor -currentUserIsOwner]):
|
|
new method with an explicit name.
|
|
|
|
2007-05-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -isOrganizerOrOwner:user]): new method
|
|
replacing "isOrganizer:orOwner:" by taking only one instance of
|
|
SOGoUser as parameter.
|
|
([SOGoCalendarComponent -participant:user]): new method replacing
|
|
the previous "isParticipant" boolean method by returning the first
|
|
participant matching the user passed as parameter. This method is
|
|
used so that both the regular email address and the "system email
|
|
address" of the user are matched against the participants emails.
|
|
|
|
* SoObjects/SOGo/AgenorUserManager.m ([AgenorUserManager
|
|
-getSystemEMailForUID:uid]): new method that returns the email
|
|
formed with the user's uid and the default mail domain.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -rolesOfUser:login]): removed method that
|
|
was previously commented out.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -systemEmail]): new method
|
|
forwared to [AgenorUserManager getSystemEmailForUID:].
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-toolbar]): method replacing the one with the same name in the
|
|
task and appointment editor classes. This method makes also use of
|
|
the new method "isOrganizerOrOwner:" and "participant:" in
|
|
SOGoCalendarComponent.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-toolbar]): removed method, replaced with a method with the same
|
|
name in UIxComponentEditor.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -toolbar]): removed
|
|
method, replaced with a method with the same name in
|
|
UIxComponentEditor.
|
|
|
|
* SoObjects/SOGo/AgenorUserDefaults.m ([AgenorUserDefaults
|
|
-primaryFetchProfile]): the values returned from the database are
|
|
converted to a put dictionary first, since the dictionary returned
|
|
is actually an immutable one, which can cause a crash afterwards.
|
|
|
|
2007-04-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoPermissions.m: added "SOGoRole_ObjectViewer"
|
|
and "SOGoRole_ObjectEditor".
|
|
|
|
* UI/Common/UIxUserRightsEditor.m ([UIxUserRightsEditor
|
|
-prepareRightsForm]): this method is no longer mandatory.
|
|
|
|
* UI/Contacts/UIxContactsUserRightsEditor.m
|
|
([UIxContactsUserRightsEditor
|
|
-setUserCanCreateObjects:userCanCreateObjects]): new subclass
|
|
module to handle acls related to the address books. Partial
|
|
implementation.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
|
|
-setRoles:rolesforUser:uidforObjectAtPath:objectPathArray]): cache
|
|
newly set roles.
|
|
([SOGoFolder
|
|
-removeAclsForUsers:usersforObjectAtPath:objectPathArray]): remove
|
|
specified roles from cache.
|
|
([SOGoFolder -aclsForUser:uidforObjectAtPath:objectPathArray]):
|
|
put resulting roles in cache.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -init]): do not invoke
|
|
initWithName:inContainer:. Instead, directly initialize the ivars
|
|
as it is supposed to be to avoid an infinite loop whenever one of
|
|
those two methods are overriden.
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([-rolesOfUser:login]):
|
|
removed method.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
-aclsForUser:uid]): override method so that SOGo won't crash when
|
|
loading the contact card.
|
|
|
|
2007-04-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -_privacySqlString]): the string for the
|
|
"freebusy" special user should only require opaque elements.
|
|
|
|
2007-04-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -davResourceType]): fixed a problem with
|
|
our double declaration where the resulting XML would be screwed.
|
|
There is only one collection per namespace.
|
|
|
|
* SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate
|
|
rfc822DateString]): new method that returns a string conform to
|
|
rfc 822 and suitable for email headers.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m: invoke the new
|
|
"rfc822DateString" category method on the date we put in the
|
|
header.
|
|
|
|
2007-04-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Common/UIxUserRightsEditor.m ([UIxUserRightsEditor -defaultAction])
|
|
([UIxUserRightsEditor -saveUserRightsAction]): new action methods
|
|
which should never be overriden.
|
|
([UIxUserRightsEditor -appendRight:newRight])
|
|
([UIxUserRightsEditor -removeRight:right])
|
|
([UIxUserRightsEditor -appendExclusiveRight:newRightfromList:list])
|
|
([UIxUserRightsEditor -removeAllRightsFromList:list]): new utility
|
|
methods that can be used by the subclasses.
|
|
([UIxUserRightsEditor -prepareRightsForm]): new method that should
|
|
mandatorily be overriden to prepare the elements of the subclassed
|
|
form.
|
|
([UIxUserRightsEditor -updateRights]): new method that should
|
|
mandatorily be overriden to update the user rights from the
|
|
elements of the subclassed form.
|
|
|
|
* UI/Common/UIxAclEditor.m ([UIxAclEditor -_prepareUsers]): we
|
|
check if the uid is already listed before adding it to our array.
|
|
This is because the acl table can contain more than one record per
|
|
user/object relationship.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
|
|
-setRoles:rolesforUser:uidforObjectAtPath:objectPathArray]): the
|
|
"roles" parameter is now an NSArray instead of a string. Therefore
|
|
we loop throughout the array to populate the table. All the
|
|
relevant records are removed prior to the addition of the new
|
|
rights.
|
|
|
|
* SoObjects/Mailer/SOGoMailBaseObject.m ([SOGoMailBaseObject
|
|
-aclsForUser:uid]): new override that returns nil until we add
|
|
support for IMAP acls.
|
|
|
|
* SoObjects/Mailer/SOGoMailAccounts.m
|
|
([SOGoMailAccounts -aclsForUser:uid]): same as below.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder -aclsForUser:uid]): same as below.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
|
|
-aclsForUser:uid]): override this method which will always return
|
|
nil.
|
|
|
|
* SoObjects/SOGo/SOGoPermissions.[hm]: added
|
|
[Public,Private,Confidential]
|
|
x[Viewer,DAndTViewer,Responder,Modifier]. Renamed
|
|
SOGoRole_ORganizer to SOGoCalendarRole_Organizer. Same for
|
|
..._Participant. Removed SOGoRole_Assistant and SOGoRole_Delegate.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -defaultAclRoles]): new overriden method
|
|
that defines default roles for new elements in the acl.
|
|
|
|
* UI/Scheduler/UIxCalUserRightsEditor.[hm]: new component class
|
|
module and subclass of UIxUserRightsEditor specific to the
|
|
handling of user rights on calendar folders.
|
|
|
|
2007-04-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -groupDavResourceType]): return both
|
|
"vevent-collection" and "vtodo-collection".
|
|
|
|
* UI/Common/UIxUserRightsEditor.[hm]: new template class module
|
|
that implements the detailed editor of user rights per-object.
|
|
|
|
2007-04-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
-rolesForObject:objectinContext:context]): no longer query objects
|
|
for "roleForUser:". Instead, all objects should implement
|
|
"rolesForUser:".
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject -acls]):
|
|
new method to comply with the new acl "protocol" in SOGoObject.
|
|
Uses SOGoFolder's new facilities for ACLS.
|
|
([SOGoContentObject -aclsForUser:uid]): idem.
|
|
([SOGoContentObject -setRoles:rolesforUser:uid]): idem.
|
|
([SOGoContentObject -removeAclsForUsers:users]): idem.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
|
|
-aclsForObjectAtPath:objectPathArray]): new method generic to GCS
|
|
based folders. This method is derived from the code that was in
|
|
UIxAclFolder before its removal.
|
|
([SOGoFolder -aclsForUser:uidforObjectAtPath:objectPathArray]):
|
|
idem.
|
|
([SOGoFolder
|
|
-removeAclsForUsers:usersforObjectAtPath:objectPathArray]): idem.
|
|
([SOGoFolder
|
|
-setRoles:rolesforUser:uidforObjectAtPath:objectPathArray]): idem.
|
|
([SOGoFolder -setRoleForUsers:uidsto:role])
|
|
([SOGoFolder -setRoleForUsers:uidsto:role]): removed method.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -acls]): stub method
|
|
that requires overriding by subclasses.
|
|
([SOGoObject -aclsForUser:uid]): idem.
|
|
([SOGoObject -defaultAclRoles]): idem.
|
|
([SOGoObject -setRoles:rolesforUser:uid]): idem.
|
|
([SOGoObject -removeAclsForUsers:users]): idem.
|
|
|
|
* UI/Common/UIxObjectActions.m: new module implementing the web
|
|
actions common to SOGoObject and all its subclasses.
|
|
([UIxObjectActions -addUserInAclsAction]): new method that adds a
|
|
user with the clientObject defaults user rights to the object's
|
|
acl.
|
|
|
|
* UI/Common/UIxAclEditor.m: modified module so as to simplify it
|
|
to the point where it will only list the users (and their name)
|
|
associated with an object acl.
|
|
|
|
* SoObjects/SOGo/SOGoAclsFolder.m: removed module because its
|
|
methods have been moved into SOGoObject and SOGoFolder during a
|
|
refactoring.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-iCalParticipantsAndResourcesStringFromQueryParameters]): removed
|
|
method made useless by the programmatic handling of iCalendar
|
|
objects.
|
|
([UIxComponentEditor -iCalParticipantsStringFromQueryParameters]): idem.
|
|
([UIxComponentEditor -iCalResourcesStringFromQueryParameters]): idem.
|
|
([UIxComponentEditor -iCalStringFromQueryParameter:_qpformat:_format]): idem.
|
|
|
|
* UI/WebServerResources/MailerUI.js (initDnd): enable drag and
|
|
drop on all folder nodes, not just on leaves.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder
|
|
-lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]): request field "uid" when doing a search.
|
|
|
|
2007-04-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Main/SOGo.m ([SOGo +initialize]): on GNUstep, trigger some
|
|
debugging facilities when the SOGoDebugObjectAllocation user
|
|
default is set.
|
|
|
|
2007-04-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.m ([NSString -boolValue]): new
|
|
method that SOGo will need with non-gnustep Foundation
|
|
implementation.
|
|
([NSString -stringByAppendingPathComponent:component]): new method
|
|
that SOGo will need when building with libFoundation. Method
|
|
removed later since it is available from
|
|
Foundation/NSPathUtilities.h.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -timeZone]): method moved
|
|
from SOGoObject.m.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m: new ivar "context" that permits
|
|
every subclass to access [WOApplication context] without having to
|
|
invoke it more than once.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -changeParticipationStatus:_status]):
|
|
moved method from SOGoTaskObject and SOGoAppointmentObject up to
|
|
their parent class.
|
|
|
|
* UI/Scheduler/UIxCalSelectTab.m: removed module.
|
|
|
|
2007-04-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry
|
|
-vCard]): test the prefix of the card in a case-independent way.
|
|
|
|
* OGoContentStore/OCSContactFieldExtractor.m
|
|
([OCSContactFieldExtractor
|
|
-extractQuickFieldsFromContent:content]): we no longer accept
|
|
records in a format other than versit vCard so we can get rid of a
|
|
lot of code.
|
|
|
|
2007-04-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactsListView.m ([UIxContactsListView
|
|
-selectorComponentClass]): restored method.
|
|
|
|
2007-04-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalTasksListView.m ([UIxCalTasksListView
|
|
-shouldDisplayCurrentTask]): the current task is not displayed if
|
|
it is NOT completed or if the "showCompletedTasks" flag is set.
|
|
The logic was inverted in Lightning and is now in SOGo too.
|
|
|
|
2007-04-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactView.m ([UIxContactView -workUrl]): we
|
|
want the "work" url instead of the "home".
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor
|
|
-_saveSnapshot]): save url values from snapshot.
|
|
([UIxContactEditor -initSnapshot]): load url values from snapshot.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-calendarList]): new method replacing "availableCalendars".
|
|
|
|
* UI/Scheduler/UIxCalendarSelector.m ([UIxCalendarSelector
|
|
-calendarFolders]): we now take the list of subscribed calendar
|
|
from the container.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -calendarFoldersInContext:context]): new
|
|
method derived from and replacing [UIxCalView calendarFolders].
|
|
|
|
2007-03-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-toManyRelationshipKeys]): don't put the predefined folders in the
|
|
list if they are returned by the server.
|
|
|
|
* UI/MailerUI/UIxMailTree.m ([UIxMailTree -flattenedNodes]): we no
|
|
longer store the "flattenedBlocks" in a dictionary since the
|
|
object will be deleted anyway and we don't need to put the folders
|
|
in cache.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
([UIxMailPartHTMLViewer -_attachmentIds]): take the current
|
|
attachment path into account when computing the part urls.
|
|
|
|
2007-03-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.m
|
|
([UIxContactsListViewContainer -additionalFolders]): take the list
|
|
of subscribed folders from the new property list used for the user
|
|
settings. The value of its key is SubscribedFolders for the
|
|
dictionary entry named "Contacts".
|
|
|
|
* UI/Contacts/UIxContactsListView.m ([UIxContactsListView
|
|
-canAccessContentAction]): new method to override the one from
|
|
UIxFoldersActions by taking into account the fact that, this time,
|
|
the clientObject is an ldap folder. Removed many method that used
|
|
to be related to the handling of the user selector.
|
|
|
|
* UI/Scheduler/UIxCalDayView.m: commented out many unused methods
|
|
to make sure they can be removed.
|
|
|
|
* UI/Scheduler/UIxCalView.m ([UIxCalView -_setupCalendarFolders]):
|
|
populate the calendar entries based on the user settings plist.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-selectForMailerAction]): restored method.
|
|
|
|
* UI/Scheduler/UIxCalendarSelector.m: new template module derived
|
|
from a simplified version of the old UIxContactEditor (removed).
|
|
|
|
* UI/Contacts/UIxContactsUserFolders.m: new template module for
|
|
selecting users or user folders through an LDAP search of which
|
|
the results are displayed as a tree.
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js: moved previous generic
|
|
method "onContactAdd" here since the Mailer is now the only module
|
|
to use it when composing emails.
|
|
|
|
* UI/WebServerResources/generic.js: added code for handling the
|
|
new scheme used for describing SOGo folders, common code to handle
|
|
folder addition or removal.
|
|
|
|
* UI/Common/UIxFolderActions.m ([UIxFolderActions
|
|
-activateFolderAction]): new method that change the "active"
|
|
settings in the folder-related fields in the user settings.
|
|
([UIxFolderActions -deactivateFolderAction]): see above.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-checkRightsAction]): removed method.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-updateAdditionalAddressBooksAction]): removed method.
|
|
|
|
* UI/Scheduler/UIxCalMainView.m ([UIxCalMainView
|
|
-updateCalendarsAction]): removed method.
|
|
|
|
2007-03-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMainView.m ([UIxCalMainView
|
|
-checkRightsAction]): removed method.
|
|
|
|
* UI/Common/UIxFolderActions.m ([UIxFolderActions
|
|
-canAccessContentAction]): new method designed to replace
|
|
[UIxCalMainView checkRightsAction] in a more universal way.
|
|
|
|
2007-03-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
|
|
-roleOfUser:uidinContext:context]): take all the subkeys into
|
|
account, not only the "personal" folder.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-takeValuesFromRequest:_rqinContext:_ctx]): append a "uid" field
|
|
to the new components.
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -userSettings]): new method
|
|
(see below).
|
|
|
|
* SoObjects/SOGo/AgenorUserManager.m ([AgenorUserManager
|
|
-getUserDefaultsForUID:uid]): rewrote method to use the "defaults"
|
|
field of the sogo_user_profile table, where the user-customizable
|
|
changes will be saved.
|
|
([AgenorUserManager -getUserSettingsForUID:uid]): new method
|
|
similar to the one above, using the "settings" field where the
|
|
automatic settings will be saved.
|
|
|
|
* SoObjects/SOGo/AgenorUserDefaults.m: rewrote a big part of the
|
|
module to bind the userdefaults to a property list contained in a
|
|
specified field of the sogo_user_profile table.
|
|
([AgenorUserDefaults
|
|
-initWithTableURL:tableURLuid:userIDfieldName:defaultsFieldName]):
|
|
added a "fieldName" parameter.
|
|
|
|
* UI/Common/UIxFolderActions.m: new module implementing web
|
|
actions common to all GCS-based folders.
|
|
|
|
2007-03-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable -labelForDay]):
|
|
put a carriage return after the day name.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage
|
|
-readFreeBusyAction]): restored method.
|
|
|
|
2007-03-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage
|
|
-defaultAction]): remade module to redirect automatically to the
|
|
Calendar url.
|
|
|
|
* SoObjects/Contacts/NSDictionary+Contact.m: removed module.
|
|
|
|
2007-03-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactsListView.m ([UIxContactsListView
|
|
-deleteAction]): new web method to delete personal addressbook
|
|
folders.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-delete]): override method to refuse the deletion of the folder if
|
|
its nameInContainer is "personal".
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -delete]): new method
|
|
that forwards the deletion request to the folder manager.
|
|
|
|
2007-03-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxAttendeesEditor.m ([UIxAttendeesEditor
|
|
-zoomList]): new method that returns the list of available zoom factors.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor
|
|
-changeStatusAction]): rewrote method.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-_handleAttendeesEdition]): make sure "attendeesNames" has a
|
|
length > 0 before computing the attendees. Otherwise there will be
|
|
an invalid empty entry.
|
|
([UIxComponentEditor -_handleOrganizer]): new method that adds the
|
|
organizer when there are attendees and remove it when the
|
|
attendees are removed.
|
|
|
|
2007-03-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxAttendeesEditor.m): new component.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m: no longer a superclass for
|
|
the task and appointment editors. Now a container component
|
|
handling the common elements of tasks and events.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m: same as below.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m: rewrote template. No longer
|
|
a subclass of UIxComponentEditor but a subcomponent of it.
|
|
|
|
* UI/Common/UIxToolbar.m ([UIxToolbar -toolbarConfig]): the
|
|
toolbar can have the special value "none" to indicate there is
|
|
none attached to the window.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -isOrganizer:emailorOwner:login]): new
|
|
method.
|
|
([SOGoCalendarComponent -isParticipant:email]): new method.
|
|
([SOGoCalendarComponent -calendar:create]): takes one parameter
|
|
"create" which is a boolean indicating whether we want to create
|
|
the calendar if it does not exist.
|
|
|
|
2007-03-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMonthView.m: changed view to use divs instead
|
|
of a table, the same way the dayly and weekly views have been for
|
|
a few months now.
|
|
|
|
2007-02-09 Helge Hess <helge.hess@opengroupware.org>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m: added CalDAV
|
|
resourcetype
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m: added davCalendarHomeSet CalDAV
|
|
property to point at the user folder
|
|
|
|
2007-03-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
|
|
-userInContext:]): returns "SOGoUser".
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -contentAsString]): overriden method that
|
|
takes the privacy into account and discard the relevant fields if
|
|
needed by generating a new content string and caching it.
|
|
([SOGoCalendarComponent
|
|
-saveContentString:contentStringbaseVersion:baseVersion]): if the
|
|
new method above has cached a content string, release it and set
|
|
it to nil so that it will have to be regenerated in the case it is
|
|
requested further.
|
|
([SOGoCalendarComponent -_filterPrivateComponent:component]):
|
|
discard the fields that have to be hidden when the card is
|
|
private.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-appendObject:objectwithBaseURL:baseURLtoREPORTResponse:r]): make
|
|
sure the cards are now handled as instances of
|
|
SOGoCalendarComponent instead of SOGoContentObject so that their
|
|
content string is taking the privacy classifiction into account.
|
|
([SOGoAppointmentFolder -_privacySqlString]): new method that
|
|
generates a query to determine what information can be given and
|
|
if the card itself has to be shown.
|
|
|
|
* UI/Scheduler/UIxComponent+Agenor.m ([UIxComponent
|
|
-getICalPersonsFromValue:selectorValue]): removed useless
|
|
"isAccessRestricted" method.
|
|
|
|
* UI/Scheduler/UIxCalInlineAptView.m ([UIxCalInlineAptView
|
|
-setStyle:_style]): test whether the values of orgmail and
|
|
partmails are null before manipulating them, otherwise SOGo sends
|
|
a "rangeOfString:" message to an NSNull, which makes it crashes.
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
|
|
-extractQuickFieldsFromEvent:_event]): we now use the new
|
|
"symbolicAccessClass" method from iCalEntity to determine the
|
|
value of the "classifiction" field.
|
|
([OCSiCalFieldExtractor -extractQuickFieldsFromTodo:_task]): same
|
|
as above.
|
|
|
|
2007-03-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchCoreInfosFrom:_startDateto:_endDatecomponent:_component]):
|
|
see below, the query is adapted consequently.
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
|
|
-extractQuickFieldsFromTodo:_task]): the field "ispublic" was
|
|
renamed to "classification" and can any integer as value.
|
|
([OCSiCalFieldExtractor -extractQuickFieldsFromEvent:_event]):
|
|
idem.
|
|
|
|
2007-02-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
|
([_UIxHTMLMailContentHandler -_appendStyle:_charslength:_len]):
|
|
don't prepend anything to the class and id named. Instead, we
|
|
make each style embedded in the ".SOGoHTMLMail-CSS-Delimiter"
|
|
class.
|
|
|
|
2007-02-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoContentObject.m ([SOGoContentObject
|
|
-rolesOfUser:logininContext:context]): if object does not exists
|
|
(for example when it's being created), the current user has the
|
|
same rights on it than he/she has on its parent container.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder
|
|
-nameExistsInFolder:objectName]): methods that tests if a c_name
|
|
corresponding to the name passed as parameter is present in the db
|
|
folder.
|
|
|
|
2007-02-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
|
|
-rolesForObject:objectinContext:context]): test for
|
|
"rolesOfUser:inContext:" in addition to "roleOfUser:...".
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -rolesOfUser:logininContext:context]):
|
|
returns the roles of the user on the container object if the event
|
|
is uncreated.
|
|
|
|
2007-02-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailPartViewers/UIxMailRenderingContext.m: returns the
|
|
alternativeViewer a multipart/related message is being handled.
|
|
|
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m: reimplemented module
|
|
from scratch.
|
|
|
|
* UI/MailPartViewers/UIxMailPartAlternativeViewer.m: select the
|
|
text/html component before text/plain.
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-addRequiredKeysOfStructure:path:toArray:recurse:]): accepts the
|
|
fetching of HTML parts.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -componentTag]): new template method that
|
|
returns the vcalendar tag of the current object.
|
|
([SOGoCalendarComponent -component]): new method that returns the
|
|
first object matching [self componentTag] within the current
|
|
calendar object. This method replaces 'firstEventInCalendar:' as
|
|
well as "firstTaskInCalendar:".
|
|
([SOGoCalendarComponent -roleOfUser:logininContext:context]):
|
|
moved method from SOGoAppointmentObject.m.
|
|
|
|
2007-02-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMulticolumnDayView.[hm]: new daily view
|
|
module which shows each selected user's calendar in a different
|
|
column instead of mixing their events together.
|
|
|
|
* UI/Scheduler/UIxCalView.m ([UIxCalView -redirectForUIDsAction]):
|
|
replaced use of [NSString stringByTrimmingWhiteSpaces] with
|
|
[NSString stringByTrimmingSpaces].
|
|
|
|
* UI/MailPartViewers/UIxMailPartICalViewer.m: request the key
|
|
"cnWithoutQuotes" instead of "cnForDisplay", which no longer
|
|
exists.
|
|
|
|
* UI/Scheduler/UIxCalDayOverview.m,
|
|
UI/Scheduler/UIxCalDayChartview.m,
|
|
UI/Scheduler/UIxCalDayListview.m,
|
|
UI/Scheduler/UIxCalWeekOverview.m,
|
|
UI/Scheduler/UIxCalWeekChartview.m,
|
|
UI/Scheduler/UIxCalWeekListview.m,
|
|
UI/Scheduler/UIxCalInlineMonthOverview.m,
|
|
UI/Scheduler/UIxCalYearOverview.m: removed unused modules.
|
|
|
|
2007-02-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
|
|
-appendPersonalSourcesInContext:context]): release connectoin
|
|
channel when everything is done.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-newAbAction]): new action method to crate a new contact folder
|
|
from the web UI.
|
|
|
|
* SoObjects/SOGo/SOGoFolder.m ([SOGoFolder -create]): new method
|
|
that requests the folder manager to create a folder table with the
|
|
specified type at the specified path. The type is taken from [self
|
|
folderType].
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-folderType]): implemented.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -folderType]): implemented.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
|
|
-appendPersonalSourcesInContext:context]): we now fetch all
|
|
folders with type "Contact" that belong to the current user.
|
|
([SOGoContactFolders -newFolderWithName:name]): new method to
|
|
create a new contact folder.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -userFolderPath]): treat
|
|
resulting url with [NSString+Utilities hostlessURL] instead of
|
|
using NSURL. This is because the url in question sometimes has a
|
|
hostname and sometimes not. "hostlessURL" ensure the hostname is
|
|
removed anyway.
|
|
([UIxComponent -applicationPath]): same as above.
|
|
|
|
2007-02-08 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailFolder.m: priorize the lookup of
|
|
folders before doing the one on messages.
|
|
|
|
2007-02-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m: added an implementation of
|
|
makeObjectsPerform:withObject:withObject: for GNUstep
|
|
compatibility.
|
|
|
|
* OGoContentStore/GNUmakefile, Protocols/common.make,
|
|
SoObjects/common.make, UI/common.make: install in
|
|
GNUSTEP_INSTALLATION_DIR instead of GNUSTEP_USER_DIR.
|
|
|
|
2007-02-07 Ludovic Marcotte <ludovic@inverse.ca>
|
|
|
|
* UI/Scheduler/English.lproj/Localizable.strings: fixed typo for
|
|
"Agendas"
|
|
|
|
2007-02-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailTree.m ([UIxMailTree
|
|
-getTitle:folderType:andIcon:forObject:]): disabled Sieve folders
|
|
for the moment.
|
|
|
|
* SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
|
|
-checkLogin:_loginpassword:_pwd]): fixed a bug where a wrong
|
|
password would be accepted anyway as long as its length was > 0.
|
|
This can be the case ONLY when LDAP is disabled otherwise we have
|
|
a serious security issue...
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -roleOfUser:logininContext:context]): if a
|
|
user is not an organizer nor a participant, he is declared as
|
|
"Owner" if he owns the calendar the entry where the entry is
|
|
contained. Other cases should not be possible.
|
|
|
|
2007-02-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactEditor.m: display and handle the new
|
|
Freebusy URL entry.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder -_searchAttributes]): retrieve "calFBURL"
|
|
from the server.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
-vCard]): put the LDAP "calFBURL" field in the vCard's "FBURL"
|
|
entry.
|
|
|
|
2007-01-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
|
([SOGoCalendarComponent -sendEMailNotifications]): new method that
|
|
returns the value of ud "SOGoAppointmentSendEMailNotifications"
|
|
(iMIP/iTIP).
|
|
([SOGoCalendarComponent
|
|
-sendEMailUsingTemplateNamed:_pageNameforOldObject:_oldObjectandNewObject:_newObjecttoAttendees:_attendees]): method moved from SOGoAppointmentObject/SOGoTaskObject, replacing occurences of "appointment" to "object" in its name.
|
|
|
|
2007-01-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
|
-defaultAction]): invoke "flushMailCaches" on [self clientObject]
|
|
so that the mailbox cache is refreshed everytime the user presses
|
|
on "get mail". I doubt a mailbox cache really is useful in general
|
|
anyway.
|
|
|
|
2007-01-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
|
|
-userInContext:]): if the lookup is on "freebusy.ifb" and the
|
|
username is "anonymous" the user is automatically set to
|
|
"freebusy".
|
|
|
|
2007-01-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
|
|
-checkLogin:_loginpassword:_pwd]): authorize special "freebusy"
|
|
user with password "freebusy".
|
|
|
|
* SoObjects/Appointments/SOGoFreeBusyObject.m ([SOGoFreeBusyObject
|
|
-contentAsString]): the default timerange is now 14 days before
|
|
currentday and 1 month after.
|
|
|
|
2007-01-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-appendObject:objectwithBaseURL:baseURLtoREPORTResponse:r]):
|
|
escape the record string in a way suitable with XML encoding.
|
|
|
|
2007-01-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: fixed a bug where the
|
|
calendar view would not be updated properly.
|
|
|
|
2007-01-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-newStartDate]): fix the handling of the component start date
|
|
depending on the "hm" and the "day" parameters.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-roleOfUser:uidinContext:context]): set role of current user to
|
|
"Assistant" if the object that is accessed is "freebusy.ifb".
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -lookupCalendarFolderForUID:uid]): method
|
|
moved from UI/Scheduler/UIxCalView:calendarFolderForUID:.
|
|
([SOGoAppointmentFolder
|
|
-lookupCalendarFoldersForUIDs:_uidsinContext:]): now use the new
|
|
lookupCalendarFolderForUID: method, which doesn't do security
|
|
checks.
|
|
|
|
2007-01-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Common/UIxAclEditor.m ([UIxAclEditor -assistantsValue]): new
|
|
accessor that returns the comma-separated list of users with role
|
|
"Assistant".
|
|
([UIxAclEditor -delegatesValue]): same as above for "Delegate".
|
|
([UIxAclEditor -_prepareUsers]): there is no longer a concept of
|
|
"checkedUsers". Instead, each user is either classified in the
|
|
list of assistants or the list of delegates.
|
|
|
|
2006-12-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m ([UIxMailMainFrame
|
|
-composeAction]): method imported from removed container modules.
|
|
([UIxMailMainFrame -mailFolderName]): method imported from removed
|
|
container modules.
|
|
|
|
* UI/MailerUI/UIxMailPopupView.m: a new special popup component
|
|
for wrapping UIxMailView with the "popupview" action.
|
|
|
|
* UI/MailerUI/UIxMailAccountView.m: renamed to UIxMailSplashView,
|
|
since its the component that displays the same splash screen than
|
|
the one in Thunderbird/Icedove.
|
|
|
|
* UI/MailerUI/UIxMailAccountViewContainer.[hm],
|
|
UI/MailerUI/UI/MailerUI/UIxMailAccountsView.m,
|
|
UI/MailerUI/UIxMailListViewContainer.[hm],
|
|
UI/MailerUI/UIxMailViewContainer.[hm]: removed
|
|
|
|
2006-12-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/HTMLElement.js: replaced the functional
|
|
selectNode() and deselectNode() functions with select() and
|
|
deselect() methods of HTMLElement.
|
|
|
|
* UI/WebServerResources/ContactsUI.js: cleanup, most of the
|
|
events are initialized from here now instead of in the HTML code.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-checkRightsAction]): new method similar to the one with the same
|
|
name in UIxCalMainView.m.
|
|
|
|
* UI/Common/UIxAclEditor.m ([UIxAclEditor -saveAclsAction]): added
|
|
code to handle the publishing of freebusy information.
|
|
|
|
2006-12-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMainView.m ([UIxCalMainView
|
|
-checkRightsAction]): new action method that returns a
|
|
comma-separated list of boolean values matching the right of the
|
|
current user to "view" (as a permission) each foreign calendar
|
|
stored in his preferences.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -setOwner:newOwner]):
|
|
new method that sets a customOwner, which can be returned with
|
|
ownerInContext it set.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): no longer set the owner of elements here.
|
|
|
|
2006-12-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m: same as for SOGoContactFolders
|
|
below, but for the Contacts and Calendar collections.
|
|
|
|
* SoObjects/SOGo/SOGoAclsFolder.m: convert the class to user the
|
|
new acl facilities method from sope-gdl/GCSFolder.m.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
|
|
-roleOfUser:uidinContext:context]): new method that returns
|
|
SOGoRole_Assistant when the user is an assistant or a delegate on
|
|
the "personal" ab object. This is so that setting roles on the
|
|
SOGoContactFolders object is not required.
|
|
|
|
2006-12-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* Main/SOGo.m: declare "Freebusy" permissions for the top objects.
|
|
|
|
* UI/Contacts/UIxContactsAclsSelection.m: new component specific
|
|
to the handling of the user selection for the acls.
|
|
|
|
* SoObjects/SOGo/SOGoPermissions.[hm]: new module that extends the
|
|
values from SoPermissions with ones specific to SOGo.
|
|
|
|
* SoObjects/SOGo/SOGoAclsFolder.[hm]: new class module that
|
|
handles the storage for the acls.
|
|
|
|
* SoObjects/Appointments/SOGoCalendarComponent.[hm]: new parent
|
|
class for SOGoAppointmentObject and SOGoTaskObject.
|
|
|
|
* UI/Common/UIxAclEditor.[hm]: new component that provides a
|
|
general editor for folder acls.
|
|
|
|
* SoObjects/SOGo/NSString+Utilities.[hm]: old "NSString+URL"
|
|
renamed.
|
|
([NSString -davMethodToObjC]): method that returns the method name
|
|
for a DAV property implementation.
|
|
|
|
* SoObjects/SOGo/NSArray+Utilities.m: new extension module to
|
|
NSArray.
|
|
([NSArray -stringsWithFormat:format]): new method that returns
|
|
formatted occurences of the strings stored in the array.
|
|
|
|
* SoObjects/SOGo/SOGoDAVRendererTypes.m ([SOGoDAVSet
|
|
+davSetWithArray:newValuesofValuesTaggedAs:newValueTag]): a new
|
|
subclass module of SoWebDAVValue that supports collections of
|
|
properties of the same type.
|
|
|
|
2006-11-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoMailAccount.m ([SOGoMailAccount
|
|
-lookupFolder:ofClassNamed:inContext:]): added the ability to
|
|
configure the name of the SOGoDraftFolders with the ud var
|
|
"SOGoDraftsFolderName".
|
|
|
|
2006-11-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
-userTimeZone:username]): new method that returns the timezone for
|
|
the specified user depending on his preferences and the server
|
|
defaults
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-stringForData:partInfo:]): take the encoding into account and
|
|
translate the text to "normal" before processing the charset data.
|
|
|
|
2006-11-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js: the progress indicator is on
|
|
when loading the page so we turn it off, and we turn it back on
|
|
whenever we switch to another module...
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: make sure the day view
|
|
synchronization mechanism works everywhere.
|
|
|
|
* UI/WebServerResources/generic.js: the log window is not only
|
|
visible when UIxDebugEnabled is set.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: the month overview's day
|
|
cells are now initialized with the DOM event interface methods
|
|
instead of with html attributes.
|
|
|
|
* UI/Templates/MailerUI/UIxMailView.wox: don't display useless
|
|
headers (should be made configurable at some point)...
|
|
|
|
* OGoContentStore/sql/generate-folderinfo-sql-for-users.sh: drop
|
|
"not null" constraint on startdate, enddate, isopaque,
|
|
participants and partmails.
|
|
|
|
2006-11-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable
|
|
-hoursToDisplay]): prevent a crash by retaining the
|
|
"hoursToDisplay" array after it's created.
|
|
([UIxCalDayTable -clickableHourCellClass]): new method for the new
|
|
clickable hours DIV.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: made the event
|
|
participation status modification asynchronous, which also fixes a
|
|
bug where the window would sometimes close before the accept or
|
|
decline action was completed. Also, adapted the event handling
|
|
related to the days or weeks view with the new DIV-based layout.
|
|
|
|
* UI/Scheduler/UIxCalInlineAptView.m: same as the first below...
|
|
|
|
* UI/Scheduler/UIxCalDayTable.m: enhanced to provide the new
|
|
DIV-based presentation of the days and weeks.
|
|
|
|
* SoObjects/Appointments/SOGoTaskObject.m: same as below...
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m: lookupName:...
|
|
might return an exception so we have to handle it if we don't
|
|
wanna crash...
|
|
|
|
2006-11-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: updated the list
|
|
initialization code to use the new event management scheme, adding
|
|
what was missing to be able to delete events and tasks again.
|
|
|
|
* UI/WebServerResources/MailerUI.js: added code to activate the
|
|
"Get mails" button. Fixed a bug which prevented messages to be
|
|
deleted.
|
|
|
|
* UI/WebServerResources/UIxFreeBusyUserSelector.js: handle tab
|
|
navigation and focus handling of INPUTs.
|
|
|
|
2006-11-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js: added code to handle the
|
|
possible drag and drop events to manager in the mail module.
|
|
Moving messages, opening parent folders, ...
|
|
|
|
* UI/WebServerResources/SOGoDragAndDrop.js: new file containing
|
|
the drag and drop manager as well as the interface to HTMLElement
|
|
to trigger drag and drop events.
|
|
|
|
* UI/MailerUI/UIxMailView.m ([UIxMailView -moveAction]): new
|
|
action to move the current message to the mailbox named after the
|
|
value of parameter "tofolder".
|
|
|
|
* SoObjects/Mailer/SOGoMailObject.m ([SOGoMailObject
|
|
-moveToFolderNamed:folderNameinContext:]): new method base on
|
|
-trashInContext:.
|
|
|
|
2006-11-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js: added and activated many
|
|
"load" handlers to configure generic widgets used across the
|
|
modules. More events are now handled in a DOM-fashion way instead
|
|
of by setting the relative attributes in the templates.
|
|
|
|
* UI/Templates/UIxSortableTableHeader.wox: all the events are
|
|
declared from the javascript DOM onload handlers.
|
|
|
|
* UI/Templates/UIxPageFrame.wox: load the new SOGoDragHandles.js
|
|
library.
|
|
|
|
* UI/Templates/MailerUI/UIxMailListView.wox: all the events are
|
|
declared from the javascript DOM onload handlers.
|
|
|
|
* UI/MailerUI/UIxMailListView.m: removed all the JS methods since
|
|
we want everything to be separated from each other, as much as
|
|
possible.
|
|
|
|
* UI/WebServerResources/SOGoDragHandles.js: new module containing
|
|
the "SOGoDragHandlesInterface", implementing methods that can be
|
|
attributed to DIV so that they can be used as drag handles.
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([NSString
|
|
-asQPSubjectString]): initialize the tmp strings with '0' to make
|
|
sure they don't contain garbage.
|
|
|
|
2006-11-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js: register the messageList
|
|
table as a dragging source and the leaf of the navigation tree as
|
|
dnd destinations to the DNDManager.
|
|
|
|
* UI/WebServerResources/generic.js: initialize tabs from the
|
|
"unload" event listener that is added programmatically instead of
|
|
from the template... Also, added the new DNDManager object.
|
|
|
|
* UI/WebServerResources/HTMLTableElement.js: added code to
|
|
simulate XUL drag n drop events. This code will possibly be moved
|
|
to HTMLElement.js instead later...
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder -_qualifierForFilter:filter]): same as
|
|
below.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-_qualifierForFilter:filter]): only search records which starts
|
|
with the specified pattern.
|
|
|
|
2006-11-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoDraftObject.m ([NSString
|
|
-asQPSubjectString]): new method that returns the special QP
|
|
string with its qp declaration for email subjects.
|
|
([SOGoDraftObject -bodyPartForText])
|
|
([SOGoDraftObject -mimeMessageForContentWithHeaderMap:]): don't
|
|
double-encode data in UTF-8.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-newStartDate]): new method to determine the start date depending
|
|
on the URL parameters, the current day and the current time.
|
|
([UIxComponentEditor -toolbar]): new method to determine the
|
|
filename of the toolbar that should be drawn depending on the
|
|
ownership and the list of attendees of the task/event wrt to the
|
|
current user...
|
|
|
|
* UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl
|
|
-setDayStartHour:aStartHour]): adjust the minutes to the next
|
|
quarter of hour, if not already set to a quarter.
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js,
|
|
UI/WebServerResources/UIxTaskEditor.js: added code to manage start
|
|
date change.
|
|
|
|
2006-11-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-loadValuesFromComponent:component]): handles access class
|
|
(privacy) and status.
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.m
|
|
([UIxContactsListViewContainer -additionalFolders]): return nil if
|
|
[self additionalAddressBooks] returns an empty string.
|
|
|
|
2006-11-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMonthView.m ([UIxCalMonthView
|
|
rangesOf7Days]): enhanced and debugged algorithm to feed the array
|
|
with slices where the first day is still in the requested month.
|
|
|
|
* UI/Templates/UIxPageFrame.wox: the logConsole is created only on
|
|
non-popup pages.
|
|
|
|
* UI/SOGoUI/SOGoAptFormatter.m: added code to handle the display
|
|
of events in the day boxes of the calendar's monthly view.
|
|
|
|
* SoObjects/Appointments/SOGoTaskObject.m ([SOGoTaskObject
|
|
-davContentType]): declare "text/calendar".
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -davContentType]): declare
|
|
"text/calendar".
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -lookupName:inContext:acquire:]): certain
|
|
HTTP methods are handled by SOPE and requires nil to be returned,
|
|
this method now invokes the new
|
|
"requestNamedIsHandledLater:inContext:" method to check that.
|
|
([SOGoAppointmentFolder
|
|
-requestNamedIsHandledLater:nameinContext:context]): new methods
|
|
that returns "YES" only for the "OPTIONS" http method (for now...).
|
|
([SOGoAppointmentFolder -davComplianceClassesInContext:]):
|
|
overloaded method to append the "access-control" and
|
|
"calendar-access" DAV abilities to the initial declaration.
|
|
|
|
* UI/Scheduler/UIxCalMonthView.[hm]: rewritten module entirely to
|
|
imitate the look of Sunbird/Lightning's monthly view.
|
|
|
|
* UI/Scheduler/UIxCalMonthView.[hm]: renamed to
|
|
UIxCalMonthViewOld.[hm].
|
|
|
|
2006-11-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxFreeBusyUserSelectorTable.m
|
|
([UIxFreeBusyUserSelectorTable -currentContactHasStatus]): new
|
|
method.
|
|
([UIxFreeBusyUserSelectorTable -currentContactStatusImage]):
|
|
returns an image name based on the participation status of the
|
|
current attendee.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: same strip down as for
|
|
generic.js below.
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.m ([UIxContactsListViewContainer -additionalAddressBooks])
|
|
([UIxContactsListViewContainer -additionalFolders])
|
|
([UIxContactsListViewContainer -setCurrentAdditionalFolder:newCurrentAdditionalFolder])
|
|
([UIxContactsListViewContainer -currentAdditionalFolder]): new
|
|
methods to handle the external addressbooks a user has subscribed
|
|
too, by retriving them from his preferences.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-updateAdditionalAddressBooksAction]): new method that updates the
|
|
user settings with the list of addressbook he has subscribed to.
|
|
|
|
* UI/Contacts/UIxContactsAddressBooksSelection.m: new component
|
|
module for the address book selector.
|
|
|
|
* UI/Templates/ContactsUI/UIxContactsListViewContainer.wox: added
|
|
a toolbar with two buttons ("add" and "remove") to manage the
|
|
additional addressbooks a user might subscribe to.
|
|
|
|
* UI/WebServerResources/ContactsUI.js: added code to handle
|
|
"external addressbooks" from the Javascript point-of-view, by
|
|
extending existing methods and adding code for the "add ab" and
|
|
"remove ab" buttons.
|
|
|
|
* UI/WebServerResources/generic.js: moved extensions methods to
|
|
DOM elements to separate files for better clarity.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -pageContentClasses]):
|
|
new method that returns "pageContent" as class, but also "popup"
|
|
for the DIV where the page content lies, so that we can manipulate
|
|
the content of popup's with CSS identifiers.
|
|
|
|
2006-10-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalInlineAptView.m ([UIxCalInlineAptView
|
|
-displayStyle]): new method that returns a string containing the
|
|
css style relative to the current appointment cell. This code is
|
|
currently inactive but might be reused later.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: added code to handle the
|
|
display of the selected day (the day pointed by the mouse, or the
|
|
current day when changing the view).
|
|
|
|
* UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable
|
|
-dayCellClasses]): new method that returns a string containing the
|
|
css classes applicable to the current cell, depending on the
|
|
position of the day in the week, the day of today and the
|
|
requested day.
|
|
|
|
* UI/Scheduler/UIxCalCalendarsListView.m ([UIxCalCalendarsListView
|
|
-currentContactAptBorder]): new method that returns the
|
|
appropriate border color for the specified user.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject
|
|
-saveContentString:contentStringbaseVersion:baseVersion]):
|
|
overloaded method that parse new events and detects if they have
|
|
an organizer or not. If they are new and have no organizer set
|
|
(Sunbird/Lightning...), the owner of the event is set as
|
|
organizer.
|
|
|
|
* SoObjects/Appointments/iCalEntityObject+Agenor.[hm]: new
|
|
category that provides facility methods and interfaces to the
|
|
AgenorUserManager.
|
|
|
|
* SoObjects/Contacts/product.plist: give full access to ANY
|
|
authenticated user, not just the owner (to every objects...).
|
|
|
|
2006-10-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxFreeBusyUserSelector.js: make sure
|
|
every replica widgets are declared as such to their master
|
|
counterpart. Take the days into account when displaying the time
|
|
range taken by the appointment.
|
|
|
|
* UI/Scheduler/UIxComponent+Agenor.m ([UIxComponent
|
|
-getICalPersonsFromValue:selectorValue]): method taken from
|
|
UIxFreeBusyUserSelector, that is shared both by
|
|
UIxFreeBusyUserSelector and UIxFreeBusyUserSelectorTable.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): reverted to search algorithm to search for events happening outside 0 or 1 (at most) boundary of the timerange.
|
|
|
|
* UI/Scheduler/UIxFreeBusyUserSelectorTable.[hm]: new subcomponent
|
|
derived and taken as a subset of UIxFreeBusyUserSelector that
|
|
implements the table part of the FreeBusy view. Most of the
|
|
methods of UIxFreeBusyUserSelector relative to that table were
|
|
moved into UIxFreeBusyUserSelectorTable, which can also be used as
|
|
a standalone view for AJAX operations.
|
|
|
|
2006-10-27 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
-vCard]): change reverted.
|
|
|
|
* UI/Contacts/UIxContactEditor.m: check whether the client contact
|
|
folder has selector "globallyUniqueObjectId" before calling that
|
|
method.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
-vCard]): the "setVClass" NGVCard method really is "setClass"
|
|
instead.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder -_searchAttributes]): fixed typo to
|
|
request the "streetAddress" instead of the "streetaddress".
|
|
([SOGoContactLDAPFolder -_qualifierForFilter:filter]): lookup
|
|
mails that *contain*, and not just *start with* the search
|
|
pattern.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
-vCard]): mark address returned from LDAP as the work address.
|
|
|
|
* UI/Templates/SchedulerUI/UIxCalInlineAptView.wox: made the whole
|
|
span covered with the anchor, not only the textual information
|
|
within.
|
|
|
|
* UI/Templates/SchedulerUI/UIxCalMainView.wox: specify the type
|
|
argument (event or task) to newEvent in the appointmentListMenu.
|
|
Make the appointmentsListView display the appointmentsListMenu.
|
|
|
|
* UI/SOGoUI/SOGoAptFormatter.m: enlarge the text size limit from
|
|
12 to 50 before displaying "...".
|
|
([SOGoAptFormatter -fullDetailsForApt::]): display location only
|
|
if its length > 0, whether location itself is nil or not...
|
|
([SOGoAptFormatter -tooltipForApt::_refDate]): display information
|
|
of which the length > 0.
|
|
|
|
2006-10-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js: correctly handles
|
|
french and ISO dates.
|
|
|
|
* UI/Scheduler/UIxFreeBusyUserSelector.[hm]: added code an ivars
|
|
from UIxContactSelector to handle contact lists (current and
|
|
additional contacts).
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage
|
|
-_freeBusyAsText]): added handling of an "additional"-named query
|
|
parameter that describe the number of additional days after
|
|
enddate that should be returned.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-_responseForResults:results]): give priority to results with
|
|
"c_uid" fields. If none returned, use the first contact received.
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
|
|
-extractQuickFieldsFromEvent:_event]): changed "TENTATIVE" code to
|
|
2 and "CANCELLED" to 0.
|
|
|
|
2006-10-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js: handle conversion
|
|
of start and end dates to short string dates.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.m ([SOGoUserHomePage
|
|
-readFreeBusyAction]): new method that returns an array of numbers
|
|
corresponding to the state in the freebusy of each "quarter of an
|
|
hour" between the "sday" and "eday" date parameters passed in the
|
|
url. This permits to handle the display of the freebusy with Ajax
|
|
mechanisms.
|
|
([SOGoUserHomePage -_freeBusyAsText]): add 2 days to the end date
|
|
since the free busy displays 2 days ahead.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-contactSearchAction]): new action that returns the uid and the
|
|
username + email of the user whose name contain the value of the
|
|
"search" url parameter.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFreebusyInfosFrom:_startDateto:_endDate]): added fields
|
|
useful for the computing of the status of the freebusy.
|
|
|
|
* UI/Scheduler/UIxFreeBusyUserSelector.m ([UIxFreeBusyUserSelector
|
|
-init]): new component that incarnates a user selector for events
|
|
inspired by the new one found in Thunderbird Lightning.
|
|
|
|
2006-10-23 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/generic.js: added code to enable or
|
|
disable anchor visually (following our internal algorithm).
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor -init]):
|
|
added new "url" ivar with its classic accessors.
|
|
([UIxComponentEditor -urlButtonClasses]): new method that returns
|
|
the class strings for the url button on the appointment/task
|
|
editor (depending on the validity of the url).
|
|
|
|
* UI/Templates/SchedulerUI/UIxTaskEditor.wox,
|
|
UI/Templates/SchedulerUI/UIxAppointmentEditor.wox: start rewriting
|
|
the template to match the Lightning's new task/appointment editor.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor -saveValuesIntoAppointment:_appointment]): initialize url from the components'url.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -saveValuesIntoTask:_task]): initialize url from the components'url.
|
|
|
|
2006-10-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder
|
|
-lookupContactsWithFilter:filtersortBy:sortKeyordering:sortOrdering]): perform the searchs on objects which start with instead of contain the lookup key.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailNotification.[hm]: work on
|
|
iCalEntityObject instances instead of just iCalEvent's.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): set ownership of returned records by adding an "owner" key to the resulting dictionaries.
|
|
|
|
* SoObjects/SOGo/NSObject+Owner.[hm]: removed module since it's a
|
|
bad way of handling ownership that way.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder -_qualifierForFilter:filter]): search also
|
|
on "cn", just like Mozilla.
|
|
|
|
2006-10-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailToSelection.m ([UIxMailToSelection -to]):
|
|
"to" should be retained, otherwise it will be autoreleased and a
|
|
crash will occur.
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor
|
|
-writeAction]): updated method to fetch the card before initing
|
|
the snapshot.
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
|
|
-extractQuickFieldsFromTodo:_task]): fixed to use NSNull instead
|
|
of NSNotFound.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor
|
|
-iCalStringTemplate]): start and due date are now optional.
|
|
|
|
* UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl
|
|
-setDayStartHour:aStartHour]): added a new "isDisabled" ivar with
|
|
appropriate accessors to be settable through the templates.
|
|
|
|
* UI/Scheduler/UIxDatePicker.m ([UIxDatePicker -init]): added a
|
|
new "isDisabled" ivar with appropriate accessors to be
|
|
settable through the templates.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.m ([UIxComponentEditor
|
|
-availableCalendars]): new method that list the calendars to which
|
|
the user has subscribed.
|
|
([UIxComponentEditor -componentOwner]): returns the owner of the
|
|
editted object.
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
|
|
-extractQuickFieldsFromTodo:_task]): set the start and enddate of
|
|
quickentries to null whenever each or all of them are null, by
|
|
providing an impossible timestamp from with NSNotFound as value.
|
|
|
|
2006-10-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js: update the algorithm
|
|
that handles the creation of new fields with the new APIs and the
|
|
new node structure on the page.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m,
|
|
UI/Scheduler/UIxTaskEditor.m:
|
|
refactored to user UIxComponentEditor as parent class.
|
|
|
|
* UI/Scheduler/UIxComponentEditor.[hm]: new class module
|
|
containing the methods common to the UIxTaskEditor and the
|
|
UIxAppointmentEditor.
|
|
|
|
2006-10-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -doCalendarQuery:context]): now supports
|
|
the handling of time-ranges.
|
|
|
|
* UI/WebServerResources/ContactsUI.js: specify a notification type as
|
|
parameters when onConfirmContactSelection in invoked.
|
|
|
|
* UI/WebServerResources/generic.js: specify a notification type as
|
|
parameters when onContactRemove in invoked.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: when the user deselects
|
|
all calendars, select his entry.
|
|
|
|
2006-10-16 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: edit and delete events
|
|
with their owner-relative urls. Generate a correct entry in the
|
|
css color table when a user is added to the calendars list. Put
|
|
the same color next to the user id.
|
|
|
|
* UI/WebServerResources/generic.js: implemented some new helper
|
|
methods.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -deleteEntriesWithIds:ids]): don't delete
|
|
entries if their owner is not the current user.
|
|
|
|
* UI/Scheduler/UIxCalInlineAptView.m ([UIxCalInlineAptView
|
|
-displayClasses]): return the correct class for the current event
|
|
representation depending on its owner.
|
|
|
|
* UI/Scheduler/UIxCalCalendarsListView.m: added method to create
|
|
and associate a color for each user login depending on its
|
|
position in the list.
|
|
|
|
* UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView
|
|
-currentRowCSSClass]): return the correct class for the current
|
|
row depending on the owner of the event.
|
|
|
|
* UI/Contacts/UIxContactSelector.m ([UIxContactSelector
|
|
-setColors:colors]): new method to associate a color table with
|
|
each user in the list.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): associate each returned record with the owner of the table they are retrieved from.
|
|
|
|
* SoObjects/SOGo/NSObject+Owner.[hm]: new extension module to
|
|
NSObject to associate an instance with a user.
|
|
|
|
2006-10-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: added handling of multiple
|
|
calendars.
|
|
|
|
* UI/WebServerResources/ContactsUI.js: added handling of
|
|
notification of changes to contact selectors.
|
|
|
|
* UI/WebServerResources/generic.js: added handling of notification
|
|
of changes to contact selectors.
|
|
|
|
* UI/Scheduler/UIxCalMainView.m ([UIxCalMainView
|
|
-updateCalendarsAction]): proxy method to update the user
|
|
preference table with the new selected calendar uids.
|
|
|
|
* UI/Contacts/UIxContactsListView.m ([UIxContactsListView
|
|
-calendarsContactsAction]): new method.
|
|
|
|
* UI/Contacts/UIxContactSelector.m ([UIxContactSelector -setCheckedBoxes:boxes])
|
|
([UIxContactSelector -setHasCheckBoxes:aBool])
|
|
([UIxContactSelector -isCheckBoxChecked]): new accessors method to
|
|
permit the drawing of checkboxes instead of card icons.
|
|
|
|
* UI/Scheduler/UIxCalCalendarsListView.m: new component class that
|
|
wrap a selector the the "Calendars" tab.
|
|
|
|
* UI/Contacts/UIxContactsCalendarsSelection.m: buttons for the
|
|
new user calendar selector.
|
|
|
|
2006-10-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Templates/SchedulerUI/UIxAppointmentEditor.wox: time ranges
|
|
may cover hour 0 to hour 23.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-iCalStringFromQueryParameter:format:]): dates explicitly set to
|
|
utc tz.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: manage both lists of
|
|
objects wrt to the toolbar actions.
|
|
|
|
* UI/WebServerResources/generic.js: added code to the "String"
|
|
class to decode number-encoded char entities.
|
|
|
|
* UI/Scheduler/UIxCalMainView.m ([UIxCalMainView
|
|
-batchDeleteAction]): new method to delete selected entries in the
|
|
lists.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -deleteEntriesWithIds:ids]): new method
|
|
that delete identified entries in batch.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent
|
|
-jsCloseWithRefreshMethod:methodName]): new method with explicit purpose.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.m ([UIxTaskEditor -saveAction]),
|
|
UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-saveAction]), UI/MailerUI/UIxMailEditor.m ([UIxMailEditor
|
|
-sendAction]), UI/Contacts/UIxContactEditor.m ([UIxContactEditor
|
|
-saveAction]):
|
|
return a UIxJSClose component if everything went fine.
|
|
|
|
* UI/Scheduler/UIxTaskEditor.h: interface extracted from
|
|
UIxTaskEditor.m.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.h: interface extracted from
|
|
UIxAppointmentEditor.m.
|
|
|
|
* UI/Common/UIxJSClose.[hm]: new UIxComponent designed to display
|
|
a very light page with javascript code to close a window, by
|
|
calling a method on the opener if specified. This component is
|
|
designed to work as a response to form postings.
|
|
|
|
2006-10-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoTaskObject.[hm]: clone of
|
|
SOGoAppointmentObject adapted for the handling of tasks.
|
|
|
|
* SoObjects/Appointments/NSArray+Appointments.[hm]: category
|
|
extracted from SOGoAppointmentObject.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m ([UIxAppointmentEditor
|
|
-saveUrl]): returns the url needed to POST the new form to.
|
|
redirect the user to <aptid>/editAsAppointment instead of /edit,
|
|
so that SOGoAppointmentFolder can return the correct object type.
|
|
|
|
* SoObjects/SOGo/NSObject+AptComparison.m ([NSObject
|
|
-compareAptsAscending:_other]): accept empty start or end dates.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder
|
|
-fetchFields:_fieldsfromFolder:_folderfrom:_startDateto:_endDatecomponent:_component]): added a "component" parameter to match the query against the specified component types. Made startDate and endDate optional by ignoring them altogether in the query whenever one of them is nil.
|
|
([SOGoAppointmentFolder -doCalendarQuery:context]): fetch
|
|
components of type "vtodo" as well as "vevent".
|
|
([SOGoAppointmentFolder -lookupName:inContext:acquire:]): if the
|
|
url specified ends with AsTask or AsAppointment, returns the
|
|
an object of the appropriate class, otherwise deduce it from its
|
|
content if the HTTP method is "PUT", otherwise read its type from
|
|
the quick table.
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m ([OCSiCalFieldExtractor
|
|
-extractQuickFieldsFromTodo:_task]): extract quick fields from
|
|
tasks.
|
|
|
|
* UI/Scheduler/UIxCalView.m ([UIxCalView
|
|
-fetchCoreAppointmentsInfos]): replacement methods for
|
|
fetchCoreInfos but by retrieving object with component "vevent".
|
|
([UIxCalView -fetchCoreTasksInfos]): same as above for "vtodo"
|
|
components.
|
|
|
|
* UI/Scheduler/UIxCalTasksListView.[hm]: clone of
|
|
UIxCalAptListView adapted for the handling of tasks.
|
|
|
|
* UI/Scheduler/UIxTaskProposal.[hm],
|
|
UI/Scheduler/UIxTaskView.[hm], UI/Scheduler/UIxTaskEditor.[hm]:
|
|
clones of the UIxAppointment* classes for the handling of tasks.
|
|
|
|
* UI/WebServerResources/UIxTaskEditor.js: clone of
|
|
UIxAppointmentEditor adapted for the handling of tasks.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: added support for tasks.
|
|
Scroll the daily view to the appropriate hour when an appointment
|
|
is selected in the appointments list.
|
|
|
|
2006-10-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl
|
|
-setDayStartHour:aStartHour]): specifies the user timezone on the
|
|
given date.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m: indicate DTSTAMP with "GMT"
|
|
as timezone.
|
|
|
|
* SoObjects/SOGo/NSCalendarDate+SOGo.m ([NSCalendarDate -adjustedDate])
|
|
([NSCalendarDate -driftedDate]): methods made useless by a better
|
|
comprehension of the NSTimeZone API...
|
|
|
|
2006-10-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -selectedDate]): call
|
|
new methods from the NSCalendarDate methods.
|
|
|
|
* SoObjects/SOGo/NSCalendarDate+SOGo.m: module replacing and
|
|
extending UI/Scheduler/NSCalendarDate+Scheduler.m.
|
|
([NSCalendarDate
|
|
+dateFromShortDateString:dateStringandShortTimeString:timeStringinTimeZone:timeZone]): new method that generates a date from two short string formatted as follow: "yyyymmdd" and "hhmm". Thismethod replaces a similar method from UIxComponent (noted below).
|
|
([NSCalendarDate -adjustedDate]): this method returns another
|
|
instance set to the correct hour after the original date was set
|
|
from a non-GMT timezone. This date can be used for storage.
|
|
([NSCalendarDate -driftedDate]): this method does exactly the
|
|
opposite of -adjutedDate, that is, it enables the method
|
|
hourOfDay, minuteOfHour etc... to return the values according to
|
|
the original date's timezone. This date CANNOT be used for storage.
|
|
|
|
* UI/Scheduler/NSCalendarDate+Scheduler.m ([NSCalendarDate
|
|
-shortDateString]): new method that will return a "short date
|
|
string" (yyyymmdd) from a calendar date object.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent
|
|
-_cDateFromShortDateString:dateStringandShortTimeString:timeString]): new method to compute the selected date from the "day" and "hm" query parameters (if found). This method replaces the old algorithm that was found in the "selectedDate" method.
|
|
|
|
* Main/sogod.m (main): initialize the NSTimeZone's defaultTimeZone
|
|
to the value of SOGoServerTimeZone or "Canada/Eastern" if not found.
|
|
|
|
2006-10-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: added code to scroll the
|
|
view of the day at the height of hour 8:00.
|
|
|
|
* UI/Scheduler/UIxCalView.m ([UIxCalView -dayStartHour]): returns 0.
|
|
([UIxCalView -dayEndHour]): returns 24.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView -defaultAction])
|
|
([UIxContactFoldersView -newAction]): invoke
|
|
_selectActionForApplication: on self with the proper attribute too.
|
|
|
|
* UI/Contacts/UIxContactsSelectionViewContainer.m: removed since
|
|
we now use the action mechanism in UIxContactsListView to keep the
|
|
same view for the contact selectors and the regular contact view.
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.[hm]: replaces
|
|
UIxContactsListViewContainerBase.[hm]
|
|
|
|
* UI/Contacts/UIxContactsListView.[hm]: replaces UIxContactsListViewBase.[hm]
|
|
|
|
* UI/WebServerResources/generic.js: generalized emailstring
|
|
handling functions. Generalized address book access functions.
|
|
|
|
* UI/Contacts/UIxContactsListViewBase.m ([UIxContactsListViewBase
|
|
-isPopup]): return YES if the "popup" query parameter is set.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-defaultAction]): keep the url parameters when redirecting.
|
|
([UIxContactFoldersView -selectForSchedulerAction])
|
|
([UIxContactFoldersView -selectForMailerAction]): new action
|
|
methods for the /scheduler-contacts and /mailer-contacts invocations.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m: compose the action url using the
|
|
newly available NSString+URL category.
|
|
|
|
* SoObjects/SOGo/NSDictionary+URL.m ([NSDictionary
|
|
-asURLParameters]): handle dictionary entries which could be
|
|
instances of NSArray rather than NSString.
|
|
|
|
* SoObjects/SOGo/NSString+URL.m ([NSString
|
|
-composeURLWithAction:actionparameters:urlParametersandHash:useHash]): when composing the url, remove the encoded parameters first since they will be added later.
|
|
([NSString -urlWithoutParameters]): new method that returns the
|
|
url without its parameters.
|
|
|
|
* SoObjects/SOGo/NSString+iCal.h: deleted obsolete file.
|
|
|
|
* SoObjects/SOGo/NSDictionary+URL.[hm],
|
|
UI/SOGoUI/NSString+URL.[hm]: moved from UI/SOGoUI/.
|
|
|
|
* UI/WebServerResources/UIxMailEditor.js: add support for
|
|
additions of different types (to, cc, bcc) of recipients from the
|
|
address book.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -doctype]): added the
|
|
"<?xml..." header.
|
|
|
|
* UI/Contacts/UIxContactsMailerSelection.m,
|
|
UI/Contacts/UIxContactsSchedulerSelection.m: classes replacing
|
|
UI/Contacts/UIxContactsSelectionView.m to provide a different set
|
|
of widgets depending on the application invoking the contact list.
|
|
|
|
2006-09-29 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js: hide the current contact
|
|
whenever the user changes of contact folder.
|
|
|
|
* UI/WebServerResources/UIxContactEditor.js: the contact UID is
|
|
now provided by the template when loading the page.
|
|
|
|
* SoObjects/SOGo/AgenorUserManager.m ([AgenorUserManager
|
|
-iCalPersonWithUid:uid]): new method taken from removed module
|
|
'iCalPerson+UIx';
|
|
|
|
2006-09-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxAppointmentView.m ([UIxAppointmentView
|
|
-categoriesAsString]): same as below.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m: adapted by using the new
|
|
vcalendar API's iCalEvent instead of the removed SOGoAppointment.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -calendarFromContent:cnt]): new helper method.
|
|
([SOGoAppointmentObject -firstEventFromCalendar:calendar]): new
|
|
helper method.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -doCalendarQuery:context]): added a
|
|
hackish test to detect whether the request concernes VEVENT's or
|
|
anything else. Return events only in the former case.
|
|
([SOGoAppointmentFolder
|
|
-fetchOverviewInfosFrom:_startDateto:_endDate]): retrieve the
|
|
c_name quickfield so that the calendar list can identify the
|
|
appointments with their complete "filename".
|
|
|
|
* OGoContentStore/OCSiCalFieldExtractor.m: use CardGroup's
|
|
groupsOfClass:fromSource: to parse the given vcalendar.
|
|
|
|
* UI/Scheduler/iCalRecurrenceRule+SOGo.m: removed obsolete class.
|
|
|
|
* UI/Scheduler/SOGoAppointment+UIx.h: removed obsolete class.
|
|
|
|
* SoObjects/SOGo/SOGoAppointmentICalRenderer.[hm]: removed
|
|
obsolete class.
|
|
|
|
* SoObjects/SOGo/SOGoAppointment.[hm]: removed obsolete class.
|
|
|
|
2006-09-26 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -lookupName:inContext:acquire:]): be
|
|
sensitive to the CalDAV method names.
|
|
([SOGoAppointmentFolder -doCalendarQuery:context]): method for the
|
|
"calendar-query" CalDAV method name.
|
|
|
|
* UI/WebServerResources/ContactsUI.js: removed a lot of useless
|
|
code coming originally from MailerUI.js.
|
|
|
|
* UI/WebServerResources/UIxContactEditor.js: imitate the
|
|
Thunderbird address book by completing the display name with the
|
|
content of the first and last name fields, until the display name
|
|
is modified manually.
|
|
|
|
* UI/WebServerResources/generic.js: added a "trim" method to the
|
|
String class.
|
|
|
|
* UI/Contacts/UIxContactsListViewBase.m ([UIxContactsListViewBase
|
|
-displayName]): new method that returns the display name from "cn"
|
|
or from the "displayName" key if found.
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor
|
|
-initSnapshot]): check if "[card n]" returns anything to avoid a
|
|
crash.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -doctype]): new method
|
|
that returns an unparsed doctype definition for the pages.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
-vCard]): set the card's fn to attribute "displayName" if found
|
|
before "cn".
|
|
|
|
2006-09-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
-vCard]): handle the "streetAddress" and "l" fields.
|
|
|
|
* UI/Templates/MailerUI/UIxMailEditor.wox: arranged the message
|
|
header fields by converting the tables to DIVs and SPANs.
|
|
|
|
* UI/WebServerResources/generic.css: attempted unification of font
|
|
families and size across all the elements. changed the
|
|
logConsole's "position" from "fixed" to "absolute" to avoid
|
|
performance issues.
|
|
|
|
2006-09-19 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js (uixDeleteSelectedContacts):
|
|
empty the contact view when the current contact is being deleted.
|
|
|
|
* UI/WebServerResources/MailerUI.js (newContactFromEmail): fully
|
|
parse the email field and provide the address full name if found
|
|
as the "contactFN" parameter.
|
|
|
|
* UI/WebServerResources/generic.js (openMailTo): do not give a
|
|
name to the opened window so that serveral ones can be opened at
|
|
the same time.
|
|
|
|
* UI/MailPartViewers/UIxMailPartTextViewer.m
|
|
([UIxMailPartTextViewer -flatContentAsString]): override method by
|
|
replacing carriage returns with "<br />" in the result string from
|
|
super's implementation.
|
|
|
|
* UI/Contacts/UIxContactView.m ([UIxContactView
|
|
-_urlOfType:aType]): don't manage non-mailto urls through
|
|
javascript, let the user decide what's best for him.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-newAction]): transfer all the query parameters by using the
|
|
"asURLParameters"'s result string from [self queryParameters].
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor
|
|
-initSnapshot]): retrieve "contactEmail" and "contactFN" from the
|
|
query parameters and put their values (if any) into the snapshot.
|
|
|
|
* UI/Contacts/UIxContactView.m ([UIxContactView -note]): convert
|
|
carriage-returns to "<br />".
|
|
([UIxContactView -workCompany]): explicitly initialize company to
|
|
nil if org is nil or empty.
|
|
|
|
* UI/WebServerResources/UIxContactEditor.js: updated validation
|
|
code after we added and renamed some fields.
|
|
|
|
* UI/WebServerResources/ContactsUI.js: added code to cache contact
|
|
cards and to handle card updates.
|
|
|
|
2006-09-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactView.m ([UIxContactView -hasOtherInfos]):
|
|
test the length of the returned string since they will never be
|
|
nil.
|
|
|
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor -saveAction]):
|
|
return self if the process went successful, returns an exception
|
|
otherwise (and only otherwise...).
|
|
|
|
* OGoContentStore/OCSContactFieldExtractor.m
|
|
([OCSContactFieldExtractor -extractQuickFieldsFromVCard:_vCard]):
|
|
adapted method to the new VCard api. Since the cards are stored in
|
|
vcard format, we no longer deal with a dictionary but with a
|
|
NGVCard object...
|
|
|
|
2006-09-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactView.m ([UIxContactView -preferredEmail]):
|
|
return a string with a "mailto" url.
|
|
([UIxContactView -_urlOfType:aType]): generic method to return a
|
|
url string with a html anchor pointing to it.
|
|
|
|
* UI/Contacts/UIxContactEditor.[hm]: UIxContactEditorBase renamed
|
|
since subclass "UIxContactEditor" did nothing. Implemented code to
|
|
display and modify the values parsed from the vcards, displayed in
|
|
a way similar to the Thunderbird addressbook.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
-save]): new dummy method.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry
|
|
-save]): made method void.
|
|
|
|
2006-09-13 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactView.m: added many wrapper methods to
|
|
display blocks of data à la Thunderbird Addressbook. If data is
|
|
available, those wrappers (around the NGVCard methods) will
|
|
enclose the results in a proper HTML output with the correct label
|
|
(if present), otherwise it will return an empty string.
|
|
([UIxContactView -vcardAction]): new action to return the contact
|
|
as text/vcard (for exporting).
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.m ([SOGoContactLDAPEntry
|
|
+contactEntryWithName:aNamewithLDAPEntry:anEntryinContainer:aContainer]): adapted the mapping of the LDIF data with the new NGVCard API.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSEntry.m ([SOGoContactGCSEntry
|
|
-vCard]): create a new NGVCard instance when no data is available
|
|
and retain it.
|
|
([SOGoContactGCSEntry -save]): save the vCard using the new
|
|
"versitString" API method/message.
|
|
|
|
* UI/Contacts/UIxContactView.h: separated interface from
|
|
UIxContactView.m.
|
|
|
|
* UI/WebServerResources/ContactsUI.js: add-ed code to download card
|
|
views and display them beneath the list.
|
|
|
|
2006-09-08 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -userTimeZone]): retain
|
|
the timezone even when it's the server timezone.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-privateContacts:inContext:]): no long configure the calendar
|
|
object with the user's timezone since it's now accessible
|
|
application-wide throught the SOGoObject methods.
|
|
|
|
* UI/SOGoUI/UIxComponent.[hm]: removed the "viewTimeZone" ivar and
|
|
method. Removed the "backendTimeZone" method.
|
|
|
|
* UI/MainUI/SOGoUserHomePage.[hm]: made a subclass of UIxComponent
|
|
instead of SoComponent.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m:
|
|
([SOGoAppointmentObject -viewTimeZoneForPerson:_person]): returns
|
|
[self serverTimeZone] instead of "EST" (which was removed).
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.[hm]: removed the
|
|
"timeZone" ivar and its accessors.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject -serverTimeZone]): new
|
|
centralized method returing the timezone configured in the
|
|
userdefaults db or "Canada/Eastern" if missing.
|
|
([SOGoObject -userTimeZone]): new centralized method returing the
|
|
timezone of the current user or the server timezone if missing
|
|
from the user configuration table.
|
|
|
|
2006-09-07 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: implemented caching of
|
|
date selectors.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -userFolderPath]):
|
|
return a path based on the object's context instead of the first
|
|
level in SOGo's object hierarchy...
|
|
|
|
2006-09-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Templates/SchedulerUI/UIxCalDayTable.wox: day columns can now
|
|
be clicked.
|
|
|
|
* UI/Templates/SchedulerUI/UIxCalDateSelector.wox: pass the user's
|
|
timezone ([self viewTimeZone]) to the WEMonthOverview component to
|
|
avoid a confusion with the days.
|
|
|
|
* UI/Templates/SchedulerUI/UIxCalInlineAptView.wox: appointments
|
|
can now be clicked.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: implemented a mechanism to
|
|
imitate Sunbird's synchronization between the 3 visible views.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -selectedDate]): make
|
|
sure the numbers in dateString are formatted so as to take 4 chars
|
|
for the year and 2 for the day and the month, otherwise
|
|
NSCalendarDate will return a nil date.
|
|
([UIxComponent -applicationPath]): return a path based on the
|
|
object's context instead of the second level in SOGo's object
|
|
hierarchy...
|
|
|
|
2006-09-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -selectedDate]): add the
|
|
user's timezone abbreviation to the date string passed as parameter to
|
|
NSCalendarDate to generate an accurate date instance. Do the same
|
|
when no date is specified and today is chosen.
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js: convert the
|
|
form's time values to integers before comparing them.
|
|
|
|
* UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView -currentStartTime])
|
|
([UIxCalAptListView -currentEndTime]): initialize the resulting
|
|
dates timezone with [self viewTimeZone].
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -init]): new
|
|
"viewTimeZone" ivar destined to hold an instance of the user's
|
|
timezone in memory.
|
|
([UIxComponent -viewTimeZone]): take the timezone from the user's
|
|
prefs.
|
|
|
|
2006-08-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Templates/SchedulerUI/UIxAppointmentEditor.wox: completely
|
|
rearranged the layout.
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js: added code to
|
|
manage showing and hiding appointment details.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-privateContacts:inContext:]): init the SOGoAppointmentFolder's
|
|
timezone by taking the current user's timezone setting.
|
|
|
|
* SoObjects/Appointments/SOGoAptMailNotification.m: same as below.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
|
([SOGoAppointmentObject -changeParticipationStatus:inContext:]):
|
|
set default timezone to EST, although this code should be
|
|
rewritten to handle a system and a user default value.
|
|
|
|
* UI/Scheduler/UIxTimeDateControl.m ([UIxTimeDateControl
|
|
-takeValuesFromRequest:_rqinContext:_ctx]): enhanced method to
|
|
take the values from the hour and minute INPUTs when data is
|
|
POSTed since we no longer use the UIxTimeSelector component.
|
|
([UIxTimeDateControl -selectableHours])
|
|
([UIxTimeDateControl -selectableMinutes]): new methods used by the
|
|
template SELECTs to display reasonable and acceptable values
|
|
instead of all the possibilities.
|
|
|
|
* UI/WebServerResources/generic.js: adapted code for the new
|
|
implementation of the UIxContactSelector component (added a
|
|
"remove" button, removed the previous INPUT and replaced them with
|
|
links of class "button").
|
|
|
|
* UI/Scheduler/UIxTimeDateControl.h: separated interface from
|
|
UIxTimeDateControl.m.
|
|
|
|
* UI/Scheduler/UIxCalDayTable.m ([UIxCalDayTable -currentAppointmentDay])
|
|
([UIxCalDayTable -currentAppointmentHour]): new methods that
|
|
returns correctly formatted values used as attributes for JS code.
|
|
|
|
* UI/Contacts/UIxContactSelector.m ([UIxContactSelector
|
|
-initialContactsAsString]): renamed implementation of
|
|
initialParticipants.
|
|
([UIxContactSelector -currentContactId])
|
|
([UIxContactSelector -currentContactName]): new methods used when
|
|
listing the initial contacts in the widget. Currently, both return
|
|
the person's cn but the latter should ultimately return a user
|
|
fullname.
|
|
|
|
* UI/Contacts/UIxContactSelector.h: separated interface from
|
|
UIxContactSelector.m.
|
|
|
|
* UI/Scheduler/UIxDatePickerScript.[hm]: component removed since
|
|
all javascript code is now put in Scheduler.js/generic.js.
|
|
|
|
* UI/Scheduler/NSCalendarDate+UIx.[hm]: category removed, code
|
|
moved into NSCalendarDate+Scheduler instead.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -setTimeZone:newTZ]): new method to
|
|
configure the timezone from SOGoUserFolder when the instance is
|
|
being created.
|
|
([SOGoAppointmentFolder -viewTimeZone]): MET was removed. Returns
|
|
the value of the new "timezone" ivar.
|
|
|
|
2006-08-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/SchedulerUI.{css,js}: added a tabview with
|
|
the date selector in the first page and the container of the
|
|
future calendar selector in the second page.
|
|
|
|
* UI/WebServerResources/generic.js: added code for handling tabbed
|
|
views.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -productFrameworkName]):
|
|
returns the bundle name associated to the current running product.
|
|
|
|
2006-08-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/UIxAppointmentEditor.js: fixed the AJAX
|
|
exception by invoking a timeout on the opener rather than invoking
|
|
the list refresh method.
|
|
|
|
* UI/Scheduler/UIxCalDayView.m ([UIxCalDayView -labelForDay]):
|
|
removed method.
|
|
|
|
* UI/Scheduler/UIxCalWeekView.m ([UIxCalWeekView -weekBeforePrevWeekQueryParameters])
|
|
([UIxCalWeekView -prevWeekQueryParameters])
|
|
([UIxCalWeekView -nextWeekQueryParameters])
|
|
([UIxCalWeekView -weekAfterNextWeekQueryParameters]): new methods
|
|
that return the dates relatively to the current day.
|
|
([UIxCalWeekView -lastWeekName])
|
|
([UIxCalWeekView -currentWeekName])
|
|
([UIxCalWeekView -nextWeekName])
|
|
([UIxCalWeekView -weekAfterNextWeekName])
|
|
([UIxCalWeekView -_weekNumberWithOffsetFromToday:offset]): new
|
|
methods that returns the label for the corresponding weeks.
|
|
|
|
* UI/Scheduler/UIxCalDayTable.[hm]: new class module/component
|
|
used by UIxCalDayView and UIxCalWeekView to display the events
|
|
occuring in one or more days.
|
|
|
|
2006-08-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMainView.m: extended class to populate the
|
|
entries in the new "monthMenu" and "yearMenu".
|
|
|
|
* UI/Scheduler/UIxCalDayView.m ([UIxCalDayView -labelForDay]): new
|
|
method to return the current day as a string formatted depending
|
|
on the current locale.
|
|
|
|
* UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView -startDate])
|
|
([UIxCalAptListView -endDate]): "today" is now the default filter
|
|
for displayed events.
|
|
([UIxCalAptListView -currentSerialDay]): new method returning the
|
|
date of the current enumerated appointment in serial form
|
|
(yyyymmdd).
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: added code to select the
|
|
relevant day when an appointment is selected. Added code to popup
|
|
a month and a year menu whenever the header entries are clicked in
|
|
the calendar widget.
|
|
|
|
* UI/WebServerResources/generic.js: made addClassName and
|
|
removeClassName methods of HTMLElement.
|
|
|
|
2006-08-21 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js: fixed the contact creation
|
|
from email addresses.
|
|
|
|
* UI/WebServerResources/generic.js: centralized the search-related
|
|
functions here since the same code was used across the 3
|
|
applications.
|
|
|
|
* UI/Scheduler/UIxCalAptListView.m ([UIxCalAptListView -startDate])
|
|
([UIxCalAptListView -endDate]): return the required dates needed
|
|
depending on the value given to the "filterpopup" url parameter.
|
|
|
|
* UI/Common/UIxToolbar.m ([UIxToolbar -buttonLabel]): reduced the
|
|
code by invoking UIxComponent's labelForKey:.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -labelForKey:]): use
|
|
[self pageResourceManager] instead of [self resourceManager].
|
|
|
|
* UI/Contacts/UIxContactEditorBase.m: invokes
|
|
globallyUniqueObjectId on the clientobject's class instead of the
|
|
hardcoded "SOGoFolder".
|
|
|
|
* UI/Contacts/UIxContactFoldersView.m ([UIxContactFoldersView
|
|
-newAction]): redirect the "new" action to the personal (default)
|
|
contact folder.
|
|
|
|
* SoObjects/SOGo/SOGoObject.m ([SOGoObject
|
|
+objectWithName:inContainer:]): new constructor.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-lookupContactWithId:recordId]): always create a contact object,
|
|
even if it does not exist.
|
|
|
|
2006-08-18 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalMainView.[hm]: new class to serve as a pseudo
|
|
component that lays out the different components of SOGoCalendar.
|
|
Only serves as an Objective-C counterpart to its xml template.
|
|
|
|
* UI/Scheduler/UIxCalInlineMonthOverview.h: interface extracted
|
|
from its .m file.
|
|
|
|
* UI/Scheduler/UIxCalFilterPanel.[hm]: new class designed to
|
|
display a widget to handle the information displayed in the
|
|
appointments list. Not currently used, lacks implementation.
|
|
|
|
* UI/Scheduler/UIxCalDateSelector.[hm]: new class designed to
|
|
display a calendar as a dynamic widget from where one can select
|
|
the current visible day.
|
|
|
|
* UI/Scheduler/NSCalendarDate+Scheduler.[hm]: category code
|
|
extracted from UIxCalInlineMonthOverview.m.
|
|
|
|
* UI/Scheduler/UIxDatePicker.m: removed the jsPopup, jsCode and
|
|
calendarPageURL methods. The javascript code is handled by .js
|
|
files as much as possible...
|
|
|
|
* UI/WebServerResources/ContactsUI.js,
|
|
UI/WebServerResources/MailerUI.js: adapted to the code refactoring
|
|
in generic.js.
|
|
|
|
* UI/WebServerResources/SchedulerUI.js: implemented functions to
|
|
handle the new widgets. XmlHTTPRequest code taken from
|
|
MailerUI.js.
|
|
|
|
* UI/WebServerResources/generic.js: put some functions related to
|
|
element selections as methods to HTMLElement and HTMLTableElement.
|
|
|
|
* UI/Scheduler/UIxCalAptListView.[hm]: new class designed to
|
|
display the list of appointments (embodies the code-size of
|
|
UIxCalAptListView; answers to the "aptlist" method).
|
|
|
|
2006-08-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxCalWeekOverview.m ([UIxCalWeekOverview
|
|
-correctURLAction]): new short action method replacing the method
|
|
below by taking far less code.
|
|
|
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
|
([SOGoAppointmentFolder -GETAction:]): removed method. Replaced
|
|
with an action in the view-related code.
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m: invoke
|
|
"stringByEscapingHTMLString" on the resulting value to avoid
|
|
issues with accented characters.
|
|
([-jsCode]): removed method since the javascript code was merged
|
|
into SchedulerUI.js.
|
|
|
|
2006-08-14 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/iCalPerson+UIx.m ([iCalPerson +personWithUid:]):
|
|
new class method that returns an iCalPerson based on the UID given
|
|
as param.
|
|
|
|
* UI/Contacts/UIxContactsListViewContainerBase.m:
|
|
UIxContactsListViewContainer renamed to serve as a base class for
|
|
the contact lists in both the contact editor and the contact
|
|
selectors.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.m
|
|
([SOGoContactLDAPFolder
|
|
-LDAPSetHostname:setPort:setBindDN:setBindPW:setContactIdentifier:
|
|
setUserIdentifier:setRootDN:]): an LDAP field specifying the
|
|
loginname of the users can now be specified.
|
|
|
|
* UI/WebServerResources/generic.js: added code to manage contact
|
|
lists through the new implementation of the UIxContactSelector.
|
|
|
|
* UI/Templates: put the templates related to SchedulerUI in its
|
|
own directory.
|
|
|
|
* SoObjects/Contacts/NGLdapEntry+Contact.m ([NGLdapEntry
|
|
-asDictionaryWithAttributeNames:withUID:andCName:cName]): add an
|
|
entry for "uid" with the field name representing the login name of
|
|
the user in the corresponding LDAP branch.
|
|
|
|
2006-08-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.m ([SOGoContactGCSFolder
|
|
-lookupName:_keyinContext:_ctxacquire:_flag]): when the HTTP
|
|
request is a PUT, always create an entry, even if we're not sure
|
|
it does exist.
|
|
|
|
2006-08-09 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/ContactsUI.js: implemented live-search.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.m ([SOGoContactFolders
|
|
-appendSystemSourcesInContext:context]): populated method with
|
|
code that creates entries mapped to instances SOGoContactFolder,
|
|
based on the configuration found in the NSUserDefaults under the
|
|
key "SOGoLDAPAddressBooks".
|
|
([SOGoContactFolders
|
|
-lookupName:nameinContext:contextacquire:acquire]):
|
|
"contactsources" do not exist anymore, SOGoContactFolder was split
|
|
into two classes: SOGoContactGCSFolder and SOGoContactLDAPFolder
|
|
and one protocol: SOGOContactFolder, instead.
|
|
([SOGoContactFolders -contactFolders]): new accessor used by the
|
|
views of SOGoContactXXXFolder to list the possible sources.
|
|
|
|
* SoObjects/Contacts/SOGoContactObject.h: new protocol that
|
|
defines the methods that UIxContactsView, ..Editor and so on...
|
|
can expect.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolder.h: new protocol that
|
|
defines the methods that UIxContactsListViewBase expects as well
|
|
as the data fields returned in the contact lists.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPFolder.[hm]: new class that
|
|
returns entries an LDAP server. Conforms to the new
|
|
SOGOContactFolder protocol.
|
|
|
|
* SoObjects/Contacts/SOGoContactLDAPEntry.[hm]: new class that
|
|
returns a vCard based on contact entries from an LDAP server.
|
|
Conforms to the new SOGOContactObject protocol.
|
|
|
|
* SoObjects/Contacts/NGVCardSimpleValue+Contact.m
|
|
([NGVCardSimpleValue -vCardEntryString]): generates the correct
|
|
entry for the textual representation of the vCard.
|
|
|
|
* SoObjects/Contacts/NGVCardSimpleValue+Contact.[hm]: new class
|
|
extension.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSEntry.[hm]: new module name of
|
|
"SOGoContactObject".
|
|
|
|
* SoObjects/Contacts/NGVCard+Contact.m ([NGVCard -asString]): new
|
|
method that generates a textual representation of the vcard.
|
|
|
|
* SoObjects/Contacts/NGVCard+Contact.[hm]: new class extension.
|
|
|
|
* SoObjects/Contacts/SOGoContactGCSFolder.[hm]: new module name of
|
|
"SOGoContactFolder".
|
|
|
|
* SoObjects/Contacts/SOGoContactSource.h,
|
|
SoObjects/Contacts/SOGoPersonalAB.[hm]: unused classes and
|
|
protocols.
|
|
|
|
* SoObjects/Contacts/NGLdapEntry+Contact.m ([NGLdapEntry
|
|
-singleAttributeWithName:key]): new method that returns the first
|
|
object associated with an ldap key (where generally one value is
|
|
returned by key).
|
|
([NGLdapEntry
|
|
-asDictionaryWithAttributeNames:attributeNamesandCName:cName]):
|
|
map the entry into an NSDictionary for processing by
|
|
UIxContactsListViewBase.m with the least possible overhead.
|
|
|
|
* SoObjects/Contacts/NGLdapEntry+Contact.[hm]: new class
|
|
extension.
|
|
|
|
2006-08-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.m ([SOGoUserFolder
|
|
-privateContacts:inContext:]): now returns an instance of
|
|
SOGoContactFolders.
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.m
|
|
([UIxContactsListViewContainer -contactFolderName]): new method to
|
|
return the absolute path to the current contact folder, called
|
|
from within the template.
|
|
|
|
* UI/Templates/ContactsUI/UIxContactsListViewContainer.wox: added
|
|
JS code to initialize the 'currentContactFolder' generic var.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolder.m ([SOGoContactFolder
|
|
+contactFolderWithSource:inContainer:andName:]): new class
|
|
method meant to return an instance connected to the specified
|
|
source. Currently useless but won't be anymore in the next few
|
|
days.
|
|
|
|
* SoObjects/SOGo/SOGoUserFolder.h: commented out declaration of
|
|
the "lookupFreeBusyObject" method since it does not exist.
|
|
|
|
* UI/Contacts/UIxContactFoldersView.[hm]: new class module serving
|
|
as a "view" for the SOGoContactFolders object. Does nothing but
|
|
redirect the browser to the URL of the personal address book of
|
|
the user. It does not even have a template.
|
|
|
|
* SoObjects/Contacts/SOGoPersonalAB.[hm]: new class module
|
|
implementing the SOGoContactSource protocol. Does nothing
|
|
currently but will be used to implement access to the personal
|
|
address book of the user stored in the SOGo database.
|
|
|
|
* SoObjects/Contacts/SOGoContactSource.h: new "SOGoContactSource"
|
|
protocol defining an API common to all possible types of contact
|
|
sources.
|
|
|
|
* SoObjects/Contacts/SOGoContactFolders.[hm]: new class module
|
|
serving as the root of the contact folders available to the
|
|
current user. Correctly lists the contact sources in webdav.
|
|
|
|
2006-08-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailAccountsView.m ([UIxMailAccountsView
|
|
-composeAction]): new action method that permits external object
|
|
to write a message from the default (primary) account.
|
|
|
|
* UI/Contacts/UIxContactEditorBase.m ([UIxContactEditorBase
|
|
-initSnapshot]): new method with code taken from "defaultAction"
|
|
but needed for others.
|
|
([UIxContactEditorBase -writeAction]): new action designed to
|
|
compose the correct URL needed to obtain the MailerUI's email
|
|
editor with the correct "mailto" parameter.
|
|
|
|
* UI/Common/UIxSortableTableHeader.m: moved from MailerUI to
|
|
Common so that other modules can use it.
|
|
|
|
* UI/Contacts/UIxContactsListViewContainer.m: container to make it
|
|
easier to manage both ajax and non-ajax requests.
|
|
|
|
* UI/Contacts/UIxContactsFilterPanel.m: clone of
|
|
UIxMailFilterPanel, but applicable to contact lists.
|
|
|
|
* SoObjects/Contacts/NSDictionary+Contact.m ([NSDictionary
|
|
-vcardContentFromSOGoContactRecord]): use the new standard methods
|
|
created for each type of entry. If a line is determined to not
|
|
contain information, it will be skipped.
|
|
|
|
* SoObjects/SOGo/AgenorUserManager.m ([AgenorUserManager
|
|
+initialize]): init defaultMailDomain with the user default
|
|
"SOGoDefaultMailDomain".
|
|
|
|
2006-08-02 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Contacts/UIxContactEditorBase.m ([UIxContactEditorBase
|
|
-saveAction]): reorganized methods to only have ONE return point.
|
|
Invoke saveRecord: directly on the clientObject instead of
|
|
saveContentString, which does the same thing anyway.
|
|
|
|
* SoObjects/Contacts/NSDictionary+Contact.m
|
|
([NSDictionary -vcardContentFromSOGoContactRecord]): extension
|
|
method to convert the dictionary returned with the user submission
|
|
to a record in VCARD format to be stored in the database.
|
|
|
|
2006-08-01 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js: when opening the context menu
|
|
of the message list, select the message below the mouse cursor and
|
|
deselect the other selected messages temporarily. This mimics the
|
|
behaviour of Thunderbird for that matter and was already
|
|
implemented for the entries of the folder tree.
|
|
|
|
* UI/MailerUI/UIxMailFolderMenu.m ([UIxMailFolderMenu
|
|
-iconForMenuItem]): new method that returns the fully qualified
|
|
relative URL to the icon representing the mailbox, or the default
|
|
mailbox icon if needed.
|
|
|
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent
|
|
-urlForResourceFilename:filename]): automatically return an empty
|
|
string whenever the filename passed as argument is nil.
|
|
|
|
* UI/WebServerResources/MailerUI.js: open the mailboxes with the
|
|
"desc" parameter set to 1 so that they are sorted in descending
|
|
order by default. Also, added "onHeaderClick()", triggered by
|
|
clicking on the message list header elements.
|
|
|
|
* UI/MailerUI/UIxMailSortableTableHeader.m
|
|
([UIxMailSortableTableHeader -isSortedDescending]): same as below.
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
|
-isSortedDescending]): defaults to "YES" when the sort order is
|
|
not specified.
|
|
|
|
2006-07-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/MailerUI.js:
|
|
- message cache: set the max num of cached messages to 20. Limit
|
|
the cached message size to 30000 bytes.
|
|
- ajax: when a message request is called while one is already
|
|
being performed, the latter will be cancelled. Idem when
|
|
retrieving the content of a mailbox.
|
|
- folder tree: when a mailbox is selected because of the URL
|
|
requested (initMailboxSelection), the dtree is expanded throughout
|
|
the mailbox entry's parent hierarchy to ensure it is made visible
|
|
when the page is being displayed. (new function: expandUpperTree).
|
|
- mailbox loading: when loading a mailbox where a message was
|
|
previously selected, we invoke its url with the "pageforuid"
|
|
parameter correctly specified. During callback processing, we scan
|
|
the table for the related row and reselect it.
|
|
Also, the message area is set blank before loading any mailbox.
|
|
|
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
|
-defaultAction]): if the "pageforuid" parameter is passed in the
|
|
url, take its value and invoke [self firstMessageOfPageFor:]
|
|
consequently to deduce the first message to display. Otherwise,
|
|
set it to "idx", otherwise set it to 0.
|
|
([UIxMailListView -firstMessageOfPageFor:]): new method
|
|
that determines the first message of the page where the message
|
|
passed as parameter is contained.
|
|
|
|
* UI/WebServerResources/UIxMailListView.js: removed this module,
|
|
its code was put in MailerUI.js instead.
|
|
|
|
2006-07-28 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/UIxMailFolderMenu.m: a descendent of UIxMailTree
|
|
which returns the nodes for the parent specified in "parentMenu".
|
|
Used to generate the javascript code for the folder dtree.
|
|
|
|
* UI/Templates/MailerUI/UIxMailPanelFrame.wox: the components
|
|
using that container-template are now using UIxMailMainFrame
|
|
since UIxMailPanelFrame had no real interest. File removed.
|
|
|
|
* UI/WebServerResources/dtree.{css,js}: new files to handle
|
|
javascript-generated mailbox tree. Modified from original version
|
|
by integrating the previous code with the one we are using for
|
|
selections and mailbox handling. Minor visual enhancements too...
|
|
|
|
2006-07-25 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* SoObjects/Mailer/SOGoUser+Mail.m: if only one identity is to be
|
|
returned, put it in an NSArray before returning it (fixes
|
|
bug#217).
|
|
|
|
2006-07-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/SOGoUI/NSString+URL.m ([NSString -hostlessURL]): new method
|
|
that returns a url string stripped from its "http://hostname"
|
|
prefix.
|
|
|
|
* UI/SOGoUI/NSDictionary+URL.[hm]: moved from UI/Common.
|
|
|
|
* UI/SOGoUI/NSString+URL.[hm]: moved from UI/Common.
|
|
|
|
2006-07-17 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/MailerUI/WOContext+UIxMailer.m ([WOContext
|
|
-mailDateFormatter]): retrieve the timezone from the user settings
|
|
and pass it to the returned dateFormatter. Also, the dateFormatter
|
|
is kept in a static variable to avoid useless
|
|
creations/destructions.
|
|
|
|
* UI/MailerUI/UIxMailFormatter.m ([UIxMailDateFormatter
|
|
-setTimeZone:newTimeZone]): new accessor to specify the timezone.
|
|
|
|
* UI/MailerUI/UIxMailFilterPanel.m ([UIxMailFilterPanel -setSearchCriteria:])
|
|
([UIxMailFilterPanel -searchCriteria]): new methods, similar to
|
|
s/Criteria/Text/ to handle the "criteria" form parameter.
|
|
|
|
2006-07-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/WebServerResources/uix.css: enhanced the toolbar appearance
|
|
to integrate better with the firefox look&feel. Added entries for
|
|
the new "menu" DIV class (popup menus).
|
|
|
|
* UI/WebServerResources/generic.js: added "sanitizeMailTo" which
|
|
takes any chunk of text as param, detects the user email and the
|
|
optional first and last names and return them in a well-formatted
|
|
way. Renamed "getSelection" to "getSelectedNodes" to avoid a
|
|
namespace conflict. Added "onMenuClick(node, event, menuId)" to
|
|
handle popup menus through "onclick" element attributes (node =
|
|
this, event = event and menuId = name of the menu DIV id to
|
|
popup).
|
|
|
|
* UI/Contacts/UIxContactEditorBase.m ([UIxContactEditorBase
|
|
-snapshot]): add an entry for "email" into the snapshot
|
|
dictionary if a "contactEmail" URL parameter was detected and if
|
|
the entry for "email" is empty.
|
|
|
|
* UI/Contacts/Toolbars/SOGoContactFolder.toolbar: the "new card"
|
|
button now invokes the newContact() js function in ContactsUI.js
|
|
instead of opening "new" directly. newContact() pops up a window
|
|
stripped from its navigation bar.
|
|
|
|
* UI/Contacts/ContactsUI.js: new module specific to the ContactsUI
|
|
bundle (AddressBook).
|
|
|
|
* UI/Templates/MailerUI/UIxMailView.wox: added a div of class
|
|
"menu" and id "addressMenu" have the header email addresses
|
|
display it with the new menu code in generic.js.
|
|
|
|
* UI/Templates/MailerUI/UIxMailPanelFrame.wox: same as below +
|
|
replaced the body tables with a div of class "pageContent"
|
|
(standardization across the page templates).
|
|
|
|
* UI/Templates/MailerUI/UIxMailMainFrame.wox: include
|
|
productJavaScriptURL and pageJavaScriptURL (conditionnally) since
|
|
those are now inherited from UIxPageFrame.
|
|
|
|
* UI/MailerUI/UIxMailView.js: new file specific to UIxMailView.
|
|
|
|
* UI/MailerUI/UIxMailToSelection.m ([UIxMailToSelection -to]): if
|
|
a "mailto" URL parameter is detected and the "to" array is empty,
|
|
initialize "to" with the value of "mailto" before returning it.
|
|
|
|
* UI/MailerUI/UIxMailEditorAction.m ([UIxMailEditorAction
|
|
-composeAction]): rewrote method in a cleaner way and with usage
|
|
of the URL extensions to NSString and NSDictionary (see below).
|
|
Also, if a "mailto" url parameter is detected, pass it to the
|
|
redirected url.
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m: subclassed from UIxPageFrame to
|
|
reduce code.
|
|
|
|
* UI/Common/NSDictionary+URL.m ([NSDictionary -asURLParameters]):
|
|
returns a parameter string to add to a base URL.
|
|
|
|
* UI/Common/NSString+URL.m ([NSString
|
|
-composeURLWithAction:parameters:andHash:useHash]): new method to
|
|
compose a complete URL from an object URL with parameters and an
|
|
optional '#' character.
|
|
|
|
* UI/Common/UIxPageFrame.h: separated interface from
|
|
UIxPageFrame.m.
|
|
|
|
2006-07-07 Wsourdeau Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Scheduler/UIxAppointmentEditor.m: returns yes to "isPopup";
|
|
|
|
* UI/WebServerResources/generic.js: added code to manage
|
|
selections within HTML containers.
|
|
|
|
* UI/Common/UIxPageFrame.m ([UIxPageFrame -productJavaScriptURL]):
|
|
added method to determine the possible URL for a product-specific
|
|
javascript filename of the forme <productname>.js.
|
|
([UIxPageFrame -hasProductSpecificJavaScript]): new method.
|
|
([UIxPageFrame -isPopup]): new method to determine whether the
|
|
application navigator bar should be displayed (main page) or not
|
|
(popup page).
|
|
|
|
* SoObjects/SOGo/SOGoAuthenticator.m ([SOGoAuthenticator
|
|
-LDAPCheckLogin:_loginpassword:_pwd]): new method to authenticate
|
|
the user through LDAP.
|
|
|
|
2006-07-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* The toolbar code from the MailerUI product was taken, renamed as
|
|
"UIxToolBar" and put into UI/Common. Toolbar plists were created
|
|
for the Contacts and Scheduler products and put in their respectir
|
|
Toolbars/ subdirectories. Finally,
|
|
UI/Templates/{UIxToolbarButton,UIxToolbarSeparator}.wox, and
|
|
UI/Common/{UIxToolbarButton,UIxToolbarSeparator}.m were removed
|
|
and an invocation to the UIxToolbar component was put at the top
|
|
of UI/Templaces/UIxPageFrame.wox.
|
|
|
|
* UI/Common/UIxToolbar.m: new "isLastGroup" method to determine
|
|
within the templates whether a separator should be displayed.
|
|
|
|
* UI/Common/UIxToolbar.m ([UIxToolbar -hasButtons]): new method
|
|
that returns NO if the toolbar is empty.
|
|
|
|
2006-07-05 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
|
|
|
* UI/Templates/UIxPageFrame.wox: replaced central table with a DIV.
|
|
|
|
* UI/Common/UIxToolbarSeparator.m, UI/Common/UIxToolbarButton.m:
|
|
new toolbar objects.
|
|
|
|
* UI/Templates/UIxPageFrame.wox: use the exact html code as below.
|
|
|
|
* UI/Templates/MailerUI/UIxMailMainFrame.wox: redone the
|
|
linkbanner as a DIV instead of a TABLE.
|
|
|
|
* UI/MailerUI/UIxMailMainFrame.m [UIxMailMainFrame
|
|
showLinkBanner]:
|
|
returns 'YES' to request the display of the navigation bar between
|
|
applets.
|
|
|
|
2006-06-15 ludovic@inverse.ca
|
|
|
|
* It's now possible to set the default
|
|
domain using for email using the
|
|
SOGoDefaultMailDomain preference key.
|
|
|
|
2006-06-15 ludovic@inverse.ca
|
|
|
|
* Initial import of SOGo from trunk.
|
|
|