Initial Commit

This commit is contained in:
Cloud User
2024-03-06 17:45:49 -06:00
commit 8986493161
250 changed files with 43078 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
<link rel="icon" type="image/png" href="imagenes/favicon.png" />
<link rel="stylesheet" href="<?= $ruta ?? '' ?>css/bootstrap-ulsa.min.css" type="text/css">
<link rel="stylesheet" href="<?= $ruta ?? '' ?>css/indivisa.css" type="text/css">
<link rel="stylesheet" href="<?= $ruta ?? '' ?>css/sgi.css?rand=<?php echo rand(); ?>" type="text/css">
<link rel="stylesheet" href="<?= $ruta ?? '' ?>css/style.css">
<link rel="stylesheet" href="<?= $ruta ?? '' ?>css/jquery-ui.css">

145
import/html_footer.php Normal file
View File

@@ -0,0 +1,145 @@
<div class="container-fluid">
<footer class="footer">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"
integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA=="
crossorigin="anonymous" referrerpolicy="no-referrer" />
<div class="footerTop">
<div class="container">
<div class="logotipo">
<img src="imagenes/lasalle-logo-blanco.png" alt="Universidad La Salle" width="15%">
<h3> <span>Profesionales</span>con <strong>Valor</strong></h3>
</div>
<div class="ubicacion">
<div class="address">
<div class="tabs">
<ul class="nav list-inline" id="tabsFooter" role="tablist">
<li class="list-inline-item">
<a class="nav-link active" id="unidad1-tab" data-toggle="tab" href="#unidad1"
role="tab" aria-controls="calendario" aria-selected="true">Unidad Condesa</a>
</li>
<li class="list-inline-item">
<a class="nav-link " id="unidad2-tab" data-toggle="tab" href="#unidad2" role="tab"
aria-controls="lista" aria-selected="false">Unidad Santa Teresa</a>
</li>
<li class="list-inline-item">
<a class="nav-link " id="unidad3-tab" data-toggle="tab" href="#unidad3" role="tab"
aria-controls="lista" aria-selected="false">Unidad San Fernando</a>
</li>
<li class="list-inline-item">
<a class="nav-link" id="unidad4-tab" data-toggle="tab" href="#unidad4" role="tab"
aria-controls="lista" aria-selected="false">Unidad Santa Lucía</a>
</li>
</ul>
<div class="tab-content" id="tabsCont">
<div class="tab-pane fade show active" id="unidad1" role="tabpanel"
aria-labelledby="unidad1-tab">
<p>Benjamín Franklin No 45, Col. Condesa, Alc. Cuauhtémoc, CDMX, CP 06140 <span
class="tel">Tel. <a href="tel:+525552789500">55 5278-9500</a> / <a
href="tel:+8005272553">800 LASALLE</a></span><br>
<a class="btnMap "
href="https://www.google.com/maps/place/Universidad+La+Salle/@19.4085702,-99.1810039,15z/data=!4m5!3m4!1s0x0:0x3108b5797f9c9ecd!8m2!3d19.4085702!4d-99.1810039"
target="_blank"> <span class="fas fa-map-marker-alt mr-1"></span>¿Cómo
llegar?</a>
</p>
</div>
<div class="tab-pane fade" id="unidad2" role="tabpanel" aria-labelledby="unidad2-tab">
<p>Camino a Santa Teresa 811, Col. Rinconada del Pedregal, Alc. Tlalpan, CDMX, CP
14010 <span class="tel">Tel. <a href="tel:5552789500">55 5278-9500</a> / <a
href="tel:+8005272553">800 LASALLE</a></span><br>
<a class="btnMap "
href="https://www.google.com/maps/place/Universidad+La+Salle+Unidad+Santa+Teresa/@19.299013,-99.196093,15z/data=!4m5!3m4!1s0x0:0xdfc2b61c9b67aac2!8m2!3d19.299013!4d-99.196093"
target="_blank"> <span class="fas fa-map-marker-alt mr-1"></span>¿Cómo
llegar?</a>
</p>
</div>
<div class="tab-pane fade" id="unidad3" role="tabpanel" aria-labelledby="unidad3-tab">
<p>Av. De Las Fuentes 17, Col. Tlalpan, Alc. Tlalpan, CDMX, CP 14000 <span
class="tel">Tel. <a href="tel:+525552789500">55 5278-9500</a> / <a
href="tel:+8005272553">800 LASALLE</a></span><br>
<a class="btnMap "
href="https://www.google.com/maps/place/Universidad+La+Salle+Facultad+de+Medicina/@19.2930318,-99.1720808,15z/data=!4m5!3m4!1s0x0:0x29b7725e5a004277!8m2!3d19.2930318!4d-99.1720808"
target="_blank"> <span class="fas fa-map-marker-alt mr-1"></span>¿Cómo
llegar?</a>
</p>
</div>
<div class="tab-pane fade" id="unidad4" role="tabpanel" aria-labelledby="unidad4-tab">
<p>Av. Tamaulipas 3, Col. Zona Federal, Alc. Álvaro Obregón, CDMX, CP 01357 <span
class="tel">Tel. <a href="tel:5556021130">55 5602-1130</a> </span><br>
<a class="btnMap "
href="https://www.google.com/maps/place/Unidad+Deportiva+La+Salle/@19.3662852,-99.2421597,15z/data=!4m5!3m4!1s0x0:0x88e0334f044bc518!8m2!3d19.3662852!4d-99.2421597"
target="_blank"> <span class="fas fa-map-marker-alt mr-1"></span>¿Cómo
llegar?</a>
</p>
</div>
</div>
</div>
</div>
<div class="redes">
<h4>Compartir :</h4>
<ul>
<li><a href="https://www.facebook.com/LaSalleMXIngenieria" target="_blank"><i
class="fab fa-facebook-f fa-fw"></i></a></li>
<!-- <li><a href="https://twitter.com/lasalle_mx" target="_blank"><i class="fab fa-twitter fa-fw"></i></a></li> -->
<li><a href="https://www.youtube.com/user/IngenieriaLaSalle/" target="_blank"><i
class="fab fa-youtube fa-fw"></i></a></li>
<li><a href="https://www.instagram.com/lasalle_mx/" target="_blank"><i
class="fab fa-instagram fa-fw"></i></a></li>
<!--<li><a href="https://www.linkedin.com/school/universidad-la-salle?pathWildcard=24227" target="_blank"><i class="fab fa-linkedin-in fa-fw"></i></a></li>-->
</ul>
</div>
</div>
</div>
</div>
<div class="footerMiddle">
<div class="container">
<div class="row justify-content-md-center">
<nav class="col-12 col-md-10">
<a class="footerMore menuMore" href="#">Sistema y Red La Salle</a>
<ul>
<li><a href="http://bajio.delasalle.edu.mx/" target="_blank">Bajío</a></li>
<li><a href="http://www.lasalle.mx/" target="_blank">Ciudad de México</a></li>
<li><a href="http://lasallecancun.edu.mx/" target="_blank">Cancún</a></li>
<li><a href="http://www.ulsapuebla.mx/" target="_blank">Puebla</a></li>
<li><a href="http://www.ulsapuebla.mx/" target="_blank">Chihuahua</a></li>
<li><a href="http://www.lasallecuernavaca.edu.mx/wp/" target="_blank">Cuernavaca</a></li>
<li><a href="http://www.ulsalaguna.edu.mx/" target="_blank">Laguna</a></li>
<li><a href="http://www.lasallemorelia.edu.mx/" target="_blank">Morelia</a></li>
<li><a href="http://www.ulsaneza.edu.mx/" target="_blank">Nezahualcóyotl</a></li>
<li><a href="http://www.ulsa-noroeste.edu.mx/n2015/" target="_blank">Noroeste</a></li>
<li><a href="http://www.ulsaoaxaca.edu.mx/" target="_blank">Oaxaca</a></li>
<li><a href="http://www.lasallep.edu.mx/" target="_blank">Pachuca</a></li>
<li><a href="https://www.ulsasaltillo.edu.mx/" target="_blank">Saltillo</a></li>
<li><a href="https://www.lasallevictoria.edu.mx/" target="_blank">Victoria</a></li>
</ul>
</nav>
</div>
</div>
</div>
<div class="footerBottom">
<div class="container">
<div class="logotipos">
<ul>
<li><a href="http://redlasalle.mx/" target="_blank"><img
src="imagenes/la-salle-logo-red-universidades.png" alt="La Salle - logotipo"
class="img-responsive" width="80"></a></li>
<li><a href="http://ialu.org/english/" target="_blank"><img
src="imagenes/la-salle-logo-international-ia.png" alt="La Salle - logotipo"
class="img-responsive" width="80"></a></li>
</ul>
</div>
<div class="legales">
<a class="footerMore menuMore" href="#">Legales</a>
<ul>
<li><a href="https://lasalle.mx/globales/contacto.html" target="_blank">Contacto</a></li>
<li><a href="https://lasalle.mx/globales/terminos-y-condiciones.html" target="_blank">Términos y
condiciones</a></li>
<li><a href="https://lasalle.mx/globales/aviso-de-privacidad.html" target="_blank">Aviso de
Privacidad</a></li>
<!--<li><a href="https://lasalle.mx/globales/mapa-de-sitio.html" target="_blank">Mapa de sitio</a></li>
<li><a href="https://lasalle.mx/globales/preguntas-frecuentes/" target="_blank">Preguntas frecuentes</a></li>-->
</ul>
</div>
</div>
</div>
</footer>
</div>

