38f3f08e4d
Monotone-Revision: eea420a3a6baf8b6e4fd36b41c6108614dfca6db Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-03-29T18:05:23 Monotone-Branch: ca.inverse.sogo
149 lines
3.9 KiB
JavaScript
149 lines
3.9 KiB
JavaScript
/* test */
|
|
|
|
var contactSelectorAction = 'acls-contacts';
|
|
|
|
function addUser(userName, userID) {
|
|
if (!$(userID)) {
|
|
var ul = $("userList");
|
|
ul.appendChild(nodeForUser(userName, userID));
|
|
var roleList = $("assistants");
|
|
if (roleList.value.length > 0) {
|
|
var uids = roleList.value.split(",");
|
|
uids.push(userID);
|
|
roleList.value = uids.join(",");
|
|
}
|
|
else
|
|
roleList.value = userID;
|
|
}
|
|
}
|
|
|
|
function nodeForUser(userName, userId) {
|
|
var node = document.createElement("li");
|
|
node.setAttribute("id", userId);
|
|
node.setAttribute("class", "");
|
|
node.addEventListener("mousedown", listRowMouseDownHandler, true);
|
|
node.addEventListener("click", onRowClick, true);
|
|
|
|
var image = document.createElement("img");
|
|
image.setAttribute("src", ResourcesURL + "/abcard.gif");
|
|
|
|
node.appendChild(image);
|
|
node.appendChild(document.createTextNode(" " + userName));
|
|
|
|
return node;
|
|
}
|
|
|
|
function saveAcls() {
|
|
$("aclForm").submit();
|
|
|
|
return false;
|
|
}
|
|
|
|
function updateSelectedRole(list) {
|
|
var select = $("userRoleDropDown");
|
|
var selection = list.getSelectedRows();
|
|
if (selection.length > 0) {
|
|
select.style.visibility = "visible;";
|
|
var selected = selection[0];
|
|
var assistantsValue = $("assistants");
|
|
var uid = selected.getAttribute("id");
|
|
var regexp = new RegExp("(^|,)" + uid + "(,|$)","i");
|
|
if (regexp.test(assistantsValue.value))
|
|
select.selectedIndex = 0;
|
|
else
|
|
select.selectedIndex = 1;
|
|
}
|
|
else
|
|
select.style.visibility = "hidden;";
|
|
}
|
|
|
|
function onAclSelectionChange() {
|
|
log("selectionchange");
|
|
updateSelectedRole(this);
|
|
}
|
|
|
|
function onUserRoleDropDownChange() {
|
|
var oldList;
|
|
var newList;
|
|
|
|
if (this.selectedIndex == 0) {
|
|
oldList = $("delegates");
|
|
newList = $("assistants");
|
|
} else {
|
|
oldList = $("assistants");
|
|
newList = $("delegates");
|
|
}
|
|
|
|
var uid = $("userList").getSelectedRows()[0].getAttribute("id");
|
|
var newListArray;
|
|
if (newList.value.length > 0) {
|
|
newListArray = newList.value.split(",");
|
|
newListArray.push(uid);
|
|
}
|
|
else
|
|
newListArray = new Array(uid);
|
|
newList.value = newListArray.join(",");
|
|
|
|
var oldListArray = oldList.value.split(",").without(uid);
|
|
if (oldListArray.length > 0)
|
|
oldList.value = oldListArray.join(",");
|
|
else
|
|
oldList.value = "";
|
|
|
|
log("assistants: " + $("assistants").value);
|
|
log("delegates: " + $("delegates").value);
|
|
}
|
|
|
|
function onUserAdd(event) {
|
|
openUserFolderSelector(null, "user");
|
|
|
|
event.preventDefault();
|
|
}
|
|
|
|
function onUserRemove(event) {
|
|
var userlist = $("userList");
|
|
var node = userlist.getSelectedRows()[0];
|
|
var uid = node.getAttribute("id");
|
|
var regexp = new RegExp("(^|,)" + uid + "($|,)");
|
|
var uids = $("assistants");
|
|
if (!regexp.test(uids.value))
|
|
uids = $("delegates");
|
|
if (regexp.test(uids.value)) {
|
|
var list = uids.value.split(",");
|
|
var newList = new Array();
|
|
for (var i = 0; i < list.length; i++) {
|
|
if (list[i] != uid)
|
|
newList.push(list[i]);
|
|
}
|
|
uids.value = newList.join(",");
|
|
node.parentNode.removeChild(node);
|
|
}
|
|
updateSelectedRole(userlist);
|
|
event.preventDefault();
|
|
}
|
|
|
|
function subscribeToFolder(refreshCallback, refreshCallbackData) {
|
|
addUser(refreshCallbackData["folderName"],
|
|
refreshCallbackData["folder"]);
|
|
}
|
|
|
|
function onAclLoadHandler() {
|
|
var ul = $("userList");
|
|
ul.addEventListener("selectionchange",
|
|
onAclSelectionChange, false);
|
|
var lis = ul.childNodesWithTag("li");
|
|
for (var i = 0; i < lis.length; i++) {
|
|
lis[i].addEventListener("mousedown", listRowMouseDownHandler, false);
|
|
lis[i].addEventListener("click", onRowClick, false);
|
|
}
|
|
|
|
var select = $("userRoleDropDown");
|
|
select.addEventListener("change", onUserRoleDropDownChange, false);
|
|
|
|
var buttons = $("userSelectorButtons").childNodesWithTag("a");
|
|
buttons[0].addEventListener("click", onUserAdd, false);
|
|
buttons[1].addEventListener("click", onUserRemove, false);
|
|
}
|
|
|
|
window.addEventListener("load", onAclLoadHandler, false);
|