{# Adds a block of custom form fields. extras - The fields to add. errors - A dict of errors for the fields. limit - The total number of fields that should be output. Example: {% snippet 'snippets/custom_form_fields.html', extras=data.extras, errors=errors, limit=3 %} #} {% import "macros/form.html" as form %} {% set d4science_cms_obj_placeholders = h.d4science_get_content_moderator_system_placeholder() %} {% set d4science_system_type_obj = h.d4science_theme_get_systemtype_field_dict_from_session() %}
{% for extra in extras %} {% set is_system_field = extra.key.startswith(d4science_cms_obj_placeholders.prefix) or extra.key.startswith(d4science_system_type_obj.id) %} {% set apply_classes = [] %} {% if is_system_field %} {% set apply_classes = ['disabled-div'] %} {% endif %} {% set prefix = 'extras__%d__' % loop.index0 %} {{ form.custom( names=(prefix ~ 'key', prefix ~ 'value', prefix ~ 'deleted'), id='field-extras-%d' % loop.index, label=_('Custom Field'), values=(extra.key, extra.value, extra.deleted), classes=apply_classes, error=errors[prefix ~ 'key'] or errors[prefix ~ 'value'] ) }} {% endfor %} {# Add a max of 3 empty columns #} {% set total_extras = extras|count %} {% set empty_extras = (limit or 3) - total_extras %} {% if empty_extras <= 0 %}{% set empty_extras = 1 %}{% endif %} {% for extra in range(total_extras, total_extras + empty_extras) %} {% set index = loop.index0 + (extras|count) %} {% set prefix = 'extras__%d__' % index %} {{ form.custom( names=(prefix ~ 'key', prefix ~ 'value', prefix ~ 'deleted'), id='field-extras-%d' % index, label=_('Custom Field'), values=(extra.key, extra.value, extra.deleted), error=errors[prefix ~ 'key'] or errors[prefix ~ 'value'] ) }} {% endfor %}