diff --git a/ChangeLog b/ChangeLog index 42add674f..236fd4b74 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2010-07-28 Francis Lachapelle + * UI/WebServerResources/MailerUI.js (deleteCachedMailboxByType, + deletedCachedMailbox): new methods to update the datasources + (mailboxes) cache. + * UI/WebServerResources/UIxComponentEditor.js (getCalendarOwner): new function that returns the event organizer or the calendar owner in case of an event with no organizer yet. diff --git a/UI/WebServerResources/MailerUI.js b/UI/WebServerResources/MailerUI.js index b887f4934..a32c13810 100644 --- a/UI/WebServerResources/MailerUI.js +++ b/UI/WebServerResources/MailerUI.js @@ -548,11 +548,7 @@ function onMailboxMenuMove(event) { } // Remove cache of target data source - var keys = Mailer.dataSources.keys(); - for (var i = 0; i < keys.length; i++) { - if (keys[i] == targetMailbox || keys[i].startsWith(targetMailbox + "?")) - Mailer.dataSources.unset(keys[i]); - } + deleteCachedMailbox(targetMailbox); var url = ApplicationBaseURL + encodeURI(Mailer.currentMailbox) + "/moveMessages"; var parameters = "uid=" + uids.join(",") + "&folder=" + targetMailbox; @@ -583,11 +579,7 @@ function onMailboxMenuCopy(event) { } // Remove cache of target data source - var keys = Mailer.dataSources.keys(); - for (var i = 0; i < keys.length; i++) { - if (keys[i] == targetMailbox || keys[i].startsWith(targetMailbox + "?")) - Mailer.dataSources.unset(keys[i]); - } + deleteCachedMailbox(targetMailbox); var url = ApplicationBaseURL + encodeURI(Mailer.currentMailbox) + "/copyMessages"; var parameters = "uid=" + uids.join(",") + "&folder=" + targetMailbox; @@ -894,6 +886,23 @@ function onFolderMenuHide(event) { topNode.selectedEntry.selectElement(); } +function deleteCachedMailboxByType(type) { + var nodes = $("mailboxTree").select("DIV[datatype=" + type + "]"); + if (nodes.length == 1) + deleteCachedMailbox(nodes[0].readAttribute("dataname")); + + if (Mailer.currentMailboxType == type) + refreshCurrentFolder(); +} + +function deleteCachedMailbox(mailboxPath) { + var keys = Mailer.dataSources.keys(); + for (var i = 0; i < keys.length; i++) { + if (keys[i] == mailboxPath || keys[i].startsWith(mailboxPath + "?")) + Mailer.dataSources.unset(keys[i]); + } +} + function deleteCachedMessage(messageId) { var done = false; var counter = 0; diff --git a/UI/WebServerResources/UIxMailEditor.js b/UI/WebServerResources/UIxMailEditor.js index 790758f75..4451d833a 100644 --- a/UI/WebServerResources/UIxMailEditor.js +++ b/UI/WebServerResources/UIxMailEditor.js @@ -228,6 +228,7 @@ function clickedEditorSave(sender) { if (window.opener && window.opener.open && !window.opener.closed) window.opener.refreshFolderByType('draft'); + return false; } diff --git a/UI/WebServerResources/generic.js b/UI/WebServerResources/generic.js index d8056e0e0..91be90dbc 100644 --- a/UI/WebServerResources/generic.js +++ b/UI/WebServerResources/generic.js @@ -236,8 +236,8 @@ function deleteDraft(url) { function refreshFolderByType(type) { /* this is called by UIxMailEditor with window.opener */ - if (typeof Mailer != 'undefined' && Mailer.currentMailboxType == type) - refreshCurrentFolder(); + if (typeof Mailer != 'undefined') + deleteCachedMailboxByType(type); } function createHTTPClient() {