diff options
Diffstat (limited to 'program/js/app.js')
-rw-r--r-- | program/js/app.js | 63 |
1 files changed, 29 insertions, 34 deletions
diff --git a/program/js/app.js b/program/js/app.js index ba71518b2..590998f28 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -1797,13 +1797,13 @@ function rcube_webmail() lock = true; this.set_busy(true, 'movingmessage'); } - else if (!this.env.flag_for_deletion) + else this.show_contentframe(false); // Hide message command buttons until a message is selected this.enable_command('reply', 'reply-all', 'forward', 'delete', 'mark', 'print', 'open', 'viewsource', 'download', false); - this._with_selected_messages('moveto', lock, add_url, (this.env.flag_for_deletion ? false : true)); + this._with_selected_messages('moveto', lock, add_url); }; // delete selected messages from the current mailbox @@ -1815,9 +1815,14 @@ function rcube_webmail() if (!this.env.uid && !selection.length) return; - // if there is a trash mailbox defined and we're not currently in it: - if (this.env.trash_mailbox && String(this.env.mailbox).toLowerCase() != String(this.env.trash_mailbox).toLowerCase()) - { + // if config is set to flag for deletion + if (this.env.flag_for_deletion) + this.mark_message('delete'); + // if there isn't a defined trash mailbox or we are in it + else if (!this.env.trash_mailbox || String(this.env.mailbox).toLowerCase() == String(this.env.trash_mailbox).toLowerCase()) + this.permanently_remove_messages(); + // if there is a trash mailbox defined and we're not currently in it + else { // if shift was pressed delete it immediately if (this.message_list && this.message_list.shiftkey) { @@ -1827,21 +1832,6 @@ function rcube_webmail() else this.move_messages(this.env.trash_mailbox); } - // if there is a trash mailbox defined but we *are* in it: - else if (this.env.trash_mailbox && String(this.env.mailbox).toLowerCase() == String(this.env.trash_mailbox).toLowerCase()) - this.permanently_remove_messages(); - // if there isn't a defined trash mailbox and the config is set to flag for deletion - else if (!this.env.trash_mailbox && this.env.flag_for_deletion) - { - this.mark_message('delete'); - if (this.env.action == 'show') - this.command('nextmessage', '', this); - else if (selection.length == 1) - this.message_list.select_next(); - } - // if there isn't a defined trash mailbox and the config is set NOT to flag for deletion - else if (!this.env.trash_mailbox) - this.permanently_remove_messages(); }; // delete the selected messages permanently @@ -1852,7 +1842,7 @@ function rcube_webmail() return; this.show_contentframe(false); - this._with_selected_messages('delete', false, '&_from='+(this.env.action ? this.env.action : ''), true); + this._with_selected_messages('delete', false, '&_from='+(this.env.action ? this.env.action : '')); }; // Send a specifc request with UIDs of all selected messages @@ -1872,16 +1862,7 @@ function rcube_webmail() { id = selection[n]; a_uids[a_uids.length] = id; - - if (remove) - this.message_list.remove_row(id, (n == selection.length-1)); - else - { - this.set_message_status(id, 'deleted', true); - if (this.env.read_when_deleted) - this.set_message_status(id, 'unread', false); - this.set_message(id); - } + this.message_list.remove_row(id, (n == selection.length-1)); } } @@ -2029,15 +2010,29 @@ function rcube_webmail() uid = a_uids[i]; if (rows[uid]) { - this.set_message(uid, 'deleted', true); if (rows[uid].unread) r_uids[r_uids.length] = uid; + + if (this.env.skip_deleted) + this.message_list.remove_row(uid, (i == this.message_list.selection.length-1)); + else + this.set_message(uid, 'deleted', true); } } + add_url = '&_from='+(this.env.action ? this.env.action : ''); + if (r_uids.length) - add_url = '&_ruid='+r_uids.join(','); - + add_url += '&_ruid='+r_uids.join(','); + + if (this.env.skip_deleted) { + // also send search request to get the right messages + if (this.env.search_request) + add_url += '&_search='+this.env.search_request; + if (this.env.next_uid) + add_url += '&_next_uid='+this.env.next_uid; + } + this.http_post('mark', '_uid='+a_uids.join(',')+'&_flag=delete'+add_url); return true; }; |