mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-12-18 04:31:06 +01:00
* Addressbook: fixed diverse problem with advanced search
r48511: Fix missed case of really
This commit is contained in:
parent
72b040db01
commit
d59493596e
@ -1444,9 +1444,10 @@ window.egw_LAB.wait(function() {
|
|||||||
$op = 'OR';
|
$op = 'OR';
|
||||||
if ($query['advanced_search'])
|
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']);
|
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']);
|
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');
|
//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]);
|
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'] = '';
|
$query['search'] = '';
|
||||||
// store the index state in the session
|
// store the index state in the session
|
||||||
egw_session::appsession('index','addressbook',$query);
|
egw_session::appsession('index','addressbook',$query);
|
||||||
|
|
||||||
// store the advanced search in the session to call it again
|
// store the advanced search in the session to call it again
|
||||||
egw_session::appsession('advanced_search','addressbook',$query['advanced_search']);
|
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'] .= "<script>window.egw_LAB.wait(function() {window.focus();});</script>";
|
|
||||||
$GLOBALS['egw_info']['etemplate']['advanced_search'] = true;
|
$GLOBALS['egw_info']['etemplate']['advanced_search'] = true;
|
||||||
|
|
||||||
// initialize etemplate arrays
|
// initialize etemplate arrays
|
||||||
@ -2668,7 +2676,7 @@ window.egw_LAB.wait(function() {
|
|||||||
{
|
{
|
||||||
foreach($this->customfields as $name => $data)
|
foreach($this->customfields as $name => $data)
|
||||||
{
|
{
|
||||||
if ($data['type'] == 'select')
|
if (substr($data['type'], 0, 6) == 'select' && !($data['rows'] > 1))
|
||||||
{
|
{
|
||||||
if (!isset($content['#'.$name])) $content['#'.$name] = '';
|
if (!isset($content['#'.$name])) $content['#'.$name] = '';
|
||||||
if(!isset($data['values'][''])) $sel_options['#'.$name][''] = lang('Select one');
|
if(!isset($data['values'][''])) $sel_options['#'.$name][''] = lang('Select one');
|
||||||
|
@ -34,7 +34,6 @@ app.classes.addressbook = AppJS.extend(
|
|||||||
*/
|
*/
|
||||||
destroy: function()
|
destroy: function()
|
||||||
{
|
{
|
||||||
//delete this.et2;
|
|
||||||
// call parent
|
// call parent
|
||||||
this._super.apply(this, arguments);
|
this._super.apply(this, arguments);
|
||||||
},
|
},
|
||||||
@ -492,13 +491,28 @@ app.classes.addressbook = AppJS.extend(
|
|||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Apply advanced search filters to index nextmatch
|
||||||
*/
|
*/
|
||||||
adv_search: function()
|
adv_search: function(filters)
|
||||||
{
|
{
|
||||||
var link = opener.location.href;
|
var index = window.opener.etemplate2.getById('addressbook-index');
|
||||||
link = link.replace(/#/,'');
|
if(!index)
|
||||||
opener.location.href=link.replace(/\#/,'');
|
{
|
||||||
|
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;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -262,6 +262,12 @@ class etemplate_widget_customfields extends etemplate_widget_transformer
|
|||||||
$widget->attrs['only_app'] = $field['type'];
|
$widget->attrs['only_app'] = $field['type'];
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'text':
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
if (substr($type, 0, 7) !== 'select-') break;
|
||||||
|
// fall-through for all select-* widgets
|
||||||
case 'select':
|
case 'select':
|
||||||
$this->attrs['multiple'] = $field['rows'] > 1;
|
$this->attrs['multiple'] = $field['rows'] > 1;
|
||||||
// fall through
|
// fall through
|
||||||
@ -270,7 +276,15 @@ class etemplate_widget_customfields extends etemplate_widget_transformer
|
|||||||
{
|
{
|
||||||
$field['values'] = self::_get_options_from_file($field['values']['@']);
|
$field['values'] = self::_get_options_from_file($field['values']['@']);
|
||||||
}
|
}
|
||||||
|
// keep extra values set by app code, eg. addressbook advanced search
|
||||||
|
if (is_array(self::$request->sel_options[self::$prefix.$fname]))
|
||||||
|
{
|
||||||
|
self::$request->sel_options[self::$prefix.$fname] += (array)$field['values'];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
self::$request->sel_options[self::$prefix.$fname] = $field['values'];
|
self::$request->sel_options[self::$prefix.$fname] = $field['values'];
|
||||||
|
}
|
||||||
//error_log(__METHOD__."('$fname', ".array2string($field).") request->sel_options['".self::$prefix.$fname."']=".array2string(self::$request->sel_options[$this->id]));
|
//error_log(__METHOD__."('$fname', ".array2string($field).") request->sel_options['".self::$prefix.$fname."']=".array2string(self::$request->sel_options[$this->id]));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -464,7 +464,10 @@ class so_sql_cf extends so_sql
|
|||||||
foreach($criteria as $name => $val)
|
foreach($criteria as $name => $val)
|
||||||
{
|
{
|
||||||
// only add extra_join, if we really need it
|
// only add extra_join, if we really need it
|
||||||
if (!$extra_join_added && is_int($name) && strpos($val, $this->extra_value) !== false)
|
if (!$extra_join_added && (
|
||||||
|
is_int($name) && strpos($val, $this->extra_value) !== false ||
|
||||||
|
is_string($name) && $this->is_cf($name)
|
||||||
|
))
|
||||||
{
|
{
|
||||||
$join .= $this->extra_join;
|
$join .= $this->extra_join;
|
||||||
$extra_join_added = true;
|
$extra_join_added = true;
|
||||||
|
@ -370,7 +370,7 @@ var et2_selectAccount = et2_selectbox.extend(
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
this.options.select_options.push({value: key, label: options});
|
this.options.select_options.push({value: key, label: options[key]});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user