22
import/html_forms.php Normal file
View File

@@ -0,0 +1,22 @@
<?php // Necesita sesión y BD abiertas
require_once "include/constantes.php";
?>
<link rel="stylesheet" href="css/jquery-ui.css">
<link rel="stylesheet" href="css/calendar.css">
<?php
require_once "import/periodo.php";
?>
<script src="js/jquery.min.js"></script>
<script src="js/jquery-ui.js"></script>
<script src="js/datepicker-es.js"></script>
<?php include_once "js/messages.php"; ?>
<!-- <script>
$(".date-picker").datepicker($.datepicker.regional["es"]);
$(".date-picker").datepicker({
dateFormat: "dd/mm/yyyy",
changeMonth: true,
});
</script> -->

View File

@@ -0,0 +1,139 @@
<?php
include_once "import/html_forms.php";
?>
<form id="asistencia">
<div class="form-box">
<input type="hidden" name="facultad" value="<?= $user->facultad['facultad_id']; ?>">
<?php
$periodo = $db->where('id', $user->periodo_id)->getOne('fs_periodo');
$carreras = $db
->where('nivel', $periodo['nivel_id'])
->where('facultad', $user->facultad['facultad_id'])
->orderBy('carrera')
->get('fs_carrera');
?>
<div class="form-group row">
<label for="filter_carrera" class="col-4 col-form-label">Carrera</label>
<div class="col-6 ">
<div id="dlcarrera" class="datalist datalist-select mb-1 w-100">
<div class="datalist-input">Seleccionar todas las carreras</div>
<span class="ing-buscar icono"></span>
<ul style="display:none">
<li data-id="">Seleccionar todas las carreras</li>
<?php
foreach ($carreras as $carrera) {
?>
<li data-id="<?= $carrera['id'] ?>">
<?= $carrera['carrera'] ?>
</li>
<?php
}
?>
</ul>
<input type="hidden" id="filter_carrera" name="carrera" value="">
</div>
</div>
</div>
<div class="form-group row">
<label for="filterClave" class="col-4 col-form-label">Clave</label>
<div class="col-6 ">
<input type="text" class="form-control" id="filterClave" name="clave" placeholder="Clave del profesor (opcional)" value="<?= $clave ?? '' ?>" pattern="(do)?[0-9]{3,6}" title="La clave debe tener 8 caracteres, los primeros 2 deben ser letras y los últimos 6 números" minlength="3" maxlength="8">
</div>
</div>
<div class="form-group row">
<label for="filterNombre" class="col-4 col-form-label">Nombre</label>
<div class="col-6 ">
<input type="text" class="form-control" id="filterNombre" name="nombre" placeholder="Nombre del profesor (opcional)">
</div>
</div>
<div class="form-group row">
<label for="fecha_inicial" class="col-4 col-form-label">Fecha inicial</label>
<div class="col-8 col-sm-4">
<input id="fecha_inicial" name="fecha_inicial" type="text" class="form-control date-picker" placeholder="dd/mm/aaaa" maxlength="10" required="required" readonly>
<div class="invalid-feedback">No es una fecha válida.</div>
</div>
</div>
<div class="form-group row">
<label for="fecha_final" class="col-4 col-form-label">Fecha final</label>
<div class="col-8 col-sm-4">
<input id="fecha_final" name="fecha_final" type="text" class="form-control date-picker" placeholder="dd/mm/aaaa" maxlength="10" required="required" readonly>
<div class="invalid-feedback">No es una fecha válida o el rango es incorrecto.</div>
</div>
</div>
</div>
<div class="form-group row justify-content-center">
<button type="submit" class="btn btn-outline-primary mr-2" id="btn-buscar"><?php echo $ICO["buscar"]; ?> Buscar asistencias</button>
<button type="button" class="btn btn-outline-danger" onclick="window.location.href = window.location.href"><?php echo $ICO["borrar"]; ?> Limpiar</button>
</div>
</form>
<script>
var today = new Date();
$(".date-picker").datepicker($.datepicker.regional["es"]);
$(".date-picker").datepicker({
dateFormat: "dd/mm/yyyy",
changeMonth: true,
});
<?php
$periodo = query("SELECT * FROM FS_PERIODO WHERE ID = :periodo", [":periodo" => $user->periodo_id]);
echo "// Período: {$periodo["inicio"]} - {$periodo["fin"]}\n";
echo "// Fecha inicial: " . ($fecha_inicial ?? 'n/a') . " - Fecha final: " . ($fecha_final ?? 'n/a') . "\n";
?>
// $periodo format = Y-m-d
const inicio = new Date(<?= date('Y, m-1, d', strtotime($periodo['inicio'])) ?>);
var fecha_inicial = new Date(<?= date('Y, m-1, d', strtotime($fecha_inicial ?? $periodo['inicio'])) ?>)
var fecha_final = new Date(<?= date('Y, m-1, d', strtotime($fecha_final ?? $periodo['fin'])) ?>)
const limit = new Date(Math.min(today, fecha_final));
console.log(`today: ${today}, fecha_inicial: ${fecha_inicial}, fecha_final: ${fecha_final}`);
$("#fecha_inicial").datepicker("option", "minDate", inicio);
$("#fecha_inicial").datepicker("option", "maxDate", limit);
$("#fecha_final").datepicker("option", "minDate", fecha_inicial);
$("#fecha_final").datepicker("option", "maxDate", limit);
// if today is in the period, set the initial date to today
$("#fecha_inicial").datepicker("setDate", fecha_inicial);
$("#fecha_final").datepicker("setDate", today <= fecha_final ? today : fecha_final);
// if the datepicker is changed, check if the range is valid
makeRequiredDatalist("#filter_facultad", true);
makeRequiredDatalist("#filter_carrera", true);
$(document).on('click', '#dlFacultad ul li', function() {
var id = $(this).data('id');
// remove all option
$('#dlcarrera ul').empty();
disableDatalist("#filter_carrera", false);
$.post(
'action/action_carreras.php', {
facultad: id,
periodo: $('#periodo').val()
},
function(data) {
$('#dlcarrera ul').append("<li>Seleccionar todas</li>");
for (var i = 0; i < data.length; i++)
$('#dlcarrera ul').append(`<li data-id="${data[i].id}">${data[i].carrera}</li>`);
setDatalistFirst("#filter_carrera")
},
'json'
)
});
$(document).on('change', '#fecha_inicial', function() {
var fi = $(this).datepicker("getDate");
$("#fecha_final").datepicker("option", "minDate", fi);
});
$(document).on('change', '#fecha_final', function() {
var ff = $(this).datepicker("getDate");
$("#fecha_inicial").datepicker("option", "maxDate", ff);
});
</script>

View File

@@ -0,0 +1,111 @@
<?php
include_once "import/html_forms.php";
?>
<link rel="stylesheet" href="css/clockpicker.css">
<form id="justificar">
<div class="form-box">
<div class="col-md-6 col-sm-12 text-center mb-3">
Selecciona la fecha que deseas justificar.
</div>
<div class="form-group row">
<label for="filter_fecha" class="col-4 col-form-label">Fecha *</label>
<div class="col-6 ">
<input id="filter_fecha" name="fecha" type="text" class="form-control date-picker" placeholder="dd/mm/aaaa" maxlength="10" required="required" readonly>
<div class="invalid-feedback">No es una fecha válida.</div>
</div>
</div>
<!-- Hora inicio CLOCKPICKER -->
<div class="form-group row">
<label for="filter_hora_inicio" class="col-4 col-form-label">Hora estimada *</label>
<div class="input-group clockpicker col-6 ">
<input id="filter_hora_inicio" name="hora_inicio" type="text" class="form-control" placeholder="hh:mm" maxlength="5" required="required" readonly>
<div class="input-group-append">
<span class="input-group-text" onclick="$('#filter_hora_inicio').focus();">
<i class="ing-reloj"></i>
</span>
</div>
<div class="invalid-feedback">No es una hora válida.</div>
</div>
</div>
<!-- Hora fin -->
<div class="form-group row">
<label for="filter_hora_fin" class="col-4 col-form-label">Hora límite</label>
<div class="input-group clockpicker col-6">
<input id="filter_hora_fin" name="hora_fin" type="text" class="form-control" placeholder="hh:mm" maxlength="5" readonly>
<div class="input-group-append">
<span class="input-group-text" onclick="$('#filter_hora_fin').focus();">
<i class="ing-reloj"></i>
</span>
</div>
<div class="invalid-feedback">No es una hora válida.</div>
</div>
</div>
<!-- ClaveULSA -->
<div class="form-group row">
<label for="filter_clave" class="col-4 col-form-label">Clave</label>
<div class="col-6">
<input id="filter_clave" name="clave" type="text" class="form-control" pattern="(do)?[0-9]{3,6}" placeholder="Clave del profesor (do)" maxlength="8" title="Clave del profesor (do)">
<div class="invalid-feedback">No es una clave válida.</div>
</div>
</div>
<!-- Nombre -->
<div class="form-group row">
<label for="filter_nombre" class="col-4 col-form-label">Nombre</label>
<div class="col-6">
<input id="filter_nombre" name="nombre" type="text" class="form-control" placeholder="Nombre del profesor" maxlength="50" title="Nombre del profesor">
<div class="invalid-feedback">No es un nombre válido.</div>
</div>
</div>
<!-- button center -->
<div class="form-group row justify-content-center p-3">
<button class="btn btn-primary mr-3" id="main-button" type="button">
<?= $ICO['buscar'] ?>
Buscar profesores
</button>
<!-- reload page -->
<button type="button" class="btn btn-outline-danger" onclick="location.reload();">
<span class="ing-borrar icono"></span>
Limpiar
</button>
</div>
</div>
</form>
<script src="js/clockpicker.js"></script>
<script>
$(".date-picker").datepicker($.datepicker.regional["es"]);
$(".date-picker").datepicker({
dateFormat: "dd/mm/yyyy",
changeMonth: true,
});
$('.clockpicker').clockpicker({
placement: 'bottom',
align: 'right',
donetext: 'Aceptar',
autoclose: true,
'default': 'now',
afterShow: function() {
$('.clockpicker-minutes').find('.clockpicker-tick').filter(function() {
return $(this).text() % 5 !== 0;
}).remove();
$('.clockpicker-hours').find('.clockpicker-tick').filter(function(index, element) {
let num = parseInt($(element).text());
let condition = num < 7 || num > 22;
return condition;
}).remove();
}
});
// only accept from 7:00 to 22:00
</script>

