mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	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:
		@@ -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>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user