mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-04-14 09:48:51 +00:00
Monotone-Parent: f93961e90221976ffc8c660ae642c8bbe0c84f61
Monotone-Revision: ee9b43e5b99198d94635546e134d5ce8243594d1 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-11-30T14:51:01
This commit is contained in:
@@ -1,5 +1,12 @@
|
||||
2011-11-30 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
|
||||
* SoObjects/Appointments/SOGoCalendarProxy.m (+webdavAclManager):
|
||||
overriden method.
|
||||
(-davGroupMemberSet, -setDavGroupMemberSet:): instantiate the
|
||||
"Calendar" object from the result of -[self lookupUserFolder]
|
||||
instead of "container", since we might attach proxy objects to
|
||||
other containers.
|
||||
|
||||
* Main/SOGo+DAV.m (-davPrincipalURL): new DAV getter.
|
||||
(-davPrincipalSearchPropertySet): added "calendar-user-type", even
|
||||
though it's a lie.
|
||||
|
||||
@@ -30,12 +30,74 @@
|
||||
#import <SOGo/SOGoUser.h>
|
||||
#import <SOGo/SOGoUserSettings.h>
|
||||
|
||||
#import <SOGo/NSObject+DAV.h>
|
||||
#import <SOGo/SOGoPermissions.h>
|
||||
#import <SOGo/SOGoWebDAVAclManager.h>
|
||||
|
||||
#import "SOGoAppointmentFolders.h"
|
||||
|
||||
#import "SOGoCalendarProxy.h"
|
||||
|
||||
@implementation SOGoCalendarProxy
|
||||
|
||||
+ (SOGoWebDAVAclManager *) webdavAclManager
|
||||
{
|
||||
static SOGoWebDAVAclManager *aclManager = nil;
|
||||
NSString *nsI;
|
||||
|
||||
if (!aclManager)
|
||||
{
|
||||
nsI = @"urn:inverse:params:xml:ns:inverse-dav";
|
||||
|
||||
aclManager = [SOGoWebDAVAclManager new];
|
||||
[aclManager registerDAVPermission: davElement (@"read", XMLNS_WEBDAV)
|
||||
abstract: YES
|
||||
withEquivalent: SoPerm_WebDAVAccess
|
||||
asChildOf: davElement (@"all", XMLNS_WEBDAV)];
|
||||
[aclManager
|
||||
registerDAVPermission: davElement (@"read-current-user-privilege-set", XMLNS_WEBDAV)
|
||||
abstract: YES
|
||||
withEquivalent: SoPerm_WebDAVAccess
|
||||
asChildOf: davElement (@"read", XMLNS_WEBDAV)];
|
||||
[aclManager registerDAVPermission: davElement (@"write", XMLNS_WEBDAV)
|
||||
abstract: YES
|
||||
withEquivalent: nil
|
||||
asChildOf: davElement (@"all", XMLNS_WEBDAV)];
|
||||
[aclManager registerDAVPermission: davElement (@"bind", XMLNS_WEBDAV)
|
||||
abstract: NO
|
||||
withEquivalent: SoPerm_AddDocumentsImagesAndFiles
|
||||
asChildOf: davElement (@"write", XMLNS_WEBDAV)];
|
||||
[aclManager registerDAVPermission: davElement (@"unbind", XMLNS_WEBDAV)
|
||||
abstract: NO
|
||||
withEquivalent: SoPerm_DeleteObjects
|
||||
asChildOf: davElement (@"write", XMLNS_WEBDAV)];
|
||||
[aclManager
|
||||
registerDAVPermission: davElement (@"write-properties", XMLNS_WEBDAV)
|
||||
abstract: NO
|
||||
withEquivalent: SoPerm_ChangePermissions /* hackish */
|
||||
asChildOf: davElement (@"write", XMLNS_WEBDAV)];
|
||||
[aclManager
|
||||
registerDAVPermission: davElement (@"write-content", XMLNS_WEBDAV)
|
||||
abstract: NO
|
||||
withEquivalent: SoPerm_AddDocumentsImagesAndFiles
|
||||
asChildOf: davElement (@"write", XMLNS_WEBDAV)];
|
||||
[aclManager registerDAVPermission: davElement (@"admin", nsI)
|
||||
abstract: YES
|
||||
withEquivalent: nil
|
||||
asChildOf: davElement (@"all", XMLNS_WEBDAV)];
|
||||
[aclManager registerDAVPermission: davElement (@"read-acl", XMLNS_WEBDAV)
|
||||
abstract: YES
|
||||
withEquivalent: SOGoPerm_ReadAcls
|
||||
asChildOf: davElement (@"admin", nsI)];
|
||||
[aclManager registerDAVPermission: davElement (@"write-acl", XMLNS_WEBDAV)
|
||||
abstract: YES
|
||||
withEquivalent: SoPerm_ChangePermissions
|
||||
asChildOf: davElement (@"admin", nsI)];
|
||||
}
|
||||
|
||||
return aclManager;
|
||||
}
|
||||
|
||||
- (id) init
|
||||
{
|
||||
if ((self = [super init]))
|
||||
@@ -78,7 +140,9 @@
|
||||
appName = [[context request] applicationName];
|
||||
|
||||
proxySubscribers
|
||||
= [[container lookupName: @"Calendar" inContext: context acquire: NO]
|
||||
= [[[self lookupUserFolder] lookupName: @"Calendar"
|
||||
inContext: context
|
||||
acquire: NO]
|
||||
proxySubscribersWithWriteAccess: hasWriteAccess];
|
||||
max = [proxySubscribers count];
|
||||
members = [NSMutableArray arrayWithCapacity: max];
|
||||
@@ -138,18 +202,13 @@
|
||||
|
||||
- (NSException *) setDavGroupMemberSet: (NSString *) memberSet
|
||||
{
|
||||
SOGoUser *ownerUser;
|
||||
SOGoUserSettings *us;
|
||||
NSMutableArray *addedSubscribers, *removedSubscribers;
|
||||
NSArray *oldProxySubscribers, *newProxySubscribers;
|
||||
NSString *login;
|
||||
SOGoAppointmentFolders *folders;
|
||||
|
||||
login = [self ownerInContext: context];
|
||||
ownerUser = [SOGoUser userWithLogin: login roles: nil];
|
||||
us = [ownerUser userSettings];
|
||||
folders = [container lookupName: @"Calendar"
|
||||
inContext: context acquire: NO];
|
||||
folders = [[self lookupUserFolder] lookupName: @"Calendar"
|
||||
inContext: context
|
||||
acquire: NO];
|
||||
oldProxySubscribers
|
||||
= [folders proxySubscribersWithWriteAccess: hasWriteAccess];
|
||||
if (!oldProxySubscribers)
|
||||
|
||||
Reference in New Issue
Block a user