Get it on Google Play
09-09-2016
 

Creando módulos para SuiteCRM y SugarCRM

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

Si te ha servido, por favor comparte
 

Comments

4 Responses to “Creando módulos para SuiteCRM y SugarCRM”
  1. Pedro says:

    Hola Alberto después de mucho buscar llegué a tu blog, y me alegra, tengo que desarrollar un dashboard personalizado que tenga un semáforo que cambia de color dependiendo de ciertas reglas en suitecrm y no se bien como hacerlo, trabajo en generalmente en .net es mi primera vez con php, leyendo tu blog, algo entendí y aprendí, pero me gustaría saber mas, mis vacaciones dependen de ello, es posible que te pueda hacer algunas consultas, gracias por su tiempo.

  2. Gema says:

    Hola Alberto, lo primero, muchas gracias por tu aporte.

    He seguido tus instrucciones al pie de la letra con los nombres excepto mi módulo que tiene el siguiente contenido:

    y he creado las carpetas views y tpls, con los mismos nombres que pones, excepto las clases que he adaptado el nombre a mi nombre de módulo. Y se presenta la pantalla en blanco y no muestra el saludo como dices en el ejemplo. ¿Sabes por qué podría ser?.

    Muchas gracias de antemano y un saludo,

    Gema

  3. Gema says:

    Buenos días Alberto, ya está, ni te molestes en contestar a mi anterior post. Tenía un error y era que la view no estaba en la carpeta correspondiente, me funciona perfectamente tu ejemplo :).

    Muchas gracias de nuevo por tu aporte porque estaba perdida y como los manuales que hay son todos en inglés, me has facilitado la vida, muchísimas gracias y un saludo,

    Gema

  4. Jose says:

    Buenas amigo estoy desarrolando un modulo para un cliente para suitecrm y en la parde de readme cuando se va a instalar me gustaria poner digamos mis politicas para darme publicidad como creador, es posible?

Leave a Reply