First cut of user admin page (#19)
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
{% endif %}
|
||||
{% if is_web_log_admin %}
|
||||
{{ "admin/categories" | nav_link: "Categories" }}
|
||||
{{ "admin/users" | nav_link: "Users" }}
|
||||
{{ "admin/settings" | nav_link: "Settings" }}
|
||||
{% endif %}
|
||||
</ul>
|
||||
|
||||
56
src/admin-theme/user-list-body.liquid
Normal file
56
src/admin-theme/user-list-body.liquid
Normal file
@@ -0,0 +1,56 @@
|
||||
<form method="post" id="userList" class="container" hx-target="this" hx-swap="outerHTML show:window:top">
|
||||
<input type="hidden" name="{{ csrf.form_field_name }}" value="{{ csrf.request_token }}">
|
||||
<div class="row mwl-table-detail" id="user_new"></div>
|
||||
{%- assign user_col = "col-12 col-md-4 col-xl-3" -%}
|
||||
{%- assign email_col = "col-12 col-md-4 col-xl-4" -%}
|
||||
{%- assign cre8_col = "d-none d-xl-block col-xl-2" -%}
|
||||
{%- assign last_col = "col-12 col-md-4 col-xl-3" -%}
|
||||
{%- assign badge = "ms-2 badge bg" -%}
|
||||
{% for user in users -%}
|
||||
<div class="row mwl-table-detail" id="user_{{ user.id }}">
|
||||
<div class="{{ user_col }} no-wrap">
|
||||
{{ user.preferred_name }}
|
||||
{%- if user.access_level == "Administrator" %}
|
||||
<span class="{{ badge }}-success">ADMINISTRATOR</span>
|
||||
{%- elsif user.access_level == "WebLogAdmin" %}
|
||||
<span class="{{ badge }}-primary">WEB LOG ADMIN</span>
|
||||
{%- elsif user.access_level == "Editor" %}
|
||||
<span class="{{ badge }}-secondary">EDITOR</span>
|
||||
{%- elsif user.access_level == "Author" %}
|
||||
<span class="{{ badge }}-dark">AUTHOR</span>
|
||||
{%- endif %}<br>
|
||||
<small>
|
||||
{%- assign user_url_base = "admin/user/" | append: user.id -%}
|
||||
<a href="{{ user_url_base | append: "/edit" | relative_link }}" hx-target="#user_{{ user.id }}"
|
||||
hx-swap="innerHTML show:#user_{{ user.id }}:top">
|
||||
Edit
|
||||
</a>
|
||||
<span class="text-muted"> • </span>
|
||||
{%- assign user_del_link = user_url_base | append: "/delete" | relative_link -%}
|
||||
<a href="{{ user_del_link }}" hx-post="{{ user_del_link }}" class="text-danger"
|
||||
hx-confirm="Are you sure you want to delete the category “{{ cat.name }}”? This action cannot be undone. (This action will not succeed if the user has authored any posts or pages.)">
|
||||
Delete
|
||||
</a>
|
||||
</small>
|
||||
</div>
|
||||
<div class="{{ email_col }}">
|
||||
{{ user.first_name }} {{ user.last_name }}<br>
|
||||
<small class="text-muted">
|
||||
{{ user.email }}
|
||||
{%- unless user.url == "" %}<br>{{ user.url }}{% endunless %}
|
||||
</small>
|
||||
</div>
|
||||
<div class="{{ cre8_col }}">
|
||||
{{ user.created_on | date: "MMMM d, yyyy" }}
|
||||
</div>
|
||||
<div class="{{ last_col }}">
|
||||
{% if user.last_seen_on %}
|
||||
{{ user.last_seen_on | date: "MMMM d, yyyy" }} at
|
||||
{{ user.last_seen_on | date: "h:mmtt" | downcase }}
|
||||
{% else %}
|
||||
--
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{%- endfor %}
|
||||
</form>
|
||||
20
src/admin-theme/user-list.liquid
Normal file
20
src/admin-theme/user-list.liquid
Normal file
@@ -0,0 +1,20 @@
|
||||
<h2 class="my-3">{{ page_title }}</h2>
|
||||
<article>
|
||||
<a href="{{ "admin/user/new/edit" | relative_link }}" class="btn btn-primary btn-sm mb-3"
|
||||
hx-target="#user_new">
|
||||
Add a New User
|
||||
</a>
|
||||
<div class="container">
|
||||
{%- assign user_col = "col-12 col-md-4 col-xl-3" -%}
|
||||
{%- assign email_col = "col-12 col-md-4 col-xl-4" -%}
|
||||
{%- assign cre8_col = "d-none d-xl-block col-xl-2" -%}
|
||||
{%- assign last_col = "col-12 col-md-4 col-xl-3" -%}
|
||||
<div class="row mwl-table-heading">
|
||||
<div class="{{ user_col }}">User<span class="d-md-none">; Details; Last Log On</span></div>
|
||||
<div class="{{ email_col }} d-none d-md-inline-block">Details</div>
|
||||
<div class="{{ cre8_col }}">Created</div>
|
||||
<div class="{{ last_col }} d-none d-md-block">Last Log On</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ user_list }}
|
||||
</article>
|
||||
@@ -334,13 +334,10 @@ htmx.on("htmx:afterOnLoad", function (evt) {
|
||||
})
|
||||
|
||||
htmx.on("htmx:responseError", function (evt) {
|
||||
/** @type {XMLHttpRequest} */
|
||||
const xhr = evt.detail.xhr
|
||||
const hdrs = xhr.getAllResponseHeaders()
|
||||
// Show messages if there were any in the response
|
||||
if (hdrs.indexOf("x-message") >= 0) {
|
||||
Admin.showMessage(evt.detail.xhr.getResponseHeader("x-message"))
|
||||
} else {
|
||||
// Show an error message if there were none in the response
|
||||
if (hdrs.indexOf("x-message") < 0) {
|
||||
Admin.showMessage(`danger|||${xhr.status}: ${xhr.statusText}`)
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user