* Support multi-substring search in project selector
* Use TypeaheadFilter with ** operator for project selector search
Separate the ~ (contains) and ** (everywhere/typeahead) operator paths
in NameFilter: ~ keeps single-substring LIKE behavior for explicit
user-facing filters; ** now splits on whitespace and ANDs all tokens,
enabling multi-term search.
Switch SearchableProjectListService from ['name', '~', ...] to
['typeahead', '**', ...] so the project selector routes through
TypeaheadFilter, which inherits the multi-term ** behavior automatically.
* harden the feature spec to also check that the filter still excludes
This error is intended for cases when a method is
intentionally not implemented, because the module/class defining
it expects a subclass (or class including the module) to implement
the method.
This is intended to distinguish it from other cases, such as:
* feature not implemented yet
* edge case of a method call not yet supported
Notably it avoids the misuse of the Ruby-defined NotImplementedError,
which is only intended for much more specific scenarios:
> Raised when a feature is not implemented on the current platform. For example, methods depending on the fsync or fork system calls may raise this exception [...]
Also see https://docs.ruby-lang.org/en/master/NotImplementedError.html
[#68702] Clean up custom field filter spec
[#68702] Clean up Project table spec
[#68702] Add project list filter spec for groups and placeholder users
[#68702] User filter matches group membership
[#68702] Add specs for group membership filtering
This is consistent with what we expose via the API, where we never tried
to hide this data. It was effectively only hidden from the UI.
We couldn't come up with a reason why it was hidden from the UI back then,
but since we now needed to expose updated_at to everyone (previous commit),
it only made sense to consistently also allow created_at to be seen by everyone.
The main motivation to add this was to allow filtering by it via API.
Though consistently, we've now enabled it to be usable from the UI as well,
where updated_at is now available as a column and for filtering and ordering.
Favorite is the correct term in the context of expressing a preference
for a particular project / other OpenProject domain object.
Updates `ActsAsFavorable` to `ActsAsFavoritable`, as well as filenames,
identifiers and strings to:
favored => favorited
favorable => favoritable
favoring => favoriting
This effectively removes the year from a bunch of copyright headers.
We stopped indicating a specific year at some point, but
didn't propagate this change to every file yet.