From 149d86a9aef7c8241d8cd855a70dd9e59126ea75 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Mon, 11 Aug 2008 15:06:19 +0000 Subject: [PATCH] Monotone-Parent: 6b577920a706f87a657fa33dbc4eb2916a0c1939 Monotone-Revision: b3aa3aab118081b3bc8fec95a06b91b29e222343 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2008-08-11T15:06:19 Monotone-Branch: ca.inverse.sogo --- UI/Contacts/product.plist | 5 --- UI/WebServerResources/ContactsUI.js | 53 ++++++++++++++--------------- 2 files changed, 25 insertions(+), 33 deletions(-) diff --git a/UI/Contacts/product.plist b/UI/Contacts/product.plist index 2870c1ee8..8bb4715c6 100644 --- a/UI/Contacts/product.plist +++ b/UI/Contacts/product.plist @@ -140,11 +140,6 @@ protectedBy = "Access Contents Information"; pageName = "UIxContactView"; }; - delete = { - protectedBy = "Delete Objects"; - pageName = "UIxContactView"; - actionName = "delete"; - }; edit = { protectedBy = "Access Contents Information"; pageName = "UIxContactEditor"; diff --git a/UI/WebServerResources/ContactsUI.js b/UI/WebServerResources/ContactsUI.js index 54dc0240d..947ff7ce4 100644 --- a/UI/WebServerResources/ContactsUI.js +++ b/UI/WebServerResources/ContactsUI.js @@ -1,6 +1,6 @@ /* JavaScript for SOGoContacts */ -var cachedContacts = new Array(); +var cachedContacts = {}; var currentAddressBook = null; var usersRightsWindowHeight = 200; @@ -425,37 +425,34 @@ function onToolbarWriteToSelectedContacts(event) { function onToolbarDeleteSelectedContacts(event) { var contactsList = $('contactsList'); var rows = contactsList.getSelectedRowsId(); - - if (rows.length == 0) { + + if (rows.length) { + for (var i = 0; i < rows.length; i++) { + delete cachedContacts[currentAddressBook + "/" + rows[i]]; + var urlstr = (URLForFolderID(currentAddressBook) + "/" + + rows[i] + "/delete"); + triggerAjaxRequest(urlstr, onContactDeleteEventCallback, rows[i]); + } + + var contactView = $('contactView'); + contactView.update(); + } + else { window.alert(labels["Please select a contact."]); - return false; } - - var contactView = $('contactView'); - - for (var i = 0; i < rows.length; i++) { - var url; - url = (URLForFolderID(currentAddressBook) + "/" - + rows[i] + "/delete"); - new Ajax.Request(url, { - method: 'post', - onFailure: function(transport) { - window.alert(labels["You cannot delete the selected contact(s)"]); - refreshCurrentFolder(); - }, - onSuccess: function(transport) { - var row = $(transport.responseText.trim()); - if (row) - row.parentNode.removeChild(row); - } - }); - } - - contactView.update(); - + return false; } +function onContactDeleteEventCallback(http) { + if (http.readyState == 4) { + if (isHttpStatus204(http.status)) { + var row = $(http.callbackData); + row.parentNode.removeChild(row); + } + } +} + function newEmailTo(sender) { var mailto = sanitizeMailTo(sender.parentNode.parentNode.menuTarget.innerHTML); @@ -561,7 +558,7 @@ function onConfirmContactSelection(event) { function refreshContacts(contactId) { openContactsFolder(currentAddressBook, true, contactId); - cachedContacts[currentAddressBook + "/" + contactId] = null; + delete cachedContacts[currentAddressBook + "/" + contactId]; loadContact(contactId); return false;