%mensaje%
+ {{ 'cuerpo_email_crear_usuario'|trans({ + '%mail%': mail, + '%link%': link, + '%apellido%': apellido, + '%nombres%': nombres, + '%nacionalidad%': nacionalidad, + '%pais_documento%': pais_documento, + '%tipo_documento%': tipo_documento, + '%nro_documento%': nro_documento, + '%nro_preincripcion%': id_preinscripcion + })|raw + }} +
+ + \ No newline at end of file diff --git a/src/siu/operaciones/acceso/form_login/pagelet_form_login.js b/src/siu/operaciones/acceso/form_login/pagelet_form_login.js new file mode 100644 index 0000000..7e80b0e --- /dev/null +++ b/src/siu/operaciones/acceso/form_login/pagelet_form_login.js @@ -0,0 +1,66 @@ +kernel.renderer.registrar_pagelet('form_login', function(info) { + var id = '#' + info.id; + + return { + onload: function() { + $('#usuario').focus(); + $('#frameRC').contents().on('keypress', function(e) { + if (e.which === 13) { + $('#guarani_form_login').submit(); + } + }); + + // Cuando cambia "País emisor del documento" + $('#pais_documento').on('change', function () + { + cambio_pais_documento(); + }); + + //---- Date Picker ------------------------------------------------- + $.datepicker.setDefaults( $.datepicker.regional["es"] ); + $(id).find('input#fecha_nacimiento').datepicker({ + changeMonth: true, + changeYear: true, + firstDay: 1, + yearRange: "-150:+0", + maxDate: 0 + }); + } + }; + + function cambio_pais_documento() + { + var valor = $('#pais_documento').val(); + // Si no se seleccionó "País emisor del documento" + if (valor === null) { + $('#tipo_documento').children().remove(); + } else {// Si se seleccionó "País emisor del documento" + buscar_tipo_documento_paises(valor); + } + } + + function buscar_tipo_documento_paises(_pais_documento) + { + kernel.ui.show_loading(); + + $.ajax({ + url: info.url_tipo_documentos, + dataType: 'json', + data: {pais: _pais_documento}, + type: 'POST', + success: function (data) + { + kernel.ui.hide_loading(); + + $('#tipo_documento').children().remove(); + $.each(data, function (key, value) + { + $('#tipo_documento').append( + $('').val(key).html(value) + ); + }); + ordenar_combo('tipo_documento'); + } + }); + } +}); diff --git a/src/siu/operaciones/acceso/pagelet_cambiar_email.php b/src/siu/operaciones/acceso/pagelet_cambiar_email.php new file mode 100644 index 0000000..6b53c26 --- /dev/null +++ b/src/siu/operaciones/acceso/pagelet_cambiar_email.php @@ -0,0 +1,40 @@ +data['url_volver'] = kernel::vinculador()->crear('acceso', 'index'); + $this->data['action_validar'] = kernel::vinculador()->crear('acceso', 'validar'); + $this->data['action_nuevo_email'] = kernel::vinculador()->crear('acceso', 'nuevo_email'); + $this->data['datos_ayuda'] = kernel::proyecto()->get_parametro('datos_ayuda'); + + $pregunta_secreta= $this->controlador->get_pregunta_secreta(); + $this->data['combo_propuestas'] = $this->controlador->get_combo_propuestas_preinscriptas(); + $this->data['pregunta_secreta']= kernel::traductor()->trans($pregunta_secreta); + if ($this->controlador->hay_var('mensajes')) { + $this->data['mensajes'] = $this->controlador->get_var('mensajes'); + } + } + +} \ No newline at end of file diff --git a/src/siu/operaciones/acceso/pagelet_contenido_login.php b/src/siu/operaciones/acceso/pagelet_contenido_login.php new file mode 100644 index 0000000..ccdd026 --- /dev/null +++ b/src/siu/operaciones/acceso/pagelet_contenido_login.php @@ -0,0 +1,42 @@ +set('msj_pagina_error', kernel::traductor()->trans('smpt_no_configurado')); + throw new nuevo_request('pagina_error'); + } + try { + if (!preinscripcion::versiones_compatibles()) { + kernel::sesion()->set('msj_pagina_error', kernel::traductor()->trans('versiones_no_compatibles')); + throw new nuevo_request('pagina_error'); + } + } catch (error_preinscripcion_cnx_bd $e) { + $mensaje = kernel::traductor()->trans($e->get_mensaje()); + kernel::sesion()->set('msj_pagina_error', $mensaje); + throw new nuevo_request('pagina_error'); + } + } + + function get_nombre() + { + return 'contenido_login'; + } + + function prepare() + { + + } + +} +?> \ No newline at end of file diff --git a/src/siu/operaciones/acceso/pagelet_form_login.php b/src/siu/operaciones/acceso/pagelet_form_login.php new file mode 100644 index 0000000..04554f5 --- /dev/null +++ b/src/siu/operaciones/acceso/pagelet_form_login.php @@ -0,0 +1,46 @@ +esta_seteada('mensaje_vista_acceso_error_token')) + { + throw new nuevo_request('alta_usuario', 'index'); + } + } + + function get_nombre() + { + return 'form_login'; + } + + function prepare() + { + $lm = kernel::login_manager(); + + $modelo = array(); + foreach ($lm->get_auth_providers() as $auth) { + /** @var $auth authentication_provider */ + $modelo[$auth->get_id()] = $auth->get_modelo(); + } + + $this->data['proveedores'] = $modelo; + $this->data['hay_servicios_externos'] = !empty($modelo['cuentas_ext']['proveedores']); + $this->data['url_crear'] = kernel::vinculador()->crear('alta_usuario', 'index'); + $this->data['url_recuperar'] = kernel::vinculador()->crear('acceso', 'recuperar'); + $this->data['url_reenviar_mail'] = kernel::vinculador()->crear('acceso', 'reenvio_mail', array('camb_msj' => 1)); + $this->data['url_ayuda_menu'] = kernel::vinculador()->crear('ayuda_menu', 'index'); + + $operacion = kernel::ruteador()->get_id_operacion(); + $this->add_var_js('url_tipo_documentos', kernel::vinculador()->crear($operacion, 'datos_tipo_documento')); + } + +} \ No newline at end of file diff --git a/src/siu/operaciones/acceso/pagelet_recuperar_pass.php b/src/siu/operaciones/acceso/pagelet_recuperar_pass.php new file mode 100644 index 0000000..8013f20 --- /dev/null +++ b/src/siu/operaciones/acceso/pagelet_recuperar_pass.php @@ -0,0 +1,71 @@ +data['url_volver'] = kernel::vinculador()->crear('acceso', 'index'); + $this->add_var_js('url_tipo_documentos', kernel::vinculador()->crear('acceso', 'datos_tipo_documento')); + + switch ($this->estado) { + case self::MAIL_ENVIADO: + $this->data['email'] = $this->obfuscate_mail($this->controlador->get_var('email')); + $this->data['url_cambiar_email'] = kernel::vinculador()->crear('acceso', 'cambiar_email'); + break; + case self::MAIL_NO_EXISTENTE: + break; + case self::TOKEN_CORRECTO: + $this->data['token'] = $this->controlador->get_var('token'); + $this->data['mensajes'] = $this->controlador->get_var('mensajes'); + $this->data['action_reset_pass'] = kernel::vinculador()->crear('acceso', 'reset_pass'); + break; + case self::TOKEN_INCORRECTO: + break; + case self::TOKEN_EXPIRADO: + break; + default: + $this->data['nombre_usuario'] = $this->controlador->get_var_default('nombre_usuario', ''); + $this->data['action_recuperar'] = kernel::vinculador()->crear('acceso', 'recuperar'); + $this->data['paises'] = $this->controlador->get_opciones__paises(); + $this->data['tipos_doc'] =[]; + $this->data['documento'] = $this->controlador->get_var('documento'); + //$this->data['action_recuperar'] = kernel::vinculador()->crear('acceso', 'recuperar'); + } + + // Si se seteo un mensaje en el controlador lo agrego para que lo consuma el twig + if ($this->controlador->hay_var('mensajes')) { + $this->data['mensajes'] = $this->controlador->get_var('mensajes'); + } + } + +} \ No newline at end of file diff --git a/src/siu/operaciones/acceso/recuperar_pass/default.css b/src/siu/operaciones/acceso/recuperar_pass/default.css new file mode 100644 index 0000000..4a14c12 --- /dev/null +++ b/src/siu/operaciones/acceso/recuperar_pass/default.css @@ -0,0 +1,11 @@ +#frameRC { + border: 0; +} + +#form .notificaciones { + margin-top: 10px; +} + +#form #continuar, #form .volver { + margin-top: 10px; +} \ No newline at end of file diff --git a/src/siu/operaciones/acceso/recuperar_pass/default.twig b/src/siu/operaciones/acceso/recuperar_pass/default.twig new file mode 100644 index 0000000..0d61ac8 --- /dev/null +++ b/src/siu/operaciones/acceso/recuperar_pass/default.twig @@ -0,0 +1,149 @@ +{% extends "kernel/pagelet.twig" %} +{% block contenido %} + {% if this.estado == 'inicial' %} + + {% import "kernel/macro_recaptcha.twig" as recaptcha %} + {{ recaptcha.script() }} +{{"descripcion_recuperar_clave"|trans}}
+ +{{ "descripcion_mail_recuperar_clave"|trans({'%1%': this.data.email}) }}
+{{ "no_puedo_arcceder_email"|trans({'%link%': this.data.url_cambiar_email}) |raw }}
+{{ "descripcion_nueva_clave"|trans }}
+ + + + {% elseif this.estado == constant('siu\\operaciones\\acceso\\pagelet_recuperar_pass::TOKEN_INCORRECTO') %} +{{"desc_no_se_puede_recuperar_clave"|trans|capitalize}}
+{{"acceso.desc_token_expirado" | trans }}
+{{ "descripcion_mail_no_existente_recuperar_clave"|trans }}
++ {{ 'cuerpo_email_recuperar_clave'|trans({ + '%mail%': mail, + '%link%': link + })|raw + }} +
+ + \ No newline at end of file diff --git a/src/siu/operaciones/acceso/recuperar_pass/pagelet_recuperar_pass.js b/src/siu/operaciones/acceso/recuperar_pass/pagelet_recuperar_pass.js new file mode 100644 index 0000000..2f05a6d --- /dev/null +++ b/src/siu/operaciones/acceso/recuperar_pass/pagelet_recuperar_pass.js @@ -0,0 +1,81 @@ +kernel.renderer.registrar_pagelet('recuperar_pass', function(info) { + var id = '#' + info.id; + + //---- Date Picker ------------------------------------------------- + $.datepicker.setDefaults( $.datepicker.regional["es"] ); + $('input.date').datepicker({ + changeMonth: true, + changeYear: true, + dateFormat: 'dd/mm/yy', + firstDay:0, + yearRange: "-150:+0" + }); + //----Fin Date Picker ------------------------------------------------- + return { + onload: function() { + $('#formulario_email').submit(function () + { + if( $("#e_mail").val() ==''){ + + kernel.ui.show_mensaje('Error en el formulario', {tipo: 'alert-error'}); + return false; + } + }); + $('#formulario_documento').submit(function () + { + if(( $("#pais").val() =='') || ( $("#tipo_documento").val() =='') || ( $("#numero_documento").val() =='') || ( $("#fecha_nacimiento").val() =='')){ + + kernel.ui.show_mensaje('Error en el formulario', {tipo: 'alert-error'}); + return false; + } + }); + $('#frameRC').contents().on('keypress', function(e) { + if(e.which == 13) { + $('#guarani_form_recuperar_pass').submit(); + } + }); + + $('#formulario_email').hide(); + $('#formulario_documento').hide(); + $('#radio_documento').click(function(){ + //oculto formulario email y muestro docuemento + $('#formulario_email').hide(); + $('#formulario_documento').show(); + $('#radio_email').prop('checked', false); + + }); + $('#radio_email').click(function(){ + //oculto formulario email y muestro docuemento + $('#formulario_documento').hide(); + $('#formulario_email').show(); + $('#radio_documento').prop('checked', false); + + }); + buscar_tipo_documento_pais($('#pais').val()) + $('#pais').change(function(){ + buscar_tipo_documento_pais($('#pais').val()) + }); + + function buscar_tipo_documento_pais(_pais) + { + $.ajax({ + url: info.url_tipo_documentos, + dataType: 'json', + async: false, + data: {pais: _pais}, + type: 'post', + success: function (data) { + $('#tipo_documento').children().remove(); + $.each(data, function (key, value) { + $('#tipo_documento').append( + $('').val(key).html(value) + ); + }); + ordenar_combo('tipo_documento'); + + } + }); + } + } + } +}) diff --git a/src/siu/operaciones/acceso/template.twig b/src/siu/operaciones/acceso/template.twig new file mode 100644 index 0000000..6882b08 --- /dev/null +++ b/src/siu/operaciones/acceso/template.twig @@ -0,0 +1,44 @@ +{% if js_vars %} + +{% endif %} + +{% if this.hay_error() %} +Comunicate con la institución
Telefono:{{ this.data.datos_ayuda.datos_ayuda_telefono | raw }}
Email: {{ this.data.datos_ayuda.datos_ayuda_email| raw }}
+ {{'ayuda_numero_tramite'|trans|raw}}
+
+
+
+
+
{{ "descripcion_mail_crear_usuario"|trans({'%1%': this.data.email}) }}
+ + {% else %} + {% import "kernel/macro_notificaciones.twig" as notificaciones %} + {{ notificaciones.render_notif(this.data.mensajes) }} ++ {{ 'cuerpo_email_crear_usuario'|trans({ + '%mail%': mail, + '%link%': link, + '%apellido%': apellido, + '%nombres%': nombres, + '%nacionalidad%': nacionalidad, + '%pais_documento%': pais_documento, + '%tipo_documento%': tipo_documento, + '%nro_documento%': nro_documento, + '%nro_preincripcion%': id_preinscripcion + })|raw + }} +
+ + \ No newline at end of file diff --git a/src/siu/operaciones/alta_usuario/crear_usuario/pagelet_crear_usuario.js b/src/siu/operaciones/alta_usuario/crear_usuario/pagelet_crear_usuario.js new file mode 100644 index 0000000..de5a21f --- /dev/null +++ b/src/siu/operaciones/alta_usuario/crear_usuario/pagelet_crear_usuario.js @@ -0,0 +1,602 @@ +var url_cascada_nac; +var url_tipo_documentos; +var url_tipo_documentos_validacion; +var url_nro_tramite_dni_validacion; +var url_img_nro_tramite_dni; + +var tipo_documento_dni; +var tipo_documento_dnt; +var tipo_documento_cuil_cuit; +var tipo_documento_cedula_diplomatica; +var tipo_documento_pasaporte; + +var nro_documento_dni_dnt_min; +var nro_documento_dni_dnt_max; + +var msj_nro_documento_dni_leyenda; +var msj_nro_documento_dni_error; +var msj_nro_documento_cuil_leyenda; +var msj_nro_documento_dni_rep; +var msj_ayuda_numero_tramite; +var msj_ayuda_documento; +var info_dni_en_tramite; + +var msj_nro_tramite_dni_leyenda; +var msj_nro_tramite_dni_error; +var msj_ws_renaper_error; +var msj_Exito; + +var mat_validacion_renaper; + +var tipo_documento; +var no_seleccion = 'null'; +var errores_formulario = false; + +var div_apellido_nombre; +var dt_apellido; +var dt_nombre; + +function set_solo_lectura(elemId, solo_lectura) +{ + elemId = '#' + elemId; + if (solo_lectura) { + $(elemId).attr('readonly', true); + } else { + $(elemId).attr('readonly', false); + } +} + +function set_val(elemId, iniciar, valor) +{ + valor = typeof valor !== 'undefined' ? valor : ''; + + elemId = '#' + elemId; + if (iniciar) { + $(elemId).val(''); + } else { + $(elemId).val(valor); + $(elemId).value = valor; + } +} + +function inicializar_nacionalidad() +{ + var nacionalidad = $('#form_crear_usuario-nacionalidad').val(); + var pais_documento = $('#form_crear_usuario-pais_documento').val(); + + if (nacionalidad === no_seleccion) { + set_solo_lectura('form_crear_usuario-pais_documento', true); + $('#form_crear_usuario-pais_documento').children().remove(); + } else { + buscar_paises(nacionalidad); + set_solo_lectura('form_crear_usuario-pais_documento', false); + if (nacionalidad !== '2') { + set_solo_lectura('form_crear_usuario-tipo_documento', false); + } else { + set_solo_lectura('form_crear_usuario-tipo_documento', true); + } + } + + $('#form_crear_usuario-pais_documento').val(pais_documento); +} + +function cambio_nacionalidad() +{ + var nacionalidad = $('#form_crear_usuario-nacionalidad').val(); + cambio_nro_tramite_dni(); + if (nacionalidad === no_seleccion) { + set_solo_lectura('form_crear_usuario-pais_documento', true); + $('#form_crear_usuario-pais_documento').children().remove(); + } else { + buscar_paises(nacionalidad); + set_solo_lectura('form_crear_usuario-pais_documento', false); + if (nacionalidad !== '2') { + set_solo_lectura('form_crear_usuario-tipo_documento', false); + } else { + set_solo_lectura('form_crear_usuario-tipo_documento', true); + } + } + cambio_pais_documento(); +} + +function buscar_paises(_nacionalidad) +{ + $.ajax({ + url: url_cascada_nac, + dataType: 'json', + async: false, + data: {nacionalidad: _nacionalidad}, + type: 'post', + success: function (data) + { + $('#form_crear_usuario-pais_documento').children().remove(); + $.each(data, function (key, value) + { + $('#form_crear_usuario-pais_documento').append( + $('').val(key).html(value) + ); + }); + ordenar_combo('form_crear_usuario-pais_documento'); + } + }); +} + +function buscar_tipo_documento_paises(_pais_documento) +{ + + $.ajax({ + url:url_tipo_documentos, + dataType: 'json', + async: false, + data: {pais: _pais_documento}, + type: 'post', + success: function (data) + { + $('#form_crear_usuario-tipo_documento').children().remove(); + $.each(data, function (key, value) + { + $('#form_crear_usuario-tipo_documento').append( + $('').val(key).html(value) + ); + }); + ordenar_combo('form_crear_usuario-tipo_documento'); + $("#form_crear_usuario-tipo_documento").val(tipo_documento); + } + }); +} +function cambio_pais_documento() +{ + var valor = $('#form_crear_usuario-pais_documento').val(); + if(mat_validacion_renaper === 'S'){ + cambio_nro_tramite_dni(); + pos_validar_nro_tramite_dni();} + if ((valor === no_seleccion) || (valor === null)) { + set_solo_lectura('form_crear_usuario-tipo_documento', true); + $('#form_crear_usuario-tipo_documento').val(no_seleccion); + } else { + set_solo_lectura('form_crear_usuario-tipo_documento', false); + buscar_tipo_documento_paises(valor); + } + cambio_tipo_documento(); +} + +function cambio_tipo_documento() +{ + var valor = $('#form_crear_usuario-tipo_documento').val(); + var pais = $('#form_crear_usuario-pais_documento').val(); + //paises miembros del mercosur + var paises_mercosur =['54','55','595','591','593','57','598','592','51','597']; + if(mat_validacion_renaper === 'S'){ + cambio_nro_tramite_dni(); + pos_validar_nro_tramite_dni();} + // Activación / desactivación de campo Nro. documento + if (valor === null) { + set_solo_lectura('form_crear_usuario-nro_documento', true); + set_solo_lectura('form_crear_usuario-nro_documento_rep', true); + } else { + set_solo_lectura('form_crear_usuario-nro_documento', false); + set_solo_lectura('form_crear_usuario-nro_documento_rep', false); + } + + switch (valor) { + // Si el tipo de documento es DNI + case tipo_documento_dni: + $("#js_nro_documento").html(msj_nro_documento_dni_leyenda).slideDown("slow"); + var tooltip_info_dni_tramite = ""; + var input = $('#form_crear_usuario-nro_tramite_dni'); + input = input.after(tooltip_info_dni_tramite); + $('.icon-info-sign').tooltip('show'); + + var nacionalidad = $('#form_crear_usuario-nacionalidad').val(); + if(nacionalidad !== null && nacionalidad === tipo_documento_dnt){ + $("#js_renaper").slideDown("slow"); + }else{ + $("#js_renaper").slideUp("slow"); + if (paises_mercosur.includes(pais)===false){ + $('#js_nro_documento').html(msj_ayuda_documento).slideDown('slow'); + } + } + + break; + // Si el tipo de documento es CUIL/CUIT + case tipo_documento_cuil_cuit: + $("#js_nro_documento").html(msj_nro_documento_cuil_leyenda).slideDown("slow"); + $("#js_renaper").slideUp("slow"); + break; + default: + $("#js_nro_documento").slideUp("slow"); + $("#js_renaper").slideUp("slow"); + break; + } +} + +function cambio_nro_tramite_dni() +{ + if(mat_validacion_renaper === 'S'){ + + var tipo_doc = $('#form_crear_usuario-tipo_documento').val(); + var nacionalidad = $('#form_crear_usuario-nacionalidad').val(); + if(nacionalidad === tipo_documento_dnt){ + if (tipo_doc === null) { + set_solo_lectura('form_crear_usuario-nro_tramite_dni', true); + } else { + if(tipo_doc === tipo_documento_dni){ + set_solo_lectura('form_crear_usuario-nro_tramite_dni', false); + }else{ + set_solo_lectura('form_crear_usuario-nro_tramite_dni', true); + $("#js_nro_tramite_dni").slideUp("slow"); + + } + } + }else{ + $("#js_renaper").slideUp("slow"); + } + + } +} + +function validar_documento(_pais_documento, _tipo_documento, nro_documento) +{ + + $.ajax({ + url: url_tipo_documentos_validacion, + dataType: 'json', + async: false, + data: {tipo_documento: _tipo_documento, pais: _pais_documento, nro_documento: nro_documento}, + type: 'post', + success: function (data) + { + errores_formulario = false; + var exp_reg = new RegExp(data.exp_regular_validacion); + var control_group = $('#form_crear_usuario-nro_documento').parents('.control-group'); + $(control_group).removeClass('error'); + var span = $(control_group).find('span.help-inline'); + $(span).remove(); + if (!exp_reg.test(nro_documento)) { + $(control_group).addClass('error'); + $(control_group).append('' + data.exp_regular_mensaje + ''); + errores_formulario = true; + } else { + + // Validaciones extras + switch (_tipo_documento) { + // Si el tipo de documento es DNI + case tipo_documento_dni: + // Valida que el DNI sea mayor a 1 millón y menor a 100 millones. + if ((parseInt(nro_documento) < parseInt(nro_documento_dni_dnt_min)) || (parseInt(nro_documento) > parseInt(nro_documento_dni_dnt_max))) { + $(control_group).addClass('error'); + $(control_group).append('' + msj_nro_documento_dni_error + ''); + errores_formulario = true; + } + var nro_documento_rep = $('#form_crear_usuario-nro_documento_rep').val(); + if (nro_documento_rep && nro_documento_rep !== nro_documento) { + $(control_group).addClass('error'); + $(control_group).append('' + msj_nro_documento_dni_rep + ''); + errores_formulario = true; + } + + break; + // Si el tipo de documento es CUIL/CUIT + case tipo_documento_cuil_cuit: + // Valida el CUIL/CUIT. + if (data.mensaje_validacion_cuil) { + $(control_group).addClass('error'); + $(control_group).append('' + data.mensaje_validacion_cuil + ''); + errores_formulario = true; + } + + break; + } + } + } + }); + +} + +function validar_nro_tramite_dni() +{ + var _pais_documento = $('#form_crear_usuario-pais_documento').val(); + var _tipo_documento = $('#form_crear_usuario-tipo_documento').val(); + var nro_documento = $('#form_crear_usuario-nro_documento').val(); + var nro_tramite_dni = $('#form_crear_usuario-nro_tramite_dni').val(); + var genero = $('#form_crear_usuario-sexo').val(); + if(_pais_documento && _tipo_documento && nro_documento && nro_tramite_dni && genero){ + $.ajax({ + url: url_nro_tramite_dni_validacion, + dataType: 'json', + async: false, + data: {nro_documento: nro_documento, nro_tramite_dni : nro_tramite_dni ,genero: genero}, + type: 'post', + success: function (data) + { + var objeto = ''; + errores_formulario = false; + if(data !== null && data !== ''){ + objeto = JSON.parse(data); + if(objeto['message'] === msj_Exito && objeto['person'] !== ""){ + //Seteo los valores devueltos por renaper + errores_formulario = false; + pos_validar_nro_tramite_dni(objeto['person']); + }else{ + //Si la persona no se encuentra en RENAPER muestra mensaje de error + var control_group = $('#form_crear_usuario-nro_tramite_dni').parents('.control-group'); + $(control_group).removeClass('error'); + var span = $(control_group).find('span.help-inline'); + $(span).remove(); + $(control_group).addClass('error'); + $(control_group).append('' + msj_ws_renaper_error + ''); + } + }else{ + //Si la persona no se encuentra en RENAPER muestra mensaje de error + var control_group = $('#form_crear_usuario-nro_tramite_dni').parents('.control-group'); + $(control_group).removeClass('error'); + var span = $(control_group).find('span.help-inline'); + $(span).remove(); + $(control_group).addClass('error'); + $(control_group).append('' + msj_ws_renaper_error + ''); + + //Los vuelvo al valor inicial, todos vacios + pos_validar_nro_tramite_dni(objeto, false); + errores_formulario = true; + } + + } + }); + } +} +/* + * Una vez completado el campo del nro de tramite asigna con los datos del renaper los siguientes inputs + * Si no encuentra la persona los vuelve a iniciarlizar, dejando en blanco los campos siguientes + */ +function pos_validar_nro_tramite_dni(persona, setear_valor) +{ + + persona = typeof persona !== 'undefined' ? persona : ''; + setear_valor = typeof setear_valor !== 'undefined' ? setear_valor : true; + + if (setear_valor && persona !== ''){ + //Apellidos + persona = JSON.parse(persona); + + $("#apellido_nombre").children().remove(); + + $("#apellido_nombre").append( + $('') + .attr("id", "div_apellido") + .addClass("control-group span6") + .append(dt_apellido) + .append("
"+persona['lastNames']+"
") + ); + + $("#apellido_nombre").append( + $('') + .attr("id", "div_nombres") + .addClass("control-group span6") + .append(dt_nombre) + .append(""+persona['names']+"
") + ); + //No permito que se cambie el numero de tramite + set_solo_lectura('form_crear_usuario-nro_tramite_dni', true); + set_val('form_crear_usuario-validado_con_renaper', false, mat_validacion_renaper); + set_solo_lectura('form_crear_usuario-apellido', true); + set_val('form_crear_usuario-apellido',false,persona['lastNames']); + //Nombres + set_solo_lectura('form_crear_usuario-nombres', true); + set_val('form_crear_usuario-nombres',false,persona['names']); + + //los inputs ocultos asigno datos de renaper + set_val('form_crear_usuario-fecha_nacimiento',false,persona['birthdate']); + set_val('form_crear_usuario-calle_proc',false,persona['streetAddress']); + set_val('form_crear_usuario-numero_proc',false,persona['numberStreet']); + set_val('form_crear_usuario-piso_proc',false,persona['floor']); + set_val('form_crear_usuario-dpto_proc',false,persona['department']); + set_val('form_crear_usuario-cp_proc',false,persona['zipCode']); + set_val('form_crear_usuario-barrio_proc',false,persona['city']); + set_val('form_crear_usuario-numero_cuil',false,persona['cuil']); + $('#validar').prop('disabled',true); + + } else { + $("#apellido_nombre").children().remove(); + $("#apellido_nombre").append(div_apellido_nombre); + //No permito que se cambie el numero de tramite + set_solo_lectura('form_crear_usuario-nro_tramite_dni', false); + + //serializo y vuelvo a los valores iniciales del formulario, para ser cargados + set_solo_lectura('form_crear_usuario-apellido', false); + set_val('form_crear_usuario-apellido',true); + //Nombres + set_solo_lectura('form_crear_usuario-nombres', false); + set_val('form_crear_usuario-nombres',true); + + //los inputs ocultos + set_val('form_crear_usuario-fecha_nacimiento',true); + set_val('form_crear_usuario-calle_proc',true); + set_val('form_crear_usuario-numero_proc',true); + set_val('form_crear_usuario-piso_proc',true); + set_val('form_crear_usuario-dpto_proc',true); + set_val('form_crear_usuario-cp_proc',true); + set_val('form_crear_usuario-barrio_proc',true); + set_val('form_crear_usuario-validado_con_renaper', false, 'N'); + $('#validar').removeAttr("disabled"); + + } + + +} + +kernel.renderer.registrar_pagelet('crear_usuario', function (info) +{ + var id = '#' + info.id; + url_cascada_nac = info.url_paises; + url_tipo_documentos = info.url_tipo_documentos; + url_tipo_documentos_validacion = info.url_tipo_documentos_validacion; + url_nro_tramite_dni_validacion = info.url_nro_tramite_dni_validacion; + url_img_nro_tramite_dni = info.url_img_nro_tramite_dni; + mat_validacion_renaper = info.mat_validacion_renaper; + tipo_documento = info.tipo_documento; + msj_Exito = info.msj_Exito; + + // Tipos de documentos + tipo_documento_dni = info.tipo_documento_dni; + tipo_documento_dnt = info.tipo_documento_dnt; + tipo_documento_cuil_cuit = info.tipo_documento_cuil_cuit; + tipo_documento_cedula_diplomatica = info.tipo_documento_cedula_diplomatica; + tipo_documento_pasaporte = info.tipo_documento_pasaporte; + + // Máximos y mínimos de números de documento + nro_documento_dni_dnt_min = info.nro_documento_dni_dnt_min; + nro_documento_dni_dnt_max = info.nro_documento_dni_dnt_max; + + // Mensajes + msj_nro_documento_dni_leyenda = info.mensajes.msj_nro_documento_dni_leyenda; + msj_nro_documento_dni_error = info.mensajes.msj_nro_documento_dni_error; + msj_nro_documento_cuil_leyenda = info.mensajes.msj_nro_documento_cuil_leyenda; + msj_nro_documento_dni_rep = info.mensajes.msj_nro_documento_dni_rep; + + msj_nro_tramite_dni_leyenda = info.mensajes.msj_nro_tramite_dni_leyenda; + msj_nro_tramite_dni_error = info.mensajes.msj_nro_tramite_dni_error; + msj_ws_renaper_error = info.mensajes.msj_ws_renaper_error; + msj_ayuda_numero_tramite = info.mensajes.msj_ayuda_numero_tramite; + msj_ayuda_documento = info.mensajes.msj_ayuda_documento; + info_dni_en_tramite = info.mensajes.info_dni_en_tramite; + dt_apellido = $("#form_crear_usuario-apellido-label").clone(); + dt_nombre = $("#form_crear_usuario-nombres-label").clone(); + + div_apellido = $("#div_apellido").clone(); + div_nombre = $("#div_nombres").clone(); + //---- Date Picker ------------------------------------------------- + $.datepicker.setDefaults( $.datepicker.regional["es"] ); + $(id).find('input.date').datepicker({ + changeMonth: true, + changeYear: true, + firstDay: 1, + yearRange: "-150:+0", + maxDate: "-15y" + }); + div_apellido_nombre = $('#apellido_nombre').clone();//Lo uso para crear nuevamente el div cuando se elimina + +return { + onload: function () + { + + var control_group = $('#form_crear_usuario-respuesta_secreta').parents('.control-group'); + $(control_group).append(''); + + var control_group = $('#form_crear_usuario-password').parents('.control-group'); + $(control_group).append(''); + + var control_group = $('#form_crear_usuario-rpassword').parents('.control-group'); + $(control_group).append(''); + $(id).on("click", ".js-cic-icon", function (e) { + + var id_input = $(this).attr("data-id-input") + + // Si se quiere mostrar el "Código inscripción" + if ($(this).hasClass("icon-eye-close")) { + $(this).removeClass("icon-eye-close"); + $(this).addClass("icon-eye-open"); + $("#" + id_input).attr("type", "text"); + } else {// Si se quiere ocultar el "Código inscripción" + $(this).removeClass("icon-eye-open"); + $(this).addClass("icon-eye-close"); + $("#" + id_input).attr("type", "password"); + } + }); + $('#form_crear_usuario').submit(function () + { + if (errores_formulario) { + kernel.ui.show_mensaje('Error en el formulario', {tipo: 'alert-error'}); + return false; + } + }); + + inicializar_nacionalidad(); + cambio_pais_documento(); + + //---- Manejo de visibilidad de secciones por eventos -------------- + $('#form_crear_usuario-nacionalidad').on('change', function () + { + cambio_nacionalidad(); + }); + $('#form_crear_usuario-pais_documento').on('change', function () + { + cambio_pais_documento(); + }); + $('#form_crear_usuario-tipo_documento').on('change', function () + { + cambio_tipo_documento(); + }); + $('#form_crear_usuario-nro_documento').on('change', function () + { + validar_documento($('#form_crear_usuario-pais_documento').val(), $('#form_crear_usuario-tipo_documento').val(), $('#form_crear_usuario-nro_documento').val()); + } + ); + + $('#form_crear_usuario-nro_tramite_dni').on('change', function () + { + var length = $('#form_crear_usuario-nro_tramite_dni').val().length; + var valor = $('#form_crear_usuario-nro_tramite_dni').val(); + var control_group = $('#form_crear_usuario-nro_tramite_dni').parents('.control-group'); + var regex = new RegExp(info.regexp_nro_tramite_dni,'i'); + + $(control_group).removeClass('error'); + var span = $(control_group).find('span.help-inline'); + $(span).remove(); + if(length !== 11 || regex.test(valor) === false){ + $(control_group).addClass('error'); + $(control_group).append('' + msj_nro_tramite_dni_error + ''); + pos_validar_nro_tramite_dni(); + } + } + ); + + $('#form_crear_usuario-nro_documento_rep').on('change', function () + { + var nro_documento = $('#form_crear_usuario-nro_documento').val(); + var nro_documento_rep = $('#form_crear_usuario-nro_documento_rep').val(); + if (nro_documento_rep && nro_documento && nro_documento_rep !== nro_documento) { + var control_group = $('#form_crear_usuario-nro_documento').parents('.control-group'); + $(control_group).removeClass('error'); + var span = $(control_group).find('span.help-inline'); + $(control_group).addClass('error'); + $(control_group).append('' + msj_nro_documento_dni_rep + ''); + errores_formulario = true; + } + } + ); + + //------------------------------------------------------------------ + + $('#frameRC').contents().on('keypress', function (e) + { + if (e.which === 13) { + $('#form_crear_usuario').submit(); + } + }); + $('#form_crear_usuario-telefono').attr('autocomplete', 'off'); + $('#form_crear_usuario-respuesta_secreta').attr('autocomplete', 'off'); + $('#form_crear_usuario-usuario').attr('autocomplete', 'off'); + $('#form_crear_usuario-usuario_rep').attr('autocomplete', 'off'); + $('#form_crear_usuario-password').attr('autocomplete', 'off'); + $('#form_crear_usuario-rpassword').attr('autocomplete', 'off'); + $('#form_crear_usuario-usuario_rep').on('paste', function () + { + return false; + }); + + //--------docuemntorepetir-------------------------------- + $('#form_crear_usuario-nro_documento_rep').on('paste', function () + { + return false; + }); + $('#form_crear_usuario-nro_documento_rep').attr('autocomplete', 'off'); + $('#ayuda_numero_tramite').popover({ + trigger: 'click', + html: true, + content: function(){ + return '+ {{ 'cuerpo_email_crear_usuario'|trans({ + '%mail%': mail, + '%link%': link + })|raw + }} +
+ + \ No newline at end of file diff --git a/src/siu/operaciones/asociar_usuario_se/asociar_usuario/pagelet_crear_usuario.js b/src/siu/operaciones/asociar_usuario_se/asociar_usuario/pagelet_crear_usuario.js new file mode 100644 index 0000000..f70af5a --- /dev/null +++ b/src/siu/operaciones/asociar_usuario_se/asociar_usuario/pagelet_crear_usuario.js @@ -0,0 +1,128 @@ +var url_cascada_nac; + +function set_solo_lectura(elemId, solo_lectura) +{ + elemId = '#' + elemId; + if (solo_lectura) { + $(elemId).attr('disabled', true); + } else { + $(elemId).attr('disabled', false); + } +} + +function inicializar_nacionalidad() +{ + var nacionalidad = $('#form_crear_usuario-nacionalidad').val(); + var pais_documento = $('#form_crear_usuario-pais_documento').val(); + + if (nacionalidad === no_seleccion) { + set_solo_lectura('form_crear_usuario-pais_documento', true); + $('#form_crear_usuario-pais_documento').children().remove(); + } else { + buscar_paises(nacionalidad); + set_solo_lectura('form_crear_usuario-pais_documento', false); + if (nacionalidad !== '2') { + set_solo_lectura('form_crear_usuario-tipo_documento', false); + } else { + set_solo_lectura('form_crear_usuario-tipo_documento', true); + } + } + + $('#form_crear_usuario-pais_documento').val(pais_documento); +} + +function cambio_nacionalidad() +{ + var nacionalidad = $('#form_crear_usuario-nacionalidad').val(); + + if (nacionalidad === no_seleccion) { + set_solo_lectura('form_crear_usuario-pais_documento', true); + $('#form_crear_usuario-pais_documento').children().remove(); + } else { + buscar_paises(nacionalidad); + set_solo_lectura('form_crear_usuario-pais_documento', false); + if (nacionalidad !== '2') { + set_solo_lectura('form_crear_usuario-tipo_documento', false); + } else { + set_solo_lectura('form_crear_usuario-tipo_documento', true); + } + } + cambio_pais_documento(); +} + +function buscar_paises(_nacionalidad) +{ + $.ajax({ + url: url_cascada_nac, + dataType: 'json', + async: false, + data: {nacionalidad: _nacionalidad}, + type: 'post', + success: function(data) { + $('#form_crear_usuario-pais_documento').children().remove(); + $.each(data, function(key, value) { + $('#form_crear_usuario-pais_documento').append( + $('').val(key).html(value) + ); + }); + ordenar_combo('form_crear_usuario-pais_documento'); + } + }); +} + +function cambio_pais_documento() +{ + var valor = $('#form_crear_usuario-pais_documento').val(); + if ((valor === no_seleccion) || (valor === null)) { + set_solo_lectura('form_crear_usuario-tipo_documento', true); + $('#form_crear_usuario-tipo_documento').val(no_seleccion); + } else { + set_solo_lectura('form_crear_usuario-tipo_documento', false); + } + cambio_tipo_documento(); +} + +function cambio_tipo_documento() +{ + var valor = $('#form_crear_usuario-tipo_documento').val(); + if (valor === no_seleccion) { + set_solo_lectura('form_crear_usuario-nro_documento', true);; + $('#form_crear_usuario-nro_documento').val(''); + } else { + set_solo_lectura('form_crear_usuario-nro_documento', false); + } +} + +kernel.renderer.registrar_pagelet('crear_usuario', function(info) { + var id = '#' + info.id; + url_cascada_nac = info.url_paises; + + return { + + onload: function() { + + $('#form_crear_usuario').submit(function() { + var $currentIFrame = $('#frameRC'); + $("#recaptcha_response_field").val($currentIFrame.contents().find("body #recaptcha_response_field").val()); + $("#recaptcha_challenge_field").val($currentIFrame.contents().find("body #recaptcha_challenge_field").val()); + }); + + inicializar_nacionalidad(); + cambio_pais_documento(); + cambio_tipo_documento(); + + //---- Manejo de visibilidad de secciones por eventos -------------- + $('#form_crear_usuario-nacionalidad').on('change', function() {cambio_nacionalidad();}); + $('#form_crear_usuario-pais_documento').on('change', function() {cambio_pais_documento();}); + $('#form_crear_usuario-tipo_documento').on('change', function() {cambio_tipo_documento();}); + + //------------------------------------------------------------------ + + $('#frameRC').contents().on('keypress', function(e) { + if(e.which === 13) { + $('#form_crear_usuario').submit(); + } + }); + } + } +}) diff --git a/src/siu/operaciones/asociar_usuario_se/contenido/default.css b/src/siu/operaciones/asociar_usuario_se/contenido/default.css new file mode 100644 index 0000000..e69de29 diff --git a/src/siu/operaciones/asociar_usuario_se/contenido/default.twig b/src/siu/operaciones/asociar_usuario_se/contenido/default.twig new file mode 100644 index 0000000..89eae58 --- /dev/null +++ b/src/siu/operaciones/asociar_usuario_se/contenido/default.twig @@ -0,0 +1,9 @@ +{% extends "kernel/pagelet.twig" %} +{% block contenido %} ++ + {{"ayuda_menu.sub_titulo"|trans}} + +
++ {{ 'ayuda_menu.cuerpo_email' | trans({ + '%nombres%': nombres, + '%mensaje%': mensaje, + '%nro_documento%': nro_documento, + '%email%': email + })|raw + }} +
+ + diff --git a/src/siu/operaciones/ayuda_menu/contacto/pagelet_contacto.js b/src/siu/operaciones/ayuda_menu/contacto/pagelet_contacto.js new file mode 100644 index 0000000..e6dac88 --- /dev/null +++ b/src/siu/operaciones/ayuda_menu/contacto/pagelet_contacto.js @@ -0,0 +1,147 @@ +kernel.renderer.registrar_pagelet('contacto', function (info) { + + var id = '#' + info.id; + + return { + onload: function () + { + //cargo los span ocultos para luego mostrarlos al validar + $('#form_id_nombres').append(""); + $('#form_id_nro_documento').append(''); + $('#form_id_email').append(''); + $('#form_id_mensaje').append(''); + + //VALIDAR NOMBRE Y APELLIDO + $(id).on('blur', '#form_contacto-nombres', function () + { + validarNombre(); + }); + + function validarNombre() + { + var valido = true; + var nombre = $('#form_contacto-nombres').val(); + + if(nombre == ""){ + $('#form_id_nombres').addClass('error'); + $('#js-error-nombre').text(info.mensajes.error_vacio).show(); + valido = false; + } + if(valido){ + $('#js-error-nombre').hide(); + $('#form_id_nombres').removeClass('error'); + } + return valido; + } + + //VALIDAR DNI + $(id).on('blur', '#form_contacto-nro_documento', function () + { + validarDni(); + }); + function checkDNI(dni){ + var ex_regular_dni = RegExp(info.regexp_doc);; + if(ex_regular_dni.test (dni) == false){ + return true; + }else{ + return false; + } + } + function validarDni() + { + var valido = true; + var nombre = $('#form_contacto-nro_documento').val(); + + if(nombre == ""){ + $('#form_id_nro_documento').addClass('error'); + $('#js-error-nro_documento').text(info.mensajes.error_vacio).show(); + valido = false; + }else{ + if(checkDNI(nombre)){ + $('#form_id_nro_documento').addClass('error'); + $('#js-error-nro_documento').text(info.mensajes.error_dni).show(); + valido = false; + } + } + + if(valido){ + $('#js-error-nro_documento').hide(); + $('#form_id_nro_documento').removeClass('error'); + } + return valido; + } + + //VALIDAR EMAIL + $(id).on('blur', '#form_contacto-email', function () + { + validarEmail(); + }); + function checkEmail(email){ + var ex_regular_email = new RegExp(info.regexp_email,'i'); + if(ex_regular_email.test(email) == false){ + return true; + }else{ + return false; + } + } + function validarEmail() + { + var valido = true; + var nombre = $('#form_contacto-email').val(); + + if(nombre == ""){ + $('#form_id_email').addClass('error'); + $('#js-error-email').text(info.mensajes.error_vacio).show(); + valido = false; + }else{ + if(checkEmail(nombre)){ + $('#form_id_email').addClass('error'); + $('#js-error-email').text(info.mensajes.error_email).show(); + valido = false; + } + } + + if(valido){ + $('#js-error-email').hide(); + $('#form_id_email').removeClass('error'); + } + return valido; + } + + //VALIDAR MENSAJE TEXTAREA + $(id).on('blur', '#form_contacto-mensaje', function () + { + validarMensaje(); + }); + + function validarMensaje() + { + var valido = true; + var nombre = $('#form_contacto-mensaje').val(); + + if(nombre == ""){ + $('#form_id_mensaje').addClass('error'); + $('#js-error-mensaje').text(info.mensajes.error_vacio).show(); + valido = false; + } + if(valido){ + $('#js-error-mensaje').hide(); + $('#form_id_mensaje').removeClass('error'); + } + return valido; + } + + //SUBMIT + $(id).on('submit', '#form_contacto', function (event) + { + if(validarNombre() && validarDni() && validarEmail() && validarMensaje()){ + return true; + }else{ + event.preventDefault(); + return false; + } + }); + } + } + +}); diff --git a/src/siu/operaciones/ayuda_menu/controlador.php b/src/siu/operaciones/ayuda_menu/controlador.php new file mode 100644 index 0000000..679a190 --- /dev/null +++ b/src/siu/operaciones/ayuda_menu/controlador.php @@ -0,0 +1,143 @@ +vista()->set_pagelet('confirmacion'); + $pagelet = $this->vista()->pagelet('contacto'); + } + + function accion__carga_datos_contacto() + { + $pagelet = $this->vista()->set_pagelet('contacto'); + + if (kernel::request()->isPost()) { + + try { + // Chequeo de CSRF + $this->check_csrf(); + } catch (\Exception $e) { + $this->add_error($this->trans('error_csrf')); + $pagelet->set_estado_info(pagelet_contacto::FORM_ERROR_CSRF); + return; + } + + if ($this->usa_captcha()) { + // Chequeo de recaptcha + if (!static::check_recaptcha2()) { + $this->add_error($this->trans('error_recaptcha')); + $pagelet->set_estado_info(pagelet_contacto::FORM_ERROR_RECAPTCHA); + return; + } + } + + // Validación de formulario y alta de usuario + $form = $pagelet->get_form(); + if ($form->procesar()) { + $datos = $form->get_datos(); + + if (!$this->enviar_mensaje($datos)) { + $this->add_error($this->trans('ayuda_menu.error_email')); + $pagelet->set_estado_info(pagelet_contacto::FORM_ERROR_EMAIL); + kernel::renderer()->add($pagelet); + } else { + $operacion = kernel::ruteador()->get_id_operacion(); + $this->nuevo_request($operacion, 'confirmacion'); + } + } else { + if ($form->tiene_errores()) { + $this->add_error($this->trans('ayuda_menu.alta_error')); + $pagelet->set_estado_info(pagelet_contacto::FORM_ERROR_VALIDACION); + kernel::renderer()->add($pagelet); + } + } + } + } + + //-------------------------------------------------------------------------- + //---- RECAPTCHA ----------------------------------------------------------- + //-------------------------------------------------------------------------- + + function usa_captcha() + { + return kernel::proyecto()->get('usa_captcha'); + } + + protected function add_error($mensaje, $e = null) + { + $mensajes = array(); + $mensajes[] = array( + self::mensaje_cuerpo => $mensaje, + self::mensaje_tipo => preinscripcion::control_error, + ); + $this->add_var('mensajes', $mensajes); + if (!is_null($e)) { + kernel::log()->add_error($e); + } + } + + function enviar_mensaje($datos_mail) + { + $email = kernel::proyecto()->get_email_ayuda(); + if ($email) { + $asunto = kernel::traductor()->trans('ayuda_menu.asunto_email'); + $tpl = kernel::load_template('contacto/mail_contacto.twig'); + $cuerpo = $tpl->render($datos_mail); + + $mail = new mail($email, $asunto, $cuerpo); + $mail->set_html(true); + $mail->set_reply($datos_mail['email']); + + try { + $mail->enviar(); + $mail_enviado = true; + } catch (\SIU\Chulupi\ErrorKernel $e) { + $mail_enviado = false; + } + } else { + $mail_enviado = false; + } + + return $mail_enviado; + } + + function exp_reg_dni() + { + try { + $tipo_doc = 0; + $tipos_documento = g3::entidad('tipos_documentos')->get_entidad($tipo_doc); + $expresion = $tipos_documento['exp_regular_validacion']; + $patt = '/' . $expresion . '/'; + } catch (\SIU\Chulupi\ErrorKernel $e) { + $patt = "/^\d{1,8}$/"; + } + + return $patt; + } + +} \ No newline at end of file diff --git a/src/siu/operaciones/ayuda_menu/pagelet_confirmacion.php b/src/siu/operaciones/ayuda_menu/pagelet_confirmacion.php new file mode 100644 index 0000000..cbc5b8f --- /dev/null +++ b/src/siu/operaciones/ayuda_menu/pagelet_confirmacion.php @@ -0,0 +1,21 @@ +get_id_operacion(); + $this->data['url_volver'] = kernel::vinculador()->crear($operacion, 'index'); + } + +} \ No newline at end of file diff --git a/src/siu/operaciones/ayuda_menu/pagelet_contacto.php b/src/siu/operaciones/ayuda_menu/pagelet_contacto.php new file mode 100644 index 0000000..2795812 --- /dev/null +++ b/src/siu/operaciones/ayuda_menu/pagelet_contacto.php @@ -0,0 +1,92 @@ +form)) { + $this->form = kernel::localizador()->instanciar('operaciones\ayuda_menu\contacto\form_contacto'); + } + //kernel::log()->add_error($this->form); + return $this->form; + } + + function prepare() + { + //Carga los datos para la vista + $this->data['mensajes'] = $this->controlador->get_var_default('mensajes', array()); + $this->data['url_volver'] = kernel::vinculador()->crear('acceso', 'index'); + $this->data['usar_captcha'] = $this->controlador->usa_captcha(); + + $form = $this->get_form(); + + switch ($this->estado) { + case static::FORM_ERROR_VALIDACION: + $this->data['mensajes'] = $this->controlador->get_var('mensajes'); + $this->data['error'] = true; + break; + case static::FORM_ERROR_RECAPTCHA: + $this->data['mensajes'] = $this->controlador->get_var('mensajes'); + $this->data['error'] = true; + $form->inicializar(); + $form->set_datos_desde_post(); + break; + case static::FORM_ERROR_CSRF: + $this->data['mensajes'] = $this->controlador->get_var('mensajes'); + $this->data['error'] = true; + $form->inicializar(); + $form->set_datos_desde_post(); + break; + case static::FORM_ERROR_EMAIL: + $this->data['mensajes'] = $this->controlador->get_var('mensajes'); + $this->data['error'] = true; + $form->inicializar(); + $form->set_datos_desde_post(); + break; + default: + $form->inicializar(); + break; + } + + $this->data['inicial'] = static::FORM_INICIAL; + $this->data['form_error_validacion'] = static::FORM_ERROR_VALIDACION; + $this->data['error_recaptcha'] = static::FORM_ERROR_RECAPTCHA; + $this->data['form_error_csrf'] = static::FORM_ERROR_CSRF; + $this->data['error_email'] = static::FORM_ERROR_EMAIL; + $this->data['csrf'] = $this->generar_csrf(); + $this->add_form($form); + $string = str_replace(['/', 'i'], '', \siu\modelo\comunes::er_email); + $this->add_var_js('regexp_email', $string); + + $exp_dni = $this->controlador->exp_reg_dni(); + $exp_dni = str_replace('/', '', $exp_dni); + $this->add_var_js('regexp_doc', $exp_dni); + $this->add_mensaje_js('error_vacio', kernel::traductor()->trans('ayuda_menu.error_vacio')); + $this->add_mensaje_js('error_dni', kernel::traductor()->trans('ayuda_menu.error_dni')); + $this->add_mensaje_js('error_email', kernel::traductor()->trans('ayuda_menu.error_email')); + } + +} \ No newline at end of file diff --git a/src/siu/operaciones/ayuda_menu/template.twig b/src/siu/operaciones/ayuda_menu/template.twig new file mode 100644 index 0000000..fe62366 --- /dev/null +++ b/src/siu/operaciones/ayuda_menu/template.twig @@ -0,0 +1,4 @@ +{% extends "kernel/una_columna_sin_titulo.twig" %} +{% block columna_1 %} + {{ contacto.render }} +{% endblock %} diff --git a/src/siu/operaciones/ayuda_menu/vista.php b/src/siu/operaciones/ayuda_menu/vista.php new file mode 100644 index 0000000..898a388 --- /dev/null +++ b/src/siu/operaciones/ayuda_menu/vista.php @@ -0,0 +1,27 @@ +instanciar($clase, 'contacto'); + $this->add_pagelet($pl); + return $pl; + } + + function ini() + { + $clase = 'operaciones\ayuda_menu\pagelet_contacto'; + $pl = kernel::localizador()->instanciar($clase, 'contacto'); + $this->add_pagelet($pl); + + kernel::pagina()->set_etiqueta('titulo', kernel::traductor()->trans('header.menu.ayuda_menu')); + } + +} \ No newline at end of file diff --git a/src/siu/operaciones/censo/_comun/pagelet_con_edicion.php b/src/siu/operaciones/censo/_comun/pagelet_con_edicion.php new file mode 100644 index 0000000..b446f3e --- /dev/null +++ b/src/siu/operaciones/censo/_comun/pagelet_con_edicion.php @@ -0,0 +1,31 @@ +pantalla = $id; + } + + function get_accion_edicion() + { + return kernel::vinculador()->crear('censo', 'edicion', array($this->controlador->vista()->get_id_form_activo())); + } + + function get_accion_volver_edicion() + { + return kernel::vinculador()->crear('censo', 'volver_edicion', array($this->controlador->vista()->get_id_form_activo())); + } + +} +?> \ No newline at end of file diff --git a/src/siu/operaciones/censo/_comun/selector_colegio/selector_colegio.twig b/src/siu/operaciones/censo/_comun/selector_colegio/selector_colegio.twig new file mode 100644 index 0000000..1d6c35c --- /dev/null +++ b/src/siu/operaciones/censo/_comun/selector_colegio/selector_colegio.twig @@ -0,0 +1,39 @@ +| ' . kernel::traductor()->trans('colegio_secundario') . ' | +' . kernel::traductor()->trans('localidad') . ' | ++ |
|---|---|---|
| ' . $dato['nombre'] . ' | +' . $dato['localidad_nombre'] . ' | ++ + | +
| + + + + | +||
| ' . kernel::traductor()->trans('titulo_secundario') . ' | ++ | |
|---|---|---|
| ' . $dato['nombre'] . ' | ++ + | +|
| + + + + | +||
{{'ayuda_identidad_genero'|trans({'%link%': this.data.url_identidad_genero})|raw}}
+ ++ {{ 'doc.msj_extensiones' | trans }} {{ this.data.extensiones }} +
++ {{ 'doc.msj_tamanio_max' | trans }} {{ this.data.tamanio_maximo }} MB +
+ {% else %} +{{ REQUISITO.descripcion }}
+ {% endif %} + {% if REQUISITO.imagen %} + + {% else %} + + {% endif %} +| {{'responsable_academica'|trans}} | +{{'propuesta'|trans}} | +{{'tipo_de_propuesta'|trans}} | +{{'ubicacion'|trans}} | +{{'modalidad'|trans}} | +{{'fecha_fin_vigencia'|trans}} | ++ |
|---|---|---|---|---|---|---|
| {{item.ra_nombre}} | +{{item.propuesta_nombre}} | +{{item.tipo_propuesta_descr}} | +{{item.ubicacion_nombre}} | +{{item.modalidad_nombre}} | +{{item.fecha_fin_vigencia_visual}} | +
+ {{this.data.mensaje_lateral|trans|raw}} +
+| {{'responsable_academica'|trans}} | +{{'propuesta'|trans}} | +{{'tipo_de_propuesta'|trans}} | +{{'ubicacion'|trans}} | +{{'modalidad'|trans}} | +{{'fecha_fin_vigencia'|trans}} | +{{'observaciones'|trans}} | ++ |
|---|---|---|---|---|---|---|---|
| {{item.ra_nombre}} | +{{item.propuesta_nombre}} | +{{item.tipo_propuesta_descr}} | +{{item.ubicacion_nombre}} | +{{item.modalidad_nombre}} | +{{item.fecha_fin_vigencia_visual}} | ++ {% if item.observaciones %} + + {% endif %} + | ++ {% if item.estado != 'I' %} + + {% endif %} + | +
| + {{'pre_prop_observaciones'|trans}} {{item.observaciones}} + | +|||||||
+ {{ 'turno.info' | trans }} +
++ {{ 'sel_turno.descripcion'|trans }} +
+
+ " . kernel::traductor()->trans('seccion') . ': ' . kernel::traductor()->trans($nombre_seccion) . "+ |
+ |||||
| " . kernel::traductor()->trans('campo') . " | +" . kernel::traductor()->trans('etiqueta') . " | +" . kernel::traductor()->trans('visible') . " | +" . kernel::traductor()->trans('obligatorio') . " | +" . kernel::traductor()->trans('se_imprime') . " | +" . kernel::traductor()->trans('genera_reporte') . " | +
{{ this.data.mensaje_importar }}
+{% endif %} +{{this.data.info}}
+ {{ 'perfil_datos.sin_ubicaciones' | trans }}
+{{ 'perfil_datos.sin_propuestas' | trans }}
+ +| {{ 'test_cnx.vendor'|trans}}: | +{{ this.data.datos_cnx.vendor }} | +
| {{ 'test_cnx.dbname'|trans}}: | +{{ this.data.datos_cnx.dbname }} | +
| {{ 'test_cnx.schema'|trans}}: | +{{ this.data.datos_cnx.schema }} | +
| {{ 'test_cnx.host'|trans}}: | +{{ this.data.datos_cnx.host }} | +
| {{ 'test_cnx.port'|trans}}: | +{{ this.data.datos_cnx.port }} | +
| {{ 'test_cnx.pdo_user'|trans}}: | +{{ this.data.datos_cnx.pdo_user }} | +
| {{ 'test_cnx.pdo_pass'|trans}}: | +*********** | +
| {{ ('mail_' ~ key) | trans}} | +{{ val }} | +
+ {{ 'cuerpo_email_prueba'|trans|raw }} +
+ + \ No newline at end of file diff --git a/src/siu/operaciones/test_mail/form_test/pagelet_form_test.js b/src/siu/operaciones/test_mail/form_test/pagelet_form_test.js new file mode 100644 index 0000000..30b9b88 --- /dev/null +++ b/src/siu/operaciones/test_mail/form_test/pagelet_form_test.js @@ -0,0 +1,9 @@ +kernel.renderer.registrar_pagelet('form_test', function(info) { + var id = '#' + info.id; + + return { + onload: function() { + + } + } +}) diff --git a/src/siu/operaciones/test_mail/pagelet_configuracion.php b/src/siu/operaciones/test_mail/pagelet_configuracion.php new file mode 100644 index 0000000..b59141b --- /dev/null +++ b/src/siu/operaciones/test_mail/pagelet_configuracion.php @@ -0,0 +1,35 @@ +data['smtp'] = kernel::proyecto()->get_parametros_smtp(); + + if (isset($this->data['smtp']['from_name'])) { + // Se arregla problema de encoding con el campo 'from_name', dice 'SIU-Preinscripción' en lugar de 'SIU-Preinscripción'. + $valid_utf8 = mb_check_encoding($this->data['smtp']['from_name'], 'UTF-8'); + if ($valid_utf8) { + $this->data['smtp']['from_name'] = utf8_decode($this->data['smtp']['from_name']); + } + } + + $this->data['es_default'] = $this->controlador->es_usuario_default(); + } + +} \ No newline at end of file diff --git a/src/siu/operaciones/test_mail/pagelet_form_test.php b/src/siu/operaciones/test_mail/pagelet_form_test.php new file mode 100644 index 0000000..e6b7da4 --- /dev/null +++ b/src/siu/operaciones/test_mail/pagelet_form_test.php @@ -0,0 +1,58 @@ +form)) { + $this->form = kernel::localizador()->instanciar('operaciones\test_mail\form_test\form_prueba'); + } + return $this->form; + } + + function prepare() + { + if ($this->controlador->es_usuario_default()) { + $this->data['usuario_default'] = true; + } else { + $this->data['usuario_default'] = false; + + $form = $this->get_form(); + + switch ($this->estado) { + case self::MAIL_ENVIADO: + $this->data['mensaje'] = kernel::traductor()->trans('mensaje_prueba_enviado'); + break; + case self::ERROR_ENVIO_MAIL: + $this->data['mensaje'] = kernel::traductor()->trans('mensaje_prueba_error'); + break; + case self::FORM_ERROR_VALIDACION : + break; + default: + $form->inicializar(); + } + + $this->add_form($form); + } + } + +} +?> \ No newline at end of file diff --git a/src/siu/operaciones/test_mail/template.twig b/src/siu/operaciones/test_mail/template.twig new file mode 100644 index 0000000..e4ee6db --- /dev/null +++ b/src/siu/operaciones/test_mail/template.twig @@ -0,0 +1,7 @@ +{% extends "kernel/dos_columnas_login.twig" %} +{% block columna_1 %} + {{ configuracion.render }} +{% endblock %} +{% block columna_2 %} + {{ form.render }} +{% endblock %} \ No newline at end of file diff --git a/src/siu/operaciones/test_mail/vista.php b/src/siu/operaciones/test_mail/vista.php new file mode 100644 index 0000000..9f0c049 --- /dev/null +++ b/src/siu/operaciones/test_mail/vista.php @@ -0,0 +1,34 @@ +instanciar($clase, 'form'); + $this->add_pagelet($pl); + return $pl; + } + + function ini() + { + $clase = 'operaciones\\test_mail\\pagelet_configuracion'; + $pl = kernel::localizador()->instanciar($clase, 'configuracion'); + $this->add_pagelet($pl); + + kernel::pagina()->set_etiqueta('titulo', kernel::traductor()->trans('tit_test_mail')); + } + + function pagelet($id) + { + $clase = "operaciones\\test_mail\\pagelet_$id"; + return kernel::localizador()->instanciar($clase, $id); + } + +} +?> \ No newline at end of file diff --git a/src/siu/preinscripcion.php b/src/siu/preinscripcion.php new file mode 100644 index 0000000..e1ae3a8 --- /dev/null +++ b/src/siu/preinscripcion.php @@ -0,0 +1,153 @@ +instanciar_singleton("modelo\\usuario"); + } + + /** + * Instancia el modelo de usuarios administradores + * + * @return modelo\admin + */ + static function admin() + { + return kernel::localizador()->instanciar_singleton("modelo\\admin"); + } + + //-------------------------------------------------------------------------- + //---- Paths comunes ------------------------------------------------------- + //-------------------------------------------------------------------------- + + static function dir() + { + return \realpath(\dirname(__FILE__)); + } + + static function dir_fonts() + { + return bootstrap::get_dir_raiz() . '/vendor/rebuy/ezpdf/src/ezpdf/fonts/'; + } + + static function dir_temp() + { + return kernel::proyecto()->get_dir_temp(); + } + + //-------------------------------------------------------------------------- + + static function servicios_externos() + { + if (!isset(self::$servicios_externos)) { + self::$servicios_externos = new servicios_externos_preinscripcion(); + } + return self::$servicios_externos; + } + + //-------------------------------------------------------------------------- + + static function mail_configurado() + { + $smtp = kernel::proyecto()->get_parametros_smtp(); + if ((empty($smtp)) || (empty($smtp['from'])) || ($smtp['from'] == 'preinscripcion@gmail.com')) { + // No hay configuración o está la configuración de ejemplo. + return false; + } else { + return true; + } + } + + /** + * Determina si la versión de la base se corresponde con la versión del sistema. + * + * @return boolean + */ + static function versiones_compatibles() + { + try { + // Versión del archivo version.ini + $version_sistema = kernel::proyecto()->get_version_sistema(); + // Versión del ultimo registro de la tabla app_versiones_base columna version_base + $version_base = util::consultas()->get_version_base(); + // https://www.php.net/manual/es/function.version-compare.php + return version_compare($version_sistema, $version_base, '=='); + } catch (errores\error_preinscripcion_cnx_bd $e) { + throw $e; + } + } + +} \ No newline at end of file diff --git a/src/siu/util/consola/comandos/comando_preinscripcion.php b/src/siu/util/consola/comandos/comando_preinscripcion.php new file mode 100644 index 0000000..74d2bdc --- /dev/null +++ b/src/siu/util/consola/comandos/comando_preinscripcion.php @@ -0,0 +1,15 @@ + true, 'nombre' => 'css/preinscripcion.css'], + 'css/facebox.css', + 'css/jquery-ui.css', + ]; + + protected $css_not_browser = [ + 'css/bootstrap.css', + 'css/bootstrap-responsive.css', + 'css/preinscripcion.css', + 'css/preinscripcion-responsive.css', + 'css/facebox.css', + 'css/jquery-ui.css', + ]; + + function __construct() + { + $this->path_destino = preinscripcion::dir() . '/www/_comp'; + parent::__construct(); + } + + protected function get_namespaces() + { + $rs = array( + 'siu' => realpath(preinscripcion::dir() . '/..') + ); + $base_pers_dir = realpath(preinscripcion::dir() . '/../pers'); + $pers = array_filter(glob("$base_pers_dir/*"), 'is_dir'); + foreach ($pers as $path) { + $nombre = basename($path); + $rs[$nombre] = dirname($path); + } + + return $rs; + } + + protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output) + { + $this->bootstrap_kernel(); + + kernel::log_cli()->debug('=== Archivos JSs a mashear ==='); + kernel::log_cli()->debug(print_r($this->js, true)); + kernel::log_cli()->debug('=== Archivos CSSs Browser a mashear ==='); + kernel::log_cli()->debug(print_r($this->css_browser, true)); + kernel::log_cli()->debug('=== Archivos CSSs not Browser a mashear ==='); + kernel::log_cli()->debug(print_r($this->css_not_browser, true)); + + $this->preparar_compilacion($input, $output); + + $this->mostrar_mensaje('Masheando archivos'); + $this->mash($this->js, 'preinscripcion_mash.js'); + $this->mash($this->css_browser, 'preinscripcion_mash.css'); + $this->mash($this->css_not_browser, 'preinscripcion_mash_not_browser.css'); + } + + protected function bootstrap_kernel($ua = false) + { + $_SERVER['PERFIL'] = 'consola'; + \siu\bootstrap::cargar(true, $ua); + } + + protected function preparar_compilacion(Console\Input\InputInterface $input, Console\Output\OutputInterface $output) + { + $this->input = $input; + $this->output = $output; + + $this->mostrar_mensaje('Borrando compilaciones anteriores'); + $this->borrar_directorio($this->path_destino, false); + + $this->mostrar_mensaje('Borrando cache de twig'); + $this->borrar_cache_twig(); + $this->path_destino = $input->getArgument('path'); + $namespaces = $this->get_namespaces(); + $recursos = array( + 'comun' => array(), + 'pagelets' => array() + ); + + foreach ($namespaces as $id => $dir) { + $path_ns = $dir . "/$id"; + $recursos['www'][$id] = $this->compilar_www($path_ns); + $recursos['comun'][$id] = $this->compilar_comun($path_ns); + $recursos['pagelets'][$id] = $this->compilar_pagelets($path_ns); + } + + $this->crear_compilacion($recursos); + $this->mostrar_mensaje('Fin de compresion'); + } + + function borrar_directorio($dir, $borrar_carpeta = true) + { + if (!$dh = @opendir($dir)) { + return; + } + while (false !== ($obj = readdir($dh))) { + if ($obj == '.' || $obj == '..') + continue; + if (!@unlink($dir . '/' . $obj)) { + $this->borrar_directorio($dir . '/' . $obj, true); + } + } + closedir($dh); + if ($borrar_carpeta) { + @rmdir($dir); + } + } + + protected function mash($files, $filename) + { + $type = pathinfo($filename, \PATHINFO_EXTENSION); + $siu_files = array(); + $archivos_por_pers = array(); + $personalizaciones = $this->get_namespaces(); + + foreach ($files as $key => $file) { + if (is_array($file)) { + $siu_files[$key] = $this->path_destino.'/siu/'.$file['nombre']; + $buscar_pers = isset($file['pers']) && $file['pers']; + if ($buscar_pers) { + foreach (array_keys($personalizaciones) as $id) { + if ($id == 'siu') continue; + $pers_file = "$this->path_destino/$id/{$file['nombre']}"; + if (file_exists($pers_file)) { + $archivos_por_pers[$id][] = $pers_file; + } + } + } + } else { + $siu_files[$key] = $this->path_destino.'/siu/'.$file; + } + } + + $file_list = implode(' ', $siu_files); + $salida = "$this->path_destino/siu/$type/$filename"; + + if (\SIU\Chulupi\util\ManejadorArchivos::es_windows()) { + $salida = str_replace('/', "\\", $salida); + $cmd = "type $file_list >> $salida"; + foreach ($files as $file) { + $file = str_replace('/', "\\", $file); + $cmd = "type $file >> $salida"; + exec($cmd); + } + } else { + $cmd = "cat $file_list > $salida"; + exec($cmd); + } + + + if (!empty($archivos_por_pers)) { + foreach ($archivos_por_pers as $pers => $archivos_pers) { + $file_list = implode(' ', $archivos_pers); + $salida = "$this->path_destino/$pers/$type/$filename"; + + if (\SIU\Chulupi\util\ManejadorArchivos::es_windows()) { + $salida = str_replace('/', "\\", $salida); + $cmd = "type $file_list >> $salida"; + foreach ($files as $file) { + $file = str_replace('/', "\\", $file); + $cmd = "type $file >> $salida"; + exec($cmd); + } + } else { + $cmd = "cat $file_list > $salida"; + exec($cmd); + } + } + } + } + + protected function guardar_archivo($archivo, $path_nuevo, $comprimir = true, $absoluto = false) + { + if (!manejador_archivos::es_windows()) { + parent::guardar_archivo($archivo, $path_nuevo, $comprimir, $absoluto); + return; + } + + if (!$absoluto) { + $archivo = kernel::localizador()->path_recurso($archivo); + } + + manejador_archivos::crear_archivo_con_datos($path_nuevo, ''); + if ($comprimir) { + + $encoding = kernel::proyecto()->get_encoding(); + $cmd = "yuicompressor-2.4.2.jar $archivo --charset $encoding -o $path_nuevo"; + exec($cmd); + } else { + copy($archivo, $path_nuevo); + } + } + +} \ No newline at end of file diff --git a/src/siu/util/consola/comandos/user_admin.php b/src/siu/util/consola/comandos/user_admin.php new file mode 100644 index 0000000..e78387b --- /dev/null +++ b/src/siu/util/consola/comandos/user_admin.php @@ -0,0 +1,91 @@ +setName('user_admin') + ->setDescription('Genera un usuario administrador') + ->setHelp(sprintf( + '%sGenera un usuario administrador.%s', + PHP_EOL, + PHP_EOL + )); + } + + protected function execute(Console\Input\InputInterface $input, Console\Output\OutputInterface $output) + { + $this->input = $input; + $this->output = $output; + + $this->bootstrap_kernel(); + + $helper = $this->getHelper('question'); + + // Nombre de usuario + do { + $question_username = new Console\Question\Question('Ingrese el nombre del usuario administrador (ENTER asume "admin"): ', 'admin'); + $username = $helper->ask($input, $output, $question_username); + } while (!$this->usuario_valido($username)); + + // Clave + do { + $question_password = new Console\Question\Question('Ingrese el PASSWORD del usuario administrador: '); + $password = $helper->ask($input, $output, $question_password); + } while (!$this->clave_valida($username, $password)); + + // ID pto de acceso + do { + $question_id_pto_acceso = new Console\Question\Question('Ingrese el ID DE PUNTO DE ACCESO en el que operara del usuario administrador (ante la duda, verificar el valor de "SetEnv ID_PTO_ACCESO" en alias.conf): '); + $id_pto_acceso = $helper->ask($input, $output, $question_id_pto_acceso); + } while (empty($id_pto_acceso)); + + // Se genera usuario + preinscripcion::admin()->crear_usuario($username, $password, $id_pto_acceso); + + // Mensajes finales + $output->writeln("---------------------------------------------------------"); + $output->writeln("Se ha creado el siguiente usuario administrador:"); + $output->writeln(" - username: " . $username); + $output->writeln(" - password: " . $password); + $output->writeln(" - ID_PTO_ACCESO: " . $id_pto_acceso); + $output->writeln("---------------------------------------------------------"); + } + + protected function usuario_valido($username) + { + try { + preinscripcion::admin()->usuario_valido($username); + } catch (\siu\errores\error_preinscripcion_usuario $ex) { + $this->output->writeln("