]> err.no Git - scalable-opengroupware.org/blob - UI/WebServerResources/UIxAclEditor.js
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1034 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / UI / WebServerResources / UIxAclEditor.js
1 /* test */
2
3 var contactSelectorAction = 'acls-contacts';
4
5 function addUser(userName, userID) {
6    if (!$(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(",");
12          uids.push(userID);
13          roleList.value = uids.join(",");
14       }
15       else
16          roleList.value = userID;
17    }
18 }
19
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);
26
27    var image = document.createElement("img");
28    image.setAttribute("src", ResourcesURL + "/abcard.gif");
29
30    node.appendChild(image);
31    node.appendChild(document.createTextNode(" " + userName));
32
33    return node;
34 }
35
36 function saveAcls() {
37   $("aclForm").submit();
38
39   return false;
40 }
41
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;
53     else
54       select.selectedIndex = 1;
55   }
56   else
57     select.style.visibility = "hidden;";
58 }
59
60 function onAclSelectionChange() {
61   log("selectionchange");
62   updateSelectedRole(this);
63 }
64
65 function onUserRoleDropDownChange() {
66   var oldList;
67   var newList;
68
69   if (this.selectedIndex == 0) {
70     oldList = $("delegates");
71     newList = $("assistants");
72   } else {
73     oldList = $("assistants");
74     newList = $("delegates");
75   }
76
77   var uid = $("userList").getSelectedRows()[0].getAttribute("id");
78   var newListArray;
79   if (newList.value.length > 0) {
80     newListArray = newList.value.split(",");
81     newListArray.push(uid);
82   }
83   else
84     newListArray = new Array(uid);
85   newList.value = newListArray.join(",");
86
87   var oldListArray = oldList.value.split(",").without(uid);
88   if (oldListArray.length > 0)
89     oldList.value = oldListArray.join(",");
90   else
91     oldList.value = "";
92
93   log("assistants: " + $("assistants").value);
94   log("delegates: " + $("delegates").value);
95 }
96
97 function onUserAdd(event) {
98    openUserFolderSelector(null, "user");
99
100    event.preventDefault();
101 }
102
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++) {
115          if (list[i] != uid)
116             newList.push(list[i]);
117       }
118       uids.value = newList.join(",");
119       node.parentNode.removeChild(node);
120    }
121    updateSelectedRole(userlist);
122    event.preventDefault();
123 }
124
125 function subscribeToFolder(refreshCallback, refreshCallbackData) {
126    addUser(refreshCallbackData["folderName"],
127            refreshCallbackData["folder"]);
128 }
129
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);
138   }
139
140   var select = $("userRoleDropDown");
141   select.addEventListener("change", onUserRoleDropDownChange, false);
142
143   var buttons = $("userSelectorButtons").childNodesWithTag("a");
144   buttons[0].addEventListener("click", onUserAdd, false);
145   buttons[1].addEventListener("click", onUserRemove, false);
146 }
147
148 window.addEventListener("load", onAclLoadHandler, false);