diff options
author | Aleksander Machniak <alec@alec.pl> | 2014-06-03 12:17:39 +0200 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2014-06-03 12:17:39 +0200 |
commit | d28daec9181534aea9520906bd3b660dad3f2bb0 (patch) | |
tree | a79c46af9019d69b7255c5458ea617ac52f87057 /program/js | |
parent | bf743b7681f24c5128c7ceb9c8176a0ab15fa169 (diff) |
Fix so message list and counters are updated when a message is opened in new window (#1489919)
Diffstat (limited to 'program/js')
-rw-r--r-- | program/js/app.js | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/program/js/app.js b/program/js/app.js index 45e4c3b14..124079938 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -2115,20 +2115,38 @@ function rcube_webmail() this.location_href(this.env.comm_path+url, target, true); // mark as read and change mbox unread counter - if (preview && this.message_list && this.message_list.rows[id] && this.message_list.rows[id].unread && this.env.preview_pane_mark_read >= 0) { + if (preview && this.message_list && this.message_list.rows[id] && this.message_list.rows[id].unread && this.env.preview_pane_mark_read > 0) { this.preview_read_timer = setTimeout(function() { - ref.set_message(id, 'unread', false); - if (ref.env.unread_counts[ref.env.mailbox]) { - ref.env.unread_counts[ref.env.mailbox] -= 1; - ref.set_unread_count(ref.env.mailbox, ref.env.unread_counts[ref.env.mailbox], ref.env.mailbox == 'INBOX'); - } - if (ref.env.preview_pane_mark_read > 0) - ref.http_post('mark', {_uid: id, _flag: 'read', _quiet: 1}); + ref.set_unread_message(id, ref.env.mailbox); + ref.http_post('mark', {_uid: id, _flag: 'read', _quiet: 1}); }, this.env.preview_pane_mark_read * 1000); } } }; + // update message status and unread counter after marking a message as read + this.set_unread_message = function(id, folder) + { + var self = this; + + // find window with messages list + if (!self.message_list) + self = self.opener(); + + if (!self && window.parent) + self = parent.rcmail; + + if (!self || !self.message_list) + return; + + self.set_message(id, 'unread', false); + + if (self.env.unread_counts[folder] > 0) { + self.env.unread_counts[folder] -= 1; + self.set_unread_count(folder, self.env.unread_counts[folder], folder == 'INBOX'); + } + }; + this.show_contentframe = function(show) { var frame, win, name = this.env.contentframe; |