admin data on profile page

This commit is contained in:
Henry Jameson 2026-06-10 13:40:53 +03:00
commit 49c9b0b955
5 changed files with 131 additions and 9 deletions

View file

@ -43,7 +43,7 @@
> >
<td>{{ entry.instance }}</td> <td>{{ entry.instance }}</td>
<td v-if="entry.reason === ''"> <td v-if="entry.reason === ''">
{{ $t("about.mrf.simple.not_applicable") }} {{ $t("general.not_applicable") }}
</td> </td>
<td v-else> <td v-else>
{{ entry.reason }} {{ entry.reason }}
@ -70,7 +70,7 @@
> >
<td>{{ entry.instance }}</td> <td>{{ entry.instance }}</td>
<td v-if="entry.reason === ''"> <td v-if="entry.reason === ''">
{{ $t("about.mrf.simple.not_applicable") }} {{ $t("general.not_applicable") }}
</td> </td>
<td v-else> <td v-else>
{{ entry.reason }} {{ entry.reason }}
@ -97,7 +97,7 @@
> >
<td>{{ entry.instance }}</td> <td>{{ entry.instance }}</td>
<td v-if="entry.reason === ''"> <td v-if="entry.reason === ''">
{{ $t("about.mrf.simple.not_applicable") }} {{ $t("general.not_applicable") }}
</td> </td>
<td v-else> <td v-else>
{{ entry.reason }} {{ entry.reason }}
@ -124,7 +124,7 @@
> >
<td>{{ entry.instance }}</td> <td>{{ entry.instance }}</td>
<td v-if="entry.reason === ''"> <td v-if="entry.reason === ''">
{{ $t("about.mrf.simple.not_applicable") }} {{ $t("general.not_applicable") }}
</td> </td>
<td v-else> <td v-else>
{{ entry.reason }} {{ entry.reason }}
@ -151,7 +151,7 @@
> >
<td>{{ entry.instance }}</td> <td>{{ entry.instance }}</td>
<td v-if="entry.reason === ''"> <td v-if="entry.reason === ''">
{{ $t("about.mrf.simple.not_applicable") }} {{ $t("general.not_applicable") }}
</td> </td>
<td v-else> <td v-else>
{{ entry.reason }} {{ entry.reason }}
@ -178,7 +178,7 @@
> >
<td>{{ entry.instance }}</td> <td>{{ entry.instance }}</td>
<td v-if="entry.reason === ''"> <td v-if="entry.reason === ''">
{{ $t("about.mrf.simple.not_applicable") }} {{ $t("general.not_applicable") }}
</td> </td>
<td v-else> <td v-else>
{{ entry.reason }} {{ entry.reason }}

View file

@ -60,6 +60,12 @@
> >
{{ $t('admin_dash.users.indicator.unapproved') }} {{ $t('admin_dash.users.indicator.unapproved') }}
</label> </label>
<label
v-if="user.adminData.is_suggested"
class="alert info user-role"
>
{{ $t('admin_dash.users.indicator.suggested') }}
</label>
<ModerationTools <ModerationTools
class="moderation-menu" class="moderation-menu"
:users="[user]" :users="[user]"

View file

