templates/base.html.twig line 1

  1. <!DOCTYPE html>
  2. <html lang="es">
  3.     <head>
  4.         <meta charset="UTF-8">
  5.         <meta name="viewport" content="width=device-width, initial-scale=1">
  6.         <title>{% block title %}bienvenido al Visor Gis!{% endblock %}</title>
  7.         <link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text></svg>">
  8.         {% block stylesheets %}
  9.             <link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin="" />
  10.             <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css">
  11.             <!-- Bulma Responsive Tables -->
  12.             <link rel="stylesheet" href="/css/bulma_responsive_tables.css">
  13.             <link rel="stylesheet" type="text/css" href="/css/base.css"/>
  14.             <!-- Font Awesome -->
  15.             <link href="/fontawesome/css/fontawesome.css" rel="stylesheet">
  16.             <link href="/fontawesome/css/brands.css" rel="stylesheet">
  17.             <link href="/fontawesome/css/solid.css" rel="stylesheet">
  18.             <link href="/css/leaflet/leaflet-control-boxzoom.css" rel="stylesheet" />
  19.             <link href="/css/leaflet/leaflet-control-hand.css" rel="stylesheet" />
  20.             <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@drustack/leaflet.resetview/dist/L.Control.ResetView.min.css" />
  21.             <link rel="stylesheet" href="/css/leaflet/coord-projection.css" />
  22.             <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet.control.layers.tree@1.0.0/L.Control.Layers.Tree.css">
  23.         {% endblock %}
  24.         {% block javascripts %}
  25.             <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  26.             <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script>
  27.             <script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.9.0/proj4.js"></script>
  28.             <script src="https://cdnjs.cloudflare.com/ajax/libs/proj4leaflet/1.0.2/proj4leaflet.min.js"></script>
  29.             <script src="https://unpkg.com/@mapbox/leaflet-pip@latest/leaflet-pip.js"></script>
  30.             <script src="https://unpkg.com/leaflet.vectorgrid@latest/dist/Leaflet.VectorGrid.bundled.js"></script>
  31.             <script src="/js/leaflet/leaflet-control-boxzoom.js"></script>
  32.             <script src="/js/leaflet/leaflet-control-hand.js"></script>
  33.             <script src="https://cdn.jsdelivr.net/npm/@drustack/leaflet.resetview/dist/L.Control.ResetView.min.js"></script>
  34.             <script src="https://cdn.jsdelivr.net/npm/leaflet.control.layers.tree@1.0.0/L.Control.Layers.Tree.js"></script>
  35.             
  36.             <script src="/js/leaflet/coord-projection.js"></script>
  37.             <script src="https://cdnjs.cloudflare.com/ajax/libs/split.js/1.6.0/split.min.js"></script>            
  38.             <script src="/js/jszip.min.js"></script>
  39.             <script src="/js/utils.js"></script>
  40.             <script src="/js/sig.js"></script>
  41.         {% endblock %}
  42.     </head>
  43.     <body>
  44.         <div class="wrapper">
  45.             <!-- Botón para mostrar/ocultar *** menú comentado, no necesario de momento -->
  46.             <button id="toggleMenu" title="Mostrar/Ocultar Menú" aria-label="Toggle menu">
  47.                 <span class="icon">
  48.                     <i class="fas fa-bars"></i>
  49.                 </span>
  50.             </button>
  51.             
  52.             <nav id="navbar" class="main-navbar">
  53.                 <div class="navbar" role="navigation" aria-label="main navigation">
  54.                     <div id="navbrand" class="navbar-brand">                        
  55.                     </div>
  56.                     <div id="navMenu" class="navbar-menu">
  57.                         <div class="navbar-item is-expanded">    
  58.                             
  59.                             <div class="field is-horizontal">
  60.                                 <div class="field-body is-justify-content-space-between">
  61.                                     <div class="field is-narrow has-addons">
  62.                                         <div class="control is-expanded">
  63.                                             <input id="searchFeatures" name="searchFeatures" class="input is-fullwidth" type="text" placeholder="Buscar Ref Catastral...">
  64.                                         </div>
  65.                                         <div class="control">
  66.                                             <button id="btnSearch" class="button is-info">
  67.                                                 <span class="icon is-small">
  68.                                                     <i class="fas fa-search"></i>
  69.                                                 </span>
  70.                                                 <span>Buscar</span>
  71.                                             </button>
  72.                                         </div>
  73.                                     </div>
  74.                                     <div class="field">
  75.                                         <div class="control">
  76.                                             <button id="btnLimpiar" class="button is-info">
  77.                                                 <span class="icon is-small">
  78.                                                     <i class="fas fa-eraser"></i>
  79.                                                 </span>
  80.                                                 <span>Limpiar</span>
  81.                                             </button>
  82.                                         </div>
  83.                                     </div>
  84.                                 </div>
  85.                             </div>
  86.                         </div>
  87.                     </div>
  88.                     <!-- Quitado botón de accesso privado
  89.                     <div id="navLogin" class="navbar-end">
  90.                         {% if is_granted('IS_AUTHENTICATED_FULLY') %}
  91.                             <div class="navbar-item has-dropdown is-hoverable">
  92.                                 <a class="navbar-link">
  93.                                     <span class="fa-solid fa-user fa-2xl"></span>
  94.                                 </a>                                
  95.                                 <div class="navbar-dropdown">                                    
  96.                                     <span class="navbar-item">
  97.                                         {{ app.user.email }}
  98.                                     </span>
  99.                                     <a class="navbar-item" href="/logout">
  100.                                         Salir
  101.                                     </a>                                    
  102.                                     {% if is_granted('ROLE_ADMIN') %}
  103.                                         <a class="navbar-item" href="/admin">
  104.                                             Panel de Administración
  105.                                         </a>
  106.                                     {% endif %}
  107.                                 </div>
  108.                             </div>                            
  109.                         {% else %}
  110.                             <div class="navbar-item">
  111.                                 <a class="navbar-item button" href="/login">Entrar</a>
  112.                             </div>
  113.                         {% endif %}
  114.                     </div>
  115.                     -->
  116.                 </div>
  117.             </nav>        
  118.             
  119.             <div id="maindata" class="main-data">      
  120.                 {% block body %}{% endblock %}
  121.             </div>
  122.             
  123.             <script>
  124.                 // Script para toggle del menú estilo Symfony toolbar
  125.                 document.addEventListener('DOMContentLoaded', function() {
  126.                     const toggleBtn = document.getElementById('toggleMenu');
  127.                     const navbar = document.getElementById('navbar');
  128.                     const icon = toggleBtn.querySelector('i');
  129.                     
  130.                     toggleBtn.addEventListener('click', function(e) {
  131.                         e.stopPropagation();
  132.                         navbar.classList.toggle('is-active');
  133.                         toggleBtn.classList.toggle('is-active');
  134.                         
  135.                         // Cambiar icono
  136.                         if (navbar.classList.contains('is-active')) {
  137.                             icon.classList.remove('fa-bars');
  138.                             icon.classList.add('fa-times');
  139.                         } else {
  140.                             icon.classList.remove('fa-times');
  141.                             icon.classList.add('fa-bars');
  142.                         }
  143.                     });
  144.                     
  145.                     // Cerrar menú al hacer clic fuera
  146.                     document.addEventListener('click', function(event) {
  147.                         if (!navbar.contains(event.target) && !toggleBtn.contains(event.target)) {
  148.                             if (navbar.classList.contains('is-active')) {
  149.                                 navbar.classList.remove('is-active');
  150.                                 toggleBtn.classList.remove('is-active');
  151.                                 icon.classList.remove('fa-times');
  152.                                 icon.classList.add('fa-bars');
  153.                             }
  154.                         }
  155.                     });
  156.                     
  157.                     // Cerrar con tecla ESC
  158.                     document.addEventListener('keydown', function(event) {
  159.                         if (event.key === 'Escape' && navbar.classList.contains('is-active')) {
  160.                             navbar.classList.remove('is-active');
  161.                             toggleBtn.classList.remove('is-active');
  162.                             icon.classList.remove('fa-times');
  163.                             icon.classList.add('fa-bars');
  164.                         }
  165.                     });
  166.                 });
  167.             </script>
  168.         </div>
  169.     </body>
  170. </html>