Monotone-Parent: b31e6efb5efed6bcfa2c6aaca6dbbb4e06a9a637

Monotone-Revision: ae19f5b80b87d9f63b4068d2a027a9fdb3190efb

Monotone-Author: flachapelle@inverse.ca
Monotone-Date: 2008-10-09T19:27:37
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Francis Lachapelle
2008-10-09 19:27:37 +00:00
parent 0408389bb9
commit dbfd64e61f
5 changed files with 125 additions and 50 deletions
+4
View File
@@ -234,6 +234,10 @@ DIV#folderTreeContent TABLE TD
margin: 0px;
padding: 0px; }
/* mailbox tree (dtree) */
DIV.dTreeNode SPAN.unseen
{ font-weight: bold; }
/* mail tableview */
TD.mailer_readmailsubject
+103 -42
View File
@@ -102,39 +102,54 @@ function onMenuSharing(event) {
function markMailInWindow(win, msguid, markread) {
var row = win.$("row_" + msguid);
var subjectCell = win.$("div_" + msguid);
var unseenCount = 0;
if (row && subjectCell) {
if (markread) {
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);
}
if (row.hasClassName("mailer_unreadmail")) {
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);
}
unseenCount = -1;
}
}
else {
if (!row.hasClassName("mailer_unreadmail")) {
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);
}
unseenCount = 1;
}
}
else {
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;
}
else
return false;
if (unseenCount != 0) {
/* Update unseen count only if it's the inbox */
for (var i = 0; i < mailboxTree.aNodes.length; i++)
if (mailboxTree.aNodes[i].datatype == "inbox") break;
if (i != mailboxTree.aNodes.length && Mailer.currentMailbox == mailboxTree.aNodes[i].dataname)
updateStatusFolders(unseenCount, true);
}
return (unseenCount != 0);
}
function markMailReadInWindow(win, msguid) {
@@ -277,8 +292,8 @@ function deleteSelectedMessagesCallback(http) {
div.update();
Mailer.currentMessages[Mailer.currentMailbox] = null;
}
var row = $("row_" + data["id"][i]);
if (deleteMessageRequestCount == 0) {
var row = $("row_" + data["id"][i]);
var nextRow = row.next("tr");
if (!nextRow)
nextRow = row.previous("tr");
@@ -289,10 +304,11 @@ function deleteSelectedMessagesCallback(http) {
loadMessage(Mailer.currentMessages[Mailer.currentMailbox]);
}
else {
div.innerHTML = "";
div.update();
}
refreshCurrentFolder();
}
row.parentNode.removeChild(row);
}
}
}
@@ -345,14 +361,10 @@ function moveMessages(rowIds, folder) {
if (failCount > 0)
alert("Could not move " + failCount + " messages!");
return failCount;
}
function moveMessagesCallback(http) {
alert("messages are teh moved");
}
function onMenuDeleteMessage(event) {
deleteSelectedMessages();
preventDefault(event);
@@ -489,7 +501,7 @@ function composeNewMessage() {
openMailComposeWindow(url);
}
function openMailbox(mailbox, reload, idx) {
function openMailbox(mailbox, reload, idx, updateStatus) {
if (mailbox != Mailer.currentMailbox || reload) {
Mailer.currentMailbox = mailbox;
var url = ApplicationBaseURL + encodeURI(mailbox) + "/view?noframe=1";
@@ -539,6 +551,9 @@ function openMailbox(mailbox, reload, idx) {
document.messageListAjaxRequest
= triggerAjaxRequest(url, messageListCallback,
currentMessage);
if (updateStatus != false)
getStatusFolders();
}
}
@@ -620,6 +635,46 @@ function messageListCallback(http) {
}
}
function getStatusFolders() {
var account = Mailer.currentMailbox.split("/")[1];
var url = ApplicationBaseURL + encodeURI(account) + '/statusFolders';
if (document.statusFoldersAjaxRequest) {
document.statusFoldersAjaxRequest.aborted = true;
document.statusFoldersAjaxRequest.abort();
}
document.statusFoldersAjaxRequest = triggerAjaxRequest(url, statusFoldersCallback);
}
function statusFoldersCallback(http) {
var div = $('mailboxContent');
var table = $('messageList');
if (http.status == 200) {
document.statusFoldersAjaxRequest = null;
var data = http.responseText.evalJSON(true);
updateStatusFolders(data.unseen, false);
}
}
function updateStatusFolders(count, isDelta) {
var span = $("unseenCount");
var counter = span.select("SPAN").first();
if (typeof count == "undefined")
count = parseInt(counter.innerHTML);
else if (isDelta)
count += parseInt(counter.innerHTML);
counter.update(count);
if (count > 0) {
span.setStyle({ display: "inline" });
span.up("SPAN").addClassName("unseen");
}
else {
span.setStyle({ display: "none" });
span.up("SPAN").removeClassName("unseen");
}
}
function onMessageContextMenu(event) {
var menu = $('messageListMenu');
var topNode = $('messageList');
@@ -798,7 +853,7 @@ function configureLoadImagesButton() {
if (typeof(displayLoadImages) == "undefined" ||
displayLoadImages == null ||
displayLoadImages.value == 0) {
loadImagesButton.style.display = 'none';
loadImagesButton.setStyle({ display: 'none' });
}
}
@@ -1350,7 +1405,7 @@ function refreshContacts() {
function openInbox(node) {
var done = false;
openMailbox(node.parentNode.getAttribute("dataname"));
openMailbox(node.parentNode.getAttribute("dataname"), null, null, false);
var tree = $("mailboxTree");
tree.selectedEntry = node;
node.selectElement();
@@ -1599,6 +1654,7 @@ function onLoadMailboxesCallback(http) {
updateMailboxMenus();
checkAjaxRequestsState();
getFoldersState();
updateStatusFolders();
}
}
}
@@ -1625,6 +1681,7 @@ function buildMailboxes(accountName, encoded) {
var accountIndex = mailAccounts.indexOf(accountName);
var data = encoded.evalJSON(true);
var mailboxes = data.mailboxes;
var unseen = (data.status? data.status.unseen : 0);
if (data.quotas)
Mailer.quotas = data.quotas;
@@ -1645,8 +1702,11 @@ function buildMailboxes(accountName, encoded) {
if (leaf)
leaf.type = mailboxes[i].type;
else {
leaf = new Mailbox(mailboxes[i].type, basename);
currentNode.addMailbox(leaf);
if (mailboxes[i].type == 'inbox')
leaf = new Mailbox(mailboxes[i].type, basename, unseen);
else
leaf = new Mailbox(mailboxes[i].type, basename);
currentNode.addMailbox(leaf);
}
}
@@ -2015,9 +2075,10 @@ function getMenus() {
FastInit.addOnLoad(initMailer);
function Mailbox(type, name) {
function Mailbox(type, name, unseen) {
this.type = type;
this.name = name;
this.unseen = unseen;
this.parentFolder = null;
this.children = new Array();
return this;
+8 -3
View File
@@ -11,22 +11,27 @@ var MailerUIdTreeExtension = {
sent: labels["SentFolderName"],
draft: labels["DraftsFolderName"],
trash: labels["TrashFolderName"] },
_addFolderNode: function (parent, name, fullName, type) {
_addFolderNode: function (parent, name, fullName, type, unseen) {
var icon = this.folderIcons[type];
if (icon)
icon = ResourcesURL + "/" + icon;
else
icon = "";
var displayName = this.folderNames[type];
var hasUnseen = false;
if (!displayName)
displayName = name;
if (typeof unseen != "undefined") {
hasUnseen = true;
displayName += "<span id=\"unseenCount\"> (<span>" + parseInt(unseen) + "</span>)</span>";
}
this.add(this.elementCounter, parent, displayName, 1, '#', fullName,
type, '', '', icon, icon);
type, '', '', icon, icon, hasUnseen);
this.elementCounter++;
},
_addFolder: function (parent, folder) {
var thisCounter = this.elementCounter;
this._addFolderNode(parent, folder.name, folder.fullName(), folder.type);
this._addFolderNode(parent, folder.name, folder.fullName(), folder.type, folder.unseen);
for (var i = 0; i < folder.children.length; i++)
this._addFolder(thisCounter, folder.children[i]);
},
+6 -3
View File
@@ -11,7 +11,7 @@
// Node object
function Node(id, pid, name, isParent, url, dataname, datatype, title, target,
icon, iconOpen, open) {
icon, iconOpen, open, hasUnseen) {
this.isParent = isParent;
this.id = id;
this.pid = pid;
@@ -23,6 +23,7 @@ function Node(id, pid, name, isParent, url, dataname, datatype, title, target,
this.iconOpen = iconOpen;
this.dataname = dataname;
this.datatype = datatype;
this.hasUnseen = hasUnseen;
this._io = open || false;
this._is = false;
this._ls = false;
@@ -74,10 +75,10 @@ function dTree(objName) {
// Adds a new node to the node array
dTree.prototype.add = function(id, pid, name, isParent, url, datatype,
title, target, icon, iconOpen, open) {
title, target, icon, iconOpen, open, hasUnseen) {
this.aNodes[this.aNodes.length] = new Node(id, pid, name, isParent, url,
datatype, title, target, icon,
iconOpen, open);
iconOpen, open, false, hasUnseen);
};
// Open/close all nodes
@@ -160,6 +161,8 @@ dTree.prototype.node = function(node, nodeId) {
str += '<span class="nodeName';
if (!node.isParent)
str += ' leaf';
if (node.hasUnseen)
str += ' unseen';
str += '">' + node.name + '</span>';
if (node.url || ((!this.config.folderLinks || !node.url) && node._hc)) str += '</a>';
str += '</div>';
+4 -2
View File
@@ -545,8 +545,10 @@ function onRowClick(event) {
if (node.tagName == 'TD') {
node = node.parentNode; // select TR
rowIndex = node.rowIndex - $(node).up('table').down('thead').getElementsByTagName('tr').length;
}
if (node.tagName == 'TR') {
rowIndex = node.rowIndex - $(node).up('table').down('thead').getElementsByTagName('tr').length;
}
else if (node.tagName == 'LI') {
// Find index of clicked row
var list = node.parentNode;
@@ -593,7 +595,7 @@ function onRowClick(event) {
// Single line selection
$(node.parentNode).deselectAll();
$(node).selectElement();
if (initialSelection != $(node.parentNode).getSelectedNodes()) {
// Selection has changed; fire mousedown event
var parentNode = node.parentNode;