mirror of
https://github.com/mailcow/mailcow-dockerized.git
synced 2024-12-04 10:24:42 +02:00
[BS5] change form-group
This commit is contained in:
parent
fd1ffdba80
commit
e663f3db72
@ -3,7 +3,7 @@
|
||||
<div class="card-header bg-danger text-white">{{ lang.admin.admin_details }}</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-condensed" id="adminstable"></table>
|
||||
<div id="adminstable"></div>
|
||||
</div>
|
||||
<div class="mass-actions-admin">
|
||||
<div class="btn-group">
|
||||
@ -92,7 +92,7 @@
|
||||
<hr />
|
||||
<div id="license" class="collapse">
|
||||
<form class="form-horizontal" autocapitalize="none" autocorrect="off" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-3" for="guid">{{ lang.admin.guid }}:</label>
|
||||
<div class="col-sm-9">
|
||||
<div class="input-group">
|
||||
@ -108,7 +108,7 @@
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<p class="text-muted">{{ lang.admin.license_info|raw }}</p>
|
||||
<div class="btn-group">
|
||||
@ -135,33 +135,33 @@
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" autocapitalize="none" autocorrect="off" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-3" for="allow_from_ro">{{ lang.admin.api_allow_from }}:</label>
|
||||
<div class="col-sm-9">
|
||||
<textarea class="form-control textarea-code" rows="7" name="allow_from" id="allow_from_ro" {% if api.ro.skip_ip_check %}disabled{% endif %} required>{{ api.ro.allow_from }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<label>
|
||||
<input type="checkbox" name="skip_ip_check" id="skip_ip_check_ro" {% if api.ro.skip_ip_check %}checked{% endif %}> {{ lang.admin.api_skip_ip_check }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-3">{{ lang.admin.api_key }}:</label>
|
||||
<div class="col-sm-9">
|
||||
<pre>{{ api.ro.api_key|default('-') }}</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<label>
|
||||
<input type="checkbox" name="active" {% if api.ro.active %}checked{% endif %}> {{ lang.admin.activate_api }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-sm btn-xs-half d-block d-sm-inline btn-success" name="admin_api[ro]" type="submit" href="#"><i class="bi bi-check-lg"></i> {{ lang.admin.save }}</button>
|
||||
@ -180,33 +180,33 @@
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" autocapitalize="none" autocorrect="off" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-3" for="allow_from_rw">{{ lang.admin.api_allow_from }}:</label>
|
||||
<div class="col-sm-9">
|
||||
<textarea class="form-control textarea-code" rows="7" name="allow_from" id="allow_from_rw" {% if api.rw.skip_ip_check %}disabled{% endif %} required>{{ api.rw.allow_from }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<label>
|
||||
<input type="checkbox" name="skip_ip_check" id="skip_ip_check_rw" {% if api.rw.skip_ip_check %}checked{% endif %}> {{ lang.admin.api_skip_ip_check }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-3" for="admin_api_key">{{ lang.admin.api_key }}:</label>
|
||||
<div class="col-sm-9">
|
||||
<pre>{{ api.rw.api_key|default('-') }}</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<label>
|
||||
<input type="checkbox" name="active" {% if api.rw.active %}checked{% endif %}> {{ lang.admin.activate_api }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-sm btn-xs-half d-block d-sm-inline btn-success" name="admin_api[rw]" type="submit" href="#"><i class="bi bi-check-lg"></i> {{ lang.admin.save }}</button>
|
||||
|
@ -62,24 +62,24 @@
|
||||
<legend data-bs-target="#ui_texts" style="padding-top:20px" unselectable="on">{{ lang.admin.ui_texts }}</legend><hr />
|
||||
<div id="ui_texts">
|
||||
<form class="form" data-id="uitexts" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="uitests_title_name">{{ lang.admin.title_name }}:</label>
|
||||
<input type="text" class="form-control" id="uitests_title_name" name="title_name" placeholder="mailcow UI" value="{{ ui_texts.title_name|raw }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="uitests_main_name">{{ lang.admin.main_name }}:</label>
|
||||
<input type="text" class="form-control" id="uitests_main_name" name="main_name" placeholder="mailcow UI" value="{{ ui_texts.main_name|raw }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="uitests_apps_name">{{ lang.admin.apps_name }}:</label>
|
||||
<input type="text" class="form-control" id="uitests_apps_name" name="apps_name" placeholder="{{ lang.header.apps }}" value="{{ ui_texts.apps_name|raw }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="help_text">{{ lang.admin.help_text }}:</label>
|
||||
<textarea class="form-control" id="help_text" name="help_text" rows="7">{{ ui_texts.help_text|raw }}</textarea>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<p class="text-muted">{{ lang.admin.ui_header_announcement_help }}</p>
|
||||
<label for="ui_announcement_type">{{ lang.admin.ui_header_announcement }}:</label>
|
||||
<p><select multiple data-width="100%" id="ui_announcement_type" name="ui_announcement_type" class="selectpicker show-tick" data-max-options="1" title="{{ lang.admin.ui_header_announcement_select }}">
|
||||
@ -95,7 +95,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="ui_footer">{{ lang.admin.ui_footer }}:</label>
|
||||
<textarea class="form-control" id="ui_footer" name="ui_footer" rows="7">{{ ui_texts.ui_footer }}</textarea>
|
||||
</div>
|
||||
|
@ -90,16 +90,16 @@
|
||||
|
||||
<legend style="margin-top:40px">{{ lang.admin.dkim_add_key }}</legend><hr />
|
||||
<form class="form" data-id="dkim" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="dkim_add_domains">{{ lang.admin.domain_s }}</label>
|
||||
<input class="form-control input-sm" id="dkim_add_domains" name="domains" placeholder="example.org, example.com" required>
|
||||
<small><i class="bi bi-arrow-return-right"></i> <a href="#" id="dkim_missing_keys">{{ lang.admin.dkim_domains_wo_keys }}</a></small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="dkim_selector">{{ lang.admin.dkim_domains_selector }}</label>
|
||||
<input class="form-control input-sm" id="dkim_selector" name="dkim_selector" value="dkim" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<select data-style="btn btn-secondary btn-sm" class="form-control" id="key_size" name="key_size" title="{{ lang.admin.dkim_key_length }}" required>
|
||||
<option data-subtext="bits">1024</option>
|
||||
<option data-subtext="bits">2048</option>
|
||||
@ -114,19 +114,19 @@
|
||||
<hr />
|
||||
<div id="import_dkim" class="collapse">
|
||||
<form class="form" data-id="dkim_import" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="dkim_import_domain">{{ lang.admin.domain }}:</label>
|
||||
<input class="form-control input-sm" id="dkim_import_domain" name="domain" placeholder="example.org" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="dkim_import_selector">{{ lang.admin.dkim_domains_selector }}:</label>
|
||||
<input class="form-control input-sm" id="dkim_import_selector" name="dkim_selector" value="dkim" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="private_key_file">{{ lang.admin.private_key }}: (RSA PKCS#8)</label>
|
||||
<textarea class="form-control input-sm" rows="10" name="private_key_file" id="private_key_file" required placeholder="-----BEGIN RSA KEY-----"></textarea>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label>
|
||||
<input type="checkbox" name="overwrite_existing" value="1"> {{ lang.admin.dkim_overwrite_key }}
|
||||
</label>
|
||||
@ -141,7 +141,7 @@
|
||||
<hr />
|
||||
<div id="duplicate_dkim" class="collapse">
|
||||
<form class="form-horizontal" data-id="dkim_duplicate" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="from_domain">{{ lang.admin.dkim_from }}:</label>
|
||||
<div class="col-sm-10">
|
||||
<select data-style="btn btn-secondary btn-sm"
|
||||
@ -155,7 +155,7 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="to_domain">{{ lang.admin.dkim_to }}:</label>
|
||||
<div class="col-sm-10">
|
||||
<select
|
||||
|
@ -3,26 +3,26 @@
|
||||
<div class="card-header">{{ lang.admin.f2b_parameters }}</div>
|
||||
<div class="card-body">
|
||||
<form class="form" data-id="f2b" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="f2b_ban_time">{{ lang.admin.f2b_ban_time }}:</label>
|
||||
<input type="number" class="form-control" id="f2b_ban_time" name="ban_time" value="{{ f2b_data.ban_time }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="f2b_max_attempts">{{ lang.admin.f2b_max_attempts }}:</label>
|
||||
<input type="number" class="form-control" id="f2b_max_attempts" name="max_attempts" value="{{ f2b_data.max_attempts }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="f2b_retry_window">{{ lang.admin.f2b_retry_window }}:</label>
|
||||
<input type="number" class="form-control" id="f2b_retry_window" name="retry_window" value="{{ f2b_data.retry_window }}" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="f2b_netban_ipv4">{{ lang.admin.f2b_netban_ipv4 }}:</label>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">/</span>
|
||||
<input type="number" class="form-control" id="f2b_netban_ipv4" name="netban_ipv4" value="{{ f2b_data.netban_ipv4 }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="f2b_netban_ipv6">{{ lang.admin.f2b_netban_ipv6 }}:</label>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text">/</span>
|
||||
@ -31,11 +31,11 @@
|
||||
</div>
|
||||
<hr>
|
||||
<p class="text-muted">{{ lang.admin.f2b_list_info|raw }}</p>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="f2b_whitelist">{{ lang.admin.f2b_whitelist }}:</label>
|
||||
<textarea class="form-control" id="f2b_whitelist" name="whitelist" rows="5">{{ f2b_data.whitelist }}</textarea>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="f2b_blacklist">{{ lang.admin.f2b_blacklist }}:</label>
|
||||
<textarea class="form-control" id="f2b_blacklist" name="blacklist" rows="5">{{ f2b_data.blacklist }}</textarea>
|
||||
</div>
|
||||
|
@ -21,11 +21,11 @@
|
||||
<legend>{{ lang.admin.add_forwarding_host }}</legend><hr />
|
||||
<p class="text-muted">{{ lang.admin.forwarding_hosts_add_hint }}</p>
|
||||
<form class="form" data-id="fwdhost" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="fwdhost_hostname">{{ lang.admin.host }}</label>
|
||||
<input class="form-control" id="fwdhost_hostname" name="hostname" placeholder="example.org" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<select data-width="200px" class="form-control" id="filter_spam" name="filter_spam" title="{{ lang.user.spamfilter }}" required>
|
||||
<option value="1">{{ lang.admin.active }}</option>
|
||||
<option value="0">{{ lang.admin.inactive }}</option>
|
||||
|
@ -5,7 +5,7 @@
|
||||
<form class="form-horizontal" data-id="passwordpolicy" role="form" method="post">
|
||||
{% for name, value in password_complexity %}
|
||||
{% if name == 'length' %}
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-3" for="length">{{ lang.admin.password_length }}:</label>
|
||||
<div class="col-sm-2">
|
||||
<input type="number" class="form-control" min="3" max="64" name="length" id="length" value="{{ value }}" required>
|
||||
@ -13,7 +13,7 @@
|
||||
</div>
|
||||
{% else %}
|
||||
<input type="hidden" name="{{ name }}" value="0">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<label>
|
||||
<input type="checkbox" name="{{ name }}" id="{{ name }}" value="1" {% if value == 1 %}checked{% endif %}> {{ lang.admin['password_policy_'~name] }}
|
||||
@ -22,7 +22,7 @@
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-sm d-block d-sm-inline btn-success" data-item="passwordpolicy" data-action="edit_selected" data-id="passwordpolicy" data-api-url='edit/passwordpolicy' data-api-attr='{}' href="#"><i class="bi bi-check-lg"></i> {{ lang.admin.save }}</button>
|
||||
|
@ -6,58 +6,58 @@
|
||||
<div class="alert alert-info">{{ lang.quarantine.disabled_by_config }}</div>
|
||||
{% endif %}
|
||||
<form class="form-horizontal" data-id="quarantine" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="col-sm-4 control-label" for="quarantine_retention_size">{{ lang.admin.quarantine_retention_size|raw }}</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="number" class="form-control" id="quarantine_retention_size" name="retention_size" value="{{ q_data.retention_size }}" placeholder="0" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="col-sm-4 control-label" for="quarantine_max_size">{{ lang.admin.quarantine_max_size|raw }}</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="number" class="form-control" id="quarantine_max_size" name="max_size" value="{{ q_data.max_size }}" placeholder="0" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="col-sm-4 control-label" for="quarantine_max_score">{{ lang.admin.quarantine_max_score|raw }}</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="number" class="form-control" id="quarantine_max_score" name="max_score" value="{{ q_data.max_score }}" placeholder="9999.0">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="col-sm-4 control-label" for="quarantine_max_age">{{ lang.admin.quarantine_max_age|raw }}</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="number" class="form-control" id="quarantine_max_age" name="max_age" value="{{ q_data.max_age }}" min="1" required>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="col-sm-4 control-label" for="quarantine_redirect"><i class="bi bi-box-arrow-right"></i> {{ lang.admin.quarantine_redirect|raw }}</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="email" class="form-control" id="quarantine_redirect" name="redirect" value="{{ q_data.redirect }}" placeholder="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="col-sm-4 control-label" for="quarantine_bcc"><i class="bi bi-files"></i> {{ lang.admin.quarantine_bcc|raw }}</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="email" class="form-control" id="quarantine_bcc" name="bcc" value="{{ q_data.bcc }}" placeholder="">
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="col-sm-4 control-label" for="quarantine_sender">{{ lang.admin.quarantine_notification_sender }}:</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="email" class="form-control" id="quarantine_sender" name="sender" value="{{ q_data.sender }}" placeholder="quarantine@localhost">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="col-sm-4 control-label" for="quarantine_subject">{{ lang.admin.quarantine_notification_subject }}:</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="text" class="form-control" id="quarantine_subject" name="subject" value="{{ q_data.subject }}" placeholder="Spam Quarantine Notification">
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="col-sm-4 control-label" for="quarantine_release_format">{{ lang.admin.quarantine_release_format }}:</label>
|
||||
<div class="col-sm-8">
|
||||
<select data-width="100%" id="quarantine_release_format" name="release_format" class="selectpicker" title="{{ lang.tfa.select }}">
|
||||
@ -66,7 +66,7 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="col-sm-4 control-label" for="exclude_domains">{{ lang.admin.quarantine_exclude_domains }}:</label>
|
||||
<div class="col-sm-8">
|
||||
<select data-width="100%" name="exclude_domains" class="selectpicker" title="{{ lang.tfa.select }}" multiple>
|
||||
|
@ -6,13 +6,13 @@
|
||||
<form class="form" role="form" data-id="quota_notification" method="post">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="quota_notification_sender">{{ lang.admin.quota_notification_sender }}:</label>
|
||||
<input type="email" class="form-control" id="quota_notification_sender" name="sender" value="{{ qn_data.sender }}" placeholder="quota-warning@localhost">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="quota_notification_subject">{{ lang.admin.quota_notification_subject }}:</label>
|
||||
<input type="text" class="form-control" id="quota_notification_subject" name="subject" value="{{ qn_data.subject }}" placeholder="Quota warning">
|
||||
</div>
|
||||
@ -32,7 +32,7 @@
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<br>
|
||||
<a type="button" class="btn btn-sm d-block d-sm-inline btn-success" data-action="edit_selected"
|
||||
data-item="quota_notification"
|
||||
|
@ -44,15 +44,15 @@
|
||||
<div id="{{ rsetting.details.id }}" class="tab-pane">
|
||||
<form class="form" data-id="rsettings" role="form" method="post">
|
||||
<input type="hidden" name="active" value="0">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="rsettings_desc">{{ lang.admin.rsetting_desc }}:</label>
|
||||
<input type="text" class="form-control" id="rsettings_desc" name="desc" value="{{ rsetting.details.desc }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="rsettings_content">{{ lang.admin.rsetting_content }}:</label>
|
||||
<textarea class="form-control" id="rsettings_content" name="content" rows="10">{{ rsetting.details.content }}</textarea>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label>
|
||||
<input type="checkbox" name="active" value="1" {% if rsetting.details.active %}checked{% endif %}> {{ lang.admin.active }}
|
||||
</label>
|
||||
|
@ -10,26 +10,26 @@
|
||||
</div>
|
||||
<div class="col-sm-9 col-12">
|
||||
<form class="form-horizontal" autocapitalize="none" data-id="admin" autocorrect="off" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<label>
|
||||
<a href="/rspamd/" target="_blank"><i class="bi bi-window"></i> Rspamd UI</a>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-3" for="rspamd_ui_pass">{{ lang.admin.password }}:</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="password" class="form-control" id="rspamd_ui_pass" name="rspamd_ui_pass" autocomplete="new-password" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-3" for="rspamd_ui_pass2">{{ lang.admin.password_repeat }}:</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="password" class="form-control" id="rspamd_ui_pass2" name="rspamd_ui_pass2" autocomplete="new-password" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<button type="submit" class="btn btn-sm d-block d-sm-inline btn-success" id="rspamd_ui" name="rspamd_ui" href="#"><i class="bi bi-check-lg"></i> {{ lang.admin.save }}</button>
|
||||
</div>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<div class="card-body">
|
||||
<p>{{ lang.admin.rspamd_global_filters_info }}</p>
|
||||
<div id="confirm_show_rspamd_global_filters"{% if show_rspamd_global_filters %} class="d-none"{% endif %}>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<label>
|
||||
<input type="checkbox" id="show_rspamd_global_filters"> {{ lang.admin.rspamd_global_filters_agree }}
|
||||
@ -28,13 +28,13 @@
|
||||
<hr>
|
||||
<span class="anchor" id="{{ rspamd_regex_map.map }}"></span>
|
||||
<form class="form-horizontal" data-cached-form="false" data-id="{{ rspamd_regex_map.map }}" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-3" for="{{ rspamd_regex_map.map }}">{{ rspamd_regex_desc }}<br><small>{{ rspamd_regex_map.map }}</small></label>
|
||||
<div class="col-sm-9">
|
||||
<textarea id="{{ rspamd_regex_map.map }}" spellcheck="false" autocorrect="off" autocapitalize="none" class="form-control textarea-code" rows="10" name="rspamd_map_data" required>{{ rspamd_regex_map.data }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<button class="btn btn-sm btn-xs-half d-block d-sm-inline btn-secondary validate_rspamd_regex" data-regex-map="{{ rspamd_regex_map.map }}" href="#">{{ lang.add.validate }}</button>
|
||||
<button class="btn btn-sm btn-xs-half d-block d-sm-inline btn-success submit_rspamd_regex" data-action="edit_selected" data-id="{{ rspamd_regex_map.map }}" data-item="{{ rspamd_regex_map.map }}" data-api-url='edit/rspamd-map' data-api-attr='{}' href="#" disabled>{{ lang.edit.save }}</button>
|
||||
|
@ -23,15 +23,15 @@
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<form class="form" data-id="rlyhost" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="rlyhost_hostname">{{ lang.admin.host }}</label>
|
||||
<input class="form-control" id="rlyhost_hostname" name="hostname" placeholder='[0.0.0.0], [0.0.0.0]:25, host:25, host, [host]:25' required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="rlyhost_username">{{ lang.admin.username }}</label>
|
||||
<input class="form-control" id="rlyhost_username" name="username">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="rlyhost_password">{{ lang.admin.password }}</label>
|
||||
<input class="form-control" id="rlyhost_password" name="password">
|
||||
</div>
|
||||
@ -66,28 +66,28 @@
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<form class="form" data-id="transport" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="transport_destination">{{ lang.admin.destination }}</label>
|
||||
<input class="form-control" id="transport_destination" name="destination" placeholder='{{ lang.admin.transport_dest_format }}' required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="transport_nexthop">{{ lang.admin.nexthop }}</label>
|
||||
<input class="form-control" id="transport_nexthop" name="nexthop" placeholder='host:25, host, [host]:25, [0.0.0.0]:25' required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="transport_username">{{ lang.admin.username }}</label>
|
||||
<input class="form-control" id="transport_username" name="username">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="transport_password">{{ lang.admin.password }}</label>
|
||||
<input class="form-control" id="transport_password" name="password">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label>
|
||||
<input type="checkbox" name="is_mx_based" value="1"> {{ lang.admin.lookup_mx|raw }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label>
|
||||
<input type="checkbox" name="active" value="1"> {{ lang.admin.active }}
|
||||
</label>
|
||||
|
@ -3,13 +3,13 @@
|
||||
<div class="card-header">{{ lang.admin.sys_mails }}</div>
|
||||
<div class="card-body">
|
||||
<form class="form-horizontal" autocapitalize="none" data-id="admin" autocorrect="off" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="admin_mass_from">{{ lang.admin.from }}:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="email" class="form-control" id="admin_mass_from" name="mass_from" value="noreply@{{ mailcow_hostname }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="admin_mass_subject">{{ lang.admin.subject }}:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" id="admin_mass_subject" name="mass_subject" required>
|
||||
@ -18,7 +18,7 @@
|
||||
{% for domain in all_domains %}
|
||||
|
||||
{% endfor %}
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="mass_subject">{{ lang.admin.include_exclude }}:
|
||||
<p class="text-muted">{{ lang.admin.include_exclude_info|raw }}</p>
|
||||
</label>
|
||||
@ -39,27 +39,27 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="mass_text">{{ lang.admin.text }}:</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea class="form-control" rows="10" name="mass_text" id="mass_text" required></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="mass_html">{{ lang.admin.html }} ({{ lang.admin.optional }}):</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea class="form-control" rows="10" name="mass_html" id="mass_html"></textarea>
|
||||
<p class="small"><i class="bi bi-arrow-return-right"></i> <a target="_blank" href="https://templates.mailchimp.com/resources/html-to-text/">{{ lang.admin.convert_html_to_text }}</a></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<label>
|
||||
<input type="checkbox" id="mass_disarm"> {{ lang.admin.activate_send }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-sm d-block d-sm-inline btn-success" type="submit" id="mass_send" name="mass_send" disabled><i class="bi bi-envelope-fill"></i> {{ lang.admin.send }}</button>
|
||||
</div>
|
||||
|
@ -6,40 +6,40 @@
|
||||
<br>
|
||||
<form class="form-horizontal" data-id="editadmin" role="form" method="post" autocomplete="off">
|
||||
<input type="hidden" value="0" name="active">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="username_new">{{ lang.edit.username }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input class="form-control" type="text" name="username_new" onkeyup="this.value = this.value.toLowerCase();" required value="{{ admin }}" />
|
||||
↳ <kbd>a-z - _ .</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password">{{ lang.edit.password }} (<a href="#" class="generate_password">{{ lang.edit.generate }}</a>)</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" data-pwgen-field="true" data-hibp="true" class="form-control" name="password" placeholder="" autocomplete="new-password">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password2">{{ lang.edit.password_repeat }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" data-pwgen-field="true" class="form-control" name="password2" autocomplete="new-password">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active"{% if result.active == '1' %} checked{% endif %}> {{ lang.edit.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="disable_tfa"> {{ lang.tfa.disable_tfa }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-api-reload-location="/admin" data-id="editadmin" data-item="{{ admin }}" data-api-url='edit/admin' data-api-attr='{}' href="#">{{ lang.edit.save }}</button>
|
||||
</div>
|
||||
|
@ -9,13 +9,13 @@
|
||||
{% if not skip_sogo %}
|
||||
<input type="hidden" value="0" name="sogo_visible">
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="address">{{ lang.edit.alias }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input class="form-control" type="text" name="address" value="{{ result.address }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="goto">{{ lang.edit.target_address|raw }}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea id="textarea_alias_goto" class="form-control" autocapitalize="none" autocorrect="off" rows="10" id="goto" name="goto" required>{{ goto|replace({',': ', '}) }}</textarea>
|
||||
@ -38,27 +38,27 @@
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="private_">{{ lang.edit.private_comment }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input maxlength="160" class="form-control" type="text" name="private_comment" value="{{ result.private_comment }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="public_comment">{{ lang.edit.public_comment }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input maxlength="160" class="form-control" type="text" name="public_comment" value="{{ result.public_comment }}" />
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active"{% if result.active == '1' %} checked{% endif %}> {{ lang.edit.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="editalias" data-item="{{ alias }}" data-api-url='edit/alias' data-api-attr='{}' href="#">{{ lang.edit.save }}</button>
|
||||
</div>
|
||||
|
@ -5,7 +5,7 @@
|
||||
<h4>{{ lang.edit.edit_alias_domain }}</h4>
|
||||
<form class="form-horizontal" data-id="editaliasdomain" role="form" method="post">
|
||||
<input type="hidden" value="0" name="active">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="target_domain">{{ lang.edit.target_domain }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="full-width-select" data-live-search="true" id="addSelectDomain" name="target_domain" required>
|
||||
@ -15,14 +15,14 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active"{% if result.active == '1' %} checked{% endif %}> {{ lang.edit.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="editaliasdomain" data-item="{{ alias_domain }}" data-api-url='edit/alias-domain' data-api-attr='{}' href="#">{{ lang.edit.save }}</button>
|
||||
</div>
|
||||
@ -30,16 +30,16 @@
|
||||
</form>
|
||||
<hr>
|
||||
<form data-id="domratelimit" class="form-inline well" method="post">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label">{{ lang.acl.ratelimit }}</label>
|
||||
<input name="rl_value" type="number" value="{{ rl.value }}" autocomplete="off" class="form-control" placeholder="{{ lang.ratelimit.disabled }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<select name="rl_frame" class="form-control">
|
||||
{% include 'mailbox/rl-frame.twig' %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-secondary" data-action="edit_selected" data-id="domratelimit" data-item="{{ alias_domain }}" data-api-url='edit/rl-domain' data-api-attr='{}' href="#">{{ lang.admin.save }}</button>
|
||||
</div>
|
||||
</form>
|
||||
|
@ -6,32 +6,32 @@
|
||||
<form class="form-horizontal" data-pwgen-length="32" data-id="editapp" role="form" method="post">
|
||||
<input type="hidden" value="0" name="active">
|
||||
<input type="hidden" value="0" name="protocols">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="app_name">{{ lang.edit.app_name }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="app_name" id="app_name" value="{{ result.name }}" required maxlength="255">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password">{{ lang.edit.password }} (<a href="#" class="generate_password">{{ lang.edit.generate }}</a>)</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" data-pwgen-field="true" data-hibp="true" class="form-control" name="password" placeholder="" autocomplete="new-password">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password2">{{ lang.edit.password_repeat }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" data-pwgen-field="true" class="form-control" name="password2" autocomplete="new-password">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active"{% if result.active == '1' %} checked{% endif %}> {{ lang.edit.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="protocols">{{ lang.edit.app_passwd_protocols }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="full-width-select" data-live-search="true" id="protocols" name="protocols" multiple>
|
||||
@ -44,7 +44,7 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="editapp" data-item="{{ result.id }}" data-api-url='edit/app-passwd' data-api-attr='{}' href="#">{{ lang.edit.save }}</button>
|
||||
</div>
|
||||
|
@ -6,14 +6,14 @@
|
||||
<br>
|
||||
<form class="form-horizontal" data-id="editbcc" role="form" method="post">
|
||||
<input type="hidden" value="0" name="active">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="bcc_dest">{{ lang.mailbox.bcc_destination }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input value="{{ result.bcc_dest }}" type="text" class="form-control" name="bcc_dest" id="bcc_dest">
|
||||
<small>{{ lang.edit.bcc_dest_format|raw }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="type">{{ lang.mailbox.bcc_map_type }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select id="addFilterType" name="type" id="type" required>
|
||||
@ -22,14 +22,14 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active"{% if result.active == '1' %} checked{% endif %}> {{ lang.edit.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="editbcc" data-item="{{ bcc }}" data-api-url='edit/bcc' data-api-attr='{}' href="#">{{ lang.edit.save }}</button>
|
||||
</div>
|
||||
|
@ -17,13 +17,13 @@
|
||||
<input type="hidden" value="0" name="gal">
|
||||
<input type="hidden" value="0" name="relay_all_recipients">
|
||||
<input type="hidden" value="0" name="relay_unknown_only">
|
||||
<div class="form-group" data-acl="{{ acl.domain_desc }}">
|
||||
<div class="row" data-acl="{{ acl.domain_desc }}">
|
||||
<label class="control-label col-sm-2" for="description">{{ lang.edit.description }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="description" value="{{ result.description }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="relayhost">{{ lang.edit.relayhost }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select data-acl="{{ acl.domain_relayhost }}" data-live-search="true" id="relayhost" name="relayhost" class="form-control">
|
||||
@ -42,37 +42,37 @@
|
||||
</div>
|
||||
</div>
|
||||
{% if mailcow_cc_role == 'admin' %}
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="aliases">{{ lang.edit.max_aliases }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="aliases" value="{{ result.max_num_aliases_for_domain }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="mailboxes">{{ lang.edit.max_mailboxes }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="mailboxes" value="{{ result.max_num_mboxes_for_domain }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="defquota">{{ lang.edit.mailbox_quota_def }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="defquota" value="{{ (result.def_quota_for_mbox / 1048576) }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="maxquota">{{ lang.edit.max_quota }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="maxquota" value="{{ (result.max_quota_for_mbox / 1048576) }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="quota">{{ lang.edit.domain_quota }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="quota" value="{{ (result.max_quota_for_domain / 1048576) }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2">{{ lang.edit.backup_mx_options }}</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="checkbox">
|
||||
@ -88,7 +88,7 @@
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="gal"{% if result.gal == '1' %} checked{% endif %}> {{ lang.edit.gal }}</label>
|
||||
@ -97,14 +97,14 @@
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active"{% if result.active == '1' %} checked{% endif %}{% if mailcow_cc_role != 'admin' %} disabled{% endif %}> {{ lang.edit.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="editdomain" data-item="{{ domain }}" data-api-url='edit/domain' data-api-attr='{}' href="#">{{ lang.admin.save }}</button>
|
||||
</div>
|
||||
@ -124,16 +124,16 @@
|
||||
</div>
|
||||
<div id="dratelimit" class="tab-pane fade" role="tabpanel" aria-labelledby="domain-ratelimit">
|
||||
<form data-id="domratelimit" class="form-inline well" method="post">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label">{{ lang.edit.ratelimit }}</label>
|
||||
<input name="rl_value" type="number" value="{{ rl.value }}" autocomplete="off" class="form-control" placeholder="{{ lang.ratelimit.disabled }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<select name="rl_frame" class="form-control">
|
||||
{% include 'mailbox/rl-frame.twig' %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<button data-acl="{{ acl.ratelimit }}" class="btn btn-xs-lg d-block d-sm-inline btn-secondary" data-action="edit_selected" data-id="domratelimit" data-item="{{ domain }}" data-api-url='edit/rl-domain' data-api-attr='{}' href="#">{{ lang.admin.save }}</button>
|
||||
</div>
|
||||
</form>
|
||||
@ -191,20 +191,20 @@
|
||||
<p>{{ lang.edit.quota_warning_bcc_info|raw }}</p>
|
||||
<form class="form-horizontal" data-id="quota_bcc">
|
||||
<input type="hidden" value="0" name="active">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="script_data">{{ lang.edit.target_address|raw }}:</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea spellcheck="false" autocorrect="off" autocapitalize="none" class="form-control" rows="10" id="bcc_rcpt" name="bcc_rcpt">{{ quota_notification_bcc.bcc_rcpts|join("\n") }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active"{% if quota_notification_bcc.active == '1' %} checked{% endif %}> {{ lang.edit.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="quota_bcc" data-item="quota_bcc" data-api-url='edit/quota_notification_bcc' data-api-attr='{"domain":"{{ domain }}"}' href="#">{{ lang.edit.save }}</button>
|
||||
</div>
|
||||
|
@ -6,14 +6,14 @@
|
||||
<br>
|
||||
<form class="form-horizontal" data-id="editdomainadmin" role="form" method="post" autocomplete="off">
|
||||
<input type="hidden" value="0" name="active">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="username_new">{{ lang.edit.username }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input class="form-control" type="text" name="username_new" value="{{ domain_admin }}" required onkeyup="this.value = this.value.toLowerCase();" />
|
||||
↳ <kbd>a-z - _ .</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="domains">{{ lang.edit.domains }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select data-live-search="true" class="full-width-select" name="domains" multiple required>
|
||||
@ -26,33 +26,33 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password">{{ lang.edit.password }} (<a href="#" class="generate_password">{{ lang.edit.generate }}</a>)</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" data-pwgen-field="true" data-hibp="true" class="form-control" name="password" placeholder="" autocomplete="new-password">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password2">{{ lang.edit.password_repeat }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" data-pwgen-field="true" class="form-control" name="password2" autocomplete="new-password">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active"{% if result.active == '1' %} checked{% endif %}> {{ lang.edit.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="disable_tfa"> {{ lang.tfa.disable_tfa }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-api-reload-location="/admin" data-id="editdomainadmin" data-item="{{ domain_admin }}" data-api-url='edit/domain-admin' data-api-attr='{}' href="#">{{ lang.edit.save }}</button>
|
||||
</div>
|
||||
@ -64,14 +64,14 @@
|
||||
<p class="text-muted">ACL</p>
|
||||
</div>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<select id="da_acl" name="da_acl" size="10" data-container="body" multiple>
|
||||
{% for acl, val in da_acls %}
|
||||
<option value="{{ acl }}"{% if val == 1 %} selected{% endif %}>{{ lang.acl[acl] }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-secondary" data-action="edit_selected" data-id="daacl" data-item="{{ domain_admin }}" data-api-url='edit/da-acl' data-api-attr='{}' href="#">{{ lang.admin.save }}</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -5,13 +5,13 @@
|
||||
<h4>Filter</h4>
|
||||
<form class="form-horizontal" data-id="editfilter" role="form" method="post">
|
||||
<input type="hidden" value="0" name="active">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="script_desc">{{ lang.edit.sieve_desc }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="script_desc" id="script_desc" value="{{ result.script_desc }}" required maxlength="255">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="filter_type">{{ lang.edit.sieve_type }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select id="addFilterType" name="filter_type" id="filter_type" required>
|
||||
@ -20,20 +20,20 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="script_data">Script:</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea spellcheck="false" autocorrect="off" autocapitalize="none" class="form-control textarea-code" rows="20" id="script_data" name="script_data" required>{{ result.script_data|raw }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active"{% if result.active == '1' %} checked{% endif %}> {{ lang.edit.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="editfilter" data-item="{{ result.id }}" data-api-url='edit/filter' data-api-attr='{}' href="#">{{ lang.edit.validate_save }}</button>
|
||||
</div>
|
||||
|
@ -16,13 +16,13 @@
|
||||
<input type="hidden" value="0" name="force_pw_update">
|
||||
<input type="hidden" value="0" name="sogo_access">
|
||||
<input type="hidden" value="0" name="protocol_access">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="name">{{ lang.edit.full_name }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="name" value="{{ result.name }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="quota">{{ lang.edit.quota_mb }}
|
||||
<br><span id="quotaBadge" class="badge">max. {{ (result.max_new_quota / 1048576) }} MiB</span>
|
||||
</label>
|
||||
@ -31,7 +31,7 @@
|
||||
<small class="text-muted">0 = ∞</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="sender_acl">{{ lang.edit.sender_acl }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select data-live-search="true" data-width="100%" style="width:100%" id="editSelectSenderACL" name="sender_acl" size="10" multiple>
|
||||
@ -69,7 +69,7 @@
|
||||
<small class="text-muted">{{ lang.edit.sender_acl_info|raw }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="relayhost">{{ lang.edit.relayhost }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select data-acl="{{ acl.mailbox_relayhost }}" data-live-search="true" id="relayhost" name="relayhost" class="form-control mb-4">
|
||||
@ -89,7 +89,7 @@
|
||||
<small class="text-muted">{{ lang.edit.mailbox_relayhost_info }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2">{{ lang.user.quarantine_notification }}</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="btn-group" data-acl="{{ acl.quarantine_notification }}">
|
||||
@ -121,7 +121,7 @@
|
||||
<p class="text-muted"><small>{{ lang.user.quarantine_notification_info }}</small></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2">{{ lang.user.quarantine_category }}</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="btn-group" data-acl="{{ acl.quarantine_category }}">
|
||||
@ -147,7 +147,7 @@
|
||||
<p class="text-muted"><small>{{ lang.user.quarantine_category_info }}</small></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="sender_acl">{{ lang.user.tls_policy }}</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="btn-group" data-acl="{{ acl.tls_policy }}">
|
||||
@ -166,19 +166,19 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password">{{ lang.edit.password }} (<a href="#" class="generate_password">{{ lang.edit.generate }}</a>)</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" data-pwgen-field="true" data-hibp="true" class="form-control" name="password" placeholder="{{ lang.edit.unchanged_if_empty }}" autocomplete="new-password">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password2">{{ lang.edit.password_repeat }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" data-pwgen-field="true" class="form-control" name="password2" autocomplete="new-password">
|
||||
</div>
|
||||
</div>
|
||||
<div data-acl="{{ acl.extend_sender_acl }}" class="form-group">
|
||||
<div data-acl="{{ acl.extend_sender_acl }}" class="row">
|
||||
<label class="control-label col-sm-2" for="extended_sender_acl">{{ lang.edit.extended_sender_acl }}</label>
|
||||
<div class="col-sm-10">
|
||||
{% if sender_acl_handles.external_sender_aliases %}
|
||||
@ -188,7 +188,7 @@
|
||||
<small class="text-muted">{{ lang.edit.extended_sender_acl_info|raw }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="protocol_access">{{ lang.edit.allowed_protocols }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select data-acl="{{ acl.protocol_access }}" name="protocol_access" multiple class="form-control">
|
||||
@ -199,7 +199,7 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div hidden data-acl="{{ acl.smtp_ip_access }}" class="form-group">
|
||||
<div hidden data-acl="{{ acl.smtp_ip_access }}" class="row">
|
||||
<label class="control-label col-sm-2" for="allow_from_smtp">{{ lang.edit.allow_from_smtp }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="allow_from_smtp" value="{{ allow_from_smtp }}" placeholder="1.1.1.1, 10.2.0.0/24, ...">
|
||||
@ -207,7 +207,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<select name="active" class="form-control">
|
||||
<option value="1"{% if result.active == '1' %} selected{% endif %}>{{ lang.edit.active }}</option>
|
||||
@ -216,7 +216,7 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="force_pw_update"{% if result.attributes.force_pw_update == '1' %} checked{% endif %}> {{ lang.edit.force_pw_update }}</label>
|
||||
@ -225,7 +225,7 @@
|
||||
</div>
|
||||
</div>
|
||||
{% if not skip_sogo %}
|
||||
<div data-acl="{{ acl.sogo_access }}" class="form-group">
|
||||
<div data-acl="{{ acl.sogo_access }}" class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="sogo_access"{% if result.attributes.sogo_access == '1' %} checked{% endif %}> {{ lang.edit.sogo_access }}</label>
|
||||
@ -234,7 +234,7 @@
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="editmailbox" data-item="{{ result.username }}" data-api-url='edit/mailbox' data-api-attr='{}' href="#">{{ lang.edit.save }}</button>
|
||||
</div>
|
||||
@ -253,34 +253,34 @@
|
||||
<div class="col-sm-10">
|
||||
<p class="text-muted">{{ lang.user.pushover_info|format(mailbox)|raw }}</p>
|
||||
<p class="text-muted">{{ lang.edit.pushover_vars|raw }}: <code>{SUBJECT}</code>, <code>{SENDER}</code></p>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label for="token">API Token/Key (Application)</label>
|
||||
<input type="text" class="form-control" name="token" maxlength="30" value="{{ pushover_data.token }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label for="key">User/Group Key</label>
|
||||
<input type="text" class="form-control" name="key" maxlength="30" value="{{ pushover_data.key }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label for="title">{{ lang.edit.pushover_title }}</label>
|
||||
<input type="text" class="form-control" name="title" value="{{ pushover_data.title }}" placeholder="Mail">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label for="text">{{ lang.edit.pushover_text }}</label>
|
||||
<input type="text" class="form-control" name="text" value="{{ pushover_data.text }}" placeholder="You've got mail 📧">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label for="text">{{ lang.edit.pushover_sender_array|raw }}</label>
|
||||
<input type="text" class="form-control" name="senders" value="{{ pushover_data.senders }}" placeholder="sender1@example.com, sender2@example.com">
|
||||
</div>
|
||||
@ -298,7 +298,7 @@
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<div id="po_advanced" class="collapse">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label for="text">{{ lang.edit.pushover_sender_regex }}</label>
|
||||
<input type="text" class="form-control" name="senders_regex" value="{{ pushover_data.senders_regex }}" placeholder="/(.*@example\.org$|^foo@example\.com$)/i" regex="true">
|
||||
<div class="checkbox">
|
||||
@ -328,14 +328,14 @@
|
||||
<p class="text-muted">ACL</p>
|
||||
</div>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<select id="user_acl" name="user_acl" size="10" multiple>
|
||||
{% for acl, val in user_acls %}
|
||||
<option value="{{ acl }}"{% if val == 1 %} selected{% endif %}>{{ lang.acl[acl] }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-secondary" data-action="edit_selected" data-id="useracl" data-item="{{ mailbox }}" data-api-url='edit/user-acl' data-api-attr='{}' href="#">{{ lang.edit.save }}</button>
|
||||
</div>
|
||||
</div>
|
||||
@ -349,15 +349,15 @@
|
||||
<p class="text-muted">{{ lang.acl.ratelimit }}</p>
|
||||
</div>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<input name="rl_value" type="number" autocomplete="off" value="{{ rl.value }}" class="form-control" placeholder="{{ lang.ratelimit.disabled }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<select name="rl_frame" class="form-control">
|
||||
{% include 'mailbox/rl-frame.twig' %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-secondary" data-action="edit_selected" data-id="mboxratelimit" data-item="{{ mailbox }}" data-api-url='edit/rl-mbox' data-api-attr='{}' href="#">{{ lang.edit.save }}</button>
|
||||
</div>
|
||||
<p class="text-muted">{{ lang.edit.mbox_rl_info }}</p>
|
||||
|
@ -4,31 +4,31 @@
|
||||
{% if result %}
|
||||
<h4>OAuth2</h4>
|
||||
<form data-id="oauth2client" class="form-horizontal" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="client_id">{{ lang.edit.client_id }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="client_id" id="client_id" value="{{ result.client_id }}" disabled>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="client_secret">{{ lang.edit.client_secret }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="client_secret" id="client_secret" value="{{ result.client_secret }}" disabled>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="scope">{{ lang.edit.scope }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="scope" id="scope" value="{{ result.scope }}" disabled>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="redirect_uri">{{ lang.edit.redirect_uri }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="redirect_uri" id="redirect_uri" value="{{ result.redirect_uri }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-secondary" data-action="edit_selected" data-id="oauth2client" data-item="{{ oauth2client }}" data-api-url='edit/oauth2-client' data-api-attr='{}' href="#">{{ lang.admin.save }}</button>
|
||||
</div>
|
||||
|
@ -6,28 +6,28 @@
|
||||
<br>
|
||||
<form class="form-horizontal" data-id="edit_recipient_map" role="form" method="post">
|
||||
<input type="hidden" value="0" name="active">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="recipient_map_new">{{ lang.mailbox.recipient_map_old }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input value="{{ result.recipient_map_old }}" type="text" class="form-control" name="recipient_map_old" id="recipient_map_old">
|
||||
<small>{{ lang.mailbox.recipient_map_old_info }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="recipient_map_new">{{ lang.mailbox.recipient_map_new }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input value="{{ result.recipient_map_new }}" type="text" class="form-control" name="recipient_map_new" id="recipient_map_new">
|
||||
<small>{{ lang.mailbox.recipient_map_new_info }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active"{% if result.active == '1' %} checked{% endif %}> {{ lang.edit.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="edit_recipient_map" data-item="{{ map }}" data-api-url='edit/recipient_map' data-api-attr='{}' href="#">{{ lang.edit.save }}</button>
|
||||
</div>
|
||||
|
@ -5,33 +5,33 @@
|
||||
<h4>{{ lang.edit.resource }}</h4>
|
||||
<form class="form-horizontal" role="form" method="post" data-id="editrelayhost">
|
||||
<input type="hidden" value="0" name="active">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="hostname">{{ lang.add.hostname }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="hostname" value="{{ result.hostname }}" required>
|
||||
<p class="text-muted">{{ lang.add.relayhost_wrapped_tls_info|raw }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="username">{{ lang.add.username }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="username" value="{{ result.username }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password">{{ lang.add.password }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" data-hibp="true" class="form-control" name="password" value="{{ result.password }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active"{% if result.active == '1' %} checked{% endif %}> {{ lang.edit.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="editrelayhost" data-item="{{ result.id }}" data-api-url='edit/relayhost' data-api-attr='{}' href="#">{{ lang.edit.save }}</button>
|
||||
</div>
|
||||
|
@ -5,13 +5,13 @@
|
||||
<h4>{{ lang.edit.resource }}</h4>
|
||||
<form class="form-horizontal" role="form" method="post" data-id="editresource">
|
||||
<input type="hidden" value="0" name="active">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="description">{{ lang.add.description }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="description" value="{{ result.description }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="domain">{{ lang.edit.kind }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="kind" title="{{ lang.edit.select }}" required>
|
||||
@ -21,7 +21,7 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="multiple_bookings_select">{{ lang.add.multiple_bookings }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="multiple_bookings_select" id="editSelectMultipleBookings" title="{{ lang.add.select }}" required>
|
||||
@ -36,14 +36,14 @@
|
||||
<input type="hidden" name="multiple_bookings" id="multiple_bookings">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active"{% if result.active == '1' %} checked{% endif %}> {{ lang.edit.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="editresource" data-item="{{ result.name }}" data-api-url='edit/resource' data-api-attr='{}' href="#">{{ lang.edit.save }}</button>
|
||||
</div>
|
||||
|
@ -11,31 +11,31 @@
|
||||
<input type="hidden" value="0" name="skipcrossduplicates">
|
||||
<input type="hidden" value="0" name="active">
|
||||
<input type="hidden" value="0" name="subscribeall">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="host1">{{ lang.edit.hostname }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="host1" id="host1" value="{{ result.host1 }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="port1">Port</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="port1" id="port1" min="1" max="65535" value="{{ result.port1 }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="user1">{{ lang.edit.username }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="user1" id="user1" value="{{ result.user1 }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password1">{{ lang.edit.password }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control" name="password1" id="password1" value="{{ result.password1 }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="enc1">{{ lang.edit.encryption }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select id="enc1" name="enc1">
|
||||
@ -45,110 +45,110 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="mins_interval">{{ lang.edit.mins_interval }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="mins_interval" min="1" max="43800" value="{{ result.mins_interval }}" required>
|
||||
<small class="text-muted">1-43800</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="subfolder2">{{ lang.edit.subfolder2|raw }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="subfolder2" id="subfolder2" value="{{ result.subfolder2 }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="maxage">{{ lang.edit.maxage|raw }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="maxage" id="maxage" min="0" max="32000" value="{{ result.maxage }}">
|
||||
<small class="text-muted">0-32000</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="maxbytespersecond">{{ lang.edit.maxbytespersecond|raw }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="maxbytespersecond" id="maxbytespersecond" min="0" max="125000000" value="{{ result.maxbytespersecond }}">
|
||||
<small class="text-muted">0-125000000</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="timeout1">{{ lang.add.timeout1 }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="timeout1" id="timeout1" min="1" max="32000" value="{{ result.timeout1 }}">
|
||||
<small class="text-muted">1-32000</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="timeout2">{{ lang.add.timeout2 }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="timeout2" id="timeout2" min="1" max="32000" value="{{ result.timeout2 }}">
|
||||
<small class="text-muted">1-32000</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="exclude">{{ lang.edit.exclude }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="exclude" id="exclude" value="{{ result.exclude }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="custom_params">{{ lang.add.custom_params }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="custom_params" id="custom_params" value="{{ result.custom_params }}" placeholder="--dry --some-param=xy --other-param=yx">
|
||||
<small class="text-muted">{{ lang.add.custom_params_hint }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="delete2duplicates"{% if result.delete2duplicates == '1' %} checked{% endif %}> {{ lang.edit.delete2duplicates }} (--delete2duplicates)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="delete1"{% if result.delete1 == '1' %} checked{% endif %}> {{ lang.edit.delete1 }} (--delete1)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="delete2"{% if result.delete2 == '1' %} checked{% endif %}> {{ lang.edit.delete2 }} (--delete2)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="automap"{% if result.automap == '1' %} checked{% endif %}> {{ lang.edit.automap }} (--automap)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="skipcrossduplicates"{% if result.skipcrossduplicates == '1' %} checked{% endif %}> {{ lang.edit.skipcrossduplicates }} (--skipcrossduplicates)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="subscribeall"{% if result.subscribeall == '1' %} checked{% endif %}> {{ lang.add.subscribeall }} (--subscribeall)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active"{% if result.active == '1' %} checked{% endif %}> {{ lang.edit.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="editsyncjob" data-item="{{ result.id }}" data-api-url='edit/syncjob' data-api-attr='{}' href="#">{{ lang.edit.save }}</button>
|
||||
</div>
|
||||
|
@ -6,14 +6,14 @@
|
||||
<br>
|
||||
<form class="form-horizontal" data-id="edit_tls_policy_maps" role="form" method="post">
|
||||
<input type="hidden" value="0" name="active">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="dest">{{ lang.mailbox.tls_map_dest }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input value="{{ result.dest }}" type="text" class="form-control" name="dest" id="dest">
|
||||
<small>{{ lang.mailbox.tls_map_dest_info }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="policy">{{ lang.mailbox.tls_map_policy }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="full-width-select" name="policy" required>
|
||||
@ -23,21 +23,21 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="parameters">{{ lang.mailbox.tls_map_parameters }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input value="{{ result.parameters }}" type="text" class="form-control" name="parameters" id="parameters">
|
||||
<small>{{ lang.mailbox.tls_map_parameters_info }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active"{% if result.active == '1' %} checked{% endif %}> {{ lang.edit.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="edit_tls_policy_maps" data-item="{{ map }}" data-api-url='edit/tls-policy-map' data-api-attr='{}' href="#">{{ lang.edit.save }}</button>
|
||||
</div>
|
||||
|
@ -6,45 +6,45 @@
|
||||
<form class="form-horizontal" role="form" method="post" data-id="edittransport">
|
||||
<input type="hidden" value="0" name="active">
|
||||
<input type="hidden" value="0" name="is_mx_based">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="destination">{{ lang.add.destination }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="destination" value="{{ result.destination }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="nexthop">{{ lang.edit.nexthop }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="nexthop" placeholder='[0.0.0.0], [0.0.0.0]:25, host:25, host, [host]:25' value="{{ result.nexthop }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="username">{{ lang.add.username }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="username" value="{{ result.username }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password">{{ lang.add.password }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" data-hibp="true" class="form-control" name="password" value="{{ result.password }}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="is_mx_based"{% if result.is_mx_based == '1' %} checked{% endif %}> {{ lang.edit.lookup_mx|raw }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active"{% if result.active == '1' %} checked{% endif %}> {{ lang.edit.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="edittransport" data-item="{{ result.id }}" data-api-url='edit/transport' data-api-attr='{}' href="#">{{ lang.edit.save }}</button>
|
||||
</div>
|
||||
|
@ -39,12 +39,12 @@
|
||||
<div class="col-lg-6">
|
||||
<h5>Global Prefilter</h5>
|
||||
<form class="form-horizontal" data-cached-form="false" role="form" data-id="add_prefilter">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<textarea autocorrect="off" spellcheck="false" autocapitalize="none" class="form-control textarea-code script_data" rows="10" name="script_data" required>{{ global_filters.prefilter }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-sm-10 add_filter_btns">
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-sm btn-xs-half d-block d-sm-inline btn-secondary validate_sieve" href="#">{{ lang.add.validate }}</button>
|
||||
@ -57,12 +57,12 @@
|
||||
<div class="col-lg-6">
|
||||
<h5>Global Postfilter</h5>
|
||||
<form class="form-horizontal" data-cached-form="false" role="form" data-id="add_postfilter">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<textarea autocorrect="off" spellcheck="false" autocapitalize="none" class="form-control textarea-code script_data" rows="10" name="script_data" required>{{ global_filters.postfilter }}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-sm-10 add_filter_btns">
|
||||
<div class="btn-group">
|
||||
<button class="btn btn-sm btn-xs-half d-block d-sm-inline btn-secondary validate_sieve" href="#">{{ lang.add.validate }}</button>
|
||||
|
@ -8,26 +8,26 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="true" data-id="rsetting" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="desc">{{ lang.admin.rsetting_desc }}:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" id="adminRspamdSettingsDesc" name="desc" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="content">{{ lang.admin.rsetting_content }}:</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea class="form-control" id="adminRspamdSettingsContent" name="content" rows="10"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active" checked> {{ lang.admin.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="add_item" data-id="rsetting" data-api-url='add/rsetting' data-api-attr='{}' href="#"><i class="bi bi-plus-lg"></i> {{ lang.admin.add }}</button>
|
||||
</div>
|
||||
@ -50,14 +50,14 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="true" data-id="add_domain_admin" role="form" method="post" autocomplete="off">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="username">{{ lang.admin.username }}:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="username" onkeyup="this.value = this.value.toLowerCase();" required>
|
||||
↳ <kbd>a-z - _ .</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="name">{{ lang.admin.admin_domains }}:</label>
|
||||
<div class="col-sm-10">
|
||||
<select title="{{ lang.admin.search_domain_da }}" class="full-width-select" name="domains" size="5" multiple>
|
||||
@ -67,26 +67,26 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password">{{ lang.admin.password }} (<a href="#" class="generate_password">{{ lang.admin.generate }}</a>)</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control" data-pwgen-field="true" data-hibp="true" name="password" placeholder="" autocomplete="new-password" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password2">{{ lang.admin.password_repeat }}:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control" data-pwgen-field="true" name="password2" placeholder="" autocomplete="new-password" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active" checked> {{ lang.admin.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="add_item" data-id="add_domain_admin" data-api-url='add/domain-admin' data-api-attr='{}' href="#"><i class="bi bi-plus-lg"></i> {{ lang.admin.add }}</button>
|
||||
</div>
|
||||
@ -108,13 +108,13 @@
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="false" data-id="fido2ChangeFn" role="form" method="post" autocomplete="off">
|
||||
<input type="hidden" class="form-control" name="fido2_cid" id="fido2_cid">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-4" for="fido2_fn">{{ lang.fido2.fn }}:</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="text" class="form-control" name="fido2_fn">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-4 col-sm-8">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="fido2ChangeFn" data-item="null" data-api-url='edit/fido2-fn' data-api-attr='{}' href="#">{{ lang.admin.save }}</button>
|
||||
</div>
|
||||
@ -134,13 +134,13 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="true" data-id="add_oauth2_client" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="redirect_uri">{{ lang.admin.oauth2_redirect_uri }}:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="redirect_uri" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="add_item" data-id="add_oauth2_client" data-api-url='add/oauth2-client' data-api-attr='{}' href="#"><i class="bi bi-plus-lg"></i> {{ lang.admin.add }}</button>
|
||||
</div>
|
||||
@ -160,33 +160,33 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="true" data-id="add_admin" role="form" method="post" autocomplete="off">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="username">{{ lang.admin.username }}:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="username" onkeyup="this.value = this.value.toLowerCase();" required>
|
||||
↳ <kbd>a-z - _ .</kbd>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password">{{ lang.admin.password }} (<a href="#" class="generate_password">{{ lang.admin.generate }}</a>):</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control" data-pwgen-field="true" data-hibp="true" name="password" placeholder="" autocomplete="new-password" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password2">{{ lang.admin.password_repeat }}:</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control" data-pwgen-field="true" name="password2" placeholder="" autocomplete="new-password" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active" checked> {{ lang.admin.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="add_item" data-id="add_admin" data-api-url='add/admin' data-api-attr='{}' href="#"><i class="bi bi-plus-lg"></i> {{ lang.admin.add }}</button>
|
||||
</div>
|
||||
@ -208,20 +208,20 @@
|
||||
<form class="form-horizontal" data-cached-form="true" id="test_transport_form" role="form" method="post">
|
||||
<input type="hidden" class="form-control" name="transport_id" id="transport_id">
|
||||
<input type="hidden" class="form-control" name="transport_type" id="transport_type">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="mail_from">{{ lang.admin.relay_from }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="mail_from" placeholder="relay@example.org">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="mail_rcpt">{{ lang.admin.relay_rcpt }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="mail_rcpt" placeholder="null@hosted.mailcow.de" value="null@hosted.mailcow.de">
|
||||
<p class="text-muted">{{ lang.admin.transport_test_rcpt_info|raw }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-secondary" id="test_transport" href="#">{{ lang.admin.relay_run }}</button>
|
||||
</div>
|
||||
|
@ -8,22 +8,22 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<input type="text" class="form-control" name="key_id" placeholder="{{ lang.tfa.key_id }}" autocomplete="off" required>
|
||||
</div>
|
||||
<hr>
|
||||
<p class="text-muted">{{ lang.tfa.api_register|format(ui_texts.main_name)|raw }}</p>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<input type="text" class="form-control" name="yubico_id" placeholder="Yubico API ID" autocomplete="off" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<input type="text" class="form-control" name="yubico_key" placeholder="Yubico API Key" autocomplete="off" required>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<input type="password" class="form-control" name="confirm_password" placeholder="{{ lang.user.password_now }}" autocomplete="off" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text" id="yubi-addon"><img alt="Yubicon Icon" src="/img/yubi.ico"></span>
|
||||
<input type="text" name="otp_token" class="form-control" placeholder="Touch Yubikey" aria-describedby="yubi-addon">
|
||||
@ -46,10 +46,10 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form role="form" method="post" id="webauthn_reg_form">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<input type="text" class="form-control" name="key_id" placeholder="{{ lang.tfa.key_id }}" autocomplete="off" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<input type="password" class="form-control" name="confirm_password" placeholder="{{ lang.user.password_now }}" autocomplete="off" required>
|
||||
</div>
|
||||
<hr>
|
||||
@ -82,10 +82,10 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<input type="text" class="form-control" name="key_id" placeholder="{{ lang.tfa.key_id_totp }}" autocomplete="off" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<input type="password" class="form-control" name="confirm_password" placeholder="{{ lang.user.password_now }}" autocomplete="off" required>
|
||||
</div>
|
||||
<hr>
|
||||
@ -144,7 +144,7 @@
|
||||
<div class="modal-body">
|
||||
{% if pending_tfa_method == 'yubi_otp' %}
|
||||
<form role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text" id="yubi-addon"><img alt="Yubicon Icon" src="/img/yubi.ico"></span>
|
||||
<input type="text" name="token" class="form-control" autocomplete="off" placeholder="Touch Yubikey" aria-describedby="yubi-addon">
|
||||
@ -156,7 +156,7 @@
|
||||
{% endif %}
|
||||
{% if pending_tfa_method == 'totp' %}
|
||||
<form role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<div class="input-group">
|
||||
<span class="input-group-text" id="tfa-addon"><i class="bi bi-shield-lock-fill"></i></span>
|
||||
<input type="number" min="000000" max="999999" name="token" class="form-control" placeholder="123456" autocomplete="one-time-code" aria-describedby="tfa-addon">
|
||||
|
@ -8,13 +8,13 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="true" data-id="add_mailbox" role="form" autocomplete="off">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="local_part">{{ lang.add.mailbox_username }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" pattern="[A-Za-z0-9\.!#$%&'*+/=?^_`{|}~-]+" autocorrect="off" autocapitalize="none" class="form-control" name="local_part" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="domain">{{ lang.add.domain }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="full-width-select" data-live-search="true" id="addSelectDomain" name="domain" required>
|
||||
@ -24,13 +24,13 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="name">{{ lang.add.full_name }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="name">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="addInputQuota">{{ lang.add.quota_mb }}
|
||||
<br /><span id="quotaBadge" class="badge">max. - MiB</span>
|
||||
</label>
|
||||
@ -40,19 +40,19 @@
|
||||
<div class="badge fs-5 bg-warning addInputQuotaExhausted" style="display:none;">{{ lang.warning.quota_exceeded_scope }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password">{{ lang.add.password }} (<a href="#" class="generate_password">{{ lang.add.generate }}</a>)</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" data-pwgen-field="true" data-hibp="true" class="form-control" name="password" placeholder="" autocomplete="new-password" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password2">{{ lang.add.password_repeat }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" data-pwgen-field="true" class="form-control" name="password2" placeholder="" autocomplete="new-password" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<select name="active" class="form-control">
|
||||
<option value="1" selected>{{ lang.add.active }}</option>
|
||||
@ -62,7 +62,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="add_item" data-id="add_mailbox" data-api-url='add/mailbox' data-api-attr='{}' href="#">{{ lang.admin.add }}</button>
|
||||
</div>
|
||||
@ -82,50 +82,50 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="true" data-id="add_domain" role="form">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="domain">{{ lang.add.domain }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" autocorrect="off" autocapitalize="none" class="form-control" name="domain" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="description">{{ lang.add.description }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="description">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="aliases">{{ lang.add.max_aliases }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="aliases" value="400" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="mailboxes">{{ lang.add.max_mailboxes }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="mailboxes" value="10" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="defquota">{{ lang.add.mailbox_quota_def }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="defquota" value="3072" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="maxquota">{{ lang.add.mailbox_quota_m }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="maxquota" value="10240" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="quota">{{ lang.add.domain_quota_m }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="quota" value="10240" required>
|
||||
</div>
|
||||
</div>
|
||||
{% if not skip_sogo %}
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="gal" checked> {{ lang.edit.gal }}</label>
|
||||
@ -134,7 +134,7 @@
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active" checked> {{ lang.add.active }}</label>
|
||||
@ -142,7 +142,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="rl_frame">{{ lang.acl.ratelimit }}</label>
|
||||
<div class="col-sm-7">
|
||||
<input name="rl_value" type="number" class="form-control" placeholder="{{ lang.ratelimit.disabled }}">
|
||||
@ -154,13 +154,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="dkim_selector">{{ lang.admin.dkim_domains_selector }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input class="form-control" id="dkim_selector" name="dkim_selector" value="dkim">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="key_size">{{ lang.admin.dkim_key_length }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select data-style="btn btn-secondary btn-sm" class="form-control" id="key_size" name="key_size">
|
||||
@ -170,7 +170,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2">{{ lang.add.backup_mx_options }}</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="checkbox">
|
||||
@ -185,7 +185,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10 btn-group">
|
||||
{% if not skip_sogo %}
|
||||
<button class="btn btn-xs-lg btn-xs-half d-block d-sm-inline btn-secondary" data-action="add_item" data-id="add_domain" data-api-url='add/domain' data-api-attr='{}' href="#">{{ lang.add.add_domain_only }}</button>
|
||||
@ -214,13 +214,13 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="true" role="form" data-id="add_resource">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="description">{{ lang.add.description }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="description" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="domain">{{ lang.add.domain }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select data-live-search="true" name="domain" title="{{ lang.add.select }}" required>
|
||||
@ -230,7 +230,7 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="domain">{{ lang.add.kind }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="kind" title="{{ lang.add.select }}" required>
|
||||
@ -240,7 +240,7 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="multiple_bookings_select">{{ lang.add.multiple_bookings }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="multiple_bookings_select" id="multiple_bookings_select" title="{{ lang.add.select }}" required>
|
||||
@ -255,14 +255,14 @@
|
||||
<input type="hidden" name="multiple_bookings" id="multiple_bookings">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active" checked> {{ lang.add.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="add_item" data-id="add_resource" data-api-url='add/resource' data-api-attr='{}' href="#">{{ lang.admin.add }}</button>
|
||||
</div>
|
||||
@ -283,14 +283,14 @@
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="true" role="form" data-id="add_alias">
|
||||
<input type="hidden" value="0" name="active">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="address">{{ lang.add.alias_address }}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea autocorrect="off" autocapitalize="none" class="form-control" rows="5" name="address" id="address" required></textarea>
|
||||
<p>{{ lang.add.alias_address_info|raw }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="goto">{{ lang.add.target_address }}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea id="textarea_alias_goto" autocorrect="off" autocapitalize="none" class="form-control" rows="5" id="goto" name="goto" required></textarea>
|
||||
@ -313,14 +313,14 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active" checked> {{ lang.add.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="add_item" data-id="add_alias" data-api-url='add/alias' data-api-attr='{}' href="#">{{ lang.admin.add }}</button>
|
||||
</div>
|
||||
@ -341,14 +341,14 @@
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="true" role="form" data-id="add_alias_domain">
|
||||
<input type="hidden" value="0" name="active">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="alias_domain">{{ lang.add.alias_domain }}</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea autocorrect="off" autocapitalize="none" class="form-control" rows="5" name="alias_domain" id="alias_domain" required></textarea>
|
||||
<p>{{ lang.add.alias_domain_info|raw }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="target_domain">{{ lang.add.target_domain }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select data-live-search="true" name="target_domain" title="{{ lang.add.select }}" required>
|
||||
@ -358,7 +358,7 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active" checked> {{ lang.add.active }}</label>
|
||||
@ -366,7 +366,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="rl_frame">{{ lang.acl.ratelimit }}</label>
|
||||
<div class="col-sm-7">
|
||||
<input name="rl_value" type="number" class="form-control" placeholder="{{ lang.ratelimit.disabled }}">
|
||||
@ -378,13 +378,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="dkim_selector2">{{ lang.admin.dkim_domains_selector }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input class="form-control" id="dkim_selector2" name="dkim_selector" value="dkim">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="key_size2">{{ lang.admin.dkim_key_length }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select data-style="btn btn-secondary btn-sm" class="form-control" id="key_size2" name="key_size">
|
||||
@ -394,7 +394,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="add_item" data-id="add_alias_domain" data-api-url='add/alias-domain' data-api-attr='{}' href="#">{{ lang.admin.add }}</button>
|
||||
</div>
|
||||
@ -415,7 +415,7 @@
|
||||
<div class="modal-body">
|
||||
<p class="text-muted">{{ lang.add.syncjob_hint }}</p>
|
||||
<form class="form-horizontal" data-cached-form="true" role="form" data-id="add_syncjob">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="username">{{ lang.add.username }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select data-live-search="true" name="username" required>
|
||||
@ -425,32 +425,32 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="host1">{{ lang.add.hostname }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="host1" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="port1">{{ lang.add.port }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="port1" min="1" max="65535" value="143" required>
|
||||
<small class="text-muted">1-65535</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="user1">{{ lang.add.username }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="user1" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password1">{{ lang.add.password }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control" name="password1" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="enc1">{{ lang.add.enc_method }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="enc1" title="{{ lang.add.select }}" required>
|
||||
@ -460,110 +460,110 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="mins_interval">{{ lang.add.mins_interval }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="mins_interval" min="1" max="43800" value="20" required>
|
||||
<small class="text-muted">1-43800</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="subfolder2">{{ lang.edit.subfolder2|raw }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="subfolder2" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="maxage">{{ lang.edit.maxage|raw }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="maxage" min="0" max="32000" value="0">
|
||||
<small class="text-muted">0-32000</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="maxbytespersecond">{{ lang.edit.maxbytespersecond|raw }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="maxbytespersecond" min="0" max="125000000" value="0">
|
||||
<small class="text-muted">0-125000000</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="timeout1">{{ lang.edit.timeout1 }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="timeout1" min="1" max="32000" value="600">
|
||||
<small class="text-muted">1-32000</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="timeout2">{{ lang.edit.timeout2 }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="timeout2" min="1" max="32000" value="600">
|
||||
<small class="text-muted">1-32000</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="exclude">{{ lang.add.exclude }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="exclude" value="(?i)spam|(?i)junk">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="custom_params">{{ lang.add.custom_params }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="custom_params" placeholder="--dry --some-param=xy --other-param=yx">
|
||||
<small class="text-muted">{{ lang.add.custom_params_hint }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="delete2duplicates" checked> {{ lang.add.delete2duplicates }} (--delete2duplicates)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="delete1"> {{ lang.add.delete1 }} (--delete1)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="delete2"> {{ lang.add.delete2 }} (--delete2)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="automap" checked> {{ lang.add.automap }} (--automap)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="skipcrossduplicates"> {{ lang.add.skipcrossduplicates }} (--skipcrossduplicates)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="subscribeall" checked> {{ lang.add.subscribeall }} (--subscribeall)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active" checked> {{ lang.add.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="add_item" data-id="add_syncjob" data-api-url='add/syncjob' data-api-attr='{}' href="#">{{ lang.admin.add }}</button>
|
||||
</div>
|
||||
@ -583,7 +583,7 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="true" role="form" data-id="add_filter">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="username">{{ lang.add.username }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select data-live-search="true" name="username" required>
|
||||
@ -593,7 +593,7 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="filter_type">{{ lang.add.sieve_type }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select id="addFilterType" name="filter_type" required>
|
||||
@ -602,19 +602,19 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="script_desc">{{ lang.add.sieve_desc }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" id="script_desc" name="script_desc" required maxlength="255">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="script_data">Script:</label>
|
||||
<div class="col-sm-10">
|
||||
<textarea autocorrect="off" spellcheck="false" autocapitalize="none" class="form-control textarea-code script_data" rows="20" name="script_data" required></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<p class="text-muted">{{ lang.add.activate_filter_warn }}</p>
|
||||
<div class="checkbox">
|
||||
@ -622,7 +622,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10 add_filter_btns btn-group">
|
||||
<button class="btn btn-xs-lg btn-xs-half d-block d-sm-inline btn-secondary validate_sieve" href="#">{{ lang.add.validate }}</button>
|
||||
<button class="btn btn-xs-lg btn-xs-half d-block d-sm-inline btn-success add_sieve_script" data-action="add_item" data-id="add_filter" data-api-url='add/filter' data-api-attr='{}' href="#" disabled>{{ lang.admin.add }}</button>
|
||||
@ -645,7 +645,7 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="true" role="form" data-id="add_bcc">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="local_dest">{{ lang.mailbox.bcc_local_dest }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select id="bcc-local-dest" data-live-search="true" data-size="20" name="local_dest" required>
|
||||
@ -653,7 +653,7 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="type">{{ lang.mailbox.bcc_map_type }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="type" required>
|
||||
@ -662,21 +662,21 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="bcc_dest">{{ lang.mailbox.bcc_destination }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="bcc_dest">
|
||||
<small>{{ lang.add.bcc_dest_format|raw }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active" checked> {{ lang.add.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="add_item" data-id="add_bcc" data-api-url='add/bcc' data-api-attr='{}' href="#">{{ lang.admin.add }}</button>
|
||||
</div>
|
||||
@ -696,28 +696,28 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="true" role="form" data-id="add_recipient_map">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="recipient_map_old">{{ lang.mailbox.recipient_map_old }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="recipient_map_old">
|
||||
<small>{{ lang.mailbox.recipient_map_old_info }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="recipient_map_new">{{ lang.mailbox.recipient_map_new }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="recipient_map_new">
|
||||
<small>{{ lang.mailbox.recipient_map_new_info }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active" checked> {{ lang.add.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="add_item" data-id="add_recipient_map" data-api-url='add/recipient_map' data-api-attr='{}' href="#">{{ lang.admin.add }}</button>
|
||||
</div>
|
||||
@ -737,14 +737,14 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="true" role="form" data-id="add_tls_policy_map">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="dest">{{ lang.mailbox.tls_map_dest }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="dest">
|
||||
<small>{{ lang.mailbox.tls_map_dest_info }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="policy">{{ lang.mailbox.tls_map_policy }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="full-width-select" name="policy" required>
|
||||
@ -759,21 +759,21 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="parameters">{{ lang.mailbox.tls_map_parameters }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="parameters">
|
||||
<small>{{ lang.mailbox.tls_map_parameters_info }}</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active" checked> {{ lang.add.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="add_item" data-id="add_tls_policy_map" data-api-url='add/tls-policy-map' data-api-attr='{}' href="#">{{ lang.admin.add }}</button>
|
||||
</div>
|
||||
|
@ -7,42 +7,42 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div id="qid_error" style="display:none" class="alert alert-danger"></div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="qid_detail_symbols"><h4>{{ lang.quarantine.rspamd_result }}:</h4></label>
|
||||
<p>{{ lang.quarantine.spam_score }}: <span id="qid_detail_score"></span></p>
|
||||
<hr>
|
||||
<p id="qid_detail_symbols"></p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="qid_detail_subj"><h4>{{ lang.quarantine.subj }}:</h4></label>
|
||||
<p id="qid_detail_subj"></p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="qid_detail_recipients"><h4>{{ lang.quarantine.recipients }}:</h4></label>
|
||||
<p id="qid_detail_recipients"></p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="qid_detail_hfrom"><h4>{{ lang.quarantine.sender_header }}:</h4></label>
|
||||
<p><span class="mail-address-item" id="qid_detail_hfrom"></span></p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="qid_detail_efrom"><h4>{{ lang.quarantine.sender }}:</h4></label>
|
||||
<p><span class="mail-address-item" id="qid_detail_efrom"></span></p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="qid_detail_fuzzy"><h4>Fuzzy Hashes:</h4></label>
|
||||
<p id="qid_detail_fuzzy"></p>
|
||||
</div>
|
||||
<div class="form-group" id="qTextPlain">
|
||||
<div id="qTextPlain">
|
||||
<label for="qid_detail_text"><h4>{{ lang.quarantine.text_plain_content }}:</h4></label>
|
||||
<pre id="qid_detail_text"></pre>
|
||||
</div>
|
||||
<div class="form-group" id="qTextHtml">
|
||||
<div id="qTextHtml">
|
||||
<label for="qid_detail_text_from_html"><h4>{{ lang.quarantine.text_from_html_content }}:</h4></label>
|
||||
<pre id="qid_detail_text_from_html"></pre>
|
||||
</div>
|
||||
{% if acl.quarantine_attachments == 1 %}
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="qid_detail_atts"><h4>{{ lang.quarantine.atts }}:</h4></label>
|
||||
<div id="qid_detail_atts">-</div>
|
||||
</div>
|
||||
|
@ -10,13 +10,13 @@
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="false" data-id="fido2ChangeFn" role="form" method="post" autocomplete="off">
|
||||
<input type="hidden" class="form-control" name="fido2_cid" id="fido2_cid">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-4" for="fido2_fn">{{ lang.fido2.fn }}:</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="text" class="form-control" name="fido2_fn">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-4 col-sm-8">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="fido2ChangeFn" data-item="null" data-api-url='edit/fido2-fn' data-api-attr='{}' href="#">{{ lang.admin.save }}</button>
|
||||
</div>
|
||||
@ -37,32 +37,32 @@
|
||||
<div class="modal-body">
|
||||
<p>{{ lang.add.syncjob_hint }}</p>
|
||||
<form class="form-horizontal" data-cached-form="true" role="form" data-id="add_syncjob">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="host1">{{ lang.add.hostname }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="host1" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="port1">{{ lang.add.port }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="port1" min="1" max="65535" value="143" required>
|
||||
<small class="text-muted">1-65535</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="user1">{{ lang.add.username }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="user1" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="password1">{{ lang.add.password }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" class="form-control" name="password1" data-hibp="true" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="enc1">{{ lang.add.enc_method }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select name="enc1" title="{{ lang.add.select }}" required>
|
||||
@ -72,109 +72,109 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="mins_interval">{{ lang.add.mins_interval }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="mins_interval" min="1" max="43800" value="20" required>
|
||||
<small class="text-muted">1-43800</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="subfolder2">{{ lang.edit.subfolder2|raw }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="subfolder2" value="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="maxage">{{ lang.edit.maxage|raw }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="maxage" min="0" max="32000" value="0">
|
||||
<small class="text-muted">0-32000</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="maxbytespersecond">{{ lang.edit.maxbytespersecond|raw }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="maxbytespersecond" min="0" max="125000000" value="0">
|
||||
<small class="text-muted">0-125000000</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="timeout1">{{ lang.edit.timeout1 }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="timeout1" min="1" max="32000" value="600">
|
||||
<small class="text-muted">1-32000</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="timeout2">{{ lang.edit.timeout2 }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="number" class="form-control" name="timeout2" min="1" max="32000" value="600">
|
||||
<small class="text-muted">1-32000</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="exclude">{{ lang.add.exclude }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="exclude" value="(?i)spam|(?i)junk">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="custom_params">{{ lang.add.custom_params }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="custom_params" placeholder="--delete2folders --otheroption">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="delete2duplicates" checked> {{ lang.add.delete2duplicates }} (--delete2duplicates)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="delete1"> {{ lang.add.delete1 }} (--delete1)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="delete2"> {{ lang.add.delete2 }} (--delete2)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="automap" checked> {{ lang.add.automap }} (--automap)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="skipcrossduplicates"> {{ lang.add.skipcrossduplicates }} (--skipcrossduplicates)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="subscribeall" checked> {{ lang.add.subscribeall }} (--subscribeall)</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active" checked> {{ lang.add.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="add_item" data-id="add_syncjob" data-api-url='add/syncjob' data-api-attr='{}' href="#">{{ lang.admin.add }}</button>
|
||||
</div>
|
||||
@ -194,26 +194,26 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="true" role="form" data-pwgen-length="32" data-id="add_apppasswd">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="app_name">{{ lang.add.app_name }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="text" class="form-control" name="app_name" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="app_passwd">{{ lang.user.password }} (<a href="#" class="generate_password">{{ lang.user.generate }}</a>)</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" data-pwgen-field="true" data-hibp="true" class="form-control" name="app_passwd" autocomplete="new-password" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="app_passwd2">{{ lang.user.password_repeat }}</label>
|
||||
<div class="col-sm-10">
|
||||
<input type="password" data-pwgen-field="true" class="form-control" name="app_passwd2" autocomplete="new-password" required>
|
||||
<p class="text-muted">{{ lang.user.new_password_description }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-2" for="protocols">{{ lang.add.app_passwd_protocols }}</label>
|
||||
<div class="col-sm-10">
|
||||
<select class="full-width-select" data-live-search="true" id="protocols" name="protocols" multiple>
|
||||
@ -226,14 +226,14 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active" checked> {{ lang.add.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-2 col-sm-10">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="add_item" data-id="add_apppasswd" data-api-url='add/app-passwd' data-api-attr='{}' href="#">{{ lang.admin.add }}</button>
|
||||
</div>
|
||||
@ -270,13 +270,13 @@
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="false" data-id="pwchange" role="form" method="post" autocomplete="off">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-3" for="user_new_pass">{{ lang.user.new_password }} (<a href="#" class="generate_password">{{ lang.user.generate }}</a>)</label>
|
||||
<div class="col-sm-5">
|
||||
<input type="password" data-pwgen-field="true" data-hibp="true" class="form-control" name="user_new_pass" autocomplete="new-password" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-3" for="user_new_pass2">{{ lang.user.new_password_repeat }}</label>
|
||||
<div class="col-sm-5">
|
||||
<input type="password" data-pwgen-field="true" class="form-control" name="user_new_pass2" autocomplete="new-password" required>
|
||||
@ -284,13 +284,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-3" for="user_old_pass">{{ lang.user.password_now }}</label>
|
||||
<div class="col-sm-5">
|
||||
<input type="password" class="form-control" name="user_old_pass" autocomplete="off" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="pwchange" data-item="null" data-api-url='edit/self' data-api-attr='{}' href="#">{{ lang.user.change_password }}</button>
|
||||
</div>
|
||||
@ -306,13 +306,13 @@
|
||||
<div class="modal-content">
|
||||
<div class="modal-body">
|
||||
<form class="form-horizontal" data-cached-form="false" data-id="pwchange" role="form" method="post" autocomplete="off">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-3" for="user_new_pass">{{ lang.user.new_password }} (<a href="#" class="generate_password">{{ lang.user.generate }}</a>)</label>
|
||||
<div class="col-sm-5">
|
||||
<input type="password" data-pwgen-field="true" data-hibp="true" class="form-control" name="user_new_pass" autocomplete="new-password" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-3" for="user_new_pass2">{{ lang.user.new_password_repeat }}</label>
|
||||
<div class="col-sm-5">
|
||||
<input type="password" data-pwgen-field="true" class="form-control" name="user_new_pass2" autocomplete="new-password" required>
|
||||
@ -320,13 +320,13 @@
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<label class="control-label col-sm-3" for="user_old_pass">{{ lang.user.password_now }}</label>
|
||||
<div class="col-sm-5">
|
||||
<input type="password" class="form-control" name="user_old_pass" autocomplete="off" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="offset-sm-3 col-sm-9">
|
||||
<button class="btn btn-xs-lg d-block d-sm-inline btn-success" data-action="edit_selected" data-id="pwchange" data-item="null" data-api-url='edit/self' data-api-attr='{}' href="#">{{ lang.user.change_password }}</button>
|
||||
</div>
|
||||
|
@ -11,7 +11,7 @@
|
||||
<dd>{{ lang.oauth2.profile_desc }}</dd>
|
||||
</dl>
|
||||
<form class="form-horizontal" autocapitalize="none" autocorrect="off" role="form" method="post">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-sm-10 text-center">
|
||||
<button class="btn btn-success" name="authorized" type="submit" value="1">{{ lang.oauth2.permit }}</button>
|
||||
<a href="#" class="btn btn-secondary" onclick="window.history.back()" role="button">{{ lang.oauth2.deny }}</a>
|
||||
|
@ -32,34 +32,34 @@
|
||||
<legend id="qtitle" data-hash="{{ hash }}">{{ lang.quarantine.remove }}</legend><hr />
|
||||
{% endif %}
|
||||
<div id="qid_error" style="display:none" class="alert alert-danger"></div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="qid_detail_symbols"><h4>{{ lang.quarantine.rspamd_result }}:</h4></label>
|
||||
<p>{{ lang.quarantine.spam_score }}: <span id="qid_detail_score"></span></p>
|
||||
<p id="qid_detail_symbols"></p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="qid_detail_subj"><h4>{{ lang.quarantine.subj }}:</h4></label>
|
||||
<p id="qid_detail_subj"></p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="qid_detail_hfrom"><h4>{{ lang.quarantine.sender_header }}:</h4></label>
|
||||
<p><span class="mail-address-item" id="qid_detail_hfrom"></span></p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="qid_detail_efrom"><h4>{{ lang.quarantine.sender }}:</h4></label>
|
||||
<p><span class="mail-address-item" id="qid_detail_efrom"></span></p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="qid_detail_recipients"><h4>{{ lang.quarantine.recipients }}:</h4></label>
|
||||
<p id="qid_detail_recipients"></p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div>
|
||||
<label for="qid_detail_fuzzy"><h4>Fuzzy Hashes:</h4></label>
|
||||
<p id="qid_detail_fuzzy"></p>
|
||||
</div>
|
||||
<div id="qactions">
|
||||
<form method="post" autofill="off">
|
||||
<div class="form-group">
|
||||
<div>
|
||||
{% if action == 'release' %}
|
||||
<button type="submit" class="btn btn-success" name="quick_release" value="{{ hash }}">{{ lang.quarantine.confirm }}</button>
|
||||
{% endif %}
|
||||
|
@ -10,60 +10,58 @@
|
||||
<div class="col-sm-10">
|
||||
<p class="text-muted">{{ lang.user.pushover_info|format(mailcow_cc_username)|raw }}</p>
|
||||
<p class="text-muted">{{ lang.user.pushover_vars|raw }}: <code>{SUBJECT}</code>, <code>{SENDER}</code></p>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="row">
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="token">API Token/Key (Application)</label>
|
||||
<input type="text" class="form-control" name="token" maxlength="30" value="{{ pushover_data.token }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="key">User/Group Key</label>
|
||||
<input type="text" class="form-control" name="key" maxlength="30" value="{{ pushover_data.key }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="title">{{ lang.user.pushover_title }}</label>
|
||||
<input type="text" class="form-control" name="title" value="{{ pushover_data.title }}" placeholder="Mail">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="text">{{ lang.user.pushover_text }}</label>
|
||||
<input type="text" class="form-control" name="text" value="{{ pushover_data.text }}" placeholder="You've got mail 📧">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<div class="form-group">
|
||||
<label for="text">{{ lang.user.pushover_sender_array|raw }}</label>
|
||||
<input type="text" class="form-control" name="senders" value="{{ pushover_data.senders }}" placeholder="sender1@example.com, sender2@example.com">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active"{% if pushover_data.active == '1' %} checked{% endif %}> {{ lang.user.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<legend style="cursor:pointer;margin-top:10px" data-bs-target="#po_advanced" unselectable="on" data-bs-toggle="collapse">
|
||||
<i style="font-size:10pt;" class="bi bi-plus-square"></i> {{ lang.user.advanced_settings }}
|
||||
</legend>
|
||||
<hr />
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<div id="po_advanced" class="collapse">
|
||||
<div class="form-group">
|
||||
<label for="token">API Token/Key (Application)</label>
|
||||
<input type="text" class="form-control" name="token" maxlength="30" value="{{ pushover_data.token }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="key">User/Group Key</label>
|
||||
<input type="text" class="form-control" name="key" maxlength="30" value="{{ pushover_data.key }}" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="title">{{ lang.user.pushover_title }}</label>
|
||||
<input type="text" class="form-control" name="title" value="{{ pushover_data.title }}" placeholder="Mail">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="form-group">
|
||||
<label for="text">{{ lang.user.pushover_text }}</label>
|
||||
<input type="text" class="form-control" name="text" value="{{ pushover_data.text }}" placeholder="You've got mail 📧">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<div class="form-group">
|
||||
<label for="text">{{ lang.user.pushover_sender_array|raw }}</label>
|
||||
<input type="text" class="form-control" name="senders" value="{{ pushover_data.senders }}" placeholder="sender1@example.com, sender2@example.com">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="active"{% if pushover_data.active == '1' %} checked{% endif %}> {{ lang.user.active }}</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<legend style="cursor:pointer;margin-top:10px" data-bs-target="#po_advanced" unselectable="on" data-bs-toggle="collapse">
|
||||
<i style="font-size:10pt;" class="bi bi-plus-square"></i> {{ lang.user.advanced_settings }}
|
||||
</legend>
|
||||
<hr />
|
||||
</div>
|
||||
<div class="col-sm-12">
|
||||
<div id="po_advanced" class="collapse">
|
||||
<div class="form-group">
|
||||
<label for="text">{{ lang.user.pushover_sender_regex }}</label>
|
||||
<input type="text" class="form-control" name="senders_regex" value="{{ pushover_data.senders_regex }}" placeholder="/(.*@example\.org$|^foo@example\.com$)/i" regex="true">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="evaluate_x_prio"{% if pushover_data.attributes.evaluate_x_prio == '1' %} checked{% endif %}> {{ lang.user.pushover_evaluate_x_prio|raw }}</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="only_x_prio"{% if pushover_data.attributes.only_x_prio == '1' %} checked{% endif %}> {{ lang.user.pushover_only_x_prio|raw }}</label>
|
||||
</div>
|
||||
<label for="text">{{ lang.user.pushover_sender_regex }}</label>
|
||||
<input type="text" class="form-control" name="senders_regex" value="{{ pushover_data.senders_regex }}" placeholder="/(.*@example\.org$|^foo@example\.com$)/i" regex="true">
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="evaluate_x_prio"{% if pushover_data.attributes.evaluate_x_prio == '1' %} checked{% endif %}> {{ lang.user.pushover_evaluate_x_prio|raw }}</label>
|
||||
</div>
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" value="1" name="only_x_prio"{% if pushover_data.attributes.only_x_prio == '1' %} checked{% endif %}> {{ lang.user.pushover_only_x_prio|raw }}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<form class="form-horizontal" role="form" data-id="spam_score" method="post">
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 col-sm-12">
|
||||
<div id="spam_score" data-provide="slider" data-acl="{{ acl.spam_score }}"></div>
|
||||
<input id="spam_score_value" name="spam_score" type="hidden" value="{{ user_spam_score }}">
|
||||
|
Loading…
Reference in New Issue
Block a user