Previously a query was only parsed by lucene as it is, if the query
contained a colon (:) or a wildcard character (*). With this, every query
gets parsed as it is, as long as there is one operator contained inside
the query (colon, quotation marks, logical operators, ...). These are
called "expert queries". All other queries are still processed as
"simple queries" where every part of the query is extended with a
wildcard operator.
Addtionally the user is now getting feedback for every
search, if the query is a simple query or an expert query. The syntax
documentation got also extended with the quotation mark operator
and the definition of the two query types.
Co-authored-by: René Pfeuffer<rene.pfeuffer@cloudogu.com>
The path gets remembered by a query parameter.
Using React state to remember the current path has two downsides.
First you would need to wrap the components in a context and store the current state there.
Second the remembered state gets lost by refreshing the state.
By using a query parameter those two downside get avoided.
Committed-by: Thomas Zerr<thomas.zerr@cloudogu.com>
Co-authored-by: Thomas Zerr<thomas.zerr@cloudogu.com>
Pushed-by: Thomas Zerr<thomas.zerr@cloudogu.com>
In the source view, links from plugins had been removed, when more files
had been fetched using the 'proceed' link for more than 100 files. This
caused the issue, that buttons from plugins (like "upload file" from the
editor plugin) did no longer show up after loading more files.

Now, we keep all links from the first page except the proceed link.
Pushed-by: Rene Pfeuffer<rene.pfeuffer@cloudogu.com>
Co-authored-by: René Pfeuffer<rene.pfeuffer@cloudogu.com>
Committed-by: René Pfeuffer<rene.pfeuffer@cloudogu.com>
In the general admin settings, the user can find two button to either invalidate the cache or rebuild the search index.

The endpoints are defined in the InvalidationResource class in scm-webapp.
Co-authored-by: René Pfeuffer<rene.pfeuffer@cloudogu.com>
This allows re-rendering of useLocalStorage hooks whenever the value for the associated key changes. In the previous implementation, reading and writing via useLocalStorage did not cause a re-render and was therefore impossible.
- Sort repositories alphanumerically case insensitive per namespace
- Make the namespaces collapsible and store the collapsed state in local storage
Committed-by: Konstantin Schaper <konstantin.schaper@cloudogu.com>
Make the repository file search deactivatable
via the global config. This feature could
overwhelm the server on repositories with
millions of file therefore it now can be turned off.
Committed-by: Rene Pfeuffer <rene.pfeuffer@cloudogu.com>
Co-authored-by: Konstantin Schaper <konstantin.schaper@cloudogu.com>
We introduced a new accessible combobox component. This component is based on headless ui and made compatible with our components and forms. Also we replaced the outdated `Autocomplete` component with the new combobox.
Co-authored-by: Konstantin Schaper <konstantin.schaper@cloudogu.com>
Reviewed-by: Florian Scholdei <florian.scholdei@cloudogu.com>