From 110972a02d3811e01cb04a5f2991afd343656389 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 12 Feb 2010 17:55:28 +0000 Subject: [PATCH] Monotone-Parent: 30fcffc74da94912adcc8d3ae28ec9ccea63d320 Monotone-Revision: b1e65bbb5b39abffb1d7c79bcce4dafb77512efc Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2010-02-12T17:55:28 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 5 +++ UI/WebServerResources/SchedulerUI.js | 59 ++++++++++++++++------------ 2 files changed, 39 insertions(+), 25 deletions(-) diff --git a/ChangeLog b/ChangeLog index be6d615c2..0ce8fefae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,6 +10,11 @@ ¨right" attribute for the "calendarHeader" element on non-IE browsers. This reduces the amount of hacks and failed attempts to take the day view scrollbar into account. + (changeWeekCalendarDisplayOfSelectedDay): check the class of DIV + elements to avoid using fixed references that might change over + time and cause exceptions. + (onViewEventCallback): use prototype-expanded objects to avoid + exceptions on IE. 2010-02-11 Wolfgang Sourdeau diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index 4305b5c9a..87b353d9a 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -526,6 +526,7 @@ function onViewEventCallback(http) { if (currentView != "monthview") { view = $("daysView"); var viewPosition = view.cumulativeOffset(); + if (parseInt(data["isAllDay"]) == 0) { top -= view.scrollTop; if (viewPosition[1] > top + 2) { @@ -556,30 +557,34 @@ function onViewEventCallback(http) { div.down("h1").update(data["summary"].replace(/\r?\n/g, "
")); var paras = div.getElementsByTagName("p"); + var para = $(paras[0]); if (data["calendar"].length) { - // Remove owner email from calendar's name - paras[0].down("SPAN", 1).update(data["calendar"].replace(/ \<.*\>/, "")); - paras[0].show(); + // Remove owner email from calendar's name + para.down("SPAN", 1).update(data["calendar"].replace(/ \<.*\>/, "")); + para.show(); } else - paras[0].hide(); + para.hide(); + para = $(paras[1]); if (parseInt(data["isAllDay"]) == 0) { - paras[1].down("SPAN", 1).update(data["startTime"]); - paras[1].show(); + para.down("SPAN", 1).update(data["startTime"]); + para.show(); } else - paras[1].hide(); + para.hide(); + para = $(paras[2]); if (data["location"].length) { - paras[2].down("SPAN", 1).update(data["location"]); - paras[2].show(); + para.down("SPAN", 1).update(data["location"]); + para.show(); } else - paras[2].hide(); + para.hide(); + para = $(paras[3]); if (data["description"].length) { - paras[3].update(data["description"].replace(/\r?\n/g, "
")); - paras[3].show(); + para.update(data["description"].replace(/\r?\n/g, "
")); + para.show(); } else - paras[3].hide(); + para.hide(); div.setStyle({ left: left + "px", top: top + "px" }); div.show(); @@ -1808,19 +1813,23 @@ function onCalendarSelectDay(event) { function changeWeekCalendarDisplayOfSelectedDay(node) { var daysView = $("daysView"); var daysDiv = daysView.childNodesWithTag("div"); - var days = daysDiv[1].childNodesWithTag("div"); - var headerDiv = $($("calendarHeader").childNodesWithTag("div")[1]); - var headerDays = headerDiv.childNodesWithTag("div"); + for (var i = 0; i < daysDiv.length; i++) { + if (daysDiv[i].hasClassName("days")) { + var days = daysDiv[i].childNodesWithTag("div"); + var headerDiv = $($("calendarHeader").childNodesWithTag("div")[1]); + var headerDays = headerDiv.childNodesWithTag("div"); - for (var i = 0; i < days.length; i++) { - if (days[i] == node - || headerDays[i] == node) { - headerDays[i].addClassName("selectedDay"); - days[i].addClassName("selectedDay"); - } - else { - headerDays[i].removeClassName("selectedDay"); - days[i].removeClassName("selectedDay"); + for (var j = 0; j < days.length; j++) { + if (days[j] == node + || headerDays[j] == node) { + headerDays[j].addClassName("selectedDay"); + days[j].addClassName("selectedDay"); + } + else { + headerDays[j].removeClassName("selectedDay"); + days[j].removeClassName("selectedDay"); + } + } } } }