{% if is_granted('ROLE_USER') == true or is_granted('ROLE_ESTUDIANTE') == true or is_granted('ROLE_ADMIN') == true %}
<!DOCTYPE html>
<!--
Template Name: Metronic - Responsive Admin Dashboard Template build with Twitter Bootstrap 4
Author: KeenThemes
Website: http://www.keenthemes.com/
Contact: support@keenthemes.com
Follow: www.twitter.com/keenthemes
Dribbble: www.dribbble.com/keenthemes
Like: www.facebook.com/keenthemes
Purchase: http://themeforest.net/item/metronic-responsive-admin-dashboard-template/4021469?ref=keenthemes
Renew Support: http://themeforest.net/item/metronic-responsive-admin-dashboard-template/4021469?ref=keenthemes
License: You must have a valid license purchased only from themeforest(the above link) in order to legally use the theme for your project.
-->
<html lang="en" >
<!-- begin::Head -->
<head>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-5VVM4B8M');</script>
<!-- End Google Tag Manager -->
<meta charset="utf-8" />
<title>
Difusión | Dashboard
</title>
<meta name="description" content="Latest updates and statistic charts">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, shrink-to-fit=no">
<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.6.16/webfont.js"></script>
<script>
WebFont.load({
google: {"families":["Poppins:300,400,500,600,700","Roboto:300,400,500,600,700"]},
active: function() {
sessionStorage.fonts = true;
}
});
</script>
<link href="{{ asset('metronic/assets/vendors/custom/datatables/datatables.bundle.css') }}" rel="stylesheet" type="text/css" />
<link href="{{ asset('metronic/assets/css/style.bundle.css') }}" rel="stylesheet" type="text/css" />
<link href="{{ asset('metronic/assets/plugins/global/plugins.bundle.css') }}" rel="stylesheet" type="text/css" />
<link href="{{ asset('metronic/assets/vendors/custom/fullcalendar/fullcalendar.bundle.css') }}" rel="stylesheet" type="text/css" />
<link href="{{ asset('metronic/assets/vendors/base/vendors.bundle.css') }}" rel="stylesheet" type="text/css" />
<link href="{{ asset('metronic/assets/demo/default/base/style.bundle.css') }}" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="{{ asset('metronic/assets/demo/default/media/img/logo/favicon.ico') }}" />
<link href="{{ asset('metronic/assets/plugins/global/plugins.bundle.css') }}" rel="stylesheet" type="text/css" />
<link href="{{ asset('modal.css') }}" rel="stylesheet" type="text/css" />
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
<style>
/* Agregar scroll al menú lateral cuando supere la altura */
.m-aside-menu {
max-height: calc(100vh - 60px);
overflow-y: auto;
overflow-x: hidden;
}
/* Personalizar scrollbar para que se vea mejor */
.m-aside-menu::-webkit-scrollbar {
width: 6px;
}
.m-aside-menu::-webkit-scrollbar-track {
background: rgba(0, 0, 0, 0.1);
}
.m-aside-menu::-webkit-scrollbar-thumb {
background: rgba(255, 255, 255, 0.3);
border-radius: 3px;
}
.m-aside-menu::-webkit-scrollbar-thumb:hover {
background: rgba(255, 255, 255, 0.5);
}
/* ===== MODERNIZACIÓN GLOBAL ===== */
.m-portlet {
background: #fff;
border-radius: 10px;
box-shadow: 0 2px 10px rgba(0,0,0,0.07);
border: 1px solid #e8ecef;
margin-bottom: 24px;
overflow: hidden;
}
.m-portlet__head {
padding: 14px 20px;
border-bottom: 1px solid #edf0f5;
background: #fff;
min-height: auto !important;
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 8px;
}
.m-portlet__head-caption { display: flex; align-items: center; }
.m-portlet__head-text {
font-size: 14px !important;
font-weight: 600 !important;
color: #2d3748 !important;
margin: 0 !important;
}
.m-portlet__head-tools { display: flex; align-items: center; }
.m-portlet__nav {
display: flex;
flex-wrap: wrap;
gap: 6px;
list-style: none;
margin: 0;
padding: 0;
align-items: center;
}
.m-portlet__nav-item { display: flex; align-items: center; }
.m-portlet__body { padding: 16px; }
.m-content { padding: 18px 22px; }
/* Tablas */
.table thead th {
font-size: 10px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.04em;
color: #718096;
white-space: nowrap;
background: #f7fafc;
border-bottom: 2px solid #e2e8f0 !important;
padding: 8px 10px;
}
.table td {
vertical-align: middle !important;
font-size: 12px;
color: #2d3748;
padding: 7px 10px;
}
.table-hover tbody tr:hover { background-color: #f0f4ff; }
/* Badges de estado */
.badge-estado {
display: inline-block;
padding: 3px 10px;
border-radius: 20px;
font-size: 11px;
font-weight: 600;
white-space: nowrap;
}
.badge-pendiente { background: #fff3cd; color: #856404; border: 1px solid #ffc107; }
.badge-agendada { background: #d1ecf1; color: #0c5460; border: 1px solid #bee5eb; }
.badge-realizada { background: #d4edda; color: #155724; border: 1px solid #c3e6cb; }
.badge-cancelada { background: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; }
.badge-eliminada { background: #e2e3e5; color: #383d41; border: 1px solid #d6d8db; }
.badge-aceptada { background: #d4edda; color: #155724; border: 1px solid #c3e6cb; }
.badge-rechazada { background: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; }
/* Override m-badge */
.m-badge {
display: inline-flex;
align-items: center;
gap: 3px;
padding: 4px 10px;
border-radius: 20px;
font-size: 11px;
font-weight: 600;
white-space: nowrap;
}
.m-badge--danger { background: #fee2e2; color: #991b1b; }
.m-badge--warning { background: #fef3c7; color: #92400e; }
.m-badge--info { background: #dbeafe; color: #1e40af; }
.m-badge--success { background: #d1fae5; color: #065f46; }
.m-badge--metal { background: #f1f5f9; color: #64748b; }
.m-badge--wide { min-width: 80px; justify-content: center; }
/* Bulk actions bar */
.bulk-actions-bar {
display: none;
align-items: center;
gap: 12px;
flex-wrap: wrap;
background: #eef2ff;
border: 1px solid #c7d2fe;
border-radius: 8px;
padding: 10px 16px;
margin-bottom: 14px;
animation: slideDown 0.15s ease;
}
.bulk-actions-bar.active { display: flex; }
@keyframes slideDown {
from { opacity: 0; transform: translateY(-6px); }
to { opacity: 1; transform: translateY(0); }
}
/* Botones */
.btn { border-radius: 6px !important; font-size: 12px; font-weight: 500; }
.btn-sm { font-size: 11px; padding: 3px 8px; }
.btn-primary { background: #4f46e5 !important; border-color: #4f46e5 !important; }
.btn-primary:hover { background: #4338ca !important; border-color: #4338ca !important; }
.btn-success { background: #059669 !important; border-color: #059669 !important; }
.btn-success:hover { background: #047857 !important; border-color: #047857 !important; }
/* Link acción en tabla */
.table .btn-accion {
font-size: 12px;
padding: 3px 10px;
border-radius: 5px;
border: 1px solid #4f46e5;
color: #4f46e5;
background: transparent;
text-decoration: none;
white-space: nowrap;
display: inline-block;
}
.table .btn-accion:hover { background: #4f46e5; color: #fff; text-decoration: none; }
/* DataTables */
.dataTables_filter input { border-radius: 6px; border: 1px solid #cbd5e0; padding: 4px 10px; font-size: 13px; }
.dataTables_info { font-size: 12px; color: #718096; }
/* Formularios */
.form-control { border-radius: 6px !important; font-size: 13px; border-color: #cbd5e0; }
.form-control:focus { border-color: #4f46e5 !important; box-shadow: 0 0 0 3px rgba(79,70,229,0.15) !important; }
.form-group > label, .col-form-label { font-weight: 600; font-size: 13px; color: #4a5568; }
/* Alertas */
.alert { border-radius: 8px; font-size: 13px; border: none; }
.alert-success { background: #d1fae5; color: #065f46; }
.alert-danger { background: #fee2e2; color: #991b1b; }
.alert-warning { background: #fef3c7; color: #92400e; }
</style>
<head>
<meta charset="utf-8" />
<title>
Difusión | Dashboard
</title>
<meta name="description" content="Latest updates and statistic charts">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, shrink-to-fit=no">
<script src="{{ asset('metronic/js/calendar/scripts.bundle.js') }}"></script>
<script src="{{ asset('metronic/assets/demo/default/base/scripts.bundle.js') }}" type="text/javascript"></script>
<script src="{{ asset('metronic/assets/vendors/custom/datatables/datatables.bundle.js') }}" type="text/javascript"></script>
<script src="{{ asset('metronic/assets/demo/default/custom/crud/datatables/extensions/buttons.js') }}" type="text/javascript"></script>
</head>
<!-- end::Head -->
<!-- end::Body -->
<body class="m-page--fluid m--skin- m-content--skin-light2 m-header--fixed m-header--fixed-mobile m-aside-left--enabled m-aside-left--skin-dark m-aside-left--fixed m-aside-left--offcanvas m-footer--push m-aside--offcanvas-default" >
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5VVM4B8M"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<!-- begin:: Page -->
<div class="m-grid m-grid--hor m-grid--root m-page">
<!-- BEGIN: Header -->
<header id="m_header" class="m-grid__item m-header " m-minimize-offset="200" m-minimize-mobile-offset="200" >
<div class="m-container m-container--fluid m-container--full-height">
<div class="m-stack m-stack--ver m-stack--desktop">
<!-- BEGIN: Brand -->
<div class="m-stack__item m-brand m-brand--skin-dark ">
<div class="m-stack m-stack--ver m-stack--general">
<div class="m-stack__item m-stack__item--middle m-brand__logo">
<a href="{{ path('index') }}" class="m-brand__logo-wrapper">
<h1>Difusión</h1>
</a>
</div>
<div class="m-stack__item m-stack__item--middle m-brand__tools">
<!-- BEGIN: Left Aside Minimize Toggle -->
<a href="javascript:;" id="m_aside_left_minimize_toggle" class="m-brand__icon m-brand__toggler m-brand__toggler--left m--visible-desktop-inline-block
">
<span></span>
</a>
<!-- END -->
<!-- BEGIN: Responsive Aside Left Menu Toggler -->
<a href="javascript:;" id="m_aside_left_offcanvas_toggle" class="m-brand__icon m-brand__toggler m-brand__toggler--left m--visible-tablet-and-mobile-inline-block">
<span></span>
</a>
<!-- END -->
<!-- BEGIN: Responsive Header Menu Toggler -->
<a id="m_aside_header_menu_mobile_toggle" href="javascript:;" class="m-brand__icon m-brand__toggler m--visible-tablet-and-mobile-inline-block">
<span></span>
</a>
<!-- END -->
<!-- BEGIN: Topbar Toggler -->
<a id="m_aside_header_topbar_mobile_toggle" href="javascript:;" class="m-brand__icon m--visible-tablet-and-mobile-inline-block">
<i class="flaticon-more"></i>
</a>
<!-- BEGIN: Topbar Toggler -->
</div>
</div>
</div>
<!-- END: Brand -->
<div class="m-stack__item m-stack__item--fluid m-header-head" id="m_header_nav">
<!-- BEGIN: Horizontal Menu -->
<button class="m-aside-header-menu-mobile-close m-aside-header-menu-mobile-close--skin-dark " id="m_aside_header_menu_mobile_close_btn">
<i class="la la-close"></i>
</button>
<!-- END: Horizontal Menu --> <!-- BEGIN: Topbar -->
<div id="m_header_topbar" class="m-topbar m-stack m-stack--ver m-stack--general m-stack--fluid">
<div class="m-stack__item m-topbar__nav-wrapper">
<ul class="m-topbar__nav m-nav m-nav--inline">
<li class="m-nav__item m-topbar__user-profile m-topbar__user-profile--img m-dropdown m-dropdown--medium m-dropdown--arrow m-dropdown--header-bg-fill m-dropdown--align-right m-dropdown--mobile-full-width m-dropdown--skin-light" m-dropdown-toggle="click">
<a href="#" class="m-nav__link m-dropdown__toggle">
<span class="m-topbar__userpic">
<span style="background:#716aca;width:36px;height:36px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:bold;font-size:15px;">
{{ (app.user.nombre ?? app.user.email)|first|upper }}
</span>
</span>
<span class="m-topbar__username" style="margin-left:8px;color:#fff;font-size:13px;">
{{ app.user.nombre ?? app.user.email }}
<small style="display:block;opacity:.7;font-size:11px;">{{ app.user.roleLabel }}</small>
</span>
</a>
</li>
</ul>
</div>
</div>
<!-- END: Topbar -->
</div>
</div>
</div>
</header>
<!-- END: Header -->
<!-- begin::Body -->
<div class="m-grid__item m-grid__item--fluid m-grid m-grid--ver-desktop m-grid--desktop m-body">
<!-- BEGIN: Left Aside -->
<button class="m-aside-left-close m-aside-left-close--skin-dark " id="m_aside_left_close_btn">
<i class="la la-close"></i>
</button>
<div id="m_aside_left" class="m-grid__item m-aside-left m-aside-left--skin-dark ">
<!-- BEGIN: Aside Menu -->
<div
id="m_ver_menu"
class="m-aside-menu m-aside-menu--skin-dark m-aside-menu--submenu-skin-dark "
style="position: relative;"
>
{# Menú admin: visible para ROLE_AYUDANTE, ROLE_OPERATIVO y superiores (ROLE_COORDINADOR, ROLE_ADMIN) #}
{% if is_granted('ROLE_AYUDANTE') or is_granted('ROLE_OPERATIVO') %}
<ul class="m-menu__nav m-menu__nav--dropdown-submenu-arrow ">
<li class="m-menu__item m-menu__item--active" aria-haspopup="true" >
<a href="{{ path('index') }}" class="m-menu__link ">
<i class="m-menu__link-icon la-tags"></i>
<span class="m-menu__link-title">
<span class="m-menu__link-wrap">
<span class="m-menu__link-text">
Inicio
</span>
</span>
</span>
</a>
</li>
<li class="m-menu__item m-menu__item--active" aria-haspopup="true" >
<a href="{{ path('dashboard_metricas') }}" class="m-menu__link ">
<i class="m-menu__link-icon la la-dashboard"></i>
<span class="m-menu__link-title">
<span class="m-menu__link-wrap">
<span class="m-menu__link-text">
Dashboard Métricas
</span>
</span>
</span>
</a>
</li>
<li class="m-menu__item m-menu__item--active" aria-haspopup="true" >
<a href="{{ path('app_solicitud_index') }}" class="m-menu__link ">
<i class="m-menu__link-icon flaticon-email"></i>
<span class="m-menu__link-title">
<span class="m-menu__link-wrap">
<span class="m-menu__link-text">
Solicitudes
</span>
{% set solPendientes = project.get()|length %}
{% if solPendientes > 0 %}
<span class="m-menu__link-badge">
<span class="m-badge m-badge--danger">
{{ solPendientes }}
</span>
</span>
{% endif %}
</span>
</span>
</a>
</li>
<li class="m-menu__section ">
<h4 class="m-menu__section-text">
Módulos
</h4>
<i class="m-menu__section-icon flaticon-more-v3"></i>
</li>
<li class="m-menu__item m-menu__item--submenu" aria-haspopup="true" m-menu-submenu-toggle="hover">
<a href="javascript:;" class="m-menu__link m-menu__toggle">
<i class="m-menu__link-icon flaticon-layers"></i>
<span class="m-menu__link-text">
Colegios
</span>
<i class="m-menu__ver-arrow la la-angle-right"></i>
</a>
<div class="m-menu__submenu ">
<span class="m-menu__arrow"></span>
<ul class="m-menu__subnav">
<li class="m-menu__item m-menu__item--parent" aria-haspopup="true" >
<span class="m-menu__link">
<span class="m-menu__link-text">
Colegios
</span>
</span>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('colegio_indexprograma') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Del programa
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('colegio_index') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Todos
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_contacto_index') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Contactos
</span>
</a>
</li>
</ul>
</div>
</li>
<li class="m-menu__item m-menu__item--submenu" aria-haspopup="true" m-menu-submenu-toggle="hover">
<a href="javascript:;" class="m-menu__link m-menu__toggle">
<i class="m-menu__link-icon flaticon-calendar"></i>
<span class="m-menu__link-text">
Agenda
</span>
<i class="m-menu__ver-arrow la la-angle-right"></i>
</a>
<div class="m-menu__submenu ">
<span class="m-menu__arrow"></span>
<ul class="m-menu__subnav">
<li class="m-menu__item m-menu__item--parent" aria-haspopup="true" >
<span class="m-menu__link">
<span class="m-menu__link-text">
Ver agenda
</span>
</span>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('agenda_index') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Ver agenda
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('agenda_new') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
agregar
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('agenda_calendario')}}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
calendario
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('agenda_index_abiertas')}}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
abiertas a postulación
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('agenda_escanear_qr')}}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
<i class="la la-qrcode"></i> Confirmar asistencia QR
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('convocatoria_semana')}}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Convocatoria semana
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('apertura')}}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Apertura actividades de la semana
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('cierre')}}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Cierre actividades de la semana
</span>
</a>
</li>
{% if is_granted('ROLE_AYUDANTE') %}{# ROLE_OPERATIVO NO ve evaluaciones #}
<li class="m-menu__item m-menu__item--parent" aria-haspopup="true">
<span class="m-menu__link">
<span class="m-menu__link-text">Gestión de encuestas</span>
</span>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_evaluacioncolegio_index')}}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Encuestas colegios
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_evaluacionembajador_index')}}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Encuestas embajadores
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('encuesta_plantilla_index')}}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Plantillas de preguntas
</span>
</a>
</li>
{% endif %}{# /Evaluaciones: solo ROLE_AYUDANTE+ #}
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_bloqueodias_index')}}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Bloqueo de días
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_colegio_participante_index')}}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Asistencia colegios
</span>
</a>
</li>
</ul>
</div>
</li>
{# Embajadores: solo ROLE_COORDINADOR y superiores #}
{% if is_granted('ROLE_COORDINADOR') %}
<li class="m-menu__item m-menu__item--submenu" aria-haspopup="true" m-menu-submenu-toggle="hover">
<a href="javascript:;" class="m-menu__link m-menu__toggle">
<i class="m-menu__link-icon flaticon-users"></i>
<span class="m-menu__link-text">
Embajadores
</span>
<i class="m-menu__ver-arrow la la-angle-right"></i>
</a>
<div class="m-menu__submenu ">
<span class="m-menu__arrow"></span>
<ul class="m-menu__subnav">
<li class="m-menu__item m-menu__item--parent" aria-haspopup="true" >
<span class="m-menu__link">
<span class="m-menu__link-text">
Listado
</span>
</span>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('embajadores_index') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Listado
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('embajadores_new') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Agregar
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_embajador_participante_new') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
agregar Actividad
</span>
</a>
</li>
</ul>
</div>
</li>
{% endif %}{# /Embajadores ROLE_COORDINADOR #}
{% if is_granted('ROLE_AYUDANTE') %}{# ROLE_OPERATIVO NO ve: Ensayos PAES, Reportes, Leads, Expo #}
<li class="m-menu__item m-menu__item--submenu" aria-haspopup="true" m-menu-submenu-toggle="hover">
<a href="javascript:;" class="m-menu__link m-menu__toggle">
<i class="m-menu__link-icon la la-calendar-check-o"></i>
<span class="m-menu__link-text">
Ensayos PAES
</span>
<i class="m-menu__ver-arrow la la-angle-right"></i>
</a>
<div class="m-menu__submenu ">
<span class="m-menu__arrow"></span>
<ul class="m-menu__subnav">
<li class="m-menu__item m-menu__item--parent" aria-haspopup="true" >
<span class="m-menu__link">
<span class="m-menu__link-text">
Ensayos PAES
</span>
</span>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_ensayo_paes_index') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Gestión de Ediciones
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_inscripcionensayo_index') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Listado de Inscripciones
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('int_form') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Buscar Inscripción
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_inscripcionensayo_excel') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Descargar Excel
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_paes_campo_config_index') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Editor dinámico del formulario
</span>
</a>
</li>
</ul>
</div>
</li>
<li class="m-menu__item m-menu__item--submenu" aria-haspopup="true" m-menu-submenu-toggle="hover">
<a href="javascript:;" class="m-menu__link m-menu__toggle">
<i class="m-menu__link-icon flaticon-line-graph"></i>
<span class="m-menu__link-text">
Reportes
</span>
<i class="m-menu__ver-arrow la la-angle-right"></i>
</a>
<div class="m-menu__submenu ">
<span class="m-menu__arrow"></span>
<ul class="m-menu__subnav">
<li class="m-menu__item m-menu__item--parent" aria-haspopup="true" >
<span class="m-menu__link">
<span class="m-menu__link-text">
Reporte general
</span>
</span>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_reporte', { 'anio':2025 }) }}" class="m-menu__link ">
<i class="m-menu__link-icon flaticon-line-graph"></i>
<span></span>
</i>
<span class="m-menu__link-text">
Reporte 2025
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_reporte', { 'anio':2024 }) }}" class="m-menu__link ">
<i class="m-menu__link-icon flaticon-line-graph"></i>
<span></span>
</i>
<span class="m-menu__link-text">
Reporte 2024
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_reporte', { 'anio':2023 }) }}" class="m-menu__link ">
<i class="m-menu__link-icon flaticon-line-graph"></i>
<span></span>
</i>
<span class="m-menu__link-text">
Reporte 2023
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_reporte', { 'anio':2022 }) }}" class="m-menu__link ">
<i class="m-menu__link-icon flaticon-line-graph"></i>
<span></span>
</i>
<span class="m-menu__link-text">
Reporte 2022
</span>
</a>
</li>
</ul>
</div>
</li>
<li class="m-menu__item m-menu__item--submenu" aria-haspopup="true" m-menu-submenu-toggle="hover">
<a href="javascript:;" class="m-menu__link m-menu__toggle">
<i class="m-menu__link-icon flaticon-line-graph"></i>
<span class="m-menu__link-text">
Leads
</span>
<i class="m-menu__ver-arrow la la-angle-right"></i>
</a>
<div class="m-menu__submenu ">
<span class="m-menu__arrow"></span>
<ul class="m-menu__subnav">
<li class="m-menu__item m-menu__item--parent" aria-haspopup="true" >
<span class="m-menu__link">
<span class="m-menu__link-text">
Formularios
</span>
</span>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_prospecto_index') }}" class="m-menu__link ">
<i class="m-menu__link-icon flaticon-line-graph"></i>
<span></span>
</i>
<span class="m-menu__link-text">
Estudiantes
</span>
</a>
</li>
</ul>
</div>
</li>
<li class="m-menu__item m-menu__item--submenu" aria-haspopup="true" m-menu-submenu-toggle="hover">
<a href="javascript:;" class="m-menu__link m-menu__toggle">
<i class="m-menu__link-icon flaticon-layers"></i>
<span class="m-menu__link-text">
Expo
</span>
<i class="m-menu__ver-arrow la la-angle-right"></i>
</a>
<div class="m-menu__submenu ">
<span class="m-menu__arrow"></span>
<ul class="m-menu__subnav">
<li class="m-menu__item m-menu__item--parent" aria-haspopup="true" >
<span class="m-menu__link">
<span class="m-menu__link-text">
Expo
</span>
</span>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_pre_inscripcion_expo_index') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Preinscripciones
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_inscripcionexpo_index') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Inscripciones
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_encuestaexpo_index') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Encuesta
</span>
</a>
</li>
</ul>
</div>
</li>
{% endif %}{# /Formularios-Reportes-Leads-Expo: solo ROLE_AYUDANTE+ #}
{# Pagos: solo ROLE_COORDINADOR y superiores #}
{% if is_granted('ROLE_COORDINADOR') %}
<li class="m-menu__item m-menu__item--submenu" aria-haspopup="true" m-menu-submenu-toggle="hover">
<a href="javascript:;" class="m-menu__link m-menu__toggle">
<i class="m-menu__link-icon flaticon-layers"></i>
<span class="m-menu__link-text">
Pagos
</span>
<i class="m-menu__ver-arrow la la-angle-right"></i>
</a>
<div class="m-menu__submenu ">
<span class="m-menu__arrow"></span>
<ul class="m-menu__subnav">
<li class="m-menu__item m-menu__item--parent" aria-haspopup="true" >
<span class="m-menu__link">
<span class="m-menu__link-text">
Pagos
</span>
</span>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_embajador_participante_pagos') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Pagos pendientes
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_embajador_participante_pagos2') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Pago masivo (múltiples montos)
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_nominapago_index') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Nóminas de pago totales
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_nominapago_emitidas') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Nóminas de pago emitidas
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_embajador_participante_pagadas') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Listado total actividades pagadas
</span>
</a>
</li>
</ul>
</div>
</li>
{% endif %}{# /Pagos ROLE_COORDINADOR #}
<li class="m-menu__item m-menu__item--submenu" aria-haspopup="true" m-menu-submenu-toggle="hover">
<a href="javascript:;" class="m-menu__link m-menu__toggle">
<i class="m-menu__link-icon flaticon-settings"></i>
<span class="m-menu__link-text">
Configuración
</span>
<i class="m-menu__ver-arrow la la-angle-right"></i>
</a>
<div class="m-menu__submenu ">
<span class="m-menu__arrow"></span>
<ul class="m-menu__subnav">
<li class="m-menu__item m-menu__item--parent" aria-haspopup="true" >
<span class="m-menu__link">
<span class="m-menu__link-text">
Configuración
</span>
</span>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('correo_index') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Correos
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_tipo_agenda_index')}}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Tipo agenda
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_tagembajador_index') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Gestión de Tags
</span>
</a>
</li>
{% if is_granted('ROLE_ADMIN') %}
<li class="m-menu__item " aria-haspopup="true">
<a href="{{ path('app_usuario_index') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot"><span></span></i>
<span class="m-menu__link-text">
<i class="la la-users"></i> Gestión de Usuarios
</span>
</a>
</li>
{% endif %}{# /Gestión Usuarios ROLE_ADMIN #}
</ul>
</div>
</li>
<li class="m-menu__item m-menu__item--active" aria-haspopup="true" >
<a href="{{ path('app_logout') }}" class="m-menu__link ">
<i class="m-menu__link-icon flaticon-logout"></i>
<span class="m-menu__link-title">
<span class="m-menu__link-wrap">
<span class="m-menu__link-text">
Salir
</span>
</span>
</span>
</a>
</li>
</ul>
{% endif %}
{% if is_granted('ROLE_ESTUDIANTE') == true %}
<ul class="m-menu__nav m-menu__nav--dropdown-submenu-arrow ">
<li class="m-menu__item m-menu__item--submenu" aria-haspopup="true" m-menu-submenu-toggle="hover">
<a href="javascript:;" class="m-menu__link m-menu__toggle">
<i class="m-menu__link-icon flaticon-file"></i>
<span class="m-menu__link-text">
Boletas y pagos
</span>
<i class="m-menu__ver-arrow la la-angle-right"></i>
</a>
<div class="m-menu__submenu ">
<span class="m-menu__arrow"></span>
<ul class="m-menu__subnav">
<li class="m-menu__item m-menu__item--parent" aria-haspopup="true" >
<span class="m-menu__link">
<span class="m-menu__link-text">
</span>
</span>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_pago_index_byuser') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
<span class="m-menu__link-text">
Boletas pendientes de subir
</span>
</a>
</li>
</ul>
</div>
</li>
<li class="m-menu__item m-menu__item--submenu" aria-haspopup="true" m-menu-submenu-toggle="hover">
<a href="javascript:;" class="m-menu__link m-menu__toggle">
<i class="m-menu__link-icon flaticon-calendar"></i>
<span class="m-menu__link-text">
Agenda general actividades
</span>
<i class="m-menu__ver-arrow la la-angle-right"></i>
</a>
<div class="m-menu__submenu ">
<span class="m-menu__arrow"></span>
<ul class="m-menu__subnav">
<li class="m-menu__item m-menu__item--parent" aria-haspopup="true" >
<span class="m-menu__link">
<span class="m-menu__link-text">
</span>
</span>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('agenda_index_estudiante') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Postular
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('agenda_index_estudiante_confirmadas')}}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Aceptadas por realizar
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('agenda_index_estudiante_historicas')}}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Postulaciones históricas
</span>
</a>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('app_evaluacionembajador_indexembajador')}}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Evaluación de actividades
</span>
</a>
</li>
</ul>
</div>
</li>
<li class="m-menu__item m-menu__item--active" aria-haspopup="true" >
<a href="{{ path('app_logout') }}" class="m-menu__link ">
<i class="m-menu__link-icon flaticon-logout"></i>
<span class="m-menu__link-title">
<span class="m-menu__link-wrap">
<span class="m-menu__link-text">
Salir
</span>
</span>
</span>
</a>
</li>
<!--
<li class="m-menu__item m-menu__item--submenu" aria-haspopup="true" m-menu-submenu-toggle="hover">
<a href="javascript:;" class="m-menu__link m-menu__toggle">
<i class="m-menu__link-icon flaticon-users"></i>
<span class="m-menu__link-text">
Datos personales
</span>
<i class="m-menu__ver-arrow la la-angle-right"></i>
</a>
<div class="m-menu__submenu ">
<span class="m-menu__arrow"></span>
<ul class="m-menu__subnav">
<li class="m-menu__item m-menu__item--parent" aria-haspopup="true" >
<span class="m-menu__link">
<span class="m-menu__link-text">
Actualizar
</span>
</span>
</li>
<li class="m-menu__item " aria-haspopup="true" >
<a href="{{ path('embajadores_index') }}" class="m-menu__link ">
<i class="m-menu__link-bullet m-menu__link-bullet--dot">
<span></span>
</i>
<span class="m-menu__link-text">
Actualizar
</span>
</a>
</li>
</ul>
</div>
</li>
-->
</ul>
{% endif %}
{% if is_granted('ROLE_UNIDADACADEMICA') == true %}
<ul class="m-menu__nav m-menu__nav--dropdown-submenu-arrow ">
<li class="m-menu__item" aria-haspopup="true">
<a href="{{ path('agenda_unidad_academica_abiertas') }}" class="m-menu__link ">
<i class="m-menu__link-icon flaticon-calendar"></i>
<span class="m-menu__link-text">Agendas para postular</span>
</a>
</li>
<li class="m-menu__item" aria-haspopup="true">
<a href="{{ path('unidad_academica_postulaciones') }}" class="m-menu__link ">
<i class="m-menu__link-icon flaticon-list"></i>
<span class="m-menu__link-text">Mis postulaciones</span>
</a>
</li>
<li class="m-menu__item m-menu__item--active" aria-haspopup="true" >
<a href="{{ path('app_logout') }}" class="m-menu__link ">
<i class="m-menu__link-icon flaticon-logout"></i>
<span class="m-menu__link-title">
<span class="m-menu__link-wrap">
<span class="m-menu__link-text">
Salir
</span>
</span>
</span>
</a>
</li>
</ul>
{% endif %}
</div>
<!-- END: Aside Menu -->
</div>
<!-- END: Left Aside -->
<div class="m-grid__item m-grid__item--fluid m-wrapper">
<!-- BEGIN: Subheader -->
<div class="m-subheader ">
<div class="d-flex align-items-center">
<div>
</div>
</div>
</div>
<!-- END: Subheader -->
<div class="m-content">
<!-- Flash Messages -->
{% for type, messages in app.flashes %}
{% for message in messages %}
<div class="alert alert-{{ type == 'success' ? 'success' : (type == 'error' ? 'danger' : type) }} alert-dismissible fade show" role="alert" style="margin-bottom: 20px;">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<strong>{{ type == 'success' ? '?' : (type == 'error' ? '?' : '?') }}</strong> {{ message }}
</div>
{% endfor %}
{% endfor %}
<!-- End Flash Messages -->
{% block body %}
<!--Begin::Section-->
<!--End::Section-->
<!--Begin::Section-->
<!--End::Section-->
{% endblock %}
</div>
</div>
</div>
<!-- end:: Body -->
<!-- begin::Footer -->
<footer class="m-grid__item m-footer ">
<div class="m-container m-container--fluid m-container--full-height m-page__container">
<div class="m-stack m-stack--flex-tablet-and-mobile m-stack--ver m-stack--desktop">
<div class="m-stack__item m-stack__item--left m-stack__item--middle m-stack__item--last">
<span class="m-footer__copyright">
2022 ©
<a href="https://www.eurekatech.io" class="m-link">
Eurekatech
</a>
</span>
</div>
<div class="m-stack__item m-stack__item--right m-stack__item--middle m-stack__item--first">
<ul class="m-footer__nav m-nav m-nav--inline m--pull-right">
<li class="m-nav__item">
<a href="#" class="m-nav__link">
<span class="m-nav__link-text">
Acerca de
</span>
</a>
</li>
<li class="m-nav__item m-nav__item">
<a href="#" class="m-nav__link" data-toggle="m-tooltip" title="Support Center" data-placement="left">
<i class="m-nav__link-icon flaticon-info m--icon-font-size-lg3"></i>
</a>
</li>
</ul>
</div>
</div>
</div>
</footer>
<!-- end::Footer -->
</div>
<div id="m_scroll_top" class="m-scroll-top">
<i class="la la-arrow-up"></i>
</div>
<script type="application/javascript">
$(document).ready(function () {
// Verificar que DataTables esté disponible antes de usarlo
if (typeof $.fn.DataTable !== 'undefined') {
$('#example').DataTable({
dom: 'Bfrtip',
order: [[0, 'desc']],
buttons: [
'copy', 'csv', 'excel', 'pdf', 'print'
],
language: {
url: "//cdn.datatables.net/plug-ins/1.11.5/i18n/es-ES.json",
search: "Buscar:",
info: "Mostrando _START_ a _END_ de _TOTAL_ registros"
}
});
$('#example2').DataTable({
dom: 'Bfrtip',
order: [[1, 'asc']],
language: {
url: "//cdn.datatables.net/plug-ins/1.11.5/i18n/es-ES.json",
search: "Buscar:",
info: "Mostrando _START_ a _END_ de _TOTAL_ registros"
}
});
$('#example3').DataTable({
dom: 'Bfrtip',
order: [[1, 'desc']], // Cambiado a columna 1 (Id) porque ahora la 0 es checkbox
columnDefs: [
{ targets: 0, orderable: false, searchable: false }, // Checkbox no ordenable
{ targets: 1, type: 'num' }, // Columna Id como numérica
{ targets: -1, orderable: false, searchable: false } // Deshabilita ordenar/buscar en última columna (acciones)
],
buttons: [
'copy', 'csv', 'excel', 'pdf', 'print'
],
language: {
url: "//cdn.datatables.net/plug-ins/1.11.5/i18n/es-ES.json",
search: "Buscar:",
info: "Mostrando _START_ a _END_ de _TOTAL_ registros"
}
});
}
$('.select2').select2({
language: "es"
});
});
</script>
</script>
</body>
<!-- end::Body -->
</html>
<script src="{{ asset('metronic/assets/app/js/dashboard.js') }}" type="text/javascript"></script>
</body>
</html>
{% else %}
<script>window.location.href = "{{ path('app_login') }}";</script>
{% endif %}