summaryrefslogtreecommitdiffstats
path: root/ogcp/templates
diff options
context:
space:
mode:
authorAlejandro Sirgo Rica <asirgo@soleta.eu>2024-09-03 12:45:49 +0200
committerAlejandro Sirgo Rica <asirgo@soleta.eu>2024-09-03 16:26:22 +0200
commit7613cd8017e978e771552467a4e10141e120fccb (patch)
tree172c69df30ead92bdf6b9fb2619523ad6b4f9f29 /ogcp/templates
parentc1ac88e47c8562699edc9f5304649762366191e0 (diff)
ogcp: add server ip configuration
Enable server view in the main toolbar. Hide Add server and Delete server buttons. Add Update server button. Add server/update view to edit the server addresses.
Diffstat (limited to 'ogcp/templates')
-rw-r--r--ogcp/templates/actions/server_update.html69
-rw-r--r--ogcp/templates/base.html3
-rw-r--r--ogcp/templates/servers.html9
3 files changed, 76 insertions, 5 deletions
diff --git a/ogcp/templates/actions/server_update.html b/ogcp/templates/actions/server_update.html
new file mode 100644
index 0000000..ae2513b
--- /dev/null
+++ b/ogcp/templates/actions/server_update.html
@@ -0,0 +1,69 @@
+{% extends 'servers.html' %}
+{% import "bootstrap/wtf.html" as wtf %}
+
+{% set sidebar_state = 'disabled' %}
+{% set btn_back = true %}
+
+{% block nav_server_add %}active{% endblock %}
+{% block content %}
+
+<h2 class="mx-5 subhead-heading">{{_('Update server')}}</h2>
+
+<form class="form mx-5" method="POST">
+ {{ form.hidden_tag() }}
+
+ {{ form.server_addr() }}
+
+ <div class="form-group">
+ <div id="ip-fields">
+ {% for addr in form.addr %}
+ <div class="d-flex align-items-center mb-2">
+ {{ addr(class="form-control me-2", placeholder=_("Enter IP Address"), required=True) }}
+ <button type="button" class="btn btn-danger" onclick="removeIPField(this)">{{_('Remove') }}</button>
+ </div>
+ {% endfor %}
+ </div>
+ <button type="button" class="btn btn-primary" onclick="addIPField()">{{_('Add address') }}</button>
+
+ {{ form.submit(class="btn btn-success") }}
+ </div>
+</form>
+
+<script>
+ function addIPField() {
+ const container = document.createElement('div');
+ container.classList.add('d-flex', 'align-items-center', 'mb-2');
+
+ const newField = document.createElement('input');
+ newField.setAttribute('type', 'text');
+ newField.setAttribute('name', 'addr-' + document.querySelectorAll('input[name^="addr-"]').length);
+ newField.classList.add('form-control', 'me-2');
+ newField.setAttribute('placeholder', '{{ _('Enter IP Address') }}');
+ newField.required = true;
+
+ const removeButton = document.createElement('button');
+ removeButton.setAttribute('type', 'button');
+ removeButton.classList.add('btn', 'btn-danger');
+ removeButton.innerText = '{{ _('Remove') }}';
+ removeButton.onclick = function() {
+ removeIPField(this);
+ };
+
+ container.appendChild(newField);
+ container.appendChild(removeButton);
+ document.getElementById('ip-fields').appendChild(container);
+ }
+
+ function removeIPField(elem) {
+ const ipFieldsContainer = document.getElementById('ip-fields');
+ const ipFieldDivs = ipFieldsContainer.querySelectorAll('.d-flex');
+
+ if (ipFieldDivs.length <= 1) {
+ return;
+ }
+ const parentDiv = elem.parentElement;
+ parentDiv.remove();
+ }
+</script>
+
+{% endblock %}
diff --git a/ogcp/templates/base.html b/ogcp/templates/base.html
index cd030e8..5d46135 100644
--- a/ogcp/templates/base.html
+++ b/ogcp/templates/base.html
@@ -40,6 +40,9 @@
<a class="nav-link" href="{{ url_for('manage_repos') }}">{{ _('Repos') }}</a>
</li>
{% if current_user.admin %}
+ <li class="nav-item {% block nav_servers %}{% endblock %}">
+ <a class="nav-link" href="{{ url_for('manage_servers') }}">{{ _('Servers') }}</a>
+ </li>
<li class="nav-item {% block nav_users %}{% endblock %}">
<a class="nav-link" href="{{ url_for('users') }}">{{ _('Users') }}</a>
</li>
diff --git a/ogcp/templates/servers.html b/ogcp/templates/servers.html
index bc09c4f..d555f71 100644
--- a/ogcp/templates/servers.html
+++ b/ogcp/templates/servers.html
@@ -17,7 +17,8 @@
<li class="nav-item">
<input class="form-check-input" type="checkbox" form="serversForm"
value="{{ server_str }}"
- name="selected-server" />
+ name="selected-server"
+ {% if loop.index == 1 %}checked{% endif %} />
{{ server["name"] }}
</li>
{% endfor %}
@@ -26,10 +27,8 @@
{% block commands %}
{% if current_user.is_authenticated %}
- <input class="btn btn-light {% block nav_server_add %}{% endblock %}" type="submit" value="{{ _('Add server') }}"
- form="serversForm" formaction="{{ url_for('server_add_get') }}" formmethod="get">
- <input class="btn btn-light {% block nav_server_delete %}{% endblock %}" type="submit" value="{{ _('Delete server') }}"
- form="serversForm" formaction="{{ url_for('server_delete_get') }}" formmethod="get">
+ <input class="btn btn-light {% block nav_server_update %}{% endblock %}" type="submit" value="{{ _('Update server') }}"
+ form="serversForm" formaction="{{ url_for('server_update_get') }}" formmethod="get">
{% if btn_back %}
<button class="btn btn-danger ml-3" type="button" id="backButton" onclick="history.back()">
{{ _("Back") }}