mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-07-15 05:14:53 +00:00
Monotone-Parent: 66f9ab1d22f9d44794e9868fe8705ef4777e0012
Monotone-Revision: e16807404ac6ea20632ee7e0e21ae2db34830540 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2010-08-12T20:51:10 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
@@ -3,18 +3,12 @@
|
||||
/* 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 Mailer = {
|
||||
currentMailbox: null,
|
||||
currentMailboxType: "",
|
||||
currentMessages: {},
|
||||
unseenCountMailboxes: [],
|
||||
maxCachedMessages: 20,
|
||||
cachedMessages: new Array(),
|
||||
foldersStateTimer: false,
|
||||
@@ -164,11 +158,9 @@ function markMailInWindow(win, msguid, markread) {
|
||||
}
|
||||
|
||||
if (unseenCount != 0) {
|
||||
if (Mailer.currentMailboxType == "inbox") {
|
||||
var node = mailboxTree.getMailboxNode(Mailer.currentMailbox);
|
||||
if (node) {
|
||||
updateStatusFolders(node, unseenCount, true);
|
||||
}
|
||||
var node = mailboxTree.getMailboxNode(Mailer.currentMailbox);
|
||||
if (node) {
|
||||
updateUnseenCount(node, unseenCount, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -362,11 +354,9 @@ function deleteSelectedMessages(sender) {
|
||||
messageList.deselectAll();
|
||||
updateMessageListCounter(0 - rows.length, true);
|
||||
if (unseenCount < 0) {
|
||||
if (Mailer.currentMailboxType == "inbox") {
|
||||
var node = mailboxTree.getMailboxNode(Mailer.currentMailbox);
|
||||
if (node) {
|
||||
updateStatusFolders(node, unseenCount, true);
|
||||
}
|
||||
var node = mailboxTree.getMailboxNode(Mailer.currentMailbox);
|
||||
if (node) {
|
||||
updateUnseenCount(node, unseenCount, true);
|
||||
}
|
||||
}
|
||||
var url = ApplicationBaseURL + encodeURI(Mailer.currentMailbox) + "/batchDelete";
|
||||
@@ -676,6 +666,7 @@ function openMailbox(mailbox, reload) {
|
||||
else
|
||||
dataSource.load(urlParams);
|
||||
Mailer.dataSources.set(key, dataSource);
|
||||
getUnseenCountForFolder(mailbox);
|
||||
}
|
||||
Mailer.dataTable.setSource(dataSource);
|
||||
messageList.deselectAll();
|
||||
@@ -683,6 +674,10 @@ function openMailbox(mailbox, reload) {
|
||||
configureDraggables();
|
||||
Mailer.currentMailbox = mailbox;
|
||||
|
||||
if (!getUnseenCountForAllFolders && Mailer.unseenCountMailboxes.indexOf(mailbox) == -1) {
|
||||
Mailer.unseenCountMailboxes.push(mailbox);
|
||||
}
|
||||
|
||||
// Restore previous selection
|
||||
var currentMessage = Mailer.currentMessages[mailbox];
|
||||
if (currentMessage) {
|
||||
@@ -740,33 +735,36 @@ function messageListCallback(row, data, isNew) {
|
||||
}
|
||||
}
|
||||
|
||||
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,
|
||||
Mailer.currentMailbox);
|
||||
}
|
||||
|
||||
function statusFoldersCallback(http) {
|
||||
var div = $('mailboxContent');
|
||||
var table = $('messageList');
|
||||
|
||||
if (http.status == 200) {
|
||||
document.statusFoldersAjaxRequest = null;
|
||||
var data = http.responseText.evalJSON(true);
|
||||
var node = mailboxTree.getMailboxNode(http.callbackData);
|
||||
function refreshUnseenCounts() {
|
||||
for (var i = 0; i < Mailer.unseenCountMailboxes.length; i++) {
|
||||
var mailboxPath = Mailer.unseenCountMailboxes[i];
|
||||
var node = mailboxTree.getMailboxNode(mailboxPath);
|
||||
if (node) {
|
||||
updateStatusFolders(node, data.unseen, false);
|
||||
getUnseenCountForFolder(mailboxPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function updateStatusFolders(node, count, isDelta) {
|
||||
function getUnseenCountForFolder(mailbox) {
|
||||
var url = ApplicationBaseURL + encodeURI(mailbox) + '/unseenCount';
|
||||
triggerAjaxRequest(url, unseenCountCallback, mailbox);
|
||||
}
|
||||
|
||||
function unseenCountCallback(http) {
|
||||
var div = $('mailboxContent');
|
||||
var table = $('messageList');
|
||||
|
||||
if (http.status == 200) {
|
||||
document.unseenCountAjaxRequest = null;
|
||||
var data = http.responseText.evalJSON(true);
|
||||
var node = mailboxTree.getMailboxNode(http.callbackData);
|
||||
if (node) {
|
||||
updateUnseenCount(node, data.unseen, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function updateUnseenCount(node, count, isDelta) {
|
||||
var unseenSpan = null;
|
||||
var counterSpan = null;
|
||||
|
||||
@@ -775,7 +773,6 @@ function updateStatusFolders(node, count, isDelta) {
|
||||
counterSpan = spans[0];
|
||||
unseenSpan = counterSpan.parentNode;
|
||||
}
|
||||
|
||||
if (counterSpan) {
|
||||
if (typeof(count) == "undefined" || isDelta) {
|
||||
if (typeof(count) == "undefined") {
|
||||
@@ -788,18 +785,25 @@ function updateStatusFolders(node, count, isDelta) {
|
||||
content += cNode.nodeValue;
|
||||
}
|
||||
}
|
||||
count += parseInt(content.replace(/[()]/, "", "g"));
|
||||
var digits = "";
|
||||
for (var i = 0; i < content.length; i++) {
|
||||
var code = content.charCodeAt(i);
|
||||
if (code > 47 && code < 58) {
|
||||
digits += content[i];
|
||||
}
|
||||
}
|
||||
count += parseInt(digits);
|
||||
}
|
||||
while (counterSpan.firstChild) {
|
||||
counterSpan.removeChild(counterSpan.firstChild);
|
||||
}
|
||||
counterSpan.appendChild(document.createTextNode(" (" + count + ")"));
|
||||
if (count > 0) {
|
||||
counterSpan.setStyle({ display: "inline" });
|
||||
counterSpan.removeClassName("hidden");
|
||||
unseenSpan.addClassName("unseen");
|
||||
}
|
||||
else {
|
||||
counterSpan.setStyle({ display: "none" });
|
||||
counterSpan.addClassName("hidden");
|
||||
unseenSpan.removeClassName("unseen");
|
||||
}
|
||||
}
|
||||
@@ -1689,18 +1693,6 @@ function initMailer(event) {
|
||||
sorting["ascending"] = false;
|
||||
}
|
||||
|
||||
// Define columns order
|
||||
if (typeof UserDefaults["SOGoMailListViewColumnsOrder"] == "undefined") {
|
||||
var defaultColumnsOrder;
|
||||
if (typeof textDefaultColumnsOrder != 'undefined') {
|
||||
if (textDefaultColumnsOrder.length > 0)
|
||||
defaultColumnsOrder = textDefaultColumnsOrder.evalJSON(true);
|
||||
else
|
||||
defaultColumnsOrder = new Array();
|
||||
}
|
||||
UserDefaults["SOGoMailListViewColumnsOrder"] = defaultColumnsOrder;
|
||||
}
|
||||
|
||||
if (!$(document.body).hasClassName("popup")) {
|
||||
//initDnd();
|
||||
|
||||
@@ -1759,6 +1751,7 @@ function initMessageCheckTimer() {
|
||||
|
||||
function onMessageCheckCallback(event) {
|
||||
refreshMailbox();
|
||||
refreshUnseenCounts();
|
||||
}
|
||||
|
||||
function initMailboxTree() {
|
||||
@@ -1796,10 +1789,16 @@ function initMailboxTree() {
|
||||
function initMailboxTreeCB() {
|
||||
updateMailboxTreeInPage();
|
||||
updateMailboxMenus();
|
||||
getStatusFolders();
|
||||
checkAjaxRequestsState();
|
||||
getFoldersState();
|
||||
configureDroppables();
|
||||
if (getUnseenCountForAllFolders) {
|
||||
for (var i = 0; i < mailboxTree.aNodes.length; i++) {
|
||||
var mailboxPath = mailboxTree.aNodes[i].dataname;
|
||||
Mailer.unseenCountMailboxes.push(mailboxPath);
|
||||
}
|
||||
refreshUnseenCounts();
|
||||
}
|
||||
}
|
||||
|
||||
function onLoadMailboxesCallback(http) {
|
||||
@@ -1811,8 +1810,9 @@ function onLoadMailboxesCallback(http) {
|
||||
accounts[accountIdx] = newAccount;
|
||||
mailboxTree.addMailAccount(newAccount);
|
||||
}
|
||||
else
|
||||
else {
|
||||
log ("onLoadMailboxesCallback " + http.status);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2517,7 +2517,6 @@ Mailbox.prototype = {
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
function configureDraggables () {
|
||||
var mainElement = $("dragDropVisual");
|
||||
Draggables.empty ();
|
||||
|
||||
Reference in New Issue
Block a user