constancias_gema_alta.php 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547
  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. require_once("./include/constantes.php");
  8. $menu = 30;
  9. $submenu = 302;
  10. //--- Objeto para validar usuario. El id de usuario lo lee desde sesión
  11. $objSesion = new ValidaSesion($pdo, $submenu, CONSTANCIA);
  12. if(!$objSesion->tieneAcceso()){
  13. $objSesion->terminaSesion();
  14. }
  15. $objSesion->validaPeriodoUsuario();//si no tiene periodo manda a main
  16. if(!$objSesion->puedeEditar()){
  17. $errorDesc = "No tienes permiso de editar las fechas.";
  18. }
  19. if(!isset($_POST["evento"], $_POST["evento_desc"], $_POST["doc_id"])){
  20. header("Location: constancias_gema.php?error=0");
  21. }
  22. $periodo = $_SESSION["periodo_id"];
  23. $evento = filter_input(INPUT_POST, "evento", FILTER_SANITIZE_NUMBER_INT);//limpia texto
  24. $evento_desc = trim(filter_input(INPUT_POST, "evento_desc", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW)));//limpia texto
  25. $doc_id = filter_input(INPUT_POST, "doc_id", FILTER_SANITIZE_NUMBER_INT);//limpia texto
  26. $doc_desc = trim(filter_input(INPUT_POST, "doc_desc", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW)));//limpia texto
  27. ?>
  28. <!DOCTYPE html>
  29. <html lang="es" prefix="og: http://ogp.me/ns#">
  30. <head>
  31. <title>Constancias - Facultad de Ingeniería</title>
  32. <meta charset="utf-8">
  33. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  34. <link rel="icon" type="image/png" href="../img/favicon.png" />
  35. <link rel="stylesheet" href="../css/bootstrap-ulsa.min.css" type="text/css">
  36. <link rel="stylesheet" href="../css/indivisa.css" type="text/css">
  37. <link rel="stylesheet" href="../css/sgi.css?rand=<?php echo rand();?>" type="text/css">
  38. <link rel="stylesheet" href="../css/fa_all.css" type="text/css">
  39. <link rel="stylesheet" href="../css/jquery-ui.css" type="text/css">
  40. <link rel="stylesheet" href="../css/calendar.css" type="text/css">
  41. <link rel="stylesheet" href="../css/toggle.css" type="text/css">
  42. <style>
  43. .ing-rotate-45 {
  44. -webkit-transform: rotate(315deg);
  45. -moz-transform: rotate(315deg);
  46. -ms-transform: rotate(315deg);
  47. -o-transform: rotate(315deg);
  48. transform: rotate(315deg);
  49. }
  50. </style>
  51. </head>
  52. <body>
  53. <div>
  54. <?php
  55. //--- Objeto que pinta menu
  56. $menuObj = new MainMenu($_SESSION["usuario_id"], $menu, $pdo, CONSTANCIA, "Crear constancias de insignias");//usr, menu, pdo, sist
  57. $menuObj->printMenu();
  58. //Datos concurso
  59. $stmt = $pdo->prepare('SELECT * FROM fs_insignia(:per, :id, NULL, NULL, true, true, 0, NULL)');
  60. $stmt->bindParam(":per", $periodo);
  61. $stmt->bindParam(":id", $evento);
  62. if($stmt->execute()){
  63. $insignia_rs = $stmt->fetch();
  64. }else{
  65. $errorDesc = "Ocurrió un error al obtener los datos del evento.";
  66. }
  67. $stmt->closeCursor();
  68. $stmt = null;
  69. //Texto constancia
  70. /*$stmt = $pdo->prepare('SELECT * FROM cidit_fs_textoconstancia(:tipo)');
  71. $stmt->bindParam(":tipo", $part);
  72. if($stmt->execute()){
  73. $texto_rs = $stmt->fetch();
  74. }else{
  75. $errorDesc = "Ocurrió un error al obtener el texto del documento.";
  76. }
  77. $stmt->closeCursor();
  78. $stmt = null;*/
  79. //Alumnos de la insignia
  80. $stmt = $pdo->prepare('Select * from fs_insigniaalumno(:id)');
  81. $stmt->bindParam(":id", $evento);
  82. if(!$stmt->execute()){
  83. $errorDesc = "Ocurrió un error al cargar los alumnos de la insignia";
  84. }else{
  85. $usuario_rs = $stmt->fetchAll();
  86. $usuarioArr = array();
  87. $last_id = -1;
  88. $i = 0;
  89. $total = 0;
  90. $first = 0;
  91. foreach($usuario_rs as $usr){
  92. if($usr["Usuario_id"] != $last_id){
  93. $usuarioArr[] = array("idusuario" =>$usr["Usuario_id"], "nombre"=>$usr["Usuario_apellidos"]." ".$usr["Usuario_nombre"],
  94. "claveULSA" =>$usr["Usuario_claveULSA"], "carrera" =>$usr["Carrera_desc"] ." ".$usr["PlanEstudio_desc"]);
  95. $last_id = $usr["Usuario_id"];
  96. }
  97. }
  98. }
  99. $stmt->closeCursor();
  100. $stmt = $pdo->prepare('Select * from fs_constanciafirma(NULL, true)');
  101. if($stmt->execute()){
  102. $firmas_rs = $stmt->fetchAll();
  103. }
  104. $stmt->closeCursor();
  105. $stmt = null;
  106. //--Manejo de errores y mensajes de exito
  107. if(isset($_GET["error"]) && is_numeric($_GET["error"])){
  108. switch ($_GET["error"]){
  109. case 0: $errorDesc = "No se reciberon los datos para generar el archivo."; break;
  110. case 1: $errorDesc = "No tienes permisos de realizar esa acción."; break;
  111. case 2: $errorDesc = "Ocurrió un error al obtener los datos de las constancias."; break;
  112. case 3: $errorDesc = "Ocurrió un error al generar las constancias."; break;
  113. case 4: $errorDesc = "Ocurrió un error al actualizar el texto de las constancias."; break;
  114. }
  115. }
  116. if(isset($_GET["ok"]) && is_numeric($_GET["ok"])){
  117. switch ($_GET["ok"]){
  118. case 0: $successDesc = "Las fechas se guardaron correctamente."; break;
  119. }
  120. }
  121. ?>
  122. <main class="container-fluid content marco">
  123. <?php include_once("../include/errorMessage.php");?>
  124. <?php if ($objSesion->puedeEditar()){
  125. ?>
  126. <div id="forma_block">
  127. <form action="./export/pdf_constancias_gema_split.php" method="post" id="formaConstancias">
  128. <!-- id documento se obtiene solo cuando se genera -->
  129. <input type="hidden" name="evento" value="<?php echo $evento;?>">
  130. <input type="hidden" name="doc_desc" id="doc_desc" value="<?php echo $doc_desc;?>"><!-- texto: constancia, reconocimiento -->
  131. <input type="hidden" name="doc_id" id="doc_id" value="<?php echo $doc_id;?>">
  132. <input type="hidden" id="motivo" name="motivo" value="<?php echo $part_desc;?>"> <!-- participante, ganador..-->
  133. <h3><?php echo $insignia_rs["Insignia_titulo"]; ?></h3>
  134. <div class="form-box">
  135. <div class="form-group row">
  136. <label class="col-4 col-form-label">Autorizada por</label>
  137. <div class="col-8 col-md-6">
  138. <p class="pt-2"><?php echo $insignia_rs["Usuario_nombre"]." ".$insignia_rs["Usuario_apellidos"]." - ".$insignia_rs["Puesto_desc"]; ?></p>
  139. </div>
  140. </div>
  141. <div class="form-group row">
  142. <label class="col-4 col-form-label">Participantes *</label>
  143. <div class="col-8 col-md-6">
  144. <div style="max-height:200px; overflow:auto; padding-right:10px" id="participante_list">
  145. <?php foreach($usuarioArr as $usr){?>
  146. <div class="ml-4">
  147. <input type="checkbox" name="participantes[]" class="form-check-input radio-md participante_check" value="<?php echo $usr["idusuario"];?>" id="usr_check<?php echo $usr["idusuario"];?>" checked="checked">
  148. <label for="usr_check<?php echo $usr["idusuario"];?>"><?php echo $usr["nombre"];?></label>
  149. </div>
  150. <?php } ?>
  151. </div>
  152. </div>
  153. </div>
  154. <div class="form-group row">
  155. <label for="desc" class="col-4 col-form-label">Texto del documento *<br><button type="button" class="btn btn-sm btn-outline-secondary" data-toggle="modal" data-target="#modalPalabras">Palabras clave <span class="ing-flecha ing-rotate-45"></span></button></label>
  156. <div class="col-8 col-md-6">
  157. <textarea id="desc" name="desc" class="richtext" rows="4"><?php //echo $texto_rs["CIDIT_TextoConstancia_texto"]; ?></textarea>
  158. </div>
  159. </div>
  160. <div class="form-group row">
  161. <label for="fecha" class="col-4 col-form-label">Fecha del documento *</label>
  162. <div class="col-8 col-md-4">
  163. <input id="fecha" name="fecha" type="text" class="form-control date-picker-all" placeholder="dd/mm/aaaa" maxlength="10" required="required" readonly="readonly" value="<?php echo date("d/m/Y");?>">
  164. </div>
  165. </div>
  166. <div class="form-group row">
  167. <label for="tipo" class="col-4 col-form-label">Número de firmas *</label>
  168. <div class="col-8 col-md-4">
  169. <div class="datalist datalist-select mb-1 w-100" id="datalistFirmas">
  170. <div class="datalist-input">1 Firma</div>
  171. <span class="ing-buscar icono"></span>
  172. <ul style="display:none">
  173. <?php for($i=1; $i<=4; $i++) {?>
  174. <li data-id="<?php echo $i;?>"><?php echo $i;?> Firma<?php if ($i>1){echo 's';}?> </li>
  175. <?php }?>
  176. </ul>
  177. <input type="hidden" id="num_firmas" name="num_firmas" value="1">
  178. </div>
  179. </div>
  180. </div>
  181. </div>
  182. <p class="font-weight-bold">Orden de los firmantes</p>
  183. <ul>
  184. <li>Jerarquía alta | Jerarquía baja </li>
  185. <li>Jerarquía baja | Jerarquía alta | Jerarquía media</li>
  186. </ul>
  187. <div class="form-box" id="firmas_block">
  188. <div class="form-group row firma-box" data-id="1">
  189. <div class="col-5">
  190. <div class="datalist datalist-select mb-1 w-100 datalist-firma" id="datalistFirma_1">
  191. <div class="datalist-input">1</div>
  192. <span class="ing-buscar icono"></span>
  193. <ul style="display:none">
  194. <?php foreach($firmas_rs as $firma) { ?>
  195. <li data-id="<?php echo $firma["ConstanciaFirma_id"];?>" data-puesto="<?php echo $firma["ConstanciaFirma_puesto"];?>">
  196. <?php
  197. //echo mb_convert_case(mb_strtolower($firma["ConstanciaFirma_nombre"]), MB_CASE_TITLE, "UTF-8");
  198. echo $firma["ConstanciaFirma_nombre"];
  199. ?>
  200. </li>
  201. <?php }?>
  202. </ul>
  203. <input type="hidden" id="firma_1" name="firma[]" value="0" class="firma_input">
  204. </div>
  205. </div>
  206. <div class="col-5">
  207. <input type="text" id="puesto_1" name="puesto[]" class="form-control puesto_input" placeholder="Puesto" value="<?php echo $firmas_rs[0]["ConstanciaFirma_puesto"];?>" required="required">
  208. </div>
  209. <div class="col-2 pt-1 pl-4">
  210. <input type="checkbox" class="form-check-input radio-md lleva_firma" value="1" id="lleva_firma_1">
  211. <label for="lleva_firma_1">Mostrar firma</label>
  212. <input name="lleva_firma[]" type="hidden" class="lleva_firma_hidden" value="0">
  213. </div>
  214. </div>
  215. </div>
  216. <div class="form-group row">
  217. <div class="col-12 text-center">
  218. <button type="button" class="btn btn-outline-primary btn-abrir-confirm"><?php echo $ICO["aceptar"];?> Generar constancias</button>
  219. <a href="constancias_gema.php" class="btn btn-outline-danger"><span class="ing-cancelar"></span> Regresar</a>
  220. </div>
  221. </div>
  222. </form>
  223. </div>
  224. <div id="generado_block" class="d-none">
  225. <h3 class="mt-5"><?php echo $ICO["alerta"];?> Se ha generado el arvhivo .zip con los documentos generados</h3>
  226. <p class="text-center">
  227. <a href="constancias_gema.php" class="btn btn-outline-primary mt-3"><span class=""></span> Regresar</a>
  228. </p>
  229. </div>
  230. <?php } ?>
  231. </main>
  232. <!--- FOOTER--->
  233. <?php require_once("../include/footer.php"); ?>
  234. <!-- Modal -->
  235. <div class="modal fade" id="modal_confirm" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
  236. <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
  237. <div class="modal-content">
  238. <div class="modal-body">
  239. <div class="row">
  240. <div class="col bg-light p-4">
  241. <h4 id="confirm-participante">Nombre</h4>
  242. <div id="confirm-desc">Texto</div>
  243. <p id="confirm-fecha">Fecha</p>
  244. <div class="row" id="confirm-firma-list">
  245. <div class="col">
  246. <p><b class="confirm-firma">Firma</b><br>
  247. <span class="confirm-puesto">Puesto</span>
  248. </p>
  249. </div>
  250. </div>
  251. </div>
  252. </div>
  253. <hr>
  254. <div class="row">
  255. <div class="col">
  256. <p class="font-weight-bold">¿Estás seguro de que quieres generar las constancias?</p>
  257. <p>Una vez generadas se asignará un folio único.<br>En caso de haber errores se deberá cancelar y generar una nueva.</p>
  258. </div>
  259. </div>
  260. </div>
  261. <div class="modal-footer">
  262. <input type="hidden" id="id_borrar" value="">
  263. <button type="button" class="btn btn-outline-primary btn-enviar"><?php echo $ICO["aceptar"];?> Continuar</button>
  264. <button type="button" class="btn btn-outline-danger" data-dismiss="modal" aria-label="Close"><?php echo $ICO["cancelar"];?> Cancelar</button>
  265. </div>
  266. </div>
  267. </div>
  268. </div>
  269. <!-- Plabras clave -->
  270. <div class="modal fade" id="modalPalabras" tabindex="-1" role="dialog" aria-labelledby="modal" aria-hidden="true">
  271. <div class="modal-dialog modal-dialog-centered modal" role="document">
  272. <div class="modal-content">
  273. <div class="modal-header">
  274. <h4 class="col-12 modal-title text-center"><span id="modalLabel">Palabras clave</span>
  275. <button type="button" class="close text-white" data-dismiss="modal" aria-label="Close">
  276. <span aria-hidden="true">&times;</span>
  277. </button></h4>
  278. </div>
  279. <div class="modal-body">
  280. <p>Los códigos serán reemplazados por la información personalizada de la persona o concurso.</p>
  281. <?php foreach($_CODIGO_GEMA as $codigo){?>
  282. <div class="row mb-2">
  283. <div class="col-6">
  284. <p class="text-right my-2"><?php echo $codigo["desc"];?></p>
  285. </div>
  286. <div class="col-6">
  287. <div class="input-group">
  288. <input type="text" class="form-control texto-copiar text-info" value="<?php echo $codigo["code"];?>" readonly="true">
  289. <div class="input-group-append">
  290. <button class="btn btn-outline-primary btn-copiar" type="button" title="Copiar código" data-dismiss="modal"><span class="ing-copiar"></span></button>
  291. </div>
  292. </div>
  293. </div>
  294. </div>
  295. <?php } ?>
  296. <div class="text-center mt-4"><button type="reset" class="btn btn-outline-danger" data-dismiss="modal"><?php echo $ICO["cancelar"];?> Cerrar</button></div>
  297. </div>
  298. </div>
  299. </div>
  300. </div>
  301. </div>
  302. <script src="../js/jquery.min.js"></script>
  303. <script src="../js/jquery-ui.js"></script>
  304. <script src="../js/datepicker-es.js"></script>
  305. <script src="../js/bootstrap/popper.min.js"></script>
  306. <script src="../js/bootstrap/bootstrap.min.js"></script>
  307. <script src="../js/fechas.js"></script>
  308. <script src="../js/sidebarmenu.js"></script>
  309. <?php if($objSesion->puedeEditar()){ ?>
  310. <script src="../js/toggle.js"></script>
  311. <script src="../js/datalist.js"></script>
  312. <script src="../js/util.js"></script>
  313. <script src="../js/tinymce/tinymce.min.js"></script>
  314. <script>
  315. var datepickerOptions_all = { dateFormat: "dd/mm/yy", changeMonth: true};
  316. tinymce.init({
  317. selector: '.richtext',
  318. statusbar: false,
  319. toolbar: 'undo redo | bold italic',
  320. branding: false,
  321. menubar: false,
  322. valid_elements : 'strong/b,em/i',
  323. });
  324. $(document).ready(function(){
  325. setDatalistFirst("#tipo");
  326. setDatalistFirst("#firma_1");
  327. $(".date-picker-all" ).datepicker(datepickerOptions_all);
  328. $(".date-picker-all" ).datepicker( $.datepicker.regional[ "es" ] );
  329. $("#datalistFirmas ul li").click(function(){//cambia datalist
  330. var total = $("#firmas_block .firma-box").length;
  331. var nuevos = $(this).data('id');
  332. if(total < nuevos){
  333. //Clonar
  334. do{
  335. var cloned = $("#firmas_block >.firma-box:first-child").clone(true).appendTo("#firmas_block");
  336. //cloned.find("input").val("");
  337. total++;
  338. cloned.find(".firma_input").attr("id", "firma_"+total);
  339. cloned.find(".puesto_input").attr("id", "puesto_"+total);
  340. cloned.data("id", total);
  341. cloned.find(".lleva_firma").attr("id", "lleva_firma_"+total);
  342. cloned.find(".lleva_firma").siblings("label").attr("for", "lleva_firma_"+total);
  343. }while(total < nuevos);
  344. }else if(total > nuevos){
  345. //Quitar
  346. do{
  347. $("#firmas_block >.firma-box:last-child").remove();
  348. total--;
  349. }while(total > nuevos);
  350. }
  351. });
  352. $(".datalist-firma ul li").click(function(){//cambia datalist
  353. var id = $(this).parents(".firma-box").data('id');
  354. var puesto = $(this).data('puesto');
  355. console.log("Busca puesto "+id+", "+puesto);
  356. $("#puesto_"+id).val(puesto);
  357. });
  358. $(".btn-copiar").click(function(){
  359. var textoCopiar = $(this).parents(".input-group").find('.texto-copiar');
  360. textoCopiar.select();
  361. document.execCommand("copy");
  362. window.getSelection().removeAllRanges();
  363. //textoCopiar.blur();
  364. });
  365. //--- Modales
  366. $(".block-crear").removeClass("d-none"); // Quitar
  367. $('#modalParticipante').on('show.bs.modal', function (e) {
  368. $('#modalParticipante').find("input[type=text]").val("");
  369. });
  370. $('#modalParticipante').on('shown.bs.modal', function (e) {
  371. $('#modalParticipante').find("input[type=text]:first").focus();
  372. });
  373. $('#modalParticipante input[type=text]').keydown(function(event) {
  374. if (event.keyCode == 13) {
  375. $("#btn-guarda").trigger('click');
  376. }
  377. });
  378. $(".perfil").click(function(){
  379. var show = $(this).data("show");
  380. var hide = $(this).data("hide");
  381. $("."+show).removeClass("d-none");
  382. $("."+hide).addClass("d-none");
  383. $("#resultados").addClass("d-none");
  384. $("#nombre_alumno").removeClass("is-invalid");
  385. });
  386. $("#btn-guarda").click(function(){
  387. $("#nombre_alumno").removeClass("is-invalid");
  388. var nombre_new = trim($("#nombre_alumno").val() );
  389. //console.log(nombre_new);
  390. if(nombre_new == ""){
  391. $("#nombre_alumno").addClass("is-invalid");
  392. return;
  393. }
  394. if($("#participante_list").hasClass("d-none")){
  395. $(".participante-block .part-texto").val( nombre_new );
  396. $(".participante-block .part-texto").attr("disabled", false);
  397. $("#participante_list").removeClass("d-none");
  398. }else{
  399. var cloned = $("#participante_list >.participante-block:first-child").clone(true).appendTo("#participante_list");
  400. cloned.find(".part-texto").val(nombre_new);
  401. }
  402. $('#modalParticipante').modal('hide');
  403. });
  404. $(".btn-abrir-confirm").click(function(){
  405. if(validaForma()){
  406. $('#modal_confirm').modal('show');
  407. }else{
  408. $("#errorBox").collapse('show');
  409. $('#messageBox')[0].scrollIntoView({ block: "end" });
  410. }
  411. });
  412. $('#modal_confirm').on('show.bs.modal', function (e) {
  413. $("#confirm-participante").text( $(".participante-block .part-texto:first-child").val() );
  414. $("#confirm-desc").html( tinymce.get('desc').getContent() );
  415. $("#confirm-fecha").text( $("#fecha").val() );
  416. var firmas_block = $("#confirm-firma-list .col").length;
  417. var firmas = $('.puesto_input').length;
  418. if(firmas_block < firmas){//faltan
  419. do{
  420. var cloned = $("#confirm-firma-list >.col:first-child").clone(true).appendTo("#confirm-firma-list");
  421. firmas_block++;
  422. }while(firmas_block < firmas);
  423. }else{
  424. while(firmas_block > firmas){
  425. $("#confirm-firma-list >col:last-child").remove();
  426. firmas_block--;
  427. }
  428. }
  429. $.each($('#confirm-firma-list .col'), function(i){
  430. var nombre = getDatalistText($("#firma_"+(i+1)), $("#firma_"+(i+1)).val())
  431. $(this).find(".confirm-firma").text( nombre );
  432. $(this).find(".confirm-puesto").text( $("#puesto_"+(i+1)).val() );
  433. });
  434. });
  435. $(".btn-enviar").click(function(){
  436. $.each($('.firma-box'), function(i){
  437. if($(this).find(".lleva_firma").prop("checked")){
  438. $(this).find(".lleva_firma_hidden").val("1");
  439. }else{
  440. $(this).find(".lleva_firma_hidden").val("0");
  441. }
  442. });
  443. $("#formaConstancias").submit();
  444. $('#modal_confirm').modal('hide');
  445. $('#messageBox')[0].scrollIntoView({ block: "end" });
  446. $("#forma_block").addClass("d-none");
  447. $("#generado_block").removeClass("d-none");
  448. });
  449. });
  450. $(document).on( "click", ".btn-borrar", function(event){
  451. if($(".participante-block").length > 1){
  452. $(this).parents(".participante-block").remove();
  453. }else{
  454. $(".participante-block .part-texto").attr("disabled", true).val("");
  455. $("#participante_list").addClass("d-none");
  456. }
  457. });
  458. function validaForma(){
  459. $(".is-invalid").removeClass("is-invalid");
  460. var error = false;
  461. if(tinymce.get('desc').getContent() == ""){
  462. error = true;
  463. }
  464. $.each($('.puesto_input'), function(){
  465. if(trim($(this).val()) == ""){
  466. error = true;
  467. $(this).addClass("is-invalid");
  468. }
  469. });
  470. if(error){
  471. $("#errorBox_text").html("Debes completar todos los campos");
  472. return false;
  473. }
  474. if($(".participante_check:checked").length == 0){
  475. $("#errorBox_text").html("Debes elegir al menos un participante");
  476. return false;
  477. }
  478. return true;
  479. }
  480. </script>
  481. <?php } ?>
  482. </body>
  483. </html>