From 5e9a5661011e64423e1978599c56d47f8b0cfa37 Mon Sep 17 00:00:00 2001 From: thomascube Date: Tue, 2 Mar 2010 07:54:11 +0000 Subject: Fix checking for new mail (#1485794) --- CHANGELOG | 1 + program/js/app.js | 26 ++++++++++++++------------ program/steps/mail/check_recent.inc | 11 +++++++++++ 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 0835e93ef..8894fe57d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ CHANGELOG RoundCube Webmail =========================== +- Fix checking for new mail: now checks unseen count of inbox (#1485794) - Improve performance by avoiding unnecessary updates to the session table (#1486325) - Fix invalid tags which cause HTML message rendering problems (#1486521) - Fix CVE-2010-0464: Disable DNS prefetching (#1486449) diff --git a/program/js/app.js b/program/js/app.js index c5bac8554..dee34b5a0 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -624,8 +624,8 @@ function rcube_webmail() if (this.env.sort_col==sort_col) sort_order = this.env.sort_order=='ASC' ? 'DESC' : 'ASC'; else - sort_order = 'ASC'; - + sort_order = 'ASC'; + // set table header class $('#rcm'+this.env.sort_col).removeClass('sorted'+(this.env.sort_order.toUpperCase())); $('#rcm'+sort_col).addClass('sorted'+sort_order); @@ -1618,8 +1618,8 @@ function rcube_webmail() this.env.current_page = 1; this.set_busy(true, 'searching'); this.http_request('search', '_filter='+filter - + (search ? '&_q='+urlencode(search) : '') - + (this.env.mailbox ? '&_mbox='+urlencode(this.env.mailbox) : ''), true); + + (search ? '&_q='+urlencode(search) : '') + + (this.env.mailbox ? '&_mbox='+urlencode(this.env.mailbox) : ''), true); } @@ -4260,8 +4260,8 @@ function rcube_webmail() case 'moveto': if (this.env.action == 'show') { - // re-enable commands on move/delete error - this.enable_command('reply', 'reply-all', 'forward', 'delete', 'mark', 'print', 'open', 'edit', 'viewsource', 'download', true); + // re-enable commands on move/delete error + this.enable_command('reply', 'reply-all', 'forward', 'delete', 'mark', 'print', 'open', 'edit', 'viewsource', 'download', true); } else if (this.message_list) this.message_list.init(); break; @@ -4274,8 +4274,8 @@ function rcube_webmail() this.show_contentframe(false); // disable commands useless when mailbox is empty this.enable_command('show', 'reply', 'reply-all', 'forward', 'moveto', 'delete', - 'mark', 'viewsource', 'open', 'edit', 'download', 'print', 'load-attachment', - 'purge', 'expunge', 'select-all', 'select-none', 'sort', false); + 'mark', 'viewsource', 'open', 'edit', 'download', 'print', 'load-attachment', + 'purge', 'expunge', 'select-all', 'select-none', 'sort', false); } break; @@ -4321,16 +4321,18 @@ function rcube_webmail() }; // send periodic request to check for recent messages - this.check_for_recent = function(setbusy) + this.check_for_recent = function(refresh) { if (this.busy) return; - if (setbusy) - this.set_busy(true, 'checkingmail'); - var addurl = '_t=' + (new Date().getTime()); + if (refresh) { + this.set_busy(true, 'checkingmail'); + addurl += '&_refresh=1'; + } + if (this.gui_objects.messagelist) addurl += '&_list=1'; if (this.gui_objects.quotadisplay) diff --git a/program/steps/mail/check_recent.inc b/program/steps/mail/check_recent.inc index 753304018..4ae6ad2be 100644 --- a/program/steps/mail/check_recent.inc +++ b/program/steps/mail/check_recent.inc @@ -22,6 +22,17 @@ $a_mailboxes = $IMAP->list_mailboxes(); $check_all = (bool)$RCMAIL->config->get('check_all_folders'); +// check if unread count of INBOX changed and refresh message list if so +if (!empty($_GET['_refresh'])) { + $unread_count = $IMAP->messagecount('INBOX', 'UNSEEN', TRUE); + if ($unread_count > $_SESSION['unseen_count']['INBOX']) { + $OUTPUT->command('set_unread_count', 'INBOX', $unread_count, true); + $OUTPUT->command('list_mailbox', 'INBOX', 1); // let the client switch to INBOX and get the message list + $OUTPUT->send(); + } +} + +// check recent/unseen counts for all mailboxes foreach ($a_mailboxes as $mbox_name) { if ($mbox_name == $IMAP->get_mailbox_name()) { if ($recent_count = $IMAP->messagecount(NULL, 'RECENT', TRUE)) { -- cgit v1.2.3