syllabus2.php 62 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050
  1. <?php
  2. require_once("../include/constantes.php");
  3. require_once("../include/util.php");
  4. require_once("../include/bd_pdo.php");
  5. require_once("../classes/ValidaSesion.php");
  6. require_once("../classes/MainMenu.php");
  7. $menu = 2;
  8. $submenu = 25;
  9. //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  10. $objSesion = new ValidaSesion($pdo, $submenu, APSA);
  11. if(!$objSesion->tieneAcceso()){
  12. $objSesion->terminaSesion();
  13. }
  14. $objSesion->validaPeriodoUsuario();//si no tiene periodo manda a main
  15. //Obtiene materias de profesor
  16. if(empty($matArr[2])){
  17. $stmt = $pdo->prepare('Select * from fs_materiasprofesor(:per, :usr) ');
  18. }else{
  19. $stmt = $pdo->prepare('Select * from fs_materiasprofesor(:per, :usr) ');
  20. $stmt->bindParam(":sub", $matArr[2]);
  21. }
  22. $stmt->bindParam(":per", $_SESSION["periodo_id"]);
  23. $stmt->bindParam(":usr", $_SESSION["usuario_id"]);
  24. if(!$stmt->execute()){
  25. print_r($stmt->errorInfo());
  26. $errorDesc = "Ocurrió un error al cargar los planes de estudios";
  27. exit();
  28. }else
  29. $mat_rs = $stmt->fetchAll();
  30. $stmt = null;
  31. //-------
  32. function buscaVacacion($fecha, $vacacionesArr){
  33. $i=0;
  34. foreach($vacacionesArr as $vacacion){
  35. if ($vacacion["fecha"] == $fecha){
  36. return $i;
  37. }
  38. $i++;
  39. }
  40. return false;
  41. }
  42. function getSesiones($arr, $num){
  43. foreach($arr as $ses){
  44. if($ses["sesion"] == $num ){
  45. return $ses["subsesiones"];
  46. }
  47. }
  48. return array();
  49. }
  50. //------------
  51. if(isset($_POST["materia"])){
  52. $filter_mat = $_POST["materia"];
  53. $filter_materia_nom = $_POST["materia_nom"];
  54. $matArr = explode("_",$filter_mat);
  55. if(empty($matArr[2])){
  56. $stmt = $pdo->prepare('Select * from fs_syllabus(:periodo, :prof, :mat, :gpo, NULL )');
  57. }else{
  58. $stmt = $pdo->prepare('Select * from fs_syllabus(:periodo, :prof, :mat, :gpo, :sub )');
  59. $stmt->bindParam(":sub", $matArr[2]);
  60. }
  61. $stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
  62. $stmt->bindParam(":prof", $_SESSION["usuario_id"]);
  63. $stmt->bindParam(":mat", $matArr[0]);
  64. $stmt->bindParam(":gpo", $matArr[1]);
  65. if(!$stmt->execute()){
  66. //print_r($stmt->errorInfo());
  67. $errorDesc = "Ocurrió un error al cargar los datos del sýllabus";
  68. }else{
  69. $syllabus_rs = $stmt->fetch();
  70. }
  71. $stmt->closeCursor();
  72. //Obtiene grupos
  73. $query = "";
  74. //---Tipo de sesiones plan cátedra
  75. $stmt = $pdo->prepare('Select * from fs_sesioncatedra_tipo(NULL)');
  76. if(!$stmt->execute()){
  77. //print_r($stmt->errorInfo());
  78. $errorDesc = "Ocurrió un error al cargar los días de las materias";
  79. }else{
  80. $tipoSesionArr = $stmt->fetchAll();
  81. }
  82. $stmt->closeCursor();
  83. $stmt = null;
  84. //-------------------------
  85. //Obtiene materias de profesor
  86. if(empty($matArr[2])){
  87. $stmt = $pdo->prepare('Select * from fs_materiadias(:usr, :mat, :gpo, NULL)');
  88. }else{
  89. $stmt = $pdo->prepare('Select * from fs_materiadias(:usr, :mat, :gpo, :sub)');
  90. $stmt->bindParam(":sub", $matArr[2]);
  91. }
  92. $stmt->bindParam(":usr", $_SESSION["usuario_id"]);
  93. $stmt->bindParam(":mat", $matArr[0]);
  94. $stmt->bindParam(":gpo", $matArr[1]);
  95. if(!$stmt->execute()){
  96. //print_r($stmt->errorInfo());
  97. $errorDesc = "Ocurrió un error al cargar los días de las materias";
  98. }else{
  99. $rs = $stmt->fetchAll();
  100. $diasMatArr = array();
  101. foreach($rs as $dia){
  102. $diasMatArr[] = array( "dia"=> $dia["Dia_id"], "hora"=>substr($dia["Horario_hora"],0, 5));
  103. }
  104. }
  105. $stmt->closeCursor();
  106. $stmt = null;
  107. //-------------------------
  108. //Obtiene fechas de periodo
  109. $stmt = $pdo->prepare('Select * from fs_periodo(:periodo, NULL, NULL, true)');
  110. $stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
  111. if(!$stmt->execute()){
  112. //print_r($stmt->errorInfo());
  113. $errorDesc = "Ocurrió un error al cargar los datos del periodo";
  114. }else{
  115. $periodo_rs = $stmt->fetch();
  116. }
  117. $stmt->closeCursor();
  118. /*$eventoObj = new Evento(0, "Inicio de cursos","",0, "Fechas importantes", PERIODO_COLOR, $_SESSION["periodo_id"], $periodo_rs["Periodo_fecha_inicial"], true,"","", false);
  119. $eventoObj->addFecha($periodo_rs["Periodo_fecha_inicial"]);
  120. $eventos_display = array_merge($eventos_display, $eventoObj->getEventList($mes, $anho));
  121. $eventoObj = new Evento(0, "Fin de cursos","",0, "Fechas importantes", PERIODO_COLOR, $_SESSION["periodo_id"], $periodo_rs["Periodo_fecha_final"], true,"","", false);
  122. $eventoObj->addFecha($periodo_rs["Periodo_fecha_final"]);
  123. $eventos_display = array_merge($eventos_display, $eventoObj->getEventList($mes, $anho));*/
  124. $fecha_min = $periodo_rs["Periodo_fecha_inicial"];
  125. $fecha_max = $periodo_rs["Periodo_fecha_final"];
  126. // Obtiene fechas de vacaciones
  127. $stmt = $pdo->prepare('select * from fs_calendarioevento_categoria(:fini, :ffin, 2)');
  128. $stmt->bindParam(":fini", $fecha_min);
  129. $stmt->bindParam(":ffin", $fecha_max);
  130. if(!$stmt->execute()){
  131. $errorDesc = "Ocurrió un error al cargar las fechas de vacaciones";
  132. }else{
  133. $vacaciones_rs = $stmt->fetchAll();
  134. }
  135. $stmt->closeCursor();
  136. $stmt = null;
  137. $vacacionesArr = array();//Guarda los días individuales de vacaciones
  138. foreach($vacaciones_rs as $evento){
  139. $fecha = fechaGuion($evento["CalendarioEvento_fecha"]);
  140. switch($evento["CalendarioRepeticion_id"]){
  141. case 1: //diario
  142. while (strtotime($fecha) <= strtotime($evento["CalendarioReglas_fecha_final"])) {
  143. $vacacionesArr[] = array("fecha"=> $fecha, "titulo"=>$evento["CalendarioEvento_titulo"]);
  144. $fecha = date ("Y-m-d", strtotime("+1 day", strtotime($fecha)));
  145. }
  146. break;
  147. case 2: //semanal
  148. $diasArr = explode(",", $evento["CalendarioReglas_dias_str"]);
  149. while (strtotime($fecha) <= strtotime($evento["CalendarioReglas_fecha_final"])) {
  150. if(in_array(date("w", strtotime($fecha)), $diasArr) ){//si es el día que quiero
  151. $vacacionesArr[] = array("fecha"=> $fecha, "titulo"=>$evento["CalendarioEvento_titulo"]);
  152. }
  153. $fecha = date ("Y-m-d", strtotime("+1 day", strtotime($fecha)));
  154. }
  155. break;
  156. case 3://mensual
  157. $diasArr = explode(",", $evento["CalendarioReglas_dias_str"]);
  158. //reglas
  159. $weekTxt = array(1=>"first", 2=>"second", 3=>"third", 4=>"fourth", -1=>"last");
  160. $dayname = array("sun", "mon", "tue", "wed", "thu", "fri", "sat");
  161. $fecha = date ("Y-m-01", strtotime($fecha));//empieza a revisar en el primer día del mes
  162. $semana = $evento["CalendarioReglas_semana"];
  163. while (strtotime($fecha) <= strtotime($evento["CalendarioReglas_fecha_final"])) {
  164. foreach($diasArr as $d){
  165. //echo "-->". intval(date("w", strtotime($fecha)))." == ". intval($d)."[".$fecha."]";
  166. if($semana == 1 && intval(date("w", strtotime($fecha))) == intval($d) ){//si el día actual es el que quiero lo guarda
  167. $vacacionesArr[] = array("fecha"=> $fecha, "titulo"=>$evento["CalendarioEvento_titulo"]);
  168. }else{//si no calcula siguiente día
  169. if(intval(date("w", strtotime($fecha))) == intval($d)){
  170. $fechaTmp = date ("Y-m-d", strtotime($weekTxt[$semana-1]." ".$dayname[$d], strtotime($fecha)));
  171. }else{
  172. $fechaTmp = date ("Y-m-d", strtotime($weekTxt[$semana]." ".$dayname[$d], strtotime($fecha)));
  173. }
  174. $vacacionesArr[] = array("fecha"=> $fecha, "titulo"=>$evento["CalendarioEvento_titulo"]);
  175. }
  176. }
  177. $fecha = date ("Y-m-01", strtotime("+1 month", strtotime($fecha)));//siguiente mes primer día
  178. }
  179. break;
  180. default: //no se repite
  181. $vacacionesArr[] = array("fecha"=> $fecha, "titulo"=>$evento["CalendarioEvento_titulo"]);
  182. }
  183. }
  184. $MESES = array(1=>"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
  185. $DIAS = array("Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado");
  186. $calendario = array();
  187. $fechasArr = array();
  188. $fecha = $fecha_min;
  189. $semOld=1;
  190. //$semana_ini = date("W", strtotime($fecha));
  191. $cont = 0;
  192. while (strtotime($fecha) <= strtotime($fecha_max)) {
  193. if(date("w", strtotime($fecha)) == $diasMatArr[$cont%count($diasMatArr)]["dia"]) {//si es el día que quiero
  194. if($semOld != floor($cont/count($diasMatArr))+1){
  195. $sem = floor($cont/count($diasMatArr))+1;
  196. $semOld = $sem;
  197. $calendario[] = array("semana"=>$sem-1, "fechas"=>$fechasArr);
  198. $mes_old = $nmes;
  199. $fechasArr = array();
  200. }
  201. $vacPos = buscaVacacion($fecha, $vacacionesArr);
  202. if($vacPos === false){
  203. $fechasArr[] = array("numSesion"=>$cont+1, "fecha"=>fechaSlash($fecha)." ".$diasMatArr[$cont%count($diasMatArr)]["hora"], "habil"=>true, "dia"=>$DIAS[date("w", strtotime($fecha))-1], "titulo"=>"");
  204. $cont++;
  205. //Si el día de la fecha no es el día del siguiente evento O se reinicia el arreglo de días
  206. if(date("w", strtotime($fecha)) != $diasMatArr[$cont%count($diasMatArr)]["dia"] || $cont%count($diasMatArr)==0){
  207. $fecha = date ("Y-m-d", strtotime("+1 day", strtotime($fecha)));
  208. }
  209. }else{
  210. $fechasArr[] = array("numSesion"=> 0,"fecha"=>fechaSlash($fecha), "habil"=>false, "dia"=>$DIAS[date("w", strtotime($fecha))-1], "titulo"=>$vacacionesArr[$vacPos]["titulo"]);
  211. $fecha = date ("Y-m-d", strtotime("+1 day", strtotime($fecha)));
  212. }
  213. }else{
  214. $fecha = date ("Y-m-d", strtotime("+1 day", strtotime($fecha)));
  215. }
  216. }
  217. if($semOld != floor($cont/count($diasMatArr))){
  218. $sem = floor($cont/count($diasMatArr))+1;
  219. }else{
  220. $sem = floor($cont/count($diasMatArr));
  221. }
  222. $calendario[] = array("semana"=>$sem, "fechas"=>$fechasArr);
  223. //print_r($vacacionesArr); echo "<hr>";
  224. //print_r($calendario); exit();
  225. //---Obtiebe contenido de sesiones plan cátedra
  226. //echo "Select * from fs_sesioncatedra({$matArr[0]}, {$_SESSION["usuario_id"]}, {$matArr[1]}, NULL, NULL)";
  227. if(empty($matArr[2])){
  228. $stmt = $pdo->prepare('Select * from fs_sesioncatedra(:mat, :usr, :gpo, NULL, NULL)');
  229. }else{
  230. $stmt = $pdo->prepare('Select * from fs_sesioncatedra(:mat, :usr, :gpo, :sub, NULL)');
  231. $stmt->bindParam(":sub", $matArr[2]);
  232. }
  233. $stmt->bindParam(":usr", $_SESSION["usuario_id"]);
  234. $stmt->bindParam(":mat", $matArr[0]);
  235. $stmt->bindParam(":gpo", $matArr[1]);
  236. if(!$stmt->execute()){
  237. //print_r($stmt->errorInfo());
  238. $errorDesc = "Ocurrió un error al cargar las sesiones del plan de cátedra";
  239. }else{
  240. $rs = $stmt->fetchAll();
  241. $sesionesArr = array();
  242. $ses_old = -1;
  243. $subsesionArr = array();
  244. $i = -1;
  245. foreach($rs as $ses){
  246. if($ses_old != $ses["SesionCatedra_numero"]){
  247. $i++;
  248. $sesionesArr[$i]=array("sesion"=>$ses["SesionCatedra_numero"], "subsesiones"=>array());
  249. $ses_old = $ses["SesionCatedra_numero"];
  250. }
  251. $sesionesArr[$i]["subsesiones"][] = array("desc"=>$ses["SesionCatedra_desc"], "tipo_id"=>$ses["SesionCatedraTipo_id"], "tipo"=>$ses["SesionCatedraTipo_desc"], "color"=>$ses["SesionCatedraTipo_color"]);
  252. //$diasMatArr[] = array( "dia"=> $dia["Dia_id"], "hora"=>substr($dia["Horario_hora"],0, 5));
  253. }
  254. }
  255. //print_r($sesionesArr); exit();
  256. $stmt->closeCursor();
  257. $stmt = null;
  258. }
  259. ?>
  260. <!DOCTYPE html>
  261. <html lang="es" prefix="og: http://ogp.me/ns#">
  262. <head>
  263. <title>APSA - Facultad de Ingeniería</title>
  264. <meta charset="utf-8">
  265. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  266. <link rel="icon" type="image/png" href="../img/favicon.png" />
  267. <link rel="stylesheet" href="../css/bootstrap-ulsa.min.css" type="text/css">
  268. <link rel="stylesheet" href="../css/indivisa.css" type="text/css">
  269. <link rel="stylesheet" href="../css/sgi.css?rand=<?php echo rand();?>" type="text/css">
  270. <link rel="stylesheet" href="../css/fa_all.css" type="text/css">
  271. <link rel="stylesheet" href="../css/jquery-ui.css" type="text/css">
  272. <link rel="stylesheet" href="../css/calendar.css" type="text/css">
  273. <link rel="stylesheet" href="./css/richtext.css" type="text/css">
  274. <script src="../js/util.js"></script>
  275. <style>
  276. .wizard { height: 20px; width: 80%; background: #D0D0D0; }
  277. .wizard.full { background: #D0D0D0; }
  278. .wizard.active > div:first-child { background: #00A6CE; }
  279. .wizard.active > div:last-child { width: 0px; height: 0px; border-style: solid; border-width: 10px 0 10px 6px; border-color: transparent transparent transparent #00a6ce; transform: rotate(0deg); }
  280. </style>
  281. </head>
  282. <body>
  283. <div>
  284. <?php
  285. //--- Objeto que pinta menu
  286. $menuObj = new MainMenu($_SESSION["usuario_id"], $menu, $pdo, APSA, "Syllabus de materias");//usr, menu, pdo, sist
  287. $menuObj->printMenu();
  288. //--Manejo de errores y mensajes de exito
  289. if(isset($_GET["error"]) && is_numeric($_GET["error"])){
  290. switch ($_GET["error"]){
  291. case 0: $errorDesc = "No se reciberon los datos."; break;
  292. case 1: $errorDesc = "Ocurrió un error al insertar los datos del syllabus."; break;
  293. case 2: $errorDesc = "No tienes permisos para realizar esa acción."; break;
  294. case 3: $errorDesc = "Ocurrió un error al cargar los datos del syllabus."; break;
  295. }
  296. }
  297. if(isset($_GET["ok"]) && is_numeric($_GET["ok"])){
  298. switch ($_GET["ok"]){
  299. case 0: $successDesc = "El syllaubus se actualizó correctamente."; break;
  300. case 1: $successDesc = "El plan de cátedra se actualizó correctamente."; break;
  301. }
  302. }
  303. ?>
  304. <main class="container-fluid content marco">
  305. <?php if($objSesion->puedeEditar() && duracionMinutos(date("Y-m-d H:i:00"), $periodo_rs["Periodo_fecha_final"] ) > 0){ ?>
  306. <div class="row mb-3">
  307. <div class="col-12 text-right">
  308. <button type="button" class="btn btn-outline-secondary abrir-modal" data-tipo="1"><?php echo $ICO["mas"];?> Crear reposición</button>
  309. </div>
  310. </div>
  311. <?php }?>
  312. <?php include_once("../include/errorMessage.php");?>
  313. <?php include("../include/periodoCambio.php");?>
  314. <!-- Filtro -->
  315. <div class="row">
  316. <div class="col-12">
  317. <form action="syllabus.php" method="post">
  318. <input type="hidden" id="filter_materia_nom" name="materia_nom" value="<?php if(isset($filter_materia_nom)) echo $filter_materia_nom;?>">
  319. <div class="form-box form-box-info">
  320. <div class="form-group row">
  321. <label for="filter_materia" class="col-4 col-form-label">Materia y grupo</label>
  322. <div class="col-6">
  323. <div class="datalist datalist-select mb-1 w-100" id="dlMateria">
  324. <div class="datalist-input">Mostrar todas</div>
  325. <span class="ing-buscar icono"></span>
  326. <ul style="display:none">
  327. <?php foreach($mat_rs as $mat) { ?>
  328. <li data-id="<?php echo $mat["Materia_id"]."_".$mat["Grupo_id"]."_".$mat["Submateria_id"];?>" <?php if(isset($filter_mat) && $filter_mat == ($mat["Materia_id"]."_".$mat["Grupo_id"]."_".$mat["Submateria_id"])){
  329. echo "class='selected'";}?> ><?php echo $mat["Materia_desc"]." - ".$mat["Grupo_desc"].$mat["Carrera_prefijo"];?></li>
  330. <?php }?>
  331. </ul>
  332. <input type="hidden" id="filter_materia" name="materia" value="">
  333. </div>
  334. </div>
  335. </div>
  336. </div>
  337. <div class="form-group row">
  338. <div class="col-12 text-center">
  339. <button type="submit" class="btn btn-outline-primary"><?php echo $ICO["buscar"]; ?> Ver Syllabus</button>
  340. <!--<button type="button" class="btn btn-outline-danger btn-reset"><?php echo $ICO["borrar"]?> Limpiar</button>-->
  341. </div>
  342. </div>
  343. </form>
  344. </div>
  345. </div>
  346. <?php if(isset($_POST["materia"])){ ?>
  347. <div class="mb-3"><a href="#" data-toggle="modal" data-target="#modal" class="btn btn-outline-secondary"><span class="ing-copiar"></span> Copiar datos desde...</a></div>
  348. <ul class="nav nav-tabs d-print-none mb-4" id="myTab" role="tablist">
  349. <li class="nav-item">
  350. <a class="nav-link active" id="tab1-tab" data-toggle="tab" href="#tab1" role="tab" aria-controls="syllabus" aria-selected="true">Syllabus</a>
  351. </li>
  352. <li class="nav-item">
  353. <a class="nav-link" id="tab2-tab" data-toggle="tab" href="#tab2" role="tab" aria-controls="plan" aria-selected="false">Plan de cátedra</a>
  354. </li>
  355. </ul>
  356. <div class="tab-content" id="TabContent">
  357. <div class="tab-pane fade show active" id="tab1" role="tabpanel" aria-labelledby="tab1-tab">
  358. <?php if (isset($syllabus_rs)){ ?>
  359. <div class="d-flex mt-5 mb-4">
  360. <div class="flex-grow-1"><h2 class="font-weight-bold subtitle pr-2"><?php echo $filter_materia_nom;?></h2> </div>
  361. <div class="">
  362. <form action="./export/pdf_syllabus.php" target="_blank" method="post">
  363. <input type="hidden" name="mat" value="<?php echo $matArr[0];?>">
  364. <input type="hidden" name="gpo" value="<?php echo $matArr[1];?>">
  365. <input type="hidden" name="sub" value="<?php if (isset($matArr[2])){ echo $matArr[2];}?>">
  366. <button type="submit" class="btn btn-outline-secondary"><?php echo $ICO["descargar"];?>Descargar pdf</button>
  367. </form>
  368. </div>
  369. </div>
  370. <div class="row">
  371. <div class="col-12" id="accordion">
  372. <form action="./action/syllabus_insert.php" method="post" id="formaSyllabus">
  373. <input type="hidden" value="<?php echo $filter_mat; ?>" name="materia">
  374. <div class="form-box py-0 px-3 mb-0">
  375. <div class="form-group row bg-light mb-0 py-4 rounded-top">
  376. <label for="texto" class="col-3 col-form-label">Información general *</label>
  377. <div class="col-9">
  378. <textarea name="info" id="info" class="richtext" rows="4"><?php echo $syllabus_rs["Syllabus_desc"];?></textarea>
  379. </div>
  380. </div>
  381. </div>
  382. <h4 class="text-primary mb-0 alert-heading bg-light py-3 pl-5 pr-3 rounded ">
  383. <a data-toggle="collapse" href="#collapseInfo" role="button" aria-expanded="true" aria-controls="collapseExample" class="d-block">
  384. <i class="ing-caret ing-fw float-right"></i>INFORMACIÓN DE LA ASIGNATURA
  385. </a>
  386. </h4>
  387. <div class="form-box collapse show py-4 px-3 mb-0 border-light border" id="collapseInfo" data-parent="#accordion">
  388. <div class="form-group row">
  389. <label for="texto" class="col-3 col-form-label">Descripción *</label>
  390. <div class="col-9">
  391. <textarea name="desc" id="desc" class="richtext" rows="5"><?php echo $syllabus_rs["Syllabus_desc"];?></textarea>
  392. </div>
  393. </div>
  394. <div class="form-group row">
  395. <label for="texto" class="col-3 col-form-label">Objetivos *</label>
  396. <div class="col-9">
  397. <textarea name="obj" id="obj" class="richtext" rows="5"><?php echo $syllabus_rs["Syllabus_obj"];?></textarea>
  398. </div>
  399. </div>
  400. <div class="form-group row">
  401. <label for="texto" class="col-3 col-form-label">Capacidades y habilidades que desarrollar *</label>
  402. <div class="col-9">
  403. <textarea name="capacidades" id="capacidades" class="richtext" rows="5"><?php echo $syllabus_rs["Syllabus_capacidades"];?></textarea>
  404. </div>
  405. </div>
  406. <div class="form-group row">
  407. <label for="texto" class="col-3 col-form-label">Prerrequisitos *</label>
  408. <div class="col-9">
  409. <textarea name="prerrequisitos" id="prerrequisitos" class="richtext" rows="5"><?php echo $syllabus_rs["Syllabus_prerrequisitos"];?></textarea>
  410. </div>
  411. </div>
  412. <div class="form-group row">
  413. <label for="texto" class="col-3 col-form-label">Temario *</label>
  414. <div class="col-9">
  415. <textarea name="temario" id="temario" class="richtext-table" rows="15"><?php echo $syllabus_rs["Syllabus_temario"];?></textarea>
  416. </div>
  417. </div>
  418. <div class="form-group row">
  419. <label for="texto" class="col-3 col-form-label">Construcción de la calificación final *</label>
  420. <div class="col-9">
  421. <textarea name="calificacion" id="calificacion" class="richtext-table" rows="10"><?php echo $syllabus_rs["Syllabus_calificacion"];?></textarea>
  422. </div>
  423. </div>
  424. <div class="form-group row">
  425. <label for="texto" class="col-3 col-form-label">Fechas importantes *</label>
  426. <div class="col-9">
  427. <textarea name="fechas" id="fechas" class="richtext-table" rows="10"><?php echo $syllabus_rs["Syllabus_fechas"];?></textarea>
  428. </div>
  429. </div>
  430. </div>
  431. <h4 class="text-primary mb-0 alert-heading bg-light py-3 pl-5 pr-3 rounded "ah >
  432. <a class="collapsed d-block" data-toggle="collapse" href="#collapseLin" role="button" aria-expanded="false" aria-controls="collapseExample">
  433. <i class="ing-caret ing-fw float-right"></i>LINEAMIENTOS GENERALES</a>
  434. </h4>
  435. <div class="form-box collapse py-4 px-3 mb-0 border-light border" id="collapseLin" data-parent="#accordion">
  436. <div class="form-group row">
  437. <label for="texto" class="col-3 col-form-label">De la asistencia y puntualidad *</label>
  438. <div class="col-9">
  439. <textarea name="asistencia" id="asistencia" class="richtext" rows="15"><?php echo $syllabus_rs["Syllabus_asistencia"];?></textarea>
  440. </div>
  441. </div>
  442. <div class="form-group row">
  443. <label for="texto" class="col-3 col-form-label">Del comportamiento en clase *</label>
  444. <div class="col-9">
  445. <textarea name="comportamiento" id="comportamiento" class="richtext" rows="15"><?php echo $syllabus_rs["Syllabus_comportamiento"];?></textarea>
  446. </div>
  447. </div>
  448. <div class="form-group row">
  449. <label for="texto" class="col-3 col-form-label">De los exámenes *</label>
  450. <div class="col-9">
  451. <textarea name="examenes" id="examenes" class="richtext" rows="15"><?php echo $syllabus_rs["Syllabus_examenes"];?></textarea>
  452. </div>
  453. </div>
  454. <div class="form-group row">
  455. <label for="texto" class="col-3 col-form-label">De las tareas, prácticas y exposiciones *</label>
  456. <div class="col-9">
  457. <textarea name="tareas" id="tareas" class="richtext" rows="15"><?php echo $syllabus_rs["Syllabus_tareas"];?></textarea>
  458. </div>
  459. </div>
  460. <div class="form-group row">
  461. <label for="texto" class="col-3 col-form-label">Trabajos de investigación *</label>
  462. <div class="col-9">
  463. <textarea name="investigacion" id="investigacion" class="richtext" rows="15"><?php echo $syllabus_rs["Syllabus_investigacion"];?></textarea>
  464. </div>
  465. </div>
  466. </div>
  467. <h4 class="text-primary mb-0 alert-heading bg-light py-3 pl-5 pr-3 rounded "ah >
  468. <a class="collapsed d-block" data-toggle="collapse" href="#collapseBib" role="button" aria-expanded="false" aria-controls="collapseExample">
  469. <i class="ing-caret ing-fw float-right"></i>BIBLIOGRAFÍA</a>
  470. </h4>
  471. <div class="form-box collapse py-4 px-3 mb-0 border-light border" id="collapseBib" data-parent="#accordion">
  472. <div class="form-group row">
  473. <label for="texto" class="col-3 col-form-label">Bibliografía recomendada *</label>
  474. <div class="col-9">
  475. <textarea name="bibliografia" id="bibliografia" class="richtext" rows="15"><?php echo $syllabus_rs["Syllabus_bibliografia"];?></textarea>
  476. </div>
  477. </div>
  478. </div>
  479. <div class="form-group row mt-4">
  480. <div class="col-12 text-center">
  481. <button type="button" class="btn btn-outline-primary" id="submitBtn" data-tipo="1"><?php echo $ICO["aceptar"];?> Guardar Syllabus</button>
  482. </div>
  483. </div>
  484. </form>
  485. </div>
  486. </div>
  487. <?php } ?>
  488. </div>
  489. <!-- Plan de cátedra -->
  490. <div class="tab-pane fade" id="tab2" role="tabpanel" aria-labelledby="tab2-tab">
  491. <div id="plan_catedra">
  492. <div class="row mb-4">
  493. <label for="semana" class="col-4 col-form-label text-right barra-right font-weight-bold">Ir a semana</label>
  494. <div class="col-8 col-md-3">
  495. <select id="secciones" class="custom-select">
  496. <?php for($i = 1; $i<=$sem; $i++){?>
  497. <option value="s<?php echo $i;?>">Semana <?php echo $i;?></option>
  498. <?php } ?>
  499. </select>
  500. <!--<div class="datalist datalist-select mb-1 w-100" id="dlSemana">
  501. <div class="datalist-input">Selecciona una semana</div>
  502. <span class="ing-buscar icono"></span>
  503. <ul style="display:none">
  504. <?php for($i = 1; $i<=$sem; $i++){?>
  505. <li data-id="<?php echo $i;?>"><a href="#s<?php echo $i;?>">Semana <?php echo $i;?></a></li>
  506. <?php } ?>
  507. </ul>
  508. <input type="hidden" id="semana" name="semana" value="">
  509. </div>-->
  510. </div>
  511. </div>
  512. <?php
  513. $first = true;
  514. foreach($calendario as $semana){ ?>
  515. <h4 class="text-primary mb-0 alert-heading bg-light py-3 pl-5 pr-3 rounded " id="s<?php echo $semana["semana"];?>">
  516. <?php echo "Semana ".$semana["semana"];?><span class="float-right top pointer" title="Ir hasta arriba" style="font-size:11pt;color:#666;">Subir <span class="ing-caret ing-rotate-180"></span></span></small>
  517. </h4>
  518. <div class="row border-bottom py-3">
  519. <?php foreach($semana["fechas"] as $dia){ ?>
  520. <?php if($dia["habil"]){ ?>
  521. <div class="col-4" data-sesion_num="<?php echo $dia["numSesion"];?>" >
  522. <div class="col-2 text-center ">
  523. <p class="font-weight-bold">Sesión <?php echo $dia["numSesion"];?></p>
  524. </div>
  525. <div class="col-10 sesion-box" data-sesion="<?php echo $dia["numSesion"];?>">
  526. <p class="mb-1"><?php echo $dia["dia"]." ".fechaTexto($dia["fecha"]);?></p>
  527. <?php $sesArr = getSesiones($sesionesArr, $dia["numSesion"]);
  528. if( count($sesArr)==0){
  529. ?>
  530. <div class="row sesion-evento mb-1">
  531. <div class="col-9">
  532. <div class="input-group-append">
  533. <input type="text" class="form-control sesion-desc" name="desc[]" placeholder="Temas de la sesión">
  534. <div class="input-group-text rounded-0 sesion-color" style="width:40px; background-color:<?php echo $tipoSesionArr[0]["SesionCatedraTipo_color"];?>" title="<?php echo $tipoSesionArr[0]["SesionCatedraTipo_desc"];?>" data-tipo="<?php echo $tipoSesionArr[0]["SesionCatedraTipo_id"];?>">
  535. </div>
  536. <button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  537. <span class="sr-only">Toggle Dropdown</span>
  538. </button>
  539. <div class="dropdown-menu">
  540. <?php foreach($tipoSesionArr as $tses){?>
  541. <a class="dropdown-item" href="#" data-color="<?php echo $tses["SesionCatedraTipo_color"];?>" data-tipo="<?php echo $tses["SesionCatedraTipo_id"];?>"><span class="ing-bullet ing-lg mr-2" style="color:<?php echo $tses["SesionCatedraTipo_color"];?>"></span> <?php echo $tses["SesionCatedraTipo_desc"];?></a>
  542. <?php } ?>
  543. </div>
  544. </div>
  545. </div>
  546. <div class="col-3 botones">
  547. <button class="btn btn-outline-success btn-agregar"><span class="ing-mas"></span></button>
  548. <button class="btn btn-outline-danger btn-quitar d-none"><span class="ing-menos"></span></button>
  549. </div>
  550. </div>
  551. <?php }else{
  552. foreach($sesArr as $ses){?>
  553. <div class="row sesion-evento mb-1">
  554. <div class="col-9">
  555. <div class="input-group-append">
  556. <input type="text" class="form-control sesion-desc" name="desc[]" placeholder="Temas de la sesión" value="<?php echo $ses["desc"] ?>">
  557. <div class="input-group-text rounded-0 sesion-color" style="width:40px; background-color:<?php echo $ses["color"];?>" title="<?php echo $ses["tipo"];?>" data-tipo="<?php echo $ses["tipo_id"];?>">
  558. </div>
  559. <button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
  560. <span class="sr-only">Toggle Dropdown</span>
  561. </button>
  562. <div class="dropdown-menu">
  563. <?php foreach($tipoSesionArr as $tses){?>
  564. <a class="dropdown-item" href="#" data-color="<?php echo $tses["SesionCatedraTipo_color"];?>" data-tipo="<?php echo $tses["SesionCatedraTipo_id"];?>"><span class="ing-bullet ing-lg mr-2" style="color:<?php echo $tses["SesionCatedraTipo_color"];?>"></span> <?php echo $tses["SesionCatedraTipo_desc"];?></a>
  565. <?php } ?>
  566. </div>
  567. </div>
  568. </div>
  569. <div class="col-3 botones">
  570. <button class="btn btn-outline-success btn-agregar"><span class="ing-mas"></span></button>
  571. <button class="btn btn-outline-danger btn-quitar d-none"><span class="ing-menos"></span></button>
  572. </div>
  573. </div>
  574. <?php
  575. }
  576. ?>
  577. <?php } ?>
  578. </div>
  579. </div>
  580. <?php } else{ //no hàbil?>
  581. <div class="col-4 alert-success">
  582. <div class="col-10 offset-2">
  583. <p><?php echo $dia["dia"]." ".fechaTexto($dia["fecha"]);?></p>
  584. <h4 class=""><?php echo $dia["titulo"];?></h4>
  585. </div>
  586. </div>
  587. <?php } ?>
  588. <?php }//for días ?>
  589. </div>
  590. <?php }//for semanas ?>
  591. <div class="row mt-4">
  592. <div class="col-12 text-center">
  593. <button type="button" class="btn btn-outline-primary" id="submitBtn2"><?php echo $ICO["aceptar"];?> Guardar Plan de cátedra</button>
  594. </div>
  595. </div>
  596. </div>
  597. <form action="./action/plancatedra_insert.php" method="post" id="formPCatedra">
  598. <input type="hidden" name="materia" value="<?php echo $filter_mat;?>">
  599. <input type="hidden" name="json" value="" id="datos">
  600. </form>
  601. </div>
  602. </div>
  603. <?php } ?>
  604. </main>
  605. <!--- FOOTER--->
  606. <?php require_once("../include/footer.php"); ?>
  607. <?php if($objSesion->puedeEditar()){ ?>
  608. <!-- Modal -->
  609. <div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
  610. <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
  611. <div class="modal-content">
  612. <div class="modal-header">
  613. <h4 class="col-12 modal-title text-center"><span id="modalLabel">Copiar datos desde&hellip;</span>
  614. <button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
  615. <span aria-hidden="true">&times;</span>
  616. </button></h4>
  617. </div>
  618. <div class="modal-body">
  619. <input type="hidden" name="id" id="id">
  620. <input type="hidden" name="estado" value="1">
  621. <div class="form-box">
  622. <p>Selecciona la materia de la que deseas obtener los datos para copiarlos a la materia actual.</p>
  623. <div class="form-group row" id="periodoBlock">
  624. <label for="prof" class="col-4 col-form-label">Periodo *</label>
  625. <div class="col-8">
  626. <div class="datalist datalist-select mb-1 w-100" id="dlPeriodoCopy">
  627. <div class="datalist-input">Periodos</div>
  628. <span class="ing-buscar icono"></span>
  629. <ul style="display:none">
  630. <?php foreach($periodosN_rs as $per){?>
  631. <li data-id="<?php echo $per["Periodo_id"];?>"><?php echo $per["Periodo_desc"];?></li>
  632. <?php } ?>
  633. </ul>
  634. <input type="hidden" id="periodo_copy" name="periodo" value="">
  635. </div>
  636. </div>
  637. </div>
  638. <div class="form-group row" id="materiaBlock">
  639. <label for="horario" class="col-4 col-form-label">Materia original*</label>
  640. <div class="col-8">
  641. <div class="datalist datalist-select mb-1 w-100" id="dlMateriaCopy">
  642. <div class="datalist-input">Selecciona una materia</div>
  643. <span class="ing-buscar icono"></span>
  644. <ul style="display:none">
  645. <?php if(isset($mat_rs)){ ?>
  646. <?php foreach($mat_rs as $materia) {
  647. $nombre = $materia["Materia_desc"]." - ".$materia["Grupo_desc"]." ".$materia["Carrera_prefijo"];
  648. ?>
  649. <li data-id="<?php echo $materia["Materia_id"]."_".$materia["Grupo_id"]."_".$materia["Submateria_id"];?>" <?php if($filter_materia == $materia["Materia_id"] && $filter_grupo == $materia["Grupo_id"]){ echo 'class="selected"'; }?>>
  650. <?php echo $nombre;?></li>
  651. <?php }?>
  652. <?php } ?>
  653. </ul>
  654. <input type="hidden" id="materia_copy" name="materia" value="">
  655. </div>
  656. </div>
  657. </div>
  658. <div class="form-group row" id="periodoBlock">
  659. <label for="prof" class="col-4 col-form-label">Copiar *</label>
  660. <div class="col-8">
  661. <div class="datalist datalist-select mb-1 w-100" id="dlPeriodoCopy">
  662. <div class="datalist-input">Syllabus y Plan de Cátedra</div>
  663. <span class="ing-buscar icono"></span>
  664. <ul style="display:none">
  665. <li data-id="1">Syllabus y Plan de Cátedra</li>
  666. <li data-id="2">Syllabus</li>
  667. <li data-id="3">Plan de Cátedra</li>
  668. </ul>
  669. <input type="hidden" id="periodo_copy" name="periodo" value="">
  670. </div>
  671. </div>
  672. </div>
  673. </div>
  674. <div class="form-group row mt-3">
  675. <div class="col-12 text-center">
  676. <button type="button" class="btn btn-outline-primary" id="copiarBtn" data-tipo="1"><?php echo $ICO["aceptar"];?> Copiar estos datos</button>
  677. <button type="reset" class="btn btn-outline-danger" data-dismiss="modal"><?php echo $ICO["cancelar"];?> Cancelar</button>
  678. </div>
  679. </div>
  680. </div>
  681. </div>
  682. </div>
  683. </div>
  684. <div class="modal fade" id="modal_confirm" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
  685. <div class="modal-dialog modal-dialog-centered" role="document">
  686. <div class="modal-content">
  687. <div class="modal-body">
  688. <div class="row">
  689. <div class="col">
  690. <p class="font-weight-bold">¿Estás seguro de que quieres borrar la reposición?</p>
  691. <p>Esta acción no se puede deshacer.</p>
  692. </div>
  693. </div>
  694. </div>
  695. <div class="modal-footer">
  696. <input type="hidden" id="id_borrar" value="">
  697. <button type="button" class="btn btn-outline-primary btn-borrar"><?php echo $ICO["aceptar"];?> Borrar</button>
  698. <button type="button" class="btn btn-outline-danger" data-dismiss="modal" aria-label="Close"><?php echo $ICO["cancelar"];?> Cancelar</button>
  699. </div>
  700. </div>
  701. </div>
  702. </div>
  703. <?php } ?>
  704. </div>
  705. <script src="../js/jquery.min.js"></script>
  706. <script src="../js/bootstrap/popper.min.js"></script>
  707. <script src="../js/bootstrap/bootstrap.min.js"></script>
  708. <script src="../js/fechas.js"></script>
  709. <script src="../js/tinymce/tinymce.min.js"></script>
  710. <script src="../js/sidebarmenu.js"></script>
  711. <script src="../js/datalist.js"></script>
  712. <script>
  713. setDatalist("#periodo", <?php echo $_SESSION["periodo_id"]; ?>);
  714. $(document).on('click', '#dlPeriodo ul li' ,function(){
  715. $("#formaPeriodo").submit();
  716. });
  717. </script>
  718. <script>
  719. $(document).on( "click", ".btn-reset", function(event){
  720. var forma = $(this).parents("form");
  721. forma.find("input[type=text]").val("");
  722. forma.find("select").prop("selectedIndex",0);
  723. forma.submit();
  724. });
  725. tinymce.init({
  726. selector: '.richtext',
  727. statusbar: false,
  728. plugins:["lists link"],
  729. toolbar: 'undo redo | bold italic underline forecolor backcolor | bullist numlist indent outdent | alignleft aligncenter alignright alignjustify| h3 link | removeformat',
  730. branding: false,
  731. menubar: false,
  732. //valid_elements: "a[href|target=_blank],h3,strong/b,em/i,u,ul,ol,li,blockquote,p[align],br,hr,span[style],-strong/-b,-em/-i,-u,-ul,-ol,-li,-h3,-a,-blockquote,-p,-br,-hr,-span",
  733. //paste_as_text: true,
  734. formats: {
  735. // Changes the default format for the underline button to produce a span with a class and not merge that underline into parent spans
  736. underline: { inline: 'span', styles: { 'text-decoration': 'underline' }, exact: true },
  737. strikethrough: { inline: 'span', styles: { 'text-decoration': 'line-through' }, exact: true }
  738. }
  739. });
  740. tinymce.init({
  741. selector: '.richtext-table',
  742. statusbar: false,
  743. plugins:["lists link table"],
  744. toolbar: 'undo redo | bold italic underline forecolor backcolor | bullist numlist indent outdent | alignleft aligncenter alignright alignjustify| h3 link | table removeformat',
  745. branding: false,
  746. menubar: false,
  747. //valid_elements: "a[href|target=_blank],h3,strong/b,em/i,u,ul,ol,li,blockquote,p[align],br,hr,span[style],table,thead,tbody,tr,td,th,-strong/-b,-em/-i,-u,-ul,-ol,-li,-h3,-a,-blockquote,-p,-br,-hr,-span",
  748. //paste_as_text: true,
  749. formats: {
  750. // Changes the default format for the underline button to produce a span with a class and not merge that underline into parent spans
  751. underline: { inline: 'span', styles: { 'text-decoration': 'underline' }, exact: true },
  752. strikethrough: { inline: 'span', styles: { 'text-decoration': 'line-through' }, exact: true }
  753. }
  754. });
  755. </script>
  756. <?php if($objSesion->puedeEditar()){
  757. ?>
  758. <script>
  759. var _periodo_fecha_inicial = "<?php echo fechaSlash($periodo_rs["Periodo_fecha_inicial"]); ?>";
  760. var _periodo_fecha_final = "<?php echo fechaSlash($periodo_rs["Periodo_fecha_final"]); ?>";
  761. function submitForm(){
  762. var myBtn = $('#submitBtn');
  763. var error = false;
  764. $("#gpo").removeClass("is-invalid");
  765. invalidDatalist("#materia", false);
  766. $("#fecha_inicial").removeClass("is-invalid");
  767. $("#fecha_falta").removeClass("is-invalid");
  768. if($("#fecha_inicial").val() == ""){
  769. $("#fecha_inicial").addClass("is-invalid");
  770. error = true;
  771. }
  772. if($("#fecha_falta").val() == ""){
  773. $("#fecha_falta").addClass("is-invalid");
  774. error = true;
  775. }
  776. if($("#horario").val().trim() == "" || $("#horario").val() === null){
  777. invalidDatalist("#horario", true);
  778. error = true;
  779. }
  780. if(myBtn.data("tipo") == 2 ){
  781. $('#formaModal').prop("action", "./action/reposicion_update.php");
  782. }else{
  783. $('#formaModal').prop("action", "./action/reposicion_insert.php");
  784. }
  785. return !error;
  786. }
  787. function valida(){
  788. var ids=["info", "desc", "obj", "capacidades", "prerrequisitos", "temario", "calificacion", "fechas", "asistencia", "comportamiento", "examenes", "tareas", "investigacion", "bibliografia"];
  789. var i;
  790. for(i=0; i<ids.length; i++){
  791. if(tinyMCE.get(ids[i]).getContent() == ""){
  792. $("#errorBox").collapse('show');
  793. $("#errorBox_text").html("Debes completar todos los campos");
  794. $('#messageBox')[0].scrollIntoView({ block: "end" });
  795. return false;
  796. }
  797. }
  798. return true;
  799. }
  800. $(document).ready(function(){
  801. //$('.richtext').richText();
  802. setDatalist("#periodo_copy", <?php echo $_SESSION["periodo_id"]; ?>);
  803. setDatalistFirst("#materia_copy");
  804. $("#dlMateria ul li").click(function(){//cambia datalist de materia principal
  805. var texto = $(this).text();
  806. $("#filter_materia_nom").val(texto);
  807. });
  808. $('#modal').on('show.bs.modal', function (e) {
  809. $("#dlPeriodoCopy ul li:first").click();
  810. })
  811. $("#dlPeriodoCopy ul li").click(function(){//cambia datalist de modal
  812. var per = $(this).data("id");
  813. console.log(per);
  814. $.ajax({
  815. url: './action/materiasrelacionadasprofesor_select.php',
  816. type: 'POST',
  817. dataType: 'json',
  818. data: { "id": <?php echo $_SESSION["usuario_id"];?>, "per":per, "mat": $(filter_materia).val()},
  819. success: function(result) {
  820. if(result["error"]!= "" && result["error"] !== undefined){
  821. $("#errorBox").collapse('show');
  822. $("#errorBox_text").html(result["error"]);
  823. $('#messageBox')[0].scrollIntoView({ block: "end" });
  824. }else{
  825. html = "";
  826. var total = 0;
  827. for(i=0; i<result["materias"].length; i++){
  828. var sub_id = ""
  829. if(result["materias"][i]["Submateria_id"] !== null){
  830. sub_id = result["materias"][i]["Submateria_id"];
  831. }
  832. if(result["materias"][i]["Materia_id"]+'_'+result["materias"][i]["Grupo_id"]+'_'+sub_id != $("#filter_materia").val() ){
  833. nombre = result["materias"][i]["Grupo_desc"]+" "+result["materias"][i]["Carrera_prefijo"]+" - "+result["materias"][i]["Materia_desc"]
  834. html += '<li data-id="'+result["materias"][i]["Materia_id"]+'_'+result["materias"][i]["Grupo_id"]+'_'+sub_id+'">'+nombre+'</li>';
  835. total++;
  836. }
  837. }
  838. $("#dlMateriaCopy ul").html(html);
  839. setDatalistFirst("#materia_copy");
  840. if(total==0){
  841. $("#dlMateriaCopy .datalist-input").html("Sin materias relacionadas");
  842. }
  843. }
  844. },
  845. error: function(jqXHR, textStatus, errorThrown ){
  846. modal.modal('hide');
  847. $("#errorBox").collapse('show');
  848. $("#errorBox_text").html(errorThrown);
  849. $('#messageBox')[0].scrollIntoView({ block: "end" });
  850. }
  851. });//ajax
  852. });
  853. /*
  854. $("#dlMateriaCopy ul li").click(function(){//cambia datalist de materia principal
  855. });*/
  856. $("#submitBtn").click(function(){//Enviar Syllabus
  857. if(valida()){
  858. $("#formaSyllabus").submit();
  859. }
  860. });
  861. $("#submitBtn2").click(function(){//Enviar Plan de cátedra
  862. var plan = [];
  863. var sesion=[];
  864. var pos=1;
  865. $.each($('.sesion-box'), function(){
  866. sesion=[];
  867. pos=1;
  868. $(this).find('.sesion-evento').each(function(){
  869. if($(this).find(".sesion-desc").val().trim()!=""){
  870. sesion.push({"pos":pos, "desc": $(this).find(".sesion-desc").val().trim(), "tipo":$(this).find(".sesion-color").data("tipo") });
  871. }
  872. pos++;
  873. });
  874. if(sesion.length>0)
  875. plan.push({"sesion": $(this).data("sesion"), "contenido":sesion});
  876. });
  877. $("#datos").val(JSON.stringify(plan));
  878. $("#formPCatedra").submit();
  879. });
  880. $("#copiarBtn").click(function(){
  881. var per = $("#periodo_copy").val();
  882. var mat = $("#materia_copy").val();
  883. console.log(per+" "+mat);
  884. $.ajax({
  885. url: './action/syllabus_Select.php',
  886. type: 'POST',
  887. dataType: 'json',
  888. data: { "periodo": per, "materia": mat},
  889. success: function(result) {
  890. if(result["error"]!= "" && result["error"] !== undefined){
  891. $("#errorBox").collapse('show');
  892. $("#errorBox_text").html(result["error"]);
  893. }else{
  894. var ids=["info", "desc", "obj", "capacidades", "prerrequisitos", "temario", "calificacion", "fechas", "asistencia", "comportamiento", "examenes", "tareas", "investigacion", "bibliografia"];
  895. var i;
  896. for(i=0; i<ids.length; i++){
  897. //console.log(result["syllabus"][ids[i]])
  898. tinyMCE.get(ids[i]).setContent(result["syllabus"][ids[i]])
  899. }
  900. }
  901. $('#messageBox')[0].scrollIntoView({ block: "end" });
  902. },
  903. error: function(jqXHR, textStatus, errorThrown ){
  904. $("#errorBox").collapse('show');
  905. $("#errorBox_text").html(errorThrown);
  906. $('#messageBox')[0].scrollIntoView({ block: "end" });
  907. }
  908. });//ajax
  909. $('#modal').modal("hide");
  910. });
  911. // Manejador del cambio de semana
  912. $("#secciones").change(function() {
  913. var seccion = $(this).val();
  914. // Movemos la vista a la sección correspondiente
  915. $('html, body').animate({
  916. scrollTop: $("#" + seccion).offset().top - 120
  917. }, 800);
  918. });
  919. $(".top").click(function() {
  920. $('html, body').animate({
  921. scrollTop: $("#tab2").offset().top - 120
  922. }, 800);
  923. });
  924. });
  925. $(document).on( "click", ".btn-agregar", function(e){
  926. var contenedor = $(this).parents(".sesion-box");
  927. if(contenedor.find(".sesion-evento").length<5){
  928. var renglon = $(this).parents(".sesion-evento");
  929. new_reng = renglon.clone().appendTo(contenedor);
  930. if(contenedor.find(".sesion-evento").length>1){
  931. contenedor.find(".btn-quitar").removeClass("d-none");
  932. if(contenedor.find(".sesion-evento").length==5){
  933. contenedor.find(".sesion-evento .btn-agregar").attr("disabled", true);
  934. }
  935. }else{
  936. contenedor.find(".btn-quitar").addClass("d-none");
  937. }
  938. }
  939. });
  940. $(document).on( "click", ".btn-quitar", function(e){
  941. var contenedor = $(this).parents(".sesion-box");
  942. if(contenedor.find(".sesion-evento").length>1){
  943. var renglon = $(this).parents(".sesion-evento");
  944. renglon.remove();
  945. contenedor.find(".sesion-evento .btn-agregar").attr("disabled", false);
  946. }
  947. if(contenedor.find(".sesion-evento").length==1){
  948. contenedor.find(".btn-quitar").addClass("d-none");
  949. }
  950. });
  951. $(document).on( "click", ".dropdown-item", function(e){
  952. e.preventDefault(); // Evita que se siga el enlace
  953. var selectedColor = $(this).data('color'); // Obtiene el color seleccionado
  954. var selectedText = $(this).text();
  955. var selectedTipo = $(this).data("tipo");
  956. $(this).parents(".input-group-append").find('.sesion-color').css('background-color', selectedColor).attr("title", selectedText).data("tipo", selectedTipo); // Cambia el color de fuente
  957. // Cierra el menú desplegable después de seleccionar un ítem
  958. $(this).closest('.dropdown-menu').prev('.dropdown-toggle').dropdown('toggle');
  959. });
  960. </script>
  961. <?php } ?>
  962. </body>
  963. </html>