forked from gitea/gitea
		
	Add ONLY_SHOW_RELEVANT_REPOS back, fix explore page bug, make code more strict (#23766)
Follow #21962 After I eat my own dogfood, I would say that ONLY_SHOW_RELEVANT_REPOS=false is necessary for many private/enterprise instances, because many private repositories do not have "description/topic", users just want to search by their names. This PR also adds `PageIsExploreRepositories` check, to make code more strict, because the `search` template is shared for different purpose. And during the test, I found a bug that the "Search" button didn't respect the "relevant" parameter, so this PR fixes the bug by the way together. I think this PR needs to be backported.
This commit is contained in:
		
							parent
							
								
									ed5e7d03c6
								
							
						
					
					
						commit
						e57e1144c5
					
				| @ -1238,6 +1238,10 @@ ROUTER = console | ||||
| ;; | ||||
| ;; Whether to enable a Service Worker to cache frontend assets | ||||
| ;USE_SERVICE_WORKER = false | ||||
| ;; | ||||
| ;; Whether to only show relevant repos on the explore page when no keyword is specified and default sorting is used. | ||||
| ;; A repo is considered irrelevant if it's a fork or if it has no metadata (no description, no icon, no topic). | ||||
| ;ONLY_SHOW_RELEVANT_REPOS = false | ||||
| 
 | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
|  | ||||
| @ -226,11 +226,13 @@ The following configuration set `Content-Type: application/vnd.android.package-a | ||||
|     Values can be emoji alias (:smile:) or a unicode emoji. | ||||
|     For custom reactions, add a tightly cropped square image to public/img/emoji/reaction_name.png | ||||
| - `CUSTOM_EMOJIS`: **gitea, codeberg, gitlab, git, github, gogs**: Additional Emojis not defined in the utf8 standard. | ||||
|     By default we support Gitea (:gitea:), to add more copy them to public/img/emoji/emoji_name.png and | ||||
|     By default, we support Gitea (:gitea:), to add more copy them to public/img/emoji/emoji_name.png and | ||||
|     add it to this config. | ||||
| - `DEFAULT_SHOW_FULL_NAME`: **false**: Whether the full name of the users should be shown where possible. If the full name isn't set, the username will be used. | ||||
| - `SEARCH_REPO_DESCRIPTION`: **true**: Whether to search within description at repository search on explore page. | ||||
| - `USE_SERVICE_WORKER`: **false**: Whether to enable a Service Worker to cache frontend assets. | ||||
| - `ONLY_SHOW_RELEVANT_REPOS`: **false** Whether to only show relevant repos on the explore page when no keyword is specified and default sorting is used. | ||||
|     A repo is considered irrelevant if it's a fork or if it has no metadata (no description, no icon, no topic). | ||||
| 
 | ||||
| ### UI - Admin (`ui.admin`) | ||||
| 
 | ||||
|  | ||||
| @ -139,6 +139,9 @@ func loadUIFrom(rootCfg ConfigProvider) { | ||||
| 	UI.DefaultShowFullName = sec.Key("DEFAULT_SHOW_FULL_NAME").MustBool(false) | ||||
| 	UI.SearchRepoDescription = sec.Key("SEARCH_REPO_DESCRIPTION").MustBool(true) | ||||
| 	UI.UseServiceWorker = sec.Key("USE_SERVICE_WORKER").MustBool(false) | ||||
| 
 | ||||
| 	// OnlyShowRelevantRepos=false is important for many private/enterprise instances, | ||||
| 	// because many private repositories do not have "description/topic", users just want to search by their names. | ||||
| 	UI.OnlyShowRelevantRepos = sec.Key("ONLY_SHOW_RELEVANT_REPOS").MustBool(false) | ||||
| 
 | ||||
| 	UI.ReactionsLookup = make(container.Set[string]) | ||||
|  | ||||
| @ -4,6 +4,7 @@ | ||||
| package explore | ||||
| 
 | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"net/http" | ||||
| 
 | ||||
| 	"code.gitea.io/gitea/models/db" | ||||
| @ -18,7 +19,7 @@ import ( | ||||
| const ( | ||||
| 	// tplExploreRepos explore repositories page template | ||||
| 	tplExploreRepos        base.TplName = "explore/repos" | ||||
| 	relevantReposOnlyParam string       = "no_filter" | ||||
| 	relevantReposOnlyParam string       = "only_show_relevant" | ||||
| ) | ||||
| 
 | ||||
| // RepoSearchOptions when calling search repositories | ||||
| @ -137,7 +138,7 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) { | ||||
| 	pager.SetDefaultParams(ctx) | ||||
| 	pager.AddParam(ctx, "topic", "TopicOnly") | ||||
| 	pager.AddParam(ctx, "language", "Language") | ||||
| 	pager.AddParamString(relevantReposOnlyParam, ctx.FormString(relevantReposOnlyParam)) | ||||
| 	pager.AddParamString(relevantReposOnlyParam, fmt.Sprint(opts.OnlyShowRelevant)) | ||||
| 	ctx.Data["Page"] = pager | ||||
| 
 | ||||
| 	ctx.HTML(http.StatusOK, opts.TplName) | ||||
| @ -156,11 +157,18 @@ func Repos(ctx *context.Context) { | ||||
| 		ownerID = ctx.Doer.ID | ||||
| 	} | ||||
| 
 | ||||
| 	onlyShowRelevant := setting.UI.OnlyShowRelevantRepos | ||||
| 
 | ||||
| 	_ = ctx.Req.ParseForm() // parse the form first, to prepare the ctx.Req.Form field | ||||
| 	if len(ctx.Req.Form[relevantReposOnlyParam]) != 0 { | ||||
| 		onlyShowRelevant = ctx.FormBool(relevantReposOnlyParam) | ||||
| 	} | ||||
| 
 | ||||
| 	RenderRepoSearch(ctx, &RepoSearchOptions{ | ||||
| 		PageSize:         setting.UI.ExplorePagingNum, | ||||
| 		OwnerID:          ownerID, | ||||
| 		Private:          ctx.Doer != nil, | ||||
| 		TplName:          tplExploreRepos, | ||||
| 		OnlyShowRelevant: !ctx.FormBool(relevantReposOnlyParam), | ||||
| 		OnlyShowRelevant: onlyShowRelevant, | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| @ -26,12 +26,15 @@ | ||||
| 	<input type="hidden" name="language" value="{{$.Language}}"> | ||||
| 	<div class="ui fluid action input"> | ||||
| 		<input name="q" value="{{.Keyword}}" placeholder="{{.locale.Tr "explore.search"}}…" autofocus> | ||||
| 		{{if .PageIsExploreRepositories}} | ||||
| 			<input type="hidden" name="only_show_relevant" value="{{.OnlyShowRelevant}}"> | ||||
| 		{{end}} | ||||
| 		<button class="ui primary button">{{.locale.Tr "explore.search"}}</button> | ||||
| 	</div> | ||||
| </form> | ||||
| {{if .OnlyShowRelevant}} | ||||
| {{if and .PageIsExploreRepositories .OnlyShowRelevant}} | ||||
| 	<div class="ui message explore-relevancy-note"> | ||||
| 		<span data-tooltip-content="{{.locale.Tr "explore.relevant_repositories_tooltip"}}">{{.locale.Tr "explore.relevant_repositories" ((printf "%s%s" $.Link "?no_filter=1")|Escape) | Safe}}</span> | ||||
| 		<span data-tooltip-content="{{.locale.Tr "explore.relevant_repositories_tooltip"}}">{{.locale.Tr "explore.relevant_repositories" ((printf "%s%s" $.Link "?only_show_relevant=0")|Escape) | Safe}}</span> | ||||
| 	</div> | ||||
| {{end}} | ||||
| <div class="ui divider"></div> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 wxiaoguang
						wxiaoguang