var cachedContacts = new Array();
var currentContactFolder = null;
-var savedColumnsWidth = null;
var usersRightsWindowHeight = 200;
var usersRightsWindowWidth = 450;
if (field.value == "")
errortext = errortext + labels.error_missingsubject + "\n";
- if (!UIxRecipientSelectorHasRecipients())
+ if (!hasRecipients())
errortext = errortext + labels.error_missingrecipients + "\n";
if (errortext.length > 0) {
var contactsList = $("contactsList");
if (contactsList)
selection = contactsList.getSelectedRowsId();
- else
- window.alert("no contactsList");
+// else
+// window.alert("no contactsList");
}
else
selection = null;
= triggerAjaxRequest(url, contactsListCallback);
}
-function configureContactsListHeaders(cells) {
- for (var i = 0; i < cells.length; i++) {
- var currentCell = $(cells[i]);
- Event.observe(currentCell, "click",
- onHeaderClick.bindAsEventListener(currentCell));
- //Event.observe(currentCell, "mousedown", listRowMouseDownHandler);
- }
-}
-
function contactsListCallback(http) {
- var div = $("contactsListContent");
-
if (http.readyState == 4
&& http.status == 200) {
document.contactsListAjaxRequest = null;
- div.update(http.responseText);
var table = $("contactsList");
if (table) {
- TableKit.Resizable.init(table);
- if (savedColumnsWidth != null) {
- // Restore columns width
- table.setColumnsWidth(savedColumnsWidth);
- }
- configureContactsListHeaders(table.tBodies[0].rows[0].cells);
+ // Update table
+ var data = http.responseText;
+ var html = data.replace(/^(.*\n)*.*(<table(.*\n)*)$/, "$2");
+ var tbody = table.tBodies[0];
+ var tmp = document.createElement('div');
+ $(tmp).update(html);
+ table.replaceChild(tmp.firstChild.tBodies[0], tbody);
}
-
+ else {
+ // Add table (doesn't happen .. yet)
+ var div = $("contactsListContent");
+ div.update(http.responseText);
+ table = $("contactsList");
+ configureSortableTableHeaders(table);
+ TableKit.Resizable.init(table, {'trueResize' : true, 'keepWidth' : true});
+ }
+
if (sorting["attribute"] && sorting["attribute"].length > 0) {
var sortHeader;
if (sorting["attribute"] == "displayName")
sortHeader = null;
if (sortHeader) {
+ var sortImages = $(table.tHead).getElementsByClassName("sortImage");
+ $(sortImages).each(function(item) {
+ item.remove();
+ });
+
var sortImage = createElement("img", "messageSortImage", "sortImage");
sortHeader.insertBefore(sortImage, sortHeader.firstChild);
if (sorting["ascending"])
var emailCell = contactRow.down('td', 1);
if (!emailCell.firstChild) { // .nodeValue is the contact email address
- window.alert(labels["The selected contact has no email address."].decodeEntities());
+ window.alert(labels["The selected contact has no email address."]);
return false;
}
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
+ "/" + rows[i] + "/write");
}
}
-
+
if (rowsWithEmail == 0) {
- window.alert(labels["The selected contact has no email address."].decodeEntities());
+ window.alert(labels["The selected contact has no email address."]);
}
else if (document.body.hasClassName("popup"))
window.close();
sorting["ascending"] = true;
}
- savedColumnsWidth = this.up('table').getColumnsWidth();
refreshCurrentFolder();
- preventDefault(event);
+ Event.stop(event);
}
function newContact(sender) {
if (nodes[0].hasClassName("denied")) {
var div = $("contactsListContent");
- div.innerHTML = "";
+ div.update();
}
else {
search = {};
for (var i = 0; i < list.length; i++) {
var folderID = list[i].getAttribute("id");
var url = URLForFolderID(folderID) + "/canAccessContent";
-
triggerAjaxRequest(url, deniedFoldersLookupCallback, folderID);
}
}
}
function onMenuSharing(event) {
+ if ($(this).hasClassName("disabled"))
+ return;
+
var folders = $("contactFolders");
var selected = folders.getSelectedNodes()[0];
- var title = this.innerHTML;
- var url = URLForFolderID(selected.getAttribute("id"));
+ var owner = selected.getAttribute("owner");
+ if (owner == "nobody")
+ window.alert(clabels["The user rights cannot be"
+ + " edited for this object!"]);
+ else {
+ var title = this.innerHTML;
+ var url = URLForFolderID(selected.getAttribute("id"));
- openAclWindow(url + "/acls", title);
+ openAclWindow(url + "/acls", title);
+ }
+}
+
+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() {
onMenuWriteToContact, null, "-",
onMenuDeleteContact);
menus["searchMenu"] = new Array(setSearchCriteria);
-
+
+ var contactFoldersMenu = $("contactFoldersMenu");
+ if (contactFoldersMenu)
+ contactFoldersMenu.prepareVisibility = onContactFoldersMenuPrepareVisibility;
+
return menus;
}
configureSelectionButtons();
configureContactFolders();
// initDnd();
+
+ 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);