Merge branch '0.11-dev' of github.com:Froxlor/Froxlor into 0.11-dev

This commit is contained in:
envoyr
2022-02-21 19:29:48 +01:00
30 changed files with 455 additions and 684 deletions

View File

@@ -1,8 +1,8 @@
{% macro form(form_data, action, title = "") %}
{% macro form(form_data, formaction, title = "") %}
{% import "Froxlor/form/formfields.html.twig" as formfields %}
<form action="{{ action|default("") }}" method="post" enctype="application/x-www-form-urlencoded" class="form">
<form action="{{ formaction|default("") }}" method="post" enctype="application/x-www-form-urlencoded" class="form">
{% if title is not empty %}
<h3 class="page-header">
{% if form_data.image is not empty %}
@@ -29,5 +29,20 @@
</div>
</div>
{% endfor %}
<!-- submit buttons -->
<div class="card mb-3">
<div class="card-body">
<input type="hidden" name="s" value="{{ s }}"/>
<input type="hidden" name="page" value="{{ page }}"/>
<input type="hidden" name="action" value="{{ action }}"/>
<input type="hidden" name="send" value="send"/>
<div class="col-12 text-center">
<button type="reset" class="btn btn-warning">{{ lng('panel.cancel') }}</button>
<button type="submit" class="btn btn-success">{{ lng('panel.save') }}</button>
</div>
</div>
</div>
</form>
{% endmacro %}

View File

@@ -73,6 +73,9 @@
{% if field.type == 'hidden' and field.display is defined %}
<input type="text" readonly class="form-control-plaintext" value="{{ field.display }}">
{% endif %}
{% if field.note is defined and field.note is not empty %}
<div class="invalid-feedback">{{ field.note|raw }}</div>
{% endif %}
{% if field.next_to is defined %}
{% for nid, nfield in field.next_to %}
{% if nfield.next_to_prefix is defined %}

View File

@@ -0,0 +1,34 @@
{% extends "Froxlor/userarea.html.twig" %}
{% block content %}
<form action="{{ action|default("") }}" method="post" enctype="application/x-www-form-urlencoded" class="form">
<div class="alert alert-warning" role="alert">
<h4 class="alert-heading">{{ lng('panel.security_question') }}</h4>
<p>{{ question|raw }}</p>
{% if with_checkbox is defined and with_checkbox is iterable %}
{% if with_checkbox.show %}
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" id="delete_userfiles" name="delete_userfiles" value="1">
<label class="form-check-label" for="delete_userfiles">{{ with_checkbox.chk_text|raw }}</label>
</div>
{% else %}
<input type="hidden" name="delete_userfiles" value="0"/>
{% endif %}
{% endif %}
<hr>
<p class="mb-0">
<input type="hidden" name="s" value="{{ s }}"/>
<input type="hidden" name="send" value="send"/>
{% for id,field in url_params %}
<input type="hidden" name="{{ id }}" value="{{ field }}"/>
{% endfor %}
<button class="btn btn-danger" type="submit" name="submitbutton">{{ lng('panel.yes') }}</button>&nbsp;
<a href="javascript:history.back(-1)" class="btn btn-secondary">{{ lng('panel.no') }}</a>
</p>
</div>
</form>
{% endblock %}

View File

@@ -4,6 +4,6 @@
{% import "Froxlor/form/form.html.twig" as form %}
{{ form.form(formdata, '#', formdata.title) }}
{{ form.form(formdata, formaction|default('#'), formdata.title) }}
{% endblock %}

View File

