mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-08 19:26:48 +00:00
Twenty tables had no .table-responsive wrapper, so on a phone the user list, compute list, VM lists, network and network filter pages scrolled sideways as a whole. Each table now scrolls inside its box, as the other ten already did. The page test walks the network page too, and checks that every table on every page has the wrapper. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
87 lines
4.3 KiB
HTML
87 lines
4.3 KiB
HTML
{% extends "base.html" %}
|
|
{% load i18n %}
|
|
{% load static %}
|
|
{% load common_tags %}
|
|
{% load bootstrap_icons %}
|
|
|
|
{% block title %}{{ title }}{% endblock %}
|
|
|
|
{% block page_heading %}{{ title }}{% endblock page_heading %}
|
|
|
|
{% block page_heading_extra %}
|
|
<a href="{% url 'admin:user_create' %}" class="btn btn-success btn-header float-end" title="{% trans "Create User" %}">
|
|
{% bs_icon 'plus-circle-fill' %}
|
|
</a>
|
|
{% include 'search_block.html' %}
|
|
{% endblock page_heading_extra %}
|
|
|
|
{% block content %}
|
|
<div class="row">
|
|
{% if not users %}
|
|
<div class="col-lg-12">
|
|
<div class="alert alert-warning shadow-sm">
|
|
{% bs_icon 'exclamation-triangle' %} <strong>{% trans "Warning" %}:</strong> {% trans "You don't have any user" %}
|
|
</div>
|
|
</div>
|
|
{% else %}
|
|
<div class="col-lg-12">
|
|
<div class="table-responsive">
|
|
<table class="table table-striped table-hover">
|
|
<thead>
|
|
<tr>
|
|
<th span="col">{% trans "Username" %}</th>
|
|
<th span="col">{% trans "Status" %}</th>
|
|
<th span="col">{% trans "Last Login" %}</th>
|
|
<th span="col">{% trans "Staff" %}</th>
|
|
<th span="col">{% trans "Superuser" %}</th>
|
|
<th span="col">{% trans "Can Clone" %}</th>
|
|
<th span="col">{% trans "Actions" %}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody class="searchable">
|
|
{% for user in users %}
|
|
{% has_perm user 'instances.clone_instances' as can_clone %}
|
|
<tr class="{% if not user.is_active %}danger{% endif %}">
|
|
<td>
|
|
{{ user.username }}
|
|
</td>
|
|
<td>
|
|
{% if user.is_active %}
|
|
{% trans "Active" %}
|
|
{% else %}
|
|
{% trans "Blocked" %}
|
|
{% endif %}
|
|
</td>
|
|
<td>{{ user.last_login }}</td>
|
|
<td>{% if user.is_staff %}{% bs_icon 'check' %}{% endif %}</td>
|
|
<td>{% if user.is_superuser %}{% bs_icon 'check' %}{% endif %}</td>
|
|
<td>{% if can_clone %}{% bs_icon 'check' %}{% endif %}</td>
|
|
<td>
|
|
<div class="float-end btn-group">
|
|
<a class="btn btn-success" title="{%trans "View Profile" %}" href="{% url 'accounts:account' user.id %}">{% bs_icon 'eye-fill' %}</a>
|
|
<a class="btn btn-primary" title="{%trans "Edit" %}" href="{% url 'admin:user_update' user.id %}">{% bs_icon 'pencil-fill' %}</a>
|
|
{% if user.is_active %}
|
|
<form method="post" action="{% url 'admin:user_block' user.id %}">{% csrf_token %}
|
|
<button type="submit" class="btn btn-warning rounded-0" title="{%trans "Block" %}">{% bs_icon 'stop-fill' %}</button>
|
|
</form>
|
|
{% else %}
|
|
<form method="post" action="{% url 'admin:user_unblock' user.id %}">{% csrf_token %}
|
|
<button type="submit" class="btn btn-success rounded-0" title="{%trans "Unblock" %}">{% bs_icon 'play-fill' %}</button>
|
|
</form>
|
|
{% endif %}
|
|
<a class="btn btn-danger" title="{%trans "Delete" %}" href="{% url 'admin:user_delete' user.id %}">{% bs_icon 'x-circle-fill' %}</a>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
{% endblock content %}
|
|
|
|
{% block script %}
|
|
<script src="{% static "js/filter-table.js" %}"></script>
|
|
{% endblock script %}
|