See ChangeLog

Monotone-Parent: a81f3635524596f99835829a1a4835f3a7f58c1b
Monotone-Revision: 1306bcb572d16a67199e32e625572c3430d39626

Monotone-Author: ludovic@Sophos.ca
Monotone-Date: 2008-12-01T19:20:25
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Ludovic Marcotte 2008-12-01 19:20:25 +00:00
parent 5732d7883e
commit e95d7fa39e
4 changed files with 29 additions and 7 deletions

View file

@ -1,3 +1,11 @@
2008-12-01 Ludovic Marcotte <lmarcotte@inverse.ca>
* We now try to match the c_name and c_uid
when creating events from the Web interface.
This can avoid creating duplicate events
with IMIP when calendar refreshes haven't occured
before the accept/decline/tentative actions.
2008-11-29 Ludovic Marcotte <lmarcotte@inverse.ca> 2008-11-29 Ludovic Marcotte <lmarcotte@inverse.ca>
* Updated german translation - patch from * Updated german translation - patch from

View file

@ -368,6 +368,10 @@
[[newEvent parent] setMethod: @""]; [[newEvent parent] setMethod: @""];
ownerUser = [SOGoUser userWithLogin: owner roles: nil]; ownerUser = [SOGoUser userWithLogin: owner roles: nil];
// We first save the event. It is important to this initially
// as the event's UID might get modified in SOGoCalendarComponent: -saveComponent:
[super saveComponent: newEvent];
if ([newEvent userIsOrganizer: ownerUser]) if ([newEvent userIsOrganizer: ownerUser])
{ {
@ -395,8 +399,6 @@
[self _handleUpdatedEvent: newEvent fromOldEvent: oldEvent]; [self _handleUpdatedEvent: newEvent fromOldEvent: oldEvent];
} }
} }
[super saveComponent: newEvent];
} }
// //

View file

@ -409,11 +409,26 @@ _occurenceHasID (iCalRepeatableEntityObject *occurence, NSString *recID)
- (void) saveComponent: (iCalRepeatableEntityObject *) newObject - (void) saveComponent: (iCalRepeatableEntityObject *) newObject
{ {
NSString *newiCalString; NSString *newiCalString, *newUid;
if (!isNew if (!isNew
&& [newObject isRecurrent]) && [newObject isRecurrent])
[self _updateRecurrenceIDs]; [self _updateRecurrenceIDs];
// As much as we can, we try to use c_name == c_uid in order
// to avoid tricky scenarios with some CalDAV clients. For example,
// if Alice invites Bob (both use SOGo) and Bob accepts the invitation
// using Lightning before having refreshed his calendar, he'll end up
// with a duplicate of the event in his database tables.
if (isNew)
{
newUid = nameInContainer;
if ([newUid hasSuffix: @".ics"])
newUid = [newUid substringToIndex: [newUid length]-4];
[newObject setUid: newUid];
}
newiCalString = [[newObject parent] versitString]; newiCalString = [[newObject parent] versitString];
[self saveContentString: newiCalString]; [self saveContentString: newiCalString];

View file

@ -94,10 +94,7 @@ SPAN#allDay > INPUT
{ position: static; } { position: static; }
SPAN.content > INPUT SPAN.content > INPUT
{ position: absolute; { width: 390px; }
top: 0px;
left: 0px;
right: 0px; }
INPUT#startDateCB, INPUT#startDateCB,
INPUT#dueDateCB, INPUT#dueDateCB,