Filter Repositories by type (resolves #1170, #1318) before: ![image](https://github.com/go-gitea/gitea/assets/72873130/74e6be62-9010-4ab4-8f9b-bd8afbebb8fb) after: ![image](https://github.com/go-gitea/gitea/assets/72873130/e4d85ed6-7864-4150-8d72-5194dac1293f)tags/v1.22.0-rc0
name = Name | name = Name | ||||
value = Value | value = Value | ||||
filter = Filter | |||||
filter.clear = Clear Filter | |||||
filter.is_archived = Archived | |||||
filter.not_archived = Not Archived | |||||
filter.is_fork = Forked | |||||
filter.not_fork = Not Forked | |||||
filter.is_mirror = Mirrored | |||||
filter.not_mirror = Not Mirrored | |||||
filter.is_template = Template | |||||
filter.not_template = Not Template | |||||
filter.public = Public | |||||
filter.private = Private | |||||
[aria] | [aria] | ||||
navbar = Navigation Bar | navbar = Navigation Bar | ||||
footer = Footer | footer = Footer |
language := ctx.FormTrim("language") | language := ctx.FormTrim("language") | ||||
ctx.Data["Language"] = language | ctx.Data["Language"] = language | ||||
archived := ctx.FormOptionalBool("archived") | |||||
ctx.Data["IsArchived"] = archived | |||||
fork := ctx.FormOptionalBool("fork") | |||||
ctx.Data["IsFork"] = fork | |||||
mirror := ctx.FormOptionalBool("mirror") | |||||
ctx.Data["IsMirror"] = mirror | |||||
template := ctx.FormOptionalBool("template") | |||||
ctx.Data["IsTemplate"] = template | |||||
private := ctx.FormOptionalBool("private") | |||||
ctx.Data["IsPrivate"] = private | |||||
repos, count, err = repo_model.SearchRepository(ctx, &repo_model.SearchRepoOptions{ | repos, count, err = repo_model.SearchRepository(ctx, &repo_model.SearchRepoOptions{ | ||||
ListOptions: db.ListOptions{ | ListOptions: db.ListOptions{ | ||||
Page: page, | Page: page, | ||||
Language: language, | Language: language, | ||||
IncludeDescription: setting.UI.SearchRepoDescription, | IncludeDescription: setting.UI.SearchRepoDescription, | ||||
OnlyShowRelevant: opts.OnlyShowRelevant, | OnlyShowRelevant: opts.OnlyShowRelevant, | ||||
Archived: archived, | |||||
Fork: fork, | |||||
Mirror: mirror, | |||||
Template: template, | |||||
IsPrivate: private, | |||||
}) | }) | ||||
if err != nil { | if err != nil { | ||||
ctx.ServerError("SearchRepository", err) | ctx.ServerError("SearchRepository", err) |
page = 1 | page = 1 | ||||
} | } | ||||
archived := ctx.FormOptionalBool("archived") | |||||
ctx.Data["IsArchived"] = archived | |||||
fork := ctx.FormOptionalBool("fork") | |||||
ctx.Data["IsFork"] = fork | |||||
mirror := ctx.FormOptionalBool("mirror") | |||||
ctx.Data["IsMirror"] = mirror | |||||
template := ctx.FormOptionalBool("template") | |||||
ctx.Data["IsTemplate"] = template | |||||
private := ctx.FormOptionalBool("private") | |||||
ctx.Data["IsPrivate"] = private | |||||
var ( | var ( | ||||
repos []*repo_model.Repository | repos []*repo_model.Repository | ||||
count int64 | count int64 | ||||
Actor: ctx.Doer, | Actor: ctx.Doer, | ||||
Language: language, | Language: language, | ||||
IncludeDescription: setting.UI.SearchRepoDescription, | IncludeDescription: setting.UI.SearchRepoDescription, | ||||
Archived: archived, | |||||
Fork: fork, | |||||
Mirror: mirror, | |||||
Template: template, | |||||
IsPrivate: private, | |||||
}) | }) | ||||
if err != nil { | if err != nil { | ||||
ctx.ServerError("SearchRepository", err) | ctx.ServerError("SearchRepository", err) |
orderBy = db.SearchOrderByRecentUpdated | orderBy = db.SearchOrderByRecentUpdated | ||||
} | } | ||||
archived := ctx.FormOptionalBool("archived") | |||||
ctx.Data["IsArchived"] = archived | |||||
fork := ctx.FormOptionalBool("fork") | |||||
ctx.Data["IsFork"] = fork | |||||
mirror := ctx.FormOptionalBool("mirror") | |||||
ctx.Data["IsMirror"] = mirror | |||||
template := ctx.FormOptionalBool("template") | |||||
ctx.Data["IsTemplate"] = template | |||||
private := ctx.FormOptionalBool("private") | |||||
ctx.Data["IsPrivate"] = private | |||||
repos, count, err := repo_model.SearchRepository(ctx, &repo_model.SearchRepoOptions{ | repos, count, err := repo_model.SearchRepository(ctx, &repo_model.SearchRepoOptions{ | ||||
ListOptions: db.ListOptions{ | ListOptions: db.ListOptions{ | ||||
PageSize: setting.UI.User.RepoPagingNum, | PageSize: setting.UI.User.RepoPagingNum, | ||||
Collaborate: optional.Some(false), | Collaborate: optional.Some(false), | ||||
TopicOnly: ctx.FormBool("topic"), | TopicOnly: ctx.FormBool("topic"), | ||||
IncludeDescription: setting.UI.SearchRepoDescription, | IncludeDescription: setting.UI.SearchRepoDescription, | ||||
Archived: archived, | |||||
Fork: fork, | |||||
Mirror: mirror, | |||||
Template: template, | |||||
IsPrivate: private, | |||||
}) | }) | ||||
if err != nil { | if err != nil { | ||||
ctx.ServerError("SearchRepository", err) | ctx.ServerError("SearchRepository", err) |
} | } | ||||
ctx.Data["NumFollowing"] = numFollowing | ctx.Data["NumFollowing"] = numFollowing | ||||
archived := ctx.FormOptionalBool("archived") | |||||
ctx.Data["IsArchived"] = archived | |||||
fork := ctx.FormOptionalBool("fork") | |||||
ctx.Data["IsFork"] = fork | |||||
mirror := ctx.FormOptionalBool("mirror") | |||||
ctx.Data["IsMirror"] = mirror | |||||
template := ctx.FormOptionalBool("template") | |||||
ctx.Data["IsTemplate"] = template | |||||
private := ctx.FormOptionalBool("private") | |||||
ctx.Data["IsPrivate"] = private | |||||
switch tab { | switch tab { | ||||
case "followers": | case "followers": | ||||
ctx.Data["Cards"] = followers | ctx.Data["Cards"] = followers | ||||
TopicOnly: topicOnly, | TopicOnly: topicOnly, | ||||
Language: language, | Language: language, | ||||
IncludeDescription: setting.UI.SearchRepoDescription, | IncludeDescription: setting.UI.SearchRepoDescription, | ||||
Archived: archived, | |||||
Fork: fork, | |||||
Mirror: mirror, | |||||
Template: template, | |||||
IsPrivate: private, | |||||
}) | }) | ||||
if err != nil { | if err != nil { | ||||
ctx.ServerError("SearchRepository", err) | ctx.ServerError("SearchRepository", err) | ||||
TopicOnly: topicOnly, | TopicOnly: topicOnly, | ||||
Language: language, | Language: language, | ||||
IncludeDescription: setting.UI.SearchRepoDescription, | IncludeDescription: setting.UI.SearchRepoDescription, | ||||
Archived: archived, | |||||
Fork: fork, | |||||
Mirror: mirror, | |||||
Template: template, | |||||
IsPrivate: private, | |||||
}) | }) | ||||
if err != nil { | if err != nil { | ||||
ctx.ServerError("SearchRepository", err) | ctx.ServerError("SearchRepository", err) | ||||
TopicOnly: topicOnly, | TopicOnly: topicOnly, | ||||
Language: language, | Language: language, | ||||
IncludeDescription: setting.UI.SearchRepoDescription, | IncludeDescription: setting.UI.SearchRepoDescription, | ||||
Archived: archived, | |||||
Fork: fork, | |||||
Mirror: mirror, | |||||
Template: template, | |||||
IsPrivate: private, | |||||
}) | }) | ||||
if err != nil { | if err != nil { | ||||
ctx.ServerError("SearchRepository", err) | ctx.ServerError("SearchRepository", err) |
</div> | </div> | ||||
</h4> | </h4> | ||||
<div class="ui attached segment"> | <div class="ui attached segment"> | ||||
{{template "admin/repo/search" .}} | |||||
{{template "shared/repo_search" .}} | |||||
</div> | </div> | ||||
<div class="ui attached table segment"> | <div class="ui attached table segment"> | ||||
<table class="ui very basic striped table unstackable"> | <table class="ui very basic striped table unstackable"> |
<div class="ui secondary filter menu gt-ac gt-mx-0"> | |||||
<form class="ui form ignore-dirty gt-f1"> | |||||
<div class="ui fluid action input"> | |||||
{{template "shared/searchinput" dict "Value" .Keyword}} | |||||
<button class="ui primary button">{{ctx.Locale.Tr "explore.search"}}</button> | |||||
</div> | |||||
</form> | |||||
<!-- Sort --> | |||||
<div class="ui dropdown type jump item gt-mr-0"> | |||||
<span class="text"> | |||||
{{ctx.Locale.Tr "repo.issues.filter_sort"}} | |||||
</span> | |||||
{{svg "octicon-triangle-down" 14 "dropdown icon"}} | |||||
<div class="menu"> | |||||
<a class="{{if or (eq .SortType "oldest") (not .SortType)}}active {{end}}item" href="{{$.Link}}?sort=oldest&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.issues.filter_sort.oldest"}}</a> | |||||
<a class="{{if eq .SortType "newest"}}active {{end}}item" href="{{$.Link}}?sort=newest&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.issues.filter_sort.latest"}}</a> | |||||
<a class="{{if eq .SortType "alphabetically"}}active {{end}}item" href="{{$.Link}}?sort=alphabetically&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.issues.label.filter_sort.alphabetically"}}</a> | |||||
<a class="{{if eq .SortType "reversealphabetically"}}active {{end}}item" href="{{$.Link}}?sort=reversealphabetically&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.issues.label.filter_sort.reverse_alphabetically"}}</a> | |||||
<a class="{{if eq .SortType "recentupdate"}}active {{end}}item" href="{{$.Link}}?sort=recentupdate&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.issues.filter_sort.recentupdate"}}</a> | |||||
<a class="{{if eq .SortType "leastupdate"}}active {{end}}item" href="{{$.Link}}?sort=leastupdate&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.issues.filter_sort.leastupdate"}}</a> | |||||
<a class="{{if eq .SortType "moststars"}}active {{end}}item" href="{{$.Link}}?sort=moststars&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.issues.filter_sort.moststars"}}</a> | |||||
<a class="{{if eq .SortType "feweststars"}}active {{end}}item" href="{{$.Link}}?sort=feweststars&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.issues.filter_sort.feweststars"}}</a> | |||||
<a class="{{if eq .SortType "mostforks"}}active {{end}}item" href="{{$.Link}}?sort=mostforks&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.issues.filter_sort.mostforks"}}</a> | |||||
<a class="{{if eq .SortType "fewestforks"}}active {{end}}item" href="{{$.Link}}?sort=fewestforks&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.issues.filter_sort.fewestforks"}}</a> | |||||
<a class="{{if eq .SortType "size"}}active {{end}}item" href="{{$.Link}}?sort=size&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.issues.label.filter_sort.by_size"}}</a> | |||||
<a class="{{if eq .SortType "reversesize"}}active {{end}}item" href="{{$.Link}}?sort=reversesize&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.issues.label.filter_sort.reverse_by_size"}}</a> | |||||
</div> | |||||
</div> | |||||
</div> |
<div class="ui secondary filter menu gt-ac gt-mx-0"> | |||||
<form class="ui form ignore-dirty gt-f1"> | |||||
<input type="hidden" name="sort" value="{{$.SortType}}"> | |||||
<input type="hidden" name="language" value="{{$.Language}}"> | |||||
<div class="ui fluid action input"> | |||||
{{template "shared/searchinput" dict "Value" .Keyword}} | |||||
{{if .PageIsExploreRepositories}} | |||||
<input type="hidden" name="only_show_relevant" value="{{.OnlyShowRelevant}}"> | |||||
{{else if .TabName}} | |||||
<input type="hidden" name="tab" value="{{.TabName}}"> | |||||
{{end}} | |||||
<button class="ui primary button">{{ctx.Locale.Tr "explore.search"}}</button> | |||||
</div> | |||||
</form> | |||||
<!-- Sort --> | |||||
<div class="ui dropdown type jump item gt-mr-0"> | |||||
<span class="text"> | |||||
{{ctx.Locale.Tr "repo.issues.filter_sort"}} | |||||
</span> | |||||
{{svg "octicon-triangle-down" 14 "dropdown icon"}} | |||||
<div class="menu"> | |||||
<a class="{{if eq .SortType "newest"}}active {{end}}item" href="{{$.Link}}?tab={{$.TabName}}&sort=newest&q={{$.Keyword}}&language={{$.Language}}">{{ctx.Locale.Tr "repo.issues.filter_sort.latest"}}</a> | |||||
<a class="{{if eq .SortType "oldest"}}active {{end}}item" href="{{$.Link}}?tab={{$.TabName}}&sort=oldest&q={{$.Keyword}}&language={{$.Language}}">{{ctx.Locale.Tr "repo.issues.filter_sort.oldest"}}</a> | |||||
<a class="{{if eq .SortType "alphabetically"}}active {{end}}item" href="{{$.Link}}?tab={{$.TabName}}&sort=alphabetically&q={{$.Keyword}}&language={{$.Language}}">{{ctx.Locale.Tr "repo.issues.label.filter_sort.alphabetically"}}</a> | |||||
<a class="{{if eq .SortType "reversealphabetically"}}active {{end}}item" href="{{$.Link}}?tab={{$.TabName}}&sort=reversealphabetically&q={{$.Keyword}}&language={{$.Language}}">{{ctx.Locale.Tr "repo.issues.label.filter_sort.reverse_alphabetically"}}</a> | |||||
<a class="{{if eq .SortType "recentupdate"}}active {{end}}item" href="{{$.Link}}?tab={{$.TabName}}&sort=recentupdate&q={{$.Keyword}}&language={{$.Language}}">{{ctx.Locale.Tr "repo.issues.filter_sort.recentupdate"}}</a> | |||||
<a class="{{if eq .SortType "leastupdate"}}active {{end}}item" href="{{$.Link}}?tab={{$.TabName}}&sort=leastupdate&q={{$.Keyword}}&language={{$.Language}}">{{ctx.Locale.Tr "repo.issues.filter_sort.leastupdate"}}</a> | |||||
{{if not .DisableStars}} | |||||
<a class="{{if eq .SortType "moststars"}}active {{end}}item" href="{{$.Link}}?tab={{$.TabName}}&sort=moststars&q={{$.Keyword}}&language={{$.Language}}">{{ctx.Locale.Tr "repo.issues.filter_sort.moststars"}}</a> | |||||
<a class="{{if eq .SortType "feweststars"}}active {{end}}item" href="{{$.Link}}?tab={{$.TabName}}&sort=feweststars&q={{$.Keyword}}&language={{$.Language}}">{{ctx.Locale.Tr "repo.issues.filter_sort.feweststars"}}</a> | |||||
{{end}} | |||||
<a class="{{if eq .SortType "mostforks"}}active {{end}}item" href="{{$.Link}}?tab={{$.TabName}}&sort=mostforks&q={{$.Keyword}}&language={{$.Language}}">{{ctx.Locale.Tr "repo.issues.filter_sort.mostforks"}}</a> | |||||
<a class="{{if eq .SortType "fewestforks"}}active {{end}}item" href="{{$.Link}}?tab={{$.TabName}}&sort=fewestforks&q={{$.Keyword}}&language={{$.Language}}">{{ctx.Locale.Tr "repo.issues.filter_sort.fewestforks"}}</a> | |||||
</div> | |||||
</div> | |||||
</div> | |||||
{{if and .PageIsExploreRepositories .OnlyShowRelevant}} | |||||
<div class="ui message explore-relevancy-note"> | |||||
<span data-tooltip-content="{{ctx.Locale.Tr "explore.relevant_repositories_tooltip"}}">{{ctx.Locale.Tr "explore.relevant_repositories" (printf "?only_show_relevant=0&sort=%s&q=%s&language=%s" $.SortType (QueryEscape $.Keyword) (QueryEscape $.Language))}}</span> | |||||
</div> | |||||
{{end}} | |||||
<div class="divider"></div> |
<div role="main" aria-label="{{.Title}}" class="page-content explore repositories"> | <div role="main" aria-label="{{.Title}}" class="page-content explore repositories"> | ||||
{{template "explore/navbar" .}} | {{template "explore/navbar" .}} | ||||
<div class="ui container"> | <div class="ui container"> | ||||
{{template "explore/repo_search" .}} | |||||
{{template "shared/repo_search" .}} | |||||
{{template "explore/repo_list" .}} | {{template "explore/repo_list" .}} | ||||
{{template "base/paginate" .}} | {{template "base/paginate" .}} | ||||
</div> | </div> |
{{if .ProfileReadme}} | {{if .ProfileReadme}} | ||||
<div id="readme_profile" class="markup">{{.ProfileReadme}}</div> | <div id="readme_profile" class="markup">{{.ProfileReadme}}</div> | ||||
{{end}} | {{end}} | ||||
{{template "explore/repo_search" .}} | |||||
{{template "shared/repo_search" .}} | |||||
{{template "explore/repo_list" .}} | {{template "explore/repo_list" .}} | ||||
{{template "base/paginate" .}} | {{template "base/paginate" .}} | ||||
</div> | </div> |
<div class="ui secondary filter menu"> | |||||
<form id="repo-search-form" class="ui form ignore-dirty tw-flex-1 tw-flex tw-flex-row tw-gap-x-2"> | |||||
{{if .Language}}<input hidden name="language" value="{{.Language}}">{{end}} | |||||
<div class="ui fluid action input tw-flex-1"> | |||||
{{template "shared/searchinput" dict "Value" .Keyword}} | |||||
{{if .PageIsExploreRepositories}} | |||||
<input type="hidden" name="only_show_relevant" value="{{.OnlyShowRelevant}}"> | |||||
{{else if .TabName}} | |||||
<input type="hidden" name="tab" value="{{.TabName}}"> | |||||
{{end}} | |||||
<button class="ui primary button">{{ctx.Locale.Tr "explore.search"}}</button> | |||||
</div> | |||||
<!-- Filter --> | |||||
<div class="ui dropdown type jump item tw-mr-0"> | |||||
<span class="text"> | |||||
{{ctx.Locale.Tr "filter"}} | |||||
</span> | |||||
{{svg "octicon-triangle-down" 14 "dropdown icon"}} | |||||
<div class="menu"> | |||||
<label class="item"><input type="radio" name="clear-filter"> {{ctx.Locale.Tr "filter.clear"}}</label> | |||||
<div class="divider"></div> | |||||
<label class="item"><input type="radio" name="archived" {{if .IsArchived.Value}}checked{{end}} value="1"> {{ctx.Locale.Tr "filter.is_archived"}}</label> | |||||
<label class="item"><input type="radio" name="archived" {{if (not (.IsArchived.ValueOrDefault true))}}checked{{end}} value="0"> {{ctx.Locale.Tr "filter.not_archived"}}</label> | |||||
<div class="divider"></div> | |||||
<label class="item"><input type="radio" name="fork" {{if .IsFork.Value}}checked{{end}} value="1"> {{ctx.Locale.Tr "filter.is_fork"}}</label> | |||||
<label class="item"><input type="radio" name="fork" {{if (not (.IsFork.ValueOrDefault true))}}checked{{end}} value="0"> {{ctx.Locale.Tr "filter.not_fork"}}</label> | |||||
<div class="divider"></div> | |||||
<label class="item"><input type="radio" name="mirror" {{if .IsMirror.Value}}checked{{end}} value="1"> {{ctx.Locale.Tr "filter.is_mirror"}}</label> | |||||
<label class="item"><input type="radio" name="mirror" {{if (not (.IsMirror.ValueOrDefault true))}}checked{{end}} value="0"> {{ctx.Locale.Tr "filter.not_mirror"}}</label> | |||||
<div class="divider"></div> | |||||
<label class="item"><input type="radio" name="template" {{if .IsTemplate.Value}}checked{{end}} value="1"> {{ctx.Locale.Tr "filter.is_template"}}</label> | |||||
<label class="item"><input type="radio" name="template" {{if (not (.IsTemplate.ValueOrDefault true))}}checked{{end}} value="0"> {{ctx.Locale.Tr "filter.not_template"}}</label> | |||||
<div class="divider"></div> | |||||
<label class="item"><input type="radio" name="private" {{if .IsPrivate.Value}}checked{{end}} value="1"> {{ctx.Locale.Tr "filter.private"}}</label> | |||||
<label class="item"><input type="radio" name="private" {{if (not (.IsPrivate.ValueOrDefault true))}}checked{{end}} value="0"> {{ctx.Locale.Tr "filter.public"}}</label> | |||||
</div> | |||||
</div> | |||||
<!-- Sort --> | |||||
<div class="ui dropdown type jump item gt-mr-0"> | |||||
<span class="text"> | |||||
{{ctx.Locale.Tr "repo.issues.filter_sort"}} | |||||
</span> | |||||
{{svg "octicon-triangle-down" 14 "dropdown icon"}} | |||||
<div class="menu"> | |||||
<label class="{{if eq .SortType "newest"}}active {{end}}item"><input hidden type="radio" name="sort" {{if eq .SortType "newest"}}checked{{end}} value="newest"> {{ctx.Locale.Tr "repo.issues.filter_sort.latest"}}</label> | |||||
<label class="{{if eq .SortType "oldest"}}active {{end}}item"><input hidden type="radio" name="sort" {{if eq .SortType "oldest"}}checked{{end}} value="oldest"> {{ctx.Locale.Tr "repo.issues.filter_sort.oldest"}}</label> | |||||
<label class="{{if eq .SortType "alphabetically"}}active {{end}}item"><input hidden type="radio" name="sort" {{if eq .SortType "alphabetically"}}checked{{end}} value="alphabetically"> {{ctx.Locale.Tr "repo.issues.label.filter_sort.alphabetically"}}</label> | |||||
<label class="{{if eq .SortType "reversealphabetically"}}active {{end}}item"><input hidden type="radio" name="sort" {{if eq .SortType "reversealphabetically"}}checked{{end}} value="reversealphabetically"> {{ctx.Locale.Tr "repo.issues.label.filter_sort.reverse_alphabetically"}}</label> | |||||
<label class="{{if eq .SortType "recentupdate"}}active {{end}}item"><input hidden type="radio" name="sort" {{if eq .SortType "recentupdate"}}checked{{end}} value="recentupdate"> {{ctx.Locale.Tr "repo.issues.filter_sort.recentupdate"}}</label> | |||||
<label class="{{if eq .SortType "leastupdate"}}active {{end}}item"><input hidden type="radio" name="sort" {{if eq .SortType "leastupdate"}}checked{{end}} value="leastupdate"> {{ctx.Locale.Tr "repo.issues.filter_sort.leastupdate"}}</label> | |||||
{{if not .DisableStars}} | |||||
<label class="{{if eq .SortType "moststars"}}active {{end}}item"><input hidden type="radio" name="sort" {{if eq .SortType "moststars"}}checked{{end}} value="moststars"> {{ctx.Locale.Tr "repo.issues.filter_sort.moststars"}}</label> | |||||
<label class="{{if eq .SortType "feweststars"}}active {{end}}item"><input hidden type="radio" name="sort" {{if eq .SortType "feweststars"}}checked{{end}} value="feweststars"> {{ctx.Locale.Tr "repo.issues.filter_sort.feweststars"}}</label> | |||||
{{end}} | |||||
<label class="{{if eq .SortType "mostforks"}}active {{end}}item"><input hidden type="radio" name="sort" {{if eq .SortType "mostforks"}}checked{{end}} value="mostforks"> {{ctx.Locale.Tr "repo.issues.filter_sort.mostforks"}}</label> | |||||
<label class="{{if eq .SortType "fewestforks"}}active {{end}}item"><input hidden type="radio" name="sort" {{if eq .SortType "fewestforks"}}checked{{end}} value="fewestforks"> {{ctx.Locale.Tr "repo.issues.filter_sort.fewestforks"}}</label> | |||||
<label class="{{if eq .SortType "size"}}active {{end}}item"><input hidden type="radio" name="sort" {{if eq .SortType "size"}}checked{{end}} value="size"> {{ctx.Locale.Tr "repo.issues.label.filter_sort.by_size"}}</label> | |||||
<label class="{{if eq .SortType "reversesize"}}active {{end}}item"><input hidden type="radio" name="sort" {{if eq .SortType "reversesize"}}checked{{end}} value="reversesize"> {{ctx.Locale.Tr "repo.issues.label.filter_sort.reverse_by_size"}}</label> | |||||
</div> | |||||
</div> | |||||
</form> | |||||
</div> | |||||
{{if and .PageIsExploreRepositories .OnlyShowRelevant}} | |||||
<div class="ui message explore-relevancy-note"> | |||||
<span data-tooltip-content="{{ctx.Locale.Tr "explore.relevant_repositories_tooltip"}}">{{ctx.Locale.Tr "explore.relevant_repositories" (printf "?only_show_relevant=0&sort=%s&q=%s&language=%s" $.SortType (QueryEscape $.Keyword) (QueryEscape $.Language))}}</span> | |||||
</div> | |||||
{{end}} |
{{template "shared/issuelist" dict "." . "listType" "dashboard"}} | {{template "shared/issuelist" dict "." . "listType" "dashboard"}} | ||||
{{end}} | {{end}} | ||||
{{else}} | {{else}} | ||||
{{template "explore/repo_search" .}} | |||||
{{template "shared/repo_search" .}} | |||||
{{template "explore/repo_list" .}} | {{template "explore/repo_list" .}} | ||||
{{template "base/paginate" .}} | {{template "base/paginate" .}} | ||||
{{end}} | {{end}} |
{{template "user/dashboard/feeds" .}} | {{template "user/dashboard/feeds" .}} | ||||
{{else if eq .TabName "stars"}} | {{else if eq .TabName "stars"}} | ||||
<div class="stars"> | <div class="stars"> | ||||
{{template "explore/repo_search" .}} | |||||
{{template "shared/repo_search" .}} | |||||
{{template "explore/repo_list" .}} | {{template "explore/repo_list" .}} | ||||
{{template "base/paginate" .}} | {{template "base/paginate" .}} | ||||
</div> | </div> | ||||
{{else if eq .TabName "overview"}} | {{else if eq .TabName "overview"}} | ||||
<div id="readme_profile" class="markup">{{.ProfileReadme}}</div> | <div id="readme_profile" class="markup">{{.ProfileReadme}}</div> | ||||
{{else}} | {{else}} | ||||
{{template "explore/repo_search" .}} | |||||
{{template "shared/repo_search" .}} | |||||
{{template "explore/repo_list" .}} | {{template "explore/repo_list" .}} | ||||
{{template "base/paginate" .}} | {{template "base/paginate" .}} | ||||
{{end}} | {{end}} |
export function initRepositorySearch() { | |||||
const repositorySearchForm = document.querySelector('#repo-search-form'); | |||||
if (!repositorySearchForm) return; | |||||
repositorySearchForm.addEventListener('change', (e) => { | |||||
e.preventDefault(); | |||||
const formData = new FormData(repositorySearchForm); | |||||
const params = new URLSearchParams(formData); | |||||
if (e.target.name === 'clear-filter') { | |||||
params.delete('archived'); | |||||
params.delete('fork'); | |||||
params.delete('mirror'); | |||||
params.delete('template'); | |||||
params.delete('private'); | |||||
} | |||||
params.delete('clear-filter'); | |||||
window.location.search = params.toString(); | |||||
}); | |||||
} |
import {initRepoRecentCommits} from './features/recent-commits.js'; | import {initRepoRecentCommits} from './features/recent-commits.js'; | ||||
import {initRepoDiffCommitBranchesAndTags} from './features/repo-diff-commit.js'; | import {initRepoDiffCommitBranchesAndTags} from './features/repo-diff-commit.js'; | ||||
import {initDirAuto} from './modules/dirauto.js'; | import {initDirAuto} from './modules/dirauto.js'; | ||||
import {initRepositorySearch} from './features/repo-search.js'; | |||||
// Init Gitea's Fomantic settings | // Init Gitea's Fomantic settings | ||||
initGiteaFomantic(); | initGiteaFomantic(); | ||||
initRepoWikiForm(); | initRepoWikiForm(); | ||||
initRepository(); | initRepository(); | ||||
initRepositoryActionView(); | initRepositoryActionView(); | ||||
initRepositorySearch(); | |||||
initRepoContributors(); | initRepoContributors(); | ||||
initRepoCodeFrequency(); | initRepoCodeFrequency(); | ||||
initRepoRecentCommits(); | initRepoRecentCommits(); |