Monotone-Parent: cb1d74d035f8c46647e14a3dc3710870fa6cb470
Monotone-Revision: ed475bdcf9178f4b14adb2a2ccdb6dce3cd288fd Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2006-07-31T20:24:50 Monotone-Branch: ca.inverse.sogomaint-2.0.2
parent
962b897c47
commit
7532e6a518
16
ChangeLog
16
ChangeLog
|
@ -1,5 +1,21 @@
|
|||
2006-07-31 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
|
||||
* UI/WebServerResources/MailerUI.js:
|
||||
- message cache: set the max num of cached messages to 20. Limit
|
||||
the cached message size to 30000 bytes.
|
||||
- ajax: when a message request is called while one is already
|
||||
being performed, the latter will be cancelled. Idem when
|
||||
retrieving the content of a mailbox.
|
||||
- folder tree: when a mailbox is selected because of the URL
|
||||
requested (initMailboxSelection), the dtree is expanded throughout
|
||||
the mailbox entry's parent hierarchy to ensure it is made visible
|
||||
when the page is being displayed. (new function: expandUpperTree).
|
||||
- mailbox loading: when loading a mailbox where a message was
|
||||
previously selected, we invoke its url with the "pageforuid"
|
||||
parameter correctly specified. During callback processing, we scan
|
||||
the table for the related row and reselect it.
|
||||
Also, the message area is set blank before loading any mailbox.
|
||||
|
||||
* UI/MailerUI/UIxMailListView.m ([UIxMailListView
|
||||
-defaultAction]): if the "pageforuid" parameter is passed in the
|
||||
url, take its value and invoke [self firstMessageOfPageFor:]
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
*/
|
||||
|
||||
var currentMessages = new Array();
|
||||
var maxCachedMessages = 10;
|
||||
var maxCachedMessages = 20;
|
||||
var cachedMessages = new Array();
|
||||
var currentMailbox = '';
|
||||
/* mail list */
|
||||
|
@ -309,7 +309,8 @@ function reopenToRemoveLocationBar() {
|
|||
|
||||
/* mail list reply */
|
||||
|
||||
function openMessageWindowsForSelection(sender, action) {
|
||||
function openMessageWindowsForSelection(sender, action)
|
||||
{
|
||||
var rows = collectSelectedRows();
|
||||
var idset = "";
|
||||
|
||||
|
@ -320,7 +321,8 @@ function openMessageWindowsForSelection(sender, action) {
|
|||
}
|
||||
}
|
||||
|
||||
function mailListMarkMessage(sender, action, msguid, markread) {
|
||||
function mailListMarkMessage(sender, action, msguid, markread)
|
||||
{
|
||||
var url;
|
||||
var http = createHTTPClient();
|
||||
|
||||
|
@ -443,8 +445,10 @@ function triggerAjaxRequest(url, callback, userdata) {
|
|||
try {
|
||||
if (http.readyState == 4
|
||||
&& activeAjaxRequests > 0) {
|
||||
http.callbackData = userdata;
|
||||
callback(http);
|
||||
if (!http.aborted) {
|
||||
http.callbackData = userdata;
|
||||
callback(http);
|
||||
}
|
||||
activeAjaxRequests -= 1;
|
||||
checkAjaxRequestsState();
|
||||
}
|
||||
|
@ -460,8 +464,7 @@ function triggerAjaxRequest(url, callback, userdata) {
|
|||
http.send("");
|
||||
}
|
||||
|
||||
// window.alert('should open ' + mailbox);
|
||||
return false;
|
||||
return http;
|
||||
}
|
||||
|
||||
function checkAjaxRequestsState()
|
||||
|
@ -507,14 +510,32 @@ function openMailbox(mailbox)
|
|||
var mailboxContent = document.getElementById("mailboxContent");
|
||||
var mailboxDragHandle = document.getElementById("mailboxDragHandle");
|
||||
var messageContent = document.getElementById("messageContent");
|
||||
messageContent.innerHTML = '';
|
||||
if (mailbox.lastIndexOf("/") == 0) {
|
||||
var url = (ApplicationBaseURL + currentMailbox + "/"
|
||||
+ "/view?noframe=1");
|
||||
if (document.messageAjaxRequest) {
|
||||
document.messageAjaxRequest.aborted = true;
|
||||
document.messageAjaxRequest.abort();
|
||||
}
|
||||
document.messageAjaxRequest
|
||||
= triggerAjaxRequest(url, messageCallback);
|
||||
mailboxContent.innerHTML = '';
|
||||
mailboxContent.style.visibility = "hidden;";
|
||||
mailboxDragHandle.style.visibility = "hidden;";
|
||||
messageContent.style.top = "0px;";
|
||||
var url = (ApplicationBaseURL + currentMailbox + "/"
|
||||
+ "/view?noframe=1");
|
||||
triggerAjaxRequest(url, messageCallback);
|
||||
} else {
|
||||
if (document.messageListAjaxRequest) {
|
||||
document.messageListAjaxRequest.aborted = true;
|
||||
document.messageListAjaxRequest.abort();
|
||||
}
|
||||
if (currentMessages[mailbox]) {
|
||||
loadMessage(currentMessages[mailbox]);
|
||||
url += '&pageforuid=' + currentMessages[mailbox];
|
||||
}
|
||||
document.messageListAjaxRequest
|
||||
= triggerAjaxRequest(url, messageListCallback,
|
||||
currentMessages[mailbox]);
|
||||
if (mailboxContent.style.visibility == "hidden") {
|
||||
mailboxContent.style.visibility = "visible;";
|
||||
mailboxDragHandle.style.visibility = "visible;";
|
||||
|
@ -522,12 +543,6 @@ function openMailbox(mailbox)
|
|||
+ mailboxDragHandle.offsetHeight
|
||||
+ 'px;');
|
||||
}
|
||||
triggerAjaxRequest(url, messageListCallback);
|
||||
if (currentMessages[mailbox]) {
|
||||
loadMessage(currentMessages[mailbox]);
|
||||
} else {
|
||||
messageContent.innerHTML = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
// triggerAjaxRequest(mailbox, 'toolbar', toolbarCallback);
|
||||
|
@ -536,20 +551,28 @@ function openMailbox(mailbox)
|
|||
function openMailboxAtIndex(element) {
|
||||
var idx = element.getAttribute("idx");
|
||||
var url = ApplicationBaseURL + currentMailbox + "/view?noframe=1&idx=" + idx;
|
||||
log ("url: " + url);
|
||||
triggerAjaxRequest(url, messageListCallback);
|
||||
|
||||
if (document.messageListAjaxRequest) {
|
||||
document.messageListAjaxRequest.aborted = true;
|
||||
document.messageListAjaxRequest.abort();
|
||||
}
|
||||
document.messageListAjaxRequest
|
||||
= triggerAjaxRequest(url, messageListCallback);
|
||||
}
|
||||
|
||||
function messageListCallback(http)
|
||||
{
|
||||
log ('messageListCallback');
|
||||
var div = document.getElementById('mailboxContent');
|
||||
if (http.readyState == 4
|
||||
&& http.status == 200)
|
||||
{
|
||||
log ('displaying result');
|
||||
div.innerHTML = http.responseText;
|
||||
&& http.status == 200) {
|
||||
document.messageListAjaxRequest = null;
|
||||
div.innerHTML = http.responseText;
|
||||
var selected = http.callbackData;
|
||||
if (selected) {
|
||||
var row = document.getElementById('row_' + selected);
|
||||
selectNode(row);
|
||||
}
|
||||
}
|
||||
else
|
||||
log ("ajax fuckage");
|
||||
}
|
||||
|
@ -657,35 +680,43 @@ function loadMessage(idx)
|
|||
{
|
||||
var cachedMessage = getCachedMessage(idx);
|
||||
|
||||
if (document.messageAjaxRequest) {
|
||||
document.messageAjaxRequest.aborted = true;
|
||||
document.messageAjaxRequest.abort();
|
||||
}
|
||||
|
||||
if (cachedMessage == null) {
|
||||
var url = (ApplicationBaseURL + currentMailbox + "/"
|
||||
+ idx + "/view?noframe=1");
|
||||
triggerAjaxRequest(url, messageCallback, idx);
|
||||
document.messageAjaxRequest
|
||||
= triggerAjaxRequest(url, messageCallback, idx);
|
||||
markMailInWindow(window, idx, true);
|
||||
} else {
|
||||
var div = document.getElementById('messageContent');
|
||||
div.innerHTML = cachedMessage['text'];
|
||||
cachedMessage['time'] = (new Date()).getTime();
|
||||
document.messageAjaxRequest = null;
|
||||
}
|
||||
}
|
||||
|
||||
function messageCallback(http)
|
||||
{
|
||||
var div = document.getElementById('messageContent');
|
||||
if (http.readyState == 4
|
||||
&& http.status == 200)
|
||||
{
|
||||
div.innerHTML = http.responseText;
|
||||
|
||||
if (http.callbackData)
|
||||
{
|
||||
var cachedMessage = new Array();
|
||||
cachedMessage['idx'] = currentMailbox + '/' + http.callbackData;
|
||||
cachedMessage['time'] = (new Date()).getTime();
|
||||
cachedMessage['text'] = http.responseText;
|
||||
storeCachedMessage(cachedMessage);
|
||||
}
|
||||
if (http.readyState == 4
|
||||
&& http.status == 200) {
|
||||
document.messageAjaxRequest = null;
|
||||
div.innerHTML = http.responseText;
|
||||
|
||||
if (http.callbackData) {
|
||||
var cachedMessage = new Array();
|
||||
cachedMessage['idx'] = currentMailbox + '/' + http.callbackData;
|
||||
cachedMessage['time'] = (new Date()).getTime();
|
||||
cachedMessage['text'] = http.responseText;
|
||||
if (cachedMessage['text'].length < 30000)
|
||||
storeCachedMessage(cachedMessage);
|
||||
}
|
||||
}
|
||||
else
|
||||
log ("ajax fuckage");
|
||||
}
|
||||
|
@ -893,7 +924,8 @@ function onMenuOpenMessage(event)
|
|||
var msgId = node.getAttribute('id').substr(4);
|
||||
|
||||
openMessageWindow(null, msgId,
|
||||
ApplicationBaseURL + currentMailbox + "/" + msgId + "/view");
|
||||
ApplicationBaseURL + currentMailbox
|
||||
+ "/" + msgId + "/view");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -959,6 +991,26 @@ function newEmailTo(sender) {
|
|||
return false; /* stop following the link */
|
||||
}
|
||||
|
||||
function expandUpperTree(node)
|
||||
{
|
||||
var currentNode = node.parentNode;
|
||||
|
||||
while (currentNode.className != "dtree")
|
||||
{
|
||||
if (currentNode.className == 'clip')
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
currentNode = currentNode.parentNode;
|
||||
}
|
||||
}
|
||||
|
||||
function initMailboxSelection(mailboxName)
|
||||
{
|
||||
currentMailbox = mailboxName;
|
||||
|
@ -975,6 +1027,7 @@ function initMailboxSelection(mailboxName)
|
|||
deselectNode(tree.selectedEntry);
|
||||
selectNode(links[0]);
|
||||
tree.selectedEntry = links[0];
|
||||
expandUpperTree(links[0]);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue