mirror of
https://github.com/Icinga/icingadb-web.git
synced 2026-06-09 00:32:05 -04:00
Basic changes to integrate ipl/stdlib/Filter and ipl/web/Filter
This commit is contained in:
parent
0aacc44c2f
commit
4314f9decd
2 changed files with 31 additions and 9 deletions
|
|
@ -15,6 +15,7 @@ use ipl\Orm\Resolver;
|
|||
use ipl\Sql\Cursor;
|
||||
use ipl\Sql\Expression;
|
||||
use ipl\Sql\Select;
|
||||
use ipl\Stdlib\Filter as StdlibFilter;
|
||||
use ipl\Web\Control\SearchBar\Suggestions;
|
||||
use PDO;
|
||||
|
||||
|
|
@ -77,11 +78,11 @@ class ObjectSuggestions extends Suggestions
|
|||
{
|
||||
$model = $this->getModel();
|
||||
|
||||
$quickFilter = Filter::matchAny();
|
||||
$quickFilter = StdlibFilter::any();
|
||||
foreach ($model->getSearchColumns() as $column) {
|
||||
$where = Filter::where($model->getTableName() . '.' . $column, $searchTerm);
|
||||
$where->metaData['label'] = $model->getMetaData()[$column];
|
||||
$quickFilter->addFilter($where);
|
||||
$where = StdlibFilter::equal($model->getTableName() . '.' . $column, $searchTerm);
|
||||
$where->columnLabel = $model->getMetaData()[$column];
|
||||
$quickFilter->add($where);
|
||||
}
|
||||
|
||||
return $quickFilter;
|
||||
|
|
|
|||
|
|
@ -20,11 +20,14 @@ use ipl\Orm\Common\SortUtil;
|
|||
use ipl\Orm\Compat\FilterProcessor;
|
||||
use ipl\Orm\Query;
|
||||
use ipl\Stdlib\Contract\Paginatable;
|
||||
use ipl\Stdlib\Filter\Condition;
|
||||
use ipl\Stdlib\Filter\Rule;
|
||||
use ipl\Web\Compat\CompatController;
|
||||
use ipl\Web\Control\LimitControl;
|
||||
use ipl\Web\Control\PaginationControl;
|
||||
use ipl\Web\Control\SearchBar;
|
||||
use ipl\Web\Control\SortControl;
|
||||
use ipl\Web\Filter\QueryString;
|
||||
use ipl\Web\Url;
|
||||
|
||||
class Controller extends CompatController
|
||||
|
|
@ -127,16 +130,34 @@ class Controller extends CompatController
|
|||
*
|
||||
* @return SearchBar
|
||||
*/
|
||||
public function createSearchBar(array $preserveParams = null)
|
||||
public function createSearchBar(Query $query, array $preserveParams = null)
|
||||
{
|
||||
$requestUrl = Url::fromRequest();
|
||||
if ($preserveParams !== null) {
|
||||
$requestUrl = $requestUrl->onlyWith($preserveParams);
|
||||
}
|
||||
|
||||
$filter = QueryString::fromString($this->getFilter()->toQueryString())
|
||||
->on(QueryString::ON_CONDITION, function (Condition $condition) use ($query) {
|
||||
$path = $condition->getColumn();
|
||||
if (strpos($path, '.vars.') !== false) {
|
||||
list($target, $varName) = explode('.vars.', $path);
|
||||
if (strpos($target, '.') === false) {
|
||||
// Programmatically translated since the full definition is available in class ObjectSuggestions
|
||||
$condition->columnLabel = sprintf(t(ucfirst($target) . ' %s', '..<customvar-name>'), $varName);
|
||||
}
|
||||
} else {
|
||||
$metaData = $query->getResolver()->getMetaData($query->getModel());
|
||||
if (isset($metaData[$path])) {
|
||||
$condition->columnLabel = $metaData[$path];
|
||||
}
|
||||
}
|
||||
})
|
||||
->parse();
|
||||
|
||||
$searchBar = new SearchBar();
|
||||
$searchBar->setSubmitLabel(t('Search'));
|
||||
$searchBar->setFilter($this->getFilter());
|
||||
$searchBar->setFilter($filter);
|
||||
$searchBar->setAction($requestUrl->getAbsoluteUrl());
|
||||
$searchBar->setIdProtector([$this->getRequest(), 'protectId']);
|
||||
|
||||
|
|
@ -149,7 +170,7 @@ class Controller extends CompatController
|
|||
|
||||
$searchBar->on(SearchBar::ON_SENT, function (SearchBar $form) use ($requestUrl) {
|
||||
$existingParams = $requestUrl->getParams();
|
||||
$requestUrl->setQueryString($form->getFilter()->toQueryString());
|
||||
$requestUrl->setQueryString(QueryString::render($form->getFilter()));
|
||||
foreach ($existingParams->toArray(false) as $name => $value) {
|
||||
if (is_int($name)) {
|
||||
$name = $value;
|
||||
|
|
@ -320,12 +341,12 @@ class Controller extends CompatController
|
|||
return parent::addContent($content);
|
||||
}
|
||||
|
||||
public function filter(Query $query, Filter $filter = null)
|
||||
public function filter(Query $query, Rule $filter = null)
|
||||
{
|
||||
$this->applyMonitoringRestriction($query);
|
||||
|
||||
FilterProcessor::apply(
|
||||
$filter ?: $this->getFilter(),
|
||||
$filter ? Filter::fromQueryString(QueryString::render($filter)) : $this->getFilter(),
|
||||
$query
|
||||
);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue