Elastix Developer addon – Desarrollo de formulario para ingreso de datos en Mysql

Elastixdeveloper

Como sabrán durante el 2014 se vinieron organizando los llamados “Elastixwebinarwednesdays”  , los cuales eran charlas sobre algún tema en particular del ecosistema de Elastix, de todos los realizados hubieron 3 que me llamaron mucho la atención:

Construyendo un Addon Elastix: Avanzado – Juan Pablo Romero
Construyendo un Addon Elastix Elementos Básicos  – Juan Pablo Romero
Pasos esenciales para generar el RPM de tu Elastix Addon – Luis Abarca

Desde hace tiempo, que quería organizar mi tiempo para poder entender adecuadamente el proceso de creación de un addon en Elastix, por un lado mi alma de programador me lo pedía, y por otro lado el que poder incorporar aplicaciones dentro del esquema de Elastix , brinda una gama muy interesante de posibilidades, por ejemplo agregar un reporte tipo grid de los formularios para el modulo de callcenter, solo por citar un ejemplo.

Así que me puse a revisar los vídeos y puse manos a las obra, para el siguiente ejemplo voy a tomar como base y referencia, el vídeo y material que Juan Pablo Romero tuvo la gentileza de subir a la red los ejemplos (aquí lo pueden ver ) que desarrollo en el webinar “Construyendo un Addon Elastix Elementos Básicos”  así que les recomiendo primero darse el tiempo de verlo para poder no solo desarrollar el addon, si no también entender conceptos como MVC , Smarty y la estructura de archivos y funcionamiento del Developer.

Vamos a crear un módulo llamado “producto_ingreso” que tenga 3 campos de entrada (codigo,nombre,descripcion) la cual permita guardar la información en la base de datos Mysql local del servidor.

1.- Setup de la base de datos

Descargar el archivo “webinar.sql” desde aquí y cargar la información a la base de datos de la siguiente forma:

#mysql -u root -p 123456 < webinar.sql

2.- Creación del módulo desde el Developer

Ingresar al Build Module y configurarlo de la siguiente forma :

Module Name: producto_ingreso
Your Name : tu nombre
Your e-mail : tu email
Module Level : Level 3
Leve 1 Parent Exist : No
Level 1 Parent Name : Sistema
Level 2 Parent Name : mantenimiento
Module Type: Form
Field Name : codigo,nombre,descripcion
Type Filed: Type Text

Una vez configurado hacer clic en el botón “Save”

Elastix_Developer

Cuando el Developer crea el modulo se verá de la siguiente forma.

Elastix_Developer

El Developer internamente habrá creado las siguiente carpetas :

Elastix_Developer

3.- Modificar la conexión a la base de datos

Ingresar al archivo “default.conf.php” ubicado en la carpeta “/var/www/html/modules/producto_ingreso/configs”

Cambiar:

$arrConfModule[‘dsn_conn_database’] = ”;

Por :

$arrConfModule[‘dsn_conn_database’] = “mysql://webinar:webinar@localhost/webinar”;

4.- Crear el archivo que corresponde al idioma español

– Desde la consola, crear el archivo es.lang en la carpeta lang del modulo de la siguiente forma:

#touch /var/www/html/modules/producto_ingreso/lang/es.lang

– Copiar el contenido desde la siguiente url https://github.com/jprb79/webinar_addons/blob/master/modules/producto_lista/lang/es.lang y copiarlo al archivo es.lang previamente creado.

Elastix_developer

5.- Modificar el archivo “paloSantoproducto_ingreso.class.php” ubicado en /var/www/html/modules/producto_ingreso/libs/ el cual que corresponde a la  clase del módulo

– Desactivar/comentar las funciones “getproducto_ingreso” y “getproducto_ingresoById” de la siguiente forma:

Elastix_Developer

– Luego agregar la función “saveNew” de la siguiente forma:

Elasltix_Developer

6.- Modificar el controlador “index.php” ubicado en la ubicación “/var/www/html/modules/producto_ingreso/”

– Linea 61 aproximadamente, Modificar la cadena de conexión

$pDB = “”;

por

$pDB = new paloDB($arrConf[‘dsn_conn_database’]);
– Linea 139 aproximadamente, identificar la función “saveNewproducto_ingreso” luego de la condicional “else”

Elastix_Developer
Cambiar/agregar la condicional de la siguiente forma:

Elastix_Developer
– Linea 160 aproximadamente, en la función “createFieldForm” cambiar la siguientes lineas

“codigo”   => array(      “LABEL”                  => _tr(“codigo”),

Por:

“codigo”   => array(      “LABEL”                  => _tr(“Product code”),

“nombre”   => array(      “LABEL”                  => _tr(“nombre”),

Por:

“nombre”   => array(      “LABEL”                  => _tr(“Name”),

“descripcion”   => array(      “LABEL”                  => _tr(“descripcion”),

Por:

“descripcion”   => array(      “LABEL”                  => _tr(“Description”),

 

La cual quedará de la siguiente forma:

Elastix_Developer

– Linea 202 aproximadamente, luego de la función “getAction” agregar la nueva función “_pre” como se muestra a continuación:

Elastix_Developer

7.- Pruebas al módulo

Una vez que hemos culminado con la programación del modulo, ingresamos ingresamos información y hacemos clic en el boton “Save”

Elastix_Developer

Si todo esta correcto , nos mostrará un mensaje que indica que el producto se ha guardado correctamente, como se muestra a continuación :

Elastix_Developer

Para poder validar que los datos están correctamente grabados en la base de datos, podemos realizar la consulta directa como se muestra a continuación.

Elastix_Developer

En caso de tener errores, o que no funcione el modulo, el archivo a consultar es :

/var/log/httpd/ssl_error_log

En el próximo post desarrollaremos el módulo para listar los registros ingresados.

UPDATE  16/07/2015
Por que lo prometido es deuda, acabo de realizar la segunda parte del tutorial y lo he publicado en el blog de Elastix

Elastix Developer addon – Desarrollo de módulo para reporte de datos

Saludos
Juan Oliva
@jroliva

 

Anuncios
Esta entrada fue publicada en Manuales y tutoriales por jroliva. Guarda el enlace permanente.

Acerca de jroliva

Juan Oliva, es un consultor de seguridad informática y telefonía IP con 10 años de experiencia en el campo . Muy involucrado en proyectos de pruebas de penetración , análisis y explotación vulnerabilidades, pruebas de ingeniería social, seguridad física, revisión de código, entre otras tareas de seguridad informática. Así mismo, desarrolla proyectos de implementación y mantenimiento de VoIP, basadas en Asterisk y Elastix, proyectos de callcenter, soluciones en la nube y hosted PBX, Aseguramiento de plataformas Linux, Windows. Ha estado trabajando para una variedad de empresas en donde ha desarrollado proyectos para el estado peruano, así como para entidades privadas, nacionales y del extranjero, cuenta con certificaciones vigentes en Ethical hacking, Linux y telefonía IP. Es instructor de cursos de Ethical Hacking y certificaciónes como Linux Professional Institute y Elastix, donde ha tenido oportunidad de realizar capacitaciones en el Perú, así como en el extranjero. Es investigador de vulnerabilidades, y creador de contenidos, que son publicados en su blog personal jroliva.wordpress.com el cual mantiene desde hace mas de 6 años.

Un pensamiento en “Elastix Developer addon – Desarrollo de formulario para ingreso de datos en Mysql

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s