mirror of
https://github.com/BookStackApp/BookStack.git
synced 2025-03-24 23:35:15 +08:00
Searching: Fixed some form search issues
- Form was not retaining certain filters - Form request handling of entity type set wrong filter name Added test to cover.
This commit is contained in:
parent
c314a60a16
commit
51287d545b
@ -73,7 +73,7 @@ class SearchOptions
|
||||
}
|
||||
|
||||
if (isset($inputs['types']) && count($inputs['types']) < 4) {
|
||||
$cleanedFilters[] = new FilterSearchOption(implode('|', $inputs['types']), 'types');
|
||||
$cleanedFilters[] = new FilterSearchOption(implode('|', $inputs['types']), 'type');
|
||||
}
|
||||
|
||||
$instance->filters = new SearchOptionSet($cleanedFilters);
|
||||
@ -235,11 +235,14 @@ class SearchOptions
|
||||
{
|
||||
$options = [];
|
||||
|
||||
// Non-[created/updated]-by-me options
|
||||
// Handle filters without UI support
|
||||
$userFilters = ['updated_by', 'created_by', 'owned_by'];
|
||||
$unsupportedFilters = ['is_template', 'sort_by'];
|
||||
foreach ($this->filters->all() as $filter) {
|
||||
if (in_array($filter->getKey(), $userFilters, true) && $filter->value !== null && $filter->value !== 'me') {
|
||||
$options[] = $filter;
|
||||
} else if (in_array($filter->getKey(), $unsupportedFilters, true)) {
|
||||
$options[] = $filter;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -573,8 +573,8 @@ class EntitySearchTest extends TestCase
|
||||
|
||||
public function test_searches_with_terms_without_controls_includes_them_in_extras()
|
||||
{
|
||||
$resp = $this->asEditor()->get('/search?term=' . urlencode('test {updated_by:dan} {created_by:dan} -{viewed_by_me} -[a=b] -"dog"'));
|
||||
$this->withHtml($resp)->assertFieldHasValue('extras', '{updated_by:dan} {created_by:dan} -"dog" -[a=b] -{viewed_by_me}');
|
||||
$resp = $this->asEditor()->get('/search?term=' . urlencode('test {updated_by:dan} {created_by:dan} -{viewed_by_me} -[a=b] -"dog" {is_template} {sort_by:last_commented}'));
|
||||
$this->withHtml($resp)->assertFieldHasValue('extras', '{updated_by:dan} {created_by:dan} {is_template} {sort_by:last_commented} -"dog" -[a=b] -{viewed_by_me}');
|
||||
}
|
||||
|
||||
public function test_negated_searches_dont_show_in_inputs()
|
||||
|
@ -113,6 +113,19 @@ class SearchOptionsTest extends TestCase
|
||||
$this->assertEquals(['"cheese"', '""', '"baked', 'beans"'], $options->exacts->toValueArray());
|
||||
}
|
||||
|
||||
public function test_from_request_properly_parses_provided_types()
|
||||
{
|
||||
$request = new Request([
|
||||
'search' => '',
|
||||
'types' => ['page', 'book'],
|
||||
]);
|
||||
|
||||
$options = SearchOptions::fromRequest($request);
|
||||
$filters = $options->filters->toValueMap();
|
||||
$this->assertCount(1, $filters);
|
||||
$this->assertEquals('page|book', $filters['type'] ?? 'notfound');
|
||||
}
|
||||
|
||||
public function test_from_request_properly_parses_out_extras_as_string()
|
||||
{
|
||||
$request = new Request([
|
||||
|
Loading…
x
Reference in New Issue
Block a user