store search in session (#2735)

* allow to detect used query filters
* allow to set label in action buttons
* allow to reset last search from session
* migrate invoice archive to new search system
* display number of used search filters
This commit is contained in:
Kevin Papst
2021-08-26 01:37:40 +02:00
committed by GitHub
parent 56524a9773
commit 98a3fc99a2
55 changed files with 365 additions and 81 deletions

View File

@@ -177,6 +177,15 @@ abstract class AbstractController extends BaseAbstractController implements Serv
return $this->get('session')->get($name);
}
private function removeLastSearch(BaseQuery $query): void
{
$name = 'search_' . $this->getSearchName($query);
if ($this->get('session')->has($name)) {
$this->get('session')->remove($name);
}
}
private function getSearchName(BaseQuery $query): string
{
return substr($query->getName(), 0, 50);
@@ -198,6 +207,13 @@ abstract class AbstractController extends BaseAbstractController implements Serv
throw new \InvalidArgumentException('handleSearchForm() requires an instanceof BaseQuery as form data');
}
if ($request->query->has('resetSearchFilter')) {
$data->resetFilter();
$this->removeLastSearch($data);
return true;
}
$submitData = $request->query->all();
// allow to use forms with block-prefix
if (!empty($formName = $form->getConfig()->getName()) && $request->request->has($formName)) {
@@ -228,6 +244,7 @@ abstract class AbstractController extends BaseAbstractController implements Serv
$submitData = array_merge($sessionSearch, $submitData);
} elseif ($bookmark !== null && !$request->query->has('setDefaultQuery')) {
$submitData = array_merge($bookmark->getContent(), $submitData);
$data->flagAsBookmarkSearch();
}
}
@@ -259,7 +276,9 @@ abstract class AbstractController extends BaseAbstractController implements Serv
}
}
$this->get('session')->set('search_' . $searchName, $params);
if ($request->query->has('performSearch')) {
$this->get('session')->set('search_' . $searchName, $params);
}
// filter stuff, that does not belong in a bookmark
$filter = ['page'];
@@ -270,6 +289,7 @@ abstract class AbstractController extends BaseAbstractController implements Serv
}
if ($request->query->has('setDefaultQuery')) {
$this->removeLastSearch($data);
if ($bookmark === null) {
$bookmark = new Bookmark();
$bookmark->setType(Bookmark::SEARCH_DEFAULT);