See ChangeLog
Monotone-Parent: b917f2afae3c6e2c7a99f4406fd78c09462e37b1 Monotone-Revision: 6d931b60fff0152bef4accc444201620045a9d87 Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2009-06-15T21:19:36 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
parent
dd543d934e
commit
f1b2286848
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
||||||
|
2009-06-15 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
|
* SoObjects/Appointments/SOGoAppointmentFolder.m
|
||||||
|
([SOGoAppointmentFolder
|
||||||
|
-_appendCycleException:firstInstanceCalendarDateRange:fromRow:forRange:toArray:]):
|
||||||
|
for exceptions in the date range, add the boolean key
|
||||||
|
"isException" to the dictionary.
|
||||||
|
(-_flattenCycleRecords:fetchRange:): renamed method (was
|
||||||
|
-fixupCyclicRecords:fetchRange:).
|
||||||
|
|
||||||
2009-06-12 Francis Lachapelle <flachapelle@inverse.ca>
|
2009-06-12 Francis Lachapelle <flachapelle@inverse.ca>
|
||||||
|
|
||||||
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor
|
* UI/Contacts/UIxContactEditor.m ([UIxContactEditor
|
||||||
|
|
5
NEWS
5
NEWS
|
@ -1,3 +1,8 @@
|
||||||
|
1.0-2009xxyy (1.0.3)
|
||||||
|
--------------------
|
||||||
|
- improved search behavior of users folders (UIxContactsUserFolders)
|
||||||
|
- the editor window in the web interface now appears directly when editing an exception occurence of a repeating event (no more dialog window, as in Lightning)
|
||||||
|
|
||||||
1.0-20090605 (1.0.2)
|
1.0-20090605 (1.0.2)
|
||||||
--------------------
|
--------------------
|
||||||
- basic alarm implementation for the web interface
|
- basic alarm implementation for the web interface
|
||||||
|
|
|
@ -627,6 +627,8 @@ static NSArray *reducedReportQueryFields = nil;
|
||||||
dateSecs = [NSNumber numberWithInt: [tmp timeIntervalSince1970]];
|
dateSecs = [NSNumber numberWithInt: [tmp timeIntervalSince1970]];
|
||||||
[md setObject: dateSecs forKey: @"c_recurrence_id"];
|
[md setObject: dateSecs forKey: @"c_recurrence_id"];
|
||||||
|
|
||||||
|
// The first instance date is added to the dictionary so it can
|
||||||
|
// be used by UIxCalListingActions to compute the DST offset.
|
||||||
tmp = [_fir startDate];
|
tmp = [_fir startDate];
|
||||||
[md setObject: tmp forKey: @"cycleStartDate"];
|
[md setObject: tmp forKey: @"cycleStartDate"];
|
||||||
|
|
||||||
|
@ -711,7 +713,15 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir
|
||||||
oldRecord = [ma objectAtIndex: recordIndex];
|
oldRecord = [ma objectAtIndex: recordIndex];
|
||||||
[newRecord setObject: [oldRecord objectForKey: @"c_recurrence_id"]
|
[newRecord setObject: [oldRecord objectForKey: @"c_recurrence_id"]
|
||||||
forKey: @"c_recurrence_id"];
|
forKey: @"c_recurrence_id"];
|
||||||
|
|
||||||
|
// The first instance date is added to the dictionary so it can
|
||||||
|
// be used by UIxCalListingActions to compute the DST offset.
|
||||||
[newRecord setObject: [fir startDate] forKey: @"cycleStartDate"];
|
[newRecord setObject: [fir startDate] forKey: @"cycleStartDate"];
|
||||||
|
|
||||||
|
// We identified the record as an exception.
|
||||||
|
[newRecord setObject: [NSNumber numberWithInt: 1]
|
||||||
|
forKey: @"isException"];
|
||||||
|
|
||||||
[ma replaceObjectAtIndex: recordIndex withObject: newRecord];
|
[ma replaceObjectAtIndex: recordIndex withObject: newRecord];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -831,7 +841,7 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir
|
||||||
[_ma addObjectsFromArray: recordArray];
|
[_ma addObjectsFromArray: recordArray];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSArray *) fixupCyclicRecords: (NSArray *) _records
|
- (NSArray *) _flattenCycleRecords: (NSArray *) _records
|
||||||
fetchRange: (NGCalendarDateRange *) _r
|
fetchRange: (NGCalendarDateRange *) _r
|
||||||
{
|
{
|
||||||
// TODO: is the result supposed to be sorted by date?
|
// TODO: is the result supposed to be sorted by date?
|
||||||
|
@ -1009,7 +1019,7 @@ firstInstanceCalendarDateRange: (NGCalendarDateRange *) fir
|
||||||
if (records)
|
if (records)
|
||||||
{
|
{
|
||||||
if (r)
|
if (r)
|
||||||
records = [self fixupCyclicRecords: records fetchRange: r];
|
records = [self _flattenCycleRecords: records fetchRange: r];
|
||||||
if (ma)
|
if (ma)
|
||||||
[ma addObjectsFromArray: records];
|
[ma addObjectsFromArray: records];
|
||||||
else
|
else
|
||||||
|
|
|
@ -78,7 +78,7 @@ static NSArray *tasksFields = nil;
|
||||||
@"c_enddate", @"c_location", @"c_isallday",
|
@"c_enddate", @"c_location", @"c_isallday",
|
||||||
@"c_classification", @"c_partmails",
|
@"c_classification", @"c_partmails",
|
||||||
@"c_partstates", @"c_owner", @"c_iscycle", @"c_nextalarm",
|
@"c_partstates", @"c_owner", @"c_iscycle", @"c_nextalarm",
|
||||||
@"c_recurrence_id", nil];
|
@"c_recurrence_id", @"isException", nil];
|
||||||
[eventsFields retain];
|
[eventsFields retain];
|
||||||
}
|
}
|
||||||
if (!tasksFields)
|
if (!tasksFields)
|
||||||
|
|
|
@ -93,7 +93,7 @@ function editEvent() {
|
||||||
_editEventId(nodes[i].cname,
|
_editEventId(nodes[i].cname,
|
||||||
nodes[i].calendar);
|
nodes[i].calendar);
|
||||||
} else if (selectedCalendarCell) {
|
} else if (selectedCalendarCell) {
|
||||||
if (selectedCalendarCell[0].recurrenceTime)
|
if (selectedCalendarCell[0].recurrenceTime && !selectedCalendarCell[0].isException)
|
||||||
_editRecurrenceDialog(selectedCalendarCell[0], "confirmEditing");
|
_editRecurrenceDialog(selectedCalendarCell[0], "confirmEditing");
|
||||||
else
|
else
|
||||||
_editEventId(selectedCalendarCell[0].cname,
|
_editEventId(selectedCalendarCell[0].cname,
|
||||||
|
@ -406,7 +406,7 @@ function onViewEventCallback(http) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function editDoubleClickedEvent(event) {
|
function editDoubleClickedEvent(event) {
|
||||||
if (this.recurrenceTime)
|
if (this.recurrenceTime && !this.isException)
|
||||||
_editRecurrenceDialog(this, "confirmEditing");
|
_editRecurrenceDialog(this, "confirmEditing");
|
||||||
else
|
else
|
||||||
_editEventId(this.cname, this.calendar);
|
_editEventId(this.cname, this.calendar);
|
||||||
|
@ -586,6 +586,7 @@ function eventsListCallback(http) {
|
||||||
row.calendar = escape(data[i][1]);
|
row.calendar = escape(data[i][1]);
|
||||||
if (rTime)
|
if (rTime)
|
||||||
row.recurrenceTime = escape(rTime);
|
row.recurrenceTime = escape(rTime);
|
||||||
|
row.isException = data[i][15];
|
||||||
var startDate = new Date();
|
var startDate = new Date();
|
||||||
startDate.setTime(data[i][4] * 1000);
|
startDate.setTime(data[i][4] * 1000);
|
||||||
row.day = startDate.getDayString();
|
row.day = startDate.getDayString();
|
||||||
|
@ -988,12 +989,14 @@ function newBaseEventDIV(eventRep, event, eventText) {
|
||||||
// log ("12 iscycle = " + event[12]);
|
// log ("12 iscycle = " + event[12]);
|
||||||
// log ("13 nextalarm = " + event[13]);
|
// log ("13 nextalarm = " + event[13]);
|
||||||
// log ("14 recurrenceid = " + event[14]);
|
// log ("14 recurrenceid = " + event[14]);
|
||||||
|
// log ("15 isexception = " + event[15]);
|
||||||
|
|
||||||
var eventDiv = $(document.createElement("div"));
|
var eventDiv = $(document.createElement("div"));
|
||||||
eventDiv.cname = event[0];
|
eventDiv.cname = event[0];
|
||||||
eventDiv.calendar = event[1];
|
eventDiv.calendar = event[1];
|
||||||
if (eventRep.recurrenceTime)
|
if (eventRep.recurrenceTime)
|
||||||
eventDiv.recurrenceTime = eventRep.recurrenceTime;
|
eventDiv.recurrenceTime = eventRep.recurrenceTime;
|
||||||
|
eventDiv.isException = event[15];
|
||||||
eventDiv.addClassName("event");
|
eventDiv.addClassName("event");
|
||||||
if (event[13] > 0)
|
if (event[13] > 0)
|
||||||
eventDiv.addClassName("alarm");
|
eventDiv.addClassName("alarm");
|
||||||
|
|
Loading…
Reference in a new issue