From 4bb9408b7510fcb26e9532ebfa5125e6e51af5b7 Mon Sep 17 00:00:00 2001 From: Ivo Valchev Date: Wed, 5 Aug 2020 14:13:04 +0200 Subject: [PATCH] Show detailed localization for fields containing subfields --- templates/content/view_locales.html.twig | 60 +++++++++++++++--------- 1 file changed, 39 insertions(+), 21 deletions(-) diff --git a/templates/content/view_locales.html.twig b/templates/content/view_locales.html.twig index ef1dc12a7..1784b98a7 100644 --- a/templates/content/view_locales.html.twig +++ b/templates/content/view_locales.html.twig @@ -43,27 +43,8 @@ {% else %} {% set field = field_factory(key, fielddefinition) %} {% endif %} - - - {{ field|label }}
- Type: {{ field|type }}
- - {% set localizedValues = find_translations(field) %} - {% for locale in locales %} - {% set translated = field|translated(locale) %} - - {% if not field.definition.localize %} - {{ 'view_locales.badge_default'|trans }} - {% elseif localizedValues[locale] is not defined %} - {{ 'view_locales.badge_missing'|trans }} - {% elseif localizedValues[locale] is defined and translated.twigvalue is empty %} - {{ 'view_locales.badge_empty'|trans }} - {% else %} - {{ 'view_locales.badge_ok'|trans }} - {% endif %} - - {% endfor %} - + + {{ _self.renderfield(field, locales) }} {% endfor %} {% endfor %} @@ -90,3 +71,40 @@ {% block aside %} {% endblock aside %} + +{# Shows one or many rows, based on field and subfields. #} +{% macro renderfield(field, locales) %} + {% if field|type in ['set', 'collection'] %} + {% for subfield in field.value %} + {% do subfield.definition.put('label', field|label ~ ' ⇒ ' ~ subfield|label) %} + {{ _self.renderfield(subfield, locales) }} + {% endfor %} + {% else %} + {{ _self.renderrow(field, locales) }} + {% endif %} +{% endmacro %} + +{# Shows a single row for a field without subfields. #} +{% macro renderrow(field, locales) %} + + + {{ field|label }}
+ Type: {{ field|type }}
+ + {% set localizedValues = find_translations(field) %} + {% for locale in locales %} + {% set translated = field|translate(locale) %} + + {% if not field.definition.localize %} + {{ 'view_locales.badge_default'|trans }} + {% elseif localizedValues[locale] is not defined %} + {{ 'view_locales.badge_missing'|trans }} + {% elseif localizedValues[locale] is defined and translated.twigvalue is empty %} + {{ 'view_locales.badge_empty'|trans }} + {% else %} + {{ 'view_locales.badge_ok'|trans }} + {% endif %} + + {% endfor %} + +{% endmacro %}