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.innerHTML = http.responseText;
var table = $("contactsList");
- if (table)
- configureContactsListHeaders(table.tBodies[0].rows[0].cells);
-
+ if (table) {
+ // 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"])
$(this).select();
}
-function onContactContextMenu(event, element) {
+function onContactContextMenu(event, element) { log ("onContactContextMenu");
var menu = $("contactMenu");
- //Event.observe(menu, "hideMenu", onContactContextMenuHide, false);
+
Event.observe(menu, "mousedown", onContactContextMenuHide, false);
- //document.documentElement.onclick = onContactContextMenuHide;
popupMenu(event, "contactMenu", element);
var topNode = $("contactsList");
function onMenuWriteToContact(event) {
var contactId = document.menuTarget.getAttribute('id');
+ var contactRow = $(contactId);
+ 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."]);
+ return false;
+ }
openMailComposeWindow(ApplicationBaseURL + currentContactFolder
+ "/" + contactId + "/write");
+
+ if (document.body.hasClassName("popup"))
+ window.close();
}
function onMenuDeleteContact(event) {
function onToolbarWriteToSelectedContacts(event) {
var contactsList = $('contactsList');
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
+ rowsWithEmail++;
+ openMailComposeWindow(ApplicationBaseURL + currentContactFolder
+ + "/" + rows[i] + "/write");
+ }
+ }
- for (var i = 0; i < rows.length; i++)
- openMailComposeWindow(ApplicationBaseURL + currentContactFolder
- + "/" + rows[i] + "/write");
+ if (rowsWithEmail == 0) {
+ window.alert(labels["The selected contact has no email address."]);
+ }
+ else if (document.body.hasClassName("popup"))
+ window.close();
return false;
}
refreshCurrentFolder();
- preventDefault(event);
+ Event.stop(event);
}
function newContact(sender) {
if (nodes[0].hasClassName("denied")) {
var div = $("contactsListContent");
- div.innerHTML = "";
+ div.update();
}
else {
search = {};
folder = accessToSubscribedFolder(folder);
else
folder = "/" + name;
- var li = document.createElement("li");
- $("contactFolders").appendChild(li);
- li.setAttribute("id", folder);
- li.appendChild(document.createTextNode(name));
- setEventsOnContactFolder(li);
+ if ($(folder))
+ window.alert(clabels["You have already subscribed to that folder!"]);
+ else {
+ var li = document.createElement("li");
+ $("contactFolders").appendChild(li);
+ li.setAttribute("id", folder);
+ li.appendChild(document.createTextNode(name));
+ setEventsOnContactFolder(li);
+ }
}
function newFolderCallback(http) {
handle.addInterface(SOGoDragHandlesInterface);
handle.leftBlock=$("contactFoldersList");
handle.rightBlock=$("rightPanel");
+ handle.leftMargin = 100;
}
handle = $("rightDragHandle");
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);