blob: 7927da0a04b1b2ec077828be972578beb57ed6b3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
<?php
/* Icinga DB Web | (c) 2022 Icinga GmbH | GPLv2 */
namespace Icinga\Module\Icingadb\Common;
use Icinga\Module\Icingadb\Web\Control\SearchBar\ObjectSuggestions;
use ipl\Html\Html;
use ipl\Orm\Query;
use ipl\Web\Control\SearchBar;
use ipl\Web\Url;
use ipl\Web\Widget\ContinueWith;
trait SearchControls
{
use \ipl\Web\Compat\SearchControls {
\ipl\Web\Compat\SearchControls::createSearchBar as private webCreateSearchBar;
}
public function fetchFilterColumns(Query $query): array
{
return iterator_to_array(ObjectSuggestions::collectFilterColumns($query->getModel(), $query->getResolver()));
}
/**
* Create and return the SearchBar
*
* @param Query $query The query being filtered
* @param Url $redirectUrl Url to redirect to upon success
* @param array $preserveParams Query params to preserve when redirecting
*
* @return SearchBar
*/
public function createSearchBar(Query $query, ...$params): SearchBar
{
$searchBar = $this->webCreateSearchBar($query, ...$params);
if (($wrapper = $searchBar->getWrapper()) && ! $wrapper->getWrapper()) {
// TODO: Remove this once ipl-web v0.7.0 is required
$searchBar->addWrapper(Html::tag('div', ['class' => 'search-controls']));
}
return $searchBar;
}
/**
* Create and return a ContinueWith
*
* This will automatically be appended to the SearchBar's wrapper. It's not necessary
* to add it separately as control or content!
*
* @param Url $detailsUrl
* @param SearchBar $searchBar
*
* @return ContinueWith
*/
public function createContinueWith(Url $detailsUrl, SearchBar $searchBar): ContinueWith
{
$continueWith = new ContinueWith($detailsUrl, [$searchBar, 'getFilter']);
$continueWith->setTitle(t('Show bulk processing actions for all filtered results'));
$continueWith->setBaseTarget('_next');
$continueWith->getAttributes()
->set('id', $this->getRequest()->protectId('continue-with'));
$searchBar->getWrapper()->add($continueWith);
return $continueWith;
}
}
|