See ChangeLog

Monotone-Parent: 1fc6240dbb88ca9e470be6d2679ee8e3e10e4f4f
Monotone-Revision: b9443420fc607bc2c0d8c6a5cff48fda3c68f7e6

Monotone-Author: ludovic@Sophos.ca
Monotone-Date: 2008-11-26T16:26:32
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Ludovic Marcotte committed 2008-11-26 16:26:32 +00:00
1 parent eba307e5c0
commit 021c061d29
5 files changed
+55 -4

No files matched your search

+25
View File
@@ -292,16 +292,41 @@
return result;
}
//
// This method needs to carefully handle the following cases :
//
// A- Alice creates an event in her calendar
// B- Alice creates an event in Bob's calendar (and invites herself or not)
// C- Alice moves an event to an other calendar
//
- (id <WOActionResults>) saveAction
{
SOGoAppointmentFolder *thisFolder;
SOGoAppointmentObject *co;
SoSecurityManager *sm;
NSException *ex;
NSString *aOwner;
// See A.
co = [self clientObject];
if (componentCalendar)
{
aOwner = [componentCalendar ownerInContext: context];
// See B.
if (![aOwner isEqualToString: [[context activeUser] login]])
{
co = [componentCalendar lookupName: [co nameInContainer]
inContext: context
acquire: NO];
}
}
// We save the component
[co saveComponent: event];
// See C.
if (componentCalendar)
{
sm = [SoSecurityManager sharedSecurityManager];
+15 -2
View File
@@ -1608,12 +1608,25 @@ RANGE(2);
andClientObject: (SOGoContentObject
<SOGoComponentOccurence> *) clientObject
{
NSString *toolbarFilename;
iCalPersonPartStat participationStatus;
NSString *toolbarFilename;
BOOL isOrganizer;
// We determine if we're the organizer of the component beeing modified.
// If we created an event on behalf of someone else -userIsOrganizer will
// return us YES. This is OK because we're in the SENT-BY. But, Alice
// should be able to accept/decline an invitation if she created the event
// in Bob's calendar and added herself in the attendee list.
isOrganizer = [component userIsOrganizer: ownerUser];
if (isOrganizer)
{
isOrganizer = ![ownerUser hasEmail: [[component organizer] sentBy]];
}
if ([[component attendees] count]
&& [component userIsParticipant: ownerUser]
&& ![component userIsOrganizer: ownerUser])
&& !isOrganizer)
{
participationStatus
= [[component findParticipant: ownerUser] participationStatus];