bundles/FoxHabbit/BasisBundle/Resources/views/Macro/area-variant.html.twig line 162

Open in your IDE?
  1. {% macro includeVariant( context, parentTemplate, outerClass, outerAttributes) %}
  2.     {% set editmode = context.editmode %}
  3.     {% set document = context.document %}
  4.     {% set config = context.config %}
  5.     {% if context.brick is defined %}
  6.         {% set brick = context.brick %}
  7.     {% endif %}
  8.     {% if config.disabled|default(null) and editmode %}
  9.         <div class="basisbundle_edit_line basisbundle_edit_info">
  10.             <tt>{{ parentTemplate }}</tt>
  11.             <p><b>Warning: Areabrick is disabled</b> ({{ config.disabled }})</p>
  12.         </div>
  13.     {% endif %}
  14.     {% set variantStore = [] %}
  15.     {% set availableVariants = config.variants|default([]) %}
  16.     {% for id,variant in availableVariants %}
  17.         {% if variant is iterable and variant.variant_name is defined %}
  18.             {% set varianteSelectable = true %}
  19.             {% if variant.variant_disable_user_select|default(false) %}
  20.                 {% set varianteSelectable = false %}
  21.             {% endif %}
  22.             {% if varianteSelectable %}
  23.                 {% set variantStore = variantStore|merge([[id,variant.variant_name]]) %}
  24.             {% endif %}
  25.         {% endif %}
  26.     {% endfor %}
  27.     {% if context.variant|default(false) %}
  28.         {# when a fixed variant is set, reduce the set of available variants #}
  29.         {% for id,variant in availableVariants %}
  30.             {% if id == context.variant %}
  31.                 {% set variantStore = [[id,variant.variant_name]] %}
  32.             {% endif %}
  33.         {% endfor %}
  34.     {% endif %}
  35.     {% set defaultVariant = context.variant|default( config.variant_default|default('default')) %}
  36.     {% set selectedVariant = context.variant|default( pimcore_select('variant').getValue()|default(defaultVariant)) %}
  37.     {% if editmode %}
  38.         {% if pimcore_select('variant').isEmpty() or (pimcore_select('variant').getValue() != selectedVariant) %}
  39.             {% do pimcore_select("variant").setDataFromResource(defaultVariant) %}
  40.         {% endif %}
  41.         {% if variantStore|length > 1 %}
  42.             <div class="basisbundle_edit_line">
  43.                 <div class="basisbundle_edit_entry">
  44.                     <div class="basisbundle_edit_label">{{ config.variant_label|default('Choose variant') }}:</div>
  45.                     <div class="basisbundle_edit_input">{{ pimcore_select('variant',{store:variantStore,reload:true,class:'m-0'}) }}</div>
  46.                 </div>
  47.             </div>
  48.         {% endif %}
  49.     {% endif %}
  50.     {% if not availableVariants %}
  51.         <div class="basisbundle_edit_line basisbundle_edit_error">
  52.             No variants available for {{ parentTemplate }}!
  53.         </div>
  54.     {% elseif not attribute( availableVariants, selectedVariant) is defined %}
  55.         {% if selectedVariant != defaultVariant %}
  56.             {% if editmode %}
  57.                 <div class="basisbundle_edit_line basisbundle_edit_error">
  58.                     Selected variant "<em>{{selectedVariant}}</em>" does not exist, using: "<em>{{defaultVariant}}</em>"!
  59.                 </div>
  60.             {% endif %}
  61.             {% set selectedVariant = defaultVariant %}
  62.         {% else %}
  63.             {% if editmode %}
  64.                 <div class="basisbundle_edit_line basisbundle_edit_error">
  65.                     Selected variant "<em>{{selectedVariant}}</em>" does not exist!
  66.                 </div>
  67.             {% endif %}
  68.         {% endif %}
  69.     {% elseif not availableVariants[selectedVariant] is iterable %}
  70.         {% if editmode %}
  71.             <div class="basisbundle_edit_line basisbundle_edit_error">
  72.                 Selected variant "<em>{{selectedVariant}}</em>" has no valid definition:"
  73.             </div>
  74.         {% endif %}
  75.     {% endif %}
  76.     {% if attribute( availableVariants, selectedVariant) is defined and availableVariants[selectedVariant] is iterable %}
  77.         {% set selectedTemplate = availableVariants[selectedVariant]['variant_template']|default(selectedVariant) %}
  78.         {% set isAppTemplate = availableVariants[selectedVariant]['variant_template_from_app']|default(false) %}
  79.         {% if parentTemplate starts with '@' %}
  80.             {% set parentTemplateNamespace = parentTemplate|split('/')[0] %}
  81.             {% set parentTemplatePath = parentTemplate|split('/')|slice(1,-1)|join('/') %}
  82.         {% elseif 'Bundle:' in parentTemplate %}
  83.             {% set parentTemplateNamespace = '@' ~ parentTemplate|split('Bundle:')[0] %}
  84.             {% set parentTemplatePath = parentTemplate|split('Bundle:')[1] %}
  85.             {% if ':' in parentTemplatePath %}
  86.                 {% set parentTemplatePath = parentTemplatePath|split(':')[0] %}
  87.             {% else %}
  88.                 {% set parentTemplatePath = parentTemplatePath|split('/')|slice(0,-1)|join('/') %}
  89.             {% endif %}
  90.         {% else %}
  91.             {# ??? #}
  92.         {% endif %}
  93.         {% if isAppTemplate %}
  94.             {% set parentTemplateNamespace = '@App' %}
  95.         {% endif %}
  96.         {% set areaBase = parentTemplateNamespace ~ '/' ~ parentTemplatePath ~ '/' %}
  97.         {#
  98.         <!-- parentTemplate: "{{ parentTemplate }}" -->
  99.         <!-- parentTemplateNamespace: "{{ parentTemplateNamespace }}" -->
  100.         <!-- parentTemplatePath: "{{ parentTemplatePath }}" -->
  101.         <!-- isAppTemplate: "{{ isAppTemplate }}" -->
  102.         <!-- areaBase: "{{ areaBase }}" -->
  103.         #}
  104.         {% set variantConfig = availableVariants[selectedVariant] %}
  105.         {% if variantConfig.disabled|default(null) and editmode %}
  106.             <div class="basisbundle_edit_line basisbundle_edit_info">
  107.                 <tt>{{ parentTemplate }}</tt> / <tt>{{ selectedVariant }}</tt>
  108.                 <p><b>Warning: Selected Variant is disabled</b> ({{ variantConfig.disabled }})</p>
  109.             </div>
  110.         {% endif %}
  111.         {% if not variantConfig.linkmodul is defined %}
  112.             {# linkmodul nicht in variante definiert => setzen #}
  113.             {% set variantConfig = variantConfig|merge({linkmodul:config.linkmodul}) %}
  114.         {% endif %}
  115.         {% if not variantConfig.image_module is defined %}
  116.             {# image_module nicht in variante definiert => setzen #}
  117.             {% set variantConfig = variantConfig|merge({image_module:config.image_module}) %}
  118.         {% endif %}
  119.         {% set overwriteKeys = ['headlines','lead','wysiwyg'] %}
  120.         {% for overwriteKey in overwriteKeys %}
  121.             {% if context[overwriteKey] is defined %}
  122.                 {% set variantConfig = variantConfig|merge({(overwriteKey):context[overwriteKey]}) %}
  123.             {% endif %}
  124.         {% endfor %}
  125.         {% set mergeKeys = ['image_module'] %}
  126.         {% for mergeKey in mergeKeys %}
  127.             {% if context[mergeKey] is defined %}
  128.                 {% set variantConfig = variantConfig|merge({(mergeKey):variantConfig[mergeKey]|merge(context[mergeKey])}) %}
  129.             {% endif %}
  130.         {% endfor %}
  131.         {% set wrapper = null %}
  132.         {% if editmode and variantConfig.editmode_wrapper is defined %}
  133.             {% set wrapper = variantConfig.editmode_wrapper %}
  134.         {% elseif not editmode and variantConfig.frontend_wrapper is defined %}
  135.             {% set wrapper = variantConfig.frontend_wrapper %}
  136.         {% elseif variantConfig.wrapper is defined %}
  137.             {% set wrapper = variantConfig.wrapper %}
  138.         {% endif %}
  139.         {# <!--- start config "{{ selectedVariant }}"  variant-{{ selectedTemplate }} --> #}
  140.         {% set passedParams = { config: variantConfig} %}
  141.         {% for passKey in config.pass_params|default(null) %}
  142.             {% if passKey in _context.context|keys %}
  143.                 {% set passedParams = passedParams|merge({ (passKey): _context.context[passKey]}) %}
  144.             {% endif %}
  145.         {% endfor %}
  146.         {% for passKey in variantConfig.pass_params|default(null) %}
  147.             {% if passKey in _context.context|keys %}
  148.                 {% set passedParams = passedParams|merge({ (passKey): _context.context[passKey]}) %}
  149.             {% endif %}
  150.         {% endfor %}
  151.         {% if wrapper %}
  152.             {# a wrapper is defined #}
  153.             {% import '@FoxHabbitBasis/Macro/wrap.html.twig' as wrap_macro %}
  154.             {{ wrap_macro.wrapperOpen( wrapper, _context, outerClass, outerAttributes) }}
  155.                 {% include areaBase ~ 'variant-' ~ selectedTemplate ~ '.html.twig'  with passedParams %}
  156.             {{ wrap_macro.wrapperClose( wrapper) }}
  157.         {% else %}
  158.             {# no wrapper => include directly #}
  159.             {% include areaBase ~ 'variant-' ~ selectedTemplate ~ '.html.twig'  with passedParams %}
  160.         {% endif %}
  161.         {# <!--- end variant-{{ selectedTemplate }} --> #}
  162.     {% endif %}
  163. {% endmacro %}