mirror of
				https://github.com/kevinveenbirkenbach/infinito.git
				synced 2025-11-04 11:17:58 +00:00 
			
		
		
		
	Optimized for SPA
This commit is contained in:
		
							
								
								
									
										14
									
								
								application/symfony/templates/frames/default.html.twig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								application/symfony/templates/frames/default.html.twig
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
{% extends "base.html.twig" %}
 | 
			
		||||
{% block body %}
 | 
			
		||||
{% include 'frames/structure/navbar/navbar_top.html.twig'%}
 | 
			
		||||
{% block sub_navigation %}
 | 
			
		||||
{% endblock %}
 | 
			
		||||
<br />
 | 
			
		||||
<main role="main" class="container">
 | 
			
		||||
	{% block container_navigation %}
 | 
			
		||||
	{% endblock %}
 | 
			
		||||
	{% include 'frames/structure/message/flash_messages.html.twig'%}
 | 
			
		||||
	{% block content %}
 | 
			
		||||
	{% endblock %}
 | 
			
		||||
</main>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
							
								
								
									
										6
									
								
								application/symfony/templates/frames/exception.html.twig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								application/symfony/templates/frames/exception.html.twig
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
{% extends "frames/default.html.twig" %}
 | 
			
		||||
{% set menu_items = [] %}
 | 
			
		||||
{% block content %}
 | 
			
		||||
<h1>Error!</h1>
 | 
			
		||||
<p>{{ message }}</p>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
@@ -0,0 +1,5 @@
 | 
			
		||||
{% for label,messages in app.flashes %}
 | 
			
		||||
{% for message in messages %}
 | 
			
		||||
{% include "frames/structure/message/message.html.twig" with {'message':message,'label':label} %}
 | 
			
		||||
{% endfor %}
 | 
			
		||||
{% endfor %}
 | 
			
		||||
@@ -0,0 +1,4 @@
 | 
			
		||||
{% set icons = {'success':'fas fa-check-circle','danger':'fas fa-times','warning':'fas fa-exclamation-triangle','info':'fas fa-info'} %}
 | 
			
		||||
<div class="alert alert-{{ label }}">
 | 
			
		||||
	<i class="{{ icons[label] }}"></i> {{ message }}
 | 
			
		||||
</div>
 | 
			
		||||
