iPhone + CalDAV fixed

Monotone-Parent: 3c522ae41fe50f5ebe60bb22d26f407dc4c942d4
Monotone-Revision: 0bc72fc660e8d843466e5428a65d7ea595d8f88e

Monotone-Author: crobert@inverse.ca
Monotone-Date: 2009-07-20T18:20:44
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
C Robert
2009-07-20 18:20:44 +00:00
parent e78b90bfaa
commit 29c77f0ffb
4 changed files with 52 additions and 16 deletions

View File

@@ -1,3 +1,11 @@
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

View File

@@ -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]];
}
}
}

View File

@@ -29,6 +29,7 @@
- (BOOL) handledByDefaultHandler;
- (NSDictionary *) davPatchedPropertiesWithTopTag: (NSString *) topTag;
- (BOOL) isIPhone;
@end

View File

@@ -25,6 +25,7 @@
#import <NGObjWeb/SoObjectRequestHandler.h>
#import <NGObjWeb/WOApplication.h>
#import <NGObjWeb/WEClientCapabilities.h>
#import <DOM/DOMProtocols.h>
@@ -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