merge of '283b85ceb3a2d749da436802a5bf6c9e26565d00'

and 'ff4ded519351216e33ec0fa734612c05b21917d1'

Monotone-Parent: 283b85ceb3a2d749da436802a5bf6c9e26565d00
Monotone-Parent: ff4ded519351216e33ec0fa734612c05b21917d1
Monotone-Revision: 779f7c78a42d4b2a50a642ddf6b7977bc7e6d72d

Monotone-Author: crobert@inverse.ca
Monotone-Date: 2009-07-20T18:37:08
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
C Robert
2009-07-20 18:37:08 +00:00
6 changed files with 64 additions and 16 deletions

View File

@@ -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 <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

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

View File

@@ -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: @"<?xml version=\"1.0\""
@" encoding=\"utf-8\"?>"];
@@ -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]];
}
}
}

View File

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

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