diff options
Diffstat (limited to 'ogcp/templates')
-rw-r--r-- | ogcp/templates/actions/server_update.html | 69 | ||||
-rw-r--r-- | ogcp/templates/base.html | 3 | ||||
-rw-r--r-- | ogcp/templates/servers.html | 9 |
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") }} |