Monotone-Parent: 94d50c27be1b236681a2089a0eecac7c67e93f40

Monotone-Revision: 34f9dea8fbc2c15f4324ce38e407bc6bdad1fc36

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2007-12-07T22:40:21
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2007-12-07 22:40:21 +00:00
parent 60ae2b07af
commit 0daa63b206
+20 -10
View File
@@ -264,6 +264,7 @@
SOGoCalendarComponent *co;
SOGoUser *currentUser;
BOOL hasOrganizer;
SoSecurityManager *sm;
co = [self clientObject];
owner = [co ownerInContext: context];
@@ -271,8 +272,13 @@
hasOrganizer = ([[organizer value: 0] length] > 0);
sm = [SoSecurityManager sharedSecurityManager];
return ([co isNew]
|| ([owner isEqualToString: [currentUser login]]
|| (([owner isEqualToString: [currentUser login]]
|| ![sm validatePermission: SOGoCalendarPerm_ModifyComponent
onObject: co
inContext: context])
&& (!hasOrganizer || [component userIsOrganizer: currentUser])));
}
@@ -934,26 +940,30 @@
{
NSString *organizerEmail;
NSString *owner, *login;
BOOL isOwner, hasOrganizer, hasAttendees;
owner = [[self clientObject] ownerInContext: context];
login = [[context activeUser] login];
isOwner = [owner isEqualToString: login];
hasAttendees = ([[component attendees] count] > 0);
organizerEmail = [[component organizer] email];
if ([organizerEmail length] == 0)
hasOrganizer = ([organizerEmail length] > 0);
if (hasOrganizer)
{
owner = [[self clientObject] ownerInContext: context];
login = [[context activeUser] login];
if (![owner isEqualToString: login]
|| [[component attendees] count] > 0)
if (isOwner && !hasAttendees)
{
ASSIGN (organizer, [iCalPerson elementWithTag: @"organizer"]);
[organizer setCn: [organizerIdentity objectForKey: @"fullName"]];
[organizer setEmail: [organizerIdentity objectForKey: @"email"]];
[component setOrganizer: organizer];
}
}
else
{
if ([[component attendees] count] == 0)
if (!isOwner || hasAttendees)
{
ASSIGN (organizer, [iCalPerson elementWithTag: @"organizer"]);
[organizer setCn: [organizerIdentity objectForKey: @"fullName"]];
[organizer setEmail: [organizerIdentity objectForKey: @"email"]];
[component setOrganizer: organizer];
}
}
@@ -1039,7 +1049,7 @@
if ([component userIsOrganizer: currentUser])
toolbarFilename = @"SOGoComponentClose.toolbar";
else
{
{
if ([component userIsOrganizer: ownerUser]
&& ![sm validatePermission: SOGoCalendarPerm_ModifyComponent
onObject: clientObject