mirror of
https://forge.dns-witch.net/dns-witch/nomilo.git
synced 2026-06-25 09:42:20 +02:00
282 lines
15 KiB
HTML
282 lines
15 KiB
HTML
{%- import "macros/form.html" as form -%}
|
|
|
|
<h2>{{ tr(msg="record-rtype-services-heading", name=new_record_name, lang=lang) }}</h2>
|
|
|
|
<form data-new-card="service">
|
|
<fieldset class="group">
|
|
<legend>{{ tr(msg="record-input-services-add-service-fieldset", attr="legend", lang=lang) }}</legend>
|
|
<div class="form-input">
|
|
{{
|
|
form::input(
|
|
id="service_type",
|
|
name="services[0][data][service_type][service_type]",
|
|
value="",
|
|
type="select",
|
|
options=[
|
|
"other", tr(msg="record-input-services-type-options", attr="other", lang=lang),
|
|
],
|
|
errors=errors,
|
|
errors_keys=[],
|
|
error_msg_id="",
|
|
extra_errors="",
|
|
label=tr(msg="record-input-services-type", attr="input-label", lang=lang),
|
|
label_attributes=[],
|
|
attributes=[
|
|
"data-error-message-id", "record-input-services-type",
|
|
"data-error-keys", "/services/0/data/service_type/service_type",
|
|
]
|
|
)
|
|
}}
|
|
|
|
{{
|
|
form::input(
|
|
id="service_protocol",
|
|
name="services[0][data][service_type][protocol]",
|
|
value="",
|
|
type="select",
|
|
options=[
|
|
"tcp", tr(msg="record-input-services-protocol-options", attr="tcp", lang=lang),
|
|
"udp", tr(msg="record-input-services-protocol-options", attr="udp", lang=lang),
|
|
],
|
|
errors=errors,
|
|
errors_keys=[],
|
|
error_msg_id="",
|
|
extra_errors="",
|
|
label=tr(msg="record-input-services-protocol", attr="input-label", lang=lang),
|
|
label_attributes=[],
|
|
attributes=[
|
|
"data-error-message-id", "record-input-services-protocol",
|
|
"data-error-keys", "/services/0/data/service_type/protocol",
|
|
]
|
|
)
|
|
}}
|
|
|
|
{{
|
|
form::input(
|
|
id="service_name",
|
|
name="services[0][data][service_type][name]",
|
|
value="",
|
|
type="text",
|
|
errors=errors,
|
|
errors_keys=[],
|
|
error_msg_id="",
|
|
extra_errors="",
|
|
label=tr(msg="record-input-services-name", attr="input-label", lang=lang),
|
|
label_attributes=[],
|
|
attributes=[
|
|
"data-error-message-id", "record-input-services-name",
|
|
"data-error-keys", "/services/0/data/service_type/name",
|
|
]
|
|
)
|
|
}}
|
|
</div>
|
|
|
|
<button class="form-action" type="submit">{{ tr(msg="button-add-service", lang=lang) }}</button>
|
|
</fieldset>
|
|
</form>
|
|
|
|
<form method="post" action="" >
|
|
<div data-new-card-container="service">
|
|
{% for service in input_data.services | default(value=[]) | concat(with="") %}
|
|
|
|
{% if service.data is undefined %}
|
|
{% set is_template_service = true %}
|
|
{% else %}
|
|
{% set is_template_service = false %}
|
|
{% endif %}
|
|
|
|
{% if is_template_service %}
|
|
{% set service_name = "{service_fullname}" %}
|
|
{% set service_index = "{service_index}" %}
|
|
{% else %}
|
|
{% set service_name = service.data.service_type.name ~ "/" ~ service.data.service_type.protocol %}
|
|
{% set service_index = loop.index0 %}
|
|
{% endif %}
|
|
|
|
|
|
{% if is_template_service %}<template data-new-card-template="service">{% endif %}
|
|
<div class="card" data-card>
|
|
<fieldset>
|
|
<legend>
|
|
<h3>{{ tr(msg="record-input-services-service-fieldset", attr="legend", service_name=service_name, lang=lang) }}</h3>
|
|
<button type="button" class="icon" data-delete-card>
|
|
{{ icons::trash() }}
|
|
<span class="visually-hidden">
|
|
{{ tr(msg="record-input-services-service-fieldset", attr="delete-button", service_name=service_name, lang=lang) }}
|
|
</span>
|
|
</button>
|
|
</legend>
|
|
|
|
<input
|
|
type="hidden"
|
|
name="services[{{ service_index }}][data][service_type][service_type]"
|
|
value="{{ service.data.service_type.service_type | default(value="{service_type}")}}"
|
|
>
|
|
<input
|
|
type="hidden"
|
|
name="services[{{ service_index }}][data][service_type][name]"
|
|
value="{{ service.data.service_type.name | default(value="{service_name}")}}"
|
|
>
|
|
<input
|
|
type="hidden"
|
|
name="services[{{ service_index }}][data][service_type][protocol]"
|
|
value="{{ service.data.service_type.protocol | default(value="{service_protocol}")}}"
|
|
>
|
|
|
|
<div class="form-input">
|
|
{{
|
|
form::input(
|
|
id="ttl-" ~ service_index,
|
|
name="services[" ~ service_index ~ "][ttl]",
|
|
value=service.ttl | default(value=""),
|
|
type="number",
|
|
errors=errors,
|
|
errors_keys=[ "/services/" ~ service_index ~ "/ttl" ],
|
|
error_msg_id="record-input-ttl",
|
|
extra_errors="",
|
|
description=tr(msg="record-input-ttl", attr="help", lang=lang),
|
|
label=tr(msg="record-input-ttl", attr="input-label", lang=lang),
|
|
label_attributes=[],
|
|
attributes=[]
|
|
)
|
|
}}
|
|
</div>
|
|
|
|
{% for service_target in service.data.service_targets | default(value=[""]) %}
|
|
<fieldset class="group" data-new-item-template="service-target-{{ service_index }}">
|
|
<legend>
|
|
<span data-new-item-template-content="{{ tr(msg="record-input-services-service-targets-fieldset", attr="legend", service_name=service_name, index="{i}", lang=lang) }}">
|
|
{{- tr(msg="record-input-services-service-targets-fieldset", attr="legend", service_name=service_name, index=loop.index, lang=lang) -}}
|
|
</span>
|
|
<button type="button" class="icon" data-delete-item>
|
|
{{ icons::trash() }}
|
|
<span class="visually-hidden" data-new-item-template-content="{{ tr(msg="record-input-services-service-targets-fieldset", attr="delete-button", service_name=service_name, index=loop.index, lang=lang) }}">
|
|
{{- tr(msg="record-input-services-service-targets-fieldset", attr="delete-button", service_name=service_name, index=loop.index, lang=lang) -}}
|
|
</span>
|
|
</button>
|
|
</legend>
|
|
|
|
{% set service_targets_error = errors | get(key="/services/" ~ service_index ~ "/data/service_targets", default="") %}
|
|
{% if service_targets_error %}
|
|
<p class="error" id="service-{{ service_index }}-service-targets-fieldset-error">
|
|
{{ tr(
|
|
msg="record-input-services-service-targets-fieldset",
|
|
attr="error-" ~ service_targets_error.code | replace(from=":", to="-"),
|
|
service_name=service_name,
|
|
lang=lang) }}
|
|
</p>
|
|
{% set extra_errors = "service-" ~ service_index ~ "-service-targets-fieldset-error" %}
|
|
{%else%}
|
|
{% set extra_errors = "" %}
|
|
{% endif %}
|
|
|
|
<div class="form-input">
|
|
{{
|
|
form::input(
|
|
id="server-" ~ service_index ~ "-" ~ loop.index0,
|
|
name="services[" ~ service_index ~ "][data][service_targets][" ~ loop.index0 ~ "][server]",
|
|
value=service_target.server | default(value=""),
|
|
type="text",
|
|
errors=errors,
|
|
errors_keys=[ "/services/" ~ service_index ~ "/data/service_targets/" ~ loop.index0 ~ "/server" ],
|
|
error_msg_id="record-input-services-server",
|
|
extra_errors=extra_errors,
|
|
label=tr(msg="record-input-services-server", attr="input-label", lang=lang),
|
|
label_attributes=[
|
|
"data-new-item-template-attr", "for",
|
|
"data-template-for", "server-" ~ service_index ~ "-{i}",
|
|
],
|
|
attributes=[
|
|
"data-new-item-template-attr", "name id",
|
|
"data-template-name", "services[" ~ service_index ~ "][data][service_targets][{i}][server]",
|
|
"data-template-id", "server-" ~ service_index ~ "-{i}",
|
|
]
|
|
)
|
|
}}
|
|
|
|
{{
|
|
form::input(
|
|
id="port-" ~ service_index ~ "-" ~ loop.index0,
|
|
name="services[" ~ service_index ~ "][data][service_targets][" ~ loop.index0 ~ "][port]",
|
|
value=service_target.port | default(value=""),
|
|
type="number",
|
|
errors=errors,
|
|
errors_keys=[ "/services/" ~ service_index ~ "/data/service_targets/" ~ loop.index0 ~ "/port" ],
|
|
error_msg_id="record-input-services-port",
|
|
extra_errors=extra_errors,
|
|
label=tr(msg="record-input-services-port", attr="input-label", lang=lang),
|
|
label_attributes=[
|
|
"data-new-item-template-attr", "for",
|
|
"data-template-for", "port-" ~ service_index ~ "-{i}",
|
|
],
|
|
attributes=[
|
|
"data-new-item-template-attr", "name id",
|
|
"data-template-name", "services[" ~ service_index ~ "][data][service_targets][{i}][port]",
|
|
"data-template-id", "port-" ~ service_index ~ "-{i}",
|
|
]
|
|
)
|
|
}}
|
|
|
|
{{
|
|
form::input(
|
|
id="priority-" ~ service_index ~ "-" ~ loop.index0,
|
|
name="services[" ~ service_index ~ "][data][service_targets][" ~ loop.index0 ~ "][priority]",
|
|
value=service_target.priority | default(value=""),
|
|
type="number",
|
|
errors=errors,
|
|
errors_keys=[ "/services/" ~ service_index ~ "/data/service_targets/" ~ loop.index0 ~ "/priority" ],
|
|
error_msg_id="record-input-services-priority",
|
|
extra_errors=extra_errors,
|
|
label=tr(msg="record-input-services-priority", attr="input-label", lang=lang),
|
|
label_attributes=[
|
|
"data-new-item-template-attr", "for",
|
|
"data-template-for", "priority-" ~ service_index ~ "-{i}",
|
|
],
|
|
attributes=[
|
|
"data-new-item-template-attr", "name id",
|
|
"data-template-name", "services[" ~ service_index ~ "][data][service_targets][{i}][priority]",
|
|
"data-template-id", "priority-" ~ service_index ~ "-{i}",
|
|
]
|
|
)
|
|
}}
|
|
|
|
|
|
{{
|
|
form::input(
|
|
id="weight-" ~ service_index ~ "-" ~ loop.index0,
|
|
name="services[" ~ service_index ~ "][data][service_targets][" ~ loop.index0 ~ "][weight]",
|
|
value=service_target.weight | default(value=""),
|
|
type="number",
|
|
errors=errors,
|
|
errors_keys=[ "/services/" ~ service_index ~ "/data/service_targets/" ~ loop.index0 ~ "/weight" ],
|
|
error_msg_id="record-input-services-weight",
|
|
extra_errors=extra_errors,
|
|
label=tr(msg="record-input-services-weight", attr="input-label", lang=lang),
|
|
label_attributes=[
|
|
"data-new-item-template-attr", "for",
|
|
"data-template-for", "weight-" ~ service_index ~ "-{i}",
|
|
],
|
|
attributes=[
|
|
"data-new-item-template-attr", "name id",
|
|
"data-template-name", "services[" ~ service_index ~ "][data][service_targets][{i}][weight]",
|
|
"data-template-id", "weight-" ~ service_index ~ "-{i}",
|
|
]
|
|
)
|
|
}}
|
|
</div>
|
|
</fieldset>
|
|
{% endfor %}
|
|
<button class="form-new-item" type="button" data-new-item="service-target-{{ service_index }}">
|
|
{{ icons::plus_circle() }}
|
|
{{ tr(msg="button-add-service-target", service_name=service_name, lang=lang) }}
|
|
</button>
|
|
</fieldset>
|
|
</div>
|
|
{% if is_template_service %}</template>{% endif %}
|
|
{% endfor %}
|
|
</div>
|
|
|
|
<div class="form-action">
|
|
<button type="submit">{{ tr(msg="button-save-configuration", lang=lang) }}</button>
|
|
</div>
|
|
</form>
|