diff --git a/ChangeLog b/ChangeLog index a1c850420..8d09934da 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2009-10-16 Francis Lachapelle + * UI/WebServerResources/SchedulerUI.js (eventsListCallback): don't + set the hour attribute for all-day events. + (changeCalendarDisplay): enable auto-scroll when scrolling + to an event (!). + (refreshCalendarEventsCallback): idem. + (scrollDayView): don't scroll when selecting an all-day event. + * UI/Scheduler/UIxComponentEditor.m (-_loadRRules): the repeat rule interval can be set unconditionally for weekly rules. When an end date or repeat count is defined, the rule must be considered diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index bf21a1506..4e1688f76 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -601,7 +601,8 @@ function eventsListCallback(http) { var startDate = new Date(); startDate.setTime(data[i][4] * 1000); row.day = startDate.getDayString(); - row.hour = startDate.getHourString(); + if (!data[i][7]) + row.hour = startDate.getHourString(); // event is not all day row.observe("mousedown", onRowClick); row.observe("selectstart", listRowMouseDownHandler); if (data[i][2] != null) @@ -827,13 +828,15 @@ function changeCalendarDisplay(data, newView) { var selectedLink = $$('table#dateSelectorTable span[day='+day+']'); if (selectedLink.length > 0) { selectedCell = selectedLink[0].getParentWithTagName("td"); - selectedCell.selectElement(); + $(selectedCell).selectElement(); document.selectedDate = selectedCell; } // Scroll to event - if (scrollEvent) + if (scrollEvent) { + preventAutoScroll = false; scrollDayView(scrollEvent); + } return false; } @@ -913,13 +916,15 @@ function scrollDayView(scrollEvent) { else contentView = $("daysView"); - var top = firstEvent.cumulativeOffset()[1] - contentView.scrollTop; - - // Don't scroll if the event is visible to the user - if (top < contentView.cumulativeOffset()[1]) - contentView.scrollTop = firstEvent.cumulativeOffset()[1] - contentView.cumulativeOffset()[1]; - else if (top > contentView.cumulativeOffset()[1] + contentView.getHeight() - firstEvent.getHeight()) - contentView.scrollTop = firstEvent.cumulativeOffset()[1] - contentView.cumulativeOffset()[1]; + // Don't scroll to an all-day event + if (typeof eventRow.hour != "undefined") { + var top = firstEvent.cumulativeOffset()[1] - contentView.scrollTop; + // Don't scroll if the event is visible to the user + if (top < contentView.cumulativeOffset()[1]) + contentView.scrollTop = firstEvent.cumulativeOffset()[1] - contentView.cumulativeOffset()[1]; + else if (top > contentView.cumulativeOffset()[1] + contentView.getHeight() - firstEvent.getHeight()) + contentView.scrollTop = firstEvent.cumulativeOffset()[1] - contentView.cumulativeOffset()[1]; + } } else if (currentView != "monthview") { var contentView = $("daysView"); @@ -1020,7 +1025,10 @@ function refreshCalendarEventsCallback(http) { } onWindowResize(null); } - scrollDayView(http.callbackData["scrollEvent"]); + if (http.callbackData["scrollEvent"]) { + preventAutoScroll = false; + scrollDayView(http.callbackData["scrollEvent"]); + } } else log("AJAX error when refreshing calendar events");