summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
authorThomas Bruederli <thomas@roundcube.net>2014-01-20 11:41:58 +0100
committerThomas Bruederli <thomas@roundcube.net>2014-01-20 11:41:58 +0100
commit6884f3f1f7542eb1dab8bb39cab33888d3fd84c5 (patch)
tree3f659b305ab0e4ed8a1ee26880a85e4e15a71d6f /program
parent6f170902580c8cef342c0c65df1b98cbd293a79d (diff)
Re-submit search query when switching folders
Diffstat (limited to 'program')
-rw-r--r--program/js/app.js28
-rw-r--r--program/steps/mail/search.inc2
2 files changed, 20 insertions, 10 deletions
diff --git a/program/js/app.js b/program/js/app.js
index 2401e1e0c..e276f6f96 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -697,9 +697,17 @@ function rcube_webmail()
break;
case 'list':
- // TODO: don't reset search but re-send for the new folder
- if (props && props != '')
- this.reset_qsearch();
+ // re-send for the selected folder
+ if (props && props != '' && this.env.search_request) {
+ var oldmbox = this.env.search_scope == 'all' ? '*' : this.env.mailbox;
+ this.env.search_mods[props] = this.env.search_mods[oldmbox]; // copy search mods from active search
+ this.env.mailbox = props;
+ this.env.search_scope = 'base';
+ this.qsearch(this.gui_objects.qsearchbox.value);
+ this.select_folder(this.env.mailbox, '', true);
+ break;
+ }
+
if (this.env.action == 'compose' && this.env.extwin)
window.close();
else if (this.task == 'mail') {
@@ -4100,11 +4108,11 @@ function rcube_webmail()
};
// send remote request to search mail or contacts
- this.qsearch = function(value)
+ this.qsearch = function(value, mods)
{
if (value != '') {
var r, lock = this.set_busy(true, 'searching'),
- url = this.search_params(value);
+ url = this.search_params(value, null, mods);
if (this.message_list)
this.clear_message_list();
@@ -4128,7 +4136,7 @@ function rcube_webmail()
};
// build URL params for search
- this.search_params = function(search, filter)
+ this.search_params = function(search, filter, smods)
{
var n, url = {}, mods_arr = [],
mods = this.env.search_mods,
@@ -4147,11 +4155,11 @@ function rcube_webmail()
if (search) {
url._q = search;
- if (mods && this.message_list)
- mods = mods[mbox] ? mods[mbox] : mods['*'];
+ if (!smods && mods && this.message_list)
+ smods = mods[mbox] || mods['*'];
- if (mods) {
- for (n in mods)
+ if (smods) {
+ for (n in smods)
mods_arr.push(n);
url._headers = mods_arr.join(',');
}
diff --git a/program/steps/mail/search.inc b/program/steps/mail/search.inc
index 88bbe6eda..51dab7dc4 100644
--- a/program/steps/mail/search.inc
+++ b/program/steps/mail/search.inc
@@ -21,6 +21,8 @@
$REMOTE_REQUEST = TRUE;
+@set_time_limit(170); // extend default max_execution_time to ~3 minutes
+
// reset list_page and old search results
$RCMAIL->storage->set_page(1);
$RCMAIL->storage->set_search_set(NULL);