See ChangeLog

Monotone-Parent: f88d99a5bcea75c289e4a86001d1d294d3dadb9e
Monotone-Revision: 3dc6b0849523db031cf866d058ecccbf1ecb98db

Monotone-Author: flachapelle@inverse.ca
Monotone-Date: 2009-03-24T15:34:15
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Francis Lachapelle 2009-03-24 15:34:15 +00:00
parent 2f93cdd60b
commit cc21f32490
4 changed files with 43 additions and 14 deletions

View File

@ -1,3 +1,16 @@
2009-03-24 Francis Lachapelle <flachapelle@inverse.ca>
* SoObjects/Appointments/SOGoCalendarComponent.m
([SOGoCalendarComponent
-sendEMailUsingTemplateNamed:forObject:previousObject:toAttendees:]):
no longer send a deletion notification to an attendee who already
declined the meeting.
* UI/MailPartViewers/UIxMailPartICalActions.m
([UIxMailPartICalActions -_eventObjectWithUID:forUser:]): when
looking for an event for a specific user, we now search into all
the user's calendar folders.
2009-03-24 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* SoObjects/SOGo/SOGoUser.m ([SOGoUser
@ -115,8 +128,8 @@
* UI/MainUI/SOGoRootPage.m ([SOGoRootPage -version]): new method
that returns the application version.
* iCalDateTime.m ([iCalDateTime -dateTime]): when not defined, the
timezone is now guessed from the date of the current object.
* SOPE/NGCards/iCalDateTime.m ([iCalDateTime -dateTime]): when not
defined, the timezone is now guessed from the date of the current object.
2009-03-18 Ludovic Marcotte <lmarcotte@inverse.ca>

View File

@ -9,6 +9,11 @@
currentStartDate when instantiated from a copy of firDate, to
avoid a leak.
2009-03-18 Francis Lachapelle <flachapelle@inverse.ca>
* iCalDateTime.m ([iCalDateTime -dateTime]): when not defined, the
timezone is now guessed from the date of the current object.
2009-02-06 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* CardElement.m ([CardElement -setParent:aParent]): no longer

View File

@ -570,7 +570,11 @@ _occurenceHasID (iCalRepeatableEntityObject *occurence, NSString *recID)
for (i = 0; i < count; i++)
{
attendee = [attendees objectAtIndex: i];
if (![[attendee uid] isEqualToString: owner])
// Don't send a notification to the event organizer nor a deletion
// notification to an attendee who already declined the invitation.
if (![[attendee uid] isEqualToString: owner] &&
!([[attendee partStat] compare: @"DECLINED"] == NSOrderedSame &&
[newPageName compare: @"Deletion"] == NSOrderedSame))
{
/* construct recipient */
recipient = [attendee mailAddress];

View File

@ -21,6 +21,7 @@
*/
#import <Foundation/NSCalendarDate.h>
#import <Foundation/NSEnumerator.h>
#import <NGObjWeb/WOContext+SoObjects.h>
#import <NGObjWeb/WOResponse.h>
@ -41,6 +42,7 @@
#import <SoObjects/Appointments/SOGoAppointmentObject.h>
#import <SoObjects/Appointments/SOGoAppointmentFolder.h>
#import <SoObjects/Mailer/SOGoMailObject.h>
#import <SoObjects/SOGo/SOGoParentFolder.h>
#import <SoObjects/SOGo/SOGoUser.h>
#import <SoObjects/SOGo/iCalEntityObject+Utilities.h>
#import <SoObjects/Mailer/SOGoMailBodyPart.h>
@ -69,27 +71,32 @@
- (SOGoAppointmentObject *) _eventObjectWithUID: (NSString *) uid
forUser: (SOGoUser *) user
{
SOGoAppointmentFolder *personalFolder;
SOGoAppointmentFolder *folder;
SOGoAppointmentObject *eventObject;
NSArray *folders;
NSEnumerator *e;
NSString *cname;
eventObject = nil;
#warning Should call lookupCalendarFoldersForUIDs to search among all folders
personalFolder = [user personalCalendarFolderInContext: context];
cname = [personalFolder resourceNameForEventUID: uid];
if (cname)
folders = [[user calendarsFolderInContext: context] subFolders];
e = [folders objectEnumerator];
while ( eventObject == nil && (folder = [e nextObject]) )
{
eventObject = [personalFolder lookupName: cname
inContext: context acquire: NO];
if (![eventObject isKindOfClass: [SOGoAppointmentObject class]])
eventObject = nil;
cname = [folder resourceNameForEventUID: uid];
if (cname)
{
eventObject = [folder lookupName: cname
inContext: context acquire: NO];
if (![eventObject isKindOfClass: [SOGoAppointmentObject class]])
eventObject = nil;
}
}
if (!eventObject)
{
eventObject = [SOGoAppointmentObject objectWithName: uid
inContainer: personalFolder];
inContainer: folder];
[eventObject setIsNew: YES];
}