From bba25299f8d1569f560fc66f82837c95145ee121 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Thu, 22 Sep 2011 03:49:33 -0400 Subject: [PATCH] - Fix bug where after delete message rows can be added to the list of another folder (#1487752) --- program/js/app.js | 64 ++++++++++++++++++++++--------- 1 files changed, 45 insertions(+), 19 deletions(-) diff --git a/program/js/app.js b/program/js/app.js index 52b3f60..a9fbe98 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -1641,6 +1641,10 @@ if (!this.gui_objects.messagelist || !this.message_list) return false; + // Prevent from adding messages from different folder (#1487752) + if (flags.mbox != this.env.mailbox && !flags.skip_mbox_check) + return false; + if (!this.env.messages[uid]) this.env.messages[uid] = {}; @@ -2091,8 +2095,12 @@ }; // Initializes threads indicators/expanders after list update - this.init_threads = function(roots) + this.init_threads = function(roots, mbox) { + // #1487752 + if (mbox && mbox != this.env.mailbox) + return false; + for (var n=0, len=roots.length; n<len; n++) this.add_tree_icons(roots[n]); this.expand_threads(); @@ -3619,6 +3627,8 @@ if (q == this.ksearch_value) return; + this.ksearch_destroy(); + if (q.length && q.length < min) { if (!this.ksearch_info) { this.ksearch_info = this.display_message( @@ -3629,7 +3639,6 @@ var old_value = this.ksearch_value; this.ksearch_value = q; - this.ksearch_destroy(); // ...string is empty if (!q.length) @@ -3671,7 +3680,9 @@ return; // display search results - var p, ul, li, text, init, s_val = this.ksearch_value, + var ul, li, text, init, + value = this.ksearch_value, + data = this.ksearch_data, maxlen = this.env.autocomplete_max ? this.env.autocomplete_max : 15; // create results pane if not present @@ -3704,7 +3715,7 @@ for (i=0; i < results.length && maxlen > 0; i++) { text = typeof results[i] === 'object' ? results[i].name : results[i]; li = document.createElement('LI'); - li.innerHTML = text.replace(new RegExp('('+RegExp.escape(s_val)+')', 'ig'), '##$1%%').replace(/</g, '<').replace(/>/g, '>').replace(/##([^%]+)%%/g, '<b>$1</b>'); + li.innerHTML = text.replace(new RegExp('('+RegExp.escape(value)+')', 'ig'), '##$1%%').replace(/</g, '<').replace(/>/g, '>').replace(/##([^%]+)%%/g, '<b>$1</b>'); li.onmouseover = function(){ ref.ksearch_select(this); }; li.onmouseup = function(){ ref.ksearch_click(this) }; li._rcm_id = this.env.contacts.length + i; @@ -3726,20 +3737,24 @@ this.env.contacts = this.env.contacts.concat(results); // run next parallel search - if (this.ksearch_data.id == reqid) { - if (maxlen > 0 && this.ksearch_data.sources.length) { - var lock, xhr, props = this.ksearch_data, source = props.sources.shift(); + if (data.id == reqid) { + if (maxlen > 0 && data.sources.length) { + var lock, xhr, source = data.sources.shift(); if (source) { lock = this.display_message(this.get_label('searching'), 'loading'); - xhr = this.http_post(props.action, '_search='+urlencode(s_val)+'&_id='+reqid + xhr = this.http_post(data.action, '_search='+urlencode(value)+'&_id='+reqid +'&_source='+urlencode(source), lock); this.ksearch_data.locks.push(lock); this.ksearch_data.requests.push(xhr); } } - else if (!maxlen && !this.ksearch_msg) - this.ksearch_msg = this.display_message(this.get_label('autocompletemore')); + else if (!maxlen) { + if (!this.ksearch_msg) + this.ksearch_msg = this.display_message(this.get_label('autocompletemore')); + // abort pending searches + this.ksearch_abort(); + } } }; @@ -3772,16 +3787,10 @@ this.ksearch_destroy(); }; - // Aborts pending autocomplete requests + // Clears autocomplete data/requests this.ksearch_destroy = function() { - var i, len, ac = this.ksearch_data; - - if (!ac) - return; - - for (i=0, len=ac.locks.length; i<len; i++) - this.abort_request({request: ac.requests[i], lock: ac.locks[i]}); + this.ksearch_abort(); if (this.ksearch_info) this.hide_message(this.ksearch_info); @@ -3793,6 +3802,19 @@ this.ksearch_info = null; this.ksearch_msg = null; } + + // Aborts pending autocomplete requests + this.ksearch_abort = function() + { + var i, len, ac = this.ksearch_data; + + if (!ac) + return; + + for (i=0, len=ac.locks.length; i<len; i++) + this.abort_request({request: ac.requests[i], lock: ac.locks[i]}); + }; + /*********************************************************/ /********* address book methods *********/ @@ -5449,8 +5471,12 @@ }; // replace content of row count display - this.set_rowcount = function(text) + this.set_rowcount = function(text, mbox) { + // #1487752 + if (mbox && mbox != this.env.mailbox) + return false; + $(this.gui_objects.countdisplay).html(text); // update page navigation buttons -- Gitblit v1.9.1