diff --git a/ChangeLog b/ChangeLog index ffdb51e37..a7cbace9c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2010-02-02 Wolfgang Sourdeau + * Tests/Integration/test-davacl.py + (DAVCalendarAclTest._testEventDAVAcl): test + current-user-privilege-set on tasks too. + + * SoObjects/Appointments/SOGoCalendarComponent.m + (+webdavAclManager): moved method from SOGoAppointmentObject, so + that tasks can benefit from it too. + * SoObjects/Appointments/SOGoAppointmentObject.m (+webdavAclManager): view-whole-component and view-date-and-time are now independent and children of "all". "read" is declared as diff --git a/SoObjects/Appointments/SOGoAppointmentObject.m b/SoObjects/Appointments/SOGoAppointmentObject.m index da903985c..947546bed 100644 --- a/SoObjects/Appointments/SOGoAppointmentObject.m +++ b/SoObjects/Appointments/SOGoAppointmentObject.m @@ -37,17 +37,16 @@ #import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import #import "iCalEventChanges+SOGo.h" #import "iCalEntityObject+SOGo.h" @@ -61,72 +60,6 @@ @implementation SOGoAppointmentObject -+ (SOGoWebDAVAclManager *) webdavAclManager -{ - static SOGoWebDAVAclManager *aclManager = nil; - NSString *nsD, *nsI; - - if (!aclManager) - { - nsD = @"DAV:"; - nsI = @"urn:inverse:params:xml:ns:inverse-dav"; - - aclManager = [SOGoWebDAVAclManager new]; - - [aclManager registerDAVPermission: davElement (@"read", nsD) - abstract: NO - withEquivalent: @"SOGoDAVReadPermission" /* hackish */ - asChildOf: davElement (@"all", nsD)]; - [aclManager registerDAVPermission: davElement (@"view-whole-component", nsI) - abstract: NO - withEquivalent: SOGoCalendarPerm_ViewAllComponent - asChildOf: davElement (@"all", nsD)]; - [aclManager registerDAVPermission: davElement (@"view-date-and-time", nsI) - abstract: NO - withEquivalent: SOGoCalendarPerm_ViewDAndT - asChildOf: davElement (@"all", nsD)]; - [aclManager registerDAVPermission: davElement (@"read-current-user-privilege-set", nsD) - abstract: NO - withEquivalent: SoPerm_WebDAVAccess - asChildOf: davElement (@"all", nsD)]; - [aclManager registerDAVPermission: davElement (@"write", nsD) - abstract: NO - withEquivalent: SOGoCalendarPerm_ModifyComponent - asChildOf: davElement (@"all", nsD)]; - [aclManager - registerDAVPermission: davElement (@"write-properties", nsD) - abstract: YES - withEquivalent: SoPerm_ChangePermissions /* hackish */ - asChildOf: davElement (@"write", nsD)]; - [aclManager - registerDAVPermission: davElement (@"write-content", nsD) - abstract: YES - withEquivalent: nil - asChildOf: davElement (@"write", nsD)]; - [aclManager - registerDAVPermission: davElement (@"respond-to-component", nsI) - abstract: NO - withEquivalent: SOGoCalendarPerm_RespondToComponent - asChildOf: davElement (@"write-content", nsD)]; - [aclManager registerDAVPermission: davElement (@"admin", nsI) - abstract: YES - withEquivalent: nil - asChildOf: davElement (@"all", nsD)]; - [aclManager - registerDAVPermission: davElement (@"read-acl", nsD) - abstract: YES - withEquivalent: SOGoPerm_ReadAcls - asChildOf: davElement (@"admin", nsI)]; - [aclManager - registerDAVPermission: davElement (@"write-acl", nsD) - abstract: YES - withEquivalent: nil - asChildOf: davElement (@"admin", nsI)]; - } - - return aclManager; -} - - (NSString *) componentTag { return @"vevent"; diff --git a/SoObjects/Appointments/SOGoCalendarComponent.m b/SoObjects/Appointments/SOGoCalendarComponent.m index 88b367914..3a8abac2b 100644 --- a/SoObjects/Appointments/SOGoCalendarComponent.m +++ b/SoObjects/Appointments/SOGoCalendarComponent.m @@ -41,15 +41,17 @@ #import #import -#import #import #import +#import #import #import #import #import #import #import +#import +#import #import #import @@ -64,6 +66,72 @@ @implementation SOGoCalendarComponent ++ (SOGoWebDAVAclManager *) webdavAclManager +{ + static SOGoWebDAVAclManager *aclManager = nil; + NSString *nsD, *nsI; + + if (!aclManager) + { + nsD = @"DAV:"; + nsI = @"urn:inverse:params:xml:ns:inverse-dav"; + + aclManager = [SOGoWebDAVAclManager new]; + + [aclManager registerDAVPermission: davElement (@"read", nsD) + abstract: NO + withEquivalent: @"SOGoDAVReadPermission" /* hackish */ + asChildOf: davElement (@"all", nsD)]; + [aclManager registerDAVPermission: davElement (@"view-whole-component", nsI) + abstract: NO + withEquivalent: SOGoCalendarPerm_ViewAllComponent + asChildOf: davElement (@"all", nsD)]; + [aclManager registerDAVPermission: davElement (@"view-date-and-time", nsI) + abstract: NO + withEquivalent: SOGoCalendarPerm_ViewDAndT + asChildOf: davElement (@"all", nsD)]; + [aclManager registerDAVPermission: davElement (@"read-current-user-privilege-set", nsD) + abstract: NO + withEquivalent: SoPerm_WebDAVAccess + asChildOf: davElement (@"all", nsD)]; + [aclManager registerDAVPermission: davElement (@"write", nsD) + abstract: NO + withEquivalent: SOGoCalendarPerm_ModifyComponent + asChildOf: davElement (@"all", nsD)]; + [aclManager + registerDAVPermission: davElement (@"write-properties", nsD) + abstract: YES + withEquivalent: SoPerm_ChangePermissions /* hackish */ + asChildOf: davElement (@"write", nsD)]; + [aclManager + registerDAVPermission: davElement (@"write-content", nsD) + abstract: YES + withEquivalent: nil + asChildOf: davElement (@"write", nsD)]; + [aclManager + registerDAVPermission: davElement (@"respond-to-component", nsI) + abstract: NO + withEquivalent: SOGoCalendarPerm_RespondToComponent + asChildOf: davElement (@"write-content", nsD)]; + [aclManager registerDAVPermission: davElement (@"admin", nsI) + abstract: YES + withEquivalent: nil + asChildOf: davElement (@"all", nsD)]; + [aclManager + registerDAVPermission: davElement (@"read-acl", nsD) + abstract: YES + withEquivalent: SOGoPerm_ReadAcls + asChildOf: davElement (@"admin", nsI)]; + [aclManager + registerDAVPermission: davElement (@"write-acl", nsD) + abstract: YES + withEquivalent: nil + asChildOf: davElement (@"admin", nsI)]; + } + + return aclManager; +} + - (id) init { if ((self = [super init]))