@@ -0,0 +1,200 @@
 | 
			
		||||
{# @see https://gist.github.com/lsv/24a9e9d7d961d22226f8e220d2c4a7d0 #}
 | 
			
		||||
{% extends 'knp_menu.html.twig' %}
 | 
			
		||||
 | 
			
		||||
{% macro setCssClassAttribute(item, type, add) %}
 | 
			
		||||
    {% set getter = 'get' ~ type %}
 | 
			
		||||
    {% set setter = 'set' ~ type %}
 | 
			
		||||
    {% set value = attribute(item, getter, ['class']) %}
 | 
			
		||||
    {% if value is iterable %}
 | 
			
		||||
        {% set value = value|join(' ') %}
 | 
			
		||||
    {% endif %}
 | 
			
		||||
    {% do attribute(item, setter, ['class', value ~ ' ' ~ add]) %}
 | 
			
		||||
{% endmacro %}
 | 
			
		||||
 | 
			
		||||
{% block item %}
 | 
			
		||||
    {% import "knp_menu.html.twig" as macros %}
 | 
			
		||||
    {#
 | 
			
		||||
    As multiple level is not currently supported by bootstrap 4
 | 
			
		||||
    This requires you to install
 | 
			
		||||
    https://github.com/bootstrapthemesco/bootstrap-4-multi-dropdown-navbar
 | 
			
		||||
    And set the the use_multilevel = true
 | 
			
		||||
    #}
 | 
			
		||||
    {% set use_multilevel = false %}
 | 
			
		||||
 | 
			
		||||
    {% 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'), 'nav-item'] : ['nav-item'] %}
 | 
			
		||||
        {%- 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(' ') }) %}
 | 
			
		||||
 | 
			
		||||
        <li{{ macros.attributes(attributes) }}>
 | 
			
		||||
            {# displaying the item #}
 | 
			
		||||
            {%- if is_dropdown %}
 | 
			
		||||
                {{ block('dropdownElement') }}
 | 
			
		||||
            {%- elseif item.uri is not empty and (not item.current or options.currentAsLink) %}
 | 
			
		||||
                {{ block('linkElement') }}
 | 
			
		||||
            {%- else %}
 | 
			
		||||
                {{ block('spanElement') }}
 | 
			
		||||
            {%- endif %}
 | 
			
		||||
            {%- if divider_append %}
 | 
			
		||||
                {{ block('dividerElement') }}
 | 
			
		||||
            {%- endif %}
 | 
			
		||||
            {% if item.hasChildren and options.depth is not same as(0) and item.displayChildren %}
 | 
			
		||||
                {{ block('dropdownlinks') }}
 | 
			
		||||
            {% endif %}
 | 
			
		||||
        </li>
 | 
			
		||||
    {% endif %}
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block dropdownlinks %}
 | 
			
		||||
    {% if use_multilevel %}
 | 
			
		||||
        <ul class="dropdown-menu">
 | 
			
		||||
    {% else %}
 | 
			
		||||
        <div class="dropdown-menu">
 | 
			
		||||
    {% endif %}
 | 
			
		||||
    {% for item in item.children %}
 | 
			
		||||
        {{ block('renderDropdownlink') }}
 | 
			
		||||
 | 
			
		||||
        {% if use_multilevel and item.hasChildren and options.depth is not same as(0) and item.displayChildren %}
 | 
			
		||||
            {{ block('dropdownlinks') }}
 | 
			
		||||
        {% endif %}
 | 
			
		||||
    {% endfor %}
 | 
			
		||||
    {% if not use_multilevel %}
 | 
			
		||||
        </div>
 | 
			
		||||
    {% else %}
 | 
			
		||||
        </ul>
 | 
			
		||||
    {% endif %}
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block renderDropdownlink %}
 | 
			
		||||
    {% import _self as ownmacro %}
 | 
			
		||||
    {%- set divider_prepend = item.attributes.divider_prepend|default(false) %}
 | 
			
		||||
    {%- set divider_append = item.attributes.divider_append|default(false) %}
 | 
			
		||||
    {%- set attributes = item.attributes|merge({'dropdown': null, 'divider_prepend': null, 'divider_append': null }) %}
 | 
			
		||||
 | 
			
		||||
    {% if use_multilevel %}
 | 
			
		||||
        <li>
 | 
			
		||||
    {% endif %}
 | 
			
		||||
 | 
			
		||||
    {%- if divider_prepend %}
 | 
			
		||||
        {{ block('dividerElementDropdown') }}
 | 
			
		||||
    {%- endif %}
 | 
			
		||||
 | 
			
		||||
    {%- if item.uri is not empty and (not item.current or options.currentAsLink) %}
 | 
			
		||||
        {{ ownmacro.setCssClassAttribute(item, 'LinkAttribute', 'dropdown-item') }}
 | 
			
		||||
        {{ block('linkElement') }}
 | 
			
		||||
    {%- else %}
 | 
			
		||||
        {{ block('spanElementDropdown') }}
 | 
			
		||||
    {%- endif %}
 | 
			
		||||
 | 
			
		||||
    {%- if divider_append %}
 | 
			
		||||
        {{ block('dividerElementDropdown') }}
 | 
			
		||||
    {%- endif %}
 | 
			
		||||
 | 
			
		||||
    {% if use_multilevel %}
 | 
			
		||||
        </li>
 | 
			
		||||
    {% endif %}
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block spanElementDropdown %}
 | 
			
		||||
    {% import "knp_menu.html.twig" as macros %}
 | 
			
		||||
    {% import _self as ownmacro %}
 | 
			
		||||
    {{ ownmacro.setCssClassAttribute(item, 'LabelAttribute', 'dropdown-header') }}
 | 
			
		||||
    <div {{ macros.attributes(item.labelAttributes) }}>
 | 
			
		||||
        {% if item.attribute('icon') is not empty  %}
 | 
			
		||||
            <i class="{{ item.attribute('icon') }}"></i>
 | 
			
		||||
        {% endif %}
 | 
			
		||||
        {{ block('label') }}
 | 
			
		||||
	</div>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block dividerElementDropdown %}
 | 
			
		||||
    <div class="dropdown-divider"></div>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block dividerElement %}
 | 
			
		||||
    {% if item.level == 1 %}
 | 
			
		||||
        <li class="divider-vertical"></li>
 | 
			
		||||
    {% else %}
 | 
			
		||||
        <li class="divider"></li>
 | 
			
		||||
    {% endif %}
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block linkElement %}
 | 
			
		||||
    {% import "knp_menu.html.twig" as macros %}
 | 
			
		||||
    {% import _self as ownmacro %}
 | 
			
		||||
    {{ ownmacro.setCssClassAttribute(item, 'LinkAttribute', 'nav-link') }}
 | 
			
		||||
    <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 %}
 | 
			
		||||
    {% import "knp_menu.html.twig" as macros %}
 | 
			
		||||
    {% import _self as ownmacro %}
 | 
			
		||||
    {{ ownmacro.setCssClassAttribute(item, 'LabelAttribute', 'navbar-text') }}
 | 
			
		||||
    <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 %}
 | 
			
		||||
    {% import "knp_menu.html.twig" as macros %}
 | 
			
		||||
    {%- set classes = item.linkAttribute('class') is not empty ? [item.linkAttribute('class')] : [] %}
 | 
			
		||||
    {%- set classes = classes|merge(['dropdown-toggle', 'nav-link']) %}
 | 
			
		||||
    {%- 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 %}
 | 
			
		||||
