11. Sistema de extensiones

Integria IMS cuenta con un sistema de extensiones que permite ampliar sus funcionalidades dependiendo de las necesidades de cada usuario. Estas extensiones permiten ampliar o crear secciones nuevas de manera más sencilla.

Actualmente, las extensiones pueden ser de tres tipos:

  • De menú
  • De preferencias
  • De pestaña

Extensiones de menú

Las extensiones de este tipo aparecen en el menú lateral de Integria IMS, justo antes de la caja del calendario. Es posible añadir extensiones de menú en cualquier sección.

Creando una extensión de menú

Con conocimientos de PHP es posible crear una extensión. Para ello es necesario crear un script .php en la carpeta extensiones, la cual se encuentra en la raíz del directorio de Integria. Este fichero se encargará del registro y la carga de las funcionalidades.

Para que una extensión pueda ser registrada, se deben añadir ciertas funciones al fichero de carga.

extensions_add_side_menu_option ([Nombre], [sección]);

Con esta función, aparecerá en la caja de extensiones de la sección indicada con el nombre indicado. Los parámetros a introducir son de tipo string.

Para conocer el nombre de la sección para la cual se quiere introducir la ampliación hay que fijarse en el parámetro sec de las url de Integria.

http://[host]/integria/index.php?sec=customers&sec2=operation/companies/
company_detail

Aquí se puede ver, por ejemplo, que el nombre de la sección de clientes es customers.

Una vez aparece, hay que indicar la acción al hacer click.

extensions_add_main_function ([Nombre de función]);

Con esta función se indica, con una variable de tipo string, qué función debe ejecutarse para mostrar la información de la extensión.

Con una función que muestre la información resultante en html, una para indicar en qué sección debe aparecer y otra para indicar que hacer cuando se haga click en ella escritas en un fichero .php situado en la carpeta extensions, es posible crear una extensión. Si se requieren librerías o recursos adicionales, basta con añadirlos en una carpeta llamada igual que el fichero y situada en el mismo directorio.

Ejemplo:

<?php
function extension1_main() {
	echo "Hola Mundo";
}
extensions_add_side_menu_option ('Extensión 1', 'customers');
extensions_add_main_function ('extension1_main');
?>

Extensiones de preferencias

Este es un tipo especial de extensión muy similar al de menú, pero con la particularidad de que está pensada para aparecer en las preferencias de Integria IMS. Esto la hace propensa a actuar como sección de configuración de las extensiones.

Creando una extensión de preferencias

Al igual que las extensiones de menú, debe ser registrada:

extensions_add_godmode_side_menu_option ([Nombre]);

Y se debe indicar que función cargará su información:

extensions_add_godmode_function ([Nombre de función]);

Ejemplo:

<?php
function extension1_main() {
	echo "<div style='color:".$config['color'].";'>Hola Mundo</div>";
}
function extension1_setup() {
	$color = (string) $_POST['e1_color'];
	if ($color) {
		update_config_token('color', $color);
	}
	echo "<form>";
	echo "	<input name='e1_color' type='text' value='$color'>";
	echo "	<input type='submit' name='upd_button' value='Actualizar'>";
	echo "</form>";
}
extensions_add_side_menu_option ('Extensión 1', 'customers');
extensions_add_main_function ('extension1_main');
extensions_add_godmode_side_menu_option ('Configuración de extensión 1');
extensions_add_godmode_function ('extension1_setup');
?>

Extensiones de pestaña

Las extensiones de este tipo aparecerán en la lista de pestañas indicada.

Creando una extensión de pestaña

Es muy parecida a la extensión de menú, pero tiene la particularidad de poder recibir parámetros desde la subsección. Lo más complicado es reunir los datos necesarios para enlazarla a una lista de pestañas.

Para registrarla, habrá que usar esta función:

extensions_add_tab_option ([Id de la pestaña], [Nombre], 
[Subsección de la lista de pestañas], [Ruta de icono], [Id de la lista de pestañas]);

La ruta del icono es opcional y comienza desde el directorio extensions, también lo es la id de la lista de pestañas, la cual es necesaria en el caso de que en la subsección haya más de una lista de pestañas.

Para conocer el nombre de la subsección para la cual se quiere introducir la ampliación hay que fijare en el parámetro sec2 de las url de Integria.

http://[host]/integria/index.php?sec=incidents&sec2=operation/incidents/
incident_dashboard_detail&id=[id de ticket]

Aquí se puede ver, por ejemplo, que el nombre de la subsección de la vista en detalle de un ticket es operation/incidents/incident_dashboard_detail.

Para indicar que función ejecutar para mostrar la información de la extensión:

extensions_add_tab_function ([Nombre de la función]);

Ejemplo:

<?php
function extension1_main() {
	echo "<div style='color:".$config['color'].";'>Hola Mundo</div>";
}
function extension1_setup() {
	$color = (string) $_POST['e1_color'];
	if ($color) {
		update_config_token('color', $color);
	}
	echo "<form>";
	echo "	<input name='e1_color' type='text' value='$color'>";
	echo "	<input type='submit' name='upd_button' value='Actualizar'>";
	echo "</form>";
}
extensions_add_side_menu_option ('Extensión 1', 'customers');
extensions_add_main_function ('extension1_main');
extensions_add_godmode_side_menu_option ('Configuración de extensión 1');
extensions_add_godmode_function ('extension1_setup');
extensions_add_tab_option ('extension1', 'Extensión 1', "operation/
incidents/incident_dashboard_detail",   "extension1/images/
integria_mini_logo.png", "incident-details-view");
extensions_add_tab_function ('extension1_main');
?>

Listas de pestañas disponibles

Por ahora, la única lista de pestañas que puede contener extensiones es la lista de pestañas principal de la vista de detalle de un ticket.

Vista en detalle de ticket

  • Parámetros recibidos: id (ID del ticket).
  • Subsección: operation/incidents/incident_dashboard_detail.
  • Id de la lista de pestañas: indicent-details-view.

Documentación de Integria