3 var contactSelectorAction = 'acls-contacts';
5 function addUser(userName, userID) {
7 var ul = $("userList");
8 ul.appendChild(nodeForUser(userName, userID));
9 var roleList = $("assistants");
10 if (roleList.value.length > 0) {
11 var uids = roleList.value.split(",");
13 roleList.value = uids.join(",");
16 roleList.value = userID;
20 function nodeForUser(userName, userId) {
21 var node = document.createElement("li");
22 node.setAttribute("id", userId);
23 node.setAttribute("class", "");
24 node.addEventListener("mousedown", listRowMouseDownHandler, true);
25 node.addEventListener("click", onRowClick, true);
27 var image = document.createElement("img");
28 image.setAttribute("src", ResourcesURL + "/abcard.gif");
30 node.appendChild(image);
31 node.appendChild(document.createTextNode(" " + userName));
37 $("aclForm").submit();
42 function updateSelectedRole(list) {
43 var select = $("userRoleDropDown");
44 var selection = list.getSelectedRows();
45 if (selection.length > 0) {
46 select.style.visibility = "visible;";
47 var selected = selection[0];
48 var assistantsValue = $("assistants");
49 var uid = selected.getAttribute("id");
50 var regexp = new RegExp("(^|,)" + uid + "(,|$)","i");
51 if (regexp.test(assistantsValue.value))
52 select.selectedIndex = 0;
54 select.selectedIndex = 1;
57 select.style.visibility = "hidden;";
60 function onAclSelectionChange() {
61 log("selectionchange");
62 updateSelectedRole(this);
65 function onUserRoleDropDownChange() {
69 if (this.selectedIndex == 0) {
70 oldList = $("delegates");
71 newList = $("assistants");
73 oldList = $("assistants");
74 newList = $("delegates");
77 var uid = $("userList").getSelectedRows()[0].getAttribute("id");
79 if (newList.value.length > 0) {
80 newListArray = newList.value.split(",");
81 newListArray.push(uid);
84 newListArray = new Array(uid);
85 newList.value = newListArray.join(",");
87 var oldListArray = oldList.value.split(",").without(uid);
88 if (oldListArray.length > 0)
89 oldList.value = oldListArray.join(",");
93 log("assistants: " + $("assistants").value);
94 log("delegates: " + $("delegates").value);
97 function onUserAdd(event) {
98 openUserFolderSelector(null, "user");
100 event.preventDefault();
103 function onUserRemove(event) {
104 var userlist = $("userList");
105 var node = userlist.getSelectedRows()[0];
106 var uid = node.getAttribute("id");
107 var regexp = new RegExp("(^|,)" + uid + "($|,)");
108 var uids = $("assistants");
109 if (!regexp.test(uids.value))
110 uids = $("delegates");
111 if (regexp.test(uids.value)) {
112 var list = uids.value.split(",");
113 var newList = new Array();
114 for (var i = 0; i < list.length; i++) {
116 newList.push(list[i]);
118 uids.value = newList.join(",");
119 node.parentNode.removeChild(node);
121 updateSelectedRole(userlist);
122 event.preventDefault();
125 function subscribeToFolder(refreshCallback, refreshCallbackData) {
126 addUser(refreshCallbackData["folderName"],
127 refreshCallbackData["folder"]);
130 function onAclLoadHandler() {
131 var ul = $("userList");
132 ul.addEventListener("selectionchange",
133 onAclSelectionChange, false);
134 var lis = ul.childNodesWithTag("li");
135 for (var i = 0; i < lis.length; i++) {
136 lis[i].addEventListener("mousedown", listRowMouseDownHandler, false);
137 lis[i].addEventListener("click", onRowClick, false);
140 var select = $("userRoleDropDown");
141 select.addEventListener("change", onUserRoleDropDownChange, false);
143 var buttons = $("userSelectorButtons").childNodesWithTag("a");
144 buttons[0].addEventListener("click", onUserAdd, false);
145 buttons[1].addEventListener("click", onUserRemove, false);
148 window.addEventListener("load", onAclLoadHandler, false);