163
import/html_forms_vista.php Normal file
View File

@@ -0,0 +1,163 @@
<section id="message"></section>
<?php
$target = '/checador_otros/admin_checador/reporte_de_asistencias.php';
$id = $_POST['id'];
include_once "import/html_forms.php";
$carreras = queryAll("SELECT DISTINCT carrera, id, facultad FROM FS_CARRERA WHERE ID IN (SELECT distinct CARRERA_ID FROM FS_HORARIO_BASIC WHERE :id IN (SELECT HORARIO_ID FROM HORARIO_PROFESOR WHERE PROFESOR_ID = :id) AND PERIODO_ID = :per)", [':id' => $id, ':per' => $user->periodo_id]);
// materia por carrera
#print_r($carreras);
$materias = queryAll("SELECT DISTINCT * FROM FS_MATERIA WHERE CARRERA = COALESCE(:car, CARRERA) AND ID IN (SELECT distinct materia_id FROM HORARIO WHERE :id IN (SELECT HORARIO_ID FROM HORARIO_PROFESOR WHERE PROFESOR_ID = :id) AND PERIODO_ID = :per) ORDER BY NOMBRE", [":car" => empty($carrera) ? null : $carrera, ':id' => $id, ':per' => $user->periodo_id]);
#exit();
$periodo = query("SELECT inicio, fin FROM FS_PERIODO WHERE ID = :per", [':per' => $user->periodo_id]);
?>
<form action="#" method="post" id="form" class="form-horizontal">
<input type="hidden" name="id" value="<?= $id; ?>" />
<input type="hidden" name="periodo" value="<?= $user->periodo_id ?>" />
<input type="hidden" name="facultad" value="<?= $user->facultad['facultad_id'] ?>" />
<input type="hidden" name="clave" value="<?= $profesor['clave'] ?>" />
<div class="form-box">
<div class="form-group row">
<label for="filter_carrera" class="col-4 col-form-label">Carrera</label>
<div class="col-6">
<div id="dlcarrera" class="datalist datalist-select mb-1 w-100">
<div class="datalist-input">Todas las carreras</div>
<span class="ing-buscar icono"></span>
<ul style="display:none">
<!-- Seleccionar todas -->
<li data-value="0">Todas las carreras</li>
<?php foreach ($carreras as $car) {
?>
<li data-id="<?= $car['id'] ?>" class="<?= ($car['id'] == $carrera) ? "selected" : '' ?>" onclick="carreras(<?= $car['id'] ?>)">
<?= $car['carrera'] ?>
</li>
<?php } ?>
</ul>
<input type="hidden" id="filter_carrera" name="carrera" value="">
</div>
</div>
</div>
<!-- Materia -->
<div class="form-group row">
<label for="filter_materia" class="col-4 col-form-label">Materia</label>
<div class="col-6">
<div id="dlmateria" class="datalist datalist-select mb-1 w-100">
<div class="datalist-input">Todas las materias</div>
<span class="ing-buscar icono"></span>
<ul style="display:none">
<li data-value="0">Todas las materias</li>
<?php foreach ($materias as $materia) { ?>
<li data-id="<?= $materia['id']; ?>" class="<?= ($materia['id'] == $_POST['materia']) ? "selected" : '' ?>">
<?= $materia['nombre']; ?>
</li>
<?php } ?>
</ul>
<input type="hidden" id="filter_materia" name="materia" value="">
</div>
</div>
</div>
<!-- Fecha inicial y fecha final -->
<div class="form-group row">
<label for="fecha_inicial" class="col-4 col-form-label">Fecha inicial</label>
<div class="col-8 col-sm-4">
<input id="fecha_inicial" name="fecha_inicial" type="text" class="form-control date-picker" placeholder="dd/mm/aaaa" maxlength="10" required="required" readonly>
<div class="invalid-feedback">No es una fecha válida.</div>
</div>
</div>
<div class="form-group row">
<label for="fecha_final" class="col-4 col-form-label">Fecha final</label>
<div class="col-8 col-sm-4">
<input id="fecha_final" name="fecha_final" type="text" class="form-control date-picker" placeholder="dd/mm/aaaa" maxlength="10" required="required" readonly>
<div class="invalid-feedback">No es una fecha válida o el rango es incorrecto.</div>
</div>
</div>
</div>
<!-- ICO-BUSCAR FILTRAR & ICO-BORRAR LIMPIAR -->
<div class="form-group row justify-content-center">
<button type="button" class="btn btn-outline-primary mr-2" onclick="if(validateForm) submit('vista_profesor.php')">
<span class="ing-buscar icono"></span>
Filtrar
</button>
<button type="button" class="btn btn-outline-danger" onclick="reset_form(); submit('vista_profesor.php')">
<span class="ing-borrar icono"></span>
Limpiar
</button>
</div>
</form>
<?php
include_once "js/messages.php";
?>
<script>
$(".date-picker").datepicker($.datepicker.regional["es"]);
$(".date-picker").datepicker({
dateFormat: "dd/mm/yyyy",
changeMonth: true,
});
var today = new Date();
var fecha_inicial = new Date(<?= $fecha_inicial->format("Y, m-1, d") ?>);
var fecha_inicial_periodo = new Date(<?= date("Y, m-1, d", strtotime($periodo['inicio'])) ?>);
var fecha_final = new Date(<?= $fecha_final->format("Y, m-1, d") ?>);
var fecha_final_periodo = new Date(<?= date("Y, m-1, d", strtotime($periodo['fin'])) ?>);
var limit = new Date(Math.min(today, fecha_final_periodo));
// if today is in the period, set the initial date to today
$("#fecha_inicial").datepicker("option", "minDate", fecha_inicial_periodo);
$("#fecha_inicial").datepicker("option", "maxDate", limit);
$("#fecha_final").datepicker("option", "minDate", fecha_inicial_periodo);
$("#fecha_final").datepicker("option", "maxDate", limit);
$("#fecha_inicial").datepicker("setDate", fecha_inicial);
$("#fecha_final").datepicker("setDate", today <= fecha_final ? today : fecha_final);
function reset_form() {
$("#fecha_inicial").datepicker("setDate", fecha_inicial_periodo);
$("#fecha_final").datepicker("setDate", today <= fecha_inicial_periodo ? today : fecha_final_periodo);
setDatalistFirst("#filter_carrera");
setDatalistFirst("#filter_materia");
disableDatalist("#filter_materia");
}
<?php if (empty($carrera)) { ?>
disableDatalist("#filter_materia", true);
<?php } ?>
// $("#fecha_inicial").on("change", function() {
// var fecha_inicial = $("#fecha_inicial").datepicker("getDate");
// var fecha_final = $("#fecha_final").datepicker("getDate");
// if (fecha_final < fecha_inicial) {
// $("#fecha_final").datepicker("setDate", fecha_inicial);
// }
// $("#fecha_final").datepicker("option", "minDate", fecha_inicial);
// });
// $("#fecha_final").on("change", function() {
// var fecha_inicial = $("#fecha_inicial").datepicker("getDate");
// var fecha_final = $("#fecha_final").datepicker("getDate");
// if (fecha_final < fecha_inicial) {
// $("#fecha_inicial").datepicker("setDate", fecha_final);
// }
// $("#fecha_inicial").datepicker("option", "maxDate", fecha_final);
// });
// Datalist carrera then select materia
$(document).on('click', '#dlcarrera li', function() {
// if this is empty
// console.log($(this).attr('data-value'));
if ($(this).attr('data-value') == '0')
disableDatalist("#filter_materia", true);
});
$(document).on('change', '#fecha_inicial', function() {
let fi = $(this).datepicker("getDate");
$("#fecha_final").datepicker("option", "minDate", fi);
});
$(document).on('change', '#fecha_final', function() {
let ff = $(this).datepicker("getDate");
$("#fecha_inicial").datepicker("option", "maxDate", ff);
});
</script>

