mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-28 04:06:18 +01:00
Allow both fullname and username search when DEFAULT_SHOW_FULL_NAME
is true (#23463)
This PR adds the ability to search both fullname and username for
assignees, reviewers and author search boxes when the config
[`DEFAULT_SHOW_FULL_NAME`](6ff5400af9/custom/conf/app.example.ini (L1238)
)
in `app.ini` is set to `true`. Which is originally raised
[here](https://projects.blender.org/infrastructure/blender-projects-platform/issues/14)
And if `DEFAULT_SHOW_FULL_NAME` is set to `false`(default value), these
search boxes will only show username.
Example:
When `DEFAULT_SHOW_FULL_NAME = true`
<img width="1220" alt="截屏2023-03-14 14 28 06"
src="https://user-images.githubusercontent.com/17645053/224914546-80ef2837-ab72-4d66-9f00-6eb77ed4baaa.png">
When `DEFAULT_SHOW_FULL_NAME = false` (default value)
<img width="1243" alt="截屏2023-03-14 14 29 37"
src="https://user-images.githubusercontent.com/17645053/224914798-f69ec8a2-0929-4330-827c-3e30188f9b47.png">
The specific search boxes that adapts these changes include:
1. Author, Assignee search boxes in pull requests tab and issues tab in
repository
<img width="1283" alt="截屏2023-03-14 14 35 01"
src="https://user-images.githubusercontent.com/17645053/224916250-8e452525-71d6-4b48-bf1c-bf7a176abaaa.png">
2. Assigee and Author on milestones issue page (Added missing search box
for author here)
<img width="1261" alt="截屏2023-03-14 14 38 20"
src="https://user-images.githubusercontent.com/17645053/224916569-d3105619-7824-4bb8-a6d0-1a600eaa9963.png">
3. Assignee on issues and PR Sidebar, Reviewer on PR Sidebar
<img width="976" alt="截屏2023-03-14 14 41 06"
src="https://user-images.githubusercontent.com/17645053/224917431-c45d821e-9660-4f58-a196-5979a0bb64ce.png">
<img width="1027" alt="截屏2023-03-14 14 41 58"
src="https://user-images.githubusercontent.com/17645053/224917290-ad4dbc52-0c20-45c4-9fce-9dcd59ad7d47.png">
4. Assignee when creating new issue
<img width="961" alt="截屏2023-03-14 14 44 33"
src="https://user-images.githubusercontent.com/17645053/224917694-34bee5a7-e975-4f37-8862-56ebc2556808.png">
5. Whitelisted users for pushing, Whitelisted users for merging and
Whitelisted reviewers in Protected branch settings
<img width="920" alt="截屏2023-03-14 14 48 56"
src="https://user-images.githubusercontent.com/17645053/224918551-9b46b44e-b075-4895-8d33-1aafc7d3c8e5.png">
<img width="901" alt="截屏2023-03-14 14 49 02"
src="https://user-images.githubusercontent.com/17645053/224918584-efa66f23-a593-4e26-a3eb-bb1fbc5516ae.png">
<img width="944" alt="截屏2023-03-14 14 49 21"
src="https://user-images.githubusercontent.com/17645053/224918591-be60455d-0513-4f66-84f6-b5e1bc40ff91.png">
6. "Allowed users" in tags settings
<img width="935" alt="截屏2023-03-14 14 50 11"
src="https://user-images.githubusercontent.com/17645053/224918701-797699aa-c7e5-4290-b3fe-27dcead1c6c7.png">
This commit is contained in:
parent
4938945668
commit
661e78bed5
9 changed files with 23 additions and 18 deletions
|
@ -109,6 +109,9 @@ func NewFuncMap() []template.FuncMap {
|
||||||
"CustomEmojis": func() map[string]string {
|
"CustomEmojis": func() map[string]string {
|
||||||
return setting.UI.CustomEmojisMap
|
return setting.UI.CustomEmojisMap
|
||||||
},
|
},
|
||||||
|
"IsShowFullName": func() bool {
|
||||||
|
return setting.UI.DefaultShowFullName
|
||||||
|
},
|
||||||
"Safe": Safe,
|
"Safe": Safe,
|
||||||
"SafeJS": SafeJS,
|
"SafeJS": SafeJS,
|
||||||
"JSEscape": JSEscape,
|
"JSEscape": JSEscape,
|
||||||
|
|
|
@ -134,7 +134,7 @@
|
||||||
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}">{{.locale.Tr "repo.issues.filter_poster_no_select"}}</a>
|
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}">{{.locale.Tr "repo.issues.filter_poster_no_select"}}</a>
|
||||||
{{range .Posters}}
|
{{range .Posters}}
|
||||||
<a class="{{if eq $.PosterID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{.ID}}">
|
<a class="{{if eq $.PosterID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{$.AssigneeID}}&poster={{.ID}}">
|
||||||
{{avatar $.Context .}} {{.GetDisplayName}}
|
{{avatar $.Context .}}{{template "repo/search_name" .}}
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -154,7 +154,7 @@
|
||||||
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&poster={{$.PosterID}}">{{.locale.Tr "repo.issues.filter_assginee_no_select"}}</a>
|
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&poster={{$.PosterID}}">{{.locale.Tr "repo.issues.filter_assginee_no_select"}}</a>
|
||||||
{{range .Assignees}}
|
{{range .Assignees}}
|
||||||
<a class="{{if eq $.AssigneeID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{.ID}}&poster={{$.PosterID}}">
|
<a class="{{if eq $.AssigneeID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{$.MilestoneID}}&project={{$.ProjectID}}&assignee={{.ID}}&poster={{$.PosterID}}">
|
||||||
{{avatar $.Context .}} {{.GetDisplayName}}
|
{{avatar $.Context .}}{{template "repo/search_name" .}}
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -70,10 +70,14 @@
|
||||||
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
|
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
|
||||||
</span>
|
</span>
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
|
<div class="ui icon search input">
|
||||||
|
<i class="icon gt-df gt-ac gt-jc">{{svg "octicon-search" 16}}</i>
|
||||||
|
<input type="text" placeholder="{{.locale.Tr "repo.issues.filter_poster"}}">
|
||||||
|
</div>
|
||||||
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&assignee={{$.AssigneeID}}">{{.locale.Tr "repo.issues.filter_poster_no_select"}}</a>
|
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&assignee={{$.AssigneeID}}">{{.locale.Tr "repo.issues.filter_poster_no_select"}}</a>
|
||||||
{{range .Posters}}
|
{{range .Posters}}
|
||||||
<a class="{{if eq $.PosterID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&assignee={{$.AssigneeID}}&poster={{.ID}}">
|
<a class="{{if eq $.PosterID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&assignee={{$.AssigneeID}}&poster={{.ID}}">
|
||||||
{{avatar $.Context .}} {{.GetDisplayName}}
|
{{avatar $.Context .}}{{template "repo/search_name" .}}
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -93,8 +97,7 @@
|
||||||
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&poster={{$.PosterID}}">{{.locale.Tr "repo.issues.filter_assginee_no_select"}}</a>
|
<a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&poster={{$.PosterID}}">{{.locale.Tr "repo.issues.filter_assginee_no_select"}}</a>
|
||||||
{{range .Assignees}}
|
{{range .Assignees}}
|
||||||
<a class="{{if eq $.AssigneeID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&assignee={{.ID}}&poster={{$.PosterID}}">
|
<a class="{{if eq $.AssigneeID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&assignee={{.ID}}&poster={{$.PosterID}}">
|
||||||
{{avatar $.Context . 28 "gt-mr-2"}}
|
{{avatar $.Context . 28 "gt-mr-2"}}{{template "repo/search_name" .}}
|
||||||
{{.GetDisplayName}}
|
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -186,7 +186,7 @@
|
||||||
<a class="item muted" href="#" data-id="{{.ID}}" data-id-selector="#assignee_{{.ID}}">
|
<a class="item muted" href="#" data-id="{{.ID}}" data-id-selector="#assignee_{{.ID}}">
|
||||||
<span class="octicon-check invisible">{{svg "octicon-check"}}</span>
|
<span class="octicon-check invisible">{{svg "octicon-check"}}</span>
|
||||||
<span class="text">
|
<span class="text">
|
||||||
{{avatar $.Context . 28 "gt-mr-3"}}{{.GetDisplayName}}
|
{{avatar $.Context . 28 "gt-mr-3"}}{{template "repo/search_name" .}}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
|
@ -26,8 +26,7 @@
|
||||||
<a class="{{if not .CanChange}}ui tooltip{{end}} item {{if .Checked}} checked {{end}} {{if not .CanChange}}ban-change{{end}}" href="#" data-id="{{.ItemID}}" data-id-selector="#review_request_{{.ItemID}}" {{if not .CanChange}} data-content="{{$.locale.Tr "repo.issues.remove_request_review_block"}}"{{end}}>
|
<a class="{{if not .CanChange}}ui tooltip{{end}} item {{if .Checked}} checked {{end}} {{if not .CanChange}}ban-change{{end}}" href="#" data-id="{{.ItemID}}" data-id-selector="#review_request_{{.ItemID}}" {{if not .CanChange}} data-content="{{$.locale.Tr "repo.issues.remove_request_review_block"}}"{{end}}>
|
||||||
<span class="octicon-check {{if not .Checked}}invisible{{end}}">{{svg "octicon-check"}}</span>
|
<span class="octicon-check {{if not .Checked}}invisible{{end}}">{{svg "octicon-check"}}</span>
|
||||||
<span class="text">
|
<span class="text">
|
||||||
{{avatar $.Context .User 28 "gt-mr-3"}}
|
{{avatar $.Context .User 28 "gt-mr-3"}}{{template "repo/search_name" .User}}
|
||||||
{{.User.GetDisplayName}}
|
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
@ -258,8 +257,7 @@
|
||||||
{{end}}
|
{{end}}
|
||||||
<span class="octicon-check {{if not $checked}}invisible{{end}}">{{svg "octicon-check"}}</span>
|
<span class="octicon-check {{if not $checked}}invisible{{end}}">{{svg "octicon-check"}}</span>
|
||||||
<span class="text">
|
<span class="text">
|
||||||
{{avatar $.Context . 28 "gt-mr-3"}}
|
{{avatar $.Context . 28 "gt-mr-3"}}{{template "repo/search_name" .}}
|
||||||
{{.GetDisplayName}}
|
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
1
templates/repo/search_name.tmpl
Normal file
1
templates/repo/search_name.tmpl
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{{.Name}}{{if IsShowFullName}}<span class="search-fullname"> {{.FullName}}</span>{{end}}
|
|
@ -49,8 +49,7 @@
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
{{range .Users}}
|
{{range .Users}}
|
||||||
<div class="item" data-value="{{.ID}}">
|
<div class="item" data-value="{{.ID}}">
|
||||||
{{avatar $.Context . 28 "mini"}}
|
{{avatar $.Context . 28 "mini"}}{{template "repo/search_name" .}}
|
||||||
{{.GetDisplayName}}
|
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -101,8 +100,7 @@
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
{{range .Users}}
|
{{range .Users}}
|
||||||
<div class="item" data-value="{{.ID}}">
|
<div class="item" data-value="{{.ID}}">
|
||||||
{{avatar $.Context . 28 "mini"}}
|
{{avatar $.Context . 28 "mini"}}{{template "repo/search_name" .}}
|
||||||
{{.GetDisplayName}}
|
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -181,8 +179,7 @@
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
{{range .Users}}
|
{{range .Users}}
|
||||||
<div class="item" data-value="{{.ID}}">
|
<div class="item" data-value="{{.ID}}">
|
||||||
{{avatar $.Context . 28 "mini"}}
|
{{avatar $.Context . 28 "mini"}}{{template "repo/search_name" .}}
|
||||||
{{.GetDisplayName}}
|
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -36,8 +36,7 @@
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
{{range .Users}}
|
{{range .Users}}
|
||||||
<div class="item" data-value="{{.ID}}">
|
<div class="item" data-value="{{.ID}}">
|
||||||
{{avatar $.Context . 28 "mini"}}
|
{{avatar $.Context . 28 "mini"}}{{template "repo/search_name" .}}
|
||||||
{{.GetDisplayName}}
|
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3627,3 +3627,7 @@ td.blob-excerpt {
|
||||||
.pr-status .status-details > span {
|
.pr-status .status-details > span {
|
||||||
padding-right: 0.5em; /* To match the alignment with the "required" label */
|
padding-right: 0.5em; /* To match the alignment with the "required" label */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.search-fullname {
|
||||||
|
color: var(--color-text-light-2);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue