templates/frontend/navigation/theme.html.twig line 1

Open in your IDE?
  1. {% extends 'knp_menu.html.twig' %}
  2. {% macro attributes(attributes) %}
  3.     {% for name, value in attributes %}
  4.         {%- if value is not none and value is not same as(false) -%}
  5.             {{- ' %s="%s"'|format(name, value is same as(true) ? name|e : value|e)|raw -}}
  6.         {%- endif -%}
  7.     {%- endfor -%}
  8. {% endmacro %}
  9. {% block item %}
  10.     {# macro inheritance not supported anymore in twig #}
  11.     {# {% import '@knp_menu/knp_menu.html.twig' as macros %} #}
  12.     {% if item.displayed %}
  13.         {%- set attributes = item.attributes %}
  14.         {%- set is_dropdown = attributes.dropdown|default(false) %}
  15.         {%- set divider_prepend = attributes.divider_prepend|default(false) %}
  16.         {%- set divider_append = attributes.divider_append|default(false) %}
  17.         {# unset bootstrap specific attributes #}
  18.         {%- set attributes = attributes|merge({'dropdown': null, 'divider_prepend': null, 'divider_append': null }) %}
  19.         {%- if divider_prepend %}
  20.             {{ block('dividerElement') }}
  21.         {%- endif %}
  22.         {# building the class of the item #}
  23.         {%- set classes = item.attribute('class') is not empty ? [item.attribute('class')] : [] %}
  24.         {%- if matcher.isCurrent(item) %}
  25.             {%- set classes = classes|merge([options.currentClass]) %}
  26.         {%- elseif matcher.isAncestor(item, options.depth) %}
  27.             {%- set classes = classes|merge([options.ancestorClass]) %}
  28.         {%- endif %}
  29.         {%- if item.actsLikeFirst %}
  30.             {%- set classes = classes|merge([options.firstClass]) %}
  31.         {%- endif %}
  32.         {%- if item.actsLikeLast %}
  33.             {%- set classes = classes|merge([options.lastClass]) %}
  34.         {%- endif %}
  35.         {# building the class of the children #}
  36.         {%- set childrenClasses = item.childrenAttribute('class') is not empty ? [item.childrenAttribute('class')] : [] %}
  37.         {%- set childrenClasses = childrenClasses|merge(['menu_level_' ~ item.level]) %}
  38.         {# adding classes for dropdown #}
  39.         {%- if is_dropdown %}
  40.             {%- set classes = classes|merge(['dropdown']) %}
  41.             {%- set childrenClasses = childrenClasses|merge(['dropdown-menu']) %}
  42.         {%- endif %}
  43.         {# putting classes together #}
  44.         {%- if classes is not empty %}
  45.             {%- set attributes = attributes|merge({'class': classes|join(' ')}) %}
  46.         {%- endif %}
  47.         {%- set listAttributes = item.childrenAttributes|merge({'class': childrenClasses|join(' ') }) %}
  48.         {# displaying the item #}
  49.         {% set attributes = item.attributes(attributes) %}
  50.         <li{{ _self.attributes(attributes) }}>
  51.             {%- if is_dropdown %}
  52.                 {{ block('dropdownElement') }}
  53.             {%- elseif item.uri is not empty and (not item.current or options.currentAsLink) %}
  54.                 {{ block('linkElement') }}
  55.             {%- elseif attributes.data is defined and attributes.data == 'search-box' %}
  56.             {%- else %}
  57.                 {{ block('spanElement') }}
  58.             {%- endif %}
  59.             {# render the list of children#}
  60.             {{ block('list') }}
  61.         </li>
  62.         {%- if divider_append %}
  63.             {{ block('dividerElement') }}
  64.         {%- endif %}
  65.     {% endif %}
  66. {% endblock %}
  67. {% block dividerElement %}
  68.     {% if item.level == 1 %}
  69.         <li class="divider-vertical"></li>
  70.         {% else %}
  71.         <li class="divider"></li>
  72.         {% endif %}
  73.     {% endblock %}
  74. {% block linkElement %}
  75.     <a href="{{ item.uri }}"{{ _self.attributes(item.linkAttributes) }}>
  76.         {% if item.attribute('icon') is not empty  %}
  77.             <i class="{{ item.attribute('icon') }} hidden-xs"></i>
  78.             <span class="hidden-sm hidden-lg hidden-md">{{ item.attribute('icon_text')|raw }}</span>
  79.         {% endif %}
  80.         {{ block('label') }}
  81.         {% if item.attribute('linktext') is not empty  %}
  82.             <span class="linktext">{{ item.attribute('linktext')|raw }}</span>
  83.         {% endif %}
  84.     </a>
  85. {% endblock %}
  86. {% block searchForm %}
  87.     <form class="navbar-form navbar-left searchform" role="search">
  88.         <div class="input-group">
  89.             <span class="input-group-btn hidden-xs hidden-sm" id="searchbutton" >
  90.                 <button class="btn btn-transparent glyphicon glyphicon-search" type="button"></button>
  91.             </span>
  92.             <input type="text" class="form-control searchbox hidden-md hidden-lg" id="searchbox" placeholder="Suche...">
  93.         </div>
  94.     </form>
  95. {% endblock %}
  96. {% block spanElement %}
  97.     <span>{{ _self.attributes(item.labelAttributes) }}
  98.         {% if item.attribute('icon') is not empty  %}
  99.             <i class="{{ item.attribute('icon') }}"></i>
  100.         {% endif %}
  101.         {{ block('label') }}
  102.     </span>
  103. {% endblock %}
  104. {% block dropdownElement %}
  105.     {%- set classes = item.linkAttribute('class') is not empty ? [item.linkAttribute('class')] : [] %}
  106.     {%- set classes = classes|merge(['dropdown-toggle']) %}
  107.     {%- set attributes = item.linkAttributes %}
  108.     {%- set attributes = attributes|merge({'class': classes|join(' ')}) %}
  109.     {%- set attributes = attributes|merge({'data-toggle': 'dropdown'}) %}
  110.     <a href="#"{{ macros.attributes(attributes) }}>
  111.         {% if item.attribute('icon') is not empty  %}
  112.             <i class="{{ item.attribute('icon') }}"></i>
  113.         {% endif %}
  114.         {{ block('label') }}
  115.         <b class="caret"></b>
  116.     </a>
  117. {% endblock %}
  118. {% block label %}{{ item.label| raw }}{% endblock %}