Reformat and don't pass back default parameters to URL
This commit is contained in:
@@ -1,81 +1,81 @@
|
||||
<div id="actions">
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
<div class="buttons">
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-put="{% url 'threshold_irc_network_actions_add_relay' net %}"
|
||||
hx-trigger="click"
|
||||
hx-target="#actions"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</span>
|
||||
<span>Relay</span>
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_network_actions_auto' net %}"
|
||||
hx-trigger="click"
|
||||
hx-target="#actions"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-wrench"></i>
|
||||
</span>
|
||||
<span>Auto</span>
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_actions_registration_net' net %}"
|
||||
hx-trigger="click"
|
||||
hx-target="#modals-here"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-list"></i>
|
||||
</span>
|
||||
<span>Registration</span>
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_network_list' net %}"
|
||||
hx-trigger="click"
|
||||
hx-target="#actions"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-list"></i>
|
||||
</span>
|
||||
<span>List</span>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
<form method="POST">
|
||||
<div class="field has-addons">
|
||||
<div class="control is-expanded has-icons-left">
|
||||
<input class="input" name="num" type="text" placeholder="Relay number">
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fa-brands fa-unity"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="control">
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
<div class="buttons">
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
class="button is-info is-fullwidth"
|
||||
hx-put="{% url 'threshold_irc_network_actions_add_relay' net %}"
|
||||
hx-trigger="click"
|
||||
hx-target="#actions"
|
||||
hx-swap="outerHTML">
|
||||
Add
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-put="{% url 'threshold_irc_network_actions_add_relay' net %}"
|
||||
hx-trigger="click"
|
||||
hx-target="#actions"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</span>
|
||||
<span>Relay</span>
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_network_actions_auto' net %}"
|
||||
hx-trigger="click"
|
||||
hx-target="#actions"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-wrench"></i>
|
||||
</span>
|
||||
<span>Auto</span>
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_actions_registration_net' net %}"
|
||||
hx-trigger="click"
|
||||
hx-target="#modals-here"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-list"></i>
|
||||
</span>
|
||||
<span>Registration</span>
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_network_list' net %}"
|
||||
hx-trigger="click"
|
||||
hx-target="#actions"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-list"></i>
|
||||
</span>
|
||||
<span>List</span>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<form method="POST">
|
||||
<div class="field has-addons">
|
||||
<div class="control is-expanded has-icons-left">
|
||||
<input class="input" name="num" type="text" placeholder="Relay number">
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fa-brands fa-unity"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="control">
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
class="button is-info is-fullwidth"
|
||||
hx-put="{% url 'threshold_irc_network_actions_add_relay' net %}"
|
||||
hx-trigger="click"
|
||||
hx-target="#actions"
|
||||
hx-swap="outerHTML">
|
||||
Add
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
@@ -1,44 +1,44 @@
|
||||
<div id="channels">
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
{% if channels is not None %}
|
||||
<div class="content" style="max-height: 30em; overflow: auto;">
|
||||
<div class="table-container">
|
||||
<table class="table is-fullwidth is-hoverable">
|
||||
<thead>
|
||||
<th>channel</th>
|
||||
<th>num</th>
|
||||
<th>actions</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for channel in channels %}
|
||||
<tr>
|
||||
<td>
|
||||
{{ channel.name }}
|
||||
<span class="tag">
|
||||
{{ channel.users }}
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
{{ channel.num }}
|
||||
</td>
|
||||
<td>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}", "Content-Type": "application/json"}'
|
||||
hx-delete="{% url 'threshold_irc_network_channel_json' net %}"
|
||||
hx-vals='{"channel": "{{ channel.name }}"}'
|
||||
hx-target="#channels"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-danger is-small">
|
||||
<span class="icon" data-tooltip="Part">
|
||||
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
|
||||
</span>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
{% if channels is not None %}
|
||||
<div class="content" style="max-height: 30em; overflow: auto;">
|
||||
<div class="table-container">
|
||||
<table class="table is-fullwidth is-hoverable">
|
||||
<thead>
|
||||
<th>channel</th>
|
||||
<th>num</th>
|
||||
<th>actions</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for channel in channels %}
|
||||
<tr>
|
||||
<td>
|
||||
{{ channel.name }}
|
||||
<span class="tag">
|
||||
{{ channel.users }}
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
{{ channel.num }}
|
||||
</td>
|
||||
<td>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}", "Content-Type": "application/json"}'
|
||||
hx-delete="{% url 'threshold_irc_network_channel_json' net %}"
|
||||
hx-vals='{"channel": "{{ channel.name }}"}'
|
||||
hx-target="#channels"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-danger is-small">
|
||||
<span class="icon" data-tooltip="Part">
|
||||
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
|
||||
</span>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
@@ -1,77 +1,77 @@
|
||||
<form
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_network_edit' net %}"
|
||||
hx-target="this"
|
||||
hx-swap="outerHTML">
|
||||
<div class="table-container">
|
||||
<table class="table is-fullwidth is-hoverable">
|
||||
<thead>
|
||||
<th>attribute</th>
|
||||
<th>value</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for key, item in network.items %}
|
||||
<tr>
|
||||
<th>{{ key }}</th>
|
||||
<td>
|
||||
<div class="field">
|
||||
{% if key == 'auth' %}
|
||||
<div class="select">
|
||||
<select name="{{ key }}">
|
||||
{% if item == 'sasl' %}
|
||||
<option selected>sasl</option>
|
||||
{% else %}
|
||||
<option>sasl</option>
|
||||
{% endif %}
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_network_edit' net %}"
|
||||
hx-target="this"
|
||||
hx-swap="outerHTML">
|
||||
<div class="table-container">
|
||||
<table class="table is-fullwidth is-hoverable">
|
||||
<thead>
|
||||
<th>attribute</th>
|
||||
<th>value</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for key, item in network.items %}
|
||||
<tr>
|
||||
<th>{{ key }}</th>
|
||||
<td>
|
||||
<div class="field">
|
||||
{% if key == 'auth' %}
|
||||
<div class="select">
|
||||
<select name="{{ key }}">
|
||||
{% if item == 'sasl' %}
|
||||
<option selected>sasl</option>
|
||||
{% else %}
|
||||
<option>sasl</option>
|
||||
{% endif %}
|
||||
|
||||
{% if item == 'ns' %}
|
||||
<option selected>ns</option>
|
||||
{% else %}
|
||||
<option>ns</option>
|
||||
{% endif %}
|
||||
{% if item == 'ns' %}
|
||||
<option selected>ns</option>
|
||||
{% else %}
|
||||
<option>ns</option>
|
||||
{% endif %}
|
||||
|
||||
{% if item == 'none' %}
|
||||
<option selected>none</option>
|
||||
{% else %}
|
||||
<option>none</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
{% elif key == 'security' %}
|
||||
<div class="select">
|
||||
<select name="{{ key }}">
|
||||
{% if item == 'ssl' %}
|
||||
<option selected>ssl</option>
|
||||
{% else %}
|
||||
<option>ssl</option>
|
||||
{% endif %}
|
||||
{% if item == 'none' %}
|
||||
<option selected>none</option>
|
||||
{% else %}
|
||||
<option>none</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
{% elif key == 'security' %}
|
||||
<div class="select">
|
||||
<select name="{{ key }}">
|
||||
{% if item == 'ssl' %}
|
||||
<option selected>ssl</option>
|
||||
{% else %}
|
||||
<option>ssl</option>
|
||||
{% endif %}
|
||||
|
||||
{% if item == 'plain' %}
|
||||
<option selected>plain</option>
|
||||
{% else %}
|
||||
<option>plain</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
{% else %}
|
||||
<input class="input" type="text" name="{{ key }}" value="{{ item }}">
|
||||
{% endif %}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% if item == 'plain' %}
|
||||
<option selected>plain</option>
|
||||
{% else %}
|
||||
<option>plain</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
{% else %}
|
||||
<input class="input" type="text" name="{{ key }}" value="{{ item }}">
|
||||
{% endif %}
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<button
|
||||
type="button"
|
||||
class="button is-light"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_network_info' net %}">
|
||||
Cancel
|
||||
</button>
|
||||
<button type="submit" class="button is-info">Submit</button>
|
||||
<script>activateButtons();</script>
|
||||
</tbody>
|
||||
</table>
|
||||
<button
|
||||
type="button"
|
||||
class="button is-light"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_network_info' net %}">
|
||||
Cancel
|
||||
</button>
|
||||
<button type="submit" class="button is-info">Submit</button>
|
||||
<script>activateButtons();</script>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@@ -1,61 +1,61 @@
|
||||
<div id="info">
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
{% if network is not None %}
|
||||
<div class="content" style="max-height: 30em; overflow: auto;">
|
||||
<div class="table-container">
|
||||
<table class="table is-fullwidth is-hoverable">
|
||||
<thead>
|
||||
<th>attribute</th>
|
||||
<th>value</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for key, item in network.items %}
|
||||
<tr>
|
||||
<th>{{ key }}</th>
|
||||
<td>
|
||||
{% if key == 'security' %}
|
||||
{% if item == 'none' %}
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-lock-open" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% elif item == 'ssl' %}
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-lock" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% elif key == 'relays' %}
|
||||
<span class="icon">
|
||||
<i class="fa-brands fa-unity"></i>
|
||||
</span>
|
||||
{% elif key == 'channels' %}
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-hashtag"></i>
|
||||
</span>
|
||||
{% elif key == 'records' %}
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-album"></i>
|
||||
</span>
|
||||
{% elif key == 'host' %}
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-router"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% if item is not None %}
|
||||
{{ item }}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<div hx-target="#info" hx-swap="outerHTML">
|
||||
<button hx-get="{% url 'threshold_irc_network_info_edit' network.net %}" class="button is-info is-fullwidth">
|
||||
<span class="icon" data-tooltip="Edit">
|
||||
<i class="fa-solid fa-pencil" aria-hidden="true"></i>
|
||||
</span>
|
||||
</button>
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
{% if network is not None %}
|
||||
<div class="content" style="max-height: 30em; overflow: auto;">
|
||||
<div class="table-container">
|
||||
<table class="table is-fullwidth is-hoverable">
|
||||
<thead>
|
||||
<th>attribute</th>
|
||||
<th>value</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for key, item in network.items %}
|
||||
<tr>
|
||||
<th>{{ key }}</th>
|
||||
<td>
|
||||
{% if key == 'security' %}
|
||||
{% if item == 'none' %}
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-lock-open" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% elif item == 'ssl' %}
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-lock" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% elif key == 'relays' %}
|
||||
<span class="icon">
|
||||
<i class="fa-brands fa-unity"></i>
|
||||
</span>
|
||||
{% elif key == 'channels' %}
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-hashtag"></i>
|
||||
</span>
|
||||
{% elif key == 'records' %}
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-album"></i>
|
||||
</span>
|
||||
{% elif key == 'host' %}
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-router"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% if item is not None %}
|
||||
{{ item }}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<div hx-target="#info" hx-swap="outerHTML">
|
||||
<button hx-get="{% url 'threshold_irc_network_info_edit' network.net %}" class="button is-info is-fullwidth">
|
||||
<span class="icon" data-tooltip="Edit">
|
||||
<i class="fa-solid fa-pencil" aria-hidden="true"></i>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
@@ -3,91 +3,91 @@
|
||||
|
||||
<script src="{% static 'modal.js' %}"></script>
|
||||
<div id="modal" class="modal is-active is-clipped">
|
||||
<div class="modal-background"></div>
|
||||
<div class="modal-content">
|
||||
<div class="box">
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
<h4 class="subtitle is-4">Registration</h4>
|
||||
<div class="buttons">
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_actions_registration_auth' %}"
|
||||
hx-vals='{"net": "{{ net }}", "func": "recheckauth"}'
|
||||
hx-trigger="click"
|
||||
hx-target="#modals-here"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-wrench"></i>
|
||||
</span>
|
||||
<span>Check auth</span>
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_actions_registration_auth' %}"
|
||||
hx-vals='{"net": "{{ net }}", "func": "resetauth"}'
|
||||
hx-trigger="click"
|
||||
hx-target="#modals-here"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-wrench"></i>
|
||||
</span>
|
||||
<span>Reset auth</span>
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_actions_registration_auth' %}"
|
||||
hx-vals='{"net": "{{ net }}", "func": "register"}'
|
||||
hx-trigger="click"
|
||||
hx-target="#modals-here"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-wrench"></i>
|
||||
</span>
|
||||
<span>Register</span>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
{% if unreg is not None %}
|
||||
<form
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-put="{% url 'threshold_irc_actions_registration_net' net %}"
|
||||
hx-target="#actions"
|
||||
hx-swap="outerHTML">
|
||||
{% for network, items in unreg.items %}
|
||||
<h4 class="title is-4">{{ network }}</h4>
|
||||
{% if items is not False %}
|
||||
{% for nick, num in items %}
|
||||
<div class="field">
|
||||
<label class="label">{{ nick }}/{{ num }}</label>
|
||||
<div class="control">
|
||||
<input class="input" type="text" name="{{ network }}|{{ num }}" placeholder="Enter token">
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
<div class="modal-background"></div>
|
||||
<div class="modal-content">
|
||||
<div class="box">
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
<h4 class="subtitle is-4">Registration</h4>
|
||||
<div class="buttons">
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_actions_registration_auth' %}"
|
||||
hx-vals='{"net": "{{ net }}", "func": "recheckauth"}'
|
||||
hx-trigger="click"
|
||||
hx-target="#modals-here"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-wrench"></i>
|
||||
</span>
|
||||
<span>Check auth</span>
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_actions_registration_auth' %}"
|
||||
hx-vals='{"net": "{{ net }}", "func": "resetauth"}'
|
||||
hx-trigger="click"
|
||||
hx-target="#modals-here"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-wrench"></i>
|
||||
</span>
|
||||
<span>Reset auth</span>
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_actions_registration_auth' %}"
|
||||
hx-vals='{"net": "{{ net }}", "func": "register"}'
|
||||
hx-trigger="click"
|
||||
hx-target="#modals-here"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-wrench"></i>
|
||||
</span>
|
||||
<span>Register</span>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
{% if unreg is not None %}
|
||||
<form
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-put="{% url 'threshold_irc_actions_registration_net' net %}"
|
||||
hx-target="#actions"
|
||||
hx-swap="outerHTML">
|
||||
{% for network, items in unreg.items %}
|
||||
<h4 class="title is-4">{{ network }}</h4>
|
||||
{% if items is not False %}
|
||||
{% for nick, num in items %}
|
||||
<div class="field">
|
||||
<label class="label">{{ nick }}/{{ num }}</label>
|
||||
<div class="control">
|
||||
<input class="input" type="text" name="{{ network }}|{{ num }}" placeholder="Enter token">
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<p>Error getting information for {{ network }}.</p>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<button
|
||||
type="button"
|
||||
class="button is-light modal-close-button">
|
||||
Cancel
|
||||
</button>
|
||||
<button type="submit" class="button is-info modal-close-button">Submit</button>
|
||||
{# <script>activateButtons();</script> #}
|
||||
</form>
|
||||
{% else %}
|
||||
<p>Error getting information for {{ network }}.</p>
|
||||
<p>No unregistered relays.</p>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<button
|
||||
type="button"
|
||||
class="button is-light modal-close-button">
|
||||
Cancel
|
||||
</button>
|
||||
<button type="submit" class="button is-info modal-close-button">Submit</button>
|
||||
{# <script>activateButtons();</script> #}
|
||||
</form>
|
||||
{% else %}
|
||||
<p>No unregistered relays.</p>
|
||||
{% endif %}
|
||||
|
||||
|
||||
</div>
|
||||
<button class="modal-close is-large" aria-label="close"></button>
|
||||
</div>
|
||||
<button class="modal-close is-large" aria-label="close"></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -1,150 +1,150 @@
|
||||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
<script>
|
||||
document.addEventListener("restore-relay-scroll", function(event) {
|
||||
var modalContent = document.getElementsByClassName("relay_table_container")[0];
|
||||
var maxScroll = modalContent.scrollHeight - modalContent.offsetHeight;
|
||||
var scrollpos = localStorage.getItem('scrollpos_relays_table');
|
||||
if (scrollpos == 'BOTTOM') {
|
||||
modalContent.scrollTop = maxScroll;
|
||||
} else if (scrollpos) {
|
||||
modalContent.scrollTop = scrollpos;
|
||||
};
|
||||
});
|
||||
<script>
|
||||
document.addEventListener("restore-relay-scroll", function(event) {
|
||||
var modalContent = document.getElementsByClassName("relay_table_container")[0];
|
||||
var maxScroll = modalContent.scrollHeight - modalContent.offsetHeight;
|
||||
var scrollpos = localStorage.getItem('scrollpos_relays_table');
|
||||
if (scrollpos == 'BOTTOM') {
|
||||
modalContent.scrollTop = maxScroll;
|
||||
} else if (scrollpos) {
|
||||
modalContent.scrollTop = scrollpos;
|
||||
};
|
||||
});
|
||||
|
||||
document.addEventListener("htmx:beforeSwap", function(event) {
|
||||
var modalContent = document.getElementsByClassName("relay_table_container")[0];
|
||||
var scrollpos = modalContent.scrollTop;
|
||||
if(modalContent.scrollTop === (modalContent.scrollHeight - modalContent.offsetHeight)) {
|
||||
localStorage.setItem('scrollpos_relays_table', 'BOTTOM');
|
||||
} else {
|
||||
localStorage.setItem('scrollpos_relays_table', scrollpos);
|
||||
}
|
||||
document.addEventListener("htmx:beforeSwap", function(event) {
|
||||
var modalContent = document.getElementsByClassName("relay_table_container")[0];
|
||||
var scrollpos = modalContent.scrollTop;
|
||||
if(modalContent.scrollTop === (modalContent.scrollHeight - modalContent.offsetHeight)) {
|
||||
localStorage.setItem('scrollpos_relays_table', 'BOTTOM');
|
||||
} else {
|
||||
localStorage.setItem('scrollpos_relays_table', scrollpos);
|
||||
}
|
||||
|
||||
});
|
||||
</script>
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_network_info' net %}"
|
||||
hx-trigger="load, every 60s"
|
||||
hx-target="#info"
|
||||
hx-swap="outerHTML">
|
||||
</div>
|
||||
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_network_relays' net %}"
|
||||
hx-trigger="load, every 60s"
|
||||
hx-target="#relays"
|
||||
{# hx-swap="innerHTML" #}
|
||||
>
|
||||
</div>
|
||||
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_network_channels' net %}"
|
||||
hx-trigger="load, every 60s"
|
||||
hx-target="#channels"
|
||||
hx-swap="outerHTML">
|
||||
</div>
|
||||
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_network_actions' net %}"
|
||||
hx-trigger="load"
|
||||
hx-target="#actions"
|
||||
hx-swap="outerHTML">
|
||||
</div>
|
||||
|
||||
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_network_list' net %}"
|
||||
hx-trigger="load"
|
||||
hx-target="#stats"
|
||||
hx-swap="outerHTML">
|
||||
</div>
|
||||
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div id="info">
|
||||
</div>
|
||||
</div>
|
||||
});
|
||||
</script>
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_network_info' net %}"
|
||||
hx-trigger="load, every 60s"
|
||||
hx-target="#info"
|
||||
hx-swap="outerHTML">
|
||||
</div>
|
||||
<!-- <div class="column">
|
||||
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_network_relays' net %}"
|
||||
hx-trigger="load, every 60s"
|
||||
hx-target="#relays"
|
||||
{# hx-swap="innerHTML" #}
|
||||
>
|
||||
</div>
|
||||
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_network_channels' net %}"
|
||||
hx-trigger="load, every 60s"
|
||||
hx-target="#channels"
|
||||
hx-swap="outerHTML">
|
||||
</div>
|
||||
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_network_actions' net %}"
|
||||
hx-trigger="load"
|
||||
hx-target="#actions"
|
||||
hx-swap="outerHTML">
|
||||
</div>
|
||||
|
||||
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_network_list' net %}"
|
||||
hx-trigger="load"
|
||||
hx-target="#stats"
|
||||
hx-swap="outerHTML">
|
||||
</div>
|
||||
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div id="info">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="column">
|
||||
<div class="box">
|
||||
<div id="relays">
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div>
|
||||
<div class="content" style="max-height: 30em; overflow: auto;">
|
||||
<div class="table-container relay_table_container" id="relays">
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div>
|
||||
<div class="content" style="max-height: 30em; overflow: auto;">
|
||||
<div class="table-container relay_table_container" id="relays">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div id="channels">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div id="stats">
|
||||
Stats here
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
{# This is the only thing included without HTMX because it isn't interactive #}
|
||||
{# It needs no dynamic message element because it posts messages to chanels #}
|
||||
<div class="box">
|
||||
<form method="POST">
|
||||
<div class="field has-addons">
|
||||
<div class="control is-expanded has-icons-left">
|
||||
<input id="query" name="channel" class="input" type="text" placeholder="channel">
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fa-solid fa-hashtag"></i>
|
||||
</span>
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div id="channels">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div id="stats">
|
||||
Stats here
|
||||
</div>
|
||||
</div>
|
||||
<div class="control">
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
class="button is-info is-fullwidth"
|
||||
hx-put="{% url 'threshold_irc_network_channel' net %}"
|
||||
hx-trigger="click"
|
||||
hx-target="#channels"
|
||||
hx-swap="outerHTML">
|
||||
Join
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div id="actions">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="modals-here">
|
||||
</div>
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
{# This is the only thing included without HTMX because it isn't interactive #}
|
||||
{# It needs no dynamic message element because it posts messages to chanels #}
|
||||
<div class="box">
|
||||
<form method="POST">
|
||||
<div class="field has-addons">
|
||||
<div class="control is-expanded has-icons-left">
|
||||
<input id="query" name="channel" class="input" type="text" placeholder="channel">
|
||||
<span class="icon is-small is-left">
|
||||
<i class="fa-solid fa-hashtag"></i>
|
||||
</span>
|
||||
</div>
|
||||
<div class="control">
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
class="button is-info is-fullwidth"
|
||||
hx-put="{% url 'threshold_irc_network_channel' net %}"
|
||||
hx-trigger="click"
|
||||
hx-target="#channels"
|
||||
hx-swap="outerHTML">
|
||||
Join
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div id="actions">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="modals-here">
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,221 +1,221 @@
|
||||
{% load index %}
|
||||
|
||||
<div class="table-container relay_table_container" id="relays">
|
||||
<table class="table is-fullwidth is-hoverable relays-table">
|
||||
<thead>
|
||||
<th>id</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Registered">
|
||||
<i class="fa-solid fa-seal"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Authenticated">
|
||||
<i class="fa-solid fa-passport"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Connected">
|
||||
<i class="fa-solid fa-cloud-question"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Enabled">
|
||||
<i class="fa-solid fa-toggle-on"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Channels">
|
||||
<i class="fa-solid fa-hashtag"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Chanlimit">
|
||||
<i class="fa-solid fa-list-ol"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>nick</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Actions">
|
||||
<i class="fa-solid fa-wrench"></i>
|
||||
</span>
|
||||
</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for relay in relays %}
|
||||
<tr>
|
||||
<td>{{ relay.id }}</td>
|
||||
<td>
|
||||
{% if relay.registered %}
|
||||
<span class="icon has-text-success">
|
||||
<i class="fa-solid fa-check" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="icon has-text-danger">
|
||||
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if relay.authed %}
|
||||
<span class="icon has-text-success">
|
||||
<i class="fa-solid fa-check" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="icon has-text-danger">
|
||||
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if relay.conn %}
|
||||
<span class="icon has-text-success">
|
||||
<i class="fa-solid fa-check" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="icon has-text-danger">
|
||||
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if relay.enabled %}
|
||||
<span class="icon has-text-success">
|
||||
<i class="fa-solid fa-check" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="icon has-text-danger">
|
||||
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ relay.chans }}
|
||||
</td>
|
||||
<td>{{ relay.limit }}</td>
|
||||
<td>
|
||||
{{ relay.nick }}
|
||||
</td>
|
||||
<td>
|
||||
<a
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'modal_context' %}"
|
||||
hx-vals='{"net": "{{ net }}",
|
||||
"num": "{{ relay.id }}",
|
||||
"source": "irc",
|
||||
"channel": "*status",
|
||||
"time": "None",
|
||||
"date": "None",
|
||||
"index": "int",
|
||||
"type": "znc",
|
||||
"mtype": "None",
|
||||
"nick": "*status",
|
||||
"dedup": "on"}'
|
||||
hx-target="#modals-here"
|
||||
hx-trigger="click"
|
||||
class="button is-small has-background-info has-text-white">
|
||||
<span class="icon has-tooltip-left" data-tooltip="ZNC context">
|
||||
<i class="fa-brands fa-unity" aria-hidden="true"></i>
|
||||
</span>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-delete="{% url 'threshold_irc_network_relay_del' relay|index:'net' relay|index:'id' %}"
|
||||
hx-target="#relays"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-small has-background-danger has-text-white">
|
||||
<span class="icon" data-tooltip="Delete">
|
||||
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
|
||||
</span>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_network_relay_provision' relay|index:'net' relay|index:'id' %}"
|
||||
hx-target="#relays"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-small has-background-info has-text-white">
|
||||
<span class="icon" data-tooltip="Provision">
|
||||
<i class="fa-solid fa-wrench" aria-hidden="true"></i>
|
||||
</span>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_network_relay_auth' relay|index:'net' relay|index:'id' %}"
|
||||
hx-target="#relays"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-small has-background-info has-text-white">
|
||||
<span class="icon" data-tooltip="Enable authentication">
|
||||
<i class="fa-solid fa-passport" aria-hidden="true"></i>
|
||||
</span>
|
||||
</a>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
{% if relay.enabled %}
|
||||
<a
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_network_relay_status' relay|index:'net' relay|index:'id' 0 %}"
|
||||
hx-target="#relays"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-small has-background-warning">
|
||||
<span class="icon" data-tooltip="Disable">
|
||||
<i class="fa-solid fa-wifi-slash" aria-hidden="true"></i>
|
||||
<table class="table is-fullwidth is-hoverable relays-table">
|
||||
<thead>
|
||||
<th>id</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Registered">
|
||||
<i class="fa-solid fa-seal"></i>
|
||||
</span>
|
||||
</a>
|
||||
{% else %}
|
||||
<a
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_network_relay_status' relay|index:'net' relay|index:'id' 1 %}"
|
||||
hx-target="#relays"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-small has-background-success has-text-white">
|
||||
<span class="icon" data-tooltip="Enable">
|
||||
<i class="fa-solid fa-wifi" aria-hidden="true"></i>
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Authenticated">
|
||||
<i class="fa-solid fa-passport"></i>
|
||||
</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
<a
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'modal_context' %}"
|
||||
hx-vals='{"net": "{{ net }}",
|
||||
"num": "{{ relay.id }}",
|
||||
"source": "irc",
|
||||
"channel": "{{ sinst.entity }}",
|
||||
"time": "None",
|
||||
"date": "None",
|
||||
"index": "int",
|
||||
"type": "auth",
|
||||
"mtype": "None",
|
||||
"nick": "{{ sinst.entity }}",
|
||||
"dedup": "on"}'
|
||||
hx-target="#modals-here"
|
||||
hx-trigger="click"
|
||||
class="button is-small has-background-info has-text-white">
|
||||
<span class="icon has-tooltip-left" data-tooltip="Auth ({{ sinst.entity }})">
|
||||
<i class="fa-solid fa-signature" aria-hidden="true"></i>
|
||||
</span>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<script>
|
||||
var modal_event = new Event('restore-relay-scroll');
|
||||
document.dispatchEvent(modal_event);
|
||||
</script>
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Connected">
|
||||
<i class="fa-solid fa-cloud-question"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Enabled">
|
||||
<i class="fa-solid fa-toggle-on"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Channels">
|
||||
<i class="fa-solid fa-hashtag"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Chanlimit">
|
||||
<i class="fa-solid fa-list-ol"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>nick</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Actions">
|
||||
<i class="fa-solid fa-wrench"></i>
|
||||
</span>
|
||||
</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for relay in relays %}
|
||||
<tr>
|
||||
<td>{{ relay.id }}</td>
|
||||
<td>
|
||||
{% if relay.registered %}
|
||||
<span class="icon has-text-success">
|
||||
<i class="fa-solid fa-check" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="icon has-text-danger">
|
||||
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if relay.authed %}
|
||||
<span class="icon has-text-success">
|
||||
<i class="fa-solid fa-check" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="icon has-text-danger">
|
||||
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if relay.conn %}
|
||||
<span class="icon has-text-success">
|
||||
<i class="fa-solid fa-check" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="icon has-text-danger">
|
||||
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if relay.enabled %}
|
||||
<span class="icon has-text-success">
|
||||
<i class="fa-solid fa-check" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="icon has-text-danger">
|
||||
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ relay.chans }}
|
||||
</td>
|
||||
<td>{{ relay.limit }}</td>
|
||||
<td>
|
||||
{{ relay.nick }}
|
||||
</td>
|
||||
<td>
|
||||
<a
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'modal_context' %}"
|
||||
hx-vals='{"net": "{{ net }}",
|
||||
"num": "{{ relay.id }}",
|
||||
"source": "irc",
|
||||
"channel": "*status",
|
||||
"time": "None",
|
||||
"date": "None",
|
||||
"index": "int",
|
||||
"type": "znc",
|
||||
"mtype": "None",
|
||||
"nick": "*status",
|
||||
"dedup": "on"}'
|
||||
hx-target="#modals-here"
|
||||
hx-trigger="click"
|
||||
class="button is-small has-background-info has-text-white">
|
||||
<span class="icon has-tooltip-left" data-tooltip="ZNC context">
|
||||
<i class="fa-brands fa-unity" aria-hidden="true"></i>
|
||||
</span>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<a
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-delete="{% url 'threshold_irc_network_relay_del' relay|index:'net' relay|index:'id' %}"
|
||||
hx-target="#relays"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-small has-background-danger has-text-white">
|
||||
<span class="icon" data-tooltip="Delete">
|
||||
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
|
||||
</span>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_network_relay_provision' relay|index:'net' relay|index:'id' %}"
|
||||
hx-target="#relays"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-small has-background-info has-text-white">
|
||||
<span class="icon" data-tooltip="Provision">
|
||||
<i class="fa-solid fa-wrench" aria-hidden="true"></i>
|
||||
</span>
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<a
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_network_relay_auth' relay|index:'net' relay|index:'id' %}"
|
||||
hx-target="#relays"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-small has-background-info has-text-white">
|
||||
<span class="icon" data-tooltip="Enable authentication">
|
||||
<i class="fa-solid fa-passport" aria-hidden="true"></i>
|
||||
</span>
|
||||
</a>
|
||||
</td>
|
||||
<td></td>
|
||||
<td>
|
||||
{% if relay.enabled %}
|
||||
<a
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_network_relay_status' relay|index:'net' relay|index:'id' 0 %}"
|
||||
hx-target="#relays"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-small has-background-warning">
|
||||
<span class="icon" data-tooltip="Disable">
|
||||
<i class="fa-solid fa-wifi-slash" aria-hidden="true"></i>
|
||||
</span>
|
||||
</a>
|
||||
{% else %}
|
||||
<a
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_network_relay_status' relay|index:'net' relay|index:'id' 1 %}"
|
||||
hx-target="#relays"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-small has-background-success has-text-white">
|
||||
<span class="icon" data-tooltip="Enable">
|
||||
<i class="fa-solid fa-wifi" aria-hidden="true"></i>
|
||||
</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td></td>
|
||||
<td>
|
||||
<a
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'modal_context' %}"
|
||||
hx-vals='{"net": "{{ net }}",
|
||||
"num": "{{ relay.id }}",
|
||||
"source": "irc",
|
||||
"channel": "{{ sinst.entity }}",
|
||||
"time": "None",
|
||||
"date": "None",
|
||||
"index": "int",
|
||||
"type": "auth",
|
||||
"mtype": "None",
|
||||
"nick": "{{ sinst.entity }}",
|
||||
"dedup": "on"}'
|
||||
hx-target="#modals-here"
|
||||
hx-trigger="click"
|
||||
class="button is-small has-background-info has-text-white">
|
||||
<span class="icon has-tooltip-left" data-tooltip="Auth ({{ sinst.entity }})">
|
||||
<i class="fa-solid fa-signature" aria-hidden="true"></i>
|
||||
</span>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<script>
|
||||
var modal_event = new Event('restore-relay-scroll');
|
||||
document.dispatchEvent(modal_event);
|
||||
</script>
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
</div>
|
||||
@@ -1,27 +1,27 @@
|
||||
<div id="stats">
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
{% if list is not None %}
|
||||
<div class="content" style="max-height: 30em; overflow: auto;">
|
||||
<div class="table-container">
|
||||
<table class="table is-fullwidth is-hoverable">
|
||||
<thead>
|
||||
<th>attribute</th>
|
||||
<th>value</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for key, item in list.items %}
|
||||
<tr>
|
||||
<th>{{ key }}</th>
|
||||
<td>
|
||||
{% if item is not None %}
|
||||
{{ item }}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
{% if list is not None %}
|
||||
<div class="content" style="max-height: 30em; overflow: auto;">
|
||||
<div class="table-container">
|
||||
<table class="table is-fullwidth is-hoverable">
|
||||
<thead>
|
||||
<th>attribute</th>
|
||||
<th>value</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for key, item in list.items %}
|
||||
<tr>
|
||||
<th>{{ key }}</th>
|
||||
<td>
|
||||
{% if item is not None %}
|
||||
{{ item }}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
@@ -1,45 +1,45 @@
|
||||
<div id="actions">
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
<div class="buttons">
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_actions_add-network' %}"
|
||||
hx-trigger="click"
|
||||
hx-target="#modals-here"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</span>
|
||||
<span>Network</span>
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="% url 'threshold_irc_actions_auto' %"
|
||||
hx-trigger="click"
|
||||
hx-target="#actions"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-wrench"></i>
|
||||
</span>
|
||||
<span>Auto</span>
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_actions_registration' %}"
|
||||
hx-trigger="click"
|
||||
hx-target="#modals-here"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-list"></i>
|
||||
</span>
|
||||
<span>Registration</span>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
<div class="buttons">
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_actions_add-network' %}"
|
||||
hx-trigger="click"
|
||||
hx-target="#modals-here"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-plus"></i>
|
||||
</span>
|
||||
<span>Network</span>
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="% url 'threshold_irc_actions_auto' %"
|
||||
hx-trigger="click"
|
||||
hx-target="#actions"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-wrench"></i>
|
||||
</span>
|
||||
<span>Auto</span>
|
||||
</span>
|
||||
</button>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_actions_registration' %}"
|
||||
hx-trigger="click"
|
||||
hx-target="#modals-here"
|
||||
class="button is-info">
|
||||
<span class="icon-text">
|
||||
<span class="icon">
|
||||
<i class="fa-solid fa-list"></i>
|
||||
</span>
|
||||
<span>Registration</span>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,45 +1,45 @@
|
||||
{% load joinsep %}
|
||||
|
||||
<div id="aliases">
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
{% if aliases is not None %}
|
||||
<div class="content" style="max-height: 30em; overflow: auto;">
|
||||
<div class="table-container">
|
||||
<table class="table is-fullwidth is-hoverable">
|
||||
<thead>
|
||||
<th>num</th>
|
||||
<th>nick</th>
|
||||
<th>realname</th>
|
||||
<th>emails</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for alias in aliases %}
|
||||
<tr>
|
||||
<td>
|
||||
{{ alias.num }}
|
||||
</td>
|
||||
<td>
|
||||
{{ alias.nick }}
|
||||
</td>
|
||||
<td>
|
||||
{{ alias.realname }}
|
||||
</td>
|
||||
<td>
|
||||
{{ alias.emails|joinsep:', ' }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
{% if aliases is not None %}
|
||||
<div class="content" style="max-height: 30em; overflow: auto;">
|
||||
<div class="table-container">
|
||||
<table class="table is-fullwidth is-hoverable">
|
||||
<thead>
|
||||
<th>num</th>
|
||||
<th>nick</th>
|
||||
<th>realname</th>
|
||||
<th>emails</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for alias in aliases %}
|
||||
<tr>
|
||||
<td>
|
||||
{{ alias.num }}
|
||||
</td>
|
||||
<td>
|
||||
{{ alias.nick }}
|
||||
</td>
|
||||
<td>
|
||||
{{ alias.realname }}
|
||||
</td>
|
||||
<td>
|
||||
{{ alias.emails|joinsep:', ' }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div hx-target="#modals-here">
|
||||
<button hx-get="{% url 'threshold_irc_aliases_edit' %}" class="button is-info is-fullwidth">
|
||||
<span class="icon" data-tooltip="Edit">
|
||||
<i class="fa-solid fa-pencil" aria-hidden="true"></i>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div hx-target="#modals-here">
|
||||
<button hx-get="{% url 'threshold_irc_aliases_edit' %}" class="button is-info is-fullwidth">
|
||||
<span class="icon" data-tooltip="Edit">
|
||||
<i class="fa-solid fa-pencil" aria-hidden="true"></i>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
@@ -3,77 +3,77 @@
|
||||
|
||||
<script src="{% static 'modal.js' %}"></script>
|
||||
<div id="modal" class="modal is-active is-clipped">
|
||||
<div class="modal-background"></div>
|
||||
<div class="modal-content">
|
||||
<div class="box">
|
||||
<h4 class="subtitle is-4">Add network</h4>
|
||||
<form
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-put="{% url 'threshold_irc_actions_add-network' %}"
|
||||
hx-target="#networks"
|
||||
hx-swap="outerHTML">
|
||||
<div class="modal-background"></div>
|
||||
<div class="modal-content">
|
||||
<div class="box">
|
||||
<h4 class="subtitle is-4">Add network</h4>
|
||||
<form
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-put="{% url 'threshold_irc_actions_add-network' %}"
|
||||
hx-target="#networks"
|
||||
hx-swap="outerHTML">
|
||||
|
||||
<div class="field">
|
||||
<label class="label">Network name</label>
|
||||
<div class="control">
|
||||
<input class="input" type="text" name="net" placeholder="freenode">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="label">Host</label>
|
||||
<div class="control">
|
||||
<input class="input" type="text" name="host" placeholder="irc.freenode.net">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="label">Port</label>
|
||||
<div class="control">
|
||||
<input class="input" type="text" name="port" placeholder="6697">
|
||||
</div>
|
||||
</div>
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label">Security</label>
|
||||
<div class="control">
|
||||
<div class="select">
|
||||
<select name="security">
|
||||
<option>ssl</option>
|
||||
<option>plain</option>
|
||||
</select>
|
||||
<div class="field">
|
||||
<label class="label">Network name</label>
|
||||
<div class="control">
|
||||
<input class="input" type="text" name="net" placeholder="freenode">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label">Authentication</label>
|
||||
<div class="control">
|
||||
<div class="select">
|
||||
<select name="auth">
|
||||
<option>sasl</option>
|
||||
<option>ns</option>
|
||||
<option>none</option>
|
||||
</select>
|
||||
|
||||
<div class="field">
|
||||
<label class="label">Host</label>
|
||||
<div class="control">
|
||||
<input class="input" type="text" name="host" placeholder="irc.freenode.net">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<label class="label">Port</label>
|
||||
<div class="control">
|
||||
<input class="input" type="text" name="port" placeholder="6697">
|
||||
</div>
|
||||
</div>
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label">Security</label>
|
||||
<div class="control">
|
||||
<div class="select">
|
||||
<select name="security">
|
||||
<option>ssl</option>
|
||||
<option>plain</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="field">
|
||||
<label class="label">Authentication</label>
|
||||
<div class="control">
|
||||
<div class="select">
|
||||
<select name="auth">
|
||||
<option>sasl</option>
|
||||
<option>ns</option>
|
||||
<option>none</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
class="button is-light modal-close-button">
|
||||
Cancel
|
||||
</button>
|
||||
<button type="submit" class="button is-info modal-close-button">Submit</button>
|
||||
{# <script>activateButtons();</script> #}
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
class="button is-light modal-close-button">
|
||||
Cancel
|
||||
</button>
|
||||
<button type="submit" class="button is-info modal-close-button">Submit</button>
|
||||
{# <script>activateButtons();</script> #}
|
||||
</form>
|
||||
|
||||
<button class="modal-close is-large" aria-label="close"></button>
|
||||
</div>
|
||||
<button class="modal-close is-large" aria-label="close"></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -4,65 +4,65 @@
|
||||
|
||||
<script src="{% static 'modal.js' %}"></script>
|
||||
<div id="modal" class="modal is-active is-clipped">
|
||||
<div class="modal-background"></div>
|
||||
<div class="modal-content">
|
||||
<div class="box">
|
||||
<h4 class="subtitle is-4">Edit aliases</h4>
|
||||
<form
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_aliases_edit' %}"
|
||||
hx-target="#aliases"
|
||||
hx-swap="outerHTML">
|
||||
<div class="content" style="max-height: 30em; overflow: auto;">
|
||||
<div class="table-container">
|
||||
<table class="table is-fullwidth is-hoverable">
|
||||
<thead>
|
||||
<th>num</th>
|
||||
<th>nick</th>
|
||||
<th>realname</th>
|
||||
<th>emails</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for alias in aliases %}
|
||||
<tr>
|
||||
<td>
|
||||
{{ alias.num }}
|
||||
</td>
|
||||
<td>
|
||||
<div class="field">
|
||||
<input class="input" type="text" name="{{ alias.num }}|nick" value="{{ alias.nick }}">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="field">
|
||||
<input class="input" type="text" name="{{ alias.num }}|realname" value="{{ alias.realname }}">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="field">
|
||||
<textarea class="textarea" name="{{ alias.num }}|emails">{{ alias.emails|nsep }}</textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="modal-background"></div>
|
||||
<div class="modal-content">
|
||||
<div class="box">
|
||||
<h4 class="subtitle is-4">Edit aliases</h4>
|
||||
<form
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-post="{% url 'threshold_irc_aliases_edit' %}"
|
||||
hx-target="#aliases"
|
||||
hx-swap="outerHTML">
|
||||
<div class="content" style="max-height: 30em; overflow: auto;">
|
||||
<div class="table-container">
|
||||
<table class="table is-fullwidth is-hoverable">
|
||||
<thead>
|
||||
<th>num</th>
|
||||
<th>nick</th>
|
||||
<th>realname</th>
|
||||
<th>emails</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for alias in aliases %}
|
||||
<tr>
|
||||
<td>
|
||||
{{ alias.num }}
|
||||
</td>
|
||||
<td>
|
||||
<div class="field">
|
||||
<input class="input" type="text" name="{{ alias.num }}|nick" value="{{ alias.nick }}">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="field">
|
||||
<input class="input" type="text" name="{{ alias.num }}|realname" value="{{ alias.realname }}">
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div class="field">
|
||||
<textarea class="textarea" name="{{ alias.num }}|emails">{{ alias.emails|nsep }}</textarea>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
class="button is-light modal-close-button">
|
||||
Cancel
|
||||
</button>
|
||||
<button type="submit" class="button is-info modal-close-button">Submit</button>
|
||||
<script>activateButtons();</script>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
class="button is-light modal-close-button">
|
||||
Cancel
|
||||
</button>
|
||||
<button type="submit" class="button is-info modal-close-button">Submit</button>
|
||||
<script>activateButtons();</script>
|
||||
</form>
|
||||
|
||||
<button class="modal-close is-large" aria-label="close"></button>
|
||||
</div>
|
||||
<button class="modal-close is-large" aria-label="close"></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -1,76 +1,76 @@
|
||||
<div id="networks">
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
<div class="content" style="max-height: 30em; overflow: auto;">
|
||||
<table class="table is-fullwidth is-hoverable">
|
||||
<thead>
|
||||
<th>net</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Relays">
|
||||
<i class="fa-brands fa-unity"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Active">
|
||||
<i class="fa-solid fa-signal-bars-good"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Channels">
|
||||
<i class="fa-solid fa-hashtag"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Records">
|
||||
<i class="fa-solid fa-album"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Actions">
|
||||
<i class="fa-solid fa-wrench" aria-hidden="true"></i>
|
||||
</span>
|
||||
</th>
|
||||
</thead>
|
||||
{% for key, net in networks.items %}
|
||||
<tr>
|
||||
<th><a href="{% url 'threshold_irc_network' key %}">{{ key }}</a></th>
|
||||
<td>
|
||||
|
||||
{% include 'manage/threshold/partials/notify.html' %}
|
||||
<div class="content" style="max-height: 30em; overflow: auto;">
|
||||
<table class="table is-fullwidth is-hoverable">
|
||||
<thead>
|
||||
<th>net</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Relays">
|
||||
<i class="fa-brands fa-unity"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Active">
|
||||
<i class="fa-solid fa-signal-bars-good"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Channels">
|
||||
<i class="fa-solid fa-hashtag"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Records">
|
||||
<i class="fa-solid fa-album"></i>
|
||||
</span>
|
||||
</th>
|
||||
<th>
|
||||
<span class="icon has-tooltip-bottom" data-tooltip="Actions">
|
||||
<i class="fa-solid fa-wrench" aria-hidden="true"></i>
|
||||
</span>
|
||||
</th>
|
||||
</thead>
|
||||
{% for key, net in networks.items %}
|
||||
<tr>
|
||||
<th><a href="{% url 'threshold_irc_network' key %}">{{ key }}</a></th>
|
||||
<td>
|
||||
|
||||
{{ net.relays }}
|
||||
</td>
|
||||
<td>
|
||||
{% if net.active %}
|
||||
<span class="icon has-text-success">
|
||||
<i class="fa-solid fa-check" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="icon has-text-danger">
|
||||
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ net.channels }}
|
||||
</td>
|
||||
<td>
|
||||
{{ net.records }}
|
||||
</td>
|
||||
<td>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-delete="{% url 'threshold_irc_network_del' key %}"
|
||||
hx-target="#networks"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-small is-danger">
|
||||
<span class="icon" data-tooltip="Delete">
|
||||
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
|
||||
</span>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
<div id="modals-here-actions">
|
||||
</div>
|
||||
|
||||
{{ net.relays }}
|
||||
</td>
|
||||
<td>
|
||||
{% if net.active %}
|
||||
<span class="icon has-text-success">
|
||||
<i class="fa-solid fa-check" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="icon has-text-danger">
|
||||
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{{ net.channels }}
|
||||
</td>
|
||||
<td>
|
||||
{{ net.records }}
|
||||
</td>
|
||||
<td>
|
||||
<button
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-delete="{% url 'threshold_irc_network_del' key %}"
|
||||
hx-target="#networks"
|
||||
hx-swap="outerHTML"
|
||||
class="button is-small is-danger">
|
||||
<span class="icon" data-tooltip="Delete">
|
||||
<i class="fa-solid fa-xmark" aria-hidden="true"></i>
|
||||
</span>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
</div>
|
||||
<div id="modals-here-actions">
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,82 +1,82 @@
|
||||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_stats' %}"
|
||||
hx-trigger="load"
|
||||
hx-target="#stats"
|
||||
hx-swap="outerHTML">
|
||||
</div>
|
||||
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_networks' %}"
|
||||
hx-trigger="load"
|
||||
hx-target="#networks"
|
||||
hx-swap="outerHTML">
|
||||
</div>
|
||||
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_aliases' %}"
|
||||
hx-trigger="load"
|
||||
hx-target="#aliases"
|
||||
hx-swap="outerHTML">
|
||||
</div>
|
||||
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_actions' %}"
|
||||
hx-trigger="load"
|
||||
hx-target="#actions"
|
||||
hx-swap="outerHTML">
|
||||
</div>
|
||||
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div id="stats">
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_stats' %}"
|
||||
hx-trigger="load"
|
||||
hx-target="#stats"
|
||||
hx-swap="outerHTML">
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div id="networks">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div id="aliases">
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_networks' %}"
|
||||
hx-trigger="load"
|
||||
hx-target="#networks"
|
||||
hx-swap="outerHTML">
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div id="alerts">
|
||||
Alerts here
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="columns">
|
||||
<div class="column"></div>
|
||||
<div class="column is-half">
|
||||
<div class="box">
|
||||
<div id="actions">
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_aliases' %}"
|
||||
hx-trigger="load"
|
||||
hx-target="#aliases"
|
||||
hx-swap="outerHTML">
|
||||
</div>
|
||||
|
||||
<div
|
||||
style="display: none;"
|
||||
hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'
|
||||
hx-get="{% url 'threshold_irc_actions' %}"
|
||||
hx-trigger="load"
|
||||
hx-target="#actions"
|
||||
hx-swap="outerHTML">
|
||||
</div>
|
||||
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div id="stats">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div id="networks">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="columns">
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div id="aliases">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="column">
|
||||
<div class="box">
|
||||
<div id="alerts">
|
||||
Alerts here
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="columns">
|
||||
<div class="column"></div>
|
||||
<div class="column is-half">
|
||||
<div class="box">
|
||||
<div id="actions">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="modals-here">
|
||||
</div>
|
||||
</div>
|
||||
<div id="modals-here">
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,49 +1,49 @@
|
||||
<div id="stats">
|
||||
<div class="content" style="max-height: 30em; overflow: auto;">
|
||||
<div class="table-container">
|
||||
<table class="table is-fullwidth is-hoverable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>attribute</th>
|
||||
<th>count</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>relays</th>
|
||||
<td>
|
||||
{{ stats.servers_online_total }}/{{ stats.servers_total_total }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>networks</th>
|
||||
<td>
|
||||
{{ stats.servers_online_unique }}/{{ stats.servers_total_unique }}
|
||||
</td>
|
||||
</tr>
|
||||
<div class="content" style="max-height: 30em; overflow: auto;">
|
||||
<div class="table-container">
|
||||
<table class="table is-fullwidth is-hoverable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>attribute</th>
|
||||
<th>count</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>relays</th>
|
||||
<td>
|
||||
{{ stats.servers_online_total }}/{{ stats.servers_total_total }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>networks</th>
|
||||
<td>
|
||||
{{ stats.servers_online_unique }}/{{ stats.servers_total_unique }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>channels</th>
|
||||
<td>
|
||||
{{ stats.channels}}
|
||||
</td>
|
||||
<tr>
|
||||
<th>channels</th>
|
||||
<td>
|
||||
{{ stats.channels}}
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
<tr>
|
||||
<th>records</th>
|
||||
<td>
|
||||
{{ stats.records }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>events</th>
|
||||
<td>
|
||||
{{ stats.eventrate }}
|
||||
</td>
|
||||
</tr>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>records</th>
|
||||
<td>
|
||||
{{ stats.records }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>events</th>
|
||||
<td>
|
||||
{{ stats.eventrate }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,5 +1,5 @@
|
||||
{% if message is not None %}
|
||||
<div class="notification is-{{ class }}" hx-ext="remove-me" remove-me="3s">
|
||||
{{ message }}
|
||||
</div>
|
||||
<div class="notification is-{{ class }}" hx-ext="remove-me" remove-me="3s">
|
||||
{{ message }}
|
||||
</div>
|
||||
{% endif %}
|
||||
Reference in New Issue
Block a user