diff options
author | Alexey Terentyev <terentyev.alexey@gmail.com> | 2018-05-24 04:03:42 +0300 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2018-05-24 09:03:42 +0800 |
commit | b908ac9fab141b72f38db3d40a9f6054bb701982 (patch) | |
tree | 11a91f0a12fa32b0fa834d0388949fb59d13f4a2 | |
parent | ea2a938e8a25588634364b3bc6ce8d6634ae4c60 (diff) | |
download | gitea-b908ac9fab141b72f38db3d40a9f6054bb701982.tar.gz gitea-b908ac9fab141b72f38db3d40a9f6054bb701982.zip |
Added repository search ordered by stars or forks. Forks column in admin repo list. (#3969)
* Added repository search order by stars or forks.
Added Forks column to admin repository list.
Signed-off-by: Alexey Terentyev <axifnx@gmail.com>
* Renamed search repo template
Signed-off-by: Alexey Terentyev <axifnx@gmail.com>
-rw-r--r-- | models/repo_list.go | 4 | ||||
-rw-r--r-- | models/user.go | 4 | ||||
-rw-r--r-- | options/locale/locale_en-US.ini | 5 | ||||
-rw-r--r-- | routers/home.go | 24 | ||||
-rw-r--r-- | routers/user/profile.go | 8 | ||||
-rw-r--r-- | templates/admin/base/search.tmpl | 2 | ||||
-rw-r--r-- | templates/admin/repo/list.tmpl | 4 | ||||
-rw-r--r-- | templates/admin/repo/search.tmpl | 29 | ||||
-rw-r--r-- | templates/explore/repo_search.tmpl | 29 | ||||
-rw-r--r-- | templates/explore/repos.tmpl | 2 | ||||
-rw-r--r-- | templates/user/profile.tmpl | 4 |
11 files changed, 99 insertions, 16 deletions
diff --git a/models/repo_list.go b/models/repo_list.go index df6b81cb8d..b1527b73c9 100644 --- a/models/repo_list.go +++ b/models/repo_list.go @@ -152,6 +152,10 @@ const ( SearchOrderBySizeReverse = "size DESC" SearchOrderByID = "id ASC" SearchOrderByIDReverse = "id DESC" + SearchOrderByStars = "num_stars ASC" + SearchOrderByStarsReverse = "num_stars DESC" + SearchOrderByForks = "num_forks ASC" + SearchOrderByForksReverse = "num_forks DESC" ) // SearchRepositoryByName takes keyword and part of repository name to search, diff --git a/models/user.go b/models/user.go index 8f5ee6e5a7..d642054979 100644 --- a/models/user.go +++ b/models/user.go @@ -1272,7 +1272,7 @@ func GetUser(user *User) (bool, error) { type SearchUserOptions struct { Keyword string Type UserType - OrderBy string + OrderBy SearchOrderBy Page int PageSize int // Can be smaller than or equal to setting.UI.ExplorePagingNum IsActive util.OptionalBool @@ -1322,7 +1322,7 @@ func SearchUsers(opts *SearchUserOptions) (users []*User, _ int64, _ error) { users = make([]*User, 0, opts.PageSize) return users, count, x.Where(cond). Limit(opts.PageSize, (opts.Page-1)*opts.PageSize). - OrderBy(opts.OrderBy). + OrderBy(opts.OrderBy.String()). Find(&users) } diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 49c03a9e14..0520300189 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -693,6 +693,10 @@ issues.filter_sort.recentupdate = Recently updated issues.filter_sort.leastupdate = Least recently updated issues.filter_sort.mostcomment = Most commented issues.filter_sort.leastcomment = Least commented +issues.filter_sort.moststars = Most stars +issues.filter_sort.feweststars = Fewest stars +issues.filter_sort.mostforks = Most forks +issues.filter_sort.fewestforks = Fewest forks issues.action_open = Open issues.action_close = Close issues.action_label = Label @@ -1359,6 +1363,7 @@ repos.name = Name repos.private = Private repos.watches = Watches repos.stars = Stars +repos.forks = Forks repos.issues = Issues repos.size = Size diff --git a/routers/home.go b/routers/home.go index 4810eb4e6f..5bb353c7e1 100644 --- a/routers/home.go +++ b/routers/home.go @@ -104,6 +104,14 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) { orderBy = models.SearchOrderBySizeReverse case "size": orderBy = models.SearchOrderBySize + case "moststars": + orderBy = models.SearchOrderByStarsReverse + case "feweststars": + orderBy = models.SearchOrderByStars + case "mostforks": + orderBy = models.SearchOrderByForksReverse + case "fewestforks": + orderBy = models.SearchOrderByForks default: ctx.Data["SortType"] = "recentupdate" orderBy = models.SearchOrderByRecentUpdated @@ -164,26 +172,26 @@ func RenderUserSearch(ctx *context.Context, opts *models.SearchUserOptions, tplN users []*models.User count int64 err error - orderBy string + orderBy models.SearchOrderBy ) ctx.Data["SortType"] = ctx.Query("sort") switch ctx.Query("sort") { case "newest": - orderBy = "id DESC" + orderBy = models.SearchOrderByIDReverse case "oldest": - orderBy = "id ASC" + orderBy = models.SearchOrderByID case "recentupdate": - orderBy = "updated_unix DESC" + orderBy = models.SearchOrderByRecentUpdated case "leastupdate": - orderBy = "updated_unix ASC" + orderBy = models.SearchOrderByLeastUpdated case "reversealphabetically": - orderBy = "name DESC" + orderBy = models.SearchOrderByAlphabeticallyReverse case "alphabetically": - orderBy = "name ASC" + orderBy = models.SearchOrderByAlphabetically default: ctx.Data["SortType"] = "alphabetically" - orderBy = "name ASC" + orderBy = models.SearchOrderByAlphabetically } opts.Keyword = strings.Trim(ctx.Query("q"), " ") diff --git a/routers/user/profile.go b/routers/user/profile.go index 6f8b8fe897..fb731e715c 100644 --- a/routers/user/profile.go +++ b/routers/user/profile.go @@ -125,6 +125,14 @@ func Profile(ctx *context.Context) { orderBy = models.SearchOrderByAlphabeticallyReverse case "alphabetically": orderBy = models.SearchOrderByAlphabetically + case "moststars": + orderBy = models.SearchOrderByStarsReverse + case "feweststars": + orderBy = models.SearchOrderByStars + case "mostforks": + orderBy = models.SearchOrderByForksReverse + case "fewestforks": + orderBy = models.SearchOrderByForks default: ctx.Data["SortType"] = "recentupdate" orderBy = models.SearchOrderByRecentUpdated diff --git a/templates/admin/base/search.tmpl b/templates/admin/base/search.tmpl index 7d23e51c89..b817a8ad79 100644 --- a/templates/admin/base/search.tmpl +++ b/templates/admin/base/search.tmpl @@ -12,8 +12,6 @@ <a class="{{if eq .SortType "reversealphabetically"}}active{{end}} item" href="{{$.Link}}?sort=reversealphabetically&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.label.filter_sort.reverse_alphabetically"}}</a> <a class="{{if eq .SortType "recentupdate"}}active{{end}} item" href="{{$.Link}}?sort=recentupdate&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.filter_sort.recentupdate"}}</a> <a class="{{if eq .SortType "leastupdate"}}active{{end}} item" href="{{$.Link}}?sort=leastupdate&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.filter_sort.leastupdate"}}</a> - <a class="{{if eq .SortType "size"}}active{{end}} item" href="{{$.Link}}?sort=size&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.label.filter_sort.by_size"}}</a> - <a class="{{if eq .SortType "reversesize"}}active{{end}} item" href="{{$.Link}}?sort=reversesize&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.label.filter_sort.reverse_by_size"}}</a> </div> </div> </div> diff --git a/templates/admin/repo/list.tmpl b/templates/admin/repo/list.tmpl index 86d6b80426..f706eaa1c8 100644 --- a/templates/admin/repo/list.tmpl +++ b/templates/admin/repo/list.tmpl @@ -7,7 +7,7 @@ {{.i18n.Tr "admin.repos.repo_manage_panel"}} ({{.i18n.Tr "admin.total" .Total}}) </h4> <div class="ui attached segment"> - {{template "admin/base/search" .}} + {{template "admin/repo/search" .}} </div> <div class="ui attached table segment"> <table class="ui very basic striped table"> @@ -19,6 +19,7 @@ <th>{{.i18n.Tr "admin.repos.private"}}</th> <th>{{.i18n.Tr "admin.repos.watches"}}</th> <th>{{.i18n.Tr "admin.repos.stars"}}</th> + <th>{{.i18n.Tr "admin.repos.forks"}}</th> <th>{{.i18n.Tr "admin.repos.issues"}}</th> <th>{{.i18n.Tr "admin.repos.size"}}</th> <th>{{.i18n.Tr "admin.users.created"}}</th> @@ -34,6 +35,7 @@ <td><i class="fa fa{{if .IsPrivate}}-check{{end}}-square-o"></i></td> <td>{{.NumWatches}}</td> <td>{{.NumStars}}</td> + <td>{{.NumForks}}</td> <td>{{.NumIssues}}</td> <td>{{SizeFmt .Size}}</td> <td><span title="{{.CreatedUnix.FormatLong}}">{{.CreatedUnix.FormatShort}}</span></td> diff --git a/templates/admin/repo/search.tmpl b/templates/admin/repo/search.tmpl new file mode 100644 index 0000000000..8e69f7c388 --- /dev/null +++ b/templates/admin/repo/search.tmpl @@ -0,0 +1,29 @@ +<div class="ui right floated secondary filter menu"> + <!-- Sort --> + <div class="ui dropdown type jump item"> + <span class="text"> + {{.i18n.Tr "repo.issues.filter_sort"}} + <i class="dropdown icon"></i> + </span> + <div class="menu"> + <a class="{{if or (eq .SortType "oldest") (not .SortType)}}active{{end}} item" href="{{$.Link}}?sort=oldest&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.filter_sort.oldest"}}</a> + <a class="{{if eq .SortType "newest"}}active{{end}} item" href="{{$.Link}}?sort=newest&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.filter_sort.latest"}}</a> + <a class="{{if eq .SortType "alphabetically"}}active{{end}} item" href="{{$.Link}}?sort=alphabetically&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.label.filter_sort.alphabetically"}}</a> + <a class="{{if eq .SortType "reversealphabetically"}}active{{end}} item" href="{{$.Link}}?sort=reversealphabetically&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.label.filter_sort.reverse_alphabetically"}}</a> + <a class="{{if eq .SortType "recentupdate"}}active{{end}} item" href="{{$.Link}}?sort=recentupdate&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.filter_sort.recentupdate"}}</a> + <a class="{{if eq .SortType "leastupdate"}}active{{end}} item" href="{{$.Link}}?sort=leastupdate&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.filter_sort.leastupdate"}}</a> + <a class="{{if eq .SortType "moststars"}}active{{end}} item" href="{{$.Link}}?sort=moststars&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.moststars"}}</a> + <a class="{{if eq .SortType "feweststars"}}active{{end}} item" href="{{$.Link}}?sort=feweststars&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.feweststars"}}</a> + <a class="{{if eq .SortType "mostforks"}}active{{end}} item" href="{{$.Link}}?sort=mostforks&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.mostforks"}}</a> + <a class="{{if eq .SortType "fewestforks"}}active{{end}} item" href="{{$.Link}}?sort=fewestforks&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.fewestforks"}}</a> + <a class="{{if eq .SortType "size"}}active{{end}} item" href="{{$.Link}}?sort=size&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.label.filter_sort.by_size"}}</a> + <a class="{{if eq .SortType "reversesize"}}active{{end}} item" href="{{$.Link}}?sort=reversesize&q={{$.Keyword}}">{{.i18n.Tr "repo.issues.label.filter_sort.reverse_by_size"}}</a> + </div> + </div> +</div> +<form class="ui form ignore-dirty" style="max-width: 90%"> + <div class="ui fluid action input"> + <input name="q" value="{{.Keyword}}" placeholder="{{.i18n.Tr "explore.search"}}..." autofocus> + <button class="ui blue button">{{.i18n.Tr "explore.search"}}</button> + </div> +</form> diff --git a/templates/explore/repo_search.tmpl b/templates/explore/repo_search.tmpl new file mode 100644 index 0000000000..de0b63e077 --- /dev/null +++ b/templates/explore/repo_search.tmpl @@ -0,0 +1,29 @@ +<div class="ui right floated secondary filter menu"> + <!-- Sort --> + <div class="ui right dropdown type jump item"> + <span class="text"> + {{.i18n.Tr "repo.issues.filter_sort"}} + <i class="dropdown icon"></i> + </span> + <div class="menu"> + <a class="{{if eq .SortType "newest"}}active{{end}} item" href="{{$.Link}}?sort=newest&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.latest"}}</a> + <a class="{{if eq .SortType "oldest"}}active{{end}} item" href="{{$.Link}}?sort=oldest&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.oldest"}}</a> + <a class="{{if eq .SortType "alphabetically"}}active{{end}} item" href="{{$.Link}}?sort=alphabetically&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.label.filter_sort.alphabetically"}}</a> + <a class="{{if eq .SortType "reversealphabetically"}}active{{end}} item" href="{{$.Link}}?sort=reversealphabetically&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.label.filter_sort.reverse_alphabetically"}}</a> + <a class="{{if eq .SortType "recentupdate"}}active{{end}} item" href="{{$.Link}}?sort=recentupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.recentupdate"}}</a> + <a class="{{if eq .SortType "leastupdate"}}active{{end}} item" href="{{$.Link}}?sort=leastupdate&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.leastupdate"}}</a> + <a class="{{if eq .SortType "moststars"}}active{{end}} item" href="{{$.Link}}?sort=moststars&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.moststars"}}</a> + <a class="{{if eq .SortType "feweststars"}}active{{end}} item" href="{{$.Link}}?sort=feweststars&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.feweststars"}}</a> + <a class="{{if eq .SortType "mostforks"}}active{{end}} item" href="{{$.Link}}?sort=mostforks&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.mostforks"}}</a> + <a class="{{if eq .SortType "fewestforks"}}active{{end}} item" href="{{$.Link}}?sort=fewestforks&q={{$.Keyword}}&tab={{$.TabName}}">{{.i18n.Tr "repo.issues.filter_sort.fewestforks"}}</a> + </div> + </div> +</div> +<form class="ui form ignore-dirty" style="max-width: 90%"> + <div class="ui fluid action input"> + <input name="q" value="{{.Keyword}}" placeholder="{{.i18n.Tr "explore.search"}}..." autofocus> + <input type="hidden" name="tab" value="{{$.TabName}}"> + <button class="ui blue button">{{.i18n.Tr "explore.search"}}</button> + </div> +</form> +<div class="ui divider"></div> diff --git a/templates/explore/repos.tmpl b/templates/explore/repos.tmpl index 9ca9879103..c728219d3e 100644 --- a/templates/explore/repos.tmpl +++ b/templates/explore/repos.tmpl @@ -2,7 +2,7 @@ <div class="explore repositories"> {{template "explore/navbar" .}} <div class="ui container"> - {{template "explore/search" .}} + {{template "explore/repo_search" .}} {{template "explore/repo_list" .}} {{template "base/paginate" .}} </div> diff --git a/templates/user/profile.tmpl b/templates/user/profile.tmpl index 837f8bd949..915da555be 100644 --- a/templates/user/profile.tmpl +++ b/templates/user/profile.tmpl @@ -100,12 +100,12 @@ </div> {{else if eq .TabName "stars"}} <div class="stars"> - {{template "explore/search" .}} + {{template "explore/repo_search" .}} {{template "explore/repo_list" .}} {{template "base/paginate" .}} </div> {{else}} - {{template "explore/search" .}} + {{template "explore/repo_search" .}} {{template "explore/repo_list" .}} {{template "base/paginate" .}} {{end}} |