145
import/html_header.php Normal file
View File

@@ -0,0 +1,145 @@
<script defer src="<?= $ruta ?? '' ?>js/sidebarmenu.js"></script>
<?php
require_once ($ruta ?? '') . 'class/c_login.php';
require_once ($ruta ?? '') . 'include/bd_pdo.php';
$user = Login::get_user();
$user->access();
$pagina = substr(basename($_SERVER['PHP_SELF']), 0, -4);
if (!in_array($pagina, ["main", "test"]) && !$user->acceso) {
header('Location: main.php?error=1');
exit;
}
$grupos = $user->admin ? queryAll("SELECT * FROM GRUPO ORDER BY grupo_nombre") : $db->query("SELECT * FROM GRUPO WHERE grupo_id IN (SELECT grupo_id FROM PERMISO_VIEW WHERE id = :id) ORDER BY grupo_nombre", array(":id" => $user->user['id']));
function html_header($title, $header = null)
{
global $grupos, $user, $db, $ruta;
?>
<aside id="sidebar" class="bg-light defaultShadow d-flex flex-column p-4">
<div class="d-flex align-items-center mb-5">
<div class="logotipo"><a href="https://lasalle.mx/" target="_blank"><img src="<?= $ruta ?? '' ?>imagenes/logo_lasalle.png"></a>
</div>
<div class="flex-grow-1 d-flex justify-content-end">
<nav class="navbar navbar-expand d-none d-flex">
<ul class="navbar-nav">
</ul>
</nav>
<div class="d-flex mainMenu justify-content-center align-items-center">
<div class="max-h iconSesion">
<a href="salir.php" class="iconOff max-h pl-3 d-flex justify-content-start align-items-center"><i
class="ing-salir"></i></a>
</div>
<div class="max-h">
<div class="bg-primary rounded-circle pointer max-h max-w d-flex justify-content-center align-items-center"
id="dismiss">
<span class="text-white iconMenuSidebar ing-cancelar"></span>
</div>
</div>
</div>
</div>
</div>
<div class="accordion px-2" id="accordionMenu">
<p class="mb-0 mt-3 ml-4 pl-1">
<a class="d-block side-menu" href="main.php">
<span class="ing-home"></span> Menú
</a>
</p>
<?php
if ($user->admin) { ?>
<p class="mb-0 mt-3 ml-4 pl-1">
<a href="permisos.php" class="d-block side-menu">
<span class="ing-pass"></span> Permisos
</a>
</p>
<?php }
foreach ($grupos as $key => $grupo) {
?>
<p class="mb-0 mt-3">
<a class="d-block side-menu collapsed" data-toggle="collapse" href="#menu_<?= $key ?>" role="button"
aria-expanded="false">
<i class="ing-caret ing-fw mr-2"></i>
<span class="<?= $grupo['grupo_icon'] ?>"></span>
<?= ucfirst($grupo['grupo_nombre']) ?>
</a>
</p>
<div id="menu_<?= $key ?>" class="collapse" data-parent="#accordionMenu" style>
<ul class="fa-ul">
<?
foreach ($user->admin ? $db->query("SELECT * FROM PAGINA WHERE grupo_id = :grupo_id ORDER BY pagina_titulo", array(":grupo_id" => $grupo['grupo_id'])) : $db->query("SELECT * FROM PAGINA WHERE grupo_id = :grupo_id and pagina_id IN (SELECT pagina_id FROM PERMISO_VIEW WHERE id = :id) ORDER BY pagina_titulo", array(":grupo_id" => $grupo['grupo_id'], ":id" => $user->user['id']))
as $pagina):
?>
<li class="mt-1">
<a href="<?= $pagina['pagina_ruta'] ?>.php">
<?= $pagina['pagina_titulo'] ?>
</a>
</li>
<? endforeach; ?>
</ul>
</div>
<?php
}
?>
</div>
</aside>
<div class="overlay"></div>
<header class="sticky-top bg-white">
<div class="container marco menu d-flex align-items-center">
<div class="logotipo">
<a href="https://lasalle.mx/" target="_blank">
<img src="<?= $ruta ?? '' ?>imagenes/logo_lasalle.png">
</a>
</div>
<div class="flex-grow-1 d-flex justify-content-end">
<nav class="navbar navbar-expand-lg d-flex">
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<!-- Add your navigation items here -->
</ul>
</div>
</nav>
<div class="d-flex mainMenu justify-content-center align-items-center">
<div class="max-h iconSesion">
<a href="salir.php" class="iconOff max-h pl-3 d-flex justify-content-start align-items-center">
<i class="ing-salir"></i>
</a>
</div>
<div class="max-h">
<span id="sidebarCollapse" style="font-size: 44px;"
class="ing-menu bg-white rounded-circle pointer max-w d-flex justify-content-center align-items-center"></span>
</div>
</div>
</div>
</div>
</header>
<div class="row bg-info mx-0 barra-gris d-flex flex-column">
<?php
if ($header != null) {
?>
<div class="marco">
<div class="col-sm-12">
<h2 class="text-muted">
<?= $header; ?>
</div>
</div>
<?php } ?>
<div class="marco">
<div class="col-sm-12 py-3">
<h2 class="text-uppercase">
<?= $title; ?>
</h2>
</div>
</div>
</div>
<? } ?>

