/* JavaScript for SOGoCalendar */
-var sortOrder = '';
-var sortKey = '';
var listFilter = 'view_today';
var listOfSelection = null;
var usersRightsWindowWidth = 502;
function newEvent(sender, type) {
- var day = sender.day;
+ var day = sender.readAttribute("day");
if (!day)
day = currentDay;
-
- var hour = sender.hour;
- if (!hour)
- hour = sender.getAttribute("hour");
+ var hour = sender.readAttribute("hour");
var folder = getSelectedFolder();
- var folderID = folder.getAttribute("id");
- var roles = folder.getAttribute("roles");
+ var folderID = folder.readAttribute("id");
+ var roles = folder.readAttribute("roles");
if (roles) {
roles = roles.split(",")
if ($(roles).indexOf("PublicModifier") < 0)
params.push("hm=" + hour);
if (params.length > 0)
urlstr += "?" + params.join("&");
-
window.open(urlstr, "", "width=490,height=470,resizable=0");
return false; /* stop following the link */
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() {
if (listOfSelection) {
var nodes = listOfSelection.getSelectedRows();
+ if (nodes.length == 0) {
+ window.alert(labels["Please select an event or a task."]);
+ return false;
+ }
+
for (var i = 0; i < nodes.length; i++)
_editEventId(nodes[i].getAttribute("id"),
nodes[i].calendar);
} else if (selectedCalendarCell) {
- _editEventId(selectedCalendarCell[0].cname,
- selectedCalendarCell[0].calendar);
+ _editEventId(selectedCalendarCell[0].cname,
+ selectedCalendarCell[0].calendar);
+ } else {
+ window.alert(labels["Please select an event or a task."]);
}
return false; /* stop following the link */
}
_batchDeleteEvents();
}
+ } else {
+ window.alert(labels["Please select an event or a task."]);
}
}
else if (selectedCalendarCell) {
}
}
else
- window.alert("no selection");
+ window.alert(labels["Please select an event or a task."]);
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",
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]);
}
function popupCalendar(node) {
- var nodeId = node.getAttribute("inputId");
+ var nodeId = $(node).readAttribute("inputId");
var input = $(nodeId);
input.calendar.popup();
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;
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();