Monotone-Parent: a4e75419096a27680565f5482896e2fd64877b97

Monotone-Revision: 4cbfcc8ac9c9c474165cdf1d49e3c456e68e8179

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2011-10-04T19:55:39
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2011-10-04 19:55:39 +00:00
parent 64a049b5d8
commit 16d2f563f4
5 changed files with 97 additions and 64 deletions
+5 -1
View File
@@ -1,4 +1,8 @@
2011-10-03 Wolfgang Sourdeau <wsourdeau@inverse.ca>
2011-10-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* SoObjects/SOGo/SOGoObject.m (-davComplianceClassesInContext:):
take all the supported DAV object classes in charge, in order to
simplify the handling of those on topmost folders.
* OpenChange/MAPIStoreFolder.m (-deleteMessageWithMID:andFlags:):
invoke "prepareDelete" on the message object when available.
@@ -1964,23 +1964,6 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir
return obj;
}
- (NSArray *) davComplianceClassesInContext: (id)_ctx
{
NSMutableArray *classes;
NSArray *primaryClasses;
classes = [NSMutableArray array];
primaryClasses = [super davComplianceClassesInContext: _ctx];
if (primaryClasses)
[classes addObjectsFromArray: primaryClasses];
[classes addObject: @"calendar-access"];
//[classes addObject: @"calendar-schedule"];
[classes addObject: @"calendar-auto-schedule"];
return classes;
}
- (NSArray *) groupDavResourceType
{
return [NSArray arrayWithObjects: @"vevent-collection",
@@ -371,24 +371,6 @@ static SoSecurityManager *sm = nil;
return error;
}
- (NSArray *) davComplianceClassesInContext: (id)_ctx
{
NSMutableArray *classes;
NSArray *primaryClasses;
classes = [NSMutableArray array];
primaryClasses = [super davComplianceClassesInContext: _ctx];
if (primaryClasses)
[classes addObjectsFromArray: primaryClasses];
[classes addObject: @"calendar-access"];
//[classes addObject: @"calendar-schedule"];
[classes addObject: @"calendar-auto-schedule"];
return classes;
}
- (SOGoWebDAVValue *) davCalendarComponentSet
{
static SOGoWebDAVValue *componentSet = nil;
-17
View File
@@ -321,23 +321,6 @@ static NSArray *folderListingFields = nil;
return davSQLFieldsTable;
}
- (NSArray *) davComplianceClassesInContext: (id)_ctx
{
NSMutableArray *classes;
NSArray *primaryClasses;
classes = [NSMutableArray new];
[classes autorelease];
primaryClasses = [super davComplianceClassesInContext: _ctx];
if (primaryClasses)
[classes addObjectsFromArray: primaryClasses];
[classes addObject: @"access-control"];
[classes addObject: @"addressbook-access"];
return classes;
}
- (NSString *) groupDavResourceType
{
return @"vcard-collection";
+92 -11
View File
@@ -1121,21 +1121,102 @@
- (NSArray *) davComplianceClassesInContext: (WOContext *) localContext
{
static NSMutableArray *newClasses = nil;
NSArray *selfClasses;
NSMutableArray *classes;
static NSArray *calendarClasses = nil, *contactsClasses = nil,
*upperClasses = nil;
NSArray *caldavClasses;
BOOL found = NO, needCalDAVClasses = NO, needCardDAVClasses = NO;
NSUInteger count, max;
if (!newClasses)
/* popuplate static arrays */
if (!upperClasses)
{
newClasses
= [[super davComplianceClassesInContext: localContext] mutableCopy];
selfClasses = [NSArray arrayWithObjects: @"access-control",
@"calendar-access", @"calendar-schedule",
@"calendar-auto-schedule", @"calendar-proxy",
nil];
[newClasses addObjectsFromArray: selfClasses];
upperClasses = [NSArray arrayWithObjects:
NSClassFromString (@"SOGoPublicBaseFolder"),
NSClassFromString (@"SOGoUserFolder"),
nil];
[upperClasses retain];
}
return newClasses;
if (!calendarClasses)
{
calendarClasses
= [NSArray arrayWithObjects:
NSClassFromString (@"SOGoAppointmentFolders"),
NSClassFromString (@"SOGoAppointmentFolder"),
nil];
[calendarClasses retain];
}
if (!contactsClasses)
{
contactsClasses
= [NSArray arrayWithObjects:
NSClassFromString (@"SOGoContactFolders"),
NSClassFromString (@"SOGoContacGCSFolder"),
NSClassFromString (@"SOGoContactSourceFolder"),
nil];
[contactsClasses retain];
}
/* determine which kind of object we are dealing with */
if ([self isFolderish])
{
max = [upperClasses count];
for (count = 0; !found && count < max; count++)
{
if ([self isKindOfClass: [upperClasses objectAtIndex: count]])
{
found = YES;
needCalDAVClasses = YES;
needCardDAVClasses = YES;
}
}
max = [calendarClasses count];
for (count = 0; !found && count < max; count++)
{
if ([self isKindOfClass: [calendarClasses objectAtIndex: count]])
{
found = YES;
needCalDAVClasses = YES;
}
}
max = [contactsClasses count];
for (count = 0; !found && count < max; count++)
{
if ([self isKindOfClass: [contactsClasses objectAtIndex: count]])
{
found = YES;
needCardDAVClasses = YES;
}
}
}
/* prepare the array */
classes = [[super davComplianceClassesInContext: localContext]
mutableCopy];
if (!classes)
classes = [NSMutableArray new];
[classes autorelease];
/* generic */
[classes addObject: @"access-control"];
/* CardDAV */
if (needCardDAVClasses)
[classes addObject: @"addressbook"];
/* CalDAV */
if (needCalDAVClasses)
{
caldavClasses = [NSArray arrayWithObjects: @"calendar-access", @"calendar-schedule",
@"calendar-auto-schedule", @"calendar-proxy", nil];
[classes addObjectsFromArray: caldavClasses];
}
return classes;
}
/* dav acls */