}
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);
{
$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;
}
}
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()
$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([