sogo/UI/WebServerResources/UIxAclEditor.js
Francis Lachapelle 468073b131 Major refresh of CSS stylesheets.
Monotone-Parent: 508bbe52515b0ad7119c755b4cc91d17e313c06b
Monotone-Revision: d09001490c2d88332ef3ec446bfd0aa488d0de8c

Monotone-Author: flachapelle@inverse.ca
Monotone-Date: 2009-11-04T22:13:20
Monotone-Branch: ca.inverse.sogo
2009-11-04 22:13:20 +00:00

162 lines
4.7 KiB
JavaScript

/* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
var contactSelectorAction = 'acls-contacts';
var defaultUserID = '';
var AclEditor = {
userRightsHeight: null,
userRightsWidth: null
};
function addUser(userName, userID) {
var result = false;
if (!$(userID)) {
var ul = $("userList");
ul.appendChild(nodeForUser(userName, userID));
var url = window.location.href;
var elements = url.split("/");
elements[elements.length-1] = ("addUserInAcls?uid="
+ userID);
triggerAjaxRequest(elements.join("/"), addUserCallback);
result = true;
}
return result;
}
function addUserCallback(http) {
// Ignore response
}
function setEventsOnUserNode(node) {
var n = $(node);
n.observe("mousedown", listRowMouseDownHandler);
n.observe("selectstart", listRowMouseDownHandler);
n.observe("dblclick", onOpenUserRights);
n.observe("click", onRowClick);
}
function nodeForUser(userName, userId) {
var node = document.createElement("li");
node.setAttribute("id", userId);
node.setAttribute("class", "");
setEventsOnUserNode(node);
var image = document.createElement("img");
image.setAttribute("src", ResourcesURL + "/abcard.gif");
node.appendChild(image);
node.appendChild(document.createTextNode(" " + userName));
return node;
}
function saveAcls() {
var uidList = new Array();
var users = $("userList").childNodesWithTag("li");
for (var i = 0; i < users.length; i++)
uidList.push(users[i].getAttribute("id"));
$("userUIDS").value = uidList.join(",");
$("aclForm").submit();
return false;
}
function onUserAdd(event) {
openUserFolderSelector(null, "user");
preventDefault(event);
}
function removeUserCallback(http) {
var node = http.callbackData;
if (http.readyState == 4
&& isHttpStatus204(http.status))
node.parentNode.removeChild(node);
else
log("error deleting user: " + node.getAttribute("id"));
}
function onUserRemove(event) {
var userList = $("userList");
var nodes = userList.getSelectedRows();
var url = window.location.href;
var elements = url.split("/");
elements[elements.length-1] = "removeUserFromAcls?uid=";
var baseURL = elements.join("/");
for (var i = 0; i < nodes.length; i++) {
var userId = nodes[i].getAttribute("id");
triggerAjaxRequest(baseURL + userId, removeUserCallback, nodes[i]);
}
preventDefault(event);
}
function subscribeToFolder(refreshCallback, refreshCallbackData) {
var result = true;
if (UserLogin != refreshCallbackData["folder"]) {
result = addUser(refreshCallbackData["folderName"],
refreshCallbackData["folder"]);
}
else
refreshCallbackData["window"].alert(getLabel("You cannot subscribe to a folder that you own!"));
return result;
}
function openRightsForUserID(userID) {
var url = window.location.href;
var elements = url.split("/");
elements[elements.length-1] = "userRights?uid=" + userID;
window.open(elements.join("/"), "",
"width=" + AclEditor.userRightsWidth
+ ",height=" + AclEditor.userRightsHeight
+ ",resizable=0,scrollbars=0,toolbar=0,"
+ "location=0,directories=0,status=0,menubar=0,copyhistory=0");
}
function openRightsForUser(button) {
var nodes = $("userList").getSelectedRows();
if (nodes.length > 0)
openRightsForUserID(nodes[0].getAttribute("id"));
return false;
}
function openRightsForDefaultUser(event) {
this.blur(); // required by IE
openRightsForUserID(defaultUserID);
Event.stop(event);
}
function onOpenUserRights(event) {
openRightsForUser();
preventDefault(event);
}
function onAclLoadHandler() {
defaultUserID = $("defaultUserID").value;
var defaultRolesBtn = $("defaultRolesBtn");
if (defaultRolesBtn) {
defaultRolesBtn.observe("click", openRightsForDefaultUser);
}
var ul = $("userList");
var lis = ul.childNodesWithTag("li");
for (var i = 0; i < lis.length; i++)
setEventsOnUserNode(lis[i]);
var buttonArea = $("userSelectorButtons");
if (buttonArea) {
var buttons = buttonArea.childNodesWithTag("a");
$("aclAddUser").stopObserving ("click");
$("aclDeleteUser").stopObserving ("click");
$("aclAddUser").observe("mousedown", onUserAdd);
$("aclDeleteUser").observe("mousedown", onUserRemove);
}
AclEditor['userRightsHeight'] = window.opener.getUsersRightsWindowHeight();
AclEditor['userRightsWidth'] = window.opener.getUsersRightsWindowWidth();
}
document.observe("dom:loaded", onAclLoadHandler);