See ChangeLog

Monotone-Parent: eec300be835f03b3e7780d528e6c75977cf6254b
Monotone-Revision: 0a26aa3104394fc27aedec6025fb6d01075058b4

Monotone-Author: ludovic@Sophos.ca
Monotone-Date: 2011-07-05T13:24:25
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Ludovic Marcotte
2011-07-05 13:24:25 +00:00
parent 92c73181dd
commit decbce9f27
7 changed files with 53 additions and 40 deletions

View File

@@ -1,3 +1,11 @@
2011-07-05 Ludovic Marcotte <lmarcotte@inverse.ca>
* UI/MailPartViewers/UIxMailPartICalActions.m
(_setupChosenEventAndEventObject:) we now correctly
update the right event in the database in order to
update major properties coming from external invitations
during updates.
2011-07-02 Ludovic Marcotte <lmarcotte@inverse.ca>
* SoObjects/Appointments/SOGoAppointmentObject.m (-PUTAction:)

View File

@@ -736,13 +736,7 @@
}
[super saveComponent: newEvent];
[fullCalendar release];
fullCalendar = nil;
[safeCalendar release];
safeCalendar = nil;
[originalCalendar release];
originalCalendar = nil;
[self flush];
return nil;
}

View File

@@ -47,6 +47,7 @@
NSString *componentTag;
}
- (void) flush;
- (NSString *) componentTag;
- (void) setComponentTag: (NSString *) theTag;

View File

@@ -160,6 +160,13 @@
[super dealloc];
}
- (void) flush
{
DESTROY(fullCalendar);
DESTROY(safeCalendar);
DESTROY(originalCalendar);
}
- (NSString *) davContentType
{
return @"text/calendar";

View File

@@ -21,7 +21,7 @@ request_info = "vous invite à une réunion.";
"Delete from calendar" = "Effacer de l'agenda";
"Update status" = "Intégrer les modifications";
Accept = "Accepter";
Decline = "Decliner";
Decline = "Décliner";
Tentative = "Tentatif";
"Delegate ..." = "Déléguer ...";
"Delegated to" = "Délégué à";

View File

@@ -1,6 +1,6 @@
/* UIxMailPartICalActions.m - this file is part of SOGo
*
* Copyright (C) 2007-2009 Inverse inc.
* Copyright (C) 2007-2011 Inverse inc.
*
* Author: Wolfgang Sourdeau <wsourdeau@inverse.ca>
*
@@ -73,6 +73,9 @@
return (iCalEvent *) [emailCalendar firstChildWithTag: @"vevent"];
}
//
//
//
- (SOGoAppointmentObject *) _eventObjectWithUID: (NSString *) uid
forUser: (SOGoUser *) user
{
@@ -114,12 +117,18 @@
return eventObject;
}
//
//
//
- (SOGoAppointmentObject *) _eventObjectWithUID: (NSString *) uid
{
#warning this will not work if Bob reads emails of Alice and accepts events for her
return [self _eventObjectWithUID: uid forUser: [context activeUser]];
}
//
//
//
- (void) _fixOrganizerInEvent: (iCalEvent *) brokenEvent
{
iCalPerson *organizer;
@@ -155,8 +164,10 @@
@" if the user replies"];
}
- (iCalEvent *)
_setupChosenEventAndEventObject: (SOGoAppointmentObject **) eventObject
//
//
//
- (iCalEvent *) _setupChosenEventAndEventObject: (SOGoAppointmentObject **) eventObject
{
iCalEvent *emailEvent, *calendarEvent, *chosenEvent;
iCalPerson *organizer;
@@ -183,15 +194,25 @@
calendarEvent = (iCalEvent *)[*eventObject lookupOccurence: recurrenceTime];
}
else
calendarEvent = (iCalEvent *) [*eventObject component: NO
secure: NO];
calendarEvent = (iCalEvent *) [*eventObject component: NO secure: NO];
if (calendarEvent != nil)
{
// Calendar event still exists -- verify which of the calendar
// and email events is the most recent.
// and email events is the most recent. We must also update
// the event (or recurrence-id) with the email's content, otherwise
// we would never get major properties updates
if ([calendarEvent compare: emailEvent] == NSOrderedAscending)
chosenEvent = emailEvent;
{
iCalCalendar *parent;
parent = [calendarEvent parent];
[parent removeChild: calendarEvent];
[parent addChild: emailEvent];
[*eventObject saveContentString: [parent versitString]];
[*eventObject flush];
chosenEvent = emailEvent;
}
else
{
chosenEvent = calendarEvent;
@@ -213,6 +234,9 @@
return chosenEvent;
}
//
//
//
- (WOResponse *) _changePartStatusAction: (NSString *) newStatus
withDelegate: (iCalPerson *) delegate
{
@@ -242,12 +266,6 @@
return response;
}
//- (BOOL) shouldTakeValuesFromRequest: (WORequest *) request
// inContext: (WOContext*) localContext
//{
// return YES;
//}
- (WOResponse *) acceptAction
{
return [self _changePartStatusAction: @"ACCEPTED"
@@ -440,19 +458,4 @@
return response;
}
// - (WOResponse *) markTentativeAction
// {
// return [self _changePartStatusAction: @"TENTATIVE"];
// }
// - (WOResponse *) addToCalendarAction
// {
// return [self responseWithStatus: 404];
// }
// - (WOResponse *) deleteFromCalendarAction
// {
// return [self responseWithStatus: 404];
// }
@end

View File

@@ -1,20 +1,20 @@
/*
Copyright (C) 2004-2005 SKYRIX Software AG
This file is part of OpenGroupware.org.
This file is part of SOGo.
OGo is free software; you can redistribute it and/or modify it under
SOGo is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
OGo is distributed in the hope that it will be useful, but WITHOUT ANY
SOGo is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
License for more details.
You should have received a copy of the GNU Lesser General Public
License along with OGo; see the file COPYING. If not, write to the
License along with SOGo; see the file COPYING. If not, write to the
Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
*/