diff options
author | Denys Konovalov <kontakt@denyskon.de> | 2023-08-31 11:21:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-31 11:21:18 +0200 |
commit | 5b5bb8d3546e6504b689b01d3ac4897dda3aee3d (patch) | |
tree | 5ab8490deabf779acbe4aadcd888b9cf0816c540 /templates | |
parent | 3d109861ddf95846905143b4cf39129bf253161e (diff) | |
download | gitea-5b5bb8d3546e6504b689b01d3ac4897dda3aee3d.tar.gz gitea-5b5bb8d3546e6504b689b01d3ac4897dda3aee3d.zip |
User details page (#26713)
This PR implements a proposal to clean up the admin users table by
moving some information out to a separate user details page (which also
displays some additional information).
Other changes:
- move edit user page from `/admin/users/{id}` to
`/admin/users/{id}/edit` -> `/admin/users/{id}` now shows the user
details page
- show if user is instance administrator as a label instead of a
separate column
- separate explore users template into a page- and a shared one, to make
it possible to use it on the user details page
- fix issue where there was no margin between alert message and
following content on admin pages
<details>
<summary>Screenshots</summary>
![grafik](https://github.com/go-gitea/gitea/assets/47871822/1ad57ac9-f20a-45a4-8477-ffe572a41e9e)
![grafik](https://github.com/go-gitea/gitea/assets/47871822/25786ecd-cb9d-4c92-90f4-e7f4292c073b)
</details>
Partially resolves #25939
---------
Co-authored-by: Giteabot <teabot@gitea.io>
Diffstat (limited to 'templates')
-rw-r--r-- | templates/admin/layout_head.tmpl | 2 | ||||
-rw-r--r-- | templates/admin/user/list.tmpl | 13 | ||||
-rw-r--r-- | templates/admin/user/view.tmpl | 48 | ||||
-rw-r--r-- | templates/admin/user/view_details.tmpl | 65 | ||||
-rw-r--r-- | templates/admin/user/view_emails.tmpl | 19 | ||||
-rw-r--r-- | templates/explore/user_list.tmpl | 31 | ||||
-rw-r--r-- | templates/explore/users.tmpl | 32 |
7 files changed, 171 insertions, 39 deletions
diff --git a/templates/admin/layout_head.tmpl b/templates/admin/layout_head.tmpl index 64d03d9e54..0067f336e0 100644 --- a/templates/admin/layout_head.tmpl +++ b/templates/admin/layout_head.tmpl @@ -1,6 +1,6 @@ {{template "base/head" .ctxData}} <div role="main" aria-label="{{.ctxData.Title}}" class="page-content {{.pageClass}}"> - <div class="ui container"> + <div class="ui container gt-mb-4"> {{template "base/alert" .ctxData}} </div> <div class="ui container flex-container"> diff --git a/templates/admin/user/list.tmpl b/templates/admin/user/list.tmpl index 45fed87a40..b3e0caa169 100644 --- a/templates/admin/user/list.tmpl +++ b/templates/admin/user/list.tmpl @@ -68,36 +68,35 @@ </th> <th>{{.locale.Tr "email"}}</th> <th>{{.locale.Tr "admin.users.activated"}}</th> - <th>{{.locale.Tr "admin.users.admin"}}</th> <th>{{.locale.Tr "admin.users.restricted"}}</th> <th>{{.locale.Tr "admin.users.2fa"}}</th> - <th>{{.locale.Tr "admin.users.repos"}}</th> <th>{{.locale.Tr "admin.users.created"}}</th> <th data-sortt-asc="lastlogin" data-sortt-desc="reverselastlogin"> {{.locale.Tr "admin.users.last_login"}} {{SortArrow "lastlogin" "reverselastlogin" $.SortType false}} </th> - <th>{{.locale.Tr "admin.users.edit"}}</th> </tr> </thead> <tbody> {{range .Users}} <tr> <td>{{.ID}}</td> - <td><a href="{{.HomeLink}}">{{.Name}}</a></td> + <td> + <a href="{{$.Link}}/{{.ID}}">{{.Name}}</a> + {{if .IsAdmin}} + <span class="ui basic label">{{$.locale.Tr "admin.users.admin"}}</span> + {{end}} + </td> <td class="gt-ellipsis gt-max-width-12rem">{{.Email}}</td> <td>{{if .IsActive}}{{svg "octicon-check"}}{{else}}{{svg "octicon-x"}}{{end}}</td> - <td>{{if .IsAdmin}}{{svg "octicon-check"}}{{else}}{{svg "octicon-x"}}{{end}}</td> <td>{{if .IsRestricted}}{{svg "octicon-check"}}{{else}}{{svg "octicon-x"}}{{end}}</td> <td>{{if index $.UsersTwoFaStatus .ID}}{{svg "octicon-check"}}{{else}}{{svg "octicon-x"}}{{end}}</td> - <td>{{.NumRepos}}</td> <td>{{DateTime "short" .CreatedUnix}}</td> {{if .LastLoginUnix}} <td>{{DateTime "short" .LastLoginUnix}}</td> {{else}} <td><span>{{$.locale.Tr "admin.users.never_login"}}</span></td> {{end}} - <td><a href="{{$.Link}}/{{.ID}}">{{svg "octicon-pencil"}}</a></td> </tr> {{end}} </tbody> diff --git a/templates/admin/user/view.tmpl b/templates/admin/user/view.tmpl new file mode 100644 index 0000000000..fd3017607c --- /dev/null +++ b/templates/admin/user/view.tmpl @@ -0,0 +1,48 @@ +{{template "admin/layout_head" (dict "ctxData" . "pageClass" "admin view user")}} + +<div class="admin-setting-content"> + <div class="admin-responsive-columns"> + <div class="gt-f1"> + <h4 class="ui top attached header"> + {{.Title}} + <div class="ui right"> + <a class="ui primary tiny button" href="{{.Link}}/edit">{{ctx.Locale.Tr "admin.users.edit"}}</a> + </div> + </h4> + <div class="ui attached segment"> + {{template "admin/user/view_details" .}} + </div> + </div> + <div class="gt-f1"> + <h4 class="ui top attached header"> + {{ctx.Locale.Tr "admin.emails"}} + <div class="ui right"> + {{.EmailsTotal}} + </div> + </h4> + <div class="ui attached segment"> + {{template "admin/user/view_emails" .}} + </div> + </div> + </div> + <h4 class="ui top attached header"> + {{ctx.Locale.Tr "admin.repositories"}} + <div class="ui right"> + {{.ReposTotal}} + </div> + </h4> + <div class="ui attached segment"> + {{template "explore/repo_list" .}} + </div> + <h4 class="ui top attached header"> + {{ctx.Locale.Tr "settings.organization"}} + <div class="ui right"> + {{.OrgsTotal}} + </div> + </h4> + <div class="ui attached segment"> + {{template "explore/user_list" .}} + </div> +</div> + +{{template "admin/layout_footer" .}} diff --git a/templates/admin/user/view_details.tmpl b/templates/admin/user/view_details.tmpl new file mode 100644 index 0000000000..ceb3b9a055 --- /dev/null +++ b/templates/admin/user/view_details.tmpl @@ -0,0 +1,65 @@ +<div class="flex-list"> + <div class="flex-item"> + <div class="flex-item-leading"> + {{ctx.AvatarUtils.Avatar .User 48}} + </div> + <div class="flex-item-main"> + <div class="flex-item-title"> + {{template "shared/user/name" .User}} + {{if .User.IsAdmin}} + <span class="ui basic label">{{ctx.Locale.Tr "admin.users.admin"}}</span> + {{end}} + </div> + <div class="flex-item-body"> + <b>{{ctx.Locale.Tr "admin.users.auth_source"}}:</b> + {{if eq .LoginSource.ID 0}} + {{ctx.Locale.Tr "admin.users.local"}} + {{else}} + {{.LoginSource.Name}} + {{end}} + </div> + <div class="flex-item-body"> + <b>{{ctx.Locale.Tr "admin.users.activated"}}:</b> + {{if .User.IsActive}} + {{svg "octicon-check"}} + {{else}} + {{svg "octicon-x"}} + {{end}} + </div> + <div class="flex-item-body"> + <b>{{ctx.Locale.Tr "admin.users.restricted"}}:</b> + {{if .User.IsRestricted}} + {{svg "octicon-check"}} + {{else}} + {{svg "octicon-x"}} + {{end}} + </div> + <div class="flex-item-body"> + <b>{{ctx.Locale.Tr "settings.visibility"}}:</b> + {{if .User.Visibility.IsLimited}}{{ctx.Locale.Tr "settings.visibility.limited"}}{{end}} + {{if .User.Visibility.IsPrivate}}{{ctx.Locale.Tr "settings.visibility.private"}}{{end}} + </div> + <div class="flex-item-body"> + <b>{{ctx.Locale.Tr "admin.users.2fa"}}:</b> + {{if .TwoFactorEnabled}} + <span class="text green">{{svg "octicon-check"}}</span> + {{else}} + {{svg "octicon-x"}} + {{end}} + </div> + {{if .User.Location}} + <div class="flex-item-body"> + <span class="flex-text-inline">{{svg "octicon-location"}}{{.User.Location}}</span> + </div> + {{end}} + {{if .User.Website}} + <div class="flex-item-body"> + <span class="flex-text-inline"> + {{svg "octicon-link"}} + <a target="_blank" href="{{.User.Website}}">{{.User.Website}}</a> + </span> + </div> + {{end}} + </div> + </div> +</div> diff --git a/templates/admin/user/view_emails.tmpl b/templates/admin/user/view_emails.tmpl new file mode 100644 index 0000000000..22ce305a88 --- /dev/null +++ b/templates/admin/user/view_emails.tmpl @@ -0,0 +1,19 @@ +<div class="flex-list"> + {{range .Emails}} + <div class="flex-item"> + <div class="flex-item-main"> + <div class="flex-text-block"> + {{.Email}} + {{if .IsPrimary}} + <div class="ui primary label">{{ctx.Locale.Tr "settings.primary"}}</div> + {{end}} + {{if .IsActivated}} + <div class="ui green label">{{ctx.Locale.Tr "settings.activated"}}</div> + {{else}} + <div class="ui label">{{ctx.Locale.Tr "settings.requires_activation"}}</div> + {{end}} + </div> + </div> + </div> + {{end}} +</div> diff --git a/templates/explore/user_list.tmpl b/templates/explore/user_list.tmpl new file mode 100644 index 0000000000..cf6a2933b0 --- /dev/null +++ b/templates/explore/user_list.tmpl @@ -0,0 +1,31 @@ +<div class="flex-list"> + {{range .Users}} + <div class="flex-item flex-item-center"> + <div class="flex-item-leading"> + {{ctx.AvatarUtils.Avatar . 48}} + </div> + <div class="flex-item-main"> + <div class="flex-item-title"> + {{template "shared/user/name" .}} + {{if .Visibility.IsPrivate}} + <span class="ui basic tiny label">{{ctx.Locale.Tr "repo.desc.private"}}</span> + {{end}} + </div> + <div class="flex-item-body"> + {{if .Location}} + <span class="flex-text-inline">{{svg "octicon-location"}}{{.Location}}</span> + {{end}} + {{if and .Email (or (and $.ShowUserEmail $.IsSigned (not .KeepEmailPrivate)) $.PageIsAdminUsers)}} + <span class="flex-text-inline"> + {{svg "octicon-mail"}} + <a href="mailto:{{.Email}}">{{.Email}}</a> + </span> + {{end}} + <span class="flex-text-inline">{{svg "octicon-calendar"}}{{ctx.Locale.Tr "user.joined_on" (DateTime "short" .CreatedUnix) | Safe}}</span> + </div> + </div> + </div> + {{else}} + <div class="flex-item">{{ctx.Locale.Tr "explore.user_no_results"}}</div> + {{end}} +</div> diff --git a/templates/explore/users.tmpl b/templates/explore/users.tmpl index 1280f4add6..7e15ae3d47 100644 --- a/templates/explore/users.tmpl +++ b/templates/explore/users.tmpl @@ -4,37 +4,7 @@ <div class="ui container"> {{template "explore/search" .}} - <div class="flex-list"> - {{range .Users}} - <div class="flex-item flex-item-center"> - <div class="flex-item-leading"> - {{ctx.AvatarUtils.Avatar . 48}} - </div> - <div class="flex-item-main"> - <div class="flex-item-title"> - {{template "shared/user/name" .}} - {{if .Visibility.IsPrivate}} - <span class="ui basic tiny label">{{$.locale.Tr "repo.desc.private"}}</span> - {{end}} - </div> - <div class="flex-item-body"> - {{if .Location}} - <span class="flex-text-inline">{{svg "octicon-location"}}{{.Location}}</span> - {{end}} - {{if and $.ShowUserEmail .Email $.IsSigned (not .KeepEmailPrivate)}} - <span class="flex-text-inline"> - {{svg "octicon-mail"}} - <a href="mailto:{{.Email}}" rel="nofollow">{{.Email}}</a> - </span> - {{end}} - <span class="flex-text-inline">{{svg "octicon-calendar"}}{{$.locale.Tr "user.joined_on" (DateTime "short" .CreatedUnix) | Safe}}</span> - </div> - </div> - </div> - {{else}} - <div class="flex-item">{{$.locale.Tr "explore.user_no_results"}}</div> - {{end}} - </div> + {{template "explore/user_list" .}} {{template "base/paginate" .}} </div> |