diff --git a/addressbook/inc/class.addressbook_ui.inc.php b/addressbook/inc/class.addressbook_ui.inc.php index 1d1dc4fa6d..6c19a882c1 100644 --- a/addressbook/inc/class.addressbook_ui.inc.php +++ b/addressbook/inc/class.addressbook_ui.inc.php @@ -1444,9 +1444,10 @@ window.egw_LAB.wait(function() { $op = 'OR'; if ($query['advanced_search']) { - $op = $query['advanced_search']['operator']; + // Make sure op & wildcard are only valid options + $op = $query['advanced_search']['operator'] == $op ? $op : 'AND'; unset($query['advanced_search']['operator']); - $wildcard = $query['advanced_search']['meth_select']; + $wildcard = $query['advanced_search']['meth_select'] == $wildcard ? $wildcard : false; unset($query['advanced_search']['meth_select']); } //if ($do_email ) $email_only = array('id','owner','tid','n_fn','n_family','n_given','org_name','email','email_home'); @@ -2628,20 +2629,27 @@ window.egw_LAB.wait(function() { { if(!$value) unset($query['advanced_search'][$key]); } + // Skip n_fn, it causes problems in sql + unset($query['advanced_search']['n_fn']); } - $query['start'] = 0; $query['search'] = ''; // store the index state in the session egw_session::appsession('index','addressbook',$query); // store the advanced search in the session to call it again egw_session::appsession('advanced_search','addressbook',$query['advanced_search']); - if ($_content['button']['search']) $response->call("app.addressbook.adv_search"); - if ($_content['button']['cancelsearch']) egw_framework::window_close (); //$response->addScript('this.close();'); + + // Update client / nextmatch with filters, or clear + $response->call("app.addressbook.adv_search", array('advanced_search' => $_content['button']['search'] ? $query['advanced_search'] : '')); + if ($_content['button']['cancelsearch']) + { + egw_framework::window_close (); //$response->addScript('this.close();'); + + // No need to reload popup + return; + } } - //$GLOBALS['egw_info']['flags']['include_xajax'] = true; - //$GLOBALS['egw_info']['flags']['java_script'] .= ""; $GLOBALS['egw_info']['etemplate']['advanced_search'] = true; // initialize etemplate arrays diff --git a/addressbook/js/app.js b/addressbook/js/app.js index dff7f0acc1..75a96e6517 100644 --- a/addressbook/js/app.js +++ b/addressbook/js/app.js @@ -34,7 +34,6 @@ app.classes.addressbook = AppJS.extend( */ destroy: function() { - //delete this.et2; // call parent this._super.apply(this, arguments); }, @@ -492,14 +491,29 @@ app.classes.addressbook = AppJS.extend( }, /** - * + * Apply advanced search filters to index nextmatch */ - adv_search: function() - { - var link = opener.location.href; - link = link.replace(/#/,''); - opener.location.href=link.replace(/\#/,''); - }, + adv_search: function(filters) + { + var index = window.opener.etemplate2.getById('addressbook-index'); + if(!index) + { + alert('Could not find index'); + window.close(); + return false; + } + var nm = index.widgetContainer.getWidgetById('nm'); + if(!index) + { + window.opener.egw.message('Could not find list', 'error'); + window.close(); + return false; + } + // Reset filters first + nm.activeFilters = {}; + nm.applyFilters(filters); + return false; + }, /** * Mail vCard