diff --git a/ChangeLog b/ChangeLog index 88c43ab3d..18950af6f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2011-04-01 Wolfgang Sourdeau + + * SoObjects/SOGo/SOGoObject.m (-davComplianceClassesInContext:): + added "calendar-auto-schedule", "calendar-proxy" and "calenderserver-principal-property + + * Main/SOGo+DAV.m (-davComplianceClassesInContext:): overwritten + with same code as in SOGoObject. + (-davPrincipalCollectionSet): added dav property. + 2011-03-31 Wolfgang Sourdeau * OpenChange/MAPIStoreCalendarMessage.m diff --git a/Main/SOGo+DAV.m b/Main/SOGo+DAV.m index 7e8796dfd..42d2725c1 100644 --- a/Main/SOGo+DAV.m +++ b/Main/SOGo+DAV.m @@ -24,6 +24,7 @@ #import #import +#import #import #import #import @@ -37,6 +38,7 @@ #import #import #import +#import #import #import #import @@ -540,18 +542,46 @@ - (NSArray *) davComplianceClassesInContext: (WOContext *) localContext { - static NSArray *classes = nil; + static NSMutableArray *newClasses = nil; + NSArray *selfClasses; - if (!classes) + if (!newClasses) { - classes = [NSArray arrayWithObjects: @"access-control", - @"calendar-access", @"calendar-schedule", - @"calendar-proxy", @"addressbook", - nil]; - [classes retain]; + newClasses + = [[super davComplianceClassesInContext: localContext] mutableCopy]; + selfClasses = [NSArray arrayWithObjects: @"access-control", @"addressbook", + @"calendar-access", @"calendar-auto-schedule", + @"calendar-schedule", nil]; + [newClasses addObjectsFromArray: selfClasses]; } - return classes; + return newClasses; +} + +- (SOGoWebDAVValue *) davPrincipalCollectionSet +{ + NSString *davURL; + NSDictionary *collectionHREF; + NSString *classes; + WOContext *context; + + context = [self context]; + if ([[context request] isICal4]) + { + classes = [[self davComplianceClassesInContext: context] + componentsJoinedByString: @", "]; + [[context response] setHeader: classes forKey: @"dav"]; + } + + /* WOApplication has no support for the DAV methods we define here so we + use the user's principal object as a reference */ + davURL = [self davURLAsString]; + collectionHREF = davElementWithContent (@"href", XMLNS_WEBDAV, davURL); + + return [davElementWithContent (@"principal-collection-set", + XMLNS_WEBDAV, + [NSArray arrayWithObject: collectionHREF]) + asWebDAVValue]; } @end diff --git a/SoObjects/SOGo/SOGoObject.m b/SoObjects/SOGo/SOGoObject.m index 0b3493afc..fa062046c 100644 --- a/SoObjects/SOGo/SOGoObject.m +++ b/SoObjects/SOGo/SOGoObject.m @@ -1115,7 +1115,7 @@ = [[super davComplianceClassesInContext: localContext] mutableCopy]; selfClasses = [NSArray arrayWithObjects: @"access-control", @"calendar-access", @"calendar-schedule", - @"calendar-proxy", nil]; + @"calendar-auto-schedule", nil]; [newClasses addObjectsFromArray: selfClasses]; }