View File

@@ -0,0 +1,34 @@
<?php
require "include/constantes.php";
function html_header($title, $header = null, $links = [])
{
?>
<nav class="navbar sticky-top navbar-light bg-white">
<header class="container-fluid">
<div class="menu">
<a class="navbar-brand" href="/"><img id="logo" src="imagenes/logo_lasalle.png" class="img-fluid" /></a>
</div>
</header>
</nav>
<!-- Barra azul -->
<div class="row bg-info mx-0 barra-gris">
<?php
if ($header != null) {
?>
<div class="marco">
<div class="col-sm-12">
<h2 class="text-muted">
<?= $header; ?>
</div>
</div>
<?php } ?>
<div class="marco">
<div class="col-sm-12 py-3">
<h2 class="text-uppercase">
<?= $title; ?>
</h2>
</div>
</div>
</div>
<?php
}

47
import/html_navtoggle.php Normal file
View File

@@ -0,0 +1,47 @@
<?php
# Componente, desplegable para la barra de navegación con los contenidos del menú (i.e. módulos con sus páginas)
require_once 'class/c_login.php';
if (!isset($_SESSION['user'])) {
header('Location: index.php');
exit;
}
else
$user = $_SESSION['user'];
$pages = query('SELECT * FROM FS_MODULOS', single: false);
$modules = query('SELECT DISTINCT id, titulo FROM FS_MODULOS', single: false);
?>
<!-- Cuando se le hace click al hamburguer button se despliega un menú en la derecha -->
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<?php
foreach ($modules as $module) {
?>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<?php echo ucfirst($module['titulo']); ?>
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<?php
foreach ($pages as $page)
if ($page['id'] == $module['id']) {
?>
<a class="dropdown-item" href="<?php echo $page['ruta'] . ".php"; ?>">
<?php echo ucfirst(str_replace('_', ' ', $page['ruta'])); ?>
</a>
<?php
}
?>
</div>
</li>
<?php
}
?>
</ul>
</div>

