Fix CardDAV collections for OS X

Restored the previous behavior: only the personal addressbook is
returned and only the first source directory is returned (now sorted by
id so you can control which of your addressbook sources you want to
return).
pull/7/merge
Francis Lachapelle 2013-01-09 11:39:29 -05:00
parent cd0244883d
commit 5667bb1b11
3 changed files with 21 additions and 7 deletions

1
NEWS
View File

@ -9,6 +9,7 @@ Enhancements
Bug fixes
- fixed French templates encoding
- fixed CardDAV collections for OS X
2.0.3 (2012-12-06)
------------------

View File

@ -61,7 +61,7 @@
- (NSArray *) davDirectoryGateway
{
NSArray *tag, *sources;
NSArray *tag, *sources, *sorted_sources;
SOGoContactFolders *parent;
SOGoUserManager *um;
NSString *domain, *url;
@ -71,9 +71,11 @@
sources = [um addressBookSourceIDsInDomain: domain];
if ([sources count] > 0)
{
// Only return the first ID from the sorted list of sources
parent = [self privateContacts: @"Contacts" inContext: context];
sorted_sources = [sources sortedArrayUsingSelector: @selector (localizedCaseInsensitiveCompare:)];
url = [NSString stringWithFormat: @"%@%@/", [parent davURLAsString],
[sources objectAtIndex: 0]];
[sorted_sources objectAtIndex: 0]];
tag = [NSArray arrayWithObject:
[NSArray arrayWithObjects: @"href", @"DAV:", @"D",
url, nil]];

View File

@ -151,17 +151,23 @@
|| [self isAppleDAVWithSubstring: @"CalendarAgent/"]);
}
// For 10.6, we see:
//
// Address%20Book/883 CFNetwork/454.12.4 Darwin/10.8.0 (i386) (iMac11%2C3)
//
// For 10.7, we see:
//
// AddressBook/6.0 (1043) CardDAVPlugin/182 CFNetwork/520.0.13 Mac_OS_X/10.7.1 (11B26)
// AddressBook/6.1 (1062) CardDAVPlugin/196 CFNetwork/520.2.5 Mac_OS_X/10.7.2 (11C74)
// AddressBook/6.1 (1083) CardDAVPlugin/200 CFNetwork/520.3.2 Mac_OS_X/10.7.3 (11D50d)
// AddressBook/6.1.2 (1090) CardDAVPlugin/200 CFNetwork/520.4.3 Mac_OS_X/10.7.4 (11E53)
// AddressBook/6.1.3 (1091) CardDAVPlugin/200 CFNetwork/520.5.1 Mac_OS_X/10.7.5 (11G56)
//
// For 10.8, we see:
//
// Mac OS X/10.8 (12A269) AddressBook/1143
// Mac OS X/10.8.1 (12B19) AddressBook/1143
// Mac OS X/10.8.2 (12C60) AddressBook/1167
//
- (BOOL) isMacOSXAddressBookApp
{
@ -170,10 +176,15 @@
cc = [self clientCapabilities];
b = ([[cc userAgent] rangeOfString: @"CFNetwork"].location != NSNotFound
&& ([[cc userAgent] rangeOfString: @"Darwin"].location != NSNotFound
|| [[cc userAgent] rangeOfString: @"Mac OS X"].location != NSNotFound)
&& [[cc userAgent] rangeOfString: @"AddressBook"].location != NSNotFound);
b = (
[[cc userAgent] rangeOfString: @"CFNetwork"].location != NSNotFound
&& [[cc userAgent] rangeOfString: @"Darwin"].location != NSNotFound
|| (
[[cc userAgent] rangeOfString: @"CFNetwork"].location != NSNotFound
|| [[cc userAgent] rangeOfString: @"Mac OS X"].location != NSNotFound
)
&& [[cc userAgent] rangeOfString: @"AddressBook"].location != NSNotFound
);
return b;
}