Extensión y Creación de Efs
Extensión de parámetros
Para crear un nuevo parámetro de un ef hay que seguir tres pasos principales:
Cambios en la definición de la base
Un nuevo parámetro de un ef generalmente se almacena como una nueva columna en la tabla de efs.
Definir un nuevo campo en la tabla
apex_objeto_ei_formulario_ef
en el archivophp/modelo/ddl/pgsql_a12_componente_ei_formulario.sql
, usar algún prefijo para el nombre del campo (usar los campos actuales como guía).Exportar y regenerar la instancia (ahora el campo se encuentra en la base)
Ejecutar
toba nucleo parsear_ddl
, esto va a permitir que el exportador exporte la nueva columna.
Cambios al toba_editor
El editor tiene que permitir editar y recuperar el parámetro de una instancia de ef dada. Para esto:
Abrir el editor toba, editando el mismo editor.
En la vista de componentes, seleccionar el formulario 1000154 (Editor Parámetros Efs: parametros)
En este formulario crear un nuevo ef con identificador igual que el nombre del campo. Dependiendo de los valores que pueda tomar el campo, definirlo como editable,combo, checkbox, etc. Grabar los cambios.
Ahora editar el
datos_tabla
1530 (de nombre OBJETO * EI formulario EF), en la definición de columnas agregar una nueva, con las propiedades del nuevo campo. Esto va a permitir a que el editor sepa como mapear el campo con la base. Grabar los cambiosTomar la clase php del ef al cual pertenece el nuevo parámetro (por ejemplo el
toba_ef_multi_seleccion
ubicado enphp/nucleo/componentes/interface/efs/toba_ef_multi_seleccion.php
), agregar al método estáticoget_lista_parametros
el identificador del nuevo campo (si no existe el método redefinirlo y llamar al padre si lo tiene). Por ejemplo:<?php ... static function get_lista_parametros() { $param[] = 'selec_cant_minima'; $param[] = 'selec_cant_maxima'; $param[] = 'selec_utilidades'; $param[] = 'selec_serializar'; $param[] = 'selec_cantidad_columnas'; return $param; } ... ?>
En el editor de toba tomar un formulario de ejemplo que contenga un ef del tipo extendido. Verificar que ahora es permitido ingresar el valor del nuevo parámetro y que se almacena correctamente en la base de datos.
Cambios a la clase-php del ef
Finalmente la clase-php del ef extendido necesita reaccionar ante la presencia del parámetro en ejecución, el nuevo parámetro llega al constructor:
<?php
function __construct($padre,$nombre_formulario, $id,$etiqueta,$descripcion,$dato,$obligatorio,$parametros)
{
parent::__construct($padre,$nombre_formulario, $id,$etiqueta,$descripcion,$dato,$obligatorio,$parametros);
if (isset($parametros['selec_cant_columnas'])) {
$this->cantidad_columnas = $parametros['selec_cant_columnas'];
}
}
?>
Es conveniente verificar que exportando el proyecto, el valor de este parámetro cambia en el sistema de archivos.
Creación de EFs
Para crear un nuevo ef hay que seguir tres pasos principales:
Agregar el metadato a la base
Para ello se debe crear un nuevo registro en la tabla
apex_elemento_formulario
. Esta entrada se visualizará luego en la
lista desplegable de tipos de elementos al agregar un nuevo ef en el
editor de Toba. Hay que tener especial cuidado la información que
representa cada campo.
Por ejemplo, para agrear un ef_editable_captcha
, la sql sería:
INSERT INTO
apex_elemento_formulario (elemento_formulario, padre, descripcion, parametros, proyecto, exclusivo_toba, obsoleto)
VALUES
('ef_editable_captcha', 'ef_editable', 'Campo para ingresar un codigo generado al azar.', NULL, 'toba', NULL, '0');
Agregar la clase al nucleo de Toba
Una vez creado el elemento, es necesario indicarle al nucleo de Toba,
que archivo será el encargado de contener la clase para el mismo. Para
ello hay que modificar el archivo php/nucleo/toba\_nucleo.php
y agregar
un elemento más al arreglo que retorna el método
get_indice_archivos()
. Este método se llama en el autoload de Toba.
<?php
static function get_indice_archivos()
{
return array(
.
.
'toba_ef_editable_captcha' => 'nucleo/componentes/interface/efs/toba_ef_editable_captcha.php',
.
.
?>
Exportar Metadatos
Para guardar los cambios en el sistema de archivos de Toba, es necesario exportar los metadatos de la instancia. Para ello ejecutar:
toba nucleo exportar_datos