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:
parent
5732d7883e
commit
e95d7fa39e
|
@ -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
|
||||||
|
|
|
@ -369,6 +369,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])
|
||||||
{
|
{
|
||||||
if ([self isNew])
|
if ([self isNew])
|
||||||
|
@ -395,8 +399,6 @@
|
||||||
[self _handleUpdatedEvent: newEvent fromOldEvent: oldEvent];
|
[self _handleUpdatedEvent: newEvent fromOldEvent: oldEvent];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[super saveComponent: newEvent];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -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];
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Reference in a new issue