]> err.no Git - scalable-opengroupware.org/blobdiff - UI/WebServerResources/UIxAclEditor.js
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1267 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / UI / WebServerResources / UIxAclEditor.js
index 0c7c2a0987f0d459961489e14958d7234a9afaa2..5350931e4b16f98fc179dee60e8b41548dc05c44 100644 (file)
 /* test */
 
 var contactSelectorAction = 'acls-contacts';
+var defaultUserID = '';
+var userRightsHeight;
+var userRightsWidth;
 
-function addContact(tag, fullContactName, contactId, contactName,
-                    contactEmail) {
-   if (tag == "assistant")
-      addUser(contactName, contactId, false);
-   else if (tag == "delegate")
-      addUser(contactName, contactId, true);
-}
-
-function addUser(userName, userId, checked) {
-   var uidList = $("uixselector-userRoles-uidList");
-   var uids;
-
-   if (uidList.value.length > 0) {
-      uids = uidList.value.split(",");
-   } else {
-      uids = new Array();
+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);
    }
+}
 
-   if (uids.indexOf(userId) < 0) {
-      uids.push(userId);
-      var ul = $("uixselector-userRoles-display");
-      ul.appendChild(nodeForUser(userName, userId, checked));
-      uidList.value = uids.join(",");
-   }
+function addUserCallback(http) {
+}
 
-   log("addUser: " + uidList.value);
+function setEventsOnUserNode(node) {
+   Event.observe(node, "mousedown", listRowMouseDownHandler);
+   Event.observe(node, "selectstart", listRowMouseDownHandler);
+   Event.observe(node, "dblclick", onOpenUserRights);
+   Event.observe(node, "click", onRowClick);
 }
 
-function nodeForUser(userName, userId, checked) {
+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 checkbox = document.createElement("input");
-   checkbox.setAttribute("type", "checkbox");
-   checkbox.setAttribute("class", "checkBox");
-   checkbox.checked = checked;
-   checkbox.addEventListener("change", updateAclStatus, true);
+   var image = document.createElement("img");
+   image.setAttribute("src", ResourcesURL + "/abcard.gif");
 
-   node.appendChild(checkbox);
-   node.appendChild(document.createTextNode(userName));
+   node.appendChild(image);
+   node.appendChild(document.createTextNode(" " + userName));
 
    return node;
 }
 
-function updateAclStatus() {
+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 saveAcls() {
-   var form = $("aclForm");
-   var lis = $("uixselector-userRoles-display").childNodesWithTag("li");
-
-   var assistants = new Array();
-   var delegates = new Array();
-   for (var i = 0; i < lis.length; i++) {
-      var uName = lis[i].getAttribute("uid");
-      var cb = lis[i].childNodesWithTag("input")[0];
-      if (cb.checked)
-         delegates.push(uName);
-      else
-         assistants.push(uName);
+function removeUserCallback(http) {
+   var node = http.callbackData;
+
+  if (http.readyState == 4
+      && http.status == 204)
+     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]);
    }
-   $("assistants").value = assistants.join(",");
-   $("delegates").value = delegates.join(",");
+   preventDefault(event);
+}
 
-   form.submit();
+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!"]);
+}
 
-   return false;
+function openRightsForUserID(userID) {
+   var url = window.location.href;
+   var elements = url.split("/");
+   elements[elements.length-1] = "userRights?uid=" + userID;
+
+   window.open(elements.join("/"), "",
+              "width=" + userRightsWidth
+              + ",height=" + 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) {
+   openRightsForUserID(defaultUserID);
+   preventDefault(event);
+}
+
+function onOpenUserRights(event) {
+   openRightsForUser();
+   preventDefault(event);
 }
+
+function onAclLoadHandler() {
+   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);
+   }
+
+   userRightsHeight = window.opener.getUsersRightsWindowHeight();
+   userRightsWidth = window.opener.getUsersRightsWindowWidth();
+}
+
+FastInit.addOnLoad(onAclLoadHandler);