/* JavaScript for SOGoCalendar */
-var sortOrder = '';
-var sortKey = '';
var listFilter = 'view_today';
var listOfSelection = null;
var targetname = "SOGo_edit_" + id;
var win = window.open(urlstr, "_blank",
"width=490,height=470,resizable=0");
- win.focus();
+ if (win)
+ win.focus();
}
function editEvent() {
function deleteEventCallback(http) {
if (http.readyState == 4) {
if (isHttpStatus204(http.status)) {
+ var isTask = false;
var nodes = http.callbackData;
for (var i = 0; i < nodes.length; i++) {
var node = $(nodes[i]);
- if (node)
+ if (node) {
+ isTask = isTask || (node.parentNode.id == 'tasksList');
node.parentNode.removeChild(node);
+ }
}
if (eventsToDelete.length)
_batchDeleteEvents();
else {
document.deleteEventAjaxRequest = null;
- refreshEvents();
- refreshTasks();
- changeCalendarDisplay();
+ if (isTask)
+ refreshTasks();
+ else {
+ refreshEvents();
+ changeCalendarDisplay();
+ }
}
}
else
document.selectedDate = td;
changeCalendarDisplay( { "day": day } );
+ currentDay = day;
if (needRefresh)
refreshEvents();
function onCalendarGotoDay(node) {
var day = node.getAttribute("date");
+ var needRefresh = (listFilter == 'view_selectedday'
+ && day != currentDay);
changeDateSelectorDisplay(day);
changeCalendarDisplay( { "day": day } );
+ if (needRefresh)
+ refreshEvents();
return false;
}
document.eventsListAjaxRequest = null;
var table = $("eventsList");
- var params = parseQueryParameters(http.callbackData);
- sortKey = params["sort"];
- sortOrder = params["desc"];
lastClickedRow = -1; // from generic.js
if (http.responseText.length > 0) {
startDate.setTime(data[i][4] * 1000);
row.day = startDate.getDayString();
row.hour = startDate.getHourString();
- Event.observe(row, "click",
- onEventClick.bindAsEventListener(row));
+ Event.observe(row, "mousedown", onRowClick);
+ Event.observe(row, "selectstart", listRowMouseDownHandler);
Event.observe(row, "dblclick",
editDoubleClickedEvent.bindAsEventListener(row));
Event.observe(row, "contextmenu",
td = document.createElement("td");
row.appendChild(td);
Event.observe(td, "mousedown", listRowMouseDownHandler, true);
- td.appendChild(document.createTextNode(data[i][9]));
+ td.appendChild(document.createTextNode(data[i][10]));
td = document.createElement("td");
row.appendChild(td);
Event.observe(td, "mousedown", listRowMouseDownHandler, true);
- td.appendChild(document.createTextNode(data[i][10]));
+ td.appendChild(document.createTextNode(data[i][11]));
td = document.createElement("td");
row.appendChild(td);
Event.observe(td, "mousedown", listRowMouseDownHandler, true);
td.appendChild(document.createTextNode(data[i][6]));
}
+
+ if (sorting["attribute"] && sorting["attribute"].length > 0) {
+ var sortHeader = $(sorting["attribute"] + "Header");
+
+ if (sortHeader) {
+ var sortImages = $(table.tHead).getElementsByClassName("sortImage");
+ $(sortImages).each(function(item) {
+ item.remove();
+ });
+
+ var sortImage = createElement("img", "messageSortImage", "sortImage");
+ sortHeader.insertBefore(sortImage, sortHeader.firstChild);
+ if (sorting["ascending"])
+ sortImage.src = ResourcesURL + "/title_sortdown_12x12.png";
+ else
+ sortImage.src = ResourcesURL + "/title_sortup_12x12.png";
+ }
+ }
}
}
else
var data = http.responseText.evalJSON(true);
for (var i = 0; i < data.length; i++) {
- //log(i + " = " + data[i][3]);
var listItem = document.createElement("li");
list.appendChild(listItem);
Event.observe(listItem, "mousedown", listRowMouseDownHandler);
editDoubleClickedEvent.bindAsEventListener(listItem));
listItem.setAttribute("id", data[i][0]);
$(listItem).addClassName(data[i][5]);
+ $(listItem).addClassName(data[i][6]);
listItem.calendar = data[i][1];
$(listItem).addClassName("calendarFolder" + data[i][1]);
listItem.cname = escape(data[i][0]);
null, null, title);
siblings.push(eventDiv);
eventDiv.siblings = siblings;
+ if (eventData[9].length > 0)
+ eventDiv.addClassName(eventData[9]);
var dayString = days[i].getDayString();
// log("day: " + dayString);
var parentDiv = null;
function onEventContextMenu(event) {
var topNode = $("eventsList");
-// log(topNode);
-
var menu = $("eventsListMenu");
Event.observe(menu, "hideMenu", onEventContextMenuHide);
popupMenu(event, "eventsListMenu", this);
-
- var topNode = $("eventsList");
- var selectedNodes = topNode.getSelectedRows();
- topNode.menuSelectedRows = selectedNodes;
- for (var i = 0; i < selectedNodes.length; i++)
- selectedNodes[i].deselect();
-
- topNode.menuSelectedEntry = this;
- this.select();
}
function onEventContextMenuHide(event) {
topNode.menuSelectedEntry.deselect();
topNode.menuSelectedEntry = null;
}
- if (topNode.menuSelectedRows) {
- var nodeIds = topNode.menuSelectedRows;
- for (var i = 0; i < nodeIds.length; i++) {
- var node = $(nodeIds[i]);
- node.select();
- }
- topNode.menuSelectedRows = null;
- }
}
function onEventsSelectionChange() {
listOfSelection = this;
this.removeClassName("_unfocused");
$("tasksList").addClassName("_unfocused");
+
+ var rows = this.tBodies[0].getSelectedNodes();
+ if (rows.length == 1) {
+ var row = rows[0];
+ changeCalendarDisplay( { "day": row.day,
+ "scrollEvent": row.getAttribute("id") } );
+ changeDateSelectorDisplay(row.day);
+ }
}
function onTasksSelectionChange() {
}
function onHeaderClick(event) {
- //log("onHeaderClick: " + this.link);
- //_loadEventHref(this.link);
+ var headerId = this.getAttribute("id");
+ var newSortAttribute;
+ if (headerId == "titleHeader")
+ newSortAttribute = "title";
+ else if (headerId == "startHeader")
+ newSortAttribute = "start";
+ else if (headerId == "endHeader")
+ newSortAttribute = "end";
+ else if (headerId == "locationHeader")
+ newSortAttribute = "location";
+ else
+ newSortAttribute = "start";
+
+ if (sorting["attribute"] == newSortAttribute)
+ sorting["ascending"] = !sorting["ascending"];
+ else {
+ sorting["attribute"] = newSortAttribute;
+ sorting["ascending"] = true;
+ }
+ refreshEvents();
- preventDefault(event);
+ Event.stop(event);
}
function refreshCurrentFolder() {
titleSearch = "&search=" + value;
else
titleSearch = "";
-
- return _loadEventHref("eventslist?desc=" + sortOrder
- + "&sort=" + sortKey
+
+ return _loadEventHref("eventslist?asc=" + sorting["ascending"]
+ + "&sort=" + sorting["attribute"]
+ "&day=" + currentDay
+ titleSearch
+ "&filterpopup=" + listFilter);
return refreshEvents();
}
-function onEventClick(event) {
- changeCalendarDisplay( { "day": this.day,
- "scrollEvent": this.getAttribute("id") } );
- changeDateSelectorDisplay(this.day);
-
- return onRowClick(event);
-}
-
function selectMonthInMenu(menu, month) {
var entries = menu.childNodes[1].childNodesWithTag("LI");
for (i = 0; i < entries.length; i++) {
window.alert(clabels["You have already subscribed to that folder!"]);
else {
var calendarList = $("calendarList");
- var lis = calendarList.childNodesWithTag("li");
+ var items = calendarList.childNodesWithTag("li");
var li = document.createElement("li");
// Add the calendar to the proper place
- var previousOwner = null;
- for (var i = 0; i < lis.length; i++) {
- var currentFolderName = lis[i].lastChild.nodeValue.strip();
- var currentOwner = lis[i].readAttribute('owner');
- if (currentOwner == owner) {
- previousOwner = currentOwner;
- if (currentFolderName > folderName)
- break;
- }
- else if (previousOwner ||
- (currentOwner != UserLogin && currentOwner > owner))
- break;
- }
- if (i != lis.length) // User is subscribed to other calendars of the same owner
- calendarList.insertBefore(li, lis[i]);
+ var i = getListIndexForFolder(items, owner, folderName);
+ if (i != items.length) // User is subscribed to other calendars of the same owner
+ calendarList.insertBefore(li, items[i]);
else
calendarList.appendChild(li);
// Generate new color
if (calendarColorIndex == null)
- calendarColorIndex = lis.length;
+ calendarColorIndex = items.length;
calendarColorIndex++;
var colorTable = [1, 1, 1];
var color;
li.appendChild(checkBox);
li.appendChild(document.createTextNode(" "));
$(checkBox).addClassName("checkBox");
+ if (owner == UserLogin)
+ checkBox.checked = 1;
var colorBox = document.createElement("div");
li.appendChild(colorBox);
list = $("eventsList");
list.multiselect = true;
- //configureSortableTableHeaders(list);
+ configureSortableTableHeaders(list);
TableKit.Resizable.init(list, {'trueResize' : true, 'keepWidth' : true});
Event.observe(list, "mousedown",
onEventsSelectionChange.bindAsEventListener(list));
- var div = list.parentNode;
- Event.observe(div, "contextmenu",
- onEventContextMenu.bindAsEventListener(div));
}
function initDateSelectorEvents() {
}
function initCalendars() {
+ sorting["attribute"] = "start";
+ sorting["ascending"] = true;
+
if (!document.body.hasClassName("popup")) {
initDateSelectorEvents();
initCalendarSelector();