mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-06-02 00:49:45 +00:00
Monotone-Parent: 2303b51b776f8ba14da83e3a05e92f43b13279cc
Monotone-Revision: eeacd02d8b13bdfa77275e74d14f7175e508e254 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2007-05-25T21:12:46 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
Element.addMethods({
|
||||
|
||||
getSelectedRows: function(element) {
|
||||
getSelectedRows: function(element) {
|
||||
element = $(element);
|
||||
if (element.tagName == 'TABLE') {
|
||||
var tbody = (element.getElementsByTagName('tbody'))[0];
|
||||
@@ -12,7 +11,7 @@ Element.addMethods({
|
||||
}
|
||||
},
|
||||
|
||||
getSelectedRowsId: function(element) {
|
||||
getSelectedRowsId: function(element) {
|
||||
element = $(element);
|
||||
if (element.tagName == 'TABLE') {
|
||||
var tbody = (element.getElementsByTagName('tbody'))[0];
|
||||
@@ -24,7 +23,7 @@ Element.addMethods({
|
||||
}
|
||||
},
|
||||
|
||||
selectRowsMatchingClass: function(element, className) {
|
||||
selectRowsMatchingClass: function(element, className) {
|
||||
element = $(element);
|
||||
if (element.tagName == 'TABLE') {
|
||||
var tbody = (element.getElementsByTagName('tbody'))[0];
|
||||
@@ -37,5 +36,4 @@ Element.addMethods({
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}); // Element.addMethods
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
var MailerUIdTreeExtension = {
|
||||
elementCounter: 1,
|
||||
folderIcons: { account: "tbtv_account_17x17.gif",
|
||||
inbox: "tbtv_inbox_17x17.gif",
|
||||
sent: "tbtv_sent_17x17.gif",
|
||||
draft: "tbtv_drafts_17x17.gif",
|
||||
trash: "tbtv_trash_17x17.gif" },
|
||||
folderNames: { inbox: labels["InboxFolderName"],
|
||||
sent: labels["SentFolderName"],
|
||||
draft: labels["DraftsFolderName"],
|
||||
trash: labels["TrashFolderName"] },
|
||||
_addFolderNode: function (parent, name, fullName, type) {
|
||||
var icon = this.folderIcons[type];
|
||||
if (icon)
|
||||
icon = ResourcesURL + "/" + icon;
|
||||
else
|
||||
icon = "";
|
||||
var displayName = this.folderNames[type];
|
||||
if (!displayName)
|
||||
displayName = name;
|
||||
this.add(this.elementCounter, parent, displayName, 1, '#', fullName,
|
||||
type, '', '', icon, icon);
|
||||
this.elementCounter++;
|
||||
},
|
||||
_addFolder: function (parent, folder) {
|
||||
var thisCounter = this.elementCounter;
|
||||
var fullName = "";
|
||||
var currentFolder = folder;
|
||||
while (currentFolder) {
|
||||
fullName = "/" + currentFolder.name + fullName;
|
||||
currentFolder = currentFolder.parentFolder;
|
||||
}
|
||||
this._addFolderNode(parent, folder.name, fullName, folder.type);
|
||||
for (var i = 0; i < folder.children.length; i++)
|
||||
this._addFolder(thisCounter, folder.children[i]);
|
||||
},
|
||||
addMailAccount: function (mailAccount) {
|
||||
this._addFolder(0, mailAccount);
|
||||
}
|
||||
};
|
||||
|
||||
Object.extend(dTree.prototype, MailerUIdTreeExtension);
|
||||
@@ -449,6 +449,10 @@ table.linked_attachment_meta
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
DIV[datatype~="additional"] > A.node > SPAN.nodeName
|
||||
{ color: #777;
|
||||
font-style: italic; }
|
||||
|
||||
/* drag-n-drop */
|
||||
IMG.dragMessage
|
||||
{
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
/* JavaScript for SOGoMail */
|
||||
var accounts = {};
|
||||
var mailboxTree;
|
||||
|
||||
var currentMessages = new Array();
|
||||
var maxCachedMessages = 20;
|
||||
var cachedMessages = new Array();
|
||||
var currentMailbox = '';
|
||||
var currentMailbox = null;
|
||||
|
||||
var usersRightsWindowHeight = 320;
|
||||
var usersRightsWindowWidth = 400;
|
||||
@@ -299,7 +301,7 @@ function uixDeleteSelectedMessages(sender) {
|
||||
var rowId = rowIds[i].substr(4);
|
||||
/* send AJAX request (synchronously) */
|
||||
|
||||
var messageId = currentMailbox + "/" + rowId;
|
||||
var messageId = currentMailbox + "/" + rowId;
|
||||
url = ApplicationBaseURL + messageId + "/trash?jsonly=1";
|
||||
http = createHTTPClient();
|
||||
http.open("GET", url, false /* not async */);
|
||||
@@ -339,7 +341,7 @@ function moveMessages(rowIds, folder) {
|
||||
|
||||
/* send AJAX request (synchronously) */
|
||||
|
||||
var messageId = currentMailbox + "/" + rowIds[i];
|
||||
var messageId = currentMailbox + "/" + rowIds[i];
|
||||
url = ApplicationBaseURL + messageId + "/move?jsonly=1&tofolder=" + folder;
|
||||
http = createHTTPClient();
|
||||
http.open("GET", url, false /* not async */);
|
||||
@@ -374,21 +376,36 @@ function onMenuDeleteMessage(event) {
|
||||
}
|
||||
|
||||
function onMailboxTreeItemClick(event) {
|
||||
var topNode = $("d");
|
||||
var topNode = $("mailboxTree");
|
||||
var mailbox = this.parentNode.getAttribute("dataname");
|
||||
|
||||
if (topNode.selectedEntry) {
|
||||
log ("deselecting");
|
||||
if (topNode.selectedEntry)
|
||||
topNode.selectedEntry.deselect();
|
||||
}
|
||||
this.select();
|
||||
topNode.selectedEntry = this;
|
||||
|
||||
if (this.parentNode.getAttribute("datatype") != "account")
|
||||
var datatype = this.parentNode.getAttribute("datatype");
|
||||
if (datatype == "account" || datatype == "additional") {
|
||||
currentMailbox = mailbox;
|
||||
$("messageContent").innerHTML = "";
|
||||
var body = $("messageList").tBodies[0];
|
||||
for (var i = body.rows.length - 1; i > 0; i--)
|
||||
body.deleteRow(i);
|
||||
}
|
||||
else
|
||||
openMailbox(mailbox);
|
||||
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
function onMailboxMenuMove() {
|
||||
window.alert("unimplemented");
|
||||
}
|
||||
|
||||
function onMailboxMenuCopy() {
|
||||
window.alert("unimplemented");
|
||||
}
|
||||
|
||||
function _refreshWindowMailbox() {
|
||||
openMailbox(currentMailbox, true);
|
||||
}
|
||||
@@ -397,7 +414,7 @@ function refreshMailbox() {
|
||||
var topWindow = getTopWindow();
|
||||
if (topWindow)
|
||||
topWindow._refreshWindowMailbox();
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -480,7 +497,6 @@ function messageListCallback(http) {
|
||||
}
|
||||
|
||||
function onMessageContextMenu(event) {
|
||||
log("messagelistmenu");
|
||||
var menu = $('messageListMenu');
|
||||
Event.observe(menu, "hideMenu", onMessageContextMenuHide);
|
||||
popupMenu(event, "messageListMenu", this);
|
||||
@@ -513,8 +529,6 @@ function onFolderMenuClick(event) {
|
||||
var onhide, menuName;
|
||||
|
||||
var menutype = this.parentNode.getAttribute("datatype");
|
||||
// log("parentNode: " + this.parentNode.tagName);
|
||||
// log("menutype: " + menutype);
|
||||
if (menutype) {
|
||||
if (menutype == "inbox") {
|
||||
menuName = "inboxIconMenu";
|
||||
@@ -533,17 +547,19 @@ function onFolderMenuClick(event) {
|
||||
Event.observe(menu, "hideMenu", onFolderMenuHide);
|
||||
popupMenu(event, menuName, this.parentNode);
|
||||
|
||||
var topNode = $('d');
|
||||
var topNode = $("mailboxTree");
|
||||
if (topNode.selectedEntry)
|
||||
topNode.selectedEntry.deselect();
|
||||
if (topNode.menuSelectedEntry)
|
||||
topNode.menuSelectedEntry.deselect();
|
||||
topNode.menuSelectedEntry = this;
|
||||
this.select();
|
||||
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
function onFolderMenuHide(event) {
|
||||
var topNode = $('d');
|
||||
var topNode = $("mailboxTree");
|
||||
|
||||
if (topNode.menuSelectedEntry) {
|
||||
topNode.menuSelectedEntry.deselect();
|
||||
@@ -808,34 +824,14 @@ function expandUpperTree(node) {
|
||||
var id = currentNode.getAttribute("id");
|
||||
var number = parseInt(id.substr(2));
|
||||
if (number > 0) {
|
||||
var cn = d.aNodes[number];
|
||||
d.nodeStatus(1, number, cn._ls);
|
||||
var cn = mailboxTree.aNodes[number];
|
||||
mailboxTree.nodeStatus(1, number, cn._ls);
|
||||
}
|
||||
}
|
||||
currentNode = currentNode.parentNode;
|
||||
}
|
||||
}
|
||||
|
||||
function initMailboxSelection(mailboxName) {
|
||||
currentMailbox = mailboxName;
|
||||
// log("initMailboxSelection: " + mailboxName);
|
||||
var tree = $("d");
|
||||
var treeNodes = document.getElementsByClassName("dTreeNode", tree);
|
||||
var i = 0;
|
||||
while (i < treeNodes.length
|
||||
&& treeNodes[i].getAttribute("dataname") != currentMailbox)
|
||||
i++;
|
||||
if (i < treeNodes.length) {
|
||||
// log ("found mailbox");
|
||||
var links = document.getElementsByClassName("node", treeNodes[i]);
|
||||
if (tree.selectedEntry)
|
||||
tree.selectedEntry.deselect();
|
||||
links[0].select();
|
||||
tree.selectedEntry = links[0];
|
||||
expandUpperTree(links[0]);
|
||||
}
|
||||
}
|
||||
|
||||
function onHeaderClick(event) {
|
||||
if (document.messageListAjaxRequest) {
|
||||
document.messageListAjaxRequest.aborted = true;
|
||||
@@ -888,8 +884,8 @@ var mailboxSpanDrop = function(data) {
|
||||
|
||||
var plusSignEnter = function() {
|
||||
var nodeNr = parseInt(this.id.substr(2));
|
||||
if (!d.aNodes[nodeNr]._io)
|
||||
this.plusSignTimer = setTimeout("openPlusSign('" + nodeNr + "');", 1000);
|
||||
if (!mailboxTree.aNodes[nodeNr]._io)
|
||||
this.plusSignTimer = setTimeout("openPlusSign('" + nodeNr + "');", 1000);
|
||||
}
|
||||
|
||||
var plusSignExit = function() {
|
||||
@@ -900,8 +896,8 @@ var plusSignExit = function() {
|
||||
}
|
||||
|
||||
function openPlusSign(nodeNr) {
|
||||
d.nodeStatus(1, nodeNr, d.aNodes[nodeNr]._ls);
|
||||
d.aNodes[nodeNr]._io = 1;
|
||||
mailboxTree.nodeStatus(1, nodeNr, mailboxTree.aNodes[nodeNr]._ls);
|
||||
mailboxTree.aNodes[nodeNr]._io = 1;
|
||||
this.plusSignTimer = null;
|
||||
}
|
||||
|
||||
@@ -915,14 +911,14 @@ var messageListGhost = function () {
|
||||
newDiv.ghostOffsetX = 10;
|
||||
newDiv.ghostOffsetY = 5;
|
||||
|
||||
var imgCode = '<img src="' + ResourcesURL + '/message-mail.png" />';
|
||||
var newImg = document.createElement("img");
|
||||
newImg.src = ResourcesURL + "/message-mail.png";
|
||||
|
||||
var current = this;
|
||||
while (!current.getSelectedRows)
|
||||
current = current.parentNode;
|
||||
var count = current.getSelectedRows().length;
|
||||
var text = imgCode + '<br />' + count + ' messages...';
|
||||
newDiv.innerHTML = text;
|
||||
var list = $("messageList");
|
||||
var count = list.getSelectedRows().length;
|
||||
newDiv.appendChild(newImg);
|
||||
newDiv.appendChild(document.createElement("br"));
|
||||
newDiv.appendChild(document.createTextNode(count + " messages..."));
|
||||
|
||||
return newDiv;
|
||||
}
|
||||
@@ -990,7 +986,7 @@ function configureDragHandles() {
|
||||
function initDnd() {
|
||||
// log ("MailerUI initDnd");
|
||||
|
||||
var tree = $("d");
|
||||
var tree = $("mailboxTree");
|
||||
if (tree) {
|
||||
var images = tree.getElementsByTagName("img");
|
||||
for (var i = 0; i < images.length; i++) {
|
||||
@@ -1020,18 +1016,10 @@ function refreshContacts() {
|
||||
function openInbox(node) {
|
||||
var done = false;
|
||||
openMailbox(node.parentNode.getAttribute("dataname"));
|
||||
var tree = $("d");
|
||||
var tree = $("mailboxTree");
|
||||
tree.selectedEntry = node;
|
||||
node.select();
|
||||
var currentNode = node.parentNode.parentNode;
|
||||
while (!done) {
|
||||
var number = currentNode.getAttribute("id").substr(2);
|
||||
d.o(number);
|
||||
if (number == "1")
|
||||
done = true;
|
||||
else
|
||||
currentNode = currentNode.parentNode;
|
||||
}
|
||||
mailboxTree.o(1);
|
||||
}
|
||||
|
||||
function configureSearchField() {
|
||||
@@ -1047,23 +1035,203 @@ function configureSearchField() {
|
||||
function initMailer(event) {
|
||||
if (!document.body.hasClassName("popup")) {
|
||||
configureSearchField();
|
||||
var inboxFound = false;
|
||||
configureMessageListEvents();
|
||||
initDnd();
|
||||
var tree = $("d");
|
||||
var nodes = document.getElementsByClassName("node", tree);
|
||||
for (i = 0; i < nodes.length; i++) {
|
||||
Event.observe(nodes[i], "click", onMailboxTreeItemClick);
|
||||
Event.observe(nodes[i], "contextmenu", onFolderMenuClick);
|
||||
if (!inboxFound
|
||||
&& nodes[i].parentNode.getAttribute("datatype") == "inbox") {
|
||||
openInbox(nodes[i]);
|
||||
inboxFound = true;
|
||||
}
|
||||
currentMailbox = "/" + accounts[0] + "/INBOX";
|
||||
initMailboxTree();
|
||||
}
|
||||
}
|
||||
|
||||
function initMailboxTree() {
|
||||
mailboxTree = new dTree("mailboxTree");
|
||||
mailboxTree.config.folderLinks = true;
|
||||
mailboxTree.config.hideRoot = true;
|
||||
|
||||
mailboxTree.icon.root = ResourcesURL + "/tbtv_account_17x17.gif";
|
||||
mailboxTree.icon.folder = ResourcesURL + "/tbtv_leaf_corner_17x17.gif";
|
||||
mailboxTree.icon.folderOpen = ResourcesURL + "/tbtv_leaf_corner_17x17.gif";
|
||||
mailboxTree.icon.node = ResourcesURL + "/tbtv_leaf_corner_17x17.gif";
|
||||
mailboxTree.icon.line = ResourcesURL + "/tbtv_line_17x17.gif";
|
||||
mailboxTree.icon.join = ResourcesURL + "/tbtv_junction_17x17.gif";
|
||||
mailboxTree.icon.joinBottom = ResourcesURL + "/tbtv_corner_17x17.gif";
|
||||
mailboxTree.icon.plus = ResourcesURL + "/tbtv_plus_17x17.gif";
|
||||
mailboxTree.icon.plusBottom = ResourcesURL + "/tbtv_corner_plus_17x17.gif";
|
||||
mailboxTree.icon.minus = ResourcesURL + "/tbtv_minus_17x17.gif";
|
||||
mailboxTree.icon.minusBottom = ResourcesURL + "/tbtv_corner_minus_17x17.gif";
|
||||
mailboxTree.icon.nlPlus = ResourcesURL + "/tbtv_corner_plus_17x17.gif";
|
||||
mailboxTree.icon.nlMinus = ResourcesURL + "/tbtv_corner_minus_17x17.gif";
|
||||
mailboxTree.icon.empty = ResourcesURL + "/empty.gif";
|
||||
|
||||
mailboxTree.add(0, -1, '');
|
||||
|
||||
mailboxTree.pendingRequests = mailAccounts.length;
|
||||
for (var i = 0; i < mailAccounts.length; i++) {
|
||||
var url = ApplicationBaseURL + "/" + mailAccounts[i] + "/mailboxes";
|
||||
triggerAjaxRequest(url, onLoadMailboxesCallback, mailAccounts[i]);
|
||||
}
|
||||
}
|
||||
|
||||
function updateMailboxTreeInPage() {
|
||||
$("folderTreeContent").innerHTML = mailboxTree;
|
||||
|
||||
var inboxFound = false;
|
||||
var tree = $("mailboxTree");
|
||||
var nodes = document.getElementsByClassName("node", tree);
|
||||
for (i = 0; i < nodes.length; i++) {
|
||||
Event.observe(nodes[i], "click", onMailboxTreeItemClick);
|
||||
Event.observe(nodes[i], "contextmenu", onFolderMenuClick);
|
||||
if (!inboxFound
|
||||
&& nodes[i].parentNode.getAttribute("datatype") == "inbox") {
|
||||
openInbox(nodes[i]);
|
||||
inboxFound = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function mailboxMenuNode(type, name) {
|
||||
var newNode = document.createElement("li");
|
||||
var icon = MailerUIdTreeExtension.folderIcons[type];
|
||||
if (!icon)
|
||||
icon = "tbtv_leaf_corner_17x17.gif";
|
||||
var image = document.createElement("img");
|
||||
image.src = ResourcesURL + "/" + icon;
|
||||
newNode.appendChild(image);
|
||||
newNode.appendChild(document.createTextNode(" " + name));
|
||||
|
||||
return newNode;
|
||||
}
|
||||
|
||||
function generateMenuForMailbox(mailbox, prefix, callback) {
|
||||
var menuDIV = document.createElement("div");
|
||||
menuDIV.addClassName("menu");
|
||||
menuDIV.setAttribute("id", prefix + "Submenu");
|
||||
var menu = document.createElement("ul");
|
||||
menuDIV.appendChild(menu);
|
||||
|
||||
var callbacks = new Array();
|
||||
if (mailbox.type != "account") {
|
||||
var newNode = document.createElement("li");
|
||||
newNode.mailbox = mailbox;
|
||||
newNode.appendChild(document.createTextNode("coucou"));
|
||||
menu.appendChild(newNode);
|
||||
menu.appendChild(document.createElement("li"));
|
||||
callbacks.push(callback);
|
||||
callbacks.push("-");
|
||||
}
|
||||
|
||||
var submenuCount = 0;
|
||||
for (var i = 0; i < mailbox.children.length; i++) {
|
||||
var child = mailbox.children[i];
|
||||
var newNode = mailboxMenuNode(child.type, child.name);
|
||||
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");
|
||||
submenuCount++;
|
||||
}
|
||||
else {
|
||||
newNode.mailbox = child;
|
||||
callbacks.push(callback);
|
||||
}
|
||||
}
|
||||
initMenu(menuDIV, callbacks);
|
||||
|
||||
return menuDIV;
|
||||
}
|
||||
|
||||
function updateMailboxMenus() {
|
||||
var mailboxActions = { move: onMailboxMenuMove,
|
||||
copy: onMailboxMenuCopy };
|
||||
|
||||
for (key in mailboxActions) {
|
||||
var menuId = key + "MailboxMenu";
|
||||
var menuDIV = $(menuId);
|
||||
if (menuDIV)
|
||||
menuDIV.parentNode.removeChild(menuDIV);
|
||||
menuDIV = document.createElement("div");
|
||||
menuDIV.addClassName("menu");
|
||||
menuDIV.setAttribute("id", menuId);
|
||||
var menu = document.createElement("ul");
|
||||
menuDIV.appendChild(menu);
|
||||
|
||||
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"));
|
||||
}
|
||||
initMenu(menuDIV, submenuIds);
|
||||
|
||||
document.body.appendChild(menuDIV);
|
||||
}
|
||||
}
|
||||
|
||||
function onLoadMailboxesCallback(http) {
|
||||
if (http.readyState == 4
|
||||
&& http.status == 200) {
|
||||
var newAccount = buildMailboxes(http.callbackData,
|
||||
http.responseText);
|
||||
accounts[http.callbackData] = newAccount;
|
||||
mailboxTree.addMailAccount(newAccount);
|
||||
mailboxTree.pendingRequests--;
|
||||
if (!mailboxTree.pendingRequests) {
|
||||
updateMailboxTreeInPage();
|
||||
updateMailboxMenus();
|
||||
}
|
||||
|
||||
// var tree = $("mailboxTree");
|
||||
// var treeNodes = document.getElementsByClassName("dTreeNode", tree);
|
||||
// var i = 0;
|
||||
// while (i < treeNodes.length
|
||||
// && treeNodes[i].getAttribute("dataname") != currentMailbox)
|
||||
// i++;
|
||||
// if (i < treeNodes.length) {
|
||||
// // log ("found mailbox");
|
||||
// var links = document.getElementsByClassName("node", treeNodes[i]);
|
||||
// if (tree.selectedEntry)
|
||||
// tree.selectedEntry.deselect();
|
||||
// links[0].select();
|
||||
// tree.selectedEntry = links[0];
|
||||
// expandUpperTree(links[0]);
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
function buildMailboxes(accountName, encoded) {
|
||||
var account = new Mailbox("account", accountName);
|
||||
var data = encoded.evalJSON(true);
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
var currentNode = account;
|
||||
var names = data[i].path.split("/");
|
||||
for (var j = 1; j < (names.length - 1); j++) {
|
||||
var node = currentNode.findMailboxByName(names[j]);
|
||||
if (!node) {
|
||||
node = new Mailbox("additional", names[j]);
|
||||
currentNode.addMailbox(node);
|
||||
}
|
||||
currentNode = node;
|
||||
}
|
||||
var basename = names[names.length-1];
|
||||
var leaf = currentNode.findMailboxByName(basename);
|
||||
if (leaf)
|
||||
leaf.type = data[i].type;
|
||||
else {
|
||||
leaf = new Mailbox(data[i].type, basename);
|
||||
currentNode.addMailbox(leaf);
|
||||
}
|
||||
}
|
||||
|
||||
return account;
|
||||
}
|
||||
|
||||
function initializeMenus() {
|
||||
menus["menuIds"] = new Array("accountIconMenu", "inboxIconMenu",
|
||||
"trashIconMenu", "mailboxIconMenu",
|
||||
@@ -1084,25 +1252,59 @@ function initializeMenus() {
|
||||
onMenuReplyToSender,
|
||||
onMenuReplyToAll,
|
||||
onMenuForwardMessage, null,
|
||||
"-", "mailboxes-menu",
|
||||
"mailboxes-menu", "label-menu",
|
||||
"-", "moveMailboxMenu",
|
||||
"copyMailboxMenu", "label-menu",
|
||||
"mark-menu", "-", null, null,
|
||||
null, onMenuDeleteMessage);
|
||||
menus["messageContentMenu"] = new Array(onMenuReplyToSender,
|
||||
onMenuReplyToAll,
|
||||
onMenuForwardMessage,
|
||||
null,
|
||||
"mailboxes-menu",
|
||||
"mailboxes-menu",
|
||||
null, "moveMailboxMenu",
|
||||
"copyMailboxMenu",
|
||||
"-", "label-menu", "mark-menu",
|
||||
"-", null, null, null,
|
||||
"-",
|
||||
null, null, null,
|
||||
onMenuDeleteMessage);
|
||||
menus["label-menu"] = new Array(null, "-", null , null, null, null , null,
|
||||
null);
|
||||
menus["mark-menu"] = new Array(null, null, null, null, "-", null, "-",
|
||||
null, null, null);
|
||||
|
||||
initMenus();
|
||||
}
|
||||
|
||||
Event.observe(window, "load", initMailer);
|
||||
|
||||
function Mailbox(type, name) {
|
||||
this.type = type;
|
||||
this.name = name;
|
||||
this.parentFolder = null;
|
||||
this.children = new Array();
|
||||
return this;
|
||||
}
|
||||
|
||||
Mailbox.prototype.dump = function(indent) {
|
||||
if (!indent)
|
||||
indent = 0;
|
||||
log(" ".repeat(indent) + this.name);
|
||||
for (var i = 0; i < this.children.length; i++) {
|
||||
this.children[i].dump(indent + 2);
|
||||
}
|
||||
}
|
||||
|
||||
Mailbox.prototype.findMailboxByName = function(name) {
|
||||
var mailbox = null;
|
||||
|
||||
var i = 0;
|
||||
while (!mailbox && i <this.children.length)
|
||||
if (this.children[i].name == name)
|
||||
mailbox = this.children[i];
|
||||
else
|
||||
i++;
|
||||
|
||||
return mailbox;
|
||||
}
|
||||
|
||||
Mailbox.prototype.addMailbox = function(mailbox) {
|
||||
mailbox.parentFolder = this;
|
||||
this.children.push(mailbox);
|
||||
}
|
||||
|
||||
@@ -621,36 +621,37 @@ function backtrace() {
|
||||
}
|
||||
|
||||
function dropDownSubmenu(event) {
|
||||
var node = this;
|
||||
if (this.submenu && this.submenu != "") {
|
||||
var submenuNode = document.getElementById(this.submenu);
|
||||
var parentNode = getParentMenu(node);
|
||||
if (parentNode.submenu)
|
||||
hideMenu(event, parentNode.submenu);
|
||||
submenuNode.parentMenuItem = node;
|
||||
submenuNode.parentMenu = parentNode;
|
||||
parentNode.submenuItem = node;
|
||||
parentNode.submenu = submenuNode;
|
||||
|
||||
var menuTop = (node.offsetTop - 2);
|
||||
|
||||
var heightDiff = (window.innerHeight
|
||||
- (menuTop + submenuNode.offsetHeight));
|
||||
if (heightDiff < 0)
|
||||
menuTop += heightDiff;
|
||||
|
||||
var menuLeft = parentNode.offsetWidth - 3;
|
||||
if (window.innerWidth
|
||||
< (menuLeft + submenuNode.offsetWidth
|
||||
+ parentNode.cascadeLeftOffset()))
|
||||
menuLeft = - submenuNode.offsetWidth + 3;
|
||||
|
||||
parentNode.setAttribute('onmousemove', 'checkDropDown(event);');
|
||||
node.setAttribute('class', 'submenu-selected');
|
||||
submenuNode.setStyle({ top: menuTop + "px",
|
||||
left: menuLeft + "px",
|
||||
visibility: "visible" });
|
||||
}
|
||||
var node = this;
|
||||
if (this.submenu && this.submenu != "") {
|
||||
log ("submenu: " + this.submenu);
|
||||
var submenuNode = $(this.submenu);
|
||||
var parentNode = getParentMenu(node);
|
||||
if (parentNode.submenu)
|
||||
hideMenu(event, parentNode.submenu);
|
||||
submenuNode.parentMenuItem = node;
|
||||
submenuNode.parentMenu = parentNode;
|
||||
parentNode.submenuItem = node;
|
||||
parentNode.submenu = submenuNode;
|
||||
|
||||
var menuTop = (node.offsetTop - 2);
|
||||
|
||||
var heightDiff = (window.innerHeight
|
||||
- (menuTop + submenuNode.offsetHeight));
|
||||
if (heightDiff < 0)
|
||||
menuTop += heightDiff;
|
||||
|
||||
var menuLeft = parentNode.offsetWidth - 3;
|
||||
if (window.innerWidth
|
||||
< (menuLeft + submenuNode.offsetWidth
|
||||
+ parentNode.cascadeLeftOffset()))
|
||||
menuLeft = - submenuNode.offsetWidth + 3;
|
||||
|
||||
parentNode.setAttribute('onmousemove', 'checkDropDown(event);');
|
||||
node.setAttribute('class', 'submenu-selected');
|
||||
submenuNode.setStyle({ top: menuTop + "px",
|
||||
left: menuLeft + "px",
|
||||
visibility: "visible" });
|
||||
}
|
||||
}
|
||||
|
||||
function checkDropDown(event) {
|
||||
@@ -957,7 +958,8 @@ function initMenu(menuDIV, callbacks) {
|
||||
}
|
||||
}
|
||||
else
|
||||
Event.observe(node, "mouseup", callback);
|
||||
Event.observe(node, "mouseup",
|
||||
$(callback).bindAsEventListener(node));
|
||||
}
|
||||
else
|
||||
node.addClassName("disabled");
|
||||
|
||||
Reference in New Issue
Block a user