diff --git a/ChangeLog b/ChangeLog index 6709df1bb..23b3aa597 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,14 @@ (-caldavFreeBusyRequest:): the list of recipients is now deduced from the list of attendees specified in the VFREEBUSY. +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/SOPE/NGCards/iCalPerson.m b/SOPE/NGCards/iCalPerson.m index 77df8b154..58a48dfd0 100644 --- a/SOPE/NGCards/iCalPerson.m +++ b/SOPE/NGCards/iCalPerson.m @@ -55,6 +55,9 @@ - (void) setEmail: (NSString *)_s { + // WARNING + // don't touch unless you're going to re-test caldav sync + // with an iPhone AND lightning [self setValue: 0 to: [NSString stringWithFormat: @"mailto:%@", _s]]; } diff --git a/SoObjects/Appointments/SOGoAppointmentFolder.m b/SoObjects/Appointments/SOGoAppointmentFolder.m index c1d53fb1e..96e880ee5 100644 --- a/SoObjects/Appointments/SOGoAppointmentFolder.m +++ b/SoObjects/Appointments/SOGoAppointmentFolder.m @@ -2000,6 +2000,9 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir content = [NSMutableArray array]; + // WARNING + // don't touch unless you're going to re-test caldav sync + // with an iPhone AND lightning [content addObject: davElementWithContent (@"recipient", XMLNS_CALDAV, [recipient email])]; if (user) @@ -2118,6 +2121,9 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir response = [context response]; if (tags) { + // WARNING + // don't touch unless you're going to re-test caldav sync + // with an iPhone AND lightning [response setStatus: 200]; [response appendContentString: @""]; @@ -2211,29 +2217,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/Appointments/SOGoFreeBusyObject.m b/SoObjects/Appointments/SOGoFreeBusyObject.m index d2b43b790..509f807ae 100644 --- a/SoObjects/Appointments/SOGoFreeBusyObject.m +++ b/SoObjects/Appointments/SOGoFreeBusyObject.m @@ -80,6 +80,9 @@ static unsigned int freebusyRangeEnd = 0; um = [LDAPUserManager sharedUserManager]; contactInfos = [um contactInfosForUserWithUIDorEmail: uid]; + // WARNING + // don't touch unless you're going to re-test caldav sync + // with an iPhone AND lightning person = [iCalPerson new]; [person autorelease]; [person setEmail: [contactInfos objectForKey: @"c_email"]]; 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