diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2021-10-13 02:11:35 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-12 20:11:35 +0200 |
commit | 7bcbdd07072d375eb9f24a64a047879ae2aa7aed (patch) | |
tree | 39ec57de914d4ccb05395ee991b94f6bca90dedb /routers/web/explore | |
parent | d0a681fbc3fb626adcddbbb13f8c96c0bbd72c02 (diff) | |
download | gitea-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.go | 21 |
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") |