Personalizar controles

Hola!
Hemos hecho una operación personalizada y funciona bien, pero necesitamos agregarle unos controles personalizados. Podrían indicarnos como es el procedimiento para hacerlo.
Saludos,
Flavia

Hola Flavia, cual es la operación a la cual le quieren personalizar los controles?

saludos, Leo.

Hola Leo!
Es una operación nueva, propia de nuestra universidad. Es para que los alumnos puedan elegir en que unidad hospitalaria (hospital escuela) cursarán sus materias.
Esa operación tiene un par de controles específicos.

Saludos!

Ok, dejame ver y ya te digo.

Hola Flavia, tenes que hacer lo siguiente:

Agregar el punto de control en unas tablas de la base de datos (https://repositorio.siu.edu.ar/trac/Portal-G3/wiki/G2/ConsideracionesTecnicas/ControlesConfigurables)

y luego seguir estos otros pasos (https://repositorio.siu.edu.ar/trac/Portal-G3/wiki/G2/ConsideracionesTecnicas/ControlesConfigurables/ejemplo)

proba siguiendo los pasos y cualquier cosa me decís.

saludos, Leonel.

Me olvide de decirte, si encontras algo mal o que no funciona en la documentación que te pase ponelo acá en el foro así la corregimos.

saludos, Leonel.

Leonel,
pude hacer que salgan las notificaciones de los controles, pero no se como hacer para que los que sean estrictos anulen el acceso a la operación.
Además necesito agregar otro control que se ejecute al presionar el botón Guardar.

Saludos!
Flavia

Hola Flavia, estoy viendo eso, te pediría que entres de nuevo a la operación que creaste y que me envíes los logs que se generan, ademas envíame también una captura de pantalla de la notificación que te tira.

Otra cosa, anda a src/pers/cordoba/operaciones/u_hospitalarias/controlador.php y en la funcion accion__index(), luego de la linea

$mensajes = $this->get_var('mensajes');

agrega estos var_dumps:


        var_dump($hubo_error);
        var_dump($mensajes);

y luego envíame una captura de pantalla para poder ver que contienen esas variables.

saludos.

Leonel, te adjunto los logs de errores de la operación (20140911_100226___4910log.txt) y la captura de pantalla (pantalla.jpg).
Además te adjunto la captura de pantalla con los var_dump (var_dump.jpg)

Saludos!
Flavia


20140911_100226___4910log.txt (39.3 KB)

Pantalla.jpg

Pantalla.png

var_dump.jpg

var_dump.png

Hola Flavia, proba esto:

en la vista de tu personalización (src/pers/cordoba/operaciones/u_hospitalarias/vista.php) agrega este método/función:


    /**
     * Se agrega una función en especial para poder desactivar la renderización
     * en caso de haya error
     * @param type $nombre
     */
    function render_pagelet($nombre)
    {
        if (! $this->error) {
            return $this->pagelet($nombre)->render();
        }

        return '';
    }

luego en el template (src/pers/cordoba/operaciones/u_hospitalarias/template.twig) cambiar lo siguiente:

{{ formulario.render }}

por

{{ this.render_pagelet('formulario') }}

fíjate si con eso funciona.

saludos, Leonel.

Hola!
Agregando ese método funcionó perfectamente. Gracias!
Lo que necesitaríamos ahora es agregar otro control que se ejecute al presionar el botón Guardar.
Saludos!!
Flavia

Leonel, algo que me olvide de poner antes. Cuando activamos/desactivamos los controles para probar quedan cacheados y no se reflejan los cambios.
Desde donde cambiamos esa configuración?
Saludos!
Flavia

Hola Flavia, para agregar otro punto de control en el guardar fíjate como se esta haciendo en src/siu/operaciones/cursada/controlador.php función accion__inscribir(), fíjate esta parte:


                $hubo_error = $this->exec_fn_modelo('evt__inscripcion', array($materia, $comision, $subcomisiones));
		if ($hubo_error) {
			// Se genera un nuevo csrf xq el anterior ya se consumió
			kernel::renderer()->add_csrf($this->generar_csrf());
			// esta llamada finaliza el request
			$this->finalizar_request_con_notificaciones(kernel::traductor()->trans('error_insc_cursada'), $this->get_var('mensajes'));
		}

lo que esta haciendo es llamar a la función evt__inscripcion() de src/siu/modelo/transacciones/inscripcion_cursada.php, fíjate que acá ejecuta los controles, cuando los controles fallan tiran una excepción del tipo error_guarani_control que la atrapa la función exec_fn_modelo la cual devuelve true si hubo errores false en otros casos y ademas setea los mensajes de error:


// Ejecuto controles
list($msg, $hubo_advertencias) = $this->control__inscripcion($comision, $subcomisiones);

en esa misma clase fíjate la función control__inscripcion($comision, $subcomisiones), ahí agrega efectivamente los puntos de control.

para borrar la cache corre el siguiente comando:

<path_to_g3w3>/bin/guarani limpiar_cache 

cualquier cosa decime.

saludos, Leonel.

Leonel, hice lo que me pusiste en el foro pero no funciona el control en el botón Guardar.
Subí todo a colab y además te mando el log para que veas que puede ser lo que está mal.
Gracias!
Flavia


20140916_112127___1236log.txt (30.6 KB)

Hola Flavia, en donde subiste lo del botón buscar? ya que me quiero hacer un svn update desde este repositorio https://colab.siu.edu.ar/svn/guarani2/nodos/uncor/3w/branches/2.8.3 y no me actualiza nada (me dice que esta todo actualizado).

Fíjate de subirlo a donde lo estabas subiendo antes así te puedo dar una mano con eso.

saludos, Leonel.

puede ser que lo subiste acá https://colab.siu.edu.ar/svn/guarani2/nodos/uncor/3w/trunk/2.8.3/?

Si, ahí lo subí.
Era esa la ruta la ruta no?

Respuesta a la consulta realizada aca: http://foro.comunidad.siu.edu.ar/index.php?topic=7640.msg32757

Si agregas un control, podes indicarle si el mismo puede ser cacheable o no. Esto va en la definición del control en par_controles campo cacheable
1=Cacheable: En cada sesión del usuario, la primera vez que se ejecuta el control se cachea el resultado, con lo cual en las susesivas ejecuciones del control se verifica si el mismo es cacheable, si lo es se busca si ya hay un resultado del control cacheado y si es asi de ahi toma el resultado de ejecucion del mismo y si no esta cacheado se ejecuta en ese momento.
0= No cacheable, el control se evalua siempre.

Los controles que pueden ser cacheables son aquellos que no cambiarían el resultado por acciones que realice el usuario en ese momento.
Ejemplo: Si el control es que el alumno debe devolver libros en Biblioteca, ese podría ser cacheable, ya que es casi imposible que el alumno este haciendo algo en el sistema, vaya a biblioteca devuelva el libro, vuelva y siga en la misma sesion (salvo que que este accediendo por algun medio portatil desde la misma biblioteca… :). Igual con que salga del sistema y vuelva a loguearse este problema estará salvado. )

Gracias Ale!
Ya verificamos y los controles que estamos usando están con 0=No cacheable.
Pero la prueba que hacemos es activar/desactivar desde gestión esos controles y utilizar la operación desde la interfaz web y hay una demora (2 minutos aprox. ) en ver el reflejo de los cambios.
Saludos!
Flavia

Hola Flavia, me hice un SVN switch y ahora estoy apuntado acá https://colab.siu.edu.ar/svn/guarani2/nodos/uncor/3w/trunk/2.8.3/ y pude descargar los cambios que hiciste. Lo que si el proyecto me da error de informix ya que no tengo los procedures que creaste. Te pediría si me podes pasar una copia de la base de datos que estas usando así puedo reproducir que es lo que te esta pasando y poder ayudarte mejor, pasame también user y password del usuario con el que vos estas probando.

Otra cosa, si podes mandame captura de pantalla del error que te da.

saludos, Leonel.