nomilo/templates/pages/new_record/configs/mail.html
2026-07-01 01:12:30 +02:00

373 lines
15 KiB
HTML

<h1>{{ tr(msg="record-config-mail-heading", name=new_record_name) }}</h1>
<form id="main-form" method="post" action="">
{% include "partials/advanced_mode.html" %}
<h3>{{ tr(msg="record-config-section-mail", attr="servers") }}</h3>
{% if advanced %}
<div class="form-input">
{{
<form.input
id="mailservers-ttl"
name="mailservers[ttl]"
value={input_data?.mailservers?.ttl}
type="number"
errors={errors}
errors_keys={[ "/mailservers/ttl" ]}
error_msg_id="record-input-ttl"
description={tr(msg="record-input-ttl", attr="help")}
label={tr(msg="record-input-ttl", attr="input-label")}
lang={lang}
/>
}}
</div>
{% else %}
<input
type="hidden"
name="mailservers[ttl]"
value="{{ input_data?.mailservers?.ttl | default(value="") }}"
>
{% endif %}
{%- for mailserver in input_data?.mailservers?.data?.mailservers or [none] -%}
{% if advanced %}
<fieldset class="group" data-new-item-template="mailserver">
<legend>
<span data-new-item-template-content="{{ tr(msg="record-input-mailservers-fieldset", attr="legend", index="{i}") }}">
{{ tr(msg="record-input-mailservers-fieldset", attr="legend", index=loop.index) }}
</span>
<button type="button" class="primary icon" data-delete-item>
{{ <icon.trash /> }}
<span class="visually-hidden" data-new-item-template-content="{{ tr(msg="record-input-mailservers-fieldset", attr="delete-button", index="{i}") }}">
{{ tr(msg="record-input-mailservers-fieldset", attr="delete-button", index=loop.index) }}
</span>
</button>
</legend>
{% set mailserver_error = errors | get(key="/mailservers/data", default="") %}
{% if mailserver_error %}
<p class="error" id="mailserver-fieldset-error">
{{ tr(
msg="record-input-mailservers-fieldset",
attr="error-" ~ mailserver_error.code | replace(from=":", to="-")) }}
</p>
{% set extra_errors = "mailserver-fieldset-error" %}
{% else %}
{% set extra_errors = "" %}
{% endif %}
<div class="form-input">
{{
<form.input
id={"mailserver-mail_exchanger-" ~ loop.index0}
name={"mailservers[data][mailservers][" ~loop.index0 ~ "][mail_exchanger]"}
value={mailserver?.mail_exchanger}
type="text"
errors={errors}
errors_keys={[ "/mailservers/data/mailservers/" ~ loop.index0 ~ "/mail_exchanger" ]}
error_msg_id="record-input-mailservers-server-name"
extra_errors={extra_errors}
label={tr(msg="record-input-mailservers-server-name", attr="input-label")}
label_attributes={ {
"data-new-item-template-attr": "for",
"data-template-for": "mailserver-mail_exchanger-{i}",
} }
attributes={ {
"data-new-item-template-attr": "name id",
"data-template-name": "mailservers[data][mailservers][{i}][mail_exchanger]",
"data-template-id": "mailserver-mail_exchanger-{i}",
} }
lang={lang}
/>
}}
{{
<form.input
id={"mailserver-preference-" ~ loop.index0}
name={"mailservers[data][mailservers][" ~loop.index0 ~ "][preference]"}
value={mailserver?.preference}
type="text"
errors={errors}
errors_keys={["/mailservers/data/mailservers/" ~ loop.index0 ~ "/preference"]}
error_msg_id="record-input-mailservers-preference"
extra_errors={extra_errors}
label={tr(msg="record-input-mailservers-preference", attr="input-label")}
label_attributes={ {
"data-new-item-template-attr": "for",
"data-template-for": "mailserver-preference-{i}",
} }
attributes={ {
"data-new-item-template-attr": "name id",
"data-template-name": "mailservers[data][mailservers][{i}][preference]",
"data-template-id": "mailserver-preference-{i}",
} }
lang={lang}
/>
}}
</div>
</fieldset>
{% else %}
<div class="form-input" data-new-item-template="mailserver">
{{
<form.input
id={"mailserver-mail_exchanger-" ~ loop.index0}
name={"mailservers[data][mailservers][" ~loop.index0 ~ "][mail_exchanger]"}
value={mailserver?.mail_exchanger}
type="text"
errors={errors}
errors_keys={[
"/mailservers/data",
"/mailservers/data/mailservers/" ~ loop.index0 ~ "/mail_exchanger"
]}
error_msg_id="record-input-mailservers-server-name"
label={tr(msg="record-input-mailservers-fieldset", attr="legend", index=loop.index)}
label_attributes={ {
"data-new-item-template-attr": "for",
"data-template-for": "mailserver-mail_exchanger-{i}",
"data-new-item-template-content": tr(msg="record-input-mailservers-fieldset", attr="legend", index="{i}")
} }
delete_button_msg={tr(msg="record-input-mailservers-fieldset", attr="delete-button", index=loop.index)}
delete_button_msg_template={tr(msg="record-input-mailservers-fieldset", attr="delete-button", index="{i}")}
attributes={ {
"data-new-item-template-attr": "name id",
"data-template-name": "mailservers[data][mailservers][{i}][mail_exchanger]",
"data-template-id": "mailserver-mail_exchanger-{i}",
} }
lang={lang}
/>
}}
<input
type="hidden"
name="mailservers[data][mailservers][{{ loop.index0 }}][preference]"
value="{{ mailserver?.preference | default(value="") }}"
data-new-item-skip
>
</div>
{% endif %}
{%- endfor -%}
<button class="link" type="button" data-new-item="mailserver">
{{ <icon.plus_circle /> }}
{{ tr(msg="button-add-mailserver") }}
</button>
<h3>{{ tr(msg="record-config-section-mail", attr="security") }}</h3>
{% if advanced %}
<fieldset class="group">
<legend>{{ tr(msg="record-input-spf-fieldset", attr="legend") }}</legend>
<div class="form-input">
{{
<form.input
id="spf-policy"
name="spf[data][policy]"
value={input_data?.spf?.data?.policy}
type="number"
errors={errors}
errors_keys={[ "/spf/data/policy" ]}
error_msg_id="record-input-spf"
label={tr(msg="record-input-spf", attr="input-label")}
lang={lang}
/>
}}
{{
<form.input
id="spf-ttl"
name="spf[ttl]"
value={input_data?.spf?.ttl}
type="number"
errors={errors}
errors_keys={[ "/spf/ttl" ]}
error_msg_id="record-input-ttl"
description={tr(msg="record-input-ttl", attr="help")}
label={tr(msg="record-input-ttl", attr="input-label")}
lang={lang}
/>
}}
</div>
</fieldset>
<fieldset class="group">
<legend>{{ tr(msg="record-input-dmarc-fieldset", attr="legend") }}</legend>
<div class="form-input">
{{
<form.input
id="dmarc-policy"
name="dmarc[data][policy]"
value={input_data?.dmarc?.data?.policy}
type="number"
errors={errors}
errors_keys={[ "/dmarc/data/policy" ]}
error_msg_id="record-input-dmarc"
label={tr(msg="record-input-dmarc", attr="input-label")}
lang={lang}
/>
}}
{{
<form.input
id="dmarc-ttl"
name="dmarc[ttl]"
value={input_data?.dmarc?.ttl}
type="number"
errors={errors}
errors_keys={[ "/dmarc/ttl" ]}
error_msg_id="record-input-ttl"
description={tr(msg="record-input-ttl", attr="help")}
label={tr(msg="record-input-ttl", attr="input-label")}
lang={lang}
/>
}}
</div>
</fieldset>
{% else %}
<div class="form-input">
{{
<form.input
id="spf-policy"
name="spf[data][policy]"
value={input_data?.spf?.data?.policy}
type="number"
errors={errors}
errors_keys={[ "/spf/data/policy" ]}
error_msg_id="record-input-spf"
label={tr(msg="record-input-spf-fieldset", attr="legend")}
lang={lang}
/>
}}
</div>
<input
type="hidden"
name="spf[ttl]"
value="{{ input_data?.spf?.ttl | default(value="") }}"
>
<div class="form-input">
{{
<form.input
id="dmarc-policy"
name="dmarc[data][policy]"
value={input_data?.dmarc?.data?.policy}
type="number"
errors={errors}
errors_keys={[ "/dmarc/data/policy" ]}
error_msg_id="record-input-dmarc"
label={tr(msg="record-input-dmarc-fieldset", attr="legend")}
lang={lang}
/>
}}
</div>
<input
type="hidden"
name="dmarc[ttl]"
value="{{ input_data?.dmarc?.ttl | default(value="") }}"
>
{% endif %}
<h3>{{ tr(msg="record-config-section-mail", attr="dkim") }}</h3>
{% if advanced %}
<div class="form-input">
{{
<form.input
id="dkim-ttl"
name="dkim_keys[ttl]"
value={input_data?.dkim_keys?.ttl}
type="number"
errors={errors}
errors_keys={[ "/dkim_keys/ttl" ]}
error_msg_id="record-input-ttl"
description={tr(msg="record-input-ttl", attr="help")}
label={tr(msg="record-input-ttl", attr="input-label")}
lang={lang}
/>
}}
</div>
{% else %}
<input
type="hidden"
name="dkim_keys[ttl]"
value="{{ input_data?.dkim_keys?.ttl | default(value="") }}"
>
{% endif %}
{%- for dkim in input_data?.dkim_keys?.data?.dkim_keys or [none] -%}
<fieldset class="group" data-new-item-template="dkim-key">
<legend>
<span data-new-item-template-content="{{ tr(msg="record-input-dkim-fieldset", attr="legend", index="{i}") }}">
{{ tr(msg="record-input-dkim-fieldset", attr="legend", index=1) }}
</span>
<button type="button" class="primary icon" data-delete-item>
{{ <icon.trash /> }}
<span class="visually-hidden" data-new-item-template-content="{{ tr(msg="record-input-dkim-fieldset", attr="delete-button", index="{i}") }}">
{{ tr(msg="record-input-dkim-fieldset", attr="delete-button", index=loop.index) }}
</span>
</button>
</legend>
<div class="form-input">
{{
<form.input
id={"dkim-selector-" ~ loop.index0}
name={"dkim_keys[data][dkim_keys][" ~loop.index0 ~ "][selector]"}
value={dkim?.selector}
type="text"
errors={errors}
errors_keys={[ "/dkim_keys/data/dkim_keys/" ~ loop.index0 ~ "/selector" ]}
error_msg_id="record-input-dkim-selector"
label={tr(msg="record-input-dkim-selector", attr="input-label")}
label_attributes={ {
"data-new-item-template-attr": "for",
"data-template-for": "dkim-selector-{i}",
} }
attributes={ {
"data-new-item-template-attr": "name id",
"data-template-name": "dkim_keys[data][dkim_keys][{i}][selector]",
"data-template-id": "dkim-selector-{i}",
} }
lang={lang}
/>
}}
{{
<form.input
id={"dkim-key-" ~ loop.index0}
name={"dkim_keys[data][dkim_keys][" ~loop.index0 ~ "][key]"}
value={dkim?.key}
type="textarea"
errors={errors}
errors_keys={[
"/dkim_keys/data/dkim_keys/" ~ loop.index0 ~ "/key",
]}
error_msg_id="record-input-dkim-signing-key"
label={tr(msg="record-input-dkim-signing-key", attr="input-label")}
label_attributes={ {
"data-new-item-template-attr": "for",
"data-template-for": "dkim-key-{i}",
} }
attributes={ {
"data-new-item-template-attr": "name id",
"data-template-name": "dkim_keys[data][dkim_keys][{i}][key]",
"data-template-id": "dkim-key-{i}",
} }
lang={lang}
/>
}}
</div>
</fieldset>
{%- endfor -%}
<button class="link" type="button" data-new-item="dkim-key">
{{ <icon.plus_circle /> }}
{{ tr(msg="button-add-dkim-key") }}
</button>
{% include "partials/form_submit.html" %}
</form>