@@ -46,8 +46,9 @@
</div>
<div class="row">
<div class="col-7">
{% if userinfo.adminsession == 1 %}
{% if userinfo.adminsession == 1 %}
<div
class="col-7">
{# system infos #}
<div class="card mb-3">
<div class="card-header">
@@ -117,9 +118,134 @@
{% endif %}
</ul>
</div>
{% endif %}
</div>
<div class="col-5">
</div>
{% else %}
<div
class="col-4">
{# account info #}
<div class="card mb-3">
<div class="card-header">
<i class="fa-solid fa-user"></i>
{{ lng('index.accountdetails') }}
</div>
<ul class="list-group list-group-flush">
<li class="list-group-item d-flex justify-content-between align-items-start">
<div class="ms-2 me-auto">
<div class="fw-bold">{{ lng('login.username') }}</div>
{{ userinfo.loginname }}
</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-start">
<div class="ms-2 me-auto">
<div class="fw-bold">{{ lng('customer.email') }}</div>
{{ userinfo.email }}
</div>
</li>
<li class="list-group-item d-flex justify-content-between align-items-start">
<div class="ms-2 me-auto">
<div class="fw-bold">{{ lng('customer.services') }}</div>
{% if userinfo.imap == 1 %}
<span class="badge bg-success">IMAP</span>
{% endif %}
{% if userinfo.pop3 == 1 %}
<span class="badge bg-success">POP3</span>
{% endif %}
{% if userinfo.phpenabled == 1 %}
<span class="badge bg-success">PHP</span>
{% endif %}
{% if userinfo.perlenabled == 1 %}
<span class="badge bg-success">Perl/CGI</span>
{% endif %}
{% if userinfo.api_allowed == 1 %}
<a href="{{ linker({'section':'index','page':'apikeys'}) }}">
<span class="badge bg-success">API</span>
</a>
{% endif %}
</div>
</li>
{% if stdsubdomain is not empty %}
<li class="list-group-item d-flex justify-content-between align-items-start">
<div class="ms-2 me-auto">
<div class="fw-bold">{{ lng('admin.stdsubdomain') }}</div>
{{ stdsubdomain }}
</div>
</li>
{% endif %}
<li class="list-group-item d-flex justify-content-between align-items-start">
<div class="ms-2 me-auto">
<div class="fw-bold">{{ lng('customer.domains') }}</div>
{% for domain in domains %}
{{ domain }}<br>
{% endfor %}
</div>
<span class="badge bg-primary rounded-pill">{{ domains|length }}</span>
</li>
</ul>
</div>
</div>
<div
class="col-4">
{# customer details #}
<div class="card">
<div class="card-header">
<i class="fa-solid fa-id-card"></i>
{{ lng('index.customerdetails') }}
</div>
<ul class="list-group list-group-flush">
{% if userinfo.customernumber is not empty %}
<li class="list-group-item d-flex justify-content-between align-items-start">
<div class="ms-2 me-auto">
<div class="fw-bold">{{ lng('customer.customernumber') }}</div>
{{ userinfo.customernumber }}
</div>
</li>
{% endif %}
{% if userinfo.company is not empty %}
<li class="list-group-item d-flex justify-content-between align-items-start">
<div class="ms-2 me-auto">
<div class="fw-bold">{{ lng('customer.company') }}</div>
{{ userinfo.company }}
</div>
</li>
{% endif %}
{% if userinfo.name is not empty %}
<li class="list-group-item d-flex justify-content-between align-items-start">
<div class="ms-2 me-auto">
<div class="fw-bold">{{ lng('customer.name') }}</div>
{{ userinfo.firstname }}
{{ userinfo.name }}
</div>
</li>
{% endif %}
{% if userinfo.street is not empty %}
<li class="list-group-item d-flex justify-content-between align-items-start">
<div class="ms-2 me-auto">
<div class="fw-bold">{{ lng('customer.street') }}</div>
{{ userinfo.street }}
</div>
</li>
{% endif %}
{% if userinfo.city is not empty %}
<li class="list-group-item d-flex justify-content-between align-items-start">
<div class="ms-2 me-auto">
<div class="fw-bold">{{ lng('customer.zipcode') }}/{{ lng('customer.city') }}</div>
{{ userinfo.zipcode }}
{{ userinfo.city }}
</div>
</li>
{% endif %}
{% if userinfo.custom_notes is not empty and userinfo.custom_notes_show == 1 %}
<li class="list-group-item list-group-item-info d-flex justify-content-between align-items-start">
<div class="ms-2 me-auto">
{{ userinfo.custom_notes|nl2br|raw }}
</div>
</li>
{% endif %}
</ul>
</div>
</div>
{% endif %}
<div class="{% if userinfo.adminsession == 1 %}col-5{% else %}col-4{% endif %}">
{% if userinfo.adminsession == 1 %}
{# froxlor-details #}
<div class="card mb-3">