]> err.no Git - scalable-opengroupware.org/blobdiff - UI/WebServerResources/ContactsUI.js
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1267 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / UI / WebServerResources / ContactsUI.js
index dc2a9a021c79529335115fa8bf1d720489ad1b63..42ced264f9b9188f3bcd351c78069391f5591a4d 100644 (file)
@@ -333,6 +333,9 @@ function onToolbarWriteToSelectedContacts(event) {
   var rows = contactsList.getSelectedRowsId();
   var rowsWithEmail = 0;
 
+  if (rows.length == 0)
+    return false;
+
   for (var i = 0; i < rows.length; i++) {
     var emailCell = $(rows[i]).down('td', 1);
     if (emailCell.firstChild) { // .nodeValue is the contact email address
@@ -341,7 +344,7 @@ function onToolbarWriteToSelectedContacts(event) {
                            + "/" + rows[i] + "/write");
     }
   }
-  
+
   if (rowsWithEmail == 0) {
     window.alert(labels["The selected contact has no email address."]);
   }
@@ -706,6 +709,9 @@ function folderRenameCallback(http) {
 }
 
 function onMenuSharing(event) {
+  if ($(this).hasClassName("disabled"))
+    return;
+
    var folders = $("contactFolders");
    var selected = folders.getSelectedNodes()[0];
    var owner = selected.getAttribute("owner");
@@ -720,6 +726,21 @@ function onMenuSharing(event) {
    }
 }
 
+function onContactFoldersMenuPrepareVisibility() {
+  var folders = $("contactFolders");
+  var selected = folders.getSelectedNodes();  
+
+  if (selected.length > 0) {
+    var folderOwner = selected[0].getAttribute("owner");
+    var sharingOption = $(this).down("ul").childElements().last();
+    // Disable the "Sharing" option when address book is not owned by user
+    if (folderOwner == UserLogin || IsSuperUser)
+      sharingOption.removeClassName("disabled");
+    else
+      sharingOption.addClassName("disabled");
+  }
+}
+
 function getMenus() {
    var menus = {};
    menus["contactFoldersMenu"] = new Array(onMenuModify, "-", null,
@@ -729,7 +750,11 @@ function getMenus() {
                                    onMenuWriteToContact, null, "-",
                                    onMenuDeleteContact);
    menus["searchMenu"] = new Array(setSearchCriteria);
-
+   
+   var contactFoldersMenu = $("contactFoldersMenu");
+   if (contactFoldersMenu)
+     contactFoldersMenu.prepareVisibility = onContactFoldersMenuPrepareVisibility;
+   
    return menus;
 }
 
@@ -755,9 +780,10 @@ function initContacts(event) {
    var table = $("contactsList");
    if (table) {
      // Initialize contacts table
+     table.multiselect = true;
      configureSortableTableHeaders(table);
      TableKit.Resizable.init(table, {'trueResize' : true, 'keepWidth' : true});
    }
 }
 
-addEvent(window, 'load', initContacts);
+FastInit.addOnLoad(initContacts);