editor.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <?php
  2. session_start();
  3. require_once 'classes/Template.php';
  4. require_once 'classes/MainMenu.php';
  5. require_once 'classes/Concurso.php';
  6. require_once 'classes/Proyecto.php';
  7. require_once 'classes/ValidaSesion.php';
  8. require_once 'include/bd_pdo.php';
  9. //CONSTANTES Y VARIABLES GLOBALES
  10. $menu = 21;
  11. $submenu = 211;
  12. $titulo = 'Mi Cartel';
  13. $errorBD = false;
  14. $actual = null;
  15. $etapaEditor['idetapa'] = 0;
  16. $editorVisible = false;
  17. $img = 'img/cidit.webp';
  18. if (is_null($pdo) || !isset($_SESSION['usuario_id']))
  19. ValidaSesion::salirPagina();
  20. else{
  21. if (is_null($pdo))
  22. $errorBD = true;
  23. if (isset($_SESSION['actual'])) {
  24. $actual = unserialize($_SESSION['actual']);
  25. $img = 'concursos/' . $actual->getCarpeta() . '/logo.webp';
  26. }
  27. if (!$errorBD)
  28. $etapaEditor = Etapa::buscaEtapaXClave($pdo, 'EDITOR');
  29. if (isset($etapaEditor)){
  30. $fechasEditor = Concurso::getFechaXEtapa($pdo, $actual->getId(), $etapaEditor);
  31. if (isset($fechasEditor['activo']))
  32. $editorVisible = $fechasEditor['activo'];
  33. }
  34. if(isset($_SESSION['usuario_id']))
  35. $objSesion = new ValidaSesion($pdo,$submenu);
  36. else
  37. ValidaSesion::salirPagina();
  38. }
  39. ?>
  40. <!doctype html>
  41. <html lang="es">
  42. <head>
  43. <title><?php echo $titulo; ?> - CIDIT</title>
  44. <?php if ($editorVisible)
  45. Template::getCSS(array('-adds/grape/dist/css/grapes.min.css','-adds/grape/dist/css/grapesjs-preset-webpage.min.css','secciones/editor.css','secciones/cartel.css','secciones/iconos.css'));
  46. else
  47. Template::getCSS(array('secciones/editor.css','secciones/cartel.css')); ?>
  48. </head>
  49. <body>
  50. <?php Template::agregaLoading();
  51. $menuObj = new MainMenu($_SESSION['usuario_id'], $menu, $pdo);
  52. $menuObj->printMenu();
  53. Template::getNavInfo();
  54. if ($fechasEditor['fechas'] != 'Por definir')
  55. $idproyecto = Proyecto::alumnoTieneProyecto($pdo, $actual->getId(), $_SESSION['usuario_id']);
  56. else
  57. $idproyecto = -1;
  58. if (isset($objSesion) && $objSesion->tieneAcceso() && $idproyecto > 0){
  59. $proyecto = Proyecto::getProyectoXID($pdo, $idproyecto);
  60. $alumnos = organizaNombres(Proyecto::alumnosProyecto($pdo, $idproyecto));
  61. if ($editorVisible) {?>
  62. <input type="hidden" id="concurso" value="<?php echo $actual->getId(); ?>">
  63. <input type="hidden" id="etapa" value="<?php echo $etapaEditor['idetapa']; ?>">
  64. <main class="margen-principal mb-2">
  65. <div class="w-100 text-left my-3">
  66. <h1 class="mb-0"><?php echo $titulo; ?><span class="small text-azul6 ml-1"><?php if(isset($actual)) echo '(' . $actual->getNombre() . ' CIDIT)'; ?></span></h1>
  67. </div>
  68. <div class="d-flex flex-column justify-content-center align-items-center mx-auto max-cartel">
  69. <div class="d-flex flex-row mt-5">
  70. <div id="headerCartel" class="fijas">
  71. <div class="bg-primary d-flex flex-row justify-content-between align-items-start">
  72. <div id="tema" class="p-3"><?php echo $proyecto['proyecto']; ?></div>
  73. <img id="logoCartel" class="logo flex-grow-1 p-3" src="<?php echo $img; ?>" >
  74. </div>
  75. <div class="pleca"></div>
  76. <div class="integrantes text-center"><div>Integrantes:</div><div id="alumnos"><?php echo $alumnos; ?></div></div>
  77. </div>
  78. <div class="ajustadas gjs-blocks-c">
  79. <button id="plantilla" class="gjs-block gjs-one-bg justify-content-around align-items-center"><div class="ing-mi-cartel icono"></div><div>Cargar plantilla de cartel muestra</div></button>
  80. <button class="gjs-block gjs-one-bg justify-content-around align-items-center" data-toggle="modal" data-target="#modalPlantilla"><div class="ing-ojo icono"></div><div>Ver Cartel Muestra</div></button>
  81. <a class="gjs-block gjs-one-bg justify-content-around align-items-center" href="MANUAL.pdf" target="_blank"><div class="ing-descarga icono"></div><div>Descargar Manual de Uso</div></a>
  82. <button id="guardar" class="gjs-block gjs-one-bg justify-content-around align-items-center" data-id="<?php echo $idproyecto; ?>"><div class="ing-guardar icono"></div><div>Guardar Cambios</div></button>
  83. </div>
  84. </div>
  85. <div id="cartel" style="height:0px; overflow:hidden;" class="w-100">
  86. <?php cargaCartel($pdo, $idproyecto); ?>
  87. </div>
  88. <div class="d-flex flex-row justify-content-between w-100 mb-3">
  89. <img id="footerCartel" class="fijas" src="img/secciones/editor/footer.webp">
  90. <div class="ajustadas"></div>
  91. </div>
  92. </div>
  93. </main>
  94. <div class="modal fade modalGral" id="modalDemo">
  95. <div class="modal-dialog modal-dialog-centered">
  96. <div class="modal-content">
  97. <div class="modal-body d-flex flex-row align-items-center pb-0">
  98. <span class="display-1 text-warning ing-importante"></span>
  99. <div class="modal-text d-flex flex-column text-center px-2">
  100. <div class="modal-text-bold"></div>
  101. <div class="modal-text-italic"></div>
  102. </div>
  103. </div>
  104. <div class="modal-footer">
  105. <button type="button" class="border-0 bg-white mx-2" id="okModal"><span class="ing-aceptar text-success display-6"></span></button>
  106. <button type="button" class="border-0 bg-white mx-2" data-dismiss="modal"><span class="ing-cancelar text-danger display-6"></span></button>
  107. </div>
  108. </div>
  109. </div>
  110. </div>
  111. <div class="modal fade modalGral" id="modalPlantilla">
  112. <div class="modal-dialog modal-dialog-centered">
  113. <div class="modal-content">
  114. <div class="modal-header pb-0">
  115. <h4 class="modal-title indivisa-display-italic">Cartel Muestra</h4l>
  116. <button type="button" class="close" data-dismiss="modal"><div class="text-danger ing-cancelar"></div></button>
  117. </div>
  118. <div class="modal-body">
  119. <img src="img/secciones/editor/Cartel-plantilla.webp" />
  120. </div>
  121. </div>
  122. </div>
  123. </div>
  124. <div class="modal fade modalMarco" id="modalAviso">
  125. <div class="modal-dialog modal-dialog-centered">
  126. <div class="modal-content p-3">
  127. <div class="modal-body d-flex flex-column justify-content-center align-items-center">
  128. <button type="button" class="cerrar align-self-end m-0" data-dismiss="modal"><div class="ing-cancelar"></div></button>
  129. <div id="avisoMsg" class="text-primary display-5 text-center mb-3"></div>
  130. <div id="avisoIcon" class="display-1 mb-4"></div>
  131. </div>
  132. </div>
  133. </div>
  134. </div>
  135. <?php } else { ?>
  136. <main class="margen-principal mb-2">
  137. <div class="w-100 text-left my-3">
  138. <h1 class="mb-0"><?php echo $titulo; ?></h1>
  139. </div>
  140. <div class="fijas marcoCartel mx-auto mt-5 mb-3">
  141. <div class="bg-primary d-flex flex-row justify-content-between align-items-start">
  142. <div id="tema" class="p-3"><?php echo $proyecto['proyecto']; ?></div>
  143. <img class="logo flex-grow-1 p-3" src="<?php echo $img; ?>" >
  144. </div>
  145. <div class="pleca">
  146. </div>
  147. <div class="integrantes text-center"><div>Integrantes:</div><div><?php echo $alumnos; ?></div></div>
  148. <link rel="stylesheet" href="css/secciones/wrapper.css">
  149. <link rel="stylesheet" href="css/secciones/iconos.css">
  150. <div id="wrapper"><?php cargaCartel($pdo, $idproyecto); ?></div>
  151. <img class="w-100" src="img/secciones/editor/footer.webp">
  152. </div>
  153. </main>
  154. <?php }
  155. } else {
  156. $msg = '';
  157. if (!isset($objSesion) && !$objSesion->tieneAcceso()){
  158. $msg = 'No tienes accceso a éste sitio';
  159. } else {
  160. switch ($idproyecto){
  161. case 0: $msg = 'No tienes ningún proyecto registrado o aún no ha sido autorizado'; break;
  162. case -1: $msg = 'No ha sido definida la fecha de apertura para la creación de carteles'; break;
  163. }
  164. }
  165. ?>
  166. <main class="margen-principal mb-4">
  167. <div class="w-100 text-left my-3">
  168. <h1 class="mb-0"><?php echo $titulo; ?></h1>
  169. </div>
  170. <div class="fondoAnuncio mt-5">
  171. <div class="d-flex flex-column justify-content-center align-items-center">
  172. <div class="text-primary text-center mt-5 tit">¡Lo sentimos!</div>
  173. <div class="text-primary text-center small m-3 msg"><?php echo $msg; ?></div>
  174. <div class="ing-negar display-1 text-danger mb-4"></div>
  175. </div>
  176. </div>
  177. </main>
  178. <?php } ?>
  179. <div style="isolation: isolate;">
  180. <?php Template::footer(); ?>
  181. </div>
  182. <?php if ($editorVisible)
  183. Template::getJS(array('-adds/grape/dist/grapes.min.js','-adds/grape/dist/grapesjs-preset-webpage.min.js','secciones/editor.js'));
  184. else
  185. Template::getJS(array()); ?>
  186. </body>
  187. </html>
  188. <?php
  189. function organizaNombres($alumnos){
  190. $nombres = '';
  191. foreach ($alumnos as $alumno){
  192. $nombres .= mb_convert_case(mb_strtolower($alumno['apellidos']) . ' ' . mb_strtolower($alumno['nombre']), MB_CASE_TITLE, "UTF-8") . ',';
  193. }
  194. if (!empty($nombres))
  195. $nombres = substr($nombres,0,-1);
  196. return $nombres;
  197. }
  198. function cargaCartel($pdo, $idproyecto){
  199. $carpeta = Proyecto::carpetaProyecto($pdo, $idproyecto);
  200. $recurso = Recurso::recursoXNombre($pdo, 'HTML');
  201. $archivo = Recurso::recursoProyecto($pdo, $idproyecto, $recurso[0]['idrecurso']);
  202. if (!empty($archivo)){
  203. $archivo = 'concursos/' . $carpeta . '/' . $archivo;
  204. if (file_exists($archivo)) {
  205. $archivo = @file_get_contents($archivo);
  206. if ($archivo){
  207. $datos = json_decode($archivo,true);
  208. if (count($datos) > 0) { ?>
  209. <style><?php echo $datos['css']; ?></style>
  210. <?php echo $datos['html']; ?>
  211. <?php }
  212. }
  213. }
  214. }
  215. }