{% macro renderBlock(page, group, block, extraClasses) %} {% if page._edit %}
{# I am the drag handle, nice to meet you. Style me please #}
{% if block.type %} {{ partial(block.type, { page: page, user: user, prefix: group + '_' + block.id + '_' }) }} {% else %} {# This block is the template, it will have content later after cloning #} {% endif %}
{% else %} {# When not editing we render with no extra wrappers #} {{ partial(block.type, { page: page, user: user, prefix: group + '_' + block.id + '_' }) }} {% endif %} {% endmacro %} {% if page._edit %}
{% for type in types %} + {{ type.label | e }} {% endfor %}
{# Existing blocks #} {% for block in blocks %} {{ renderBlock(page, group, block, '') }} {% endfor %} {# This is a hidden DOM template which will be used by JS to build new blocks #} {{ renderBlock(page, group, {}, 'apos-template') }}
{% else %} {# When not editing we render with no extra wrappers #} {% for block in blocks %} {{ renderBlock(page, group, block, '') }} {% endfor %} {% endif %}