templates/common/navbar.html.twig line 1

Open in your IDE?
  1. {# templates/common/navbar.html.twig #}
  2. {# --- Lógica de Colores --- #}
  3. {% set navbarBg = '#101230' %}
  4. {% if branding_current is defined and branding_current is not null and branding_current.primaryColor is not empty %}
  5. {% set navbarBg = branding_current.primaryColor %}
  6. {% endif %}
  7. <nav class="navbar navbar-default navbar-static-top mante-navbar"
  8.     style="background-color: {{ navbarBg }}; border-color: transparent;">
  9.     <div class="container-fluid">
  10.         {# --- HEADER / LOGO --- #}
  11.         <div class="navbar-header">
  12.             <ul class="nav navbar-nav visible-xs-block visible-sm-block pull-left" style="margin: 0; list-style: none;">
  13.                 <li>
  14.                     <a class="sidebar-mobile-main-toggle"
  15.                         style="color: #fff; padding: 20px 15px; cursor: pointer; display: block;">
  16.                         <i class="glyphicon glyphicon-menu-hamburger" style="font-size: 16px;"></i>
  17.                     </a>
  18.                 </li>
  19.             </ul>
  20.             <button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
  21.                 data-target="#main-navbar-collapse" aria-expanded="false" style="margin-top: 13px;">
  22.                 <span class="sr-only">{% trans %}Toggle navigation{% endtrans %}</span>
  23.                 <span class="icon-bar" style="background-color: #fff;"></span>
  24.                 <span class="icon-bar" style="background-color: #fff;"></span>
  25.                 <span class="icon-bar" style="background-color: #fff;"></span>
  26.             </button>
  27.         </div>
  28.         {# --- CONTENIDO COLAPSABLE --- #}
  29.         <div class="collapse navbar-collapse" id="main-navbar-collapse">
  30.             {# Lógica de Permisos #}
  31.             {% set current_access = app.session.get('current_access_type') ?? null %}
  32.             {% set modules = app.session.get('_modules') %}
  33.             {% set can_access_venues = modules.mvenues %}
  34.             {% set can_access_catering = modules.mcatering %}
  35.             {% set can_access_av = modules.mav %}
  36.             {# --- BOTONES CENTRALES (Módulos) --- #}
  37.             <div class="nav navbar-nav navbar-center-container">
  38.                 <ul class="nav navbar-nav">
  39.                     {% if can_access_venues and current_access != 'venues' %}
  40.                     <li>
  41.                         <a href="{{ path('switch_access', { type: 'venues' }) }}" class="mante-nav-pill pill-venues">
  42.                             <img src="/uploads/branding/venues/logo.png" class="img-def" alt="Venues">
  43.                             <img src="/uploads/branding/venues/logo_ManteVenues.png" class="img-hov" alt="Venues Hover">
  44.                         </a>
  45.                     </li>
  46.                     {% endif %}
  47.                     {% if can_access_catering and current_access != 'catering' %}
  48.                     <li>
  49.                         <a href="{{ path('switch_access', { type: 'catering' }) }}"
  50.                             class="mante-nav-pill pill-catering">
  51.                             <img src="/uploads/branding/catering/logo.png" class="img-def" alt="Catering">
  52.                             <img src="/uploads/branding/catering/logo_ManteCatering.png" class="img-hov"
  53.                                 alt="Catering Hover">
  54.                         </a>
  55.                     </li>
  56.                     {% endif %}
  57.                     {% if can_access_av and current_access != 'av' %}
  58.                     <li>
  59.                         <a href="{{ path('switch_access', { type: 'av' }) }}" class="mante-nav-pill pill-av">
  60.                             <img src="/uploads/branding/av/logo.png" class="img-def" alt="AV">
  61.                             <img src="/uploads/branding/av/logo_ManteAv.png" class="img-hov" alt="AV Hover">
  62.                         </a>
  63.                     </li>
  64.                     {% endif %}
  65.                 </ul>
  66.             </div>
  67.             {# --- MENÚ USUARIO (Derecha) --- #}
  68.             <ul class="nav navbar-nav navbar-right">
  69.                 <li class="dropdown dropdown-user">
  70.                     <a href="#" id="userMenu" class="dropdown-toggle user-link" role="button" aria-haspopup="true"
  71.                         aria-expanded="false">
  72.                         {% set avatarPath = app.user.picture is not empty ? app.user.picture : 'assets/images/user.png'
  73.                         %}
  74.                         <div class="user-avatar-wrapper">
  75.                             <img src="{{ asset(avatarPath) }}" class="img-circle user-img" alt="">
  76.                         </div>
  77.                         <span class="user-name hidden-sm">{{ app.user.name }} {{ app.user.lastname }}</span>
  78.                         <span class="caret text-white"></span>
  79.                     </a>
  80.                     <ul class="dropdown-menu dropdown-menu-right" aria-labelledby="userMenu"
  81.                         style="background-color: {{ navbarBg }}; border: 1px solid rgba(255,255,255,0.2);">
  82.                         {% if app.user.id != 122 %}
  83.                         <li>
  84.                             <a href="/users/view/{{ app.user.id }}">
  85.                                 <i class="glyphicon glyphicon-user"></i> {% trans %}My profile{% endtrans %}
  86.                             </a>
  87.                         </li>
  88.                         <li>
  89.                             <a href="{{ path('me_notifications_list') }}">
  90.                                 <i class="glyphicon glyphicon-exclamation-sign"></i> {% trans %}Notifications{% endtrans
  91.                                 %}
  92.                             </a>
  93.                         </li>
  94.                         <li role="separator" class="divider"></li>
  95.                         {% endif %}
  96.                         <li>
  97.                             <a href="/logout">
  98.                                 <i class="glyphicon glyphicon-log-out"></i> {% trans %}Logout{% endtrans %}
  99.                             </a>
  100.                         </li>
  101.                     </ul>
  102.                 </li>
  103.             </ul>
  104.         </div>
  105.     </div>
  106. </nav>
  107. {# --- JAVASCRIPT --- #}
  108. <script>
  109.     document.addEventListener('DOMContentLoaded', function () {
  110.         // Lógica simple para dropdown sin dependencia estricta de jQuery/Bootstrap JS
  111.         var trigger = document.getElementById('userMenu');
  112.         var item = trigger ? trigger.closest('.dropdown') : null;
  113.         var menu = item ? item.querySelector('.dropdown-menu') : null;
  114.         if (!trigger || !item || !menu) return;
  115.         function toggleDropdown(e) {
  116.             e.preventDefault();
  117.             e.stopPropagation();
  118.             item.classList.toggle('open');
  119.             // Compatibilidad Bootstrap 4+ si se actualiza a futuro
  120.             menu.classList.toggle('show');
  121.             var expanded = trigger.getAttribute('aria-expanded') === 'true';
  122.             trigger.setAttribute('aria-expanded', !expanded);
  123.         }
  124.         trigger.addEventListener('click', toggleDropdown);
  125.         document.addEventListener('click', function (e) {
  126.             if (!item.contains(e.target)) {
  127.                 item.classList.remove('open');
  128.                 menu.classList.remove('show');
  129.                 trigger.setAttribute('aria-expanded', 'false');
  130.             }
  131.         });
  132.         // Toggle sidebar en móviles
  133.         var toggleSidebarBtn = document.querySelector('.sidebar-mobile-main-toggle');
  134.         if (toggleSidebarBtn) {
  135.             toggleSidebarBtn.addEventListener('click', function (e) {
  136.                 e.preventDefault();
  137.                 var sidebar = document.querySelector('.sidebar-main');
  138.                 if (sidebar) {
  139.                     sidebar.classList.toggle('sidebar-mobile-expanded');
  140.                 }
  141.             });
  142.         }
  143.     });
  144. </script>