42
import/html_scroll.php Normal file
View File

@@ -0,0 +1,42 @@
<?php
include_once "include/constantes.php";
?>
<a href="#top" id="scroll-up" class="btn btn-primary btn-sm" role="button" aria-pressed="true" style="display: none; position: fixed; bottom: 3rem; right: 1rem;">
<?= $ICO['arriba'] ?>
</a>
<!-- Scroll down -->
<a href="#bottom" id="scroll-down" class="btn btn-primary btn-sm" role="button" aria-pressed="true" style="display: none; position: fixed; bottom: 1rem; right: 1rem;">
<?= $ICO['abajo'] ?>
</a>
<script>
$(document).ready(function() {
$(window).scroll(function() {
if ($(this).scrollTop() > 100) {
$('#scroll-up').fadeIn();
} else {
$('#scroll-up').fadeOut();
}
if ($(this).scrollTop() < $(document).height() - $(window).height() - 100) {
$('#scroll-down').fadeIn();
} else {
$('#scroll-down').fadeOut();
}
});
$('#scroll-up').click(function() {
$("html, body").animate({
scrollTop: 0
}, 600);
return false;
});
$('#scroll-down').click(function() {
$("html, body").animate({
scrollTop: $(document).height()
}, 600);
return false;
});
});
</script>

