From bf2f39ea6d2b49c7495a43cca19ab18f27f8292e Mon Sep 17 00:00:00 2001 From: alecpl Date: Mon, 29 Sep 2008 13:02:02 +0000 Subject: - #1485290: Fix unread counter when displaying cached massage in preview panel - remove some empty lines in app.js --- CHANGELOG | 1 + program/js/app.js | 134 ++++++++------------------------------------ program/steps/mail/show.inc | 9 +-- 3 files changed, 26 insertions(+), 118 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 2422bb041..8f582c7a2 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,6 +7,7 @@ CHANGELOG RoundCube Webmail long/non-ascii attachment names encoding eg. to be readable in MS Outlook/OE (#1485320) - Added "advanced options" feature in User Preferences +- Fix unread counter when displaying cached massage in preview panel (#1485290) 2008/09/25 (alec) ---------- diff --git a/program/js/app.js b/program/js/app.js index baa66efde..8ba00784f 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -64,14 +64,12 @@ function rcube_webmail() this.env[p] = value; }; - // add a localized label to the client environment this.add_label = function(key, value) { this.labels[key] = value; }; - // add a button to the button list this.register_button = function(command, id, type, act, sel, over) { @@ -339,7 +337,6 @@ function rcube_webmail() break; } - // enable basic commands this.enable_command('logout', true); @@ -353,7 +350,6 @@ function rcube_webmail() // start keep-alive interval this.start_keepalive(); - // execute all foreign onload scripts for (var i=0; i= 0) + this.show_contentframe(true); + else { - var url = '&_action='+action+'&_uid='+id+'&_mbox='+urlencode(this.env.mailbox)+add_url; - if (action == 'preview' && String(target.location.href).indexOf(url) >= 0) - this.show_contentframe(true); - else + this.set_busy(true, 'loading'); + target.location.href = this.env.comm_path+url; + // mark as read and change mbox unread counter + if (action == 'preview' && this.message_list && this.message_list.rows[id] && this.message_list.rows[id].unread) { - this.set_busy(true, 'loading'); - target.location.href = this.env.comm_path+url; - } + this.set_message(id, 'unread', false); + if (this.env.unread_counts[this.env.mailbox]) + { + this.env.unread_counts[this.env.mailbox] -= 1; + this.set_unread_count(this.env.mailbox, this.env.unread_counts[this.env.mailbox], this.env.mailbox == 'INBOX'); + } + } } }; - this.show_contentframe = function(show) { var frm; @@ -1395,7 +1381,6 @@ function rcube_webmail() this.set_busy(false); }; - // list a specific page this.list_page = function(page) { @@ -1419,7 +1404,6 @@ function rcube_webmail() } }; - // list messages of a specific mailbox this.list_mailbox = function(mbox, page, sort) { @@ -1475,7 +1459,6 @@ function rcube_webmail() } }; - // send remote request to load message list this.list_mailbox_remote = function(mbox, page, add_url) { @@ -1488,7 +1471,6 @@ function rcube_webmail() this.http_request('list', url+add_url, true); }; - this.expunge_mailbox = function(mbox) { var lock = false; @@ -1507,7 +1489,6 @@ function rcube_webmail() this.http_post('expunge', url+add_url, lock); }; - this.purge_mailbox = function(mbox) { var lock = false; @@ -1694,7 +1675,6 @@ function rcube_webmail() this.permanently_remove_messages(); }; - // delete the selected messages permanently this.permanently_remove_messages = function() { @@ -1744,7 +1724,6 @@ function rcube_webmail() this.http_post(action, '_uid='+a_uids.join(',')+'&_mbox='+urlencode(this.env.mailbox)+add_url, lock); }; - // set a specific flag to one or more messages this.mark_message = function(flag, uid) { @@ -1858,7 +1837,6 @@ function rcube_webmail() return true; }; - this.flag_as_undeleted = function(a_uids) { for (var i=0; i 1)); } - // set button to a specific state this.set_button = function(command, state) { @@ -3298,7 +3239,6 @@ function rcube_webmail() } }; - // set/unset a specific class name this.set_classname = function(obj, classname, set) { @@ -3309,7 +3249,6 @@ function rcube_webmail() obj.className += ' '+classname; }; - // write to the document/window title this.set_pagetitle = function(title) { @@ -3317,7 +3256,6 @@ function rcube_webmail() document.title = title; } - // display a system message this.display_message = function(msg, type, hold) { @@ -3352,7 +3290,6 @@ function rcube_webmail() this.message_timer = window.setTimeout(function(){ ref.hide_message(); }, this.message_time); }; - // make a message row disapear this.hide_message = function() { @@ -3363,7 +3300,6 @@ function rcube_webmail() } }; - // mark a mailbox as selected and set environment variable this.select_folder = function(name, old) { @@ -3397,7 +3333,6 @@ function rcube_webmail() return null; }; - // for reordering column array, Konqueror workaround this.set_message_coltypes = function(coltypes) { @@ -3511,7 +3446,6 @@ function rcube_webmail() } }; - // replace content of row count display this.set_rowcount = function(text) { @@ -3522,7 +3456,6 @@ function rcube_webmail() this.set_page_buttons(); }; - // replace content of mailboxname display this.set_mailboxname = function(content) { @@ -3537,7 +3470,6 @@ function rcube_webmail() this.gui_objects.quotadisplay.innerHTML = content; }; - // update the mailboxlist this.set_unread_count = function(mbox, count, set_title) { @@ -3548,7 +3480,6 @@ function rcube_webmail() this.set_unread_count_display(mbox, set_title); } - // update the mailbox count display this.set_unread_count_display = function(mbox, set_title) { @@ -3634,7 +3565,6 @@ function rcube_webmail() this.enable_command('export', (this.contact_list.rowcount > 0)); }; - this.toggle_editor = function(checkbox, textAreaId) { var ischecked = checkbox.checked; @@ -3656,7 +3586,6 @@ function rcube_webmail() } }; - this.toggle_prefer_html = function(checkbox) { var addrbook_show_images; @@ -3664,7 +3593,6 @@ function rcube_webmail() addrbook_show_images.disabled = !checkbox.checked; } - // display fetched raw headers this.set_headers = function(content) { @@ -3681,7 +3609,6 @@ function rcube_webmail() } }; - // display all-headers row and fetch raw message headers this.load_headers = function(elem) { @@ -3701,7 +3628,6 @@ function rcube_webmail() } } - // hide all-headers row this.hide_headers = function(elem) { @@ -3762,7 +3688,6 @@ function rcube_webmail() this.redirect(this.env.comm_path+'&_action='+action+querystring, lock); }; - this.http_sockets = new Array(); // find a non-busy socket or create a new one @@ -3781,7 +3706,6 @@ function rcube_webmail() return this.http_sockets[i]; }; - // send a http request to the server this.http_request = function(action, querystring, lock) { @@ -3839,11 +3763,12 @@ function rcube_webmail() this.http_response = function(request_obj) { var ctype = request_obj.get_header('Content-Type'); - if (ctype){ + if (ctype) + { ctype = String(ctype).toLowerCase(); var ctype_array=ctype.split(";"); ctype = ctype_array[0]; - } + } if (request_obj.__lock) this.set_busy(false); @@ -3895,17 +3820,15 @@ function rcube_webmail() else if (this.task == 'addressbook') this.enable_command('export', (this.contact_list && this.contact_list.rowcount > 0)); break; - } + } request_obj.reset(); }; - // handle HTTP request errors this.http_error = function(request_obj) { //alert('Error sending request: '+request_obj.url+' => HTTP '+request_obj.xmlhttp.status); - if (request_obj.__lock) this.set_busy(false); @@ -3914,7 +3837,6 @@ function rcube_webmail() this.display_message('Unknown Server Error!', 'error'); }; - // use an image to send a keep-alive siganl to the server this.send_keep_alive = function() { @@ -3922,7 +3844,6 @@ function rcube_webmail() this.http_request('keep-alive', '_t='+d.getTime()); }; - // send periodic request to check for recent messages this.check_for_recent = function() { @@ -3979,7 +3900,6 @@ function rcube_webmail() return obj.value.length; }; - this.set_caret2start = function(obj) { if (obj.createTextRange) @@ -3994,7 +3914,6 @@ function rcube_webmail() obj.focus(); }; - // set all fields of a form disabled this.lock_form = function(form, lock) { @@ -4015,7 +3934,6 @@ function rcube_webmail() } // end object rcube_webmail - /** * Class for sending HTTP requests * @constructor @@ -4026,7 +3944,6 @@ function rcube_http_request() this.busy = false; this.xmlhttp = null; - // reset object properties this.reset = function() { @@ -4043,7 +3960,6 @@ function rcube_http_request() this.xmlhttp = null; } - // create HTMLHTTP object this.build = function() { @@ -4081,7 +3997,6 @@ function rcube_http_request() this.xmlhttp.send(null); }; - this.POST = function(url, body, contentType) { // default value for contentType if not provided @@ -4115,7 +4030,6 @@ function rcube_http_request() this.xmlhttp.send(req_body); }; - // handle onreadystatechange event this.xmlhttp_onreadystatechange = function() { diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc index e5ea85791..c9999f3aa 100644 --- a/program/steps/mail/show.inc +++ b/program/steps/mail/show.inc @@ -67,14 +67,7 @@ if ($_GET['_uid']) { // mark message as read if (!$MESSAGE->headers->seen) - { - $marked = $IMAP->set_flag($MESSAGE->uid, 'SEEN'); - if($RCMAIL->action == 'preview' && $marked != -1) - { - $OUTPUT->command('parent.set_unread_count', $mbox_name, $IMAP->messagecount($mbox_name, 'UNSEEN'), ($mbox_name == 'INBOX')); - $OUTPUT->command('parent.set_message', $MESSAGE->uid, 'unread', false); - } - } + $IMAP->set_flag($MESSAGE->uid, 'SEEN'); // give message uid to the client $OUTPUT->set_env('uid', $MESSAGE->uid); -- cgit v1.2.3