- Fix bug where wrong search string was build when using filter together with search

release-0.7
alecpl 13 years ago
parent 8881766a9f
commit e9c47c612e

@ -1960,18 +1960,13 @@ function rcube_webmail()
// list messages of a specific mailbox using filter // list messages of a specific mailbox using filter
this.filter_mailbox = function(filter) this.filter_mailbox = function(filter)
{ {
var search, lock = this.set_busy(true, 'searching'); var lock = this.set_busy(true, 'searching');
if (this.gui_objects.qsearchbox)
search = this.gui_objects.qsearchbox.value;
this.clear_message_list(); this.clear_message_list();
// reset vars // reset vars
this.env.current_page = 1; this.env.current_page = 1;
this.http_request('search', '_filter='+filter this.http_request('search', this.search_params(false, filter), lock);
+ (search ? '&_q='+urlencode(search) : '')
+ (this.env.mailbox ? '&_mbox='+urlencode(this.env.mailbox) : ''), lock);
}; };
// list messages of a specific mailbox // list messages of a specific mailbox
@ -3426,40 +3421,58 @@ function rcube_webmail()
this.qsearch = function(value) this.qsearch = function(value)
{ {
if (value != '') { if (value != '') {
var n, r, addurl = '', mods_arr = [], var n, lock = this.set_busy(true, 'searching');
mods = this.env.search_mods,
mbox = this.env.mailbox,
lock = this.set_busy(true, 'searching');
if (this.message_list) { if (this.message_list)
this.clear_message_list(); this.clear_message_list();
if (mods) else if (this.contact_list)
mods = mods[mbox] ? mods[mbox] : mods['*'];
} else if (this.contact_list) {
this.list_contacts_clear(); this.list_contacts_clear();
}
if (mods) {
for (n in mods)
mods_arr.push(n);
addurl += '&_headers='+mods_arr.join(',');
}
if (this.gui_objects.search_filter)
addurl += '&_filter=' + this.gui_objects.search_filter.value;
// reset vars // reset vars
this.env.current_page = 1; this.env.current_page = 1;
r = this.http_request('search', '_q='+urlencode(value) r = this.http_request('search', this.search_params(value)
+ (mbox ? '&_mbox='+urlencode(mbox) : '')
+ (this.env.source ? '&_source='+urlencode(this.env.source) : '') + (this.env.source ? '&_source='+urlencode(this.env.source) : '')
+ (this.env.group ? '&_gid='+urlencode(this.env.group) : '') + (this.env.group ? '&_gid='+urlencode(this.env.group) : ''), lock);
+ (addurl ? addurl : ''), lock);
this.env.qsearch = {lock: lock, request: r}; this.env.qsearch = {lock: lock, request: r};
} }
}; };
// build URL params for search
this.search_params = function(search, filter)
{
var n, url = [], mods_arr = [],
mods = this.env.search_mods,
mbox = this.env.mailbox;
if (!filter && this.gui_objects.search_filter)
filter = this.gui_objects.search_filter.value;
if (!search && this.gui_objects.qsearchbox)
search = this.gui_objects.qsearchbox.value;
if (filter)
url.push('_filter=' + urlencode(filter));
if (search) {
url.push('_q='+urlencode(search));
if (mods && this.message_list)
mods = mods[mbox] ? mods[mbox] : mods['*'];
if (mods) {
for (n in mods)
mods_arr.push(n);
url.push('_headers='+mods_arr.join(','));
}
}
if (mbox)
url.push('_mbox='+urlencode(mbox));
return url.join('&');
};
// reset quick-search form // reset quick-search form
this.reset_qsearch = function() this.reset_qsearch = function()
{ {

Loading…
Cancel
Save