diff --git a/templates/macros/form.html b/templates/macros/form.html
index 3575da0..7a944d0 100644
--- a/templates/macros/form.html
+++ b/templates/macros/form.html
@@ -1,8 +1,9 @@
-{% macro input(id, name, value, type="text", description="", errors, error_msg_id, label, label_attributes, attributes) %}
+{% macro input(id, name, value, type="text", description="", errors, errors_keys, error_msg_id, label, label_attributes, attributes) %}
{% set filtered_errors = [] %}
-{% for error in errors %}
+{% for error_key in errors_keys %}
+ {% set error = errors | get(key=error_key, default="") %}
{% if error %}
{% set_global filtered_errors = filtered_errors | concat(with=error) %}
{% endif %}
diff --git a/templates/pages/new_record/configure_record.html b/templates/pages/new_record/configure_record.html
index 3f67558..356d54f 100644
--- a/templates/pages/new_record/configure_record.html
+++ b/templates/pages/new_record/configure_record.html
@@ -6,8 +6,6 @@
{{ tr(msg="record-config-section-web", attr="servers", lang=lang) }}
-
- {% set ttl_error = errors | get(key="/addresses/ttl", default="") %}
{{
form::input(
@@ -15,7 +13,8 @@
name="addresses[ttl]",
value=address.address | default(value=""),
type="number",
- errors=[ ttl_error ],
+ errors=errors,
+ errors_keys=[ "/addresses/ttl" ],
error_msg_id="record-input-ttl",
description=tr(msg="record-input-ttl", attr="help", lang=lang),
label=tr(msg="record-input-ttl", attr="input-label", lang=lang),
@@ -25,10 +24,7 @@
}}
-
- {% set global_address_error = errors | get(key="/addresses/data", default="") %}
{% for address in input_data.addresses.data.addresses | default(value=[""]) %}
- {% set address_error = errors | get(key="/addresses/data/addresses/" ~ loop.index0 ~ "/address", default="") %}
{{
form::input(
@@ -36,9 +32,10 @@
name="addresses[data][addresses][" ~loop.index0 ~ "][address]",
value=address.address | default(value=""),
type="text",
- errors=[
- global_address_error,
- address_error,
+ errors=errors,
+ errors_keys=[
+ "/addresses/data",
+ "/addresses/data/addresses/" ~ loop.index0 ~ "/address",
],
error_msg_id="record-input-addresses",
label=tr(msg="record-input-addresses", attr="input-label", index=loop.index, lang=lang),
@@ -75,15 +72,21 @@
{% for mailserver in input_data.mailservers.data.mailservers | default(value=[""]) %}
@@ -92,43 +95,55 @@
{{ tr(msg="record-input-mailservers", attr="legend", index=loop.index, lang=lang) }}
-
-
-
-
+ {{
+ form::input(
+ id="mailserver-mail_exchanger-" ~ loop.index0,
+ name="mailservers[data][mailservers][" ~loop.index0 ~ "][mail_exchanger]",
+ value=mailserver.mail_exchanger | default(value=""),
+ type="text",
+ errors=errors,
+ errors_keys=[
+ "/mailservers/data",
+ "/mailservers/data/mailservers/" ~ loop.index0 ~ "/mail_exchanger",
+ ],
+ error_msg_id="record-input-mailservers",
+ label=tr(msg="record-input-mailservers", attr="input-label-server-name", lang=lang),
+ 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}",
+ ]
+ )
+ }}
-
-
-
-
+ {{
+ form::input(
+ id="mailserver-preference-" ~ loop.index0,
+ name="mailservers[data][mailservers][" ~loop.index0 ~ "][preference]",
+ value=mailserver.preference | default(value=""),
+ type="text",
+ errors=errors,
+ errors_keys=[
+ "/mailservers/data",
+ "/mailservers/data/mailservers/" ~ loop.index0 ~ "/preference",
+ ],
+ error_msg_id="record-input-mailservers",
+ label=tr(msg="record-input-mailservers", attr="input-label-preference", lang=lang),
+ 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}",
+ ]
+ )
+ }}
{% endfor %}
@@ -144,22 +159,36 @@