calendario.php 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790
  1. <?php
  2. require_once("../include/nocache.php");
  3. require_once("../include/constantes.php");
  4. require_once("../include/util.php");
  5. require_once("../include/bd_pdo.php");
  6. require_once("../classes/ValidaSesion.php");
  7. require_once("../classes/MainMenu.php");
  8. $menu = 5;
  9. $submenu = 57;
  10. //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  11. $objSesion = new ValidaSesion($pdo, $submenu, APSA);
  12. if(!$objSesion->tieneAcceso()){
  13. $objSesion->terminaSesion();
  14. }
  15. $objSesion->validaPeriodoUsuario();//si no tiene periodo manda a main
  16. ?>
  17. <!DOCTYPE html>
  18. <html lang="es" prefix="og: http://ogp.me/ns#">
  19. <head>
  20. <title>APSA - Facultad de Ingeniería</title>
  21. <meta charset="utf-8">
  22. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  23. <link rel="icon" type="image/png" href="../img/favicon.png" />
  24. <link rel="stylesheet" href="../css/bootstrap-ulsa.min.css" type="text/css">
  25. <link rel="stylesheet" href="../css/fa_all.css" type="text/css">
  26. <link rel="stylesheet" href="../css/indivisa.css" type="text/css">
  27. <?php if($objSesion->puedeEditar() ){ ?>
  28. <link rel="stylesheet" href="../css/jquery-ui.css" type="text/css">
  29. <link rel="stylesheet" href="../css/calendar.css" type="text/css">
  30. <link rel="stylesheet" href="../css/clockpicker.css" type="text/css">
  31. <link rel="stylesheet" href="../css/toggle.css" type="text/css">
  32. <link rel="stylesheet" href="../css/colpick.css" type="text/css">
  33. <?php }?>
  34. <link rel="stylesheet" href="./css/calendario_eventos.css?rand=<?php echo rand();?>" type="text/css">
  35. <link rel="stylesheet" href="../css/sgi.css?rand=<?php echo rand();?>" type="text/css">
  36. <script src="../js/util.js"></script>
  37. </head>
  38. <body>
  39. <div>
  40. <?php
  41. //--- Objeto que pinta menu
  42. $menuObj = new MainMenu($_SESSION["usuario_id"], $menu, $pdo, APSA, "Calendario Escolar &raquo; ".$_SESSION["periodo_desc"]);//usr, menu, pdo, sist
  43. $menuObj->printMenu();
  44. //Obtiene fechas de periodo
  45. $stmt = $pdo->prepare('Select * from fs_periodo(:periodo, NULL, NULL, true)');
  46. $stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
  47. if(!$stmt->execute()){
  48. //print_r($stmt->errorInfo());
  49. $errorDesc = "Ocurrió un error al cargar los datos del periodo";
  50. }else{
  51. $periodo_rs = $stmt->fetch();
  52. }
  53. $stmt->closeCursor();
  54. if($periodo_rs["Periodo_id"] !=""){
  55. //calcula limite de calendario de periodo
  56. $stmt = $pdo->prepare('Select * from fs_fechaimportante(:periodo, 3)');//periodo
  57. $stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
  58. if(!$stmt->execute()){
  59. $errorDesc = "Ocurrió un error al cargar las fechas del periodo";
  60. }else{
  61. $fecha_rs = $stmt->fetch();
  62. $fecha_min = date('d/m/Y', strtotime($fecha_rs["FechaImportante_inicial"].' - 1 month '));
  63. $fecha_max = date('d/m/Y', strtotime($fecha_rs["FechaImportante_final"].' + 1 month '));
  64. }
  65. $stmt->closeCursor();
  66. $stmt = null;
  67. //Perfiles de usuario actual
  68. $perfilUsr_arr = array();
  69. if(!$objSesion->puedeEditar() ){
  70. $stmt = $pdo->prepare('Select * from fs_esDirectivo(:usr)');//periodo
  71. $stmt->bindParam(":usr", $_SESSION["usuario_id"]);
  72. if($stmt->execute()){
  73. $rs = $stmt->fetch();
  74. if($rs["fs_esdirectivo"]){
  75. $perfilUsr_arr[]= "1";
  76. }
  77. }
  78. $stmt->closeCursor();
  79. if($_SESSION["administrativo"]){
  80. $perfilUsr_arr[]= "2";
  81. }
  82. if($_SESSION["profesor"]){
  83. $perfilUsr_arr[]= "3";
  84. }
  85. }
  86. //Obtiene perfiles
  87. $stmt = $pdo->prepare('Select * from fs_calendarioperfil()');
  88. if(!$stmt->execute()){
  89. //print_r($stmt->errorInfo());
  90. $errorDesc = "Ocurrió un error al cargar los perfiles del calendario";
  91. }else{
  92. $perfil_rs = $stmt->fetchAll();
  93. }
  94. $stmt->closeCursor();
  95. $stmt = null;
  96. //Obtiene repeticiones
  97. $stmt = $pdo->prepare('Select * from fs_calendariorepeticion()');
  98. if(!$stmt->execute()){
  99. //print_r($stmt->errorInfo());
  100. $errorDesc = "Ocurrió un error al cargar los tipos de repetición de eventos del calendario";
  101. }else{
  102. $rep_rs = $stmt->fetchAll();
  103. }
  104. $stmt->closeCursor();
  105. $stmt = null;
  106. //Obtiene categorías
  107. $stmt = $pdo->prepare('Select * from fs_calendariocategoria(NULL)');
  108. if(!$stmt->execute()){
  109. //print_r($stmt->errorInfo());
  110. $errorDesc = "Ocurrió un error al cargar las categorías de eventos del calendario";
  111. }else{
  112. $cat_rs = $stmt->fetchAll();
  113. }
  114. $stmt->closeCursor();
  115. $stmt = null;
  116. if(!isset($_POST["mes"])){
  117. /*$mes_actual = intval(date("n", strtotime($periodo_rs["Periodo_fecha_inicial"])));//mes sin 0s
  118. $anho_actual = intval(date("Y", strtotime($periodo_rs["Periodo_fecha_inicial"])));*/
  119. $mes_actual = date("n");
  120. $anho_actual = date("Y");
  121. if(strtotime($anho_actual."-".$mes_actual."-1") < strtotime(fechaGuion($fecha_min))){
  122. $mes_actual = intval(date("n", strtotime(fechaGuion($fecha_min))));//mes sin 0s
  123. $anho_actual = intval(date("Y", strtotime(fechaGuion($fecha_min))));
  124. }else if(strtotime($anho_actual."-".$mes_actual."-1") > strtotime(fechaGuion($fecha_max))){
  125. $mes_actual = intval(date("n", strtotime(fechaGuion($fecha_max))));//mes sin 0s
  126. $anho_actual = intval(date("Y", strtotime(fechaGuion($fecha_max))));
  127. }
  128. }else{
  129. $mes_actual = filter_input(INPUT_POST, "mes", FILTER_SANITIZE_NUMBER_INT);//limpia texto
  130. $anho_actual = filter_input(INPUT_POST, "anho", FILTER_SANITIZE_NUMBER_INT);//limpia texto
  131. }
  132. $dias_max = date("t", strtotime($anho_actual."-".$mes_actual."-1"));
  133. }else{
  134. $errorDesc = "Debes seleccionar un periodo.";
  135. }
  136. //--Manejo de errores y mensajes de exito
  137. if(isset($_GET["error"]) && is_numeric($_GET["error"])){
  138. switch ($_GET["error"]){
  139. case 0: $errorDesc = "No se reciberon los datos del evento."; break;
  140. case 1: $errorDesc = "Ocurrió un error al insertar los datos del evento."; break;
  141. case 2: $errorDesc = "Ocurrió un error al actualizar los datos del evento."; break;
  142. case 3: $errorDesc = "No tienes permisos para realizar esa acción."; break;
  143. }
  144. }
  145. if(isset($_GET["ok"]) && is_numeric($_GET["ok"])){
  146. switch ($_GET["ok"]){
  147. case 0: $successDesc = "El evento se guardó correctamente."; break;
  148. case 1: $successDesc = "El evento se actualizó correctamente."; break;
  149. }
  150. }
  151. ?>
  152. <div class="container-fluid marco pt-3">
  153. <?php include_once("../include/errorMessage.php"); ?>
  154. <?php include("../include/periodoCambio.php");?>
  155. <?php if($periodo_rs["Periodo_id"] !=""){?>
  156. <div class="row">
  157. <div class="col-6">
  158. <h4 class="mb-3 mayusculas">
  159. <?php if( $anho_actual."-".($mes_actual<10?"0".$mes_actual:$mes_actual)."-01" > fechaGuion($fecha_min)){?>
  160. <span class="pointer cambia-mes" data-mes="-1"><?php echo $ICO["izquierda"];?></span>
  161. <?php } ?>
  162. <?php echo mesNombre($mes_actual)." ".$anho_actual;?>
  163. <?php if( $anho_actual."-".($mes_actual+1<10?"0".($mes_actual+1):($mes_actual+1))."-01" < fechaGuion($fecha_max)){?>
  164. <span class="pointer cambia-mes" data-mes="1"><?php echo $ICO["derecha"];?></span>
  165. <?php } ?>
  166. </h4>
  167. </div>
  168. <div class="col-6 text-right">
  169. <?php if($objSesion->puedeEditar() ){ ?>
  170. <button type="button" class="btn btn-outline-primary calendario_nuevo"><?php echo $ICO["mas"];?> Crear evento</button>
  171. <?php } ?>
  172. <button type="button" class="btn btn-outline-secondary" data-toggle="modal" data-target="#modal_exportar" data-tipo="1"><?php echo $ICO["descargar"];?> Exportar</button>
  173. </div>
  174. </div>
  175. <?php
  176. $stmt = $pdo->prepare('Select * from fs_dia(NULL)');
  177. if(!$stmt->execute()){
  178. echo "Error al obtener los días";
  179. print_r($stmt->errorInfo());
  180. }
  181. $dias_rs = $stmt->fetchAll();
  182. $stmt->closeCursor();
  183. $stmt = null;
  184. /* Definidas en constantes.php
  185. HORA_INICIO = 7;
  186. HORA_FINAL = 22;
  187. FRACCION_HORA = 4;*/
  188. ?>
  189. <?php }?>
  190. </div>
  191. <main class="container-fluid content marco-wide">
  192. <?php if($periodo_rs["Periodo_id"] !=""){ ?>
  193. <form action="calendario.php" method="post" id="formaCalendario">
  194. <input type="hidden" name="mes" id="mes" value="<?php echo $mes_actual;?>">
  195. <input type="hidden" name="anho" id="anho" value="<?php echo $anho_actual;?>">
  196. <div class="mt-2 mb-2">
  197. <div class="row justify-content-md-center">
  198. <div class="col-md-auto">
  199. <table class="table table-sm table-responsive table-borderless calendario" id="tabla-horario">
  200. <thead class="thead-dark">
  201. <tr>
  202. <?php for($dia = 0; $dia < 7; $dia++){
  203. echo "<th style='text-transform: capitalize; width: 180px'>".diaNombre($dia)."</th>";
  204. } ?>
  205. </tr>
  206. </thead>
  207. <tbody id="calendario-body">
  208. <tr>
  209. <td colspan="7">
  210. <div class="area-horario">
  211. <table class="table table-borderless">
  212. <tbody>
  213. <?php
  214. $dia = 1;
  215. $cells = 0;
  216. $editable = "";
  217. if($objSesion->puedeEditar()) $editable = "editable";
  218. ?>
  219. <tr class="border-bottom">
  220. <?php
  221. //días antes de que empiece el mes
  222. $dia_inicio = date("w", strtotime($anho_actual."-".$mes_actual."-1"));//0 a 7
  223. $j=0;
  224. while($j < $dia_inicio){
  225. echo "<td class='bg-info cell' id='cell".$cells."' data-cell='".$cells."'>&nbsp;</td>";
  226. $cells++;
  227. $j++;
  228. }
  229. do{
  230. $dia_class = "border-primary bg-white";
  231. if(date('Y-n-j') == $anho_actual.'-'.$mes_actual.'-'.$dia){
  232. $dia_class = "border-white bg-danger text-white";
  233. }
  234. ?>
  235. <td style="width: 180px" id="dia<?php echo $dia;?>" class='cell <?php echo $editable;?>' data-cell="<?php echo $cells;?>" data-fecha="<?php echo date("d/m/Y", strtotime($anho_actual."-".$mes_actual."-".$dia)); ?>">
  236. <div class='date-num border rounded-pill mb-2 <?php echo $dia_class;?>'><?php echo $dia;?></div>
  237. <div class="calendario_eventos">
  238. </div>
  239. </td>
  240. <?php
  241. $cells++;
  242. $dia++;
  243. if($cells%7 == 0 && $cells > 0){//domingo
  244. echo '</tr><tr class="border-bottom">';
  245. }
  246. }while($dia <= $dias_max);
  247. $j=7 - $cells%7;
  248. while($j > 0 && $j<7){
  249. echo "<td class='bg-info'>&nbsp;</td>";
  250. $j--;
  251. }
  252. ?>
  253. </tr>
  254. </tbody>
  255. </table>
  256. <div id="bloque-horarios">
  257. </div>
  258. </div>
  259. </td>
  260. </tr>
  261. </tbody>
  262. </table>
  263. </div>
  264. </div>
  265. </div>
  266. </form>
  267. <!-- Referencia de colores -->
  268. <div class="row justify-content-md-center">
  269. <div class="col-12">
  270. <h5 class="mt-2">Categorías</h5>
  271. </div>
  272. <div class="col-12">
  273. <span class="tipo-area"><!--6ABF4B-->
  274. <span class="ico-border" style="color:#c99a0c"><?php echo $ICO["circulo"];?></span>
  275. Fechas del periodo
  276. </span>
  277. <span class="tipo-area">
  278. <span class="ico-border" style="color:#E470C0"><?php echo $ICO["circulo"];?></span>
  279. Exámenes extraordinarios
  280. </span>
  281. <?php foreach($cat_rs as $cat){ ?>
  282. <span class="tipo-area">
  283. <span class="ico-border" style="color:<?php echo $cat["CalendarioCategoria_color"]?>"><?php echo $ICO["circulo"];?></span>
  284. <?php echo $cat["CalendarioCategoria_desc"]?>
  285. <?php if($objSesion->puedeEditar() && $_SESSION["sgi_administrador"]){?>
  286. <span class="ing-editar ing-fw categoria_edita pointer" data-id="<?php echo $cat["CalendarioCategoria_id"]; ?>" data-color="<?php echo $cat["CalendarioCategoria_color"]?>" data-desc="<?php echo $cat["CalendarioCategoria_desc"]?>" aria-hidden="true" title="Editar"></span>
  287. <?php } ?>
  288. </span>
  289. <?php } ?>
  290. <?php if($objSesion->puedeEditar() && $_SESSION["sgi_administrador"]){?>
  291. <span class="tipo-area">
  292. <button class="btn btn-outline-secondary btn-sm mb-1" data-toggle="modal" data-target="#modal_categoria" data-nuevo="1"><?php echo $ICO["mas"];?> Agregar</button>
  293. </span>
  294. <?php } ?>
  295. </div>
  296. </div>
  297. <?php } ?>
  298. </main>
  299. <!--- FOOTER--->
  300. <?php require_once("../include/footer.php"); ?>
  301. <?php
  302. if($objSesion->puedeEditar() && $periodo_rs["Periodo_id"] !=""){
  303. ?>
  304. <!-- Modal -->
  305. <div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
  306. <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
  307. <div class="modal-content">
  308. <div class="modal-header">
  309. <h4 class="col-12 modal-title text-center"><span id="modalLabel">Evento de calendario</span>
  310. <button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
  311. <span aria-hidden="true">&times;</span>
  312. </button>
  313. </h4>
  314. </div>
  315. <div class="modal-body">
  316. <form action="#" method="post" id="formaModal"><!-- validaEvento() -->
  317. <input type="hidden" name="id_db" id="id_db">
  318. <div class="form-box form-box-info">
  319. <div class="form-group row">
  320. <label for="titulo" class="col-4 col-form-label">Título *</label>
  321. <div class="col-8">
  322. <input type="text" class="form-control" name="titulo" id="titulo" required="required" maxlength="60">
  323. </div>
  324. </div>
  325. <div class="form-group row">
  326. <label for="desc" class="col-4 col-form-label">Descripción</label>
  327. <div class="col-8">
  328. <textarea class="form-control" id="desc" name="desc" rows="5"></textarea>
  329. </div>
  330. </div>
  331. <div class="form-group row">
  332. <label for="categoria" class="col-4 col-form-label">Categoría *</label>
  333. <div class="col-6">
  334. <div class="datalist datalist-select mb-1 w-100" id="dlCategoria">
  335. <div class="datalist-input">1</div>
  336. <span class="ing-buscar icono"></span>
  337. <ul style="display:none">
  338. <?php foreach($cat_rs as $cat) {?>
  339. <li data-id="<?php echo $cat["CalendarioCategoria_id"];?>" data-color="<?php echo $cat["CalendarioCategoria_color"];?>"><?php echo $cat["CalendarioCategoria_desc"];?></li>
  340. <?php }?>
  341. </ul>
  342. <input type="hidden" id="categoria" name="categoria" value="0">
  343. </div>
  344. </div>
  345. <div class="col-2" id="categoria_color">
  346. <span class="ing-2x ico-border"><?php echo $ICO["circulo"];?></span>
  347. </div>
  348. </div>
  349. </div>
  350. <div class="form-box" id="programacion">
  351. <h5 class="mt-3 ml-5 font-weight-bold">Programación</h5>
  352. <div class="row form-group">
  353. <label for="fecha_inicial" class="col-4 col-form-label">Fecha inicial *</label>
  354. <div class="col-8">
  355. <input id="fecha_inicial" name="fecha_inicial" type="text" class="form-control date-picker" placeholder="dd/mm/aaaa" maxlength="10" required="required" readonly="readonly">
  356. </div>
  357. </div>
  358. <div class="row form-group">
  359. <label class="col-4 col-form-label" for="customSwitch1">Todo el día</label>
  360. <div class="col-8">
  361. <input type="checkbox" class="todo_dia" data-toggle="toggle" data-onstyle="primary" data-offstyle="info" data-on="Sí" data-off="No" id="todo_dia" name="todo_dia" value="1" data-width="50">
  362. </div>
  363. </div>
  364. <div class="form-group row" id="divHoras">
  365. <label for="horaIni" class="col-4 col-form-label">Hora *</label>
  366. <div class="col-1 my-auto text-center">de</div>
  367. <div class="col-3">
  368. <input class="form-control clock" id="hora_inicial" type="text" maxlength="5" data-autoclose="true" placeholder="hh:mm" maxlength="5" required="required" readonly="readonly" value="">
  369. </div>
  370. <div class="col-1 my-auto text-center">a</div>
  371. <div class="col-3 ">
  372. <input class="form-control clock" id="hora_final" type="text" maxlength="5" data-autoclose="true" placeholder="hh:mm" maxlength="5" required="required" readonly="readonly" value="">
  373. </div>
  374. </div>
  375. <div class="form-group row">
  376. <label for="repetir" class="col-4 col-form-label">Se repite *</label>
  377. <div class="col-4">
  378. <div class="datalist datalist-select mb-1 w-100" id="dlRepetir">
  379. <div class="datalist-input">1</div>
  380. <span class="ing-buscar icono"></span>
  381. <ul style="display:none">
  382. <li data-id="0">Fecha única</li>
  383. <?php foreach($rep_rs as $rep) {?>
  384. <li data-id="<?php echo $rep["CalendarioRepeticion_id"];?>"><?php echo $rep["CalendarioRepeticion_desc"];?></li>
  385. <?php }?>
  386. </ul>
  387. <input type="hidden" id="repetir" name="repetir" value="0">
  388. </div>
  389. </div>
  390. </div>
  391. <div class="row form-group rep-semana rep-mes" id="dias_block">
  392. <label for="dias" class="col-4 col-form-label">Los días *</label>
  393. <div class="col-8 px-5">
  394. <div class="d-flex justify-content-between ">
  395. <?php for($i=0; $i<7; $i++){
  396. $d = substr(diaNombre($i),0,1);
  397. ?>
  398. <input type="checkbox" name="dias[]" class="dias d-none" id="dia_<?php echo $i;?>" value="<?php echo $i;?>"/>
  399. <label class="btn-circle font-weight-bolder bg-info text-dark align-middle mb-0 mayusculas" for="dia_<?php echo $i;?>"><?php echo $d;?></label>
  400. <?php } ?>
  401. </div>
  402. <div class="text-danger text-80 d-none" id="dias_error">
  403. * Debes elegir al menos un día de la semana
  404. </div>
  405. </div>
  406. </div>
  407. <div class="form-group row rep-mes">
  408. <label for="de_semana" class="col-4 col-form-label">De la semana *</label>
  409. <div class="col-8">
  410. <div class="datalist datalist-select mb-1 w-100">
  411. <div class="datalist-input">1ra del mes</div>
  412. <span class="ing-buscar icono"></span>
  413. <ul style="display:none">
  414. <li data-id="1">1ra del mes</li>
  415. <li data-id="2">2da del mes</li>
  416. <li data-id="3">3ra del mes</li>
  417. <li data-id="4">4ta del mes</li>
  418. <li data-id="-1">última del mes</li>
  419. </ul>
  420. <input type="hidden" id="de_semana" name="de_semana" value="1">
  421. </div>
  422. </div>
  423. </div>
  424. <div class="row form-group rep-diario rep-semana rep-mes">
  425. <label for="fecha_final" class="col-4 col-form-label">Hasta la fecha *</label>
  426. <div class="col-8">
  427. <input id="fecha_final" name="fecha_final" type="text" class="form-control date-picker" placeholder="dd/mm/aaaa" maxlength="10" readonly="readonly">
  428. <div class="invalid-feedback">
  429. El rango de fechas es inválido.
  430. </div>
  431. </div>
  432. </div>
  433. </div>
  434. <!-- solo para editar evento -->
  435. <div class="form-box" id="fecha_cambio">
  436. <h5 class="my-3 ml-5 font-weight-bold">Fecha de esta repetición</h5>
  437. <input type="hidden" id="todo_dia_nueva" value="">
  438. <input type="hidden" id="fecha_original" value="">
  439. <div class="form-group row align-items-center">
  440. <label class="col-4 col-form-label">Cambiar fecha</label>
  441. <div class="col-4 col-md-3">
  442. <div class="form-check form-check-inline">
  443. <input class="form-check-input radio-lg" type="radio" id="cambio_fecha_no" name="cambio_fecha" value="0" checked="true">
  444. <label for="cambio_fecha_no" class="col-form-label">No</label>
  445. </div>
  446. </div>
  447. <div class="col-4 col-md-3">
  448. <div class="form-check form-check-inline">
  449. <input class="form-check-input radio-lg" type="radio" id="cambio_fecha_si" name="cambio_fecha" value="1">
  450. <label for="cambio_fecha_si" class="col-form-label">Sí</label>
  451. </div>
  452. </div>
  453. </div>
  454. <div class="row form-group">
  455. <label for="fecha_nueva" class="col-4 col-form-label">Fecha nueva *</label>
  456. <div class="col-8">
  457. <input id="fecha_nueva" name="fecha_nueva" type="text" class="form-control date-picker" placeholder="dd/mm/aaaa" maxlength="10" readonly="readonly">
  458. </div>
  459. </div>
  460. <div class="form-group row" id="divHoras_nueva">
  461. <label for="hora_inicial_nueva" class="col-4 col-form-label">Hora *</label>
  462. <div class="col-1 my-auto text-center">de</div>
  463. <div class="col-3">
  464. <input class="form-control clock" id="hora_inicial_nueva" type="text" maxlength="5" data-autoclose="true" placeholder="hh:mm" maxlength="5" readonly="readonly" value="">
  465. </div>
  466. <div class="col-1 my-auto text-center">a</div>
  467. <div class="col-3 ">
  468. <input class="form-control clock" id="hora_final_nueva" type="text" maxlength="5" data-autoclose="true" placeholder="hh:mm" maxlength="5" readonly="readonly" value="">
  469. </div>
  470. </div>
  471. </div>
  472. <div class="form-box form-box-info">
  473. <h5 class="mt-3 ml-5 font-weight-bold">Visibilidad</h5>
  474. <div class="form-group row align-items-center">
  475. <label class="col-4 col-form-label">Periodo *</label>
  476. <div class="col-4 ">
  477. <div class="form-check form-check-inline">
  478. <input class="form-check-input radio-lg" type="radio" id="periodo_actual" name="periodo_actual" value="<?php echo $_SESSION["periodo_id"];?>" checked="true">
  479. <label for="periodo_actual" class="col-form-label"><?php echo $periodo_rs["Periodo_desc"];?></label>
  480. </div>
  481. </div>
  482. <div class="col-4 ">
  483. <div class="form-check form-check-inline">
  484. <input class="form-check-input radio-lg" type="radio" id="periodo_no" name="periodo_actual" value="0">
  485. <label for="periodo_no" class="col-form-label">Todos</label>
  486. </div>
  487. </div>
  488. </div>
  489. <div class="form-group row">
  490. <label class="col-4 col-form-label">Visible para *</label>
  491. <div class="col-8 px-4 pt-2">
  492. <div class="d-flex justify-content-between ">
  493. <?php foreach($perfil_rs as $perfil){ ?>
  494. <div class="form-check form-check-inline">
  495. <input type="checkbox" name="perfil[]" class="perfil form-check-input radio-lg" id="perfil_<?php echo $perfil["CalendarioPerfil_id"];?>" checked="checked" value="<?php echo $perfil["CalendarioPerfil_id"];?>" />
  496. <label class="ml-1 col-form-label form-check-label" for="perfil_<?php echo $perfil["CalendarioPerfil_id"];?>"><?php echo $perfil["CalendarioPerfil_desc"];?></label>
  497. </div>
  498. <?php } ?>
  499. </div>
  500. <div class="text-danger text-80 d-none" id="perfil_error">
  501. * Debes elegir al menos un perfil
  502. </div>
  503. </div>
  504. </div>
  505. </div>
  506. <div class="form-group row">
  507. <div class="col-12 text-center">
  508. <button type="button" class="btn btn-outline-primary" id="submitBtn" data-nuevo="1"><?php echo $ICO["aceptar"];?> Guardar</button>
  509. <button type="reset" class="btn btn-outline-danger" data-dismiss="modal"><?php echo $ICO["cancelar"];?> Cancelar</button>
  510. </div>
  511. </div>
  512. </form>
  513. </div>
  514. </div>
  515. </div>
  516. </div>
  517. <div class="modal fade" id="modal_confirm" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
  518. <div class="modal-dialog modal-dialog-centered" role="document">
  519. <div class="modal-content">
  520. <div class="modal-body">
  521. <div class="row">
  522. <div class="col">
  523. <p><b>¿Qué deseas borrar?</b></p>
  524. <p>Una vez borrado el evento no se puede deshacer.</p>
  525. </div>
  526. </div>
  527. </div>
  528. <div class="modal-footer">
  529. <input type="hidden" id="id_borrar" value="">
  530. <div class="btn-group" role="group" aria-label="Borrar">
  531. <button type="button" class="btn btn-outline-primary bloque-borra" data-todos="false"><?php echo $ICO["borrar"];?> Este evento</button>
  532. <button type="button" class="btn btn-outline-primary bloque-borra" data-todos="true" id="btn-borra-todos"><?php echo $ICO["borrar2"];?> Toda la serie</button>
  533. </div>
  534. <button type="button" class="btn btn-outline-danger" data-dismiss="modal" aria-label="Close"><?php echo $ICO["cancelar"];?> Cancelar</button>
  535. </div>
  536. </div>
  537. </div>
  538. </div>
  539. <div class="modal fade" id="modal_categoria" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
  540. <div class="modal-dialog modal-dialog-centered" role="document">
  541. <div class="modal-content">
  542. <div class="modal-header">
  543. <h4 class="col-12 modal-title text-center"><span id="modalLabel">Categoría de evento</span>
  544. <button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
  545. <span aria-hidden="true">&times;</span>
  546. </button>
  547. </h4>
  548. </div>
  549. <div class="modal-body">
  550. <form action="#" method="post">
  551. <input type="hidden" name="cat_id" id="cat_id">
  552. <div class="form-box form-box-info">
  553. <div class="form-group row">
  554. <label for="cat_desc" class="col-4 col-form-label">Nombre *</label>
  555. <div class="col-8">
  556. <input type="text" class="form-control" name="cat_desc" id="cat_desc" required="required" maxlength="50">
  557. </div>
  558. </div>
  559. <div class="form-group row">
  560. <label for="cat_col" class="col-4 col-form-label">Color *</label>
  561. <div class="col-8">
  562. <input id="cat_col" name="cat_col" type="text" class="form-control" required="required" maxlength="7" value="#ffffff">
  563. </div>
  564. </div>
  565. </div>
  566. <div class="form-group row">
  567. <div class="col-12 text-center">
  568. <button type="button" class="btn btn-outline-primary" id="submitBtn_cat" data-nuevo="1"><?php echo $ICO["aceptar"];?> Guardar</button>
  569. <button type="reset" class="btn btn-outline-danger" data-dismiss="modal"><?php echo $ICO["cancelar"];?> Cancelar</button>
  570. </div>
  571. </div>
  572. </form>
  573. </div>
  574. </div>
  575. </div>
  576. </div>
  577. <?php } //fin puede editar ?>
  578. <!-- Modal Ver-->
  579. <div class="modal fade" id="modal_ver" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
  580. <div class="modal-dialog modal-dialog-centered" role="document">
  581. <div class="modal-content">
  582. <div class="modal-header">
  583. <h4 class="col-12 modal-title text-center"><span class="titulo">Datos del Evento</span>
  584. <button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
  585. <span aria-hidden="true">&times;</span>
  586. </button>
  587. </h4>
  588. </div>
  589. <div class="modal-body ">
  590. <div class="row mb-2">
  591. <div class="col-12 text-center">
  592. <p><span class="fecha">13</span> de <?php echo mesNombre($mes_actual)." de ".$anho_actual;?><br>
  593. <span class="hora">14:00 a 18:00</span></p>
  594. </div>
  595. </div>
  596. <p class="desc">Aquí va la descripción del evento</p>
  597. <p><span class="categoria_color ico-border"><?php echo $ICO["circulo"];?></span> <span class="categoria">Categoria X</span></p>
  598. <?php if($objSesion->puedeEditar() ){ ?>
  599. <ul class="list-inline" id="datos_perfil">
  600. <li class="list-inline-item perfil"><b>Visible para: </b></li>
  601. </ul>
  602. <?php } ?>
  603. </div>
  604. <div class="modal-footer bg-primary text-white py-0">
  605. <div class="container-fluid">
  606. <div class="row">
  607. <div class="col-12 text-right"><p class="my-0">Repeticiones: <span class="fechas_total"></span></p></div>
  608. </div>
  609. </div>
  610. </div>
  611. </div>
  612. </div>
  613. </div>
  614. <div class="modal fade" id="modal_exportar" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
  615. <div class="modal-dialog modal-dialog-centered" role="document">
  616. <div class="modal-content">
  617. <div class="modal-header">
  618. <h4 class="col-12 modal-title text-center"><span class="titulo"><?php echo $_SESSION["periodo_desc"];?></span>
  619. <button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
  620. <span aria-hidden="true">&times;</span>
  621. </button>
  622. </h4>
  623. </div>
  624. <div class="modal-body">
  625. <div class="row">
  626. <div class="col-12">
  627. <div>
  628. <?php
  629. if($objSesion->puedeEditar()){?>
  630. <p><b>¿Qué perfiles deseas exportar?</b></p>
  631. <?php foreach($perfil_rs as $perfil){ ?>
  632. <div class="form-check mx-4">
  633. <input type="checkbox" name="perfil[]" class="perfil form-check-input radio-lg" id="perfil_exporta_<?php echo $perfil["CalendarioPerfil_id"];?>" checked="checked" value="<?php echo $perfil["CalendarioPerfil_id"];?>" />
  634. <label class="ml-3 col-form-label form-check-label" for="perfil_exporta_<?php echo $perfil["CalendarioPerfil_id"];?>"><?php echo $perfil["CalendarioPerfil_desc"];?></label>
  635. </div>
  636. <?php
  637. }
  638. ?>
  639. <div class="text-danger text-80 d-none" id="perfil_exportar_error">
  640. * Debes elegir al menos un perfil
  641. </div>
  642. <?php
  643. }else{//no puede editar
  644. foreach($perfilUsr_arr as $perfil){?>
  645. <input type="hidden" name="perfil[]" class="perfil_hidden" value="<?php echo $perfil;?>">
  646. <?php }
  647. } //fin editar?>
  648. </div>
  649. </div>
  650. <div class="col-12" id="suscripcion_block">
  651. <p class="mt-3 mb-1"><b>URL de suscripción</b></p>
  652. <p>Copia el siguiente URL para suscribirte al calendario y obtener actualizaciones automáticas.</p>
  653. <div class="input-group">
  654. <div id="copy-box"></div>
  655. <input type="text" id="suscripcion_url" class="form-control texto-copiar" value="" readonly="true" data-periodo="<?php echo $_SESSION["periodo_id"]; ?>">
  656. <div class="input-group-append">
  657. <button class="btn btn-outline-primary btn-copiar" type="button" title="Copiar"><span class="ing-copiar"></span></button>
  658. </div>
  659. </div>
  660. </div>
  661. </div>
  662. </div>
  663. <div class="modal-footer">
  664. <form id="forma_exportar" method="post" action="./export/ical_calendario.php" target="_blank">
  665. <input type="hidden" id="perfiles_exportar" name="perfiles" value="">
  666. </form>
  667. <button type="button" class="btn btn-outline-primary btn-pdf"><span class="ing-imprimir ing-fw"></span> Descargar .pdf</button>
  668. <button type="button" class="btn btn-outline-primary btn-exportar"><?php echo $ICO["descargar"];?> Descargar .ical</button>
  669. <button type="button" class="btn btn-outline-danger" data-dismiss="modal" aria-label="Close"><?php echo $ICO["cancelar"];?> Cancelar</button>
  670. </div>
  671. </div>
  672. </div>
  673. </div>
  674. </div>
  675. <script src="../js/jquery.min.js"></script>
  676. <?php if($objSesion->puedeEditar() ){ ?>
  677. <script src="../js/jquery-ui.js"></script>
  678. <script src="../js/datepicker-es.js"></script>
  679. <script src="../js/clockpicker.js"></script>
  680. <script src="../js/toggle.js"></script>
  681. <script src="../js/colpick.js"></script>
  682. <?php } ?>
  683. <script src="../js/bootstrap/popper.min.js"></script>
  684. <script src="../js/bootstrap/bootstrap.min.js"></script>
  685. <script src="../js/fechas.js"></script>
  686. <script src="./js/calendario.js"></script>
  687. <script src="../js/sidebarmenu.js"></script>
  688. <script src="../js/datalist.js"></script>
  689. <script>
  690. setDatalist("#periodo", <?php echo $_SESSION["periodo_id"]; ?>);
  691. $(document).on('click', '#dlPeriodo ul li' ,function(){
  692. $("#formaPeriodo").submit();
  693. });
  694. </script>
  695. <?php if($periodo_rs["Periodo_id"] !=""){?>
  696. <script>
  697. var _periodo_fecha_inicial = "<?php echo fechaSlash($fecha_min); ?>";
  698. var _periodo_fecha_final = "<?php echo fechaSlash($fecha_max); ?>";
  699. var datepickerOptions = { dateFormat: "dd/mm/yy", minDate:_periodo_fecha_inicial, maxDate:_periodo_fecha_final, changeMonth: true, defaultDate: '<?php echo "01/".($mes_actual<10?"0".$mes_actual:$mes_actual)."/".$anho_actual; ?>' };
  700. var clasesObj = [];
  701. // var _reloadTime = 45; //en segundos, tiempo para refrescar horarios
  702. var _w = 180, _h = 150;//tamaño de bloques
  703. var _block_h = 34; //espaciado por cada elemento que colisiona
  704. var _reloadOnClose = false;
  705. var id_obj = 0; //id de objeto actual
  706. var _perfiles;
  707. <?php if($objSesion->puedeEditar() ){ ?>
  708. _perfiles = [1,2,3,4];
  709. <?php } else{ ?>
  710. _perfiles = [<?php echo implode(",", $perfilUsr_arr)?>];
  711. <?php } ?>
  712. </script>
  713. <?php if($objSesion->puedeEditar() ){ ?>
  714. <script src="./js/calendario_edicion.js?rand=<?php echo rand();?>"></script>
  715. <?php }else{//no editar ?>
  716. <script src="./js/calendario_read.js"></script>
  717. <?php
  718. }//fin on editar
  719. ?>
  720. <?php } ?>
  721. </body>
  722. </html>