mirror of
https://github.com/retspen/webvirtcloud
synced 2026-11-10 12:16:49 +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>
98 lines
4.4 KiB
HTML
98 lines
4.4 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% load i18n %}
|
|
{% load bootstrap_icons %}
|
|
|
|
{% block title %}{% trans "User Profile" %} - {{ user }}{% endblock %}
|
|
{% block page_heading %}{% trans "User Profile" %}: {{ user }}{% endblock page_heading %}
|
|
|
|
{% block page_heading_extra %}
|
|
{% if otp_enabled %}
|
|
<form method="post" action="{% url 'accounts:admin_email_otp' user.id %}" class="d-inline">{% csrf_token %}
|
|
<button type="submit" class="btn btn-secondary" title="{% trans "Email OTP QR code" %}">
|
|
{% bs_icon 'qr-code' %}
|
|
</button>
|
|
</form>
|
|
{% endif %}
|
|
<a href="{% url 'admin:user_update' user.id %}?next={% url 'accounts:account' user.id %}" class="btn btn-primary" title="{% trans "Edit user" %}">
|
|
{% bs_icon 'pencil' %}
|
|
</a>
|
|
<a href="{% url 'accounts:user_instance_create' user.id %}" class="btn btn-success" title="{% trans "Create user instance" %}">
|
|
{% bs_icon 'plus-circle-fill' %}
|
|
</a>
|
|
{% endblock page_heading_extra %}
|
|
|
|
{% block content %}
|
|
<ul class="nav nav-tabs">
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link active" data-bs-toggle="tab" data-bs-target="#instances" type="button" role="tab" aria-controls="instances" aria-selected="true">
|
|
{% trans "Instances" %}
|
|
</button>
|
|
</li>
|
|
<li class="nav-item" role="presentation">
|
|
<button class="nav-link" data-bs-toggle="tab" data-bs-target="#public-keys" type="button" role="tab" aria-controls="public-keys" aria-selected="false">
|
|
{% trans "Public Keys" %}
|
|
</button>
|
|
</li>
|
|
</ul>
|
|
|
|
<div class="tab-content">
|
|
<div class="tab-pane active" id="instances">
|
|
<div class="table-responsive">
|
|
<table class="table table-striped table-hover">
|
|
<thead>
|
|
<tr>
|
|
<th scope="col">#</th>
|
|
<th scope="col">{% trans "Instance" %}</th>
|
|
<th scope="col">{% trans "VNC" %}</th>
|
|
<th scope="col">{% trans "Resize" %}</th>
|
|
<th scope="col">{% trans "Delete" %}</th>
|
|
<th scope="colgroup" colspan="2">{% trans "Action" %}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for inst in user_insts %}
|
|
<tr>
|
|
<td>{{ forloop.counter }}</td>
|
|
<td><a href="{% url 'instances:instance' inst.instance.id %}">{{ inst.instance.name }}</a></td>
|
|
<td>{{ inst.is_vnc }}</td>
|
|
<td>{{ inst.is_change }}</td>
|
|
<td>{{ inst.is_delete }}</td>
|
|
<td style="width:5px;">
|
|
<a href="{% url 'accounts:user_instance_update' inst.id %}" class="btn btn-sm btn-secondary" title="{% trans "edit" %}">
|
|
{% bs_icon 'pencil' %}
|
|
</a>
|
|
</td>
|
|
<td style="width:5px;">
|
|
<a class="btn btn-sm btn-secondary" href="{% url 'accounts:user_instance_delete' inst.id %}" title="{% trans "Delete" %}">
|
|
{% bs_icon 'trash' %}
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="tab-pane fade" id="public-keys">
|
|
<div class="table-responsive">
|
|
<table class="table table-striped table-hover">
|
|
<thead>
|
|
<tr>
|
|
<th scope="col">{% trans "Key name" %}</th>
|
|
<th scope="col">{% trans "Public key" %}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for publickey in publickeys %}
|
|
<tr>
|
|
<td>{{ publickey.keyname }}</td>
|
|
<td title="{{ publickey.keypublic }}">{{ publickey.keypublic|truncatechars:64 }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock content %}
|