]> err.no Git - scalable-opengroupware.org/blobdiff - UI/WebServerResources/UIxAclEditor.js
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1180 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / UI / WebServerResources / UIxAclEditor.js
index b10635c6465b678da7ce46a9893d16039ad7e3e6..2bef5e1d3b796f25490e1e22b6cc7aa3c3ca37ad 100644 (file)
@@ -1,51 +1,34 @@
 /* test */
 
 var contactSelectorAction = 'acls-contacts';
-
-function addContact(tag, fullContactName, contactId, contactName,
-                    contactEmail) {
-   if (tag == "assistant")
-      addUser(contactName, contactId, false);
-   else if (tag == "delegate")
-      addUser(contactName, contactId, true);
+var defaultUserID = '';
+
+function addUser(userName, userID) {
+   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);
+   }
 }
 
-function addUser(userName, userId, delegate) {
-   var uidList = $("uixselector-userRoles-uidList");
-   var uids;
-
-   if (uidList.value.length > 0) {
-      uids = uidList.value.split(",");
-   } else {
-      uids = new Array();
-   }
+function addUserCallback(http) {
+}
 
-   if (uids.indexOf(userId) < 0) {
-      uids.push(userId);
-      var ul = $("uixselector-userRoles-display");
-      ul.appendChild(nodeForUser(userName, userId));
-      uidList.value = uids.join(",");
-      var roleList;
-      if (delegate)
-        roleList = $("delegates");
-      else
-        roleList = $("assistants");
-      if (roleList.value.length > 0) {
-        uids = roleList.value.split(",");
-        uids.push(userId);
-        roleList.value = uids.join(",");
-      }
-      else
-        roleList.value = userId;
-   }
+function setEventsOnUserNode(node) {
+   Event.observe(node, "mousedown", listRowMouseDownHandler);
+   Event.observe(node, "dblclick", onOpenUserRights);
+   Event.observe(node, "click", onRowClick);
 }
 
 function nodeForUser(userName, userId) {
    var node = document.createElement("li");
-   node.setAttribute("uid", userId);
+   node.setAttribute("id", userId);
    node.setAttribute("class", "");
-   node.addEventListener("mousedown", listRowMouseDownHandler, true);
-   node.addEventListener("click", onRowClick, true);
+   setEventsOnUserNode(node);
 
    var image = document.createElement("img");
    image.setAttribute("src", ResourcesURL + "/abcard.gif");
@@ -57,100 +40,106 @@ function nodeForUser(userName, userId) {
 }
 
 function saveAcls() {
-  $("aclForm").submit();
+   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;
+}
 
-  return false;
+function onUserAdd(event) {
+   openUserFolderSelector(null, "user");
+
+   preventDefault(event);
 }
 
-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("uid");
-    var regexp = new RegExp("(^|,)" + uid + "(,|$)","i");
-    if (regexp.test(assistantsValue.value))
-      select.selectedIndex = 0;
-    else
-      select.selectedIndex = 1;
-  }
+function removeUserCallback(http) {
+   var node = http.callbackData;
+
+  if (http.readyState == 4
+      && http.status == 204)
+     node.parentNode.removeChild(node);
   else
-    select.style.visibility = "hidden;";
+     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 onAclSelectionChange() {
-  log("selectionchange");
-  updateSelectedRole(this);
+function subscribeToFolder(refreshCallback, refreshCallbackData) {
+   if (UserLogin != refreshCallbackData["folder"]) {
+      addUser(refreshCallbackData["folderName"],
+             refreshCallbackData["folder"]);
+   }
+   else
+      refreshCallbackData["window"].alert(clabels["You cannot subscribe to a folder that you own!"]);
 }
 
-function onUsersChange(type) {
-  var select = $("userRoleDropDown");
-  if (type == "removal") {
-    var list;
-    if (select.selectedIndex == 0)
-      list = $("assistants");
-    else
-      list = $("delegates");
-
-    var uids = $("uixselector-userRoles-uidList");
-    var listArray = list.value.split(",");
-    var newListArray = new Array();
-    for (var i = 0; i < listArray.length; i++) {
-      var regexp = new RegExp("(^|,)" + listArray[i] + "($|,)");
-      if (regexp.test(uids.value))
-        newListArray.push(listArray[i]);
-    }
-    if (newListArray.length > 0)
-      list.value = newListArray.join(",");
-    else
-      list.value = "";
-  }
-
-  updateSelectedRole($("uixselector-userRoles-display"));
+function openRightsForUserID(userID) {
+   var url = window.location.href;
+   var elements = url.split("/");
+   elements[elements.length-1] = "userRights?uid=" + userID;
+
+   window.open(elements.join("/"), "",
+              "width=" + this.userRightsWidth
+              + ",height=" + this.userRightsHeight
+              + ",resizable=0,scrollbars=0,toolbar=0,"
+              + "location=0,directories=0,status=0,menubar=0,copyhistory=0");
 }
 
-function onUserRoleDropDownChange() {
-  var oldList;
-  var newList;
-
-  if (this.selectedIndex == 0) {
-    oldList = $("delegates");
-    newList = $("assistants");
-  } else {
-    oldList = $("assistants");
-    newList = $("delegates");
-  }
-
-  var uid = $("uixselector-userRoles-display").getSelectedRows()[0].getAttribute("uid");
-  var newListArray;
-  if (newList.value.length > 0) {
-    newListArray = newList.value.split(",");
-    newListArray.push(uid);
-  }
-  else
-    newListArray = new Array(uid);
-  newList.value = newListArray.join(",");
+function openRightsForUser(button) {
+  var nodes = $("userList").getSelectedRows();
+  if (nodes.length > 0)
+     openRightsForUserID(nodes[0].getAttribute("id"));
 
-  var oldListArray = oldList.value.split(",").without(uid);
-  if (oldListArray.length > 0)
-    oldList.value = oldListArray.join(",");
-  else
-    oldList.value = "";
+  return false;
+}
 
-  log("assistants: " + $("assistants").value);
-  log("delegates: " + $("delegates").value);
+function openRightsForDefaultUser(event) {
+   openRightsForUserID(defaultUserID);
+   preventDefault(event);
+}
+
+function onOpenUserRights(event) {
+   openRightsForUser();
+   preventDefault(event);
 }
 
 function onAclLoadHandler() {
-  $("userRoles").changeNotification = onUsersChange;
+   defaultUserID = $("defaultUserID").value;
+   var defaultRolesBtn = $("defaultRolesBtn");
+   if (defaultRolesBtn)
+      Event.observe(defaultRolesBtn, "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");
+      Event.observe(buttons[0], "click", onUserAdd);
+      Event.observe(buttons[1], "click", onUserRemove);
+   }
 
-  var ul = $("uixselector-userRoles-display");
-  ul.addEventListener("selectionchange",
-                      onAclSelectionChange, false);
-  var select = $("userRoleDropDown");
-  select.addEventListener("change", onUserRoleDropDownChange, false);
+   this.userRightsHeight = window.opener.getUsersRightsWindowHeight();
+   this.userRightsWidth = window.opener.getUsersRightsWindowWidth();
 }
 
-window.addEventListener("load", onAclLoadHandler, false);
+Event.observe(window, "load", onAclLoadHandler);