|
@@ -0,0 +1,108 @@
|
|
|
+{% extends 'knp_menu.html.twig' %}
|
|
|
+
|
|
|
+{% block item %}
|
|
|
+{% import "knp_menu.html.twig" as macros %}
|
|
|
+{% if item.displayed %}
|
|
|
+ {%- set attributes = item.attributes %}
|
|
|
+ {%- set is_dropdown = attributes.dropdown|default(false) %}
|
|
|
+ {%- set divider_prepend = attributes.divider_prepend|default(false) %}
|
|
|
+ {%- set divider_append = attributes.divider_append|default(false) %}
|
|
|
+
|
|
|
+{# unset bootstrap specific attributes #}
|
|
|
+ {%- set attributes = attributes|merge({'dropdown': null, 'divider_prepend': null, 'divider_append': null }) %}
|
|
|
+
|
|
|
+ {%- if divider_prepend %}
|
|
|
+ {{ block('dividerElement') }}
|
|
|
+ {%- endif %}
|
|
|
+
|
|
|
+{# 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.depth) %}
|
|
|
+ {%- 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 %}
|
|
|
+
|
|
|
+{# building the class of the children #}
|
|
|
+ {%- set childrenClasses = item.childrenAttribute('class') is not empty ? [item.childrenAttribute('class')] : [] %}
|
|
|
+ {%- set childrenClasses = childrenClasses|merge(['menu_level_' ~ item.level]) %}
|
|
|
+
|
|
|
+{# adding classes for dropdown #}
|
|
|
+ {%- if is_dropdown %}
|
|
|
+ {%- set classes = classes|merge(['dropdown']) %}
|
|
|
+ {%- set childrenClasses = childrenClasses|merge(['dropdown-menu']) %}
|
|
|
+ {%- endif %}
|
|
|
+
|
|
|
+{# putting classes together #}
|
|
|
+ {%- if classes is not empty %}
|
|
|
+ {%- set attributes = attributes|merge({'class': classes|join(' ')}) %}
|
|
|
+ {%- endif %}
|
|
|
+ {%- set listAttributes = item.childrenAttributes|merge({'class': childrenClasses|join(' ') }) %}
|
|
|
+
|
|
|
+{# displaying the item #}
|
|
|
+ <li{{ macros.attributes(attributes) }}>
|
|
|
+ {%- if is_dropdown %}
|
|
|
+ {{ block('dropdownElement') }}
|
|
|
+ {%- elseif item.uri is not empty and (not item.current or options.currentAsLink) %}
|
|
|
+ {{ block('linkElement') }}
|
|
|
+ {%- else %}
|
|
|
+ {{ block('spanElement') }}
|
|
|
+ {%- endif %}
|
|
|
+{# render the list of children#}
|
|
|
+ {{ block('list') }}
|
|
|
+ </li>
|
|
|
+
|
|
|
+ {%- if divider_append %}
|
|
|
+ {{ block('dividerElement') }}
|
|
|
+ {%- endif %}
|
|
|
+{% endif %}
|
|
|
+{% endblock %}
|
|
|
+
|
|
|
+{% block dividerElement %}
|
|
|
+{% if item.level == 1 %}
|
|
|
+ <li class="divider-vertical"></li>
|
|
|
+{% else %}
|
|
|
+ <li class="divider"></li>
|
|
|
+{% endif %}
|
|
|
+{% endblock %}
|
|
|
+
|
|
|
+{% block linkElement %}
|
|
|
+ <a href="{{ item.uri }}"{{ macros.attributes(item.linkAttributes) }}>
|
|
|
+ {% if item.attribute('icon') is not empty %}
|
|
|
+ <i class="{{ item.attribute('icon') }}"></i>
|
|
|
+ {% endif %}
|
|
|
+ {{ block('label') }}
|
|
|
+ </a>
|
|
|
+{% endblock %}
|
|
|
+
|
|
|
+{% block spanElement %}
|
|
|
+ <span>{{ macros.attributes(item.labelAttributes) }}>
|
|
|
+ {% if item.attribute('icon') is not empty %}
|
|
|
+ <i class="{{ item.attribute('icon') }}"></i>
|
|
|
+ {% endif %}
|
|
|
+ {{ block('label') }}
|
|
|
+ </span>
|
|
|
+{% endblock %}
|
|
|
+
|
|
|
+{% block dropdownElement %}
|
|
|
+ {%- set classes = item.linkAttribute('class') is not empty ? [item.linkAttribute('class')] : [] %}
|
|
|
+ {%- set classes = classes|merge(['dropdown-toggle']) %}
|
|
|
+ {%- set attributes = item.linkAttributes %}
|
|
|
+ {%- set attributes = attributes|merge({'class': classes|join(' ')}) %}
|
|
|
+ {%- set attributes = attributes|merge({'data-toggle': 'dropdown'}) %}
|
|
|
+ <a href="#"{{ macros.attributes(attributes) }}>
|
|
|
+ {% if item.attribute('icon') is not empty %}
|
|
|
+ <i class="{{ item.attribute('icon') }}"></i>
|
|
|
+ {% endif %}
|
|
|
+ {{ block('label') }}
|
|
|
+ <b class="caret"></b>
|
|
|
+ </a>
|
|
|
+{% endblock %}
|
|
|
+
|
|
|
+{% block label %}{{ item.label|trans }}{% endblock %}
|