From 3d35312cc4badb64a2c26db8e80c1a01f2d1c12b Mon Sep 17 00:00:00 2001 From: alecpl Date: Sat, 12 Apr 2008 17:37:22 +0000 Subject: - Fixed and optimized 'read_when_deleted': mark as read on server side in one action when marking as deleted, fixed js bugs when deleting from message preview page --- CHANGELOG | 6 ++ program/include/main.inc | 2 +- program/js/app.js | 135 +++++++++++++++++++++++++++----------------- program/steps/mail/mark.inc | 9 +++ 4 files changed, 100 insertions(+), 52 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 00502abd4..f44f16e2b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,12 @@ CHANGELOG RoundCube Webmail --------------------------- +2008/04/12 (alec) +---------- +- Fixed and optimized 'read_when_deleted': mark as read on server side + in one action when marking as deleted, fixed js bugs when deleting + from message preview page + 2008/04/12 (thomasb) ---------- - Changed codebase to PHP5 with autoloader diff --git a/program/include/main.inc b/program/include/main.inc index 6d548d8e5..09a53f0ad 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -465,7 +465,7 @@ function rcmail_load_gui() $OUTPUT = new rcube_template($CONFIG, $GLOBALS['_task']); $OUTPUT->set_env('comm_path', $GLOBALS['COMM_PATH']); - foreach (array('read_when_deleted', 'flag_for_deletion') as $js_config_var) + foreach (array('flag_for_deletion') as $js_config_var) $OUTPUT->set_env($js_config_var, $CONFIG[$js_config_var]); if (!empty($GLOBALS['_framed'])) diff --git a/program/js/app.js b/program/js/app.js index a62d8d8ec..3ed681719 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -1407,7 +1407,7 @@ function rcube_webmail() this.delete_messages = function() { var selection = this.message_list ? this.message_list.get_selection() : new Array(); - + // exit if no mailbox specified or if selection is empty if (!this.env.uid && !selection.length) return; @@ -1458,8 +1458,9 @@ function rcube_webmail() this._with_selected_messages = function(action, lock, add_url) { var a_uids = new Array(); + if (this.env.uid) - a_uids[a_uids.length] = this.env.uid; + a_uids[0] = this.env.uid; else { var selection = this.message_list.get_selection(); @@ -1468,10 +1469,11 @@ function rcube_webmail() { id = selection[n]; a_uids[a_uids.length] = id; + this.message_list.remove_row(id, (n == selection.length-1)); } } - + // also send search request to get the right messages if (this.env.search_request) add_url += '&_search='+this.env.search_request; @@ -1487,20 +1489,23 @@ function rcube_webmail() var a_uids = new Array(); var r_uids = new Array(); var selection = this.message_list ? this.message_list.get_selection() : new Array(); - + if (uid) a_uids[0] = uid; else if (this.env.uid) a_uids[0] = this.env.uid; else if (this.message_list) { - for (var id, n=0; n 0)); - this.enable_command('purge', (this.env.messagecount && (this.env.mailbox==this.env.trash_mailbox || this.env.mailbox==this.env.junk_mailbox))); - break; + this.enable_command('show', 'expunge', 'select-all', 'select-none', 'sort', (this.env.messagecount > 0)); + this.enable_command('purge', (this.env.messagecount && (this.env.mailbox==this.env.trash_mailbox || this.env.mailbox==this.env.junk_mailbox))); + + break; } diff --git a/program/steps/mail/mark.inc b/program/steps/mail/mark.inc index 53194b5ab..830f1fe3d 100644 --- a/program/steps/mail/mark.inc +++ b/program/steps/mail/mark.inc @@ -29,6 +29,15 @@ if (($uids = get_input_value('_uid', RCUBE_INPUT_POST)) && ($flag = get_input_va $flag = $a_flags_map[$flag] ? $a_flags_map[$flag] : strtoupper($flag); $marked = $IMAP->set_flag($uids, $flag); + if($flag == 'DELETED' && $CONFIG['read_when_deleted'] && !empty($_POST['_ruid'])) + { + $uids = get_input_value('_ruid', RCUBE_INPUT_POST); + $read = $IMAP->set_flag($uids, 'SEEN'); + + if ($read != -1) + $OUTPUT->command('flag_deleted_as_read', $uids); + } + if ($marked != -1) { $mbox_name = $IMAP->get_mailbox_name(); -- cgit v1.2.3