sogo/UI/WebServerResources/UIxMailUserDelegationEditor.js

112 lines
3.3 KiB
JavaScript

var contactSelectorAction = 'delegation-contacts';
function addDelegate(delegateName, delegateID) {
var result = false;
if (!$(delegateID)) {
var ul = $("delegateList");
var newNode = nodeForDelegate(delegateName, delegateID);
ul.appendChild(newNode);
var url = window.location.href;
var elements = url.split("/");
elements[elements.length-1] = ("addDelegate?uid="
+ delegateID);
triggerAjaxRequest(elements.join("/"), addDelegateCallback, newNode);
result = true;
}
return result;
}
function addDelegateCallback(http) {
if (http.readyState == 4) {
if (!isHttpStatus204(http.status)) {
var node = http.callbackData;
node.parentNode.removeChild(node);
}
}
}
function setEventsOnDelegateNode(node) {
node.observe("mousedown", listRowMouseDownHandler);
node.observe("selectstart", listRowMouseDownHandler);
node.observe("click", onRowClick);
}
function nodeForDelegate(delegateName, delegateId) {
var node = createElement("li");
node.id = delegateId;
var span = createElement("span");
span.addClassName("userFullName");
span.appendChild(document.createTextNode(" " + delegateName));
node.appendChild(span);
setEventsOnDelegateNode(node);
return node;
}
function onDelegateAdd(event) {
openUserFolderSelector(null, "user");
preventDefault(event);
}
function removeDelegateCallback(http) {
var node = http.callbackData;
if (http.readyState == 4
&& isHttpStatus204(http.status))
node.parentNode.removeChild(node);
else
log("error deleting delegate: " + node.getAttribute("id"));
}
function onDelegateRemove(event) {
var delegateList = $("delegateList");
var nodes = delegateList.getSelectedRows();
var url = window.location.href;
var elements = url.split("/");
elements[elements.length-1] = "removeDelegate?uid=";
var baseURL = elements.join("/");
for (var i = 0; i < nodes.length; i++) {
var delegateId = nodes[i].id;
triggerAjaxRequest(baseURL + delegateId, removeDelegateCallback,
nodes[i]);
}
preventDefault(event);
}
function subscribeToFolder(refreshCallback, refreshCallbackData) {
var result = true;
if (UserLogin != refreshCallbackData["folder"]) {
result = addDelegate(refreshCallbackData["folderName"],
refreshCallbackData["folder"]);
}
else
refreshCallbackData["window"].alert(_("You cannot subscribe to a folder that you own!"));
return result;
}
function onDelegationLoadHandler() {
var ul = $("delegateList");
var lis = ul.childNodesWithTag("li");
for (var i = 0; i < lis.length; i++)
setEventsOnDelegateNode(lis[i]);
var buttonArea = $("delegateSelectorButtons");
if (buttonArea) {
var buttons = buttonArea.childNodesWithTag("a");
$("addDelegate").stopObserving ("click");
$("deleteDelegate").stopObserving ("click");
$("addDelegate").observe("mousedown", onDelegateAdd);
$("deleteDelegate").observe("mousedown", onDelegateRemove);
}
Event.observe(window, "unload", onDelegationCloseHandler);
}
document.observe("dom:loaded", onDelegationLoadHandler);