Monotone-Parent: 38816d5f2c5865f939ccd8290226d22c43482e08

Monotone-Revision: 1960a36a480c2b580275d8352c65f53c16c80b5a

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2007-11-07T15:58:43
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2007-11-07 15:58:43 +00:00
parent 7e3890af89
commit b83e708b70
20 changed files with 173 additions and 319 deletions
+25 -14
View File
@@ -52,6 +52,7 @@
#import <SOGo/SOGoUser.h>
#import "SOGoAppointmentObject.h"
#import "SOGoAppointmentFolders.h"
#import "SOGoTaskObject.h"
#import "SOGoAppointmentFolder.h"
@@ -1001,20 +1002,29 @@ static NSNumber *sharedYes = nil;
- (SOGoAppointmentFolder *) lookupCalendarFolderForUID: (NSString *) uid
{
SOGoFolder *upperContainer;
SOGoUserFolder *userFolder;
SOGoAppointmentFolder *calendarFolder;
SOGoFolder *currentContainer;
SOGoAppointmentFolders *parent;
NSException *error;
upperContainer = [[self container] container];
userFolder = [SOGoUserFolder objectWithName: uid
inContainer: upperContainer];
calendarFolder = [SOGoAppointmentFolder objectWithName: @"Calendar"
inContainer: userFolder];
[calendarFolder
setOCSPath: [NSString stringWithFormat: @"/Users/%@/Calendar/personal", uid]];
[calendarFolder setOwner: uid];
currentContainer = [[container container] container];
currentContainer = [currentContainer lookupName: uid
inContext: context
acquire: NO];
parent = [currentContainer lookupName: @"Calendar" inContext: context
acquire: NO];
currentContainer = [parent lookupName: @"personal" inContext: context
acquire: NO];
if (!currentContainer)
{
error = [parent newFolderWithName: [parent defaultFolderName]
andNameInContainer: @"personal"];
if (!error)
currentContainer = [parent lookupName: @"personal"
inContext: context
acquire: NO];
}
return calendarFolder;
return (SOGoAppointmentFolder *) currentContainer;
}
- (NSArray *) lookupCalendarFoldersForUIDs: (NSArray *) _uids
@@ -1041,8 +1051,9 @@ static NSNumber *sharedYes = nil;
if (![folder isNotNull])
[self logWithFormat:@"Note: did not find folder for uid: '%@'", uid];
}
[folders addObject: folder];
if (folder)
[folders addObject: folder];
}
return folders;
+19 -16
View File
@@ -147,30 +147,33 @@
return allErrors;
}
- (NSException *)deleteInUIDs:(NSArray *)_uids {
- (NSException *) deleteInUIDs: (NSArray *) _uids
{
NSEnumerator *e;
id folder;
NSException *allErrors = nil;
NSException *error;
SOGoAppointmentObject *apt;
e = [[container lookupCalendarFoldersForUIDs:_uids inContext: context]
objectEnumerator];
while ((folder = [e nextObject])) {
NSException *error;
SOGoAppointmentObject *apt;
while ((folder = [e nextObject]))
{
apt = [folder lookupName: [self nameInContainer]
inContext: context
acquire:NO];
if ([apt isKindOfClass: [NSException class]]) {
[self logWithFormat: @"%@", [(NSException *) apt reason]];
continue;
}
apt = [folder lookupName:[self nameInContainer] inContext: context
acquire:NO];
if ([apt isKindOfClass: [NSException class]]) {
[self logWithFormat: @"%@", [(NSException *) apt reason]];
continue;
if ((error = [apt primaryDelete]) != nil) {
[self logWithFormat:@"Note: failed to delete in folder: %@", folder];
// TODO: make compound
allErrors = error;
}
}
if ((error = [apt primaryDelete]) != nil) {
[self logWithFormat:@"Note: failed to delete in folder: %@", folder];
// TODO: make compound
allErrors = error;
}
}
return allErrors;
}
+13 -7
View File
@@ -47,12 +47,6 @@
@implementation SOGoFreeBusyObject
- (NSString *) iCalString
{
// for UI-X appointment viewer
return [self contentAsString];
}
- (NSString *) contentAsString
{
NSCalendarDate *today, *startDate, *endDate;
@@ -103,6 +97,12 @@
return infos;
}
- (NSString *) iCalString
{
// for UI-X appointment viewer
return [self contentAsString];
}
/* Private API */
- (iCalFreeBusyType) _fbTypeForEventStatus: (NSNumber *) eventStatus
{
@@ -194,7 +194,8 @@
WOResponse *r;
NSData *contentData;
contentData = [[self contentAsString] dataUsingEncoding: NSUTF8StringEncoding];
contentData = [[self contentAsString]
dataUsingEncoding: NSUTF8StringEncoding];
r = [(WOContext *) _ctx response];
[r setHeader: @"text/calendar" forKey: @"content-type"];
@@ -209,4 +210,9 @@
return @"text/calendar";
}
- (NSArray *) aclsForUser: (NSString *) uid
{
return nil;
}
@end
+1 -1
View File
@@ -12,7 +12,7 @@
superclass = "SOGoParentFolder";
};
SOGoAppointmentFolder = {
superclass = "SOGoFolder";
superclass = "SOGoGCSFolder";
defaultRoles = {
/* "FreeBusyLookup" = ( "Owner", "FreeBusy", "AuthorizedSubscriber" ); */
"ViewWholePublicRecords" = ( "Owner", "PublicResponder", "PublicModifier", "PublicViewer" );
+2 -2
View File
@@ -22,7 +22,7 @@
#ifndef __Contacts_SOGoContactGCSFolder_H__
#define __Contacts_SOGoContactGCSFolder_H__
#import <SoObjects/SOGo/SOGoFolder.h>
#import <SoObjects/SOGo/SOGoGCSFolder.h>
#import "SOGoContactFolder.h"
#import "NSObject+CardDAV.h"
@@ -30,7 +30,7 @@
@class NSArray;
@class NSString;
@interface SOGoContactGCSFolder : SOGoFolder <SOGoContactFolder>
@interface SOGoContactGCSFolder : SOGoGCSFolder <SOGoContactFolder>
@end
+2 -2
View File
@@ -12,13 +12,13 @@
superclass = "SOGoParentFolder";
};
SOGoContactGCSFolder = {
superclass = "SOGoFolder";
superclass = "SOGoGCSFolder";
};
SOGoContactGCSEntry = {
superclass = "SOGoContentObject";
};
SOGoContactLDAPFolder = {
superclass = "SOGoFolder";
superclass = "SOGoGCSFolder";
protectedBy = "Access Contents Information";
defaultRoles = {
"Access Contents Information" = ( "Authenticated" );
+2 -2
View File
@@ -22,7 +22,7 @@
#ifndef __Mailer_SOGoMailAccounts_H__
#define __Mailer_SOGoMailAccounts_H__
#import <SOGo/SOGoObject.h>
#import <SoObjects/SOGo/SOGoFolder.h>
/*
SOGoMailAccounts
@@ -39,7 +39,7 @@
@class NSArray;
@interface SOGoMailAccounts : SOGoObject
@interface SOGoMailAccounts : SOGoFolder
@end
-20
View File
@@ -127,24 +127,4 @@ static NSString *AgenorShareLoginMarker = @".-.";
return [NSException exceptionWithHTTPStatus:404 /* Not Found */];
}
/* WebDAV */
- (BOOL) davIsCollection
{
return YES;
}
- (NSString *) davContentType
{
return @"httpd/unix-directory";
}
/* acls */
- (NSArray *) aclsForUser: (NSString *) uid
{
return nil;
}
@end /* SOGoMailAccounts */
+1 -1
View File
@@ -12,7 +12,7 @@
superclass = "SOGoObject";
};
SOGoMailAccounts = {
superclass = "SOGoMailBaseObject";
superclass = "SOGoFolder";
defaultRoles = {
"View" = ( "Owner", "AuthorizedSubscriber" );
"Access Contents Information" = ( "Owner", "AuthorizedSubscriber" );
+1
View File
@@ -53,6 +53,7 @@ libSOGo_OBJC_FILES = \
SOGoObject.m \
SOGoContentObject.m \
SOGoFolder.m \
SOGoGCSFolder.m \
SOGoParentFolder.m \
SOGoUserFolder.m \
SOGoGroupsFolder.m \
@@ -19,10 +19,10 @@
02111-1307, USA.
*/
#ifndef __SOGo_SOGoFolder_H__
#define __SOGo_SOGoFolder_H__
#ifndef __SOGo_SOGoGCSFolder_H__
#define __SOGo_SOGoGCSFolder_H__
#import "SOGoObject.h"
#import "SOGoFolder.h"
@class NSArray;
@class NSDictionary;
@@ -32,7 +32,7 @@
@class GCSFolder;
/*
SOGoFolder
SOGoGCSFolder
A common superclass for folders stored in GCS. Already deals with all GCS
folder specific things.
@@ -41,9 +41,8 @@
cyclic references.
*/
@interface SOGoFolder : SOGoObject
@interface SOGoGCSFolder : SOGoFolder
{
NSMutableString *displayName;
NSString *ocsPath;
GCSFolder *ocsFolder;
NSMutableDictionary *aclCache;
@@ -54,9 +53,6 @@
/* accessors */
- (void) setDisplayName: (NSString *) newDisplayName;
- (NSString *) displayName;
- (void) setOCSPath: (NSString *)_Path;
- (NSString *) ocsPath;
@@ -73,19 +69,14 @@
/* folder type */
- (NSString *) outlookFolderClass;
- (BOOL) folderIsMandatory;
- (NSString *) folderType;
/* sorting */
- (NSComparisonResult) compare: (SOGoFolder *) otherFolder;
- (NSComparisonResult) compare: (SOGoGCSFolder *) otherFolder;
- (BOOL) create;
- (NSException *) delete;
- (void) renameTo: (NSString *) newName;
/* dav */
- (NSArray *) davNamespaces;
/* acls as a container */
- (NSArray *) aclUsersForObjectAtPath: (NSArray *) objectPathArray;
@@ -99,10 +90,10 @@
@end
@interface SOGoFolder (GroupDAVExtensions)
@interface SOGoGCSFolder (GroupDAVExtensions)
- (NSString *) groupDavResourceType;
@end
#endif /* __SOGo_SOGoFolder_H__ */
#endif /* __SOGo_SOGoGCSFolder_H__ */
@@ -29,7 +29,6 @@
#import <NGObjWeb/NSException+HTTP.h>
#import <NGObjWeb/SoObject.h>
#import <NGObjWeb/SoObject+SoDAV.h>
#import <NGObjWeb/SoSelectorInvocation.h>
#import <NGObjWeb/WOContext+SoObjects.h>
#import <NGObjWeb/WOApplication.h>
#import <NGExtensions/NSNull+misc.h>
@@ -51,23 +50,11 @@
#import "SOGoPermissions.h"
#import "SOGoUser.h"
#import "SOGoFolder.h"
#import "SOGoGCSFolder.h"
static NSString *defaultUserID = @"<default>";
@implementation SOGoFolder
+ (int) version
{
return [super version] + 0 /* v0 */;
}
+ (void) initialize
{
NSAssert2([super version] == 0,
@"invalid superclass (%@) version %i !",
NSStringFromClass([self superclass]), [super version]);
}
@implementation SOGoGCSFolder
+ (id) folderWithSubscriptionReference: (NSString *) reference
inContainer: (id) aContainer
@@ -120,46 +107,6 @@ static NSString *defaultUserID = @"<default>";
/* accessors */
- (BOOL) isFolderish
{
return YES;
}
- (void) setOCSPath: (NSString *) _path
{
if (![ocsPath isEqualToString:_path])
{
if (ocsPath)
[self warnWithFormat: @"GCS path is already set! '%@'", _path];
ASSIGN (ocsPath, _path);
}
}
- (NSString *) ocsPath
{
return ocsPath;
}
- (GCSFolderManager *) folderManager
{
static GCSFolderManager *folderManager = nil;
if (!folderManager)
folderManager = [GCSFolderManager defaultFolderManager];
return folderManager;
}
- (GCSFolder *) ocsFolderForPath: (NSString *) _path
{
return [[self folderManager] folderAtPath: _path];
}
- (BOOL) folderIsMandatory
{
return [nameInContainer isEqualToString: @"personal"];
}
- (void) _setDisplayNameFromRow: (NSDictionary *) row
{
NSString *currentLogin, *ownerLogin;
@@ -209,11 +156,6 @@ static NSString *defaultUserID = @"<default>";
}
}
- (void) setDisplayName: (NSString *) newDisplayName
{
ASSIGN (displayName, newDisplayName);
}
- (NSString *) displayName
{
if (!displayName)
@@ -222,6 +164,41 @@ static NSString *defaultUserID = @"<default>";
return displayName;
}
- (void) setOCSPath: (NSString *) _path
{
if (![ocsPath isEqualToString:_path])
{
if (ocsPath)
[self warnWithFormat: @"GCS path is already set! '%@'", _path];
ASSIGN (ocsPath, _path);
}
}
- (NSString *) ocsPath
{
return ocsPath;
}
- (GCSFolderManager *) folderManager
{
static GCSFolderManager *folderManager = nil;
if (!folderManager)
folderManager = [GCSFolderManager defaultFolderManager];
return folderManager;
}
- (GCSFolder *) ocsFolderForPath: (NSString *) _path
{
return [[self folderManager] folderAtPath: _path];
}
- (BOOL) folderIsMandatory
{
return [nameInContainer isEqualToString: @"personal"];
}
- (NSString *) davDisplayName
{
return [self displayName];
@@ -237,7 +214,7 @@ static NSString *defaultUserID = @"<default>";
ocsFolder = [self ocsFolderForPath: [self ocsPath]];
userLogin = [[context activeUser] login];
if (!ocsFolder
/* && [userLogin isEqualToString: [self ownerInContext: context]] */
&& [userLogin isEqualToString: [self ownerInContext: context]]
&& [self folderIsMandatory]
&& [self create])
ocsFolder = [self ocsFolderForPath: [self ocsPath]];
@@ -252,11 +229,6 @@ static NSString *defaultUserID = @"<default>";
return folder;
}
- (NSString *) folderType
{
return @"";
}
- (void) sendFolderAdvisoryTemplate: (NSString *) template
{
NSString *pageName;
@@ -428,11 +400,6 @@ static NSString *defaultUserID = @"<default>";
return rType;
}
- (NSString *) davContentType
{
return @"httpd/unix-directory";
}
- (NSArray *) toOneRelationshipKeys
{
/* toOneRelationshipKeys are the 'files' contained in a folder */
@@ -668,51 +635,6 @@ static NSString *defaultUserID = @"<default>";
return defaultUserID;
}
- (NSString *) httpURLForAdvisoryToUser: (NSString *) uid
{
return [[self soURL] absoluteString];
}
- (NSString *) resourceURLForAdvisoryToUser: (NSString *) uid
{
return [[self davURL] absoluteString];
}
- (id) lookupName: (NSString *) lookupName
inContext: (id) localContext
acquire: (BOOL) acquire
{
id obj;
NSArray *davNamespaces;
NSDictionary *davInvocation;
NSString *objcMethod;
obj = [super lookupName: lookupName inContext: localContext
acquire: acquire];
if (!obj)
{
davNamespaces = [self davNamespaces];
if ([davNamespaces count] > 0)
{
davInvocation = [lookupName asDavInvocation];
if (davInvocation
&& [davNamespaces
containsObject: [davInvocation objectForKey: @"ns"]])
{
objcMethod = [[davInvocation objectForKey: @"method"]
davMethodToObjC];
obj = [[SoSelectorInvocation alloc]
initWithSelectorNamed:
[NSString stringWithFormat: @"%@:", objcMethod]
addContextParameter: YES];
[obj autorelease];
}
}
}
return obj;
}
- (NSComparisonResult) _compareByOrigin: (SOGoFolder *) otherFolder
{
NSArray *thisElements, *otherElements;
@@ -767,7 +689,7 @@ static NSString *defaultUserID = @"<default>";
return comparison;
}
- (NSComparisonResult) compare: (SOGoFolder *) otherFolder
- (NSComparisonResult) compare: (SOGoGCSFolder *) otherFolder
{
NSComparisonResult comparison;
@@ -784,27 +706,6 @@ static NSString *defaultUserID = @"<default>";
return comparison;
}
/* WebDAV */
- (NSArray *) davNamespaces
{
return nil;
}
- (BOOL) davIsCollection
{
return [self isFolderish];
}
/* folder type */
- (NSString *) outlookFolderClass
{
[self subclassResponsibility: _cmd];
return nil;
}
/* description */
- (void) appendAttributesToDescription: (NSMutableString *) _ms
@@ -814,11 +715,4 @@ static NSString *defaultUserID = @"<default>";
[_ms appendFormat:@" ocs=%@", [self ocsPath]];
}
- (NSString *) loggingPrefix
{
return [NSString stringWithFormat:@"<0x%08X[%@]:%@>",
self, NSStringFromClass([self class]),
[self nameInContainer]];
}
@end /* SOGoFolder */
+6 -2
View File
@@ -23,13 +23,13 @@
#ifndef SOGOPARENTFOLDERS_H
#define SOGOPARENTFOLDERS_H
#import "SOGoObject.h"
#import "SOGoFolder.h"
@class NSMutableDictionary;
@class NSString;
@class WOResponse;
@interface SOGoParentFolder : SOGoObject
@interface SOGoParentFolder : SOGoFolder
{
NSMutableDictionary *subFolders;
NSString *OCSPath;
@@ -39,10 +39,14 @@
+ (NSString *) gcsFolderType;
+ (Class) subFolderClass;
- (NSString *) defaultFolderName;
- (void) setBaseOCSPath: (NSString *) newOCSPath;
- (NSArray *) subFolders;
- (NSException *) newFolderWithName: (NSString *) name
andNameInContainer: (NSString *) newNameInContainer;
- (NSException *) newFolderWithName: (NSString *) name
nameInContainer: (NSString **) newNameInContainer;
+35 -39
View File
@@ -31,7 +31,7 @@
#import <GDLContentStore/NSURL+GCS.h>
#import <GDLAccess/EOAdaptorChannel.h>
#import "SOGoFolder.h"
#import "SOGoGCSFolder.h"
#import "SOGoUser.h"
#import "SOGoParentFolder.h"
@@ -86,9 +86,9 @@
{
NSArray *attrs;
NSDictionary *row;
SOGoFolder *folder;
SOGoGCSFolder *folder;
BOOL hasPersonal;
NSString *key, *path, *personalName;
NSString *key;
if (!subFolderClass)
subFolderClass = [[self class] subFolderClass];
@@ -111,17 +111,17 @@
row = [fc fetchAttributes: attrs withZone: NULL];
}
if (!hasPersonal)
{
folder = [subFolderClass objectWithName: @"personal" inContainer: self];
personalName = [self labelForKey: [self defaultFolderName]];
[folder setDisplayName: personalName];
path = [NSString stringWithFormat: @"/Users/%@/%@/personal",
[self ownerInContext: context],
nameInContainer];
[folder setOCSPath: path];
[subFolders setObject: folder forKey: @"personal"];
}
// if (!hasPersonal)
// {
// folder = [subFolderClass objectWithName: @"personal" inContainer: self];
// personalName = [self labelForKey: [self defaultFolderName]];
// [folder setDisplayName: personalName];
// path = [NSString stringWithFormat: @"/Users/%@/%@/personal",
// [self ownerInContext: context],
// nameInContainer];
// [folder setOCSPath: path];
// [subFolders setObject: folder forKey: @"personal"];
// }
}
- (void) appendPersonalSources
@@ -163,7 +163,7 @@
NSUserDefaults *settings;
NSEnumerator *allKeys;
NSString *currentKey;
SOGoFolder *subscribedFolder;
SOGoGCSFolder *subscribedFolder;
settings = [[context activeUser] userSettings];
subscribedReferences = [[settings objectForKey: nameInContainer]
@@ -185,17 +185,15 @@
}
- (NSException *) newFolderWithName: (NSString *) name
nameInContainer: (NSString **) newNameInContainer
andNameInContainer: (NSString *) newNameInContainer
{
NSString *newFolderID;
SOGoFolder *newFolder;
SOGoGCSFolder *newFolder;
NSException *error;
if (!subFolderClass)
subFolderClass = [[self class] subFolderClass];
*newNameInContainer = nil;
newFolderID = [self globallyUniqueObjectId];
newFolder = [subFolderClass objectWithName: newFolderID inContainer: self];
if ([newFolder isKindOfClass: [NSException class]])
error = (NSException *) newFolder;
@@ -205,10 +203,7 @@
[newFolder setOCSPath: [NSString stringWithFormat: @"%@/%@",
OCSPath, newFolderID]];
if ([newFolder create])
{
error = nil;
*newNameInContainer = newFolderID;
}
error = nil;
else
error = [NSException exceptionWithHTTPStatus: 400
reason: @"The new folder could not be created"];
@@ -217,6 +212,23 @@
return error;
}
- (NSException *) newFolderWithName: (NSString *) name
nameInContainer: (NSString **) newNameInContainer
{
NSString *newFolderID;
NSException *error;
newFolderID = [self globallyUniqueObjectId];
error = [self newFolderWithName: name
andNameInContainer: newFolderID];
if (error)
*newNameInContainer = nil;
else
*newNameInContainer = newFolderID;
return error;
}
- (void) initSubFolders
{
NSString *login;
@@ -268,20 +280,4 @@
sortedArrayUsingSelector: @selector (compare:)];
}
/* acls */
- (NSArray *) aclsForUser: (NSString *) uid
{
return nil;
}
- (BOOL) davIsCollection
{
return YES;
}
- (NSString *) davContentType
{
return @"httpd/unix-directory";
}
@end
-5
View File
@@ -49,11 +49,6 @@
- (NSString *) ownerInContext: (WOContext *) _ctx;
/* pathes */
- (NSString *) ocsUserPath;
- (NSString *) ocsPrivateCalendarPath;
/* TODO: not implemented, bad bad */
// - (id)lookupFreeBusyObject;
+9 -36
View File
@@ -68,7 +68,8 @@
if (!children)
children = [[NSArray alloc] initWithObjects:
@"Calendar", @"Contacts", @"Mail", nil];
@"Calendar", @"Contacts", @"Mail",
@"Preferences", nil];
return children;
}
@@ -92,39 +93,6 @@
// return [self lookupName: @"Groups" inContext: nil acquire: NO];
// }
/* pathes */
- (void) setOCSPath: (NSString *) _path
{
[self warnWithFormat:
@"rejected attempt to reset user-folder path: '%@'", _path];
}
- (NSString *) ocsPath
{
return [NSString stringWithFormat: @"/Users/%@", nameInContainer];
}
- (NSString *) ocsUserPath
{
return [self ocsPath];
}
- (BOOL) folderIsMandatory
{
return NO;
}
- (NSString *) ocsPrivateCalendarPath
{
return [[self ocsUserPath] stringByAppendingString:@"/Calendar"];
}
- (NSString *) ocsPrivateContactsPath
{
return [[self ocsUserPath] stringByAppendingString:@"/Contacts"];
}
/* name lookup */
// - (NSString *) permissionForKey: (NSString *) key
@@ -140,7 +108,8 @@
SOGoAppointmentFolders *calendars;
calendars = [$(@"SOGoAppointmentFolders") objectWithName: _key inContainer: self];
[calendars setBaseOCSPath: [self ocsPrivateCalendarPath]];
[calendars setBaseOCSPath: [NSString stringWithFormat: @"/Users/%@/Calendar",
nameInContainer]];
return calendars;
}
@@ -151,7 +120,8 @@
SOGoContactFolders *contacts;
contacts = [$(@"SOGoContactFolders") objectWithName:_key inContainer: self];
[contacts setBaseOCSPath: [self ocsPrivateContactsPath]];
[contacts setBaseOCSPath: [NSString stringWithFormat: @"/Users/%@/Contacts",
nameInContainer]];
return contacts;
}
@@ -195,6 +165,9 @@
// obj = [self groupsFolder: _key inContext: _ctx];
else if ([_key isEqualToString: @"Mail"])
obj = [self mailAccountsFolder: _key inContext: _ctx];
else if ([_key isEqualToString: @"Preferences"])
obj = [$(@"SOGoPreferencesFolder") objectWithName: _key
inContainer: self];
else if ([_key isEqualToString: @"freebusy.ifb"])
obj = [self freeBusyObject:_key inContext: _ctx];
else
+2 -2
View File
@@ -35,9 +35,9 @@
#import <SoObjects/SOGo/LDAPUserManager.h>
#import <SoObjects/SOGo/NSArray+Utilities.h>
#import <SoObjects/SOGo/SOGoUser.h>
#import <SoObjects/SOGo/SOGoFolder.h>
#import <SoObjects/SOGo/SOGoGCSFolder.h>
#import <SoObjects/SOGo/SOGoPermissions.h>
#import <SoObjects/SOGo/SOGoUser.h>
#import "WODirectAction+SOGo.h"
+1 -1
View File
@@ -71,7 +71,7 @@
};
};
};
SOGoFolder = {
SOGoGCSFolder = {
methods = {
subscribe = {
protectedBy = "<public>";
+1 -1
View File
@@ -177,7 +177,7 @@
{
NSMutableArray *folders;
NSEnumerator *subfolders;
SOGoFolder *currentFolder;
SOGoGCSFolder *currentFolder;
NSString *folderName;
NSMutableDictionary *currentDictionary;
SoSecurityManager *securityManager;
+6 -6
View File
@@ -136,7 +136,7 @@
actionName = "delete";
};
edit = {
protectedBy = "Change Images And Files";
protectedBy = "Access Contents Information";
pageName = "UIxContactEditor";
};
save = {
@@ -158,16 +158,16 @@
protectedBy = "<public>";
pageName = "UIxContactView";
};
delete = {
/* delete = {
protectedBy = "View";
pageName = "UIxContactView";
actionName = "delete";
};
}; */
edit = {
protectedBy = "View";
protectedBy = "Access Contents Information";
pageName = "UIxContactEditor";
};
save = {
/* save = {
protectedBy = "View";
pageName = "UIxContactEditor";
actionName = "save";
@@ -176,7 +176,7 @@
protectedBy = "View";
pageName = "UIxContactEditor";
actionName = "write";
};
}; */
};
};
};