73
import/periodo.php Normal file
View File

@@ -0,0 +1,73 @@
<!-- <script src="js/jquery.min.js"></script> -->
<?
$user or die("Error: no se pudo cargar el usuario");
?>
<form action="action/action_periodousuario_update.php" method="post" id="formaPeriodo" class="marco">
<div class="row">
<div class="col-12">
<?php
$target = $target ?? strtok($_SERVER["REQUEST_URI"], '?');
$niveles = $db
->orderBy('nivel_nombre')
->get("nivel");
// collect facultad_id's with facultad from $periodos
?>
<input type="hidden" name="target" value="<?= $target ?>">
<div class="form-box">
<div class="form-group row">
<label for="periodo" class="col-4 col-form-label">Cambiar de periodo</label>
<div class="col-6">
<div id="dlPeriodo" class="datalist datalist-select mb-1 w-100">
<div class="datalist-input">
Selecciona un periodo
</div>
<span class="icono ing-buscar"></span>
<ul style="display:none">
<?php
foreach ($niveles as $nivel) {
?>
<li data-id="<?= $nivel['nivel_id'] ?>" class="not-selectable disable">
<?= $nivel['nivel_nombre'] ?>
</li>
<?
$periodos_rs = $db->query('SELECT periodo_id, periodo_nombre FROM PERIODO_VIEW
WHERE
nivel_id = :nivel_id AND
(facultad_id = :facultad_id OR :facultad_id IS NULL)
GROUP BY periodo_id, periodo_nombre, periodo_fecha_inicio
ORDER BY periodo_fecha_inicio DESC',
[
':nivel_id' => $nivel['nivel_id'],
':facultad_id' => $user->facultad['facultad_id']
]
);
array_walk($periodos_rs, function ($per) {
global $user;
?>
<li data-id="<?= $per['periodo_id'] ?>" <?php if ($user->periodo_id == $per["periodo_id"]) {
echo 'class="selected"';
} ?>>
<?= $per['periodo_nombre'] ?>
</li>
<?php }); ?>
<?php } ?>
</ul>
<input type="hidden" id="periodo" name="id" value="">
</div>
</div>
</div>
</div>
</div>
</div>
</form>
<script src="./js/datalist.js"></script>
<script>
setDatalist('#periodo', <?= $user->periodo_id; ?>)
makeRequiredDatalist("#periodo", true);
$(document).on('click', '#dlPeriodo ul li:not(.not-selectable)', function () {
setTimeout(() => $('form#formaPeriodo').submit(), 0);
});
</script>