Monotone-Parent: 392d6631a429629bec7220b159f559a24caa910c

Monotone-Revision: ac86bf6af212996c20d42a2d5075ed984200b34c

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2008-04-15T19:48:48
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau 2008-04-15 19:48:48 +00:00
parent 04e2682234
commit 20e2fea98b
2 changed files with 57 additions and 71 deletions

View file

@ -1,7 +1,7 @@
/* JavaScript for SOGoContacts */ /* JavaScript for SOGoContacts */
var cachedContacts = new Array(); var cachedContacts = new Array();
var currentContactFolder = null; var currentAddressBook = null;
var usersRightsWindowHeight = 200; var usersRightsWindowHeight = 200;
var usersRightsWindowWidth = 450; var usersRightsWindowWidth = 450;
@ -26,10 +26,10 @@ function validateEditorInput(sender) {
} }
function openContactsFolder(contactsFolder, reload, idx) { function openContactsFolder(contactsFolder, reload, idx) {
if ((contactsFolder && contactsFolder != currentContactFolder) if ((contactsFolder && contactsFolder != currentAddressBook)
|| reload) { || reload) {
currentContactFolder = contactsFolder; currentAddressBook = contactsFolder;
var url = URLForFolderID(currentContactFolder) + var url = URLForFolderID(currentAddressBook) +
"/view?noframe=1"; "/view?noframe=1";
var searchValue = search["value"]; var searchValue = search["value"];
@ -42,7 +42,7 @@ function openContactsFolder(contactsFolder, reload, idx) {
+ "&asc=" + sorting["ascending"]); + "&asc=" + sorting["ascending"]);
var selection; var selection;
if (contactsFolder == currentContactFolder) { if (contactsFolder == currentAddressBook) {
var contactsList = $("contactsList"); var contactsList = $("contactsList");
if (contactsList) if (contactsList)
selection = contactsList.getSelectedRowsId(); selection = contactsList.getSelectedRowsId();
@ -63,7 +63,7 @@ function openContactsFolder(contactsFolder, reload, idx) {
function openContactsFolderAtIndex(element) { function openContactsFolderAtIndex(element) {
var idx = element.getAttribute("idx"); var idx = element.getAttribute("idx");
var url = URLForFolderID(currentContactFolder) + "/view?noframe=1&idx=" + idx; var url = URLForFolderID(currentAddressBook) + "/view?noframe=1&idx=" + idx;
if (document.contactsListAjaxRequest) { if (document.contactsListAjaxRequest) {
document.contactsListAjaxRequest.aborted = true; document.contactsListAjaxRequest.aborted = true;
@ -162,9 +162,9 @@ function contactsListCallback(http) {
log ("ajax problem 1: status = " + http.status); log ("ajax problem 1: status = " + http.status);
} }
function onContactFoldersContextMenu(event) { function onAddressBooksContextMenu(event) {
var menu = $("contactFoldersMenu"); var menu = $("contactFoldersMenu");
Event.observe(menu, "mousedown", onContactFoldersContextMenuHide, false); Event.observe(menu, "mousedown", onAddressBooksContextMenuHide, false);
popupMenu(event, "contactFoldersMenu", this); popupMenu(event, "contactFoldersMenu", this);
var topNode = $("contactFolders"); var topNode = $("contactFolders");
@ -205,7 +205,7 @@ function onContactContextMenuHide(event) {
} }
} }
function onContactFoldersContextMenuHide(event) { function onAddressBooksContextMenuHide(event) {
var topNode = $("contactFolders"); var topNode = $("contactFolders");
if (topNode.menuSelectedEntry) { if (topNode.menuSelectedEntry) {
@ -237,12 +237,12 @@ function loadContact(idx) {
document.contactAjaxRequest.abort(); document.contactAjaxRequest.abort();
} }
if (cachedContacts[currentContactFolder + "/" + idx]) { if (cachedContacts[currentAddressBook + "/" + idx]) {
var div = $('contactView'); var div = $('contactView');
div.innerHTML = cachedContacts[currentContactFolder + "/" + idx]; div.innerHTML = cachedContacts[currentAddressBook + "/" + idx];
} }
else { else {
var url = (URLForFolderID(currentContactFolder) var url = (URLForFolderID(currentAddressBook)
+ "/" + idx + "/view?noframe=1"); + "/" + idx + "/view?noframe=1");
document.contactAjaxRequest document.contactAjaxRequest
= triggerAjaxRequest(url, contactLoadCallback, idx); = triggerAjaxRequest(url, contactLoadCallback, idx);
@ -256,7 +256,7 @@ function contactLoadCallback(http) {
&& http.status == 200) { && http.status == 200) {
document.contactAjaxRequest = null; document.contactAjaxRequest = null;
var content = http.responseText; var content = http.responseText;
cachedContacts[currentContactFolder + "/" + http.callbackData] = content; cachedContacts[currentAddressBook + "/" + http.callbackData] = content;
div.innerHTML = content; div.innerHTML = content;
} }
else else
@ -296,7 +296,7 @@ function moveTo(uri) {
function onContactRowDblClick(event) { function onContactRowDblClick(event) {
var contactId = this.getAttribute('id'); var contactId = this.getAttribute('id');
openContactWindow(URLForFolderID(currentContactFolder) openContactWindow(URLForFolderID(currentAddressBook)
+ "/" + contactId + "/edit", contactId); + "/" + contactId + "/edit", contactId);
return false; return false;
@ -317,14 +317,14 @@ function onContactSelectionChange(event) {
function onMenuEditContact(event) { function onMenuEditContact(event) {
var contactId = document.menuTarget.getAttribute('id'); var contactId = document.menuTarget.getAttribute('id');
openContactWindow(URLForFolderID(currentContactFolder) openContactWindow(URLForFolderID(currentAddressBook)
+ "/" + contactId + "/edit", contactId); + "/" + contactId + "/edit", contactId);
} }
function onMenuWriteToContact(event) { function onMenuWriteToContact(event) {
var contactId = document.menuTarget.getAttribute('id'); var contactId = document.menuTarget.getAttribute('id');
openMailComposeWindow(ApplicationBaseURL + currentContactFolder openMailComposeWindow(ApplicationBaseURL + currentAddressBook
+ "/" + contactId + "/write"); + "/" + contactId + "/write");
if (document.body.hasClassName("popup")) if (document.body.hasClassName("popup"))
@ -352,7 +352,7 @@ function onToolbarEditSelectedContacts(event) {
} }
for (var i = 0; i < rows.length; i++) { for (var i = 0; i < rows.length; i++) {
openContactWindow(URLForFolderID(currentContactFolder) openContactWindow(URLForFolderID(currentAddressBook)
+ "/" + rows[i] + "/edit", rows[i]); + "/" + rows[i] + "/edit", rows[i]);
} }
@ -373,7 +373,7 @@ function onToolbarWriteToSelectedContacts(event) {
var emailCell = $(rows[i]).down('td', 1); var emailCell = $(rows[i]).down('td', 1);
if (emailCell.firstChild) { // .nodeValue is the contact email address if (emailCell.firstChild) { // .nodeValue is the contact email address
rowsWithEmail++; rowsWithEmail++;
openMailComposeWindow(ApplicationBaseURL + currentContactFolder openMailComposeWindow(ApplicationBaseURL + currentAddressBook
+ "/" + rows[i] + "/write"); + "/" + rows[i] + "/write");
} }
} }
@ -404,7 +404,7 @@ function uixDeleteSelectedContacts(sender) {
/* send AJAX request (synchronously) */ /* send AJAX request (synchronously) */
url = (URLForFolderID(currentContactFolder) + "/" url = (URLForFolderID(currentAddressBook) + "/"
+ rows[i] + "/delete"); + rows[i] + "/delete");
http = createHTTPClient(); http = createHTTPClient();
http.open("POST", url, false /* not async */); http.open("POST", url, false /* not async */);
@ -468,7 +468,7 @@ function onHeaderClick(event) {
} }
function newContact(sender) { function newContact(sender) {
openContactWindow(URLForFolderID(currentContactFolder) + "/newcontact"); openContactWindow(URLForFolderID(currentAddressBook) + "/newcontact");
return false; /* stop following the link */ return false; /* stop following the link */
} }
@ -499,13 +499,13 @@ function onFolderSelectionChange(event) {
} }
function refreshCurrentFolder() { function refreshCurrentFolder() {
openContactsFolder(currentContactFolder, true); openContactsFolder(currentAddressBook, true);
} }
function onConfirmContactSelection(event) { function onConfirmContactSelection(event) {
var tag = this.getAttribute("name"); var tag = this.getAttribute("name");
var folderLi = $(currentContactFolder); var folderLi = $(currentAddressBook);
var currentContactFolderName = folderLi.innerHTML; var currentAddressBookName = folderLi.innerHTML;
var selectorList = null; var selectorList = null;
var initialValues = null; var initialValues = null;
@ -523,7 +523,8 @@ function onConfirmContactSelection(event) {
var cid = rows[i].getAttribute("contactid"); var cid = rows[i].getAttribute("contactid");
var cname = '' + rows[i].getAttribute("contactname"); var cname = '' + rows[i].getAttribute("contactname");
var email = '' + rows[i].cells[1].innerHTML; var email = '' + rows[i].cells[1].innerHTML;
window.opener.addContact(tag, currentContactFolderName + '/' + cname,
window.opener.addContact(tag, currentAddressBookName + '/' + cname,
cid, cname, email); cid, cname, email);
} }
@ -540,7 +541,7 @@ function onContactMailTo(node) {
function refreshContacts(contactId) { function refreshContacts(contactId) {
refreshCurrentFolder(); refreshCurrentFolder();
cachedContacts[currentContactFolder + "/" + contactId] = null; cachedContacts[currentAddressBook + "/" + contactId] = null;
loadContact(contactId); loadContact(contactId);
return false; return false;
@ -583,7 +584,7 @@ function appendAddressBook(name, folder) {
li.setAttribute("id", folder); li.setAttribute("id", folder);
li.setAttribute("owner", owner); li.setAttribute("owner", owner);
li.appendChild(document.createTextNode(name)); li.appendChild(document.createTextNode(name));
setEventsOnContactFolder(li); setEventsOnAddressBook(li);
} }
return result; return result;
@ -726,14 +727,14 @@ function configureAbToolbar() {
} }
} }
function configureContactFolders() { function configureAddressBooks() {
var contactFolders = $("contactFolders"); var contactFolders = $("contactFolders");
if (contactFolders) { if (contactFolders) {
contactFolders.observe("mousedown", listRowMouseDownHandler); contactFolders.observe("mousedown", listRowMouseDownHandler);
contactFolders.observe("click", onFolderSelectionChange); contactFolders.observe("click", onFolderSelectionChange);
var lis = contactFolders.childNodesWithTag("li"); var lis = contactFolders.childNodesWithTag("li");
for (var i = 0; i < lis.length; i++) for (var i = 0; i < lis.length; i++)
setEventsOnContactFolder(lis[i]); setEventsOnAddressBook(lis[i]);
lookupDeniedFolders(); lookupDeniedFolders();
@ -743,16 +744,17 @@ function configureContactFolders() {
} }
} }
function setEventsOnContactFolder(folder) { function setEventsOnAddressBook(folder) {
var node = $(folder); var node = $(folder);
node.observe("mousedown", listRowMouseDownHandler); node.observe("mousedown", listRowMouseDownHandler);
node.observe("click", onRowClick); node.observe("click", onRowClick);
node.observe("dblclick", onAddressBookModify);
Event.observe(node, "contextmenu", Event.observe(node, "contextmenu",
onContactFoldersContextMenu.bindAsEventListener(node)); onAddressBooksContextMenu.bindAsEventListener(node));
} }
function onMenuModify(event) { function onAddressBookModify(event) {
var folders = $("contactFolders"); var folders = $("contactFolders");
var selected = folders.getSelectedNodes()[0]; var selected = folders.getSelectedNodes()[0];
@ -798,7 +800,7 @@ function onMenuSharing(event) {
} }
} }
function onContactFoldersMenuPrepareVisibility() { function onAddressBooksMenuPrepareVisibility() {
var folders = $("contactFolders"); var folders = $("contactFolders");
var selected = folders.getSelectedNodes(); var selected = folders.getSelectedNodes();
@ -841,7 +843,7 @@ function onContactMenuPrepareVisibility() {
function getMenus() { function getMenus() {
var menus = {}; var menus = {};
menus["contactFoldersMenu"] = new Array(onMenuModify, "-", null, menus["contactFoldersMenu"] = new Array(onAddressBookModify, "-", null,
null, "-", null, "-", null, "-", null, "-",
onMenuSharing); onMenuSharing);
menus["contactMenu"] = new Array(onMenuEditContact, "-", menus["contactMenu"] = new Array(onMenuEditContact, "-",
@ -851,7 +853,7 @@ function getMenus() {
var contactFoldersMenu = $("contactFoldersMenu"); var contactFoldersMenu = $("contactFoldersMenu");
if (contactFoldersMenu) if (contactFoldersMenu)
contactFoldersMenu.prepareVisibility = onContactFoldersMenuPrepareVisibility; contactFoldersMenu.prepareVisibility = onAddressBooksMenuPrepareVisibility;
var contactMenu = $("contactMenu"); var contactMenu = $("contactMenu");
if (contactMenu) if (contactMenu)
contactMenu.prepareVisibility = onContactMenuPrepareVisibility; contactMenu.prepareVisibility = onContactMenuPrepareVisibility;
@ -873,7 +875,7 @@ function initContacts(event) {
if (document.body.hasClassName("popup")) if (document.body.hasClassName("popup"))
configureSelectionButtons(); configureSelectionButtons();
configureAbToolbar(); configureAbToolbar();
configureContactFolders(); configureAddressBooks();
// initDnd(); // initDnd();
var table = $("contactsList"); var table = $("contactsList");

View file

@ -418,10 +418,10 @@ function tasksListCallback(http) {
for (var i = 0; i < data.length; i++) { for (var i = 0; i < data.length; i++) {
var listItem = document.createElement("li"); var listItem = document.createElement("li");
list.appendChild(listItem); list.appendChild(listItem);
Event.observe(listItem, "mousedown", listRowMouseDownHandler); // Event.observe(listItem, "mousedown", listRowMouseDownHandler);
Event.observe(listItem, "click", onRowClick); // Event.observe(listItem, "click", onRowClick);
Event.observe(listItem, "dblclick", // Event.observe(listItem, "dblclick",
editDoubleClickedEvent.bindAsEventListener(listItem)); // editDoubleClickedEvent.bindAsEventListener(listItem));
listItem.setAttribute("id", data[i][0]); listItem.setAttribute("id", data[i][0]);
$(listItem).addClassName(data[i][5]); $(listItem).addClassName(data[i][5]);
$(listItem).addClassName(data[i][6]); $(listItem).addClassName(data[i][6]);
@ -431,11 +431,14 @@ function tasksListCallback(http) {
var input = document.createElement("input"); var input = document.createElement("input");
input.setAttribute("type", "checkbox"); input.setAttribute("type", "checkbox");
listItem.appendChild(input); listItem.appendChild(input);
Event.observe(input, "click", updateTaskStatus.bindAsEventListener(input), true); // Event.observe(input, "click", updateTaskStatus.bindAsEventListener(input), true);
input.setAttribute("value", "1"); input.setAttribute("value", "1");
if (data[i][2] == 1) if (data[i][2] == 1)
input.setAttribute("checked", "checked"); input.setAttribute("checked", "checked");
$(input).addClassName("checkBox"); $(input).addClassName("checkBox");
setEventsOnCalendar(input, listItem);
listItem.appendChild(document.createTextNode(data[i][3])); listItem.appendChild(document.createTextNode(data[i][3]));
} }
@ -1496,30 +1499,6 @@ function updateCalendarsList(method) {
} }
} }
function addContact(tag, fullContactName, contactId, contactName, contactEmail) {
var uids = $("uixselector-calendarsList-uidList");
// log("addContact");
if (contactId)
{
var re = new RegExp("(^|,)" + contactId + "($|,)");
if (!re.test(uids.value))
{
if (uids.value.length > 0)
uids.value += ',' + contactId;
else
uids.value = contactId;
var names = $("calendarList");
var listElems = names.childNodesWithTag("li");
var colorDef = indexColor(listElems.length);
names.appendChild(userCalendarEntry(contactId, colorDef));
}
}
return false;
}
function validateBrowseURL(input) { function validateBrowseURL(input) {
var button = $("browseURLBtn"); var button = $("browseURLBtn");
@ -1574,7 +1553,7 @@ function getMenus() {
editEvent, deleteEvent, "-", editEvent, deleteEvent, "-",
onSelectAll, "-", onSelectAll, "-",
null, null); null, null);
menus["calendarsMenu"] = new Array(onMenuModify, menus["calendarsMenu"] = new Array(onCalendarModify,
"-", "-",
onCalendarNew, onCalendarRemove, onCalendarNew, onCalendarRemove,
"-", null, null, "-", "-", null, null, "-",
@ -1634,6 +1613,7 @@ function initCalendarSelector() {
Event.observe(items[i], "mousedown", listRowMouseDownHandler); Event.observe(items[i], "mousedown", listRowMouseDownHandler);
Event.observe(items[i], "selectstart", listRowMouseDownHandler); Event.observe(items[i], "selectstart", listRowMouseDownHandler);
Event.observe(items[i], "click", onRowClick); Event.observe(items[i], "click", onRowClick);
items[i].observe("dblclick", onCalendarModify);
} }
var links = $("calendarSelectorButtons").childNodesWithTag("a"); var links = $("calendarSelectorButtons").childNodesWithTag("a");
@ -1642,7 +1622,7 @@ function initCalendarSelector() {
Event.observe(links[2], "click", onCalendarRemove); Event.observe(links[2], "click", onCalendarRemove);
} }
function onMenuModify(event) { function onCalendarModify(event) {
var folders = $("calendarList"); var folders = $("calendarList");
var selected = folders.getSelectedNodes()[0]; var selected = folders.getSelectedNodes()[0];
@ -1682,6 +1662,14 @@ function onCalendarAdd(event) {
preventDefault(event); preventDefault(event);
} }
function setEventsOnCalendar(checkBox, li) {
li.observe("mousedown", listRowMouseDownHandler);
li.observe("selectstart", listRowMouseDownHandler);
li.observe("click", onRowClick);
li.observe("dblclick", onCalendarModify);
checkBox.observe("click", updateCalendarStatus);
}
function appendCalendar(folderName, folderPath) { function appendCalendar(folderName, folderPath) {
var owner; var owner;
@ -1757,11 +1745,7 @@ function appendCalendar(folderName, folderPath) {
$(colorBox).addClassName('calendarFolder' + folderPath.substr(1)); $(colorBox).addClassName('calendarFolder' + folderPath.substr(1));
// Register events (doesn't work with Safari) // Register events (doesn't work with Safari)
Event.observe(li, "mousedown", listRowMouseDownHandler); setEventsOnCalendar(checkBox, li);
Event.observe(li, "selectstart", listRowMouseDownHandler);
Event.observe(li, "click", onRowClick);
Event.observe(checkBox, "click",
updateCalendarStatus.bindAsEventListener(checkBox));
var url = URLForFolderID(folderPath) + "/canAccessContent"; var url = URLForFolderID(folderPath) + "/canAccessContent";
triggerAjaxRequest(url, calendarEntryCallback, folderPath); triggerAjaxRequest(url, calendarEntryCallback, folderPath);