aboutsummaryrefslogtreecommitdiffstats
path: root/templates
diff options
context:
space:
mode:
authorDenys Konovalov <kontakt@denyskon.de>2023-08-31 11:21:18 +0200
committerGitHub <noreply@github.com>2023-08-31 11:21:18 +0200
commit5b5bb8d3546e6504b689b01d3ac4897dda3aee3d (patch)
tree5ab8490deabf779acbe4aadcd888b9cf0816c540 /templates
parent3d109861ddf95846905143b4cf39129bf253161e (diff)
downloadgitea-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.tmpl2
-rw-r--r--templates/admin/user/list.tmpl13
-rw-r--r--templates/admin/user/view.tmpl48
-rw-r--r--templates/admin/user/view_details.tmpl65
-rw-r--r--templates/admin/user/view_emails.tmpl19
-rw-r--r--templates/explore/user_list.tmpl31
-rw-r--r--templates/explore/users.tmpl32
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>