summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexey Terentyev <terentyev.alexey@gmail.com>2018-05-24 04:03:42 +0300
committerLunny Xiao <xiaolunwen@gmail.com>2018-05-24 09:03:42 +0800
commitb908ac9fab141b72f38db3d40a9f6054bb701982 (patch)
tree11a91f0a12fa32b0fa834d0388949fb59d13f4a2
parentea2a938e8a25588634364b3bc6ce8d6634ae4c60 (diff)
downloadgitea-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.go4
-rw-r--r--models/user.go4
-rw-r--r--options/locale/locale_en-US.ini5
-rw-r--r--routers/home.go24
-rw-r--r--routers/user/profile.go8
-rw-r--r--templates/admin/base/search.tmpl2
-rw-r--r--templates/admin/repo/list.tmpl4
-rw-r--r--templates/admin/repo/search.tmpl29
-rw-r--r--templates/explore/repo_search.tmpl29
-rw-r--r--templates/explore/repos.tmpl2
-rw-r--r--templates/user/profile.tmpl4
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}}