aboutsummaryrefslogtreecommitdiffstats
path: root/routers/web/explore
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2021-10-13 02:11:35 +0800
committerGitHub <noreply@github.com>2021-10-12 20:11:35 +0200
commit7bcbdd07072d375eb9f24a64a047879ae2aa7aed (patch)
tree39ec57de914d4ccb05395ee991b94f6bca90dedb /routers/web/explore
parentd0a681fbc3fb626adcddbbb13f8c96c0bbd72c02 (diff)
downloadgitea-7bcbdd07072d375eb9f24a64a047879ae2aa7aed.tar.gz
gitea-7bcbdd07072d375eb9f24a64a047879ae2aa7aed.zip
Add user status filter to admin user management page (#16770)
It makes Admin's life easier to filter users by various status. * introduce window.config.PageData to pass template data to javascript module and small refactor move legacy window.ActivityTopAuthors to window.config.PageData.ActivityTopAuthors make HTML structure more IDE-friendly in footer.tmpl and head.tmpl remove incorrect <style class="list-search-style"></style> in head.tmpl use log.Error instead of log.Critical in admin user search * use LEFT JOIN instead of SubQuery when admin filters users by 2fa. revert non-en locale. * use OptionalBool instead of status map * refactor SearchUserOptions.toConds to SearchUserOptions.toSearchQueryBase * add unit test for user search * only allow admin to use filters to search users
Diffstat (limited to 'routers/web/explore')
-rw-r--r--routers/web/explore/user.go21
1 files changed, 12 insertions, 9 deletions
diff --git a/routers/web/explore/user.go b/routers/web/explore/user.go
index 4ddb90132d..1fe45ed585 100644
--- a/routers/web/explore/user.go
+++ b/routers/web/explore/user.go
@@ -22,6 +22,9 @@ const (
tplExploreUsers base.TplName = "explore/users"
)
+// UserSearchDefaultSortType is the default sort type for user search
+const UserSearchDefaultSortType = "alphabetically"
+
var (
nullByte = []byte{0x00}
)
@@ -44,23 +47,23 @@ func RenderUserSearch(ctx *context.Context, opts *models.SearchUserOptions, tplN
orderBy models.SearchOrderBy
)
+ // we can not set orderBy to `models.SearchOrderByXxx`, because there may be a JOIN in the statement, different tables may have the same name columns
ctx.Data["SortType"] = ctx.FormString("sort")
switch ctx.FormString("sort") {
case "newest":
- orderBy = models.SearchOrderByIDReverse
+ orderBy = "`user`.id DESC"
case "oldest":
- orderBy = models.SearchOrderByID
+ orderBy = "`user`.id ASC"
case "recentupdate":
- orderBy = models.SearchOrderByRecentUpdated
+ orderBy = "`user`.updated_unix DESC"
case "leastupdate":
- orderBy = models.SearchOrderByLeastUpdated
+ orderBy = "`user`.updated_unix ASC"
case "reversealphabetically":
- orderBy = models.SearchOrderByAlphabeticallyReverse
- case "alphabetically":
- orderBy = models.SearchOrderByAlphabetically
+ orderBy = "`user`.name DESC"
+ case UserSearchDefaultSortType: // "alphabetically"
default:
- ctx.Data["SortType"] = "alphabetically"
- orderBy = models.SearchOrderByAlphabetically
+ orderBy = "`user`.name ASC"
+ ctx.Data["SortType"] = UserSearchDefaultSortType
}
opts.Keyword = ctx.FormTrim("q")