@@ -0,0 +1,12 @@
 | 
			
		||||
<nav class="navbar navbar-expand-lg navbar-light bg-light">
 | 
			
		||||
	<a class="navbar-brand" href="/"><i class="fas fa-infinity"></i> infinito</a>
 | 
			
		||||
	<button class="navbar-toggler" type="button" data-toggle="collapse"
 | 
			
		||||
		data-target="#navbarSupportedContent"
 | 
			
		||||
		aria-controls="navbarSupportedContent" aria-expanded="false"
 | 
			
		||||
		aria-label="Toggle navigation">
 | 
			
		||||
		<span class="navbar-toggler-icon"></span>
 | 
			
		||||
	</button>
 | 
			
		||||
	<div class="collapse navbar-collapse" id="navbarSupportedContent">
 | 
			
		||||
		{{ knp_menu_render('userTopbar', {'currentClass': 'active', 'template': 'frames/structure/navbar/knp_menu.html.twig'}) }}
 | 
			
		||||
	</div>
 | 
			
		||||
</nav>
 | 
			
		||||
@@ -0,0 +1,11 @@
 | 
			
		||||
<nav class="navbar navbar-expand-lg navbar-light bg-light">
 | 
			
		||||
	<button class="navbar-toggler" type="button" data-toggle="collapse"
 | 
			
		||||
		data-target="#navbarSupportedContent"
 | 
			
		||||
		aria-controls="navbarSupportedContent" aria-expanded="false"
 | 
			
		||||
		aria-label="Toggle navigation">
 | 
			
		||||
		<span class="navbar-toggler-icon"></span>
 | 
			
		||||
	</button>
 | 
			
		||||
	<div class="collapse navbar-collapse" id="navbarSupportedContent">
 | 
			
		||||
		{{ knp_menu_render('nodeSubbar', {'currentClass': 'active', 'template': 'frames/structure/navbar/knp_menu.html.twig'}) }}
 | 
			
		||||
	</div>
 | 
			
		||||
</nav>
 | 
			
		||||
@@ -0,0 +1,11 @@
 | 
			
		||||
<nav class="navbar navbar-expand-lg navbar-light bg-light">
 | 
			
		||||
	<button class="navbar-toggler" type="button" data-toggle="collapse"
 | 
			
		||||
		data-target="#navbarSupportedContent"
 | 
			
		||||
		aria-controls="navbarSupportedContent" aria-expanded="false"
 | 
			
		||||
		aria-label="Toggle navigation">
 | 
			
		||||
		<span class="navbar-toggler-icon"></span>
 | 
			
		||||
	</button>
 | 
			
		||||
	<div class="collapse navbar-collapse" id="navbarSupportedContent">
 | 
			
		||||
		{{ knp_menu_render('sourceNavbar', {'currentClass': 'active', 'template': 'frames/structure/navbar/knp_menu.html.twig'}) }}
 | 
			
		||||
	</div>
 | 
			
		||||
</nav>
 | 
			
		||||
		Reference in New Issue
	
	Block a user