Calendar bugs with multi-day events:

- Fix not properly visible if they span weeks
- Fix end date changes when editing if the event spans DST (daylight savings time) change
This commit is contained in:
Nathan Gray 2015-09-28 19:31:01 +00:00
parent 533ad2cc0e
commit 815b6bc09a
2 changed files with 13 additions and 4 deletions

View File

@ -685,7 +685,9 @@ app.classes.calendar = AppJS.extend(
if (typeof duration != 'undefined' && typeof end != 'undefined')
{
end.set_disabled(duration.get_value()!=='');
if (!end.disabled )
// Only set end date if not provided, adding seconds fails with DST
if (!end.disabled && !content.end)
{
end.set_value(start.get_value());
if (typeof content.duration != 'undefined') end.set_value("+"+content.duration);
@ -2025,7 +2027,7 @@ app.classes.calendar = AppJS.extend(
do
{
var expanded_date = ''+t.getUTCFullYear() + sprintf('%02d',t.getUTCMonth()+1) + sprintf('%02d',t.getDate());
var expanded_date = ''+t.getUTCFullYear() + sprintf('%02d',t.getUTCMonth()+1) + sprintf('%02d',t.getUTCDate());
if(typeof(updated_days[expanded_date]) === 'undefined')
{
updated_days[expanded_date] = [];

View File

@ -237,7 +237,11 @@ var et2_calendar_daycol = et2_valueWidget.extend([et2_IDetachedDOM, et2_IResizea
for(var i = 0; i < event_ids.length; i++)
{
var event = egw.dataGetUIDdata('calendar::'+event_ids[i]).data;
if(event && event.date && event.date === this.options.date)
if(event && event.date && (
event.date === this.options.date ||
// Accept multi-day events
new Date(event.start) <= this.date //&& new Date(event.end) >= this.date
))
{
events.push(event);
}
@ -420,7 +424,10 @@ var et2_calendar_daycol = et2_valueWidget.extend([et2_IDetachedDOM, et2_IResizea
{
var event = this._children[i].options.value || false;
if(!event) continue;
if(event.date && event.date != this.options.date)
if(event.date && event.date != this.options.date &&
// Multi-day events date may be different
(new Date(event.start) >= this.date || new Date(event.end) <= this.date )
)
{
// Still have a child event that has changed date (DnD)
this._children[i].destroy();