FilterEditor: save changes on element addition

refs #2900
This commit is contained in:
Alexander A. Klimov 2018-04-06 14:42:20 +02:00
parent 8262f19c5a
commit e101c9672c
2 changed files with 27 additions and 18 deletions

View File

@ -327,6 +327,17 @@ class FilterEditor extends AbstractWidget
$filter = $this->applyChanges($request->getPost());
$url = $this->url()->setQueryString($filter->toQueryString())->addParams($preserve);
$url->getParams()->add('modifyFilter');
$addFilter = $request->get('add_filter');
if ($addFilter !== null) {
$url->setParam('addFilter', $addFilter);
}
$removeFilter = $request->get('remove_filter');
if ($removeFilter !== null) {
$url->setParam('removeFilter', $removeFilter);
}
$this->redirectNow($url);
}
}
@ -388,28 +399,16 @@ class FilterEditor extends AbstractWidget
protected function removeLink(Filter $filter)
{
return $this->view()->qlink(
'',
$this->preservedUrl()->with('removeFilter', $filter->getId()),
null,
array(
'icon' => 'trash',
'title' => t('Remove this part of your filter')
)
);
return "<button type='submit' name='remove_filter' value='{$filter->getId()}'>"
. $this->view()->icon('trash', t('Remove this part of your filter'))
. '</button>';
}
protected function addLink(Filter $filter)
{
return $this->view()->qlink(
'',
$this->preservedUrl()->with('addFilter', $filter->getId()),
null,
array(
'icon' => 'plus',
'title' => t('Add another filter')
)
);
return "<button type='submit' name='add_filter' value='{$filter->getId()}'>"
. $this->view()->icon('plus', t('Add another filter'))
. '</button>';
}
protected function stripLink(Filter $filter)
@ -779,6 +778,7 @@ class FilterEditor extends AbstractWidget
. '<form action="'
. Url::fromRequest()
. '" class="editor" method="POST">'
. '<input type="submit" name="submit" value="Apply">'
. '<ul class="tree"><li>'
. $this->renderFilter($this->filter)
. '</li></ul>'

View File

@ -164,6 +164,15 @@ table.multiselect tr[href] td {
div.buttons {
float: right;
}
button {
border: none;
background: none;
}
& > input[type="submit"]:first-child {
display: none;
}
}
}