templates/base.html.twig line 1
{# templates/base.html.twig #}{% set settings = platform_settings() %}<!DOCTYPE html><html><head><meta charset="UTF-8" /><title>{% block title %}Editorial Tu Libro!{% endblock %}</title>{# <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"/> #}<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"><script src="https://code.jquery.com/jquery-3.4.1.min.js" crossorigin="anonymous"></script><script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script><script src="https://cdn.jsdelivr.net/npm/bootstrap@4.4.1/dist/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script><!-- Script de Alexis --><!-- <script src="https://code.jquery.com/jquery-3.7.1.js" integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4=" crossorigin="anonymous"></script> --><link href="https://cdn.jsdelivr.net/npm/alertifyjs@1.11.0/build/css/alertify.min.css" rel="stylesheet"/><script src="https://cdn.jsdelivr.net/npm/alertifyjs@1.11.0/build/alertify.min.js"></script><!-- Datatables --><link href="https://cdn.datatables.net/v/dt/dt-1.13.5/b-2.4.0/b-colvis-2.4.0/b-html5-2.4.0/b-print-2.4.0/datatables.min.css" rel="stylesheet"/><script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/pdfmake.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/vfs_fonts.js"></script><script src="https://cdn.datatables.net/v/dt/dt-1.13.5/b-2.4.0/b-colvis-2.4.0/b-html5-2.4.0/b-print-2.4.0/datatables.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script><script src="https://cdn.datatables.net/plug-ins/1.11.2/sorting/datetime-moment.js"></script><script src="https://cdn.datatables.net/plug-ins/1.13.5/sorting/date-eu.js"></script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/cookie-bar/cookiebar-latest.min.js?forceLang=es&theme=minimal&tracking=1&thirdparty=1"></script><script>{% block dt_conf_columnDefs %}var columnDefs_g = [];var order_g = [];var buttons_g = [];var disable_button_pdf = false;{% endblock %}</script><style>@import url('https://fonts.googleapis.com/css?family=Montserrat:100,200,300,400,500,600,700,800,900');@import url('https://fonts.googleapis.com/css2?family=Amatic+SC:wght@400;700&display=swap');</style><link rel="stylesheet" href="{{asset('css/styles.min.css')}}">{% block stylesheets %}{% endblock %}</head><body><nav class="navbar navbar-expand-lg navbar-light bg-light justify-content-center"><a class="navbar-brand" href="{{ path('home') }}"><img src="{{asset('images/logo_editorial_tu_libro.jpg')}}"></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 justify-content-end" id="navbarSupportedContent"><ul class="nav navbar-nav"><li><a class="nav-link" href="{{ path('home') }}">Inicio</a></li>{% if app.user == false %}<li><a class="nav-link" href="{{ path('app_login') }}" title="Si ya estás registrado puedes logearte">Identificarse</a></li>{% if settings.allowregister == 1 %}<li><a class="nav-link" href="{{ path('register') }}" title="Si entras la primera vez debes registrarte">Registrarse</a></li>{% endif %}{% else %}{% if is_granted('ROLE_ADMIN') or is_granted('ROLE_USER') %}<li><a class="nav-link" href="{{ path('user_index') }}">Panel de usuario</a></li>{% endif %}{% if is_granted('ROLE_ADMIN') %}<li class="nav-item dropdown"><a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Administración</a><div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"><!-- <a class="dropdown-item" href="{{ path('admin_index') }}">Panel de Administración</a> --><a class="dropdown-item" href="{{ path('users') }}">Usuarios</a><a class="dropdown-item" href="{{ path('contents') }}">Contenidos</a><a class="dropdown-item" href="{{ path('licenses') }}">Licencias</a><a class="dropdown-item" href="{{ path('gifts') }}">Canjeables</a><a class="dropdown-item" href="{{ path('logs') }}">Informe de registros</a>{% if is_granted('ROLE_SUPER_ADMIN') %}<a class="dropdown-item" href="{{ path('changesettings') }}">Configuración del entorno</a><a class="dropdown-item" href="{{ path('reset_policy') }}">Reiniciar politicas de privacidad</a>{% endif %}</div></li>{% endif %}<!--<li class="nav-item dropdown"><a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">{{ app.user.email }}</a><div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink"><a class="dropdown-item" href="/profile">Mi perfil</a><a class="dropdown-item" href="/logout">Desconectar</a></div></li>--><li><a class="nav-link" href="/logout">Cerrar sesión</a></li>{% endif %}</ul></div></nav>{% block homebanner %} {% endblock %}<div id="main-content" class="container"><div class="row"><div class="col-md-12">{% for flashType, flashMessage in app.flashes() %}<div class="alert alert-{{ flashType }}">{{ flashMessage[0] | raw | replace({"The presented password is invalid." : "Credenciales incorrectas."})}}</div>{% endfor %}</div>{% block body %}{% endblock %}</div></div><!-- Modal --><div class="modal fade bd-example-modal-lg" id="launchmodal" tabindex="-1" role="dialog" aria-labelledby="launchmodalLabel" aria-hidden="true"><div class="modal-dialog modal-xl" role="document"><div class="modal-content"><div class="modal-header"><h5 class="modal-title" id="modaltitle"></h5><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button></div><div class="modal-body" id="modalcontent"></div></div></div></div><a href="#" onclick="document.cookie='cookiebar=;expires=Thu, 01 Jan 1970 00:00:01 GMT;path=/'; setupCookieBar(); return false;">.</a><footer id="main-footer"><div class="container"><div id="info" class="row"><div class="col-md-6"><h3>Nosotros</h3><div><div><div><img src="{{asset('images/logo_editorial_tu_libro_blanco.png')}}" style="height: 75px; margin-right: 1em;"></div><div><p>TuLibrodeFP es una editorial creada en el año 2012. <strong>Son ya más de 800</strong> centros de toda España con más de 1.800 profesores, quienes siguen alguno de nuestros libros de FP</p></div></div></div></div><div class="col-md-3"><div><ul class="menu"><li><a href="https://www.editorialtulibro.es/">INICIO</a></li><li><a href="https://www.editorialtulibro.es/profesores/">PROFESOR@S</a></li><li><a href="https://www.editorialtulibro.es/libros-de-fol-eie-iaee-alumnos/">ALUMN@S</a></li><li><a href="http://libreria.tulibrodefp.es">TIENDA ONLINE</a></li><li><a href="https://www.editorialtulibro.es/nosotros/">NOSOTROS</a></li><li><a href="https://www.editorialtulibro.es/contacto-profesores/">CONTACTO</a></li></ul></div></div><div class="col-md-3"><h3>CONTACTO</h3><div><div class="phones"><i class="fa fa-phone"></i><div>96 119 48 18 <br />Opción 2 Profesores<br />Opción 1 Pedidos</div></div><div class="emails"><div><i class="fa fa-envelope"></i><a href="mailto:infoprofes@editorialtulibro.es">infoprofes@editorialtulibro.es</a></div><div><i class="fa fa-envelope"></i><a href="mailto:infoalumnos@editorialtulibro.es">infoalumnos@editorialtulibro.es</a></div></div></div></div></div></div><div id="disclaimers"><div class="container text-center"><a href="http://www.editorialtulibro.es/politica-privacidad/">Política de privacidad</a>| <a href="http://www.editorialtulibro.es/aviso-legal/">Aviso legal</a>| <a href="http://www.editorialtulibro.es/condiciones-generales-contratacion-servicios-editoriales/">Condiciones de contratación servicios editoriales</a></div></div><div id="copyright" class=""><div class="container text-center"><p>© 2022 todos los derechos reservados. <a href="//www.editorialtulibro.es/tulibrodefp/">TuLibrodeFP</a>. — <a href="https://www.editorialtulibro.es/politica-privacidad/" rel="privacy-policy">Política de privacidad</a></p></div></div></footer><script>var table;$(document).ready(function() {$('.launchermodal').click(function(event) {document.getElementById('modaltitle').innerHTML= $(this).attr('data-title');//$('#modaltitle').text($(this).attr('data-title'));document.getElementById('modalcontent').innerHTML= $(this).attr('data-content');//$('#modalcontent').text($(this).attr('data-content'));});var language ={"processing": "Procesando...","lengthMenu": "Mostrar _MENU_ registros","zeroRecords": "No se encontraron resultados","emptyTable": "Ningún dato disponible en esta tabla","infoEmpty": "Mostrando registros del 0 al 0 de un total de 0 registros","infoFiltered": "(filtrado de un total de _MAX_ registros)","search": "Buscar:","infoThousands": ",","loadingRecords": "Cargando...","paginate":{"first": "Primero","last": "Último","next": "Siguiente","previous": "Anterior"},"aria":{"sortAscending": ": Activar para ordenar la columna de manera ascendente","sortDescending": ": Activar para ordenar la columna de manera descendente"},"buttons":{"copy": "Copiar","colvis": "Visibilidad","collection": "Colección","colvisRestore": "Restaurar visibilidad","copyKeys": "Presione ctrl o u2318 + C para copiar los datos de la tabla al portapapeles del sistema. <br /> <br /> Para cancelar, haga clic en este mensaje o presione escape.","copySuccess":{"1": "Copiada 1 fila al portapapeles","_": "Copiadas %ds fila al portapapeles"},"copyTitle": "Copiar al portapapeles","csv": "CSV","excel": "Excel","pageLength":{"-1": "Mostrar todas las filas","_": "Mostrar %d filas"},"pdf": "PDF","print": "Imprimir","renameState": "Cambiar nombre","updateState": "Actualizar","createState": "Crear Estado","removeAllStates": "Remover Estados","removeState": "Remover","savedStates": "Estados Guardados","stateRestore": "Estado %d"},"autoFill":{"cancel": "Cancelar","fill": "Rellene todas las celdas con <i>%d</i>","fillHorizontal": "Rellenar celdas horizontalmente","fillVertical": "Rellenar celdas verticalmentemente"},"decimal": ",","searchBuilder":{"add": "Añadir condición","button":{"0": "Constructor de búsqueda","_": "Constructor de búsqueda (%d)"},"clearAll": "Borrar todo","condition": "Condición","conditions":{"date":{"after": "Despues","before": "Antes","between": "Entre","empty": "Vacío","equals": "Igual a","notBetween": "No entre","notEmpty": "No Vacio","not": "Diferente de"},"number":{"between": "Entre","empty": "Vacio","equals": "Igual a","gt": "Mayor a","gte": "Mayor o igual a","lt": "Menor que","lte": "Menor o igual que","notBetween": "No entre","notEmpty": "No vacío","not": "Diferente de"},"string":{"contains": "Contiene","empty": "Vacío","endsWith": "Termina en","equals": "Igual a","notEmpty": "No Vacio","startsWith": "Empieza con","not": "Diferente de","notContains": "No Contiene","notStartsWith": "No empieza con","notEndsWith": "No termina con"},"array":{"not": "Diferente de","equals": "Igual","empty": "Vacío","contains": "Contiene","notEmpty": "No Vacío","without": "Sin"}},"data": "Data","deleteTitle": "Eliminar regla de filtrado","leftTitle": "Criterios anulados","logicAnd": "Y","logicOr": "O","rightTitle": "Criterios de sangría","title":{"0": "Constructor de búsqueda","_": "Constructor de búsqueda (%d)"},"value": "Valor"},"searchPanes":{"clearMessage": "Borrar todo","collapse":{"0": "Paneles de búsqueda","_": "Paneles de búsqueda (%d)"},"count": "{total}","countFiltered": "{shown} ({total})","emptyPanes": "Sin paneles de búsqueda","loadMessage": "Cargando paneles de búsqueda","title": "Filtros Activos - %d","showMessage": "Mostrar Todo","collapseMessage": "Colapsar Todo"},"select":{"cells":{"1": "1 celda seleccionada","_": "%d celdas seleccionadas"},"columns":{"1": "1 columna seleccionada","_": "%d columnas seleccionadas"},"rows":{"1": "1 fila seleccionada","_": "%d filas seleccionadas"}},"thousands": ".","datetime":{"previous": "Anterior","next": "Proximo","hours": "Horas","minutes": "Minutos","seconds": "Segundos","unknown": "-","amPm":["AM","PM"],"months":{"0": "Enero","1": "Febrero","2": "Marzo","3": "Abril","4": "Mayo","5": "Junio","6": "Julio","7": "Agosto","8": "Septiembre","9": "Octubre","10": "Noviembre","11": "Diciembre"},"weekdays":["Dom","Lun","Mar","Mie","Jue","Vie","Sab"]},"editor":{"close": "Cerrar","create":{"button": "Nuevo","title": "Crear Nuevo Registro","submit": "Crear"},"edit":{"button": "Editar","title": "Editar Registro","submit": "Actualizar"},"remove":{"button": "Eliminar","title": "Eliminar Registro","submit": "Eliminar","confirm":{"1": "¿Está seguro que desea eliminar 1 fila?","_": "¿Está seguro que desea eliminar %d filas?"}},"error":{"system": "Ha ocurrido un error en el sistema (<a target=\"\\\"rel=\"\\nofollow\"href=\"\\\">Más información<\\/a>).</a>"},"multi":{"title": "Múltiples Valores","info": "Los elementos seleccionados contienen diferentes valores para este registro. Para editar y establecer todos los elementos de este registro con el mismo valor, hacer click o tap aquí, de lo contrario conservarán sus valores individuales.","restore": "Deshacer Cambios","noMulti": "Este registro puede ser editado individualmente, pero no como parte de un grupo."}},"info": "Mostrando _START_ a _END_ de _TOTAL_ registros","stateRestore":{"creationModal":{"button": "Crear","name": "Nombre:","order": "Clasificación","paging": "Paginación","search": "Busqueda","select": "Seleccionar","columns":{"search": "Búsqueda de Columna","visible": "Visibilidad de Columna"},"title": "Crear Nuevo Estado","toggleLabel": "Incluir:"},"emptyError": "El nombre no puede estar vacio","removeConfirm": "¿Seguro que quiere eliminar este %s?","removeError": "Error al eliminar el registro","removeJoiner": "y","removeSubmit": "Eliminar","renameButton": "Cambiar Nombre","renameLabel": "Nuevo nombre para %s","duplicateError": "Ya existe un Estado con este nombre.","emptyStates": "No hay Estados guardados","removeTitle": "Remover Estado","renameTitle": "Cambiar Nombre Estado"}};buttons_g.push({extend: 'copy',text: '<i class="fas fa-solid fa-clipboard"></i> Copiar datos',key: {key: 'c',altKey: true},attr: {title: 'Copiar',class: 'btn btn-info'}},{extend: 'csv',fieldSeparator: ';',text: '<i class="fas fa-solid fa-file-csv"></i> CSV',key: {key: 'd',altKey: true},attr: {title: 'Exportar a CSV',class: 'btn btn-info'}},{extend: 'excel',text: '<i class="fas fa-solid fa-file-excel"></i> Excel',key: {key: 'e',altKey: true},attr: {title: 'Exportar a Excel',class: 'btn btn-info'}},{extend: 'print',text: '<i class="fas fa-solid fa-print"></i> Imprimir',key: {key: 'i',altKey: true},attr: {title: 'Imprimir',class: 'btn btn-info'}});if (!disable_button_pdf){buttons_g.push({extend: 'pdf',text: '<i class="fas fa-solid fa-file-pdf"></i> PDF',key: {key: 'p',altKey: true},attr: {title: 'Exportar a PDF',class: 'btn btn-info'}});}$('#table').on('init.dt', function(){var dt = $(this).DataTable();var searchTermOperator = 'AND';$('#table_filter label input').on('input', function () {var searchTerm = this.value.trim();var searchTerms = searchTerm.split(/\s+/);var query = '';searchTerms.forEach(function (term, index) {if (index > 0) {query += searchTermOperator + ' '; // Operador lógico AND o OR}query += term;});dt.search(query).draw();});// Evento de selección del operador lógico (AND o OR)//$('input[name="search-operator"]').on('change', function () {// searchTermOperator = $(this).val();//});});table = new DataTable('#table', {language: language,dom: 'Bfrtip',columnDefs: columnDefs_g,buttons: buttons_g,order: order_g,});});// Intento de aviso cierre de ventana/pestaña{% if app.user == true %}{% if not is_granted('ROLE_ADMIN') %}// Función para agregar un evento cross-browserfunction addEvent(obj, evt, fn) {if (obj.addEventListener) {obj.addEventListener(evt, fn, false);} else if (obj.attachEvent) {obj.attachEvent('on' + evt, fn);}}// Función para mostrar confirmación al salir de la páginafunction confirmLogout() {localStorage.setItem("Evento_Close_X_Navegador", "true");closable = true;alertify.alert().setting({'label':'Ok','message': 'Recuerda cerrar la sesión de libros digitales antes de cerrar la ventana, y así evitar futuros bloqueos de acceso.' ,}).setHeader('¡Alerta!').show();}// Agregar el evento 'mouseout' al documentoaddEvent(document, 'mouseout', function(event) {event = event || window.event;var y = event.clientY;var from = event.relatedTarget || event.toElement;// Comprobar si el usuario está saliendo de la páginaif (!from || from.nodeName === 'HTML') {// Verificar si ya se mostró la confirmaciónvar leftWindow = localStorage.getItem('Evento_Close_X_Navegador');leftWindow = false;if (!leftWindow && y < 2) {// Mostrar la confirmación solo si no se ha mostrado antes y el cursor está en la parte superior de la páginaconfirmLogout();localStorage.setItem('Evento_Close_X_Navegador', 'true');}}});{% endif %}{% endif %}// Desactivamos la validación de actividad (cierre de sesión desde cliente){% if 1 == 2 %}{% if app.user == true %}// Cierre de sesión tras 30 minutos de inactividad.function verificarActividad() {timeNow = new Date().getTime();time = (timeNow - timeStart)/1000;if (time > (30 * 60)) { // 30 minutosfetch(window.location.origin+'/logout');document.getElementById('timeoutmodal').remove();clearInterval(intervalo);mostrarModal("La sesión se ha cerrado por inactividad.");} else if (time > (25 * 60)) { // 25 minutosmessage = 'Si no cierras este aviso, la sesión se cerrará en 5 minutos por inactividad.';if (document.getElementById('timeoutmodal') == undefined) {mostrarModal(message);} else {if (document.getElementById('timeoutmodal').style.display == "none") {mostrarModal(message);}}}}var intervalo = setInterval(verificarActividad, 5000);let timeStart = new Date().getTime();verificarActividad();//document.addEventListener("mousemove", resetTimer);document.addEventListener("click", resetTimer);//document.addEventListener("keypress", resetTimer);function resetTimer() {timeStart = new Date().getTime();}// Función para crear y mostrar la ventana modalfunction mostrarModal(modalMessage) {// Crear elementos HTML para la ventana modal y su contenidovar modal = document.createElement("div");modal.id="timeoutmodal";modal.style.display = "none";modal.style.position = "fixed";modal.style.top = "0";modal.style.left = "0";modal.style.width = "100%";modal.style.height = "100%";modal.style.backgroundColor = "rgba(0, 0, 0, 0.7)";modal.style.zIndex = "1";var modalContent = document.createElement("div");modalContent.style.backgroundColor = "#fff";modalContent.style.borderRadius = "5px";modalContent.style.textAlign = "center";modalContent.style.padding = "20px";modalContent.style.position = "absolute";modalContent.style.top = "50%";modalContent.style.left = "50%";modalContent.style.transform = "translate(-50%, -50%)";var message = document.createElement("p");message.textContent = modalMessage;var btnOk = document.createElement("button");btnOk.style.padding = "10px 20px";btnOk.style.backgroundColor = "#007bff";btnOk.style.color = "#fff";btnOk.style.border = "none";btnOk.style.cursor = "pointer";btnOk.textContent = "OK";btnOk.addEventListener("click", cerrarModal.bind(null, modal));// Agregar elementos al DOMmodalContent.appendChild(message);modalContent.appendChild(btnOk);modal.appendChild(modalContent);document.body.appendChild(modal);// Mostrar la ventana modalmodal.style.display = "block";}// Función para cerrar la ventana modalfunction cerrarModal(modal) {modal.remove();//modal.style.display = "none";}{% endif %}{% endif %}</script>{% block javascripts %}{% endblock %}</body></html>