diff --git a/ChangeLog b/ChangeLog index 051daa279..f1e41d577 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-07-20 Cyril Robert + + * 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 * SoObjects/Appointments/SOGoAppointmentFolder.m diff --git a/SoObjects/Appointments/SOGoAppointmentFolder.m b/SoObjects/Appointments/SOGoAppointmentFolder.m index aa5f28ce2..3891da764 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolder.m +++ b/SoObjects/Appointments/SOGoAppointmentFolder.m @@ -2216,29 +2216,37 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir NSMutableArray *colType; NSArray *gdRT, *gdVEventCol, *gdVTodoCol; NSString *login; + WORequest *request; colType = [NSMutableArray arrayWithCapacity: 10]; [colType addObject: @"collection"]; [colType addObject: [NSArray arrayWithObjects: @"calendar", XMLNS_CALDAV, nil]]; - gdRT = [self groupDavResourceType]; - gdVEventCol = [NSArray arrayWithObjects: [gdRT objectAtIndex: 0], - XMLNS_GROUPDAV, nil]; - [colType addObject: gdVEventCol]; - gdVTodoCol = [NSArray arrayWithObjects: [gdRT objectAtIndex: 1], - XMLNS_GROUPDAV, nil]; - [colType addObject: gdVTodoCol]; - if ([nameInContainer isEqualToString: @"personal"]) + // WARNING + // don't touch unless you're going to re-test caldav sync + // with an iPhone AND lightning + request = [context request]; + if (![request isIPhone]) { - login = [[context activeUser] login]; - if ([login isEqualToString: [self ownerInContext: self]]) + gdRT = [self groupDavResourceType]; + gdVEventCol = [NSArray arrayWithObjects: [gdRT objectAtIndex: 0], + XMLNS_GROUPDAV, nil]; + [colType addObject: gdVEventCol]; + gdVTodoCol = [NSArray arrayWithObjects: [gdRT objectAtIndex: 1], + XMLNS_GROUPDAV, nil]; + [colType addObject: gdVTodoCol]; + if ([nameInContainer isEqualToString: @"personal"]) { -// [colType addObject: [NSArray arrayWithObjects: @"schedule-calendar", -// XMLNS_CALDAV, nil]]; - [colType addObject: [NSArray arrayWithObjects: @"schedule-inbox", - XMLNS_CALDAV, nil]]; - [colType addObject: [NSArray arrayWithObjects: @"schedule-outbox", - XMLNS_CALDAV, nil]]; + login = [[context activeUser] login]; + if ([login isEqualToString: [self ownerInContext: self]]) + { + // [colType addObject: [NSArray arrayWithObjects: @"schedule-calendar", + // XMLNS_CALDAV, nil]]; + [colType addObject: [NSArray arrayWithObjects: @"schedule-inbox", + XMLNS_CALDAV, nil]]; + [colType addObject: [NSArray arrayWithObjects: @"schedule-outbox", + XMLNS_CALDAV, nil]]; + } } } diff --git a/SoObjects/SOGo/WORequest+SOGo.h b/SoObjects/SOGo/WORequest+SOGo.h index 67c872637..b480f63a0 100644 --- a/SoObjects/SOGo/WORequest+SOGo.h +++ b/SoObjects/SOGo/WORequest+SOGo.h @@ -29,6 +29,7 @@ - (BOOL) handledByDefaultHandler; - (NSDictionary *) davPatchedPropertiesWithTopTag: (NSString *) topTag; +- (BOOL) isIPhone; @end diff --git a/SoObjects/SOGo/WORequest+SOGo.m b/SoObjects/SOGo/WORequest+SOGo.m index 46264e12c..e05b9fc9e 100644 --- a/SoObjects/SOGo/WORequest+SOGo.m +++ b/SoObjects/SOGo/WORequest+SOGo.m @@ -25,6 +25,7 @@ #import #import +#import #import @@ -102,4 +103,22 @@ return patchedProperties; } +- (BOOL) isIPhone +{ + WEClientCapabilities *cc; + BOOL rc; + + rc = NO; + cc = [self clientCapabilities]; + if ([[cc userAgentType] isEqualToString: @"AppleDAVAccess"]) + { + NSRange r = [[cc userAgent] rangeOfString: @"iPhone"]; + if (r.location != NSNotFound) + rc = YES; + } + + return rc; +} + + @end