merge of '5ca0171c2820bdea8fa61c516f7b07890504fe94'
and 'ae600dde90a09517ff2cad4629bd94dc68652e03' Monotone-Parent: 5ca0171c2820bdea8fa61c516f7b07890504fe94 Monotone-Parent: ae600dde90a09517ff2cad4629bd94dc68652e03 Monotone-Revision: f515f427a2758c70b0acbdb399f62573b5979407 Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2009-10-23T21:20:45 Monotone-Branch: ca.inverse.sogomaint-2.0.2
commit
e54807ff39
64
ChangeLog
64
ChangeLog
|
@ -1,3 +1,17 @@
|
||||||
|
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>
|
2009-10-23 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
* UI/MailerUI/UIxMailMainFrame.m (-formattedMailtoString:): fixed
|
* UI/MailerUI/UIxMailMainFrame.m (-formattedMailtoString:): fixed
|
||||||
|
@ -2300,7 +2314,7 @@
|
||||||
2009-03-24 Francis Lachapelle <flachapelle@inverse.ca>
|
2009-03-24 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -invalidateLanguage]):
|
* SoObjects/SOGo/SOGoUser.m ([SOGoUser -invalidateLanguage]):
|
||||||
new method to invalidate the language ivar.
|
new method to invalidate the language ivar.
|
||||||
|
|
||||||
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage -connectAction]): must
|
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage -connectAction]): must
|
||||||
invalidate user's language ivar when it changes.
|
invalidate user's language ivar when it changes.
|
||||||
|
@ -2453,10 +2467,10 @@
|
||||||
|
|
||||||
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage -version]): new method
|
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage -version]): new method
|
||||||
that returns the application version.
|
that returns the application version.
|
||||||
|
|
||||||
* SOPE/NGCards/iCalDateTime.m ([iCalDateTime -dateTime]): when not
|
* SOPE/NGCards/iCalDateTime.m ([iCalDateTime -dateTime]): when not
|
||||||
defined, the timezone is now guessed from the date of the current object.
|
defined, the timezone is now guessed from the date of the current object.
|
||||||
|
|
||||||
2009-03-18 Ludovic Marcotte <lmarcotte@inverse.ca>
|
2009-03-18 Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||||
|
|
||||||
* Updated the documentation for the SOGo
|
* Updated the documentation for the SOGo
|
||||||
|
@ -2534,7 +2548,7 @@
|
||||||
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
* UI/Scheduler/UIxCalListingActions.m ([UIxCalListingActions
|
||||||
-_fixDates:]): moved corrections for daylight saving time in this
|
-_fixDates:]): moved corrections for daylight saving time in this
|
||||||
new method.
|
new method.
|
||||||
|
|
||||||
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
||||||
([SOGoAppointmentFolder
|
([SOGoAppointmentFolder
|
||||||
-fixupCycleRecord:_recordcycleRange:_rfirstInstanceCalendarDateRange:_firforViewRange:_viewRange]):
|
-fixupCycleRecord:_recordcycleRange:_rfirstInstanceCalendarDateRange:_firforViewRange:_viewRange]):
|
||||||
|
@ -2876,7 +2890,7 @@
|
||||||
this new method.
|
this new method.
|
||||||
|
|
||||||
2009-01-06 Ludovic Marcotte <lmarcotte@inverse.ca>
|
2009-01-06 Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||||
|
|
||||||
* SoObjects/Appointments/SOGoCalendarComponent.m
|
* SoObjects/Appointments/SOGoCalendarComponent.m
|
||||||
([SOGoCalendarComponent -_filterComponent:]):
|
([SOGoCalendarComponent -_filterComponent:]):
|
||||||
We now set the proper component summary just like
|
We now set the proper component summary just like
|
||||||
|
@ -3026,7 +3040,7 @@
|
||||||
at once.
|
at once.
|
||||||
|
|
||||||
2008-12-14 Ludovic Marcotte <lmarcotte@inverse.ca>
|
2008-12-14 Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||||
|
|
||||||
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
||||||
([SOGoAppointmentFolder -_buildStripFieldsFromFields:]):
|
([SOGoAppointmentFolder -_buildStripFieldsFromFields:]):
|
||||||
Don't strip the c_isopaque for the DAndTViewer role.
|
Don't strip the c_isopaque for the DAndTViewer role.
|
||||||
|
@ -3100,7 +3114,7 @@
|
||||||
([UIxMailPartICalActions -_setupChosenEventAndEventObject:]):
|
([UIxMailPartICalActions -_setupChosenEventAndEventObject:]):
|
||||||
fixed comparison of the calendar and email event when dealing with
|
fixed comparison of the calendar and email event when dealing with
|
||||||
an occurence of a repeating event.
|
an occurence of a repeating event.
|
||||||
([UIxMailPartICalActions -_updateAttendee:ownerUser:forEventUID:withRecurrenceId:forUID:shouldAddSentBy:]):
|
([UIxMailPartICalActions -_updateAttendee:ownerUser:forEventUID:withRecurrenceId:forUID:shouldAddSentBy:]):
|
||||||
fixed handling of status update for one occurence of a repeating event.
|
fixed handling of status update for one occurence of a repeating event.
|
||||||
|
|
||||||
* SoObjects/Appointments/SOGoAppointmentObject.m
|
* SoObjects/Appointments/SOGoAppointmentObject.m
|
||||||
|
@ -3155,7 +3169,7 @@
|
||||||
* We no longer show the previous/new location
|
* We no longer show the previous/new location
|
||||||
if it's empty in the invitation update templates.
|
if it's empty in the invitation update templates.
|
||||||
|
|
||||||
2008-11-26 Ludovic Marcotte <lmarcotte@inverse.ca>
|
2008-11-26 Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||||
|
|
||||||
* SoObjects/SOGo/SOGoGCSFolder.m
|
* SoObjects/SOGo/SOGoGCSFolder.m
|
||||||
We correctly wrap ACL additions around a
|
We correctly wrap ACL additions around a
|
||||||
|
@ -3271,7 +3285,7 @@
|
||||||
the SENT-BY into account.
|
the SENT-BY into account.
|
||||||
|
|
||||||
2008-11-11 Ludovic Marcotte <lmarcotte@inverse.ca>
|
2008-11-11 Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||||
|
|
||||||
* Fixed a couple of issues in the new pref caching
|
* Fixed a couple of issues in the new pref caching
|
||||||
subsystem.
|
subsystem.
|
||||||
* Cleaned up the caching code and activated
|
* Cleaned up the caching code and activated
|
||||||
|
@ -3330,7 +3344,7 @@
|
||||||
* UI/Contacts/UIxContactFoldersView.m ([WOActionResults
|
* UI/Contacts/UIxContactFoldersView.m ([WOActionResults
|
||||||
allContactSearchAction]): returned array is now properly
|
allContactSearchAction]): returned array is now properly
|
||||||
initialized if no result is found.
|
initialized if no result is found.
|
||||||
|
|
||||||
2008-10-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
2008-10-15 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||||
|
|
||||||
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
||||||
|
@ -3582,8 +3596,8 @@
|
||||||
2008-09-08 Ludovic Marcotte <lmarcotte@inverse.ca>
|
2008-09-08 Ludovic Marcotte <lmarcotte@inverse.ca>
|
||||||
|
|
||||||
* SoObjects/SOGo/LDAPSource.m ([LDAPSource
|
* SoObjects/SOGo/LDAPSource.m ([LDAPSource
|
||||||
-checkLogin:loginToCheckandPassword:passwordToCheck])
|
-checkLogin:loginToCheckandPassword:passwordToCheck])
|
||||||
([LDAPSource -allEntryIDs])
|
([LDAPSource -allEntryIDs])
|
||||||
([LDAPSource -fetchContactsMatching:match])
|
([LDAPSource -fetchContactsMatching:match])
|
||||||
([LDAPSource -lookupContactEntry:entryID])
|
([LDAPSource -lookupContactEntry:entryID])
|
||||||
([LDAPSource -lookupContactEntryWithUIDorEmail:uid]): catch any
|
([LDAPSource -lookupContactEntryWithUIDorEmail:uid]): catch any
|
||||||
|
@ -3702,7 +3716,7 @@
|
||||||
found, we try "body"->"parts".
|
found, we try "body"->"parts".
|
||||||
|
|
||||||
2008-08-26 Francis Lachapelle <flachapelle@inverse.ca>
|
2008-08-26 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
* UI/MailerUI/UIxMailMainFrame.m ([composeAction]): build the
|
* UI/MailerUI/UIxMailMainFrame.m ([composeAction]): build the
|
||||||
contact's fullname from its card's attribute "n" if "fn" is
|
contact's fullname from its card's attribute "n" if "fn" is
|
||||||
not defined.
|
not defined.
|
||||||
|
@ -3822,7 +3836,7 @@
|
||||||
UI/WebServerResources/tbtv_leaf_corner_17x17.gif
|
UI/WebServerResources/tbtv_leaf_corner_17x17.gif
|
||||||
UI/WebServerResources/tbtv_sent_17x17.gif
|
UI/WebServerResources/tbtv_sent_17x17.gif
|
||||||
UI/WebServerResources/tbtv_trash_17x17.gif
|
UI/WebServerResources/tbtv_trash_17x17.gif
|
||||||
|
|
||||||
2008-08-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
2008-08-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||||
|
|
||||||
* UI/PreferencesUI/UIxAdditionalPreferences.[hm]: new template
|
* UI/PreferencesUI/UIxAdditionalPreferences.[hm]: new template
|
||||||
|
@ -5128,7 +5142,7 @@
|
||||||
per-connection cache mechanism.
|
per-connection cache mechanism.
|
||||||
|
|
||||||
2008-01-16 Ludovic Marcotte <ludovic@inverse.ca>
|
2008-01-16 Ludovic Marcotte <ludovic@inverse.ca>
|
||||||
|
|
||||||
* Minor adjustments / bug fixes to previous commit.
|
* Minor adjustments / bug fixes to previous commit.
|
||||||
|
|
||||||
2008-01-14 Ludovic Marcotte <ludovic@inverse.ca>
|
2008-01-14 Ludovic Marcotte <ludovic@inverse.ca>
|
||||||
|
@ -5152,7 +5166,7 @@
|
||||||
comma-separated list of email addresses.
|
comma-separated list of email addresses.
|
||||||
|
|
||||||
2007-12-21 Ludovic Marcotte <ludovic@inverse.ca>
|
2007-12-21 Ludovic Marcotte <ludovic@inverse.ca>
|
||||||
|
|
||||||
* UI/Contacts/UIxContactView.m
|
* UI/Contacts/UIxContactView.m
|
||||||
Modified -secondaryEmail so that we always get
|
Modified -secondaryEmail so that we always get
|
||||||
the "last" email address in case no preferred
|
the "last" email address in case no preferred
|
||||||
|
@ -5209,7 +5223,7 @@
|
||||||
encoded by SOPE.
|
encoded by SOPE.
|
||||||
|
|
||||||
* SoObjects/Mailer/SOGoDraftObject.m
|
* SoObjects/Mailer/SOGoDraftObject.m
|
||||||
Minor cleanups.
|
Minor cleanups.
|
||||||
|
|
||||||
2007-12-13 Francis Lachapelle <flachapelle@inverse.ca>
|
2007-12-13 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
|
@ -5281,7 +5295,7 @@
|
||||||
* UI/MailPartViewers/UIxMailRenderingContext.{h,m}
|
* UI/MailPartViewers/UIxMailRenderingContext.{h,m}
|
||||||
Removed template caching which added very little
|
Removed template caching which added very little
|
||||||
and created re-entrant issues.
|
and created re-entrant issues.
|
||||||
|
|
||||||
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
* UI/MailPartViewers/UIxMailPartHTMLViewer.m
|
||||||
Added a hack (and stated so in the source file)
|
Added a hack (and stated so in the source file)
|
||||||
to avoid what seems to be a bug in libxml.
|
to avoid what seems to be a bug in libxml.
|
||||||
|
@ -5626,9 +5640,9 @@
|
||||||
* SoObjects/Mailer/SOGoDraftObject.m
|
* SoObjects/Mailer/SOGoDraftObject.m
|
||||||
Modified _fillInReplyAddresses:replyToAll:envelope:
|
Modified _fillInReplyAddresses:replyToAll:envelope:
|
||||||
so that if there's no recipient, we add at least
|
so that if there's no recipient, we add at least
|
||||||
ourself to the list.
|
ourself to the list.
|
||||||
Fixed a mem leak in the same method.
|
Fixed a mem leak in the same method.
|
||||||
|
|
||||||
2007-11-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
2007-11-22 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||||
|
|
||||||
* UI/MailPartViewers/UIxMailRenderingContext.m
|
* UI/MailPartViewers/UIxMailRenderingContext.m
|
||||||
|
@ -6608,12 +6622,12 @@
|
||||||
* UI/WebServerResources/MailerUI.js
|
* UI/WebServerResources/MailerUI.js
|
||||||
We check if at least one message is selected
|
We check if at least one message is selected
|
||||||
before performing a Reply/Reply All/Forward
|
before performing a Reply/Reply All/Forward
|
||||||
|
|
||||||
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
||||||
and others - implemented support for recurring
|
and others - implemented support for recurring
|
||||||
events (with some known limitations right now,
|
events (with some known limitations right now,
|
||||||
all soon to be fixed).
|
all soon to be fixed).
|
||||||
|
|
||||||
2007-10-04 Francis Lachapelle <flachapelle@inverse.ca>
|
2007-10-04 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
* Main/SOGo.m ([SOGo -isUserName:_keyinContext:_ctx]): removed
|
* Main/SOGo.m ([SOGo -isUserName:_keyinContext:_ctx]): removed
|
||||||
|
@ -6782,7 +6796,7 @@
|
||||||
* UI/SOGoUI/UIxComponent.m ([UIxComponent -responseWith204]): new
|
* UI/SOGoUI/UIxComponent.m ([UIxComponent -responseWith204]): new
|
||||||
method that returns a WOResponse initialized with the 204 status
|
method that returns a WOResponse initialized with the 204 status
|
||||||
code.
|
code.
|
||||||
|
|
||||||
* UI/MailerUI/UIxMailListView.m ([UIxMailListView -sortedUIDs]):
|
* UI/MailerUI/UIxMailListView.m ([UIxMailListView -sortedUIDs]):
|
||||||
always use a "not deleted" search qualifier along with the user
|
always use a "not deleted" search qualifier along with the user
|
||||||
qualifier (if present).
|
qualifier (if present).
|
||||||
|
@ -9088,7 +9102,7 @@
|
||||||
* SoObjects/SOGo/NSArray+Utilities.m: added an implementation of
|
* SoObjects/SOGo/NSArray+Utilities.m: added an implementation of
|
||||||
makeObjectsPerform:withObject:withObject: for GNUstep
|
makeObjectsPerform:withObject:withObject: for GNUstep
|
||||||
compatibility.
|
compatibility.
|
||||||
|
|
||||||
* OGoContentStore/GNUmakefile, Protocols/common.make,
|
* OGoContentStore/GNUmakefile, Protocols/common.make,
|
||||||
SoObjects/common.make, UI/common.make: install in
|
SoObjects/common.make, UI/common.make: install in
|
||||||
GNUSTEP_INSTALLATION_DIR instead of GNUSTEP_USER_DIR.
|
GNUSTEP_INSTALLATION_DIR instead of GNUSTEP_USER_DIR.
|
||||||
|
@ -10985,5 +10999,5 @@
|
||||||
SOGoDefaultMailDomain preference key.
|
SOGoDefaultMailDomain preference key.
|
||||||
|
|
||||||
2006-06-15 ludovic@inverse.ca
|
2006-06-15 ludovic@inverse.ca
|
||||||
|
|
||||||
* Initial import of SOGo from trunk.
|
* Initial import of SOGo from trunk.
|
||||||
|
|
|
@ -124,6 +124,8 @@
|
||||||
if ((self = [self initWithName: newName
|
if ((self = [self initWithName: newName
|
||||||
inContainer: newContainer]))
|
inContainer: newContainer]))
|
||||||
{
|
{
|
||||||
|
if (![newDisplayName length])
|
||||||
|
newDisplayName = newName;
|
||||||
ASSIGN (displayName, newDisplayName);
|
ASSIGN (displayName, newDisplayName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -170,7 +170,8 @@ static NSString *LDAPContactInfoAttribute = nil;
|
||||||
if (![securityManager validatePermission: SOGoPerm_AccessObject
|
if (![securityManager validatePermission: SOGoPerm_AccessObject
|
||||||
onObject: currentFolder inContext: context]
|
onObject: currentFolder inContext: context]
|
||||||
&& [[currentFolder ownerInContext: context]
|
&& [[currentFolder ownerInContext: context]
|
||||||
isEqualToString: folderOwner])
|
isEqualToString: folderOwner]
|
||||||
|
&& [NSStringFromClass([currentFolder class]) compare: @"SOGoWebAppointmentFolder"] != NSOrderedSame)
|
||||||
{
|
{
|
||||||
folderName = [NSString stringWithFormat: @"/%@/%@",
|
folderName = [NSString stringWithFormat: @"/%@/%@",
|
||||||
[parentFolder nameInContainer],
|
[parentFolder nameInContainer],
|
||||||
|
|
|
@ -104,36 +104,54 @@ static NSLock *lock = nil;
|
||||||
NSString *sourceID, *value, *type;
|
NSString *sourceID, *value, *type;
|
||||||
NSMutableDictionary *metadata;
|
NSMutableDictionary *metadata;
|
||||||
id<SOGoSource> ldapSource;
|
id<SOGoSource> ldapSource;
|
||||||
|
BOOL isAddressBook;
|
||||||
Class c;
|
Class c;
|
||||||
|
|
||||||
sourceID = [udSource objectForKey: @"id"];
|
sourceID = [udSource objectForKey: @"id"];
|
||||||
type = [udSource objectForKey: @"type"];
|
if ([sourceID length] > 0)
|
||||||
|
{
|
||||||
|
type = [udSource objectForKey: @"type"];
|
||||||
|
|
||||||
if (!type || [type caseInsensitiveCompare: @"ldap"] == NSOrderedSame)
|
if (!type || [type caseInsensitiveCompare: @"ldap"] == NSOrderedSame)
|
||||||
c = [LDAPSource class];
|
c = [LDAPSource class];
|
||||||
else
|
else
|
||||||
c = [SQLSource class];
|
c = [SQLSource class];
|
||||||
|
|
||||||
ldapSource = [c sourceFromUDSource: udSource];
|
ldapSource = [c sourceFromUDSource: udSource];
|
||||||
if (sourceID)
|
if (sourceID)
|
||||||
[_sources setObject: ldapSource forKey: sourceID];
|
[_sources setObject: ldapSource forKey: sourceID];
|
||||||
|
else
|
||||||
|
[self errorWithFormat: @"id field missing in an user source,"
|
||||||
|
@" check the SOGoUserSources defaults"];
|
||||||
|
metadata = [NSMutableDictionary dictionary];
|
||||||
|
value = [udSource objectForKey: @"canAuthenticate"];
|
||||||
|
if (value)
|
||||||
|
[metadata setObject: value forKey: @"canAuthenticate"];
|
||||||
|
value = [udSource objectForKey: @"isAddressBook"];
|
||||||
|
if (value)
|
||||||
|
{
|
||||||
|
[metadata setObject: value forKey: @"isAddressBook"];
|
||||||
|
isAddressBook = [value boolValue];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
isAddressBook = NO;
|
||||||
|
value = [udSource objectForKey: @"displayName"];
|
||||||
|
if (value)
|
||||||
|
[metadata setObject: value forKey: @"displayName"];
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (isAddressBook)
|
||||||
|
[self errorWithFormat: @"addressbook source '%@' has"
|
||||||
|
@" no displayname", sourceID];
|
||||||
|
}
|
||||||
|
value = [udSource objectForKey: @"MailFieldNames"];
|
||||||
|
if (value)
|
||||||
|
[metadata setObject: value forKey: @"MailFieldNames"];
|
||||||
|
[_sourcesMetadata setObject: metadata forKey: sourceID];
|
||||||
|
}
|
||||||
else
|
else
|
||||||
[self errorWithFormat: @"id field missing in an user source,"
|
[self errorWithFormat: @"attempted to register a contact/user source"
|
||||||
@" check the SOGoUserSources defaults"];
|
@" without id (skipped)"];
|
||||||
metadata = [NSMutableDictionary dictionary];
|
|
||||||
value = [udSource objectForKey: @"canAuthenticate"];
|
|
||||||
if (value)
|
|
||||||
[metadata setObject: value forKey: @"canAuthenticate"];
|
|
||||||
value = [udSource objectForKey: @"isAddressBook"];
|
|
||||||
if (value)
|
|
||||||
[metadata setObject: value forKey: @"isAddressBook"];
|
|
||||||
value = [udSource objectForKey: @"displayName"];
|
|
||||||
if (value)
|
|
||||||
[metadata setObject: value forKey: @"displayName"];
|
|
||||||
value = [udSource objectForKey: @"MailFieldNames"];
|
|
||||||
if (value)
|
|
||||||
[metadata setObject: value forKey: @"MailFieldNames"];
|
|
||||||
[_sourcesMetadata setObject: metadata forKey: sourceID];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) _prepareSourcesWithDefaults: (NSUserDefaults *) ud
|
- (void) _prepareSourcesWithDefaults: (NSUserDefaults *) ud
|
||||||
|
|
Loading…
Reference in New Issue