diff --git a/contextmenu_folder.js b/contextmenu_folder.js index a846925..c995938 100644 --- a/contextmenu_folder.js +++ b/contextmenu_folder.js @@ -1,4 +1,4 @@ -// Plugin: contextmenu_folder +// Plugin: contextmenu_folder // Roundcube Context Menu Folder Manager // Adds context menus with mailbox operations @@ -18,6 +18,9 @@ function plugin_contextmenu_folder() { // mailbox full path this.selected_folder = null; + this.initial_mailbox = rcmail.env ? rcmail.env.mailbox : null; + this.initial_uid = rcmail.env ? rcmail.env.uid : null; + // message imap uid this.selected_message = null; @@ -1162,12 +1165,24 @@ plugin_contextmenu_folder.prototype.initialize = function initialize() { window.setTimeout(function remember_mailbox() { self.log('...'); if (self.has_feature('remember_mailbox')) { - self.mbox_locate(self.env('memento_current_mailbox')); + var memento = self.env('memento_current_mailbox'); + var is_initial = rcmail.env.mailbox == self.initial_mailbox; + var is_entry = !(/[?&]_mbox=/.test(window.location.search)) && !(/[?&]_action=/.test(window.location.search)); + var is_inbox = !rcmail.env.mailbox || rcmail.env.mailbox == 'INBOX'; + if (memento && memento != 'INBOX' && is_inbox && is_initial && is_entry) { + self.mbox_locate(memento); + } } window.setTimeout(function remember_message() { self.log('...'); if (self.has_feature('remember_message')) { - self.mesg_locate(self.env('memento_current_message')); + var memento_msg = self.env('memento_current_message'); + var is_initial_msg = rcmail.env.uid == self.initial_uid; + var is_entry_msg = !(/[?&]_uid=/.test(window.location.search)) && !(/[?&]_action=/.test(window.location.search)); + var is_no_msg = !rcmail.env.uid; + if (memento_msg && memento_msg != rcmail.env.uid && is_initial_msg && is_entry_msg && is_no_msg) { + self.mesg_locate(memento_msg); + } } }, 500); }, 500); @@ -2466,3 +2481,4 @@ if (window.rcmail && !rcmail.is_framed()) { }); } +