nomilo/templates/pages/new_record/configs/services.html
2026-06-24 11:45:51 +02:00

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>