Creando módulos para SuiteCRM y SugarCRM

09-09-2016
 

Tanto SugarCRM como SuiteCRM son hermanos(SuiteCRM es un fork de SugarCRM). Hoy voy a explicar como crear un nuevo módulo para SuiteCRM aunque se hace exactamente igual que en SugarCRM(De hecho los módulos de uno son compatibles para el otro).

Vamos a suponer que queremos crear un nuevo módulo y queremos personalizar la primera pantalla del mismo:

Crear el nuevo módulo con Module Builder

Los módulos se pueden crear de manera manual o a través de Module Builder. En este caso crearemos el esqueleto del proyecto usando esta herramienta. Vamos a ‘Admin’->’Developer tools’->’Module Builder’ y le damos a ‘New Package’. Una ‘Package’ es una agrupación de módulos.

Una vez tenemos el paquete creado le damos a ‘New Module’ y nos creará el nuevo módulo. En el siguiente pantallazo vemos como yo tengo creado el paquete ‘Test2’ y dentro el módulo ‘KKK2’ junto con sus campos, relaciones, layouts, etc. :

SuiteCRM Screenshot 1

SuiteCRM Screenshot 1

Ahora que ya tenemos nuestro nuevo módulo creado podemos ir al paquete y decirle ‘Deploy’ para que aparezca en el listado de módulos, por defecto en el menú ‘ALL’:

SuiteCRM Screenshot 2

SuiteCRM Screenshot 2

Esto nos ha creado una carpeta dentro de la carpeta ‘/modules’ del CRM con nuestro módulo y nos ha agregado un nuevo fichero en ‘/custom/Extension/application/Ext/Include’ con un fichero ‘.php’ con información del paquete:

<?php 
 //WARNING: The contents of this file are auto-generated
$beanList['Test2_KKK2'] = 'Test2_KKK2';
$beanFiles['Test2_KKK2'] = 'modules/Test2_KKK2/Test2_KKK2.php';
$moduleList[] = 'Test2_KKK2';
?>

Creando el controlador de nuestro módulo

Si queremos personalizar una pantalla o crear nuevas acciones a nuestro módulo lo primero que deberemos hacer es crearnos un fichero ‘controller.php’ en la carpeta de nuestro módulo y crear una classe controladora. Las classes controladoras de SugarCRM tienen un método por cada acción con la siguiente pinta ‘action_&th;Nombre_acción>()’. La acción principal que llama el menú de SugarCRM es ‘customlist’. Por lo tanto nosotros crearemos el método que sobrescriba ese método para que llame a la vista ‘customlist’:

<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');

class Test2_KKK2Controller extends SugarController {

	protected function action_listview() {
        	//parent::action_listview();

        	//set the new custom view
        	$this->view = 'customlist';
    		}
	}
?>

Por cierto, la primera línea es para asegurar que nadie con malas intenciones llame a fichero de SuiteCRM.

Creando nuestra nueva vista

Usando la nomenclatura de SuiteCRM, todas las vistas deben ir en la carpeta ‘views’ de nuestro módulo y el fichero debe llamarse ‘view.<nombre_vista>.php’. En este caso, debemos crear el fichero ‘views/view.customlist.php’:

<?php
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');

require_once('include/Sugar_Smarty.php');

class Test2_KKK2ViewCustomlist extends SugarView {

	public function display() {
       		$ss = new Sugar_Smarty();
        	$ss->assign('saludos', 'Hola pepe!');
 
		$ss->display('modules/Test2_KKK2/tpls/customlist.tpl');
		}

	}
?>

Básicamente es una classe como la anterior que extiende de ‘SigarView’ y donde en el método ‘display’ generamos la vista mediante plantillas ‘Smarty’.

Creamos nuestra plantilla Smarty

Las plantillas Smarty son muy comunes en proyecto con PHP. En la definición de la vista ya le hemos definido donde y con que nombre tiene que estar la plantilla ‘tpls/customlist.tpl’:

<div class="moduleTitle">
	<h2>Hello World!!!!</h2>
</div>
<div class="clear"></div>
<div style='padding: 30px;'>
	{$saludos}
</div>

Y ya tenemos nuestro módulo en de SuiteCRM funcionando:

Suite CRM Screenshot 3

Suite CRM Screenshot 3

Leave a Reply

© Albert Coronado Calzada