mirror of
https://github.com/e107inc/e107.git
synced 2025-08-07 23:26:41 +02:00
More admin UI filter optimizations - swtich to LIKE instead REGEXP (works with non-latin languages now); minor bugfixes
This commit is contained in:
@@ -2937,7 +2937,7 @@ class e_admin_controller_ui extends e_admin_controller
|
|||||||
|
|
||||||
$searchQuery = $tp->toDB($request->getQuery('searchquery', ''));
|
$searchQuery = $tp->toDB($request->getQuery('searchquery', ''));
|
||||||
$searchFilter = $this->_parseFilterRequest($request->getQuery('filter_options', ''));
|
$searchFilter = $this->_parseFilterRequest($request->getQuery('filter_options', ''));
|
||||||
|
|
||||||
if($searchFilter && is_array($searchFilter))
|
if($searchFilter && is_array($searchFilter))
|
||||||
{
|
{
|
||||||
list($filterField, $filterValue) = $searchFilter;
|
list($filterField, $filterValue) = $searchFilter;
|
||||||
@@ -2973,7 +2973,7 @@ class e_admin_controller_ui extends e_admin_controller
|
|||||||
$searchable_types = array('text', 'textarea', 'bbarea', 'user', 'email'); //method?
|
$searchable_types = array('text', 'textarea', 'bbarea', 'user', 'email'); //method?
|
||||||
if(trim($searchQuery) !== '' && in_array($var['type'], $searchable_types))
|
if(trim($searchQuery) !== '' && in_array($var['type'], $searchable_types))
|
||||||
{
|
{
|
||||||
$filter[] = $var['__tableField']." REGEXP ('".$searchQuery."')";
|
$filter[] = $var['__tableField']." LIKE '%".$searchQuery."%'";
|
||||||
if($isfilter)
|
if($isfilter)
|
||||||
{
|
{
|
||||||
$filterFrom[] = $var['__tableField'];
|
$filterFrom[] = $var['__tableField'];
|
||||||
@@ -2982,8 +2982,6 @@ class e_admin_controller_ui extends e_admin_controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if($isfilter)
|
if($isfilter)
|
||||||
{
|
{
|
||||||
if(!$filterFrom) return false;
|
if(!$filterFrom) return false;
|
||||||
@@ -3104,8 +3102,8 @@ class e_admin_controller_ui extends e_admin_controller
|
|||||||
// where query
|
// where query
|
||||||
if(count($searchQry) > 0)
|
if(count($searchQry) > 0)
|
||||||
{
|
{
|
||||||
if(strpos($qry, ' WHERE ') !== false) $qry .= " WHERE ".implode(" AND ", $searchQry);
|
// add more where details on the fly via $this->listQrySql['db_where'];
|
||||||
else $qry .= " AND ".implode(" AND ", $searchQry);
|
$qry .= " WHERE ".implode(" AND ", $searchQry);
|
||||||
}
|
}
|
||||||
|
|
||||||
// GROUP BY if needed
|
// GROUP BY if needed
|
||||||
@@ -4149,6 +4147,23 @@ class e_admin_form_ui extends e_form
|
|||||||
$controller = $this->getController();
|
$controller = $this->getController();
|
||||||
$filter_pre = vartrue($controller->preFiliterMarkup);
|
$filter_pre = vartrue($controller->preFiliterMarkup);
|
||||||
$filter_post = vartrue($controller->postFiliterMarkup);
|
$filter_post = vartrue($controller->postFiliterMarkup);
|
||||||
|
$filter_preserve_var = array();
|
||||||
|
// method requires controller - stanalone advanced usage not possible
|
||||||
|
if($this->getController())
|
||||||
|
{
|
||||||
|
$get = $this->getController()->getQuery();
|
||||||
|
foreach ($get as $key => $value)
|
||||||
|
{
|
||||||
|
if($key == 'searchquery' || $key == 'filter_options' || $key == 'etrigger_filter') continue;
|
||||||
|
$key = preg_replace('/[^\w]/', '', $key);
|
||||||
|
$filter_preserve_var[] = $this->hidden($key, rawurlencode($value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$filter_preserve_var[] = $this->hidden('mode', $l[0]);
|
||||||
|
$filter_preserve_var[] = $this->hidden('action', $l[1]);
|
||||||
|
}
|
||||||
$text = "
|
$text = "
|
||||||
<form method='get' action='".e_SELF."'>
|
<form method='get' action='".e_SELF."'>
|
||||||
<fieldset class='e-filter'>
|
<fieldset class='e-filter'>
|
||||||
@@ -4162,8 +4177,7 @@ class e_admin_form_ui extends e_form
|
|||||||
".$this->renderBatchFilter('filter', $current_query[1])."
|
".$this->renderBatchFilter('filter', $current_query[1])."
|
||||||
".$this->select_close()."
|
".$this->select_close()."
|
||||||
<div class='e-autocomplete'></div>
|
<div class='e-autocomplete'></div>
|
||||||
".$this->hidden('mode', $l[0])."
|
".implode("\n", $filter_preserve_var)."
|
||||||
".$this->hidden('action', $l[1])."
|
|
||||||
".$this->admin_button('etrigger_filter', 'etrigger_filter', 'filter e-hide-if-js', LAN_FILTER, array('id' => false))."
|
".$this->admin_button('etrigger_filter', 'etrigger_filter', 'filter e-hide-if-js', LAN_FILTER, array('id' => false))."
|
||||||
<span class='indicator' style='display: none;'>
|
<span class='indicator' style='display: none;'>
|
||||||
<img src='".e_IMAGE_ABS."generic/loading_16.gif' class='icon action S16' alt='".LAN_LOADING."' />
|
<img src='".e_IMAGE_ABS."generic/loading_16.gif' class='icon action S16' alt='".LAN_LOADING."' />
|
||||||
|
@@ -1102,7 +1102,7 @@ class e_form
|
|||||||
$text .= (vartrue($val['url'])) ? "<a href='".str_replace(array('&', '&'), array('&', '&'),$val['url'])."'>" : ""; // Really this column-sorting link should be auto-generated, or be autocreated via unobtrusive js.
|
$text .= (vartrue($val['url'])) ? "<a href='".str_replace(array('&', '&'), array('&', '&'),$val['url'])."'>" : ""; // Really this column-sorting link should be auto-generated, or be autocreated via unobtrusive js.
|
||||||
$text .= defset($val['title'], $val['title']);
|
$text .= defset($val['title'], $val['title']);
|
||||||
$text .= ($val['url']) ? "</a>" : "";
|
$text .= ($val['url']) ? "</a>" : "";
|
||||||
$text .= ($key == "options") ? $this->columnSelector($fieldarray, $columnPref) : "";
|
$text .= ($key == "options" && !vartrue($val['noselector'])) ? $this->columnSelector($fieldarray, $columnPref) : "";
|
||||||
$text .= ($key == "checkboxes") ? $this->checkbox_toggle('e-column-toggle', vartrue($val['toggle'], 'multiselect')) : "";
|
$text .= ($key == "checkboxes") ? $this->checkbox_toggle('e-column-toggle', vartrue($val['toggle'], 'multiselect')) : "";
|
||||||
|
|
||||||
|
|
||||||
@@ -1242,10 +1242,17 @@ class e_form
|
|||||||
|
|
||||||
if($attributes['type']=='method') // Allow override with 'options' function.
|
if($attributes['type']=='method') // Allow override with 'options' function.
|
||||||
{
|
{
|
||||||
|
|
||||||
$attributes['mode'] = "read";
|
$attributes['mode'] = "read";
|
||||||
return $this->options($field, $value, $attributes, $id);
|
if(isset($attributes['method']) && $attributes['method'] && method_exists($this, $attributes['method']))
|
||||||
|
{
|
||||||
|
$method = $attributes['method'];
|
||||||
|
return $this->$method($parms, $value, $id);
|
||||||
|
|
||||||
|
}
|
||||||
|
elseif(method_exists($this, 'options'))
|
||||||
|
{
|
||||||
|
return $this->options($parms, $value, $id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!$value)
|
if(!$value)
|
||||||
@@ -1275,9 +1282,6 @@ class e_form
|
|||||||
{
|
{
|
||||||
$value .= $this->submit_image('etrigger_delete['.$id.']', $id, 'delete', LAN_DELETE.' [ ID: '.$id.' ]', array('class' => 'action delete'.$delcls));
|
$value .= $this->submit_image('etrigger_delete['.$id.']', $id, 'delete', LAN_DELETE.' [ ID: '.$id.' ]', array('class' => 'action delete'.$delcls));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
//$attributes['type'] = 'text';
|
//$attributes['type'] = 'text';
|
||||||
return $value;
|
return $value;
|
||||||
@@ -1888,7 +1892,7 @@ class e_form
|
|||||||
public function renderListForm($form_options, $tree_models, $nocontainer = false)
|
public function renderListForm($form_options, $tree_models, $nocontainer = false)
|
||||||
{
|
{
|
||||||
$tp = e107::getParser();
|
$tp = e107::getParser();
|
||||||
|
$text = '';
|
||||||
foreach ($form_options as $fid => $options)
|
foreach ($form_options as $fid => $options)
|
||||||
{
|
{
|
||||||
$tree_model = $tree_models[$fid];
|
$tree_model = $tree_models[$fid];
|
||||||
@@ -1905,13 +1909,14 @@ class e_form
|
|||||||
$formurl = $url.($query ? '?'.$query : '');
|
$formurl = $url.($query ? '?'.$query : '');
|
||||||
$fields = $options['fields'];
|
$fields = $options['fields'];
|
||||||
$current_fields = varset($options['fieldpref']) ? $options['fieldpref'] : array_keys($options['fields']);
|
$current_fields = varset($options['fieldpref']) ? $options['fieldpref'] : array_keys($options['fields']);
|
||||||
|
$legend_class = vartrue($options['legend_class'], 'e-hideme');
|
||||||
|
|
||||||
$text = "
|
$text .= "
|
||||||
<form method='post' action='{$formurl}' id='{$elid}-list-form'>
|
<form method='post' action='{$formurl}' id='{$elid}-list-form'>
|
||||||
<div>".$this->token()."
|
<div>".$this->token()."
|
||||||
".vartrue($options['fieldset_pre'])."
|
".vartrue($options['fieldset_pre'])."
|
||||||
<fieldset id='{$elid}-list'>
|
<fieldset id='{$elid}-list'>
|
||||||
<legend class='e-hideme'>".$options['legend']."</legend>
|
<legend class='{$legend_class}'>".$options['legend']."</legend>
|
||||||
".vartrue($options['table_pre'])."
|
".vartrue($options['table_pre'])."
|
||||||
<table cellpadding='0' cellspacing='0' class='adminlist' id='{$elid}-list-table'>
|
<table cellpadding='0' cellspacing='0' class='adminlist' id='{$elid}-list-table'>
|
||||||
".$this->colGroup($fields, $current_fields)."
|
".$this->colGroup($fields, $current_fields)."
|
||||||
@@ -1970,11 +1975,10 @@ class e_form
|
|||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
";
|
";
|
||||||
if(!$nocontainer)
|
}
|
||||||
{
|
if(!$nocontainer)
|
||||||
$text = '<div class="e-container">'.$text.'</div>';
|
{
|
||||||
}
|
$text = '<div class="e-container">'.$text.'</div>';
|
||||||
|
|
||||||
}
|
}
|
||||||
return (vartrue($options['form_pre']).$text.vartrue($options['form_post']));
|
return (vartrue($options['form_pre']).$text.vartrue($options['form_post']));
|
||||||
}
|
}
|
||||||
@@ -2114,7 +2118,7 @@ class e_form
|
|||||||
$required = $this->getRequiredString();
|
$required = $this->getRequiredString();
|
||||||
$required_class = ' class="required-label"'; // TODO - add 'required-label' to the core CSS definitions
|
$required_class = ' class="required-label"'; // TODO - add 'required-label' to the core CSS definitions
|
||||||
$required_help = true;
|
$required_help = true;
|
||||||
if($att['validate'])
|
if(vartrue($att['validate']))
|
||||||
{
|
{
|
||||||
// override
|
// override
|
||||||
$model_required[$key] = array();
|
$model_required[$key] = array();
|
||||||
|
Reference in New Issue
Block a user