@ -22,6 +22,23 @@
} }
} }
summary {
font-weight: bold;
cursor: pointer;
}
details {
margin: 0.5em 0;
&[open] summary {
margin-bottom: 0.5em;
}
ul {
margin: 0;
}
}
.input.bio { .input.bio {
height: auto; // override settings default textarea size height: auto; // override settings default textarea size
} }
@ -56,7 +73,7 @@
.user-card-bio { .user-card-bio {
text-align: center; text-align: center;
margin: 0 0.6em; margin: 0.6em;
&.input { &.input {
margin: 0 1em; margin: 0 1em;
@ -81,15 +98,18 @@
--_still-image-label-visibility: hidden; --_still-image-label-visibility: hidden;
} }
.admin-data,
.personal-marks { .personal-marks {
margin: 0.6em; margin: 0 0.6em;
padding: 0.6em; padding: 0 0.6em;
&:not(:last-child) { &:not(:last-child) {
border-bottom: 1px dotted var(--border); border-bottom: 1px dotted var(--border);
} }
.highlighter { .highlighter {
margin-bottom: 0.5em;
h4 { h4 {
margin-top: 0.6em; margin-top: 0.6em;
} }

View file

@ -347,6 +347,93 @@
/> />
</div> </div>
</div> </div>
<div
class="admin-data"
v-if="user.adminData"
>
<details>
<summary>
{{ $t('user_card.admin_data.data') }}
</summary>
<div class="user-profile-fields">
<dl class="user-profile-field">
<dt class="user-profile-field-name">
{{ $t('general.role.admin') }}
</dt>
<dd class="user-profile-field-value">
{{ $t('general.' + (user.adminData.roles.admin ? 'yes' : 'no')) }}
</dd>
</dl>
<dl class="user-profile-field">
<dt class="user-profile-field-name">
{{ $t('general.role.moderator') }}
</dt>
<dd class="user-profile-field-value">
{{ $t('general.' + (user.adminData.roles.moderator ? 'yes' : 'no')) }}
</dd>
</dl>
<dl class="user-profile-field">
<dt class="user-profile-field-name">
{{ $t('admin_dash.users.labels.email') }}
</dt>
<dd class="user-profile-field-value">
{{ user.adminData.email == null ? $t('general.not_available') : user.adminData.email }}
</dd>
</dl>
<dl class="user-profile-field">
<dt class="user-profile-field-name">
{{ $t('admin_dash.users.indicator.suggested') }}
</dt>
<dd class="user-profile-field-value">
{{ $t('general.' + (user.adminData.is_suggested ? 'yes' : 'no')) }}
</dd>
</dl>
<dl class="user-profile-field">
<dt class="user-profile-field-name">
{{ $t('admin_dash.users.indicator.confirmed') }}
</dt>
<dd class="user-profile-field-value">
{{ $t('general.' + (user.adminData.is_confirmed ? 'yes' : 'no')) }}
</dd>
</dl>
<dl class="user-profile-field">
<dt class="user-profile-field-name">
{{ $t('admin_dash.users.indicator.approved') }}
</dt>
<dd class="user-profile-field-value">
{{ $t('general.' + (user.adminData.is_approved ? 'yes' : 'no')) }}
</dd>
</dl>
<details open>
<summary>
{{ $t('user_card.admin_data.registration_reason') }}
</summary>
<span>
{{ user.adminData.registration_reason == null ? $t('general.not_available') : user.adminData.registration_reason }}
</span>
</details>
<details open>
<summary>
{{ $t('user_card.admin_data.tags') }}
</summary>
<ul>
<li v-if="user.adminData.tags.length === 0">
{{ $t('general.none') }}
</li>
<li
v-for="tag in user.adminData.tags"
:key="tag"
>
<code>
{{ tag }}
</code>
{{ ' ' }}
</li>
</ul>
</details>
</div>
</details>
</div>
<h3 v-if="editable"> <h3 v-if="editable">
<span> <span>
{{ $t('settings.bio') }} {{ $t('settings.bio') }}

View file

@ -106,6 +106,9 @@
"undo": "Undo", "undo": "Undo",
"yes": "Yes", "yes": "Yes",
"no": "No", "no": "No",
"none": "None",
"not_applicable": "N/A",
"not_available": "N/A",
"peek": "Peek", "peek": "Peek",
"scroll_to_top": "Scroll to top", "scroll_to_top": "Scroll to top",
"role": { "role": {
@ -1334,6 +1337,7 @@
"confirmed": "Confirmed", "confirmed": "Confirmed",
"unconfirmed": "Pending confirmation", "unconfirmed": "Pending confirmation",
"approved": "Approved", "approved": "Approved",
"suggested": "Suggested",
"unapproved": "Pending approval" "unapproved": "Pending approval"
} }
}, },
@ -1769,6 +1773,11 @@
"group": "Group", "group": "Group",
"birthday": "Born {birthday}", "birthday": "Born {birthday}",
"joined": "Joined", "joined": "Joined",
"admin_data": {
"data": "Administrative info",
"registration_reason": "Registration reason",
"tags": "Tags"
},
"admin_menu": { "admin_menu": {
"moderation": "Moderation", "moderation": "Moderation",
"grant_admin": "Grant Admin", "grant_admin": "Grant Admin",