mirror of
https://github.com/ToxicCrack/PrintABrick.git
synced 2025-05-18 21:20:09 -07:00
118 lines
4.6 KiB
Twig
118 lines
4.6 KiB
Twig
{% extends 'knp_menu_base.html.twig' %}
|
|
|
|
{% macro attributes(attributes) %}
|
|
{% for name, value in attributes %}
|
|
{%- if value is not none and value is not same as(false) -%}
|
|
{{- ' %s="%s"'|format(name, value is same as(true) ? name|e : value|e)|raw -}}
|
|
{%- endif -%}
|
|
{%- endfor -%}
|
|
{% endmacro %}
|
|
|
|
{% block compressed_root %}
|
|
{% spaceless %}
|
|
{{ block('root') }}
|
|
{% endspaceless %}
|
|
{% endblock %}
|
|
|
|
{% block root %}
|
|
{% set listAttributes = item.childrenAttributes %}
|
|
{{ block('list') -}}
|
|
{% endblock %}
|
|
|
|
{% block list %}
|
|
{% if item.hasChildren and options.depth is not same as(0) and item.displayChildren %}
|
|
{% import _self as knp_menu %}
|
|
{#<div {{ knp_menu.attributes(listAttributes) }}>#}
|
|
{{ block('children') }}
|
|
{#</div>#}
|
|
{% endif %}
|
|
{% endblock %}
|
|
|
|
{% block children %}
|
|
{# save current variables #}
|
|
{% set currentOptions = options %}
|
|
{% set currentItem = item %}
|
|
{# update the depth for children #}
|
|
{% if options.depth is not none %}
|
|
{% set options = options|merge({'depth': currentOptions.depth - 1}) %}
|
|
{% endif %}
|
|
{# update the matchingDepth for children #}
|
|
{% if options.matchingDepth is not none and options.matchingDepth > 0 %}
|
|
{% set options = options|merge({'matchingDepth': currentOptions.matchingDepth - 1}) %}
|
|
{% endif %}
|
|
{% for item in currentItem.children %}
|
|
{{ block('item') }}
|
|
{% endfor %}
|
|
{# restore current variables #}
|
|
{% set item = currentItem %}
|
|
{% set options = currentOptions %}
|
|
{% endblock %}
|
|
|
|
{% block item %}
|
|
{% if item.displayed %}
|
|
{# building the class of the item #}
|
|
{%- set classes = item.attribute('class') is not empty ? [item.attribute('class')] : [] %}
|
|
{%- if matcher.isCurrent(item) %}
|
|
{%- set classes = classes|merge([options.currentClass]) %}
|
|
{%- elseif matcher.isAncestor(item, options.matchingDepth) %}
|
|
{%- set classes = classes|merge([options.ancestorClass]) %}
|
|
{%- endif %}
|
|
{%- if item.actsLikeFirst %}
|
|
{%- set classes = classes|merge([options.firstClass]) %}
|
|
{%- endif %}
|
|
{%- if item.actsLikeLast %}
|
|
{%- set classes = classes|merge([options.lastClass]) %}
|
|
{%- endif %}
|
|
|
|
{# Mark item as "leaf" (no children) or as "branch" (has children that are displayed) #}
|
|
{% if item.hasChildren and options.depth is not same as(0) %}
|
|
{% if options.branch_class is not empty and item.displayChildren %}
|
|
{%- set classes = classes|merge([options.branch_class]) %}
|
|
{% endif %}
|
|
{% elseif options.leaf_class is not empty %}
|
|
{%- set classes = classes|merge([options.leaf_class]) %}
|
|
{%- endif %}
|
|
|
|
{%- set attributes = item.attributes %}
|
|
{%- if classes is not empty %}
|
|
{%- set attributes = attributes|merge({'class': classes|join(' ')}) %}
|
|
{%- endif %}
|
|
{# displaying the item #}
|
|
{% import _self as knp_menu %}
|
|
{#<soan class='item' {{ knp_menu.attributes(attributes) }}>#}
|
|
{%- if item.uri is not empty and (not matcher.isCurrent(item) or options.currentAsLink) %}
|
|
{{ block('linkElement') }}
|
|
{%- else %}
|
|
{{ block('spanElement') }}
|
|
{%- endif %}
|
|
{# render the list of children#}
|
|
{%- set childrenClasses = item.childrenAttribute('class') is not empty ? [item.childrenAttribute('class')] : [] %}
|
|
{%- set childrenClasses = childrenClasses|merge(['menu_level_' ~ item.level]) %}
|
|
{%- set childrenClasses = childrenClasses|merge(['treeview-menu']) %}
|
|
{%- set listAttributes = item.childrenAttributes|merge({'class': childrenClasses|join(' ') }) %}
|
|
{{ block('list') }}
|
|
{#</soan>#}
|
|
{% endif %}
|
|
{% endblock %}
|
|
|
|
{% block linkElement %}{% import _self as knp_menu %}<a class="item" href="{{ item.uri }}"{{ knp_menu.attributes(item.linkAttributes) }}>{{ block('label') }}</a>{% endblock %}
|
|
|
|
{% block spanElement %}{% import _self as knp_menu %}<span class="item" {{ knp_menu.attributes(item.labelAttributes) }}>{{ block('label') }}</span>{% endblock %}
|
|
|
|
{% block label %}
|
|
{% if item.extras.icon is defined %}
|
|
<i class="fa fa-{{ item.extras.icon }}"></i>
|
|
{% endif %}
|
|
<span>
|
|
{% set label = item.label|trans(
|
|
item.getExtra('translatinon_params', {}),
|
|
item.getExtra('translation_domain', 'menu')
|
|
) %}
|
|
{% if options.allow_safe_labels and item.getExtra('safe_label', false) %}
|
|
{{ label|raw }}
|
|
{% else %}
|
|
{{ label }}
|
|
{% endif %}
|
|
</span>
|
|
{% endblock %}
|