/* JavaScript for SOGoMail */
var accounts = {};
var mailboxTree;
+var mailAccounts;
+if (typeof textMailAccounts != 'undefined') {
+ if (textMailAccounts.length > 0)
+ mailAccounts = textMailAccounts.evalJSON(true);
+ else
+ mailAccounts = new Array();
+}
-var currentMessages = new Array();
-var maxCachedMessages = 20;
-var cachedMessages = new Array();
-var currentMailbox = null;
-var currentMailboxType = "";
+var Mailer = {
+ currentMailbox: null,
+ currentMailboxType: "",
+ currentMessages: {},
+ maxCachedMessages: 20,
+ cachedMessages: new Array(),
+ foldersStateTimer: false
+};
var usersRightsWindowHeight = 320;
var usersRightsWindowWidth = 400;
+var pageContent;
+
+var deleteMessageRequestCount = 0;
+
+var messageCheckTimer;
+
/* mail list */
function openMessageWindow(msguid, url) {
markMailReadInWindow(window, msguid);
}
var msgWin = openMailComposeWindow(url, wId);
- if (msguid) {
- msgWin.messageId = msguid;
- msgWin.messageURL = ApplicationBaseURL + currentMailbox + "/" + msguid;
- }
msgWin.focus();
return false;
function onMessageDoubleClick(event) {
var action;
- if (currentMailboxType == "draft")
+ if (Mailer.currentMailboxType == "draft")
action = "edit";
else
action = "popupview";
function openAddressbook(sender) {
var urlstr;
-
- urlstr = ApplicationBaseURL + "/../Contacts/?popup=YES";
+
+ urlstr = ApplicationBaseURL + "../Contacts/?popup=YES";
var w = window.open(urlstr, "Addressbook",
"width=640,height=400,resizable=1,scrollbars=1,toolbar=0,"
- + "location=0,directories=0,status=0,menubar=0,copyhistory=0");
+ + "location=no,directories=0,status=0,menubar=0,copyhistory=0");
w.focus();
return false;
function onMenuSharing(event) {
var folderID = document.menuTarget.getAttribute("dataname");
- var urlstr = URLForFolderID(folderID) + "/acls";
- preventDefault(event);
+ var type = document.menuTarget.getAttribute("datatype");
- openAclWindow(urlstr);
+ if (type == "additional")
+ window.alert(clabels["The user rights cannot be"
+ + " edited for this object!"]);
+ else {
+ var urlstr = URLForFolderID(folderID) + "/acls";
+ openAclWindow(urlstr);
+ }
}
/* mail list DOM changes */
function markMailInWindow(win, msguid, markread) {
- var msgDiv;
-
- msgDiv = win.$("div_" + msguid);
- if (msgDiv) {
+ var row = win.$("row_" + msguid);
+ var subjectCell = win.$("div_" + msguid);
+ if (row && subjectCell) {
if (markread) {
- msgDiv.removeClassName("mailer_unreadmailsubject");
- msgDiv.addClassName("mailer_readmailsubject");
- msgDiv = win.$("unreaddiv_" + msguid);
- if (msgDiv)
- {
- msgDiv.setAttribute("class", "mailerUnreadIcon");
- msgDiv.setAttribute("id", "readdiv_" + msguid);
- msgDiv.setAttribute("src", ResourcesURL + "/icon_read.gif");
- msgDiv.setAttribute("onclick", "mailListMarkMessage(this,"
- + " 'markMessageUnread', " + msguid
- + ", false);"
- +" return false;");
- var title = msgDiv.getAttribute("title-markunread");
- if (title)
- msgDiv.setAttribute("title", title);
- }
+ row.removeClassName("mailer_unreadmail");
+ subjectCell.addClassName("mailer_readmailsubject");
+ var img = win.$("unreaddiv_" + msguid);
+ if (img) {
+ img.removeClassName("mailerUnreadIcon");
+ img.addClassName("mailerReadIcon");
+ img.setAttribute("id", "readdiv_" + msguid);
+ img.setAttribute("src", ResourcesURL + "/icon_read.gif");
+ var title = img.getAttribute("title-markunread");
+ if (title)
+ img.setAttribute("title", title);
+ }
}
else {
- msgDiv.removeClassName('mailer_readmailsubject');
- msgDiv.addClassName('mailer_unreadmailsubject');
- msgDiv = win.$("readdiv_" + msguid);
- if (msgDiv)
- {
- msgDiv.setAttribute("class", "mailerReadIcon");
- msgDiv.setAttribute("id", "unreaddiv_" + msguid);
- msgDiv.setAttribute("src", ResourcesURL + "/icon_unread.gif");
- msgDiv.setAttribute("onclick", "mailListMarkMessage(this,"
- + " 'markMessageRead', " + msguid
- + ", true);"
- +" return false;");
- var title = msgDiv.getAttribute("title-markread");
- if (title)
- msgDiv.setAttribute("title", title);
- }
+ row.addClassName("mailer_unreadmail");
+ subjectCell.removeClassName('mailer_readmailsubject');
+ var img = win.$("readdiv_" + msguid);
+ if (img) {
+ img.removeClassName("mailerReadIcon");
+ img.addClassName("mailerUnreadIcon");
+ img.setAttribute("id", "unreaddiv_" + msguid);
+ img.setAttribute("src", ResourcesURL + "/icon_unread.gif");
+ var title = img.getAttribute("title-markread");
+ if (title)
+ img.setAttribute("title", title);
+ }
}
return true;
}
/* mail list reply */
function openMessageWindowsForSelection(action, firstOnly) {
- if (document.body.hasClassName("popup"))
- win = openMessageWindow(window.messageId,
- window.messageURL + "/" + action);
+ if (document.body.hasClassName("popup")) {
+ var url = window.location.href;
+ var parts = url.split("/");
+ parts[parts.length-1] = action;
+ window.location.href = parts.join("/");
+ }
else {
var messageList = $("messageList");
var rows = messageList.getSelectedRowsId();
if (rows.length > 0) {
- if (firstOnly)
- openMessageWindow(rows[0].substr(4),
- ApplicationBaseURL + currentMailbox
- + "/" + rows[0].substr(4)
+ for (var i = 0; i < rows.length; i++) {
+ openMessageWindow(rows[i].substr(4),
+ ApplicationBaseURL + Mailer.currentMailbox
+ + "/" + rows[i].substr(4)
+ "/" + action);
- else
- for (var i = 0; i < rows.length; i++)
- openMessageWindow(rows[i].substr(4),
- ApplicationBaseURL + currentMailbox
- + "/" + rows[i].substr(4)
- + "/" + action);
+ if (firstOnly)
+ break;
+ }
+ } else {
+ window.alert(labels["Please select a message."]);
}
}
}
function mailListMarkMessage(event) {
- var http = createHTTPClient();
- var url = ApplicationBaseURL + currentMailbox + "/" + msguid + "/" + action;
+ var msguid = this.id.split('_')[1];
+ var action;
+ var markread;
+ if ($(this).hasClassName('mailerUnreadIcon')) {
+ action = 'markMessageRead';
+ markread = true;
+ }
+ else {
+ action = 'markMessageUnread';
+ markread = false;
+ }
+ var url = ApplicationBaseURL + Mailer.currentMailbox + "/" + msguid + "/" + action;
- if (http) {
- // TODO: add parameter to signal that we are only interested in OK
- http.open("POST", url, false /* not async */);
- http.send("");
- if (http.status != 200) {
- // TODO: refresh page?
- alert("Message Mark Failed: " + http.statusText);
- window.location.reload();
+ var data = { "window": window, "msguid": msguid, "markread": markread };
+ triggerAjaxRequest(url, mailListMarkMessageCallback, data);
+
+ preventDefault(event);
+ return false;
+}
+
+function mailListMarkMessageCallback(http) {
+ if (http.readyState == 4)
+ if (isHttpStatus204(http.status)) {
+ var data = http.callbackData;
+ markMailInWindow(data["window"], data["msguid"], data["markread"]);
}
else {
- markMailInWindow(window, msguid, markread);
+ alert("Message Mark Failed (" + http.status + "): " + http.statusText);
+ window.location.reload();
}
- }
- else {
- window.location.href = url;
- }
}
/* maillist row highlight */
}
-/* folder operations */
-
-function ctxFolderAdd(sender) {
- var folderName;
-
- folderName = prompt("Foldername: ");
- if (folderName == undefined)
- return false;
- if (folderName == "")
- return false;
-
- // TODO: should use a form-POST or AJAX
- window.location.href = "createFolder?name=" + escape(folderName);
- return false;
-}
-
-function ctxFolderDelete(sender) {
- if (!confirm("Delete current folder?"))
- return false;
-
- // TODO: should use a form-POST or AJAX
- window.location.href = "deleteFolder";
- return false;
-}
-
/* bulk delete of messages */
-function uixDeleteSelectedMessages(sender) {
- var failCount = 0;
+function deleteSelectedMessages(sender) {
+ var messageList = $("messageList");
+ var rowIds = messageList.getSelectedRowsId();
+
+ if (rowIds.length > 0) {
+ for (var i = 0; i < rowIds.length; i++) {
+ var url;
+ var rowId = rowIds[i].substr(4);
+ var messageId = Mailer.currentMailbox + "/" + rowId;
+ url = ApplicationBaseURL + messageId + "/trash";
+ deleteMessageRequestCount++;
+ var data = { "id": rowId, "mailbox": Mailer.currentMailbox, "messageId": messageId };
+ triggerAjaxRequest(url, deleteSelectedMessagesCallback, data);
+ }
+ }
+ else
+ window.alert(labels["Please select a message."]);
- var messageList = $("messageList");
- var rowIds = messageList.getSelectedRowsId();
-
- for (var i = 0; i < rowIds.length; i++) {
- var url, http;
- var rowId = rowIds[i].substr(4);
- /* send AJAX request (synchronously) */
+ return false;
+}
- var messageId = currentMailbox + "/" + rowId;
- url = ApplicationBaseURL + messageId + "/trash";
- http = createHTTPClient();
- http.open("POST", url, false /* not async */);
- http.send("");
- if (!isHttpStatus204(http.status)) { /* request failed */
- failCount++;
- http = null;
- continue;
- } else {
- deleteCachedMessage(messageId);
- if (currentMessages[currentMailbox] == rowId) {
+function deleteSelectedMessagesCallback(http) {
+ if (http.readyState == 4) {
+ if (isHttpStatus204(http.status)) {
+ var data = http.callbackData;
+ deleteCachedMessage(data["messageId"]);
+ deleteMessageRequestCount--;
+ if (Mailer.currentMailbox == data["mailbox"]) {
var div = $('messageContent');
- div.update();
- currentMessages[currentMailbox] = null;
+ if (Mailer.currentMessages[Mailer.currentMailbox] == data["id"]) {
+ div.update();
+ Mailer.currentMessages[Mailer.currentMailbox] = null;
+ }
+
+ var row = $("row_" + data["id"]);
+ var nextRow = row.next("tr");
+ if (!nextRow)
+ nextRow = row.previous("tr");
+ row.parentNode.removeChild(row);
+// row.addClassName("deleted"); // when we'll offer "mark as deleted"
+
+ if (deleteMessageRequestCount == 0) {
+ if (nextRow) {
+ Mailer.currentMessages[Mailer.currentMailbox] = nextRow.getAttribute("id").substr(4);
+ nextRow.select();
+ loadMessage(Mailer.currentMessages[Mailer.currentMailbox]);
+ }
+ }
}
}
- http = null;
-
- /* remove from page */
-
- /* line-through would be nicer, but hiding is OK too */
- var row = $(rowIds[i]);
- row.parentNode.removeChild(row);
}
+ else
+ log ("deleteSelectedMessagesCallback: problem during ajax request " + http.status);
+}
- if (failCount > 0)
- alert("Could not delete " + failCount + " messages!");
-
- return false;
+function deleteDraft(url) {
+ /* this is called by UIxMailEditor with window.opener */
+ new Ajax.Request(url, {
+ method: 'post',
+ onFailure: function(transport) {
+ log("draftDeleteCallback: problem during ajax request: " + transport.status);
+ }
+ });
}
function moveMessages(rowIds, folder) {
/* send AJAX request (synchronously) */
- var messageId = currentMailbox + "/" + rowIds[i];
+ var messageId = Mailer.currentMailbox + "/" + rowIds[i];
url = (ApplicationBaseURL + messageId
+ "/move?tofolder=" + folder);
http = createHTTPClient();
var row = $("row_" + rowIds[i]);
row.parentNode.removeChild(row);
deleteCachedMessage(messageId);
- if (currentMessages[currentMailbox] == rowIds[i]) {
+ if (Mailer.currentMessages[Mailer.currentMailbox] == rowIds[i]) {
var div = $('messageContent');
div.update();
- currentMessages[currentMailbox] = null;
+ Mailer.currentMessages[Mailer.currentMailbox] = null;
}
}
else /* request failed */
}
function onMenuDeleteMessage(event) {
- uixDeleteSelectedMessages();
- preventDefault(event);
+ deleteSelectedMessages();
+ preventDefault(event);
+}
+
+function deleteMessage(url, id, mailbox, messageId) {
+ var data = { "id": id, "mailbox": mailbox, "messageId": messageId };
+ deleteMessageRequestCount++;
+ triggerAjaxRequest(url, deleteSelectedMessagesCallback, data);
+}
+
+function deleteMessageWithDelay(url, id, mailbox, messageId) {
+ /* this is called by UIxMailPopupView with window.opener */
+ setTimeout("deleteMessage('" +
+ url + "', '" +
+ id + "', '" +
+ mailbox + "', '" +
+ messageId + "')",
+ 50);
}
function onPrintCurrentMessage(event) {
$("searchValue").value = "";
initCriteria();
- currentMailboxType = this.parentNode.getAttribute("datatype");
- if (currentMailboxType == "account" || currentMailboxType == "additional") {
- currentMailbox = mailbox;
+ Mailer.currentMailboxType = this.parentNode.getAttribute("datatype");
+ if (Mailer.currentMailboxType == "account" || Mailer.currentMailboxType == "additional") {
+ Mailer.currentMailbox = mailbox;
$("messageContent").update();
- var body = $("messageList").tBodies[0];
+ var table = $("messageList");
+ var head = table.tHead;
+ var body = table.tBodies[0];
for (var i = body.rows.length; i > 0; i--)
body.deleteRow(i-1);
+ if (head.rows[1])
+ head.rows[1].firstChild.update();
}
else
openMailbox(mailbox);
- preventDefault(event);
+ Event.stop(event);
}
-function onMailboxMenuMove() {
- window.alert("unimplemented");
+function _onMailboxMenuAction(menuEntry, error, actionName) {
+ var targetMailbox = menuEntry.mailbox.fullName();
+ var messages = new Array();
+
+ if (targetMailbox == Mailer.currentMailbox)
+ window.alert(labels[error]);
+ else {
+ if (document.menuTarget.tagName == "DIV")
+ // Menu called from message content view
+ messages.push(Mailer.currentMessages[Mailer.currentMailbox]);
+ else if (Object.isArray(document.menuTarget))
+ // Menu called from multiple selection in messages list view
+ messages = $(document.menuTarget).collect(function(row) {
+ return row.getAttribute("id").substr(4);
+ });
+ else
+ // Menu called from one selection in messages list view
+ messages.push(document.menuTarget.getAttribute("id").substr(4));
+
+ var url_prefix = URLForFolderID(Mailer.currentMailbox) + "/";
+ messages.each(function(msgid, i) {
+ var url = url_prefix + msgid + "/" + actionName
+ + "?folder=" + targetMailbox;
+ triggerAjaxRequest(url, folderRefreshCallback,
+ ((i == messages.size() - 1)?Mailer.currentMailbox:""));
+ });
+ }
}
-function onMailboxMenuCopy() {
- window.alert("unimplemented");
+function onMailboxMenuMove(event) {
+ _onMailboxMenuAction(this,
+ "Moving a message into its own folder is impossible!",
+ "move");
+}
+
+function onMailboxMenuCopy(event) {
+ _onMailboxMenuAction(this,
+ "Copying a message into its own folder is impossible!",
+ "copy");
}
function refreshMailbox() {
}
function composeNewMessage() {
- var account = currentMailbox.split("/")[1];
+ var account = Mailer.currentMailbox.split("/")[1];
var url = ApplicationBaseURL + "/" + account + "/compose";
openMailComposeWindow(url);
}
function openMailbox(mailbox, reload, idx) {
- if (mailbox != currentMailbox || reload) {
- currentMailbox = mailbox;
- var url = ApplicationBaseURL + mailbox + "/view?noframe=1";
- var messageContent = $("messageContent");
- messageContent.update();
-
+ if (mailbox != Mailer.currentMailbox || reload) {
+ Mailer.currentMailbox = mailbox;
+ var url = ApplicationBaseURL + encodeURI(mailbox) + "/view?noframe=1";
+
+ if (!reload || idx) {
+ var messageContent = $("messageContent");
+ messageContent.update();
+ lastClickedRow = -1; // from generic.js
+ }
+
var currentMessage;
+
if (!idx) {
- currentMessage = currentMessages[mailbox];
+ currentMessage = Mailer.currentMessages[mailbox];
if (currentMessage) {
- loadMessage(currentMessage);
url += '&pageforuid=' + currentMessage;
+ if (!reload)
+ loadMessage(currentMessage);
}
}
+ "&asc=" + sorting["ascending"]);
if (idx)
url += "&idx=" + idx;
+
if (document.messageListAjaxRequest) {
document.messageListAjaxRequest.aborted = true;
document.messageListAjaxRequest.abort();
+ rightDragHandle.offsetHeight
+ 'px') });
}
-
document.messageListAjaxRequest
= triggerAjaxRequest(url, messageListCallback,
currentMessage);
}
function openMailboxAtIndex(event) {
- openMailbox(currentMailbox, true, this.getAttribute("idx"));
+ openMailbox(Mailer.currentMailbox, true, this.getAttribute("idx"));
- preventDefault(event);
+ Event.stop(event);
}
function messageListCallback(http) {
var div = $('mailboxContent');
-
+ var table = $('messageList');
+
if (http.readyState == 4
&& http.status == 200) {
- document.messageListAjaxRequest = null;
- div.update(http.responseText);
-
- TableKit.Resizable.init($('messageList'));
+ document.messageListAjaxRequest = null;
+
+ if (table) {
+ // Update table
+ var thead = table.tHead;
+ var addressHeaderCell = thead.rows[0].cells[3];
+ var tbody = table.tBodies[0];
+ var tmp = document.createElement('div');
+ $(tmp).update(http.responseText);
+ thead.rows[1].parentNode.replaceChild(tmp.firstChild.tHead.rows[1], thead.rows[1]);
+ addressHeaderCell.replaceChild(tmp.firstChild.tHead.rows[0].cells[3].lastChild,
+ addressHeaderCell.lastChild);
+ table.replaceChild(tmp.firstChild.tBodies[0], tbody);
+ }
+ else {
+ // Add table
+ div.update(http.responseText);
+ table = $('messageList');
+ configureMessageListEvents(table);
+ TableKit.Resizable.init(table, {'trueResize' : true, 'keepWidth' : true});
+ }
+ configureMessageListBodyEvents(table);
var selected = http.callbackData;
if (selected) {
var row = $("row_" + selected);
- if (row)
+ if (row) {
row.select();
+ lastClickedRow = row.rowIndex - $(row).up('table').down('thead').getElementsByTagName('tr').length;
+ var rowPosition = row.rowIndex * row.getHeight();
+ if ($(row).up('div').getHeight() > rowPosition)
+ rowPosition = 0;
+ div.scrollTop = rowPosition; // scroll to selected message
+ }
+ else
+ $("messageContent").update();
}
- configureMessageListEvents();
+ else
+ div.scrollTop = 0;
if (sorting["attribute"] && sorting["attribute"].length > 0) {
- var sortHeader;
- if (sorting["attribute"] == "subject")
- sortHeader = $("subjectHeader");
- else if (sorting["attribute"] == "from")
- sortHeader = $("fromHeader");
- else if (sorting["attribute"] == "date")
- sortHeader = $("dateHeader");
- else
- sortHeader = null;
-
+ var sortHeader = $(sorting["attribute"] + "Header");
+
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"])
}
}
}
- else
- log("messageListCallback: problem during ajax request (readyState = " + http.readyState + ", status = " + http.status + ")");
+ else {
+ var data = http.responseText;
+ var msg = data.replace(/^(.*\n)*.*<p>((.*\n)*.*)<\/p>(.*\n)*.*$/, "$2");
+ log("messageListCallback: problem during ajax request (readyState = " + http.readyState + ", status = " + http.status + ", response = " + msg + ")");
+ }
}
function quotasCallback(http) {
&& http.status == 200) {
var hasQuotas = false;
- var quotas = http.responseText.evalJSON(true);
- for (var i in quotas) {
- hasQuotas = true;
- break;
+ if (http.responseText.length > 0) {
+ var quotas = http.responseText.evalJSON(true);
+ for (var i in quotas) {
+ hasQuotas = true;
+ break;
+ }
}
-
+
if (hasQuotas) {
- var treePath = currentMailbox.split("/");
- var mbQuotas = quotas["/" + treePath[2]];
+ var treePath = Mailer.currentMailbox.split("/");
+ var quotasMB = new Array();
+ for (var i = 2; i < treePath.length; i++)
+ quotasMB.push(treePath[i].substr(6));
+ var mbQuotas = quotas["/" + quotasMB.join("/")];
var used = mbQuotas["usedSpace"];
var max = mbQuotas["maxQuota"];
var percents = (Math.round(used * 10000 / max) / 100);
function onMessageContextMenu(event) {
var menu = $('messageListMenu');
- Event.observe(menu, "hideMenu", onMessageContextMenuHide);
- popupMenu(event, "messageListMenu", this);
-
var topNode = $('messageList');
var selectedNodes = topNode.getSelectedRows();
- for (var i = 0; i < selectedNodes.length; i++)
- selectedNodes[i].deselect();
- topNode.menuSelectedRows = selectedNodes;
- topNode.menuSelectedEntry = this;
- this.select();
+
+ Event.observe(menu, "hideMenu", onMessageContextMenuHide);
+
+ if (selectedNodes.length > 1)
+ popupMenu(event, "messagesListMenu", selectedNodes);
+ else
+ popupMenu(event, "messageListMenu", this);
}
function onMessageContextMenuHide(event) {
var done = false;
var counter = 0;
- while (counter < cachedMessages.length
+ while (counter < Mailer.cachedMessages.length
&& !done)
- if (cachedMessages[counter]
- && cachedMessages[counter]['idx'] == messageId) {
- cachedMessages.splice(counter, 1);
+ if (Mailer.cachedMessages[counter]
+ && Mailer.cachedMessages[counter]['idx'] == messageId) {
+ Mailer.cachedMessages.splice(counter, 1);
done = true;
}
else
var message = null;
var counter = 0;
- while (counter < cachedMessages.length
+ while (counter < Mailer.cachedMessages.length
&& message == null)
- if (cachedMessages[counter]
- && cachedMessages[counter]['idx'] == currentMailbox + '/' + idx)
- message = cachedMessages[counter];
+ if (Mailer.cachedMessages[counter]
+ && Mailer.cachedMessages[counter]['idx'] == Mailer.currentMailbox + '/' + idx)
+ message = Mailer.cachedMessages[counter];
else
counter++;
var timeOldest = -1;
var counter = 0;
- if (cachedMessages.length < maxCachedMessages)
- oldest = cachedMessages.length;
+ if (Mailer.cachedMessages.length < Mailer.maxCachedMessages)
+ oldest = Mailer.cachedMessages.length;
else {
- while (cachedMessages[counter]) {
+ while (Mailer.cachedMessages[counter]) {
if (oldest == -1
- || cachedMessages[counter]['time'] < timeOldest) {
+ || Mailer.cachedMessages[counter]['time'] < timeOldest) {
oldest = counter;
- timeOldest = cachedMessages[counter]['time'];
+ timeOldest = Mailer.cachedMessages[counter]['time'];
}
counter++;
}
oldest = 0;
}
- cachedMessages[oldest] = cachedMessage;
+ Mailer.cachedMessages[oldest] = cachedMessage;
}
function onMessageSelectionChange() {
if (rows.length == 1) {
var idx = rows[0].substr(4);
-
- if (currentMessages[currentMailbox] != idx) {
- currentMessages[currentMailbox] = idx;
+ if (Mailer.currentMessages[Mailer.currentMailbox] != idx) {
+ Mailer.currentMessages[Mailer.currentMailbox] = idx;
loadMessage(idx);
}
}
var cachedMessage = getCachedMessage(idx);
+ markMailInWindow(window, idx, true);
if (cachedMessage == null) {
- var url = (ApplicationBaseURL + currentMailbox + "/"
+ var url = (ApplicationBaseURL + Mailer.currentMailbox + "/"
+ idx + "/view?noframe=1");
document.messageAjaxRequest
= triggerAjaxRequest(url, messageCallback, idx);
- markMailInWindow(window, idx, true);
} else {
var div = $('messageContent');
div.update(cachedMessage['text']);
cachedMessage['time'] = (new Date()).getTime();
document.messageAjaxRequest = null;
configureLinksInMessage();
+ resizeMailContent();
}
}
var messageDiv = $('messageContent');
var mailContentDiv = document.getElementsByClassName('mailer_mailcontent',
messageDiv)[0];
- Event.observe(mailContentDiv, "contextmenu",
- onMessageContentMenu.bindAsEventListener(mailContentDiv));
+ if (!document.body.hasClassName("popup"))
+ mailContentDiv.observe("contextmenu", onMessageContentMenu);
+
var anchors = messageDiv.getElementsByTagName('a');
for (var i = 0; i < anchors.length; i++)
if (anchors[i].href.substring(0,7) == "mailto:") {
- Event.observe(anchors[i], "click",
- onEmailAddressClick.bindAsEventListener(anchors[i]));
- Event.observe(anchors[i], "contextmenu",
- onEmailAddressClick.bindAsEventListener(anchors[i]));
+ $(anchors[i]).observe("click", onEmailTo);
+ $(anchors[i]).observe("contextmenu", onEmailAddressClick);
}
else
- Event.observe(anchors[i], "click",
- onMessageAnchorClick);
+ $(anchors[i]).observe("click", onMessageAnchorClick);
+
+ var images = messageDiv.getElementsByTagName('img');
+ for (var i = 0; i < images.length; i++)
+ $(images[i]).observe("contextmenu", onImageClick);
var editDraftButton = $("editDraftButton");
if (editDraftButton)
- Event.observe(editDraftButton, "click", onMessageEditDraft);
+ Event.observe(editDraftButton, "click",
+ onMessageEditDraft.bindAsEventListener(editDraftButton));
+
+ configureiCalLinksInMessage();
+}
+
+function configureiCalLinksInMessage() {
+ var buttons = { "iCalendarAccept": "accept",
+ "iCalendarDecline": "decline",
+ "iCalendarTentative": "tentative",
+ "iCalendarUpdateUserStatus": "updateUserStatus",
+ "iCalendarAddToCalendar": "addToCalendar",
+ "iCalendarDeleteFromCalendar": "deleteFromCalendar" };
+
+ for (var key in buttons) {
+ var button = $(key);
+ if (button) {
+ button.action = buttons[key];
+ Event.observe(button, "click",
+ onICalendarButtonClick.bindAsEventListener(button));
+ }
+ }
+}
+
+function onICalendarButtonClick(event) {
+ var link = $("iCalendarAttachment").value;
+ if (link) {
+ var urlstr = link + "/" + this.action;
+ triggerAjaxRequest(urlstr, ICalendarButtonCallback,
+ Mailer.currentMailbox + "/"
+ + Mailer.currentMessages[Mailer.currentMailbox]);
+ }
+ else
+ log("no link");
+}
+
+function ICalendarButtonCallback(http) {
+ if (http.readyState == 4)
+ if (isHttpStatus204(http.status)) {
+ var oldMsg = http.callbackData;
+ var msg = Mailer.currentMailbox + "/" + Mailer.currentMessages[Mailer.currentMailbox];
+ if (oldMsg == msg) {
+ deleteCachedMessage(oldMsg);
+ loadMessage(Mailer.currentMessages[Mailer.currentMailbox]);
+ }
+ }
+ else {
+ window.alert("received code: " + http.status);
+ }
+}
+
+function resizeMailContent() {
+ var headerTable = document.getElementsByClassName('mailer_fieldtable')[0];
+ var contentDiv = document.getElementsByClassName('mailer_mailcontent')[0];
+
+ contentDiv.setStyle({ 'top':
+ (Element.getHeight(headerTable) + headerTable.offsetTop) + 'px' });
}
function onMessageContentMenu(event) {
+ var element = getTarget(event);
+ if ((element.tagName == 'A' && element.href.substring(0,7) == "mailto:")
+ || element.tagName == 'IMG')
+ // Don't show the default contextual menu; let the click propagate to
+ // other observers
+ return true;
popupMenu(event, 'messageContentMenu', this);
}
function onEmailAddressClick(event) {
popupMenu(event, 'addressMenu', this);
+ preventDefault(event);
+ return false;
}
-function onMessageAnchorClick (event) {
+function onMessageAnchorClick(event) {
window.open(this.href);
preventDefault(event);
}
+function onImageClick(event) {
+ popupMenu(event, 'imageMenu', this);
+ preventDefault(event);
+ return false;
+}
+
function messageCallback(http) {
var div = $('messageContent');
document.messageAjaxRequest = null;
div.update(http.responseText);
configureLinksInMessage();
-
+ resizeMailContent();
+
if (http.callbackData) {
var cachedMessage = new Array();
- cachedMessage['idx'] = currentMailbox + '/' + http.callbackData;
+ cachedMessage['idx'] = Mailer.currentMailbox + '/' + http.callbackData;
cachedMessage['time'] = (new Date()).getTime();
cachedMessage['text'] = http.responseText;
if (cachedMessage['text'].length < 30000)
alert("MoveTo: " + uri);
}
-function deleteSelectedMails() {
-}
-
/* message menu entries */
function onMenuOpenMessage(event) {
return openMessageWindowsForSelection('popupview');
var rows = messageList.getSelectedRowsId();
if (rows.length > 0) {
- var url = (ApplicationBaseURL + currentMailbox + "/"
+ var url = (ApplicationBaseURL + Mailer.currentMailbox + "/"
+ rows[0].substr(4) + "/viewsource");
openMailComposeWindow(url);
}
preventDefault(event);
}
+function saveImage(event) {
+ var img = document.menuTarget;
+ var url = img.getAttribute("src");
+ var urlAsAttachment = url.replace(/(\/[^\/]*)$/,"/asAttachment$1");
+
+ window.location.href = urlAsAttachment;
+}
+
/* contacts */
function newContactFromEmail(event) {
var mailto = document.menuTarget.innerHTML;
return false; /* stop following the link */
}
+function onEmailTo(event) {
+ openMailTo(this.innerHTML.strip());
+ preventDefault(event);
+ return false;
+}
+
function newEmailTo(sender) {
return openMailTo(document.menuTarget.innerHTML);
}
}
function onHeaderClick(event) {
+ if (TableKit.Resizable._onHandle)
+ return;
+
var headerId = this.getAttribute("id");
var newSortAttribute;
if (headerId == "subjectHeader")
sorting["attribute"] = newSortAttribute;
sorting["ascending"] = true;
}
-
refreshCurrentFolder();
-
+
Event.stop(event);
}
function refreshCurrentFolder() {
- openMailbox(currentMailbox, true);
+ openMailbox(Mailer.currentMailbox, true);
}
-function pouetpouet(event) {
- window.alert("pouet pouet");
+function refreshFolderByType(type) {
+ if (Mailer.currentMailboxType == type)
+ refreshCurrentFolder();
}
var mailboxSpanAcceptType = function(type) {
if (data) {
var folder = this.parentNode.parentNode.getAttribute("dataname");
- if (folder != currentMailbox)
+ if (folder != Mailer.currentMailbox)
success = (moveMessages(data, folder) == 0);
}
else
success = false;
-
+
return success;
}
-
+
var plusSignEnter = function() {
var nodeNr = parseInt(this.id.substr(2));
if (!mailboxTree.aNodes[nodeNr]._io)
this.plusSignTimer = setTimeout("openPlusSign('" + nodeNr + "');", 1000);
}
-
+
var plusSignExit = function() {
if (this.plusSignTimer) {
clearTimeout(this.plusSignTimer);
}
/* a model for a futur refactoring of the sortable table headers mechanism */
-
-function configureMessageListHeaders(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 configureMessageListEvents(table) {
+ if (table) {
+ table.multiselect = true;
+ // Each body row can load a message
+ Event.observe(table, "mousedown",
+ onMessageSelectionChange.bindAsEventListener(table));
+ // Sortable columns
+ configureSortableTableHeaders(table);
}
}
-function configureMessageListEvents() {
- var messageList = $("messageList");
- if (messageList) {
- Event.observe(messageList, "mousedown",
- onMessageSelectionChange.bindAsEventListener(messageList));
-
- configureMessageListHeaders(messageList.tHead.rows[0].cells);
-
- var cell = messageList.tHead.rows[1].cells[0];
+function configureMessageListBodyEvents(table) {
+ if (table) {
+ // Page navigation
+ var cell = table.tHead.rows[1].cells[0];
if ($(cell).hasClassName("tbtv_navcell")) {
var anchors = $(cell).childNodesWithTag("a");
for (var i = 0; i < anchors.length; i++)
Event.observe(anchors[i], "click", openMailboxAtIndex.bindAsEventListener(anchors[i]));
}
- rows = messageList.tBodies[0].rows;
+ rows = table.tBodies[0].rows;
for (var i = 0; i < rows.length; i++) {
Event.observe(rows[i], "mousedown", onRowClick);
+ Event.observe(rows[i], "selectstart", listRowMouseDownHandler);
Event.observe(rows[i], "contextmenu", onMessageContextMenu.bindAsEventListener(rows[i]));
-
+
rows[i].dndTypes = function() { return new Array("mailRow"); };
rows[i].dndGhost = messageListGhost;
rows[i].dndDataForType = messageListData;
- document.DNDManager.registerSource(rows[i]);
+// document.DNDManager.registerSource(rows[i]);
for (var j = 0; j < rows[i].cells.length; j++) {
var cell = rows[i].cells[j];
Event.observe(cell, "dblclick", onMessageDoubleClick.bindAsEventListener(cell));
else if (j == 4) {
var img = cell.childNodesWithTag("img")[0];
- Event.observe(img, "click", mailListMarkMessage);
+ Event.observe(img, "click", mailListMarkMessage.bindAsEventListener(img));
}
}
}
}
function initMailer(event) {
- if (!document.body.hasClassName("popup")) {
- initDnd();
+ if (!$(document.body).hasClassName("popup")) {
+// initDnd();
initMailboxTree();
+ initMessageCheckTimer();
+ }
+
+ // Default sort options
+ sorting["attribute"] = "date";
+ sorting["ascending"] = false;
+}
+
+function initMessageCheckTimer() {
+ var messageCheck = userDefaults["MessageCheck"];
+ if (messageCheck && messageCheck != "manually") {
+ var interval;
+ if (messageCheck == "once_per_hour")
+ interval = 3600;
+ else if (messageCheck == "every_minute")
+ interval = 60;
+ else {
+ interval = parseInt(messageCheck.substr(6)) * 60;
+ }
+ messageCheckTimer = window.setInterval(onMessageCheckCallback,
+ interval * 1000);
}
}
+function onMessageCheckCallback(event) {
+ refreshMailbox();
+}
+
function initMailboxTree() {
mailboxTree = new dTree("mailboxTree");
mailboxTree.config.folderLinks = true;
mailboxTree.pendingRequests = mailAccounts.length;
activeAjaxRequests += mailAccounts.length;
for (var i = 0; i < mailAccounts.length; i++) {
- var url = ApplicationBaseURL + "/" + mailAccounts[i] + "/mailboxes";
+ var url = ApplicationBaseURL + mailAccounts[i] + "/mailboxes";
triggerAjaxRequest(url, onLoadMailboxesCallback, mailAccounts[i]);
}
}
var tree = $("mailboxTree");
var nodes = document.getElementsByClassName("node", tree);
for (i = 0; i < nodes.length; i++) {
- Event.observe(nodes[i], "click", onMailboxTreeItemClick.bindAsEventListener(nodes[i]));
- Event.observe(nodes[i], "contextmenu", onFolderMenuClick.bindAsEventListener(nodes[i]));
+ Event.observe(nodes[i], "click",
+ onMailboxTreeItemClick.bindAsEventListener(nodes[i]));
+ Event.observe(nodes[i], "contextmenu",
+ onFolderMenuClick.bindAsEventListener(nodes[i]));
if (!inboxFound
&& nodes[i].parentNode.getAttribute("datatype") == "inbox") {
+ Mailer.currentMailboxType = "inbox";
openInbox(nodes[i]);
inboxFound = true;
}
var image = document.createElement("img");
image.src = ResourcesURL + "/" + icon;
newNode.appendChild(image);
- newNode.appendChild(document.createTextNode(" " + name));
+ var displayName = MailerUIdTreeExtension.folderNames[type];
+ if (!displayName)
+ displayName = name;
+ newNode.appendChild(document.createTextNode(" " + displayName));
return newNode;
}
menuDIV.setAttribute("id", prefix + "Submenu");
var menu = document.createElement("ul");
menuDIV.appendChild(menu);
+ pageContent.appendChild(menuDIV);
var callbacks = new Array();
if (mailbox.type != "account") {
var newNode = document.createElement("li");
newNode.mailbox = mailbox;
- newNode.appendChild(document.createTextNode("coucou"));
+ newNode.appendChild(document.createTextNode(labels["This Folder"]));
menu.appendChild(newNode);
menu.appendChild(document.createElement("li"));
callbacks.push(callback);
menu.appendChild(newNode);
if (child.children.length > 0) {
var newPrefix = prefix + submenuCount;
- var newSubmenu = generateMenuForMailbox(child,
- newPrefix,
- callback);
- document.body.appendChild(newSubmenu);
- callbacks.push(newPrefix + "Submenu");
+ var newSubmenuId = generateMenuForMailbox(child, newPrefix, callback);
+ callbacks.push(newSubmenuId);
submenuCount++;
}
else {
}
initMenu(menuDIV, callbacks);
- return menuDIV;
+ return menuDIV.getAttribute("id");
}
function updateMailboxMenus() {
menuDIV.parentNode.removeChild(menuDIV);
menuDIV = document.createElement("div");
- document.body.appendChild(menuDIV);
+ pageContent = $("pageContent");
+ pageContent.appendChild(menuDIV);
var menu = document.createElement("ul");
menuDIV.appendChild(menu);
$(menuDIV).addClassName("menu");
menuDIV.setAttribute("id", menuId);
-
+
var submenuIds = new Array();
for (var i = 0; i < mailAccounts.length; i++) {
var menuEntry = mailboxMenuNode("account", mailAccounts[i]);
menu.appendChild(menuEntry);
var mailbox = accounts[mailAccounts[i]];
- var newSubmenu = generateMenuForMailbox(mailbox,
- key, mailboxActions[key]);
- document.body.appendChild(newSubmenu);
- submenuIds.push(newSubmenu.getAttribute("id"));
+ var newSubmenuId = generateMenuForMailbox(mailbox,
+ key, mailboxActions[key]);
+ submenuIds.push(newSubmenuId);
}
initMenu(menuDIV, submenuIds);
}
if (http.readyState == 4
&& http.status == 200) {
checkAjaxRequestsState();
- var newAccount = buildMailboxes(http.callbackData,
- http.responseText);
- accounts[http.callbackData] = newAccount;
- mailboxTree.addMailAccount(newAccount);
- mailboxTree.pendingRequests--;
- activeAjaxRequests--;
- if (!mailboxTree.pendingRequests) {
- updateMailboxTreeInPage();
- updateMailboxMenus();
- checkAjaxRequestsState();
+ if (http.responseText.length > 0) {
+ var newAccount = buildMailboxes(http.callbackData,
+ http.responseText);
+ accounts[http.callbackData] = newAccount;
+ mailboxTree.addMailAccount(newAccount);
+ mailboxTree.pendingRequests--;
+ activeAjaxRequests--;
+ if (!mailboxTree.pendingRequests) {
+ updateMailboxTreeInPage();
+ updateMailboxMenus();
+ checkAjaxRequestsState();
+ getFoldersState();
+ }
}
}
// var treeNodes = document.getElementsByClassName("dTreeNode", tree);
// var i = 0;
// while (i < treeNodes.length
- // && treeNodes[i].getAttribute("dataname") != currentMailbox)
+ // && treeNodes[i].getAttribute("dataname") != Mailer.currentMailbox)
// i++;
// if (i < treeNodes.length) {
// // log("found mailbox");
return account;
}
+function getFoldersState() {
+ if (mailAccounts.length > 0) {
+ var urlstr = ApplicationBaseURL + "foldersState";
+ triggerAjaxRequest(urlstr, getFoldersStateCallback);
+ }
+}
+
+function getFoldersStateCallback(http) {
+ if (http.readyState == 4
+ && http.status == 200) {
+ if (http.responseText.length > 0) {
+ // The response text is a JSOn representation
+ // of the folders that were left opened.
+ var data = http.responseText.evalJSON(true);
+ for (var i = 1; i < mailboxTree.aNodes.length; i++) {
+ if ($(data).indexOf(mailboxTree.aNodes[i].dataname) > 0)
+ // If the folder is found, open it
+ mailboxTree.o(i);
+ }
+ }
+ }
+ mailboxTree.autoSync();
+}
+
+function saveFoldersState() {
+ if (mailAccounts.length > 0) {
+ var foldersState = mailboxTree.getFoldersState();
+ var urlstr = ApplicationBaseURL + "saveFoldersState" + "?expandedFolders=" + foldersState;
+ triggerAjaxRequest(urlstr, saveFoldersStateCallback);
+ }
+}
+
+function saveFoldersStateCallback(http) {
+ if (http.readyState == 4
+ && isHttpStatus204(http.status)) {
+ log ("folders state saved");
+ }
+}
+
function onMenuCreateFolder(event) {
var name = window.prompt(labels["Name :"], "");
if (name && name.length > 0) {
function onMenuExpungeFolder(event) {
var folderID = document.menuTarget.getAttribute("dataname");
var urlstr = URLForFolderID(folderID) + "/expunge";
-
triggerAjaxRequest(urlstr, folderRefreshCallback, folderID);
}
function onMenuEmptyTrash(event) {
var folderID = document.menuTarget.getAttribute("dataname");
var urlstr = URLForFolderID(folderID) + "/emptyTrash";
- triggerAjaxRequest(urlstr, folderRefreshCallback, folderID);
+ triggerAjaxRequest(urlstr, folderOperationCallback, folderID);
- if (folderID == currentMailbox) {
+ if (folderID == Mailer.currentMailbox) {
var div = $('messageContent');
for (var i = div.childNodes.length - 1; i > -1; i--)
div.removeChild(div.childNodes[i]);
+ refreshCurrentFolder();
}
- var msgID = currentMessages[folderID];
+ var msgID = Mailer.currentMessages[folderID];
if (msgID)
deleteCachedMessage(folderID + "/" + msgID);
}
+function _onMenuChangeToXXXFolder(event, folder) {
+ var type = document.menuTarget.getAttribute("datatype");
+ if (type == "additional")
+ window.alert(labels["You need to choose a non-virtual folder!"]);
+ else {
+ var folderID = document.menuTarget.getAttribute("dataname");
+ var urlstr = URLForFolderID(folderID) + "/setAs" + folder + "Folder";
+ triggerAjaxRequest(urlstr, folderOperationCallback);
+ }
+}
+
+function onMenuChangeToDraftsFolder(event) {
+ return _onMenuChangeToXXXFolder(event, "Drafts");
+}
+
+function onMenuChangeToSentFolder(event) {
+ return _onMenuChangeToXXXFolder(event, "Sent");
+}
+
+function onMenuChangeToTrashFolder(event) {
+ return _onMenuChangeToXXXFolder(event, "Trash");
+}
+
+function onMenuLabelNone() {
+ var messages = new Array();
+
+ if (document.menuTarget.tagName == "DIV")
+ // Menu called from message content view
+ messages.push(Mailer.currentMessages[Mailer.currentMailbox]);
+ else if (Object.isArray(document.menuTarget))
+ // Menu called from multiple selection in messages list view
+ $(document.menuTarget).collect(function(row) {
+ messages.push(row.getAttribute("id").substr(4));
+ });
+ else
+ // Menu called from one selection in messages list view
+ messages.push(document.menuTarget.getAttribute("id").substr(4));
+
+ var url = ApplicationBaseURL + Mailer.currentMailbox + "/";
+ messages.each(function(id) {
+ triggerAjaxRequest(url + id + "/removeAllLabels",
+ messageFlagCallback,
+ { mailbox: Mailer.currentMailbox, msg: id, label: null } );
+ });
+}
+
+function _onMenuLabelFlagX(flag) {
+ var messages = new Hash();
+
+ if (document.menuTarget.tagName == "DIV")
+ // Menu called from message content view
+ messages.set(Mailer.currentMessages[Mailer.currentMailbox],
+ $('tr#row_' + Mailer.currentMessages[Mailer.currentMailbox]).getAttribute("labels"));
+ else if (Object.isArray(document.menuTarget))
+ // Menu called from multiple selection in messages list view
+ $(document.menuTarget).collect(function(row) {
+ messages.set(row.getAttribute("id").substr(4),
+ row.getAttribute("labels"));
+ });
+ else
+ // Menu called from one selection in messages list view
+ messages.set(document.menuTarget.getAttribute("id").substr(4),
+ document.menuTarget.getAttribute("labels"));
+
+ var url = ApplicationBaseURL + Mailer.currentMailbox + "/";
+ messages.keys().each(function(id) {
+ var flags = messages.get(id).split(" ");
+ var operation = "add";
+
+ if (flags.indexOf("label" + flag) > -1)
+ operation = "remove";
+
+ triggerAjaxRequest(url + id + "/" + operation + "Label" + flag,
+ messageFlagCallback,
+ { mailbox: Mailer.currentMailbox, msg: id,
+ label: operation + flag } );
+ });
+}
+
+function onMenuLabelFlag1() {
+ _onMenuLabelFlagX(1);
+}
+
+function onMenuLabelFlag2() {
+ _onMenuLabelFlagX(2);
+}
+
+function onMenuLabelFlag3() {
+ _onMenuLabelFlagX(3);
+}
+
+function onMenuLabelFlag4() {
+ _onMenuLabelFlagX(4);
+}
+
+function onMenuLabelFlag5() {
+ _onMenuLabelFlagX(5);
+}
+
function folderOperationCallback(http) {
if (http.readyState == 4
- && http.status == 204)
+ && isHttpStatus204(http.status))
initMailboxTree();
else
window.alert(labels["Operation failed"]);
function folderRefreshCallback(http) {
if (http.readyState == 4
- && http.status == 204) {
+ && isHttpStatus204(http.status)) {
var oldMailbox = http.callbackData;
- if (oldMailbox == currentMailbox)
+ if (oldMailbox == Mailer.currentMailbox)
refreshCurrentFolder();
}
else
window.alert(labels["Operation failed"]);
}
+function messageFlagCallback(http) {
+ if (http.readyState == 4
+ && isHttpStatus204(http.status)) {
+ var data = http.callbackData;
+ if (data["mailbox"] == Mailer.currentMailbox) {
+ var row = $("row_" + data["msg"]);
+ var operation = data["label"];
+ if (operation) {
+ var labels = row.getAttribute("labels");
+ var flags;
+ if (labels.length > 0)
+ flags = labels.split(" ");
+ else
+ flags = new Array();
+ if (operation.substr(0, 3) == "add")
+ flags.push("label" + operation.substr(3));
+ else {
+ var flag = "label" + operation.substr(6);
+ var idx = flags.indexOf(flag);
+ flags.splice(idx, 1);
+ }
+ row.setAttribute("labels", flags.join(" "));
+ }
+ else
+ row.setAttribute("labels", "");
+ }
+ }
+}
+
+function onLabelMenuPrepareVisibility() {
+ var messageList = $("messageList");
+ var flags = {};
+
+ if (messageList) {
+ var rows = messageList.getSelectedRows();
+ for (var i = 0; i < rows.length; i++) {
+ $w(rows[i].getAttribute("labels")).each(function(flag) {
+ flags[flag] = true;
+ });
+ }
+ }
+
+ var lis = this.childNodesWithTag("ul")[0].childNodesWithTag("li")
+ var isFlagged = false;
+ for (var i = 1; i < 6; i++) {
+ if (flags["label" + i]) {
+ isFlagged = true;
+ lis[1 + i].addClassName("_chosen");
+ }
+ else
+ lis[1 + i].removeClassName("_chosen");
+ }
+ if (isFlagged)
+ lis[0].removeClassName("_chosen");
+ else
+ lis[0].addClassName("_chosen");
+}
+
function getMenus() {
var menus = {}
menus["accountIconMenu"] = new Array(null, null, onMenuCreateFolder, null,
onMenuCreateFolder,
onMenuRenameFolder,
onMenuExpungeFolder,
- onMenuDeleteFolder, "-", null,
+ onMenuDeleteFolder,
+ "folderTypeMenu",
+ "-", null,
onMenuSharing);
menus["addressMenu"] = new Array(newContactFromEmail, newEmailTo, null);
menus["messageListMenu"] = new Array(onMenuOpenMessage, "-",
"mark-menu", "-", null,
onMenuViewMessageSource, null,
null, onMenuDeleteMessage);
+ menus["messagesListMenu"] = new Array(onMenuForwardMessage,
+ "-", "moveMailboxMenu",
+ "copyMailboxMenu", "label-menu",
+ "mark-menu", "-",
+ null, null,
+ onMenuDeleteMessage);
+ menus["imageMenu"] = new Array(saveImage);
menus["messageContentMenu"] = new Array(onMenuReplyToSender,
onMenuReplyToAll,
onMenuForwardMessage,
null, onMenuViewMessageSource,
null, onPrintCurrentMessage,
onMenuDeleteMessage);
- menus["label-menu"] = new Array(null, "-", null , null, null, null , null,
- null);
+ menus["folderTypeMenu"] = new Array(onMenuChangeToSentFolder,
+ onMenuChangeToDraftsFolder,
+ onMenuChangeToTrashFolder);
+
+ menus["label-menu"] = new Array(onMenuLabelNone, "-", onMenuLabelFlag1,
+ onMenuLabelFlag2, onMenuLabelFlag3,
+ onMenuLabelFlag4, onMenuLabelFlag5);
menus["mark-menu"] = new Array(null, null, null, null, "-", null, "-",
null, null, null);
menus["searchMenu"] = new Array(setSearchCriteria, setSearchCriteria,
setSearchCriteria, setSearchCriteria,
setSearchCriteria);
+ var labelMenu = $("label-menu");
+ if (labelMenu)
+ labelMenu.prepareVisibility = onLabelMenuPrepareVisibility;
return menus;
}
-addEvent(window, 'load', initMailer);
+FastInit.addOnLoad(initMailer);
function Mailbox(type, name) {
this.type = type;
}
}
+Mailbox.prototype.fullName = function() {
+ var fullName = "";
+
+ var currentFolder = this;
+ while (currentFolder.parentFolder) {
+ fullName = "/folder" + currentFolder.name + fullName;
+ currentFolder = currentFolder.parentFolder;
+ }
+
+ return "/" + currentFolder.name + fullName;
+}
+
Mailbox.prototype.findMailboxByName = function(name) {
var mailbox = null;