{% set emailLang = craft.app.language|slice(0, 2) == 'fr' ? 'fr' : 'nl' %} {# Renders submission fields as table rows. Nested fields (Group/Repeater) recurse into their sub-fields so nothing gets flattened into one cell. Option fields (Radio/Dropdown/Checkboxes) output the translated option label(s) rather than the stored value. #} {% macro renderRows(fields, submission, emailLang) %} {% import _self as self %} {% for field in fields %} {% if not field.getIsCosmetic() %} {% set cn = className(field) %} {% if cn ends with 'Group' or cn ends with 'Repeater' %} {% set groupField = field %} {% set renderedSubs = [] %} {% if cn ends with 'Repeater' %} {% for row in (submission.getFieldValue(field.fieldKey) ?? []) %} {% for sub in field.getFields() %} {% do sub.setParentField(groupField, loop.parent.loop.index0) %} {% set subHtml = self.renderRows([sub], submission, emailLang) %} {% if subHtml|trim %}{% set renderedSubs = renderedSubs|merge([subHtml]) %}{% endif %} {% endfor %} {% endfor %} {% else %} {% for sub in field.getFields() %} {% do sub.setParentField(groupField) %} {% set subHtml = self.renderRows([sub], submission, emailLang) %} {% if subHtml|trim %}{% set renderedSubs = renderedSubs|merge([subHtml]) %}{% endif %} {% endfor %} {% endif %} {% if renderedSubs|length %}
{# Embedded as a data URI: dompdf's chroot blocks local paths outside its vendor dir #}
|