[FEAT] branch/tag dropdown for git-grep (#4262)

#3654 introduced support for searching non-default branches and tags.

However, the results page lacked any indicator (aside from the url) on which branch/tag the searcg was performed. A branch dropdown was introduced to the code search page when git-grep is used both as an indicator and as a intrusive way to switch between branches/tags.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/4262
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Shiny Nematoda <snematoda.751k2@aleeas.com>
Co-committed-by: Shiny Nematoda <snematoda.751k2@aleeas.com>
This commit is contained in:
Shiny Nematoda 2024-06-29 06:57:34 +00:00 committed by Earl Warren
parent 153758d4de
commit 8546b01249
3 changed files with 14 additions and 2 deletions

View file

@ -0,0 +1 @@
Introduced branch/tag dropdown in code search page if using git-grep.

View file

@ -2,6 +2,12 @@
<div role="main" aria-label="{{.Title}}" class="page-content repository file list"> <div role="main" aria-label="{{.Title}}" class="page-content repository file list">
{{template "repo/header" .}} {{template "repo/header" .}}
<div class="ui container"> <div class="ui container">
{{if $.CodeIndexerDisabled}}
{{$branchURLPrefix := printf "%s/search/branch/" $.RepoLink}}
{{$tagURLPrefix := printf "%s/search/tag/" $.RepoLink}}
{{$suffix := printf "?q=%s&fuzzy=%t" (.Keyword|QueryEscape) .IsFuzzy}}
{{template "repo/branch_dropdown" dict "root" . "ContainerClasses" "tw-mb-3" "branchURLPrefix" $branchURLPrefix "branchURLSuffix" $suffix "tagURLPrefix" $tagURLPrefix "tagURLSuffix" $suffix}}
{{end}}
{{template "shared/search/code/search" .}} {{template "shared/search/code/search" .}}
</div> </div>
</div> </div>

View file

@ -94,8 +94,13 @@ func testSearch(t *testing.T, url string, expected []string, indexer bool) {
resp := MakeRequest(t, req, http.StatusOK) resp := MakeRequest(t, req, http.StatusOK)
doc := NewHTMLParser(t, resp.Body) doc := NewHTMLParser(t, resp.Body)
msg := doc.Find(".repository").Find(".ui.container").Find(".ui.message[data-test-tag=grep]") container := doc.Find(".repository").Find(".ui.container")
assert.EqualValues(t, indexer, len(msg.Nodes) == 0)
grepMsg := container.Find(".ui.message[data-test-tag=grep]")
assert.EqualValues(t, indexer, len(grepMsg.Nodes) == 0)
branchDropdown := container.Find(".js-branch-tag-selector")
assert.EqualValues(t, indexer, len(branchDropdown.Nodes) == 0)
filenames := resultFilenames(t, doc) filenames := resultFilenames(t, doc)
assert.EqualValues(t, expected, filenames) assert.EqualValues(t, expected, filenames)