You are on page 1of 65

vtlib biblioteca de desarrollo vtiger

DESCARGO DE RESPONSABILIDAD:
El desarrollo de la biblioteca de vtlib est en progreso y sujetos a cambio. Mientras nos
esforzamos para hacer
Seguro mdulos desarrollados usando vtlib ser compatibles con las versiones futuras de
vtiger CRM, algunos
cambios incompatibles pueden ser necesarios para la prxima versin de vtiger. En cuyo caso
tendrs que recrear
los mdulos con una versin mejorada del vtlib para la versin especfica de vtiger CRM.
vtlib
Tabla de contenidos
API Version History.............................................................................................................4
About vtlib.........................................................................................................................5
vtlib API - Quick Reference..................................................................................................6
Module Types.....................................................................................................................7
Entity Module.................................................................................................................7
Extension Module ...........................................................................................................7
Language Pack...............................................................................................................7
Bundles.........................................................................................................................7
Creating a new Entity Module...............................................................................................8
Backend ........................................................................................................................8
FrontEnd........................................................................................................................8
Packaging .....................................................................................................................8
About Payslip Module.......................................................................................................8
Step 1: Creating Module......................................................................................................9
Paso 2: Crear bloque (en forma de interfaz de usuario).10
Step 3: Adding Fields.........................................................................................................11
Entity Identifier.............................................................................................................12
Set Picklist Values.........................................................................................................12
Set Related Module........................................................................................................12
Set Help Information.....................................................................................................13
Set MassEdit property....................................................................................................15
Step 4: Creating Filters......................................................................................................16
Configure fields.............................................................................................................16
Setup Rules..................................................................................................................16
Step 5: Related Lists.........................................................................................................17
Step 6: Sharing Access Rules.............................................................................................19
Step 7: Module Tools.........................................................................................................20
Optional Step: Module Events.............................................................................................21
Paso opcional: Mdulo Webservices...22
Paso opcional: Mdulo plantillas...23
Optional Step: Custom Links..............................................................................................24
Special LinkType...........................................................................................................25
Guin terminado final (Backend)...26
Ejecutar el Script de creacin de mdulo...29
Paso 8: Crear ficheros del mdulo (Frontend).30
Language File Preparation..............................................................................................31
New Module Tour...............................................................................................................32
List view......................................................................................................................32
Create view..................................................................................................................32
vtlib
Detail view...................................................................................................................33
List view......................................................................................................................33
Sharing Access.............................................................................................................34
Custom Fields...............................................................................................................34
Step 9: Packaging.............................................................................................................35
Package Export.............................................................................................................35
Package Structure.....................................................................................................36
Package Import.............................................................................................................38
Package Upgrade..........................................................................................................39
Limitations...............................................................................................................39
Extension Module .........................................................................................................40
Bundles........................................................................................................................41
Language Pack..............................................................................................................42
Adding License..............................................................................................................43
Adding Migration Details.................................................................................................44
Module Manager................................................................................................................46
Disabling Module...........................................................................................................47
Enabling Module............................................................................................................47
Exporting Module..........................................................................................................48
Importing Module..........................................................................................................49
Module Specific Settings.................................................................................................52
Module Upgrade............................................................................................................53
Appendix 1 - API Changes..................................................................................................55
Creating Module............................................................................................................55
Creating Block..............................................................................................................55
Creating Field...............................................................................................................56
Setting Entity Identifier..................................................................................................56
Set Picklist Values.........................................................................................................56
Creating Filter...............................................................................................................57
Configure Tools.............................................................................................................57
Configure Sharing Access...............................................................................................57
Appendix 2 Schema Changes...........................................................................................58
Apndice 3 usando vtiger_imageurl API...59
Apndice 4 vtlib_handler mtodo...60
Apndice 5 vtlib_listview javascript API...61
FAQ Preguntas ms frecuentes.62
1. How to write own templates?......................................................................................62
2. cmo se utiliza la plantilla de mdulo?...62
3. Cannot See Module Manager!......................................................................................63
4. Tips for using field names...........................................................................................63
vtlib












Historia versin API
Versin versin fecha Highlights
2.2 integrado a 5.1.0 * aadido desencadenadores de eventos especiales mdulo (invocacin
de mtodo vtlib_handler)
2.1 2009.01.07 * instalar paquete de idioma, mdulo de extensin utilizando Module Manager
* ModuleDir fue reorganizado para ser especfico a una versin vtiger
* Module Manager se encarga de acuerdo de licencia antes de la instalacin.
* Bsico soporte agregado para upgrades de mdulo con el mdulo de administrador.
* Posibilidad de aadir enlaces a las webs personalizadas para un mdulo.
* Soporte agregado para permitir la informacin de ayuda para los campos del mdulo.
* Agregado vtiger_imageurl API
2.0 2008-11-26 * API proporcionada a relacionados con mdulos (lista relacionado)
* Cambios API para crear campos, bloques, mdulo
* Tipo UI 10 fue agregado para el campo emergente genrico
1.4 2008-09-29 * de la exportacin y la importacin fue agregado al mdulo de administrador
1.3 2008-09-01 * module Manager fue agregado para que los administradores de instalar y
activar/desactivar los mdulos nuevos desarrollados usando vtlib.
* API para los valores de lista desplegable Configuracin
1.2 2008-08-29 * compartir acceso API fue agregado
1.1 2008-08-27 * API es habilitar y deshabilitar herramientas como exportacin, importacin
fueron agregados
1.0 19 / 08 / 2008 * API bsica ha sido aadido a creado campos, bloques, mdulo
vtlib
Acerca de vtlib
vtlib es una biblioteca para facilitar el desarrollo de un mdulo nuevo para vtiger CRM. vtlib
incluye las API para crear o
modificar los elementos de back-end para un mdulo. Estas API ayudar a hacer los cambios
necesarios para el
base de datos.
vtlib incluye Module Manager que permite nuevos mdulos ser empaquetados en archivos zip
que otros
instalaciones de vtiger CRM pueden fcilmente instalar y utilizar.
vtlib
vtlib API - referencia rpida
vtlib incluye las siguientes API que pueden utilizarse para crear nuevos mdulos. Para ms
detalles por favor
Mira la documentacin de la API.
Vtiger_Module
nombre
addBlock()
addFilter()
initTables()
setRelatedList()
setDefaultSharing()
enableTools()
disableTools()
Save()
addLink()
Vtiger_Menu
addModule()
Vtiger_Block
etiqueta
addField()
Vtiger_Field
mesa
columna
ColumnType
uitype
typeofdata
setHelpInfo()
setEntityIdentifier()
setPicklistValues()
setRelatedModules()
Vtiger_Filter
nombre
IsDefault
addField()
addRule()
Vtiger_Event
Register()
vtlib






























Tipos de mdulos
mdulos de vtiger CRM pueden clasificarse en los siguientes tipos:
1. entidad mdulo
2. mdulo de extensin
3. paquete de idioma
4. paquetes de

vtlib biblioteca de desarrollo vtiger
DESCARGO DE RESPONSABILIDAD:
El desarrollo de la biblioteca de vtlib est en progreso y sujetos a cambio. Mientras nos
esforzamos para hacer
Seguro mdulos desarrollados usando vtlib ser compatibles con las versiones futuras de
vtiger CRM, algunos
cambios incompatibles pueden ser necesarios para la prxima versin de vtiger. En cuyo caso
tendrs que recrear
los mdulos con una versin mejorada del vtlib para la versin especfica de vtiger CRM.
vtlib
Tabla de contenidos
API Version History.............................................................................................................4
About vtlib.........................................................................................................................5
vtlib API - Quick Reference..................................................................................................6
Module Types.....................................................................................................................7
Entity Module.................................................................................................................7
Extension Module ...........................................................................................................7
Language Pack...............................................................................................................7
Bundles.........................................................................................................................7
Creating a new Entity Module...............................................................................................8
Backend ........................................................................................................................8
FrontEnd........................................................................................................................8
Packaging .....................................................................................................................8
About Payslip Module.......................................................................................................8
Step 1: Creating Module......................................................................................................9
Paso 2: Crear bloque (en forma de interfaz de usuario).10
Step 3: Adding Fields.........................................................................................................11
Entity Identifier.............................................................................................................12
Set Picklist Values.........................................................................................................12
Set Related Module........................................................................................................12
Set Help Information.....................................................................................................13
Set MassEdit property....................................................................................................15
Step 4: Creating Filters......................................................................................................16
Configure fields.............................................................................................................16
Setup Rules..................................................................................................................16
Step 5: Related Lists.........................................................................................................17
Step 6: Sharing Access Rules.............................................................................................19
Step 7: Module Tools.........................................................................................................20
Optional Step: Module Events.............................................................................................21
Paso opcional: Mdulo Webservices...22
Paso opcional: Mdulo plantillas...23
Optional Step: Custom Links..............................................................................................24
Special LinkType...........................................................................................................25
Guin terminado final (Backend)...26
Ejecutar el Script de creacin de mdulo...29
Paso 8: Crear ficheros del mdulo (Frontend).30
Language File Preparation..............................................................................................31
New Module Tour...............................................................................................................32
List view......................................................................................................................32
Create view..................................................................................................................32
vtlib
Detail view...................................................................................................................33
List view......................................................................................................................33
Sharing Access.............................................................................................................34
Custom Fields...............................................................................................................34
Step 9: Packaging.............................................................................................................35
Package Export.............................................................................................................35
Package Structure.....................................................................................................36
Package Import.............................................................................................................38
Package Upgrade..........................................................................................................39
Limitations...............................................................................................................39
Extension Module .........................................................................................................40
Bundles........................................................................................................................41
Language Pack..............................................................................................................42
Adding License..............................................................................................................43
Adding Migration Details.................................................................................................44
Module Manager................................................................................................................46
Disabling Module...........................................................................................................47
Enabling Module............................................................................................................47
Exporting Module..........................................................................................................48
Importing Module..........................................................................................................49
Module Specific Settings.................................................................................................52
Module Upgrade............................................................................................................53
Appendix 1 - API Changes..................................................................................................55
Creating Module............................................................................................................55
Creating Block..............................................................................................................55
Creating Field...............................................................................................................56
Setting Entity Identifier..................................................................................................56
Set Picklist Values.........................................................................................................56
Creating Filter...............................................................................................................57
Configure Tools.............................................................................................................57
Configure Sharing Access...............................................................................................57
Appendix 2 Schema Changes...........................................................................................58
Apndice 3 usando vtiger_imageurl API...59
Apndice 4 vtlib_handler mtodo...60
Apndice 5 vtlib_listview javascript API...61
FAQ Preguntas ms frecuentes.62
1. How to write own templates?......................................................................................62
2. cmo se utiliza la plantilla de mdulo?...62
3. Cannot See Module Manager!......................................................................................63
4. Tips for using field names...........................................................................................63
vtlib
Historia versin API
Versin versin fecha Highlights
2.2 integrado a 5.1.0 * aadido desencadenadores de eventos especiales mdulo (invocacin
de mtodo vtlib_handler)
2.1 2009.01.07 * instalar paquete de idioma, mdulo de extensin utilizando Module Manager
* ModuleDir fue reorganizado para ser especfico a una versin vtiger
* Module Manager se encarga de acuerdo de licencia antes de la instalacin.
* Bsico soporte agregado para upgrades de mdulo con el mdulo de administrador.
* Posibilidad de aadir enlaces a las webs personalizadas para un mdulo.
* Soporte agregado para permitir la informacin de ayuda para los campos del mdulo.
* Agregado vtiger_imageurl API
2.0 2008-11-26 * API proporcionada a relacionados con mdulos (lista relacionado)
* Cambios API para crear campos, bloques, mdulo
* Tipo UI 10 fue agregado para el campo emergente genrico
1.4 2008-09-29 * de la exportacin y la importacin fue agregado al mdulo de administrador
1.3 2008-09-01 * module Manager fue agregado para que los administradores de instalar y
activar/desactivar los mdulos nuevos desarrollados usando vtlib.
* API para los valores de lista desplegable Configuracin
1.2 2008-08-29 * compartir acceso API fue agregado
1.1 2008-08-27 * API es habilitar y deshabilitar herramientas como exportacin, importacin
fueron agregados
1.0 19 / 08 / 2008 * API bsica ha sido aadido a creado campos, bloques, mdulo
vtlib
Acerca de vtlib
vtlib es una biblioteca para facilitar el desarrollo de un mdulo nuevo para vtiger CRM. vtlib
incluye las API para crear o
modificar los elementos de back-end para un mdulo. Estas API ayudar a hacer los cambios
necesarios para el
base de datos.
vtlib incluye Module Manager que permite nuevos mdulos ser empaquetados en archivos zip
que otros
instalaciones de vtiger CRM pueden fcilmente instalar y utilizar.
vtlib
vtlib API - referencia rpida
vtlib incluye las siguientes API que pueden utilizarse para crear nuevos mdulos. Para ms
detalles por favor
Mira la documentacin de la API.
Vtiger_Module
nombre
addBlock()
addFilter()
initTables()
setRelatedList()
setDefaultSharing()
enableTools()
disableTools()
Save()
addLink()
Vtiger_Menu
addModule()
Vtiger_Block
etiqueta
addField()
Vtiger_Field
mesa
columna
ColumnType
uitype
typeofdata
setHelpInfo()
setEntityIdentifier()
setPicklistValues()
setRelatedModules()
Vtiger_Filter
nombre
IsDefault
addField()
addRule()
Vtiger_Event
Register()




































Tipos de mdulos
Mdulos de vtiger CRM pueden clasificarse en los siguientes tipos:
1. Mdulo Entidad
2. Mdulo de extensin
3. Paquete de idioma
4. Empaquetamiento (Bundle)


Mdulo de entidad

En esta categora los mdulos creados son registros de la entidad en vtiger CRM. El mdulo
proporciona: crear, ver, editar vista, detalle de la vista y lista de la vista. Usted ser capaz de
crear filtros etc..

Mdulos de entidad se recomiendan para los casos donde un nuevo tipo de objeto de datos,
por ejemplo hojas de tiempo, debe aadirse al sistema como parte del nuevo mdulo. Estos
nuevos objetos de datos pueden ser han consultado y manejado por los administradores y
usuarios.

Pre Contactos , contactos, cuentas, nminas etc.... son mdulos de entidad.


Mdulo de extensin

Mdulos en esta categora no necesitan seguir el comportamiento general del mdulo de la
entidad. Los registros creado por el modulo de entidad podra utilizarse para proporcionar una
funcionalidad extendida o los registros creacin/edicin puede ser manejado
independientemente.
Mdulos de extensin pueden usarse cuando se necesita funcionalidad adicional, sin
necesidad de nuevo clases de objetos de datos que los usuarios ver y administracin.
Tablero de instrumentos (DashBoard), informes, Portal etc.... son mdulos de extensin.

Paquete de idioma
Paquetes de idioma para vtiger CRM son tratados tambin como otro tipo de mdulo de vtlib.


Paquetes (Bundles)
Paquetes te dejan instalar un sistema de inter dependiente vtlib mdulos en el orden indicado.
Nota: Module manager proporcionar la posibilidad de instalar estos mdulos diferentes.
vtlib

Creacin de un nuevo mdulo de entidad
vtlib simplifica la creacin de nuevos mdulos de vtiger CRM. Los desarrolladores pueden
utilizar vtlib para desarrollar vtiger. Mdulos CRM que aaden nuevas funciones a vtiger CRM.
Estos mdulos se pueden empaquetar entonces para poder permitir una fcil instalacin en
el mdulo de administrador.

Nota: En este documento vamos a explicar el proceso de creacin de un nuevo mdulo
mediante la construccin de un ejemplo Mdulo 'Nmina'. Este cdigo de ejemplo se incluye
como parte del paquete de vtlib y puede ser utilizado como punto de partida para crear
nuevos mdulos. Por favor refirase a el 'usando el cdigo de ejemplo proporcionado con la
API de vtlib' seccin de este documento para obtener ms informacin.

Los siguientes son los pasos que deben seguirse para obtener un mdulo bsico de trabajo. La
seccin de backend cubre cambios al nivel de base de datos del mdulo, y el frontend cubre
la seccin de los archivos de interfaz de usuario.

Backend
Paso 1: Crear instancia de mdulo, crear tablas de base de datos y agregarlo al men
Paso 2: Cuadrar aadir UI para el mdulo.
Paso 3: Agregar campos y asociarlo a los bloques. Establecer al menos un campo como
identificador de entidad.
Paso 4: Vista de lista por defecto crea y filtros adicionales (Asegrese de crear un filtro de todo
lo que es llamado el filtro predeterminado)
Paso 5: Crear lista relacionados (para mostrar en la ficha '' ms informacin '')
Paso 6: Ajuste de compartir las reglas de acceso
Paso 7: Ajuste mdulo herramientas opciones (es decir, Import/Export)

FrontEnd
Paso 8: Creando Mdulo de directorio y archivos

Embalaje (Packaging)
Paso 9 Empaquetar

Opciones adicionales
Mdulo de plantillas (Para personalizar la forma, vista de lista y configuracin de interfaz de
usuario)
Ajustes del mdulo (Que permiten a los administradores configurar el mdulo)
Mdulo de eventos (slo disponible en vtiger CRM versin 5.1)
Mdulo de Webservices (slo disponible en vtiger CRM versin 5.1)

Estos pasos se explican en detalle en el curso de esta seccin.

Estamos utilizando el mdulo de ejemplo 'Nmina' para explicar el uso de vtlib APIs.



















Sobre el Mdulo de nmina

Tendr la capacidad para crear, editar, eliminar los registros de nmina. Se Puede crear filtros
personalizados para el Listview, que muestra la lista de instancias de nmina.

Asociamos este mdulo con el men Herramientas.

Paso 1: Creacin de mdulo
Clase Vtiger_Module proporciona una API para trabajar con mdulos de vtiger CRM.

include_once('vtlib/Vtiger/Module.php');
$moduleInstance = new Vtiger_Module();
$moduleInstance->name = 'Payslip';
$moduleInstance->save();
$moduleInstance->initTables();
$menuInstance = Vtiger_Menu::getInstance('Tools');
$menuInstance->addModule($moduleInstance);

Vtiger_Module -> initTables() API inicializar (crear) las tablas necesarias 3 un mdulo debe
Tienen como se explica ms abajo:

Tabla Convencion de la tabla Descripcin
BaseTable vtiger_< MODULENAME> contiene los campos por
defecto para el nuevo
mdulo

CustomTable vtiger_ < MODULENAME > cf contiene campos
personalizados del mdulo
Grouptable grouprel vtiger_ < MODULENAME > se utiliza cuando los registros
se asignan a un grupo



Vtiger_Menu -> addModule (< ModuleInstance >) API crear el elemento de men que sirve
como interfaz de usuario punto de entrada del mdulo.

Paso 2: Crear bloque (En la Interfaz del usuario (uI))
Clase Vtiger_Block proporciona API para trabajar con un bloque del mdulo, el recipiente que
contiene los campos juntos.

El ejemplo dado continuacin describe la manera de crear nuevos bloques para el mdulo
creado anteriormente:
include_once('vtlib/Vtiger/Module.php');
$blockInstance = new Vtiger_Block();
$blockInstance->label = 'LBL_PAYSLIP_INFORMATION';
$moduleInstance->addBlock($blockInstance);
$blockInstance2 = new Vtiger_Block();
$blockInstance2->label = 'LBL_CUSTOM_INFORMATION';
$moduleInstance->addBlock($blockInstance2);

Nota: Bloque LBL_CUSTOM_INFORMATION debe crearse siempre para apoyar los campos
personalizados para un mdulo.

Paso 3: Agregar campos
Clase Vtiger_Field proporciona la API para trabajar con los campos del mdulo, cules son los
elementos bsicos que almacenar y visualizar los datos de registro del mdulo.
En el ejemplo siguiente describe la manera de crear un nuevo campo para el mdulo creado
anteriormente:

include_once('vtlib/vtiger/Module.php');
$fieldInstance = new Vtiger_Field();
$fieldInstance -> name = 'PayslipName';
$fieldInstance -> tabla = 'vtiger_payslip';
$fieldInstance -> columna = 'payslipname';
$fieldInstance -> columntype = 'Varchar';
$fieldInstance -> uitype = 2;
$fieldInstance -> typeofdata = ' V ~ M';
$blockInstance -> addField($fieldInstance);
Nota: El nombre de fieldInstance es un valor obligatorio ajustarse antes de guardar / aadir al
bloque.
Otros valores (si no establece) estn en Mora como se explica a continuacin:
$fieldInstance -> basetable del mdulo de mesa
$fieldInstance -> columna $fieldInstance -> nombre en minsculas.
[La mesa se ver alterada mediante la adicin de la columna si no est presente.
$fieldInstance -> columntype VARCHAR (255)
$fieldInstance -> uitype 1
$fieldInstance -> typeofdata V ~ O
$fieldInstance -> etiqueta $fieldInstance -> nombre
[Asignacin de entrada debe estar presente en el archivo de mdulo idioma as como]
Ajustes opcionales
$fieldInstance -> presencia 0 siempre activo (no se puede modificar usando Layout Editor en
5.1.0)
1 marcarlo en activo (en adelante 5.1.0)
2 activo propiedad puede modificarse utilizando Layout Editor (en adelante 5.1.0)
$fieldInstance -> quickcreate 0 campo de habilitar en forma rpida de crear
1 desactivar el campo en forma rpida de crear
$fieldInstance -> masseditable 0 campo Disallow permanentemente para la edicin masiva
(5.1.0 en adelante)
1 permiten campo para masa edicin (en adelante 5.1.0)
2 no permitir campo para la edicin de masa (puede ser puesta a disposicin utilizando
Layout
Editor 5.1.0 en adelante)
vtlib
Identificador de entidad
Uno de los campo obligatorio debe configurarse como identificador de entidad del mdulo una
vez que se crea. Este campo
se utilizar para mostrar los detalles en 'ltimas entradas visitaron' etc....
$moduleInstance -> setEntityIdentifier($fieldInstance);
Lista desplegable establecer valores
Si el campo es de tipo lista desplegable (uitype 15, 16, 33, 55, 111) entonces usted puede
configurar los valores iniciales
usando la API siguiente:
$fieldInstance -> setPicklistValues (Array ('Value1', 'Value2'));
Configurar el mdulo relacionado
Si el campo es de tipo select Popup (uitype = 10), puede configurar los mdulos relacionados
que podra
seleccionarse mediante Popup usando la API siguiente:
$fieldInstance -> setRelatedModules (Array ('OtherModule1', 'OtherModule2'));
Para desactivar el mdulo relacionado se puede utilizar la siguiente API:
$fieldInstance -> unsetRelatedModules(Array('OtherModule2'));
vtlib
Informacin de sistema de ayuda
Proporcionar ayuda informacin para campo mdulo ser til para educar a los usuarios.
include_once('vtlib/vtiger/Module.php');
$fieldInstance = new Vtiger_Field();
$fieldInstance -> name = "LinkTo";
...
$fieldInstance -> helpinfo = 'Se refieren a un contacto existente';
...
$blockInstance -> addField($fieldInstance);
Usted puede proporcionar establecer el texto de ayuda para un campo existente utilizando la
API siguiente:
$fieldInstance -> setHelpInfo ('contenido de la ayuda');
Nota: El contenido de la ayuda puede ser texto llano o rico. Ver el uso recomendado abajo.
Cuando un campo tiene informacin de ayuda, aparecer al lado de la etiqueta del campo
helpicon.
Hacer clic en l se mostrar el contenido de la ayuda como se muestra:
vtlib
Nota: A continuacin es el fragmento de cdigo que se debe agregar a la EditView.php del
mdulo existente a
habilitar la compatibilidad con icono de ayuda.
// ...
Recopilar la informacin de ayuda asociada con campos
$smarty -> asignar ('FIELDHELPINFO', vtlib_getFieldHelpInfo($currentModule));
FINAL
// ...
Si ($focus -> modo == 'editar') $smarty -> display('salesEditView.tpl');
ms $smarty -> display('CreateView.tpl');
Se recomienda:
Proporcionar una correlacin de traduccin para el helpinfo se utiliza para un campo.
Ejemplo establecer el helpinfo como HELP_FILEDNAME_INFO y proporcionar el contenido en
el archivo de idioma.
$fieldInstance -> setHelpInfo('HELP_FIELDNAME_INFO');
En el mdulo / < MODULENAME > /language/en_us.lang.php
$mod_strings = array ()
...
'HELP_FIELDNAME_INFO' = > ' Fieldname ayuda debe ser el contenido aqu'
...);
Evitar saltos de lnea en el contenido, que puede utilizar la etiqueta < br > en lugar de ayuda
Preferentemente escape (",", <>,) con HTML como entidades (& quot; & lt; & gt;)
Es bueno haber mantener el contenido menos, si desea proporcionar ms detalles puede
vincular a
una pgina externa como se muestra en el ejemplo siguiente:
Llene su nombre contactos aqu. Para saber ms sobre lo < br >
< a href = 'http://en.vtiger.com/wiki.html' > ver ms < /a >
vtlib
Establezca la propiedad MassEdit
Nota: Masa Editar funcin est disponible desde vtiger 5.1 en adelante
Usted puede hacer el campo disponible para su utilizacin masiva edicin las maneras
siguientes que se describe a continuacin:
Al crear el campo de la propiedad se puede establecer:
include_once('vtlib/vtiger/Module.php');
$fieldInstance = new Vtiger_Field();
$fieldInstance -> name = 'TestField';
...
$fieldInstance -> masseditable = 1;
...
$blockInstance -> addField($fieldInstance);
Si tienes un campo existente su propiedad puede actualizarse mediante la API:
$fieldInstance -> setMassEditable(value);
El valor establecido para masseditable propiedad tiene el siguiente significado:
Valor Descripcin
0 no disponible para la edicin masiva y esta propiedad no se puede controlar por el usuario.
1 disponible para editar masa
2 no disponible para la edicin masiva pero la propiedad puede ser controlada por el usuario
(mediante el administrador de diseo, etc.)
vtlib
Paso 4: Crear filtros
Clase Vtiger_Filter proporciona API para trabajar con vista personalizada de un mdulo o filtro.
Mostrar la lista
se controla mediante estos filtros.
En el ejemplo siguiente describe la manera de crear nuevo filtro para el mdulo:
include_once('vtlib/vtiger/Module.php');
$filterInstance = new Vtiger_Filter();
$filterInstance -> nombre = 'Todos';
$filterInstance -> isdefault = true;
$moduleInstance -> addFilter($filterInstance);
Configurar campos
Para agregar campos al filtro se puede utilizar la siguiente API:
$filterInstance -> addField ($fieldInstance, $columnIndex);
Donde $columnIndex (opcional) es el ndice/de orden en el que el campo debera aparecer en
la vista de lista.
Reglas de configuracin
Una vez que se agrega el campo filtrar te puede fijar la regla (condicin) para filtrado as como
mediante la
las siguientes API:
$filterInstance -> addRule ($fieldInstance, $comparator, $compareValue,
$columnIndex);
Donde comparador podra ser uno de los siguientes:
ES IGUAL A
NOT_EQUALS
STARTS_WITH
ENDS_WITH
CONTIENE
DOES_NOT_CONTAINS
LESS_THAN
GREATER_THAN
LESS_OR_EQUAL
GREATER_OR_EQUAL
$compareValue es que el valor contra con el campo debe ser comparada.
$columnIndex (opcional) es el orden en que se debe aplicar esta condicin de regla.
vtlib
Paso 5: Listas relacionadas
Un mdulo podra estar asociado con varios registros de otro mdulo que aparece debajo
Pestaa "Ms informacin" en vista de detalle.
El ejemplo dado continuacin describe la manera de crear a una relacin entre un mdulo de
nmina y cuentas:
include_once('vtlib/vtiger/Module.php');
$moduleInstance = Vtiger_Module::getInstance('Payslip');
$accountsModule = Vtiger_Module::getInstance('Accounts');
$relationLabel = 'Cuentas';
$moduleInstance -> setRelatedList)
$accountsModule, $relationLabel, Array('ADD','SELECT')
);
Con esto usted puede agregar una o ms cuentas a los registros de nmina.
A la relacin entre el uso de mdulos lo siguiente:
$moduleInstance -> unsetRelatedList($targetModuleInstance);
Acerca de setRelatedList API
Vtiger_Module -> setRelatedList (< TARGET MODULE > [, < HEADER etiqueta >, < permitido
acciones >,
< CALLBACK funcin nombre >]);
nombre < blanco mdulo > a qu relacin est siendo configuracin.
< HEADER etiqueta > opcional (por defecto = < TARGET MODULE >)
Etiqueta para usar ms la informacin relacionada con vista.
< permitido acciones > opcional agregar o seleccione (default = false)
Qu botones deben mostrarse en la vista lista relacionada al tiempo que aade
registros.
< nombre de la funcin de devolucin de llamada > opcional (por defecto = get_related_list)
La funcin debe ser definida en la clase de < mdulo fuente >.
Esto debera generar las entradas del control listview para mostrar.
NOTA:
Esta API crear una entrada en la tabla de vtiger_crmentityrel para hacer un seguimiento de la
relacin entre el mdulo
registros. Mdulos estndar disponibles en vtiger CRM encarga de la relacin en tablas
separadas y realiza la
Se unen para buscar datos especficos de cada mdulo.
Esto es un intento de lograr comportamiento genrico. Puedes escribir personalizada llamada
vuelta relacionados con funciones para manejar
consultas de lista que satisfagan sus necesidades.
vtlib
Limitaciones
Siguientes limitaciones para la lista relacionados con APIs
1. variables de clase mdulo estndar no se fijan como es requerido por el mdulo de vtlib
get_related_list API.
La gestin de casos debe ser manejada @function vtlib_setup_modulevars en
include/utils/VtlibUtils.php
2. get_related_list API agregada a la clase de mdulo no maneja unirse
en las mesas donde algunos mdulos como (cuentas) almacenar informacin por lo tanto, no
son los detalles completos
buscar en la vista lista relacionados.
(Clasificacin de ejemplo en el campo de la ciudad en vista de lista relacionados fallar si
dieOnError es true)
vtlib
Paso 6: Compartir las reglas de acceso
Configuracin de acceso compartido para el mdulo puede realizarse como se muestra a
continuacin:
En el ejemplo siguiente describe la forma de configurar el mdulo de nmina como privado
include_once('vtlib/vtiger/Module.php');
$moduleInstance = Vtiger_Module::getInstance('Payslip');
$moduleInstance -> setDefaultSharing('Private');
La < PERMISSION_TYPE > puede ser una de las siguientes opciones:
Public_ReadOnly
Public_ReadWrite
Public_ReadWriteDelete
Privado
vtlib
Paso 7: Mdulo herramientas
Caractersticas como la importacin, la exportacin se denominan como herramientas del
mdulo. Estas herramientas pueden habilitarse o deshabilitan como
se muestra a continuacin:
En el ejemplo siguiente describe la forma de activar y desactivar las herramientas para el
mdulo de nmina
include_once('vtlib/vtiger/Module.php');
$moduleInstance = Vtiger_Module::getInstance('Payslip');
$module -> enableTools (Array ('Import', 'Exportar'));
$module -> disableTools('Export');
vtlib
Paso opcional: Mdulo eventos
Concurso completo API se sustenta del vtiger 5.1 en adelante (leer ms).
Para comprobar si su vtiger CRM apoya eventos uso lo siguiente:
include_once('vtlib/vtiger/Event.php');
Boolean Vtiger_Event::isSupported();
Para registrar un evento para un mdulo, utilice lo siguiente:
include_once('vtlib/vtiger/Event.php');
Vtiger_Event::Register ('< MODULENAME >', '< EVENTNAME >',
'< HANDLERCLASS >', '< HANDLERFILE >');
< MODULNAME > mdulo para lo cual deben registrar eventos
< EVENTNAME > vtiger.entity.aftersave
vtiger.Entity.BeforeSave
< HANDLERCLASS > clase de controlador de eventos, miren el ejemplo de abajo
< HANDLERFILE > archivo donde se define HANDLERCLASS (debe ser dentro de directorio vtiger
CRM)
Ejemplo: Registro de evento "callback" antes y despus de salvar.
Si (Vtiger_Event::hasSupport()) {}
Vtiger_Event::Register)
'Nmina', 'vtiger.entity.aftersave',
'PayslipHandler', 'modules/Payslip/PayslipHandler.php'
);
Vtiger_Event::Register)
'Nmina', 'vtiger.entity.beforesave',
'PayslipHandler', 'modules/Payslip/PayslipHandler.php'
);
}
modules/Payslip/PayslipHandler.php
<? php
clase PayslipHandler ampla {VTEventHandler}
funcin handleEvent ($eventName, $data) {}
Si ($eventName == 'vtiger.entity.beforesave') {}
Entidad est a punto de ser salvado, tomar accin requerida
}
Si ($eventName == 'vtiger.entity.aftersave') {}
Entidad ha sido salvado, tomar accin siguiente
}
}
}
?>
vtlib
Paso opcional: Mdulo Webservices
WebServices API se sustenta del vtiger 5.1 en adelante (leer ms).
Usted necesitar invocar la configuracin API para habilitar el soporte para los mdulos
personalizados.
include_once('vtlib/vtiger/Module.php');
$moduleInstance = Vtiger_Module::getInstance('Payslip');
$moduleInstance -> initWebservice();
Nota: Cuando se importa el mdulo de la API de inicializar Webservice se invoca
automticamente.
vtlib
Paso opcional: Mdulo plantillas
Si desea personalizar la vista de lista o tener una pgina de configuracin personalizada para el
mdulo, entonces
Usted necesitar crear una plantilla Smarty en consecuencia. Usted necesitar tener algn
conocimiento de
Uso de Plantillas Smarty yuu antes de proceder.
Sus archivos de plantilla de mdulo especficos Smarty deben ser creados bajo
Smarty/plantillas/modules /
< NewModuleName >.
Como usar la API de vtlib_getModuleTemplate ($module, $templateName)
(include/utils/VtlibUtils.php):
$smarty -> display (vtlib_getModuleTemplate ($currentModule, 'MyListview.tpl'));
vtlib
Paso opcional: Enlaces personalizados
Se puede aadir enlace web personalizado para el mdulo utilizando la API siguiente:
include_once('vtlib/vtiger/Module.php');
$moduleInstance = Vtiger_Module::getInstance('ModuleName');
$moduleInstance -> addLink (< LinkType >, < LinkLabel >, < LinkURL >);
LinkType tipo de enlace como-
DETAILVIEW: Agregar un enlace en el men "Ms acciones" en la vista de detalle del registro.
DETAILVIEWBASIC: Agregar un vnculo a la lista de 'Acciones' en la vista de detalle del
registro.
DETAILVIEWWIDGET: Se aade un widget en el lado derecho de la vista de detalle de la
Registro, similar al widget de la nube de etiquetas.
LISTVIEW: Agregar un enlace bajo el botn de "Ms acciones" en la vista de lista de un
mdulo.
LISTVIEWBASIC: Aadir un botn en la vista lista del mdulo similar a borrar, masa
Botones de edicin.
LinkLabel etiqueta a utilizar para el enlace al Mostrar
LinkURL URL del enlace. Puede utilizar variables como $variablename$
En la pgina del mdulo ListView controlador (modules/Payslip/ListView.php) tendr este
fragmento de cdigo
(antes de la llamada a $smarty -> display()):
include_once('vtlib/vtiger/Link.php');
$customlink_params = array ('MODULE' = > $currentModule, 'ACTION' = >
vtlib_purify($_REQUEST['action']), 'CATEGORY' = > $category);
$smarty -> asignar ('CUSTOM_LINKS', Vtiger_Link::getAllByType(getTabid($currentModule),
Array ('LISTVIEW', 'LISTVIEWBASIC'), $customlink_params));
En la pgina del mdulo DetailView controlador (modules/Payslip/DetailView.php) tendr este
pedazo de
cdigo (antes de la llamada a $smarty -> display()):
include_once('vtlib/vtiger/Link.php');
$customlink_params = array ('MODULE' = > $currentModule, 'RECORD' = > $focus -> id,
'ACTION' = >
vtlib_purify($_REQUEST['action']));
$smarty -> asignar ('CUSTOM_LINKS', Vtiger_Link::getAllByType(getTabid($currentModule),
Array ('DETAILVIEW', 'DETAILVIEWBASIC', 'DETAILVIEWWIDGET'), $customlink_params));
NOTA:
El $MODULE$, $ $ACTION y $ $RECORD variables en la LinkURL, ser reemplazado por el
conjunto de valores
a travs de DetailView.php
El $MODULE$, $ACTION$, variables de $ $CATEGORY en el LinkURL, ser reemplazado por el
conjunto de valores
a travs de ListView.php
vtlib
A continuacin es un ejemplo que agrega un enlace a la DetailView del mdulo.
include_once('vtlib/vtiger/Module.php');
$moduleInstance = Vtiger_Module::getInstance('Payslip');
$moduleInstance -> (addLink
'DETAILVIEW',
"Nueva accin",
' index.php?module=OtherModule & accin = haga & src_module = $MODULE$ & src_record =
$RECORD$ '
);
En la pgina DetailView encontrar que ms acciones de enlace. Cuando ratn cierne sobre
este toda la costumbre relacionada
enlaces aparecer como una gota abajo. Vea la captura de pantalla siguiente:
LinkType especial
LinkTypes siguientes se tratan especialmente mientras que procesa para la exhibicin:
Descripcin LinkType
HEADERSCRIPT el enlace ser tratado como un tipo de javascript y se importarn en la seccin
head del
la pgina de salida HTML como < script tipo = ' text/javascript' src = 'linkurl' >< / script >
HEADERCSS el enlace ser tratado como un tipo CSS y se importarn en la seccin principal de
la
Pgina de salida HTML como < link rel = "stylesheet" type = ' text/css' href ='linkurl >
HEADERLINK puedes ver estos enlace agrupados bajo ms en el panel de encabezado superior.
Es til si desea proporcionar herramientas utitlity como Bookmarklet, etc.
vtlib
Guin terminado final (Backend)
Aqu est el guin completo (vtlib.Test.Create.Module1.php) que crea el mdulo de nmina
<? php
Activar depuracin nivel
$Vtiger_Utils_Log = true;
include_once('vtlib/vtiger/menu.php');
include_once('vtlib/vtiger/Module.php');
Crear instancia de mdulo y gurdelo primero
$module = new Vtiger_Module();
$module -> nombre = 'Nmina';
$module -> save();
Inicializar todas las tablas necesarias
$module -> initTables();
/**
* Crea la siguiente tabla:
* vtiger_payslip (payslipid INTEGER)
* vtiger_payslipcf(payslipid INTEGER PRIMARY KEY)
* vtiger_payslipgrouprel ((payslipid INTEGER PRIMARY KEY, groupname VARCHAR(100))
*/
Aadir el mdulo al men (punto de entrada de interfaz de usuario)
$menu = Vtiger_Menu::getInstance('Tools');
$menu -> addModule($module);
Aadir el mdulo bsico
$block1 = new Vtiger_Block();
$block1 -> etiqueta = 'LBL_PAYSLIP_INFORMATION';
$module -> addBlock($block1);
Aadir bloque personalizado (necesario para apoyar los campos personalizados)
$block2 = new Vtiger_Block();
$block2 -> etiqueta = 'LBL_CUSTOM_INFORMATION';
$module -> addBlock($block2);
/ ** Crear campos obligatorios y agregar al bloque * /
$field1 = new Vtiger_Field();
$field1 -> name = 'PayslipName';
$field1 -> tabla = $module -> basetable;
$field1 -> columna = 'payslipname';
$field1 -> columntype = 'Varchar (255)';
$field1 -> uitype = 2;
$field1 -> typeofdata = ' V ~ M';
$block1 -> addField($field1); / ** Crea el campo y se agrega al bloque * /
Establecer al menos un campo identificador de registro de mdulo
$module -> setEntityIdentifier($field1);
$field2 = new Vtiger_Field();
$field2 -> name = 'PayslipType';
$field2 -> etiqueta = 'Nmina tipo';
$field2 -> columntype = 'Varchar';
$field2 -> uitype = 15;
$field2 -> typeofdata = ' V ~ O'; / / Varchar ~ opcional
$block1 -> addField($field2); / ** tabla y columna se establecen automticamente * /
$field2 -> setPicklistValues (Array ('Empleado', 'Aprendiz'));
$field3 = new Vtiger_Field();
$field3 -> nombre = 'Mes';
vtlib
$field3 -> uitype = 23;
$field3 -> typeofdata = haba ~ M'; Fecha ~ obligatorio
$block1 -> addField($field3); / ** tabla, columna, etiqueta, valores por defecto * /
$field4 = new Vtiger_Field();
$field4 -> name = "LinkTo";
$field4 -> etiqueta = 'Link To';
$field4 -> tabla = 'vtiger_payslip';
$field4 -> columna = 'linkto';
$field4 -> columntype = 'Varchar';
$field4 -> uitype = 10;
$field4 -> typeofdata = ' V ~ O';
$field4 -> helpinfo = 'Se refieren a un contacto existente';
$block1 -> addField($field4);
$field4 -> setRelatedModules(Array('Contacts'));
/ ** Campos comunes que deberan estar en cada mdulo, vinculado a la mesa de ncleo
vtiger CRM
*/
$field5 = new Vtiger_Field();
$field5 -> name = 'assigned_user_id';
$field5 -> etiqueta = 'Asignado a';
$field5 -> tabla = 'vtiger_crmentity';
$field5 -> columna = 'smownerid';
$field5 -> uitype = 53;
$field5 -> typeofdata = ' V ~ M';
$block1 -> addField($field5);
$field6 = new Vtiger_Field();
$field6 -> name = 'CreatedTime';
$field6 -> etiqueta = 'Tiempo creado';
$field6 -> tabla = 'vtiger_crmentity';
$field6 -> columna = 'createdtime';
$field6 -> uitype = 70;
$field6 -> typeofdata = ' t ~ O';
$field6 -> displaytype = 2;
$block1 -> addField($field6);
$field7 = new Vtiger_Field();
$field7 -> name = 'ModifiedTime';
$field7 -> etiqueta = 'Tiempo modificado';
$field7 -> tabla = 'vtiger_crmentity';
$field7 -> columna = 'modifiedtime';
$field7 -> uitype = 70;
$field7 -> typeofdata = ' t ~ O';
$field7 -> displaytype = 2;
$block1 -> addField($field7);
/ ** FINAL * /
Crear filtros personalizados por defecto (obligatorio)
$filter1 = new Vtiger_Filter();
$filter1 -> nombre = 'Todos';
$filter1 -> isdefault = true;
$module -> addFilter($filter1);
Agregar campos al filtro creado
$filter1 -> addField($field1) -> addField ($campo2, 1) -> addField ($field5, 2);
Crear un filtro ms
$filter2 = new Vtiger_Filter();
$filter2 -> name = 'Sobretodo2';
$module -> addFilter($filter2);
Agregar campos al filtro
$filter2 -> addField($field1);
vtlib
$filter2 -> addField ($campo2, 1);
Agregar regla en el campo de filtro
$filter2 -> addRule ($campo1, 'Contiene', ' Test');
/ ** Asociar otros mdulos para este mdulo * /
$module -> setRelatedList(Vtiger_Module::getInstance('Accounts'), 'Cuentas',
Array('ADD','SELECT'));
/ ** Establece compartir acceso de este mdulo * /
$module -> setDefaultSharing('Private');
/ ** Activar y desactivar las herramientas disponibles * /
$module -> enableTools (Array ('Import', 'Exportar'));
$module -> disableTools('Merge');
?>
vtlib
Ejecutar el Script de creacin de mdulo
1. para ejecutar el vtlib.Test.Create.Module1.php script, abierto
http://localhost/vtigerCRM/vtlib.test.html
2. Haga clic en crear nmina mdulo para creacin de pruebas de mdulo de nmina
vtlib
Paso 8: Crear ficheros del mdulo (Frontend)
Cada nuevo mdulo debe tener un directorio bajo mdulos / carpeta. Para ayudar a acelerar el
mdulo
creacin de cdigo, vtlib viene liado con la estructura del esqueleto mdulo basado en el
mdulo 'Nmina'.
Este cdigo se incluyen en la carpeta vtlib/ModuleDir que se puede utilizar como plantilla para
nuevo mdulo que
se crea. Contiene archivos de origen que necesita ser cambiado como se explica ms abajo.
Nota: ModuleDir tiene subdirectorios especficos a la versin vtiger, por favor, asegrese de
usar la indicada.
1. copia ModuleDir / < target_vtiger_version > contenido al recin creados mdulos / <
NewModuleName >
carpeta.
2. rename < NewModuleName > /ModuleFile.php como < NewModuleName > / <
NewModuleName > .php
(como se indica en la tabla a continuacin)
3. cambiar el nombre de /ModuleFileAjax.php < NewModuleName > como
< NewModuleName > / < NewModuleName > Ajax.php
4. rename < NewModuleName > /ModuleFile.js a < NewModuleName > / < NewModuleName
> .js
5. edit < NewModuleName > / < NewModuleName > .php
a) cambiar el nombre de clase ModuleClass a < NewModuleName >
b) actualizar $table_name y $table_index (mdulo nombre y tabla ndice columna de la tabla)
c) actualizacin $groupTable
d) actualizacin $tab_name, $tab_name_index
e) actualizacin $list_fields, $list_fields_name, $sortby_fields, $list_link_field
f) actualizacin $detailview_links
g) actualizacin $default_order_by, $default_sort_order
h) actualizacin $required_fields
i) actualizacin $customFieldTable
j) cambie el nombre de funcin ModuleClass a la funcin < NewModuleName > [esta es la clase
del Constructor]
Nota: Otros archivos bajo mdulos / < NewModuleName > no necesita ser cambiado.
Ejemplo de fichero ModuleDir propsito bajo nmina
index.php entrada mdulo punto a travs de men index.php
Archivo de definicin de la clase de mdulo ModuleFile.php. Payslip.php
Archivo de ModuleFileAjax.php Base para acciones ajax utilizado bajo control Listview etc....
PayslipAjax.php
Funcin de javascript especfico del mdulo de ModuleFile.js puede ser escrita aqu Payslip.js
Controlador de vista de detalle de informacin ms CallRelatedList.php CallRelatedList.php
Vista de CustomView.php personalizado o controlador de filtro CustomView.php
Controlador de registro borrado Delete.php mdulo Delete.php
Controlador de vista detalle DetailView.php DetailView.php
Vista de detalle DetailViewAjax.php ajax editar controlador DetailViewAjax.php
Controlador de vista EditView.php Edit EditView.php
Controlador de exportacin rcord de mdulo ExportRecords.php ExportRecords.php
Importacin de registros Import.php mdulo controlador Import.php
Controlador de vista lista ListView.php ListView.php
Controlador de seleccin popup.php emergente de este registro de mdulo Popup.php
Controlador de creacin rpida de QuickCreate.php QuickCreate.php
Registro Save.php mdulo salvar controlador Save.php
vtlib
Ejemplo de fichero ModuleDir propsito bajo nmina
Controlador de nube TagCloud.php Tag TagCloud.php
updateRelations.php lista relacionados con registro controlador (guardar/borrar)
updateRelations.php
Archivos especficos a la versin vtiger 5.1.0.
Ejemplo de fichero ModuleDir propsito bajo nmina
MassEdit.php controlador de masa Record Edit MassEdit.php
Controlador de masa editar registro Save MassEditSave.php MassEditSave.php
FindDuplicateRecords.php controlador de encontrar registros duplicados
FindDuplicateRecords.php
Controlador de proceso registros duplicados (fusin) ProcessDuplicates.php
ProcessDuplicates.php
ListViewPagging.php controlador de lista vista paginacin ListViewPagging.php
Controlador de bsqueda Global de UnifiedSearch.php UnifiedSearch.php
Archivos para ser actualizado para un mdulo de vtlib construccin en versin 5.1.0, para
hacerlo funcionar en 5.2.0 (de vtlib /
ModuleDir/5.2.0):
Ejemplo ModuleDir propsito del archivo de actualizacin en nmina
CallRelatedList.php relacionados con la lista ver cambios CallRelatedList.php
DetailViewAjax.php relacionados con la lista ver cambios DetailViewAjax.php
ListView.php orden por tema fijada y generador de consultas de apoyo ListView.php
Soporte de generador de consultas de ModuleFile.php Payslip.php
Preparacin del archivo de idioma
Actualizacin de la cartografa de traduccin en el fichero de idioma de mdulo
(mdulos / < NewModuleName > / language/en_us.lang.php)
Algunas de la asignacin obligatoria que debe ser proporcionada son como sigue:
$mod_strings = array ()
'NewModuleName' = > 'NewModuleName_Translation',
'SINGLE_NewModuleName' = > 'NewModuleNameForSingleRecord',
'LBL_CUSTOM_INFORMATION' = > 'Informacin personalizada',
Etiqueta usada para su campo mdulo
'FieldLabel' = > 'Campo etiqueta traduccin'
);
vtlib
Nuevo mdulo Tour
Vista de lista
Crear vista
vtlib
Vista de detalle
Vista de lista
vtlib
Compartir acceso
Campos personalizados
vtlib
Paso 9: empaquetado
Paquete exportacin
vtlib proporciona API para exportar mdulo como un archivo zip (paquete) que puede utiliza
para la importacin a travs de
Mdulo Manger.
require_once('vtlib/vtiger/package.php');
require_once('vtlib/vtiger/Module.php');
$package = new Vtiger_Package();
$package -> Exportar ('Instancia del mdulo del < >', '< destino DIR >', '< archivo zip ' nombre >,
< directa
DESCARGAR >);
< mdulo instancia > Vtiger_Module instancia a ser exportados (empaquetado)
< destino DIR > (opcional: Default = prueba/vtlib)
Directorio donde el archivo zip de salida debe ser creado.
< nombre de archivo zip > (opcional: Default = modulename-timestamp.zip)
Nombre de archivo zip para el archivo de salida.
< descarga directa > (opcional: Default = false)
Si es true, el archivo zip creado ser transmitido para su descarga y archivo zip ser
eliminado despus de eso.
Ejemplo:
require_once('vtlib/vtiger/package.php');
require_once('vtlib/vtiger/Module.php');
$package = new Vtiger_Package();
$package -> export)
Vtiger_Module::getInstance('Payslip'),
'prueba/vtlib',
' Nmina-Export.zip',
verdadero
);
Nota: Asegrese de prueba/vtlib directorio existe bajo el directorio raz vtigercrm y es
modificable.
vtlib
Estructura del paquete
El archivo zip exportado (paquete) tiene la siguiente estructura:
Manifest.xml
mdulos /
ModuleName/
<Module Related Files>
language/
en_us.lang.php
<Other language Files>
templates/
<Smarty templates of the Module>
manifest.xml has the meta information that will be useful during the import process as shown:
<?xml version=1.0 encoding=utf-8?>
<module>
<exporttime>YYYY-MM-DD hh:mm:ss</exporttime>
<name>MODULE NAME</name>
<version>1.0</version>
<label>MODULE LABEL</label>
<parent>MENU</parent>
<dependencies>
<vtiger_version>VTIGER_VERSION_NUMBER</vtiger_version>
<vtiger_max_version>VTIGER_MAX_VERSION_SUPPORTED</vtiger_max_version>
</dependencies>
<tables>
<table>
<name>TABLENAME</name>
<sql>TABLE SQL</sql>
</table>
</tables>
<blocks>
<block>
<label>BLOCK LABEL</label>
<fields>
<field>
<fieldname>payslipname</fieldname>
<columnname>payslipname</columnname>
<uitype>UI TYPE</uitype>
<tablename>TABLE NAME</tablename>
<generatedtype>GEN TYPE</generatedtype>
<fieldlabel>FIELD LABEL</fieldlabel>
<readonly>READONLY</readonly>
<presence>PRESENCE</presence>
<selected>SELECTED</selected>
<maximumlength>MAXLEN</maximumlength>
<typeofdata>TYPEOFDATA</typeofdata>
<quickcreate>QUICKCREATE</quickcreate>
<displaytype>DISPTYPE</displaytype>
<info_type>INFOTYPE</info_type>
<helpinfo><![CDATA[HELP INFORMATION]]></helpinfo>
<masseditable>MASSEDIT VALUE</masseditable>
</field>
</fields>
</block>
</blocks>
<customviews>
vtlib
<customview>
<viewname>VIEWNAME</viewname>
<setdefault>0</setdefault>
<setmetrics>1</setmetrics>
<fields>
<field>
<fieldname>FIELDNAME</fieldname>
<columnindex>0</columnindex>
</field>
</fields>
</customview>
</customviews>
<sharingaccess>
<default>private</default>
</sharingaccess>
<actions>
<action>
<name>Export</name>
<status>enabled</status>
</action>
<action>
<name>Import</name>
<status>enabled</status>
</action>
</actions>
<customlinks>
<customlink>
<linktype>DETAILVIEW</linktype>
<linklabel>Visit Site</linklabel>
<linkurl><![CDATA[http://www.vtiger.com]]></linkurl>
<linkicon><![CDATA[themes/images/vtiger-paw.jpg]]></linkicon>
<sequence>0</sequence>
</customlink>
<customlinks>
<events>
<event>
<eventname>EVENT_NAME</eventname>
<classname>EVENT_HANDLER_CLASS</classname>
<filename>EVENT_HANDLER_CLASS_FILE</filename>
< condicin ><![CDATA [modulename en ['MODULENAME']]] >< / condicin >
< / evento >
< / eventos >
< / mdulo >
vtlib
Paquete importacin
Puede importar un mdulo de archivo del paquete (zip) usando la siguiente API
require_once('vtlib/vtiger/package.php');
$package = new Vtiger_Package();
$package -> import (< archivo zip mdulo >, < sobrescribir >);
< mdulo archivo zip > mdulo de archivo zip (paquete).
< Sobrescribir > (opcional: Default = false)
Sobrescribir el actual directorio del mdulo si est presente
Nota: sobrescribir bandera se ignora actualmente. Ser ejecutado en el futuro.
Por favor, asegrese de comprobar directorio inexistente antes de importar.
El archivo del paquete debe validarse antes de importar cual puede hacerse usando la
siguiente API
require_once('vtlib/vtiger/package.php');
$package = new Vtiger_Package();
$package -> checkZip (< mdulo archivo zip >);
< mdulo archivo zip > mdulo de archivo zip (paquete).
checkZip devuelve true si es la estructura del paquete en archivo zip especificada en la seccin
paquete
Exportacin anterior.
Nombre del mdulo deteccin siendo importado
require_once('vtlib/vtiger/package.php');
$package = new Vtiger_Package();
$package -> getModuleNameFromZip (< mdulo archivo zip >);
< mdulo archivo zip > mdulo de archivo zip (paquete).
getModuleNameFromZip devuelve ModuleName si checkZip tiene xito.
Ejemplo:
require_once('vtlib/vtiger/package.php');
require_once('vtlib/vtiger/Module.php');
$package = new Vtiger_Package();
$module = $package -> getModuleNameFromZip('test/vtlib/Payslip.zip');
$module_exists = false;
$module_dir_exists = false;
if($Module == null) {}
echo "archivo zip mdulo no es vlido!";
} if ms ({Vtiger_Module::getInstance($module))}
echo "$module ya existe!";
$module_exists = true;
} {if(is_dir("modules/$module")) ms
echo "$module carpeta existe! Sobrescribir? ";
$module_dir_exists = true;
}
Si ($module_exists == false & & $module_dir_exists == false) {}
$package -> import('test/vtlib/Payslip.zip');
}
vtlib
Actualizacin de paquete
Nota: Actualmente esta funcin Actualizacin del mdulo no admite cancelacin y
modificacin de salir del mdulo
campos. Antes de utilizar esta funcin, por favor asegrese de tu mdulo modificado no
cambiar o borrar los existentes
campos.
Puede actualizar un mdulo que fue importado anteriormente utilizando la API siguiente:
require_once('vtlib/vtiger/package.php');
require_once('vtlib/vtiger/Module.php');
$package = new Vtiger_Package();
$package -> update (< ModuleInstance >, < archivo zip mdulo >, < sobrescribir >);
< ModuleInstance > Vtiger_Module instancia que necesita actualizarse.
< mdulo archivo zip > mdulo de archivo zip (paquete).
< Sobrescribir > (opcional: Default = true)
Sobrescribir el actual directorio del mdulo si est presente
Ejemplo:
require_once('vtlib/vtiger/package.php');
require_once('vtlib/vtiger/Module.php');
$package = new Vtiger_Package();
$moduleInstance = Vtiger_Module::getInstance('Payslip');
$package->update($moduleInstance, 'test/vtlib/Payslip.zip');
Limitations
1. Any property change to existing block or field will not applied during module upgrade.
NOTE: Look at Adding_Migration_Details section to know more about adding migration
information to the
package file through manifest.xml
vtlib
Extension Module
Module Manager lets you install an extension module provided the manifest.xml (in package)
has
the following information. This feature is available from vtiger CRM 5.1.0 onwards only.
manifest.xml
<?xml version="1.0" encoding=utf-8?>
<module>
<type>extension</type>
<name>MODULENAME</name>
<label>MODULE LABEL</label>
<parent>Tools</parent>
<version>1.0</version>
<dependencies>
<vtiger_version>5.1.0</vtiger_version>
</dependencies>
<tables>
<table>
<name>TABLE-NAME</name>
<sql><![CDATA[CREATE_TABLE_SQL]]></sql>
</table>
</tables>
<events>
<event>
<eventname>EVENT_NAME</eventname>
<classname>EVENT_HANDLER_CLASS</classname>
<filename>EVENT_HANDLER_CLASS_FILE</filename>
<condition><![CDATA[modulename in ['MODULENAME']]]></condition>
</event>
</events>
</module>
type Mandatory Should have the value extension
name Mandatory Module name (should not contain spaces or special characters)
etiqueta etiqueta obligatoria utilizado para mostrar en la interfaz de usuario
Men opcional para que este mdulo tiene que fijarse los padres
dependencias
(vtiger_version)
Versin obligatoria para que el paquete est diseado para
Mesas Mesas opcional que necesita ser creada durante la instalacin del mdulo
eventos opcional que necesita ser registrado durante la instalacin del mdulo
Archivo de paquete
Se recomienda la siguiente estructura de archivo para paquete de mdulo de extensin
(archivo zip).
Manifest.xml
mdulos /
MODULENAME /
idioma /
en_US.lang.php
index.php
< otros ficheros del mdulo >
plantillas /
< plantillas smarty >
vtlib
Paquetes
Module Manager le permite instalar paquetes siempre el manifest.xml (en paquete) tiene los
siguientes
informacin. Esta caracterstica est disponible desde vtiger CRM 5.2.0 en adelante solamente.
Manifest.xml
<? xml version = "1,0" encoding = "utf-8"? >
mdulo de < >
< nombre > MODULENAME < / nombre >
< versin > 1.0 < / versin >
< dependencias >
5.1.0 < vtiger_version > < / vtiger_version >
5.* < vtiger_max_version > < / vtiger_max_version >
< / dependencias >
true < modulebundle > < / modulebundle >
< modulelist >
< dependent_module >
< nombre > BUNDLE_PART_1 < / nombre >
1 < install_sequence > < / install_sequence >
< filepath > MODULE_FILE_1.zip < / ruta >
< / dependent_module >
< dependent_module >
< nombre > BUNDLE_PART_2 < / nombre >
2 < install_sequence > < / install_sequence >
< filepath > MODULE_FILE_2.zip < / ruta >
< / dependent_module >
< / modulelist >
< / mdulo >
modulebundle obligatorio debe tener el valor true
nombre del mdulo obligatorio (que no contienen espacios ni caracteres especiales)
dependencias
(vtiger_version)
Versin obligatoria para que el paquete est diseado para
modulelist lista opcional de los mdulos que forman parte del paquete con su nombre,
secuencia de instalacin y el nombre del archivo
Archivo de paquete
Se recomienda la siguiente estructura de archivo para el paquete de paquetes (archivo zip).
Manifest.xml
MODULENAME_1.zip
MODULENAME_2.zip
...
vtlib
Paquete de idioma
Module Manager le permite instalar paquetes de idioma para la instalacin de vtiger CRM. La
lengua
paquete debe seguir la estructura del paquete, como se explica a continuacin:
Manifest.xml
<? xml version = "1,0" encoding = "utf-8"? >
mdulo de < >
idioma < tipo > < / tipo >
< nombre > Ingls < / nombre >
etiqueta < > Ingls < / label >
en_us < prefijo > < / prefijo >
< versin > 1.0 < / versin >
< dependencias >
5.1.0 < vtiger_version > < / vtiger_version >
< / dependencias >
< / mdulo >
tipo obligatoria debe tener el lenguaje del valor
nombre opcional Language pack completo
etiqueta etiqueta obligatoria para identificar el idioma de la interfaz de usuario (en la pgina
de inicio de sesin)
Prefijo obligatorio utiliza el prefijo de nombre de archivo para el archivo de idioma.
Se extraer solamente estos archivos desde el archivo del paquete durante
instalacin.
dependencias
(vtiger_version)
Mandatory Version for which the package is intended for.
Package File
The following file structure is recommended for extension language package (zip file).
manifest.xml
modules/
Accounts/
language/
<prefix>.lang.php
Contacts/
language/
<prefix>.lang.php
Leads/
language/
<prefix>.lang.php
...
vtlib
Adding License
The manifest.xml of the package can contain license information which will be displayed to
user
during Module Manager installation process. You will need to add <license> node in the
manifest.xml as described below:
Inline License:
<module>
<name>MODULENAME</name>
<label>MODULE_LABEL</label>
<version>1.0</version>
<dependencies>
<vtiger_version>5.0.4</vtiger_version>
</dependencies>
<license>
<inline><![CDATA[This is under vtiger Public License ]]></inline>
</license>
...
</module>
License from File:
You can specific the LICENSEFILE in the package that contains the License information.
<module>
<name>MODULENAME</name>
<label>MODULE_LABEL</label>
<version>1.0</version>
<dependencies>
<vtiger_version>5.0.4</vtiger_version>
</dependencies>
<license>
<file>LICENSEFILE</file>
</license>
...
</module>
vtlib
Adding Migration Details
Module Manager supports upgrade of modules built with vtlib. In some cases, custom schema
changes and data migration will be required for these module upgrades.
When a new version of a module is released it might have schema changes w.r.t older version.
The upgrade process might not be complete unless required schema changes and data
migration
are applied. In such cases, you can add the migration information in your manifest.xml as
described below:
<?xml version="1.0" encoding=utf-8?>
<module>
<name>MODULENAME</name>
<label>MODULE LABEL</label>
<parent>Tools</parent>
<version>1.2</version>
<dependencies>
<vtiger_version>5.0.4</vtiger_version>
</dependencies>
<migrations>
<migration version='1.0'>
<tables>
<table>
<name>TABLE-NAME</name>
<sql><![CDATA[ALTER TABLE MyTable ADD COLUMN
NewColumn INT]]></sql>
</table>
</tables>
</migration>
<migration version='1.1'>
<tables>
<table>
<name>TABLE-NAME</name>
<sql><![CDATA[UPDATE MyTable SET NewColumn=1 WHERE
NewColumn is NULL]]></sql>
</table>
</tables>
</migration>
</migrations>
<tables>
<table>
<name>TABLE-NAME</name>
<sql><![CDATA[CREATE_TABLE_SQL]]></sql>
</table>
</tables>
...
</module>
NOTE: The above snippet of manifest.xml is for version 1.2 of a module. It contains migration
information
para la versin 1.0 y 1.1
vtlib
Detalles del nodo migracin
< versin migracin = '1.0'... Esta versin indica que la versin de la fuente (antes
versin) para que la migracin debe ser aplicada.
Mesas de < >
< table >
< nombre >.
< sql >...
Nombre de la tabla para migrar.
SQL a utilizar para la migracin.
vtlib
Module Manager
Una vez instalado vtlib, proporciona al Module Manager herramienta de configuracin de
configuracin. Con esto
puede habilitar, deshabilitar o controlar la configuracin de los mdulos de vtiger CRM. En la
desactivacin de un mdulo, no
aparecer en el men y el acceso est restringido (incluido el administrador).
Los mdulos estn categorizados como estndar (que se suministran como una parte
fundamental de vtiger CRM), y
Costumbre (que ha importado o creado)
vtlib
Desactivacin de mdulo
Puede deshabilitar mdulo haciendo clic en el icono de interrogacin tick verde.
Mdulo que permite
Puede habilitar el mdulo haciendo clic en el icono de interrogacin rojo tick.
vtlib
Mdulo de exportacin
Haga clic en el icono de flecha para arriba en el administrador del mdulo, que exportar el
mdulo en un archivo zip.
vtlib
Mdulo de importacin
Gerente de mdulo le permitir importar nuevos mdulos. Siga los pasos indicados a
continuacin:
Haga clic en el botn importar nuevo
Seleccione el archivo zip (paquete) de mdulo que previamente fue exportado o creado.
vtlib
Verificar los detalles de importacin analizan desde el archivo zip. Haga clic en s para
continuar o No para cancelar.
Haga clic en finalizar para completar la importacin del mdulo.
vtlib
Nota: Si usted est intentando importar un mdulo que ya existe un directorio que est
presente en el
mdulos de la carpeta se ver el siguiente mensaje.
vtlib
Ajustes especficos del mdulo
Un mdulo puede tener su propia configuracin especfica. En tales casos, debe crearse
Settings.php bajo
la carpeta del mdulo. Este archivo ser invocado (si encuentran) cuando se hace clic en el
icono de configuracin.
Ejemplo: Muestra Settings.php para el mdulo de nmina
<? php
$thisModule = $_REQUEST ['formodule'];
require_once('Smarty_setup.php');
$smarty = new vtigerCRM_Smarty();
Utilice el archivo de plantilla especfica de mdulo
modules/Payslip/MySettings.tpl
$smarty -> display (vtlib_getModuleTemplate ('Nmina', 'MySettings.tpl'));
?>
vtlib
Actualizacin del mdulo
Ahora es posible a travs de Module Manager actualizar el mdulo a la prxima versin.
Nota: Actualmente esta funcin Actualizacin del mdulo no admite cancelacin y
modificacin de salir del mdulo
campos. Antes de utilizar esta funcin, por favor asegrese de tu mdulo modificado no
cambiar o borrar los existentes
campos.
Haga clic en el icono de actualizacin:
Seleccione el nuevo archivo de paquete para el mdulo:
vtlib
Verificar los detalles del paquete antes de actualizar:
Finalmente se actualizarn su mdulo:
vtlib
Apndice 1 - cambios en la API
vtlib 2.0 contiene cambios en las API anteriores en versin 1.x. Las nuevas API son ms
modular y se adhieren al modelo OOD.
Explicamos los cambios ms abajo.
Creacin de mdulo
Usando vtlib 1.x
Vtiger_Tab::Create ('Nmina', 'Nmina', 'Herramientas');
Vtiger_Utils::CreateTable ('vtiger_payslip', '(payslipid entero)');
Vtiger_Utils::CreateTable ('vtiger_payslipcf', ' (payslipid entero, clave principal
(payslipid))');
Vtiger_Utils::CreateTable ('vtiger_payslipgrouprel',
' (payslipid entero, groupname VARCHAR, key(payslipid))') primario;
Usando vtlib 2.x
$moduleInstance = new Vtiger_Module();
$moduleInstance -> nombre = 'Nmina';
$moduleInstance -> save();
$moduleInstance -> initTables();
$menuInstance = Vtiger_Menu::getInstance('Tools');
$menuInstance -> addModule($moduleInstance);
Crear bloque
Usando vtlib 1.x
Vtiger_Block::Create ('Nmina', 'LBL_PAYSLIP_INFORMATION');
Usando vtlib 2.x
$blockInstance = new Vtiger_Block();
$blockInstance -> etiqueta = 'LBL_PAYSLIP_INFORMATION';
$moduleInstance -> addBlock($blockInstance);
vtlib
Creacin de campo
Usando vtlib 1.x
$fieldInstance = new Vtiger_Field();
$fieldInstance -> set ('module', 'Nmina')
-> set ('columnname', 'payslipname')
-> set ('nombre_de_tabla', 'vtiger_payslip')
-> set ('columntype', ' varchar(255)')
-> set ('generatedtype', '1')
-> set ('uitype', 2)
-> set ('fieldname', 'payslipname')
-> set ('fieldlabel', 'PayslipName')
-> set ('readonly', '1')
-> set ('presencia', '0')
-> set ('seleccionado', ' 0')
-> set ('maximumlength', '100')
-> set ('secuencia', null)
-> set ('typeofdata', ' V ~ M')
-> set ('quickcreate', '1')
-> set ('bloque', null)
-> set ('blocklabel', 'LBL_PAYSLIP_INFORMATION')
-> set ('displaytype', '1')
-> set ('quickcreatesequence', null)
-> set ('info_type', 'BAS');
$fieldInstance -> create();
Usando vtlib 2.x
$fieldInstance = new Vtiger_Field();
$fieldInstance -> name = 'PayslipName';
$fieldInstance -> tabla = 'vtiger_payslip';
$fieldInstance -> columna = 'payslipname';
$fieldInstance -> columntype = 'Varchar';
$fieldInstance -> uitype = 2;
$fieldInstance -> typeofdata = ' V ~ M';
$blockInstance -> addField($fieldInstance);
Identificador de entidad ajuste
Usando vtlib 1.x
$fieldInstance -> set ('entityidfield', 'payslipid')
-> set ('entityidcolumn', 'payslipid');
$fieldInstance -> setEntityIdentifier();
Usando vtlib 2.x
$moduleInstance -> setEntityIdentifier($fieldInstance);
Lista desplegable establecer valores
Usando vtlib 1.x
$fieldInstance -> setupPicklistValues (Array ('Empleado', 'Aprendiz'));
Usando vtlib 2.x
$fieldInstance -> setPicklistValues (Array ('Empleado', 'Aprendiz'));
vtlib
Creacin de filtro
Usando vtlib 1.x
Vtiger_CustomView::Create ('Nmina', 'Todos', true);
$cv = new Vtiger_CustomView ('Nmina', 'All');
$cv -> addColumn($fieldInstance1)
-> addColumn ($fieldInstance2, 1);
Usando vtlib 2.x
$filterInstance = new Vtiger_Filter();
$filterInstance -> nombre = 'Todos';
$filterInstance -> isdefault = true;
$moduleInstance -> addFilter($filterInstance);
$filterInstance -> addField($fieldInstance1) -> addField ($fieldInstance2, 1);
Configurar herramientas
Usando vtlib 1.x
Vtiger_Module::disableAction('Payslip','Import');
Vtiger_Module::enableAction ('nmina', 'Exportar');
Usando vtlib 2.x
$moduleInstance -> enableTools (Array ('Import', 'Unir'));
$moduleInstance -> disableTools('Export');
Configurar compartir acceso
Usando vtlib 1.x
Vtiger_Module::setDefaultSharingAccess ('Nmina', 'Privado');
Usando vtlib 2.x
$moduleInstance -> setDefaultSharing('Private');
vtlib
Apndice 2 cambios de esquema
Algunas de la API vtlib hacen los cambios de esquema (o agregar una tabla nueva o una nueva
columna a
tabla existente) son capturados los detalles en esta seccin
Mesa columna accin Descripcin
vtiger_field helpinfo texto columna
Adicin
Esta columna va a almacenar el texto de ayuda asociado
con vtiger_field
vtiger_language mesa adems captura Idiomas instalados para vtiger CRM
vtiger_links mesa adems capta detalles de enlaces mdulo personalizado
versin vtiger_tab
NOMBRE
Columna
Adicin
Versin del mdulo en el uso de la pista. til durante
migracin o actualizacin del mdulo.
vtiger_tab_info tabla de adicin captura algunas de las preferencias del mdulo como
mnimo versin apoyada, mximo
soportados, etc.
vtiger_crmentityrel mesa adems capta a la relacin entre los registros del mdulo.
Para el manejo de la lista genrica relacionados.
vtiger_fieldmodulerel tabla adicin capturas relacionadas con informacin de mdulo para el
campo de uitype 10
vtiger_mailer_queue mesa adiciones estas tablas se agregarn cuando Vtiger_Mailer
clase usar para enviar mails
vtiger_mailer_queueinfo asincrnicamente.
vtlib
Apndice 3 usando vtiger_imageurl API
Hay imgenes reutilizables bajo la carpeta themes/images e imgenes especficas tema estar
bajo
temas / < THEMENAME > / carpeta de imgenes.
Usted puede dejar la imagen fcilmente configurable para cada tema, por favor asegrese de
seguir los pasos
abajo:
En YourSmartyFile.tpl (archivo de plantilla Smarty)
< img src="{'myimage.gif'|@vtiger_imageurl:$THEME}" >
$THEME variable ser enviada por el script llamada como sigue:
global $theme;
$smarty -> asignar ('Tema', $theme);
$smarty -> display('YourSmartyFile.tpl');
Esto se traduce en:
< img src = "temas / < THEMENAME > / images/myimage.gif" > si MiImagen.gif existe bajo
carpeta < THEMENAME >
< img src="themes/images/myimage.gif" > ruta de acceso predeterminada si no se encuentra
la imagen especfica del tema
Si directamente construir la interfaz de usuario de script PHP, asegrate de utilizar la API de la
siguiente manera:
vtiger_imageurl ('nombre ' de esta imagen, 'themename');
Nota: API vtiger_imageurl se define en include/utils/VtlibUtils.php
vtlib
Apndice 4 vtlib_handler mtodo
Mdulo clase debe definir vtlib_handler mtodo para controlar eventos especiales
desencadenados tal como se describe
abajo:
Descripcin del tipo de evento
Module.postinstall una vez completada la importacin del mdulo.
Module.preupdate antes de actualizar el mdulo (paquete).
Module.postupdate despus de que se actualiza el mdulo (paquete).
Module.disabled cuando el mdulo est deshabilitado.
Module.Enabled cuando se activa el mdulo.
Module.preUninstall antes de que se elimina la instancia del mdulo.
Ejemplo:
vtlib_handler funcin debe definirse como mtodo mdulo de clase.
/**
* Se invoca cuando se realizan acciones especiales en el mdulo.
nombre del mdulo string * @param
Tipo de evento de cadena * @param
*/
la funcin vtlib_handler ($modulename, $event_type) {}
Si ($event_type == 'module.postinstall') {}
Manejar TODO el post acciones de instalacin
} ms if ($event_type == 'module.disabled') {}
TODO manejar las acciones cuando este mdulo est deshabilitado.
} ms if ($event_type == 'module.enabled') {}
TODO manejar las acciones cuando se habilita este mdulo.
} ms if ($event_type == 'module.preuninstall') {}
TODO manejar acciones cuando este mdulo est a punto de ser eliminado.
} ms if ($event_type == 'module.preupdate') {}
Acciones de manejar TODO antes de este mdulo se actualiza.
} ms if ($event_type == 'module.postupdate') {}
TODO manejar las acciones despus de que este mdulo se actualiza.
}
}
UseCase
Cuando se deshabilita un mdulo, a travs de vtlib_handler ahora puede cancelar el registro
de cualquier notificacin de eventos si no es
permitido otra vez.
vtlib
Apndice 5 vtlib_listview javascript API
vtlib_listview javascript API proporciona la capacidad para registrar la funcin de detector para
algunos predefinidos
tipos de eventos.
vtlib_listview.Register (< EVENT_TYPE >, < HANDLER_FUNCTION >,
[< HANDLER_FUNCTION_OPTIONAL_PARAMETERS >]);
Cell.onmouseover cuando se mueve el ratn sobre la celda del control listview.
Cell.onmouseout cuando el ratn se mueve fuera de la clula de listview.
La funcin de controlador ser invocada con dos conjunto de argumentos:
Evento parmetros {}
evento: < EVENT_TYPE >
DomNode: nodo DOM HTML utilizado para detectar el evento
mdulo: nombre del mdulo al cual campo pertenece
FieldName: nombre del campo
recordID: ID de registro se muestran en el listview
}
Los parmetros opcionales es aquel que se ha pasado a la vtlib_listview.register API
Ejemplo: Usted puede tener los siguientes en el archivo javascript
vtlib_listview.Register ('cell.onmouseover', {function(evtparams)}
evtparams.domnode.style.backgroundColor = '#FFFD7C';
});
vtlib_listview.Register ('cell.onmouseout', {function(evtparams)}
evtparams.domnode.style.backgroundColor = 'blanco';
});
NOTA:
Para hacer el gatillo en todos los mdulos, usted necesitar configurar el javascript como
HEADERSCRIPT
(consulte la costumbre enlaces #Special LinkType)
vtlib
Preguntas frecuentes preguntas frecuentes
1. cmo escribir plantillas propias?
Referencia: http://forums.vtiger.com/viewtopic.php?p=75410#75410
Ahora quiero que mis propias plantillas. La documentacin de VTLib afirma que hago
esto:
Sus archivos de plantilla de mdulo especficos Smarty deben ser creados bajo
Smarty/plantillas/modules/< NewModuleName >.
Usar la API vtlib_getModuleTemplate ($module, $templateName)
(include/utils/VtlibUtils.php) como:
$smarty -> display (vtlib_getModuleTemplate ($currentModule, 'MyListview.tpl'));
Mi pregunta es dnde puedo colocar este fragmento de cdigo? En el creador del mdulo?
Solucin:
Supongamos que desea crear su propio Listview para el mdulo TestModule, lo que usted
necesita
hacer es la siguiente:
1. crear el MyListview.tpl bajo Smarty/templates/modules/TestModule/MyListView.tpl
2. en su modules/TestModule/Listview.php usted necesitar llamar la pantalla smarty como:
$smarty -> display (vtlib_getModuleTemplate ($currentModule, 'MyListview.tpl'));
Por favor, consulte: http://www.smarty.net/manual/en/ para aprender ms sobre el uso de
Smarty.
2. cmo se utiliza la plantilla de mdulo?
Siguiente ejemplo explica cmo se procesa el mdulo listview accin utilizando el sabelotodo.
vtlib
3. no se ve Module Manager!
He instalado vtlib en vitger 5.0.4 que no puedo parece a ver al gerente del mdulo
bajo configuracin de cualquiera, hay un archivo o dir que necesito mover algunos donde
orden para el administrador de mdulo rellenar?
Solucin:
Permiten acceso de escritura a los mdulos, Smarty, cron /,de prueba / directorio antes de
descomprimir
vtlib-x.y.zip
Borrar archivos de la carpeta Smarty/templates_c (con extensin *. tpl.php) y actualizar
la pgina de configuracin, deberas ver Module Manager.
4. Consejos para el uso de nombres de campo
1. preferiblemente utilizar pequeos personajes casos para campo (nombre y columnname).
2. Evite cualquier caracteres especiales como (_, :,-) en los nombres. Se puede utilizar para las
etiquetas
3. teniendo el mismo valor de campo (nombre y columnname) hace ms fcil evitar
para comenzar con la confusin.
vtlib
En esta categora los mdulos crear registros de la entidad en vtiger CRM. El mdulo
proporcionar crear
ver, editar vista, vista de detalle y vista de lista. Usted ser capaz de crear filtros etc..
Mdulos de entidad se recomiendan para los casos donde un nuevo tipo de objeto de datos,
por ejemplo hojas de tiempo,
debe aadirse al sistema como parte del nuevo mdulo. Estos nuevos objetos de datos pueden
ser
han consultado y manejado por los administradores y usuarios.
Conduce, contactos, cuentas, nminas etc.... son mdulos de entidad.
Mdulo de extensin
Mdulos en esta categora no necesitan seguir el comportamiento general del mdulo de la
entidad. Los registros
creado por entidad mdulo podra utilizarse para proporcionar una funcionalidad extendida o
los registros
creacin/edicin puede ser manejado en su propia manera.
Mdulos de extensin pueden usarse cuando se necesita funcionalidad adicional, sin
necesidad de nuevo
clases de objetos de datos que los usuarios ver y administracin.
Tablero de instrumentos, informes, Portal etc.... son mdulos de extensin.
Paquete de idioma
Paquetes de idioma para vtiger CRM son tratados tambin como otro tipo de mdulo de vtlib.
Paquetes
Paquetes te dejan instalar un sistema de inter dependiente vtlib mdulos en el orden indicado.
Nota: Module manager proporcionar la posibilidad de instalar estos mdulos diferentes.
vtlib
Creacin de un nuevo mdulo de entidad
vtlib simplifica la creacin de nuevos mdulos de vtiger CRM. Los desarrolladores pueden
utilizar vtlib para desarrollar vtiger
Mdulos CRM que aaden nuevas funciones a vtiger CRM. Estos mdulos se pueden
empaquetar entonces para
fcil instalacin por el mdulo de administrador.
Nota: En este documento vamos a explicar el proceso de creacin de un nuevo mdulo
mediante la construccin de un ejemplo
Mdulo 'Nmina'. Este cdigo de ejemplo se incluye como parte del paquete de vtlib y puede
ser utilizado como una partida
punto para crear nuevos mdulos. Por favor refirase a la 'usando el cdigo de ejemplo
proporcionado con la API de vtlib'
seccin de este documento para obtener ms informacin.
Los siguientes son pasos importantes que deben seguirse para obtener un mdulo bsico de
trabajo. El
backend seccin cubre cambios en el nivel de base de datos para el mdulo, y cubre la seccin
frontend
los archivos de interfaz de usuario.
Backend
Paso 1 crear instancia de mdulo, crear tablas de base de datos y agregarlo al men
Paso 2 cuadras aadir UI para el mdulo.
Paso 3 agregar campos y asociarlo a los bloques. Establecer al menos un campo como
identificador de entidad.
Paso 4 vista de lista por defecto crea y filtros adicionales (Asegrese de crear un filtro de todo
lo que es llamado
el filtro predeterminado)
Paso 5 crear lista relacionados (para mostrar en la ficha '' ms informacin '')
Paso 6 ajuste de compartir las reglas de acceso
Paso 7 Ajuste mdulo herramientas opciones (es decir, Import/Export)
FrontEnd
Paso 8 mdulo crear directorio y archivos
Embalaje
Paso 9 envases
Opciones adicionales
Mdulo de plantillas (para personalizar la forma, vista de lista y configuracin de interfaz de
usuario)
Ajustes del mdulo (que permiten a los administradores configurar el mdulo)
Mdulo de eventos (slo disponible en vtiger CRM versin 5.1)
Mdulo de Webservices (slo disponible en vtiger CRM versin 5.1)
Estos pasos se explican en detalle en el curso de esta seccin.
Estamos utilizando el mdulo de ejemplo 'Nmina' para explicar el uso de vtlib API.
Sobre el mdulo de nmina
Tendr la capacidad para crear, editar, eliminar los registros de nmina. Puede crear filtros
personalizados para el Listview,
que muestra la lista de instancias de nmina.
Asociamos este mdulo con el men Herramientas.
vtlib
Paso 1: Creacin de mdulo
Clase Vtiger_Module proporciona una API para trabajar con mdulos de vtiger CRM.
include_once('vtlib/vtiger/Module.php');
$moduleInstance = new Vtiger_Module();
$moduleInstance -> nombre = 'Nmina';
$moduleInstance -> save();
$moduleInstance -> initTables();
$menuInstance = Vtiger_Menu::getInstance('Tools');
$menuInstance -> addModule($moduleInstance);
Vtiger_Module -> initTables() API inicializar (crear) las tablas necesarias 3 un mdulo debe
tienen como se explica ms abajo:
Convencin de denominacin Descripcin de la tabla
BaseTable vtiger_ < MODULENAME > contiene los campos por defecto para el nuevo mdulo
CustomTable vtiger_ < MODULENAME > cf contiene campos personalizados del mdulo
Grouptable grouprel vtiger_ < MODULENAME > se utiliza cuando los registros se asignan a un
grupo
Vtiger_Menu -> addModule (< ModuleInstance >) API crear el elemento de men que sirve
como interfaz de usuario
punto de entrada del mdulo.
vtlib
Paso 2: Crear bloque (en forma de interfaz de usuario)
Clase Vtiger_Block proporciona API para trabajar con un bloque del mdulo, el recipiente que
contiene los campos
juntos.
El ejemplo dado continuacin describe la manera de crear nuevos bloques para el mdulo
creado anteriormente:
include_once('vtlib/vtiger/Module.php');
$blockInstance = new Vtiger_Block();
$blockInstance -> etiqueta = 'LBL_PAYSLIP_INFORMATION';
$moduleInstance -> addBlock($blockInstance);
$blockInstance2 = new Vtiger_Block();
$blockInstance2 -> etiqueta = 'LBL_CUSTOM_INFORMATION';
$moduleInstance -> addBlock($blockInstance2);
Nota: Bloque LBL_CUSTOM_INFORMATION debe crearse siempre para apoyar los campos
personalizados para un
mdulo.
vtlib
Paso 3: Agregar campos
Clase Vtiger_Field proporciona API para trabajar con un campo de mdulo, cules son los
elementos bsicos que
almacenar y visualizar los datos de registro del mdulo.
En el ejemplo siguiente describe la manera de crear nuevo campo para el mdulo creado
anteriormente:
include_once('vtlib/vtiger/Module.php');
$fieldInstance = new Vtiger_Field();
$fieldInstance -> name = 'PayslipName';
$fieldInstance -> tabla = 'vtiger_payslip';
$fieldInstance -> columna = 'payslipname';
$fieldInstance -> columntype = 'Varchar';
$fieldInstance -> uitype = 2;
$fieldInstance -> typeofdata = ' V ~ M';
$blockInstance -> addField($fieldInstance);
Nota: El nombre de fieldInstance es un valor obligatorio ajustarse antes de guardar / aadir al
bloque.
Otros valores (si no establece) estn en Mora como se explica a continuacin:
$fieldInstance -> basetable del mdulo de mesa
$fieldInstance -> columna $fieldInstance -> nombre en minsculas.
[La mesa se ver alterada mediante la adicin de la columna si no est presente.
$fieldInstance -> columntype VARCHAR (255)
$fieldInstance -> uitype 1
$fieldInstance -> typeofdata V ~ O
$fieldInstance -> etiqueta $fieldInstance -> nombre
[Asignacin de entrada debe estar presente en el archivo de mdulo idioma as como]
Ajustes opcionales
$fieldInstance -> presencia 0 siempre activo (no se puede modificar usando Layout Editor en
5.1.0)
1 marcarlo en activo (en adelante 5.1.0)
2 activo propiedad puede modificarse utilizando Layout Editor (en adelante 5.1.0)
$fieldInstance -> quickcreate 0 campo de habilitar en forma rpida de crear
1 desactivar el campo en forma rpida de crear
$fieldInstance -> masseditable 0 campo Disallow permanentemente para la edicin masiva
(5.1.0 en adelante)
1 permiten campo para masa edicin (en adelante 5.1.0)
2 no permitir campo para la edicin de masa (puede ser puesta a disposicin utilizando
Layout
Editor 5.1.0 en adelante)
vtlib
Identificador de entidad
Uno de los campo obligatorio debe configurarse como identificador de entidad del mdulo una
vez que se crea. Este campo
se utilizar para mostrar los detalles en 'ltimas entradas visitaron' etc....
$moduleInstance -> setEntityIdentifier($fieldInstance);
Lista desplegable establecer valores
Si el campo es de tipo lista desplegable (uitype 15, 16, 33, 55, 111) entonces usted puede
configurar los valores iniciales
usando la API siguiente:
$fieldInstance -> setPicklistValues (Array ('Value1', 'Value2'));
Configurar el mdulo relacionado
Si el campo es de tipo select Popup (uitype = 10), puede configurar los mdulos relacionados
que podra
seleccionarse mediante Popup usando la API siguiente:
$fieldInstance -> setRelatedModules (Array ('OtherModule1', 'OtherModule2'));
Para desactivar el mdulo relacionado se puede utilizar la siguiente API:
$fieldInstance -> unsetRelatedModules(Array('OtherModule2'));
vtlib
Informacin de sistema de ayuda
Proporcionar ayuda informacin para campo mdulo ser til para educar a los usuarios.
include_once('vtlib/vtiger/Module.php');
$fieldInstance = new Vtiger_Field();
$fieldInstance -> name = "LinkTo";
...
$fieldInstance -> helpinfo = 'Se refieren a un contacto existente';
...
$blockInstance -> addField($fieldInstance);
Usted puede proporcionar establecer el texto de ayuda para un campo existente utilizando la
API siguiente:
$fieldInstance -> setHelpInfo ('contenido de la ayuda');
Nota: El contenido de la ayuda puede ser texto llano o rico. Ver el uso recomendado abajo.
Cuando un campo tiene informacin de ayuda, aparecer al lado de la etiqueta del campo
helpicon.
Hacer clic en l se mostrar el contenido de la ayuda como se muestra:
vtlib
Nota: A continuacin es el fragmento de cdigo que se debe agregar a la EditView.php del
mdulo existente a
habilitar la compatibilidad con icono de ayuda.
// ...
Recopilar la informacin de ayuda asociada con campos
$smarty -> asignar ('FIELDHELPINFO', vtlib_getFieldHelpInfo($currentModule));
FINAL
// ...
Si ($focus -> modo == 'editar') $smarty -> display('salesEditView.tpl');
ms $smarty -> display('CreateView.tpl');
Se recomienda:
Proporcionar una correlacin de traduccin para el helpinfo se utiliza para un campo.
Ejemplo establecer el helpinfo como HELP_FILEDNAME_INFO y proporcionar el contenido en
el archivo de idioma.
$fieldInstance -> setHelpInfo('HELP_FIELDNAME_INFO');
En el mdulo / < MODULENAME > /language/en_us.lang.php
$mod_strings = array ()
...
'HELP_FIELDNAME_INFO' = > ' Fieldname ayuda debe ser el contenido aqu'
...);
Evitar saltos de lnea en el contenido, que puede utilizar la etiqueta < br > en lugar de ayuda
Preferentemente escape (",", <>,) con HTML como entidades (& quot; & lt; & gt;)
Es bueno haber mantener el contenido menos, si desea proporcionar ms detalles puede
vincular a
una pgina externa como se muestra en el ejemplo siguiente:
Llene su nombre contactos aqu. Para saber ms sobre lo < br >
< a href = 'http://en.vtiger.com/wiki.html' > ver ms < /a >
vtlib
Establezca la propiedad MassEdit
Nota: Masa Editar funcin est disponible desde vtiger 5.1 en adelante
Usted puede hacer el campo disponible para su utilizacin masiva edicin las maneras
siguientes que se describe a continuacin:
Al crear el campo de la propiedad se puede establecer:
include_once('vtlib/vtiger/Module.php');
$fieldInstance = new Vtiger_Field();
$fieldInstance -> name = 'TestField';
...
$fieldInstance -> masseditable = 1;
...
$blockInstance -> addField($fieldInstance);
Si tienes un campo existente su propiedad puede actualizarse mediante la API:
$fieldInstance -> setMassEditable(value);
El valor establecido para masseditable propiedad tiene el siguiente significado:
Valor Descripcin
0 no disponible para la edicin masiva y esta propiedad no se puede controlar por el usuario.
1 disponible para editar masa
2 no disponible para la edicin masiva pero la propiedad puede ser controlada por el usuario
(mediante el administrador de diseo, etc.)
vtlib
Paso 4: Crear filtros
Clase Vtiger_Filter proporciona API para trabajar con vista personalizada de un mdulo o filtro.
Mostrar la lista
se controla mediante estos filtros.
En el ejemplo siguiente describe la manera de crear nuevo filtro para el mdulo:
include_once('vtlib/vtiger/Module.php');
$filterInstance = new Vtiger_Filter();
$filterInstance -> nombre = 'Todos';
$filterInstance -> isdefault = true;
$moduleInstance -> addFilter($filterInstance);
Configurar campos
Para agregar campos al filtro se puede utilizar la siguiente API:
$filterInstance -> addField ($fieldInstance, $columnIndex);
Donde $columnIndex (opcional) es el ndice/de orden en el que el campo debera aparecer en
la vista de lista.
Reglas de configuracin
Una vez que se agrega el campo filtrar te puede fijar la regla (condicin) para filtrado as como
mediante la
las siguientes API:
$filterInstance -> addRule ($fieldInstance, $comparator, $compareValue,
$columnIndex);
Donde comparador podra ser uno de los siguientes:
ES IGUAL A
NOT_EQUALS
STARTS_WITH
ENDS_WITH
CONTIENE
DOES_NOT_CONTAINS
LESS_THAN
GREATER_THAN
LESS_OR_EQUAL
GREATER_OR_EQUAL
$compareValue es que el valor contra con el campo debe ser comparada.
$columnIndex (opcional) es el orden en que se debe aplicar esta condicin de regla.
vtlib
Paso 5: Listas relacionadas
Un mdulo podra estar asociado con varios registros de otro mdulo que aparece debajo
Pestaa "Ms informacin" en vista de detalle.
El ejemplo dado continuacin describe la manera de crear a una relacin entre un mdulo de
nmina y cuentas:
include_once('vtlib/vtiger/Module.php');
$moduleInstance = Vtiger_Module::getInstance('Payslip');
$accountsModule = Vtiger_Module::getInstance('Accounts');
$relationLabel = 'Cuentas';
$moduleInstance -> setRelatedList)
$accountsModule, $relationLabel, Array('ADD','SELECT')
);
Con esto usted puede agregar una o ms cuentas a los registros de nmina.
A la relacin entre el uso de mdulos lo siguiente:
$moduleInstance -> unsetRelatedList($targetModuleInstance);
Acerca de setRelatedList API
Vtiger_Module -> setRelatedList (< TARGET MODULE > [, < HEADER etiqueta >, < permitido
acciones >,
< CALLBACK funcin nombre >]);
nombre < blanco mdulo > a qu relacin est siendo configuracin.
< HEADER etiqueta > opcional (por defecto = < TARGET MODULE >)
Etiqueta para usar ms la informacin relacionada con vista.
< permitido acciones > opcional agregar o seleccione (default = false)
Qu botones deben mostrarse en la vista lista relacionada al tiempo que aade
registros.
< nombre de la funcin de devolucin de llamada > opcional (por defecto = get_related_list)
La funcin debe ser definida en la clase de < mdulo fuente >.
Esto debera generar las entradas del control listview para mostrar.
NOTA:
Esta API crear una entrada en la tabla de vtiger_crmentityrel para hacer un seguimiento de la
relacin entre el mdulo
registros. Mdulos estndar disponibles en vtiger CRM encarga de la relacin en tablas
separadas y realiza la
Se unen para buscar datos especficos de cada mdulo.
Esto es un intento de lograr comportamiento genrico. Puedes escribir personalizada llamada
vuelta relacionados con funciones para manejar
consultas de lista que satisfagan sus necesidades.
vtlib
Limitaciones
Siguientes limitaciones para la lista relacionados con APIs
1. variables de clase mdulo estndar no se fijan como es requerido por el mdulo de vtlib
get_related_list API.
La gestin de casos debe ser manejada @function vtlib_setup_modulevars en
include/utils/VtlibUtils.php
2. get_related_list API agregada a la clase de mdulo no maneja unirse
en las mesas donde algunos mdulos como (cuentas) almacenar informacin por lo tanto, no
son los detalles completos
buscar en la vista lista relacionados.
(Clasificacin de ejemplo en el campo de la ciudad en vista de lista relacionados fallar si
dieOnError es true)
vtlib
Paso 6: Compartir las reglas de acceso
Configuracin de acceso compartido para el mdulo puede realizarse como se muestra a
continuacin:
En el ejemplo siguiente describe la forma de configurar el mdulo de nmina como privado
include_once('vtlib/vtiger/Module.php');
$moduleInstance = Vtiger_Module::getInstance('Payslip');
$moduleInstance -> setDefaultSharing('Private');
La < PERMISSION_TYPE > puede ser una de las siguientes opciones:
Public_ReadOnly
Public_ReadWrite
Public_ReadWriteDelete
Privado
vtlib
Paso 7: Mdulo herramientas
Caractersticas como la importacin, la exportacin se denominan como herramientas del
mdulo. Estas herramientas pueden habilitarse o deshabilitan como
se muestra a continuacin:
En el ejemplo siguiente describe la forma de activar y desactivar las herramientas para el
mdulo de nmina
include_once('vtlib/vtiger/Module.php');
$moduleInstance = Vtiger_Module::getInstance('Payslip');
$module -> enableTools (Array ('Import', 'Exportar'));
$module -> disableTools('Export');
vtlib
Paso opcional: Mdulo eventos
Concurso completo API se sustenta del vtiger 5.1 en adelante (leer ms).
Para comprobar si su vtiger CRM apoya eventos uso lo siguiente:
include_once('vtlib/vtiger/Event.php');
Boolean Vtiger_Event::isSupported();
Para registrar un evento para un mdulo, utilice lo siguiente:
include_once('vtlib/vtiger/Event.php');
Vtiger_Event::Register ('< MODULENAME >', '< EVENTNAME >',
'< HANDLERCLASS >', '< HANDLERFILE >');
< MODULNAME > mdulo para lo cual deben registrar eventos
< EVENTNAME > vtiger.entity.aftersave
vtiger.Entity.BeforeSave
< HANDLERCLASS > clase de controlador de eventos, miren el ejemplo de abajo
< HANDLERFILE > archivo donde se define HANDLERCLASS (debe ser dentro de directorio vtiger
CRM)
Ejemplo: Registro de evento "callback" antes y despus de salvar.
Si (Vtiger_Event::hasSupport()) {}
Vtiger_Event::Register)
'Nmina', 'vtiger.entity.aftersave',
'PayslipHandler', 'modules/Payslip/PayslipHandler.php'
);
Vtiger_Event::Register)
'Nmina', 'vtiger.entity.beforesave',
'PayslipHandler', 'modules/Payslip/PayslipHandler.php'
);
}
modules/Payslip/PayslipHandler.php
<? php
clase PayslipHandler ampla {VTEventHandler}
funcin handleEvent ($eventName, $data) {}
Si ($eventName == 'vtiger.entity.beforesave') {}
Entidad est a punto de ser salvado, tomar accin requerida
}
Si ($eventName == 'vtiger.entity.aftersave') {}
Entidad ha sido salvado, tomar accin siguiente
}
}
}
?>
vtlib
Paso opcional: Mdulo Webservices
WebServices API se sustenta del vtiger 5.1 en adelante (leer ms).
Usted necesitar invocar la configuracin API para habilitar el soporte para los mdulos
personalizados.
include_once('vtlib/vtiger/Module.php');
$moduleInstance = Vtiger_Module::getInstance('Payslip');
$moduleInstance -> initWebservice();
Nota: Cuando se importa el mdulo de la API de inicializar Webservice se invoca
automticamente.
vtlib
Paso opcional: Mdulo plantillas
Si desea personalizar la vista de lista o tener una pgina de configuracin personalizada para el
mdulo, entonces
Usted necesitar crear una plantilla Smarty en consecuencia. Usted necesitar tener algn
conocimiento de
Uso de Plantillas Smarty yuu antes de proceder.
Sus archivos de plantilla de mdulo especficos Smarty deben ser creados bajo
Smarty/plantillas/modules /
< NewModuleName >.
Como usar la API de vtlib_getModuleTemplate ($module, $templateName)
(include/utils/VtlibUtils.php):
$smarty -> display (vtlib_getModuleTemplate ($currentModule, 'MyListview.tpl'));
vtlib
Paso opcional: Enlaces personalizados
Se puede aadir enlace web personalizado para el mdulo utilizando la API siguiente:
include_once('vtlib/vtiger/Module.php');
$moduleInstance = Vtiger_Module::getInstance('ModuleName');
$moduleInstance -> addLink (< LinkType >, < LinkLabel >, < LinkURL >);
LinkType tipo de enlace como-
DETAILVIEW: Agregar un enlace en el men "Ms acciones" en la vista de detalle del registro.
DETAILVIEWBASIC: Agregar un vnculo a la lista de 'Acciones' en la vista de detalle del
registro.
DETAILVIEWWIDGET: Se aade un widget en el lado derecho de la vista de detalle de la
Registro, similar al widget de la nube de etiquetas.
LISTVIEW: Agregar un enlace bajo el botn de "Ms acciones" en la vista de lista de un
mdulo.
LISTVIEWBASIC: Aadir un botn en la vista lista del mdulo similar a borrar, masa
Botones de edicin.
LinkLabel etiqueta a utilizar para el enlace al Mostrar
LinkURL URL del enlace. Puede utilizar variables como $variablename$
En la pgina del mdulo ListView controlador (modules/Payslip/ListView.php) tendr este
fragmento de cdigo
(antes de la llamada a $smarty -> display()):
include_once('vtlib/vtiger/Link.php');
$customlink_params = array ('MODULE' = > $currentModule, 'ACTION' = >
vtlib_purify($_REQUEST['action']), 'CATEGORY' = > $category);
$smarty -> asignar ('CUSTOM_LINKS', Vtiger_Link::getAllByType(getTabid($currentModule),
Array ('LISTVIEW', 'LISTVIEWBASIC'), $customlink_params));
En la pgina del mdulo DetailView controlador (modules/Payslip/DetailView.php) tendr este
pedazo de
cdigo (antes de la llamada a $smarty -> display()):
include_once('vtlib/vtiger/Link.php');
$customlink_params = array ('MODULE' = > $currentModule, 'RECORD' = > $focus -> id,
'ACTION' = >
vtlib_purify($_REQUEST['action']));
$smarty -> asignar ('CUSTOM_LINKS', Vtiger_Link::getAllByType(getTabid($currentModule),
Array ('DETAILVIEW', 'DETAILVIEWBASIC', 'DETAILVIEWWIDGET'), $customlink_params));
NOTA:
El $MODULE$, $ $ACTION y $ $RECORD variables en la LinkURL, ser reemplazado por el
conjunto de valores
a travs de DetailView.php
El $MODULE$, $ACTION$, variables de $ $CATEGORY en el LinkURL, ser reemplazado por el
conjunto de valores
a travs de ListView.php
vtlib
A continuacin es un ejemplo que agrega un enlace a la DetailView del mdulo.
include_once('vtlib/vtiger/Module.php');
$moduleInstance = Vtiger_Module::getInstance('Payslip');
$moduleInstance -> (addLink
'DETAILVIEW',
"Nueva accin",
' index.php?module=OtherModule & accin = haga & src_module = $MODULE$ & src_record =
$RECORD$ '
);
En la pgina DetailView encontrar que ms acciones de enlace. Cuando ratn cierne sobre
este toda la costumbre relacionada
enlaces aparecer como una gota abajo. Vea la captura de pantalla siguiente:
LinkType especial
LinkTypes siguientes se tratan especialmente mientras que procesa para la exhibicin:
Descripcin LinkType
HEADERSCRIPT el enlace ser tratado como un tipo de javascript y se importarn en la seccin
head del
la pgina de salida HTML como < script tipo = ' text/javascript' src = 'linkurl' >< / script >
HEADERCSS el enlace ser tratado como un tipo CSS y se importarn en la seccin principal de
la
Pgina de salida HTML como < link rel = "stylesheet" type = ' text/css' href ='linkurl >
HEADERLINK puedes ver estos enlace agrupados bajo ms en el panel de encabezado superior.
Es til si desea proporcionar herramientas utitlity como Bookmarklet, etc.
vtlib
Guin terminado final (Backend)
Aqu est el guin completo (vtlib.Test.Create.Module1.php) que crea el mdulo de nmina
<? php
Activar depuracin nivel
$Vtiger_Utils_Log = true;
include_once('vtlib/vtiger/menu.php');
include_once('vtlib/vtiger/Module.php');
Crear instancia de mdulo y gurdelo primero
$module = new Vtiger_Module();
$module -> nombre = 'Nmina';
$module -> save();
Inicializar todas las tablas necesarias
$module -> initTables();
/**
* Crea la siguiente tabla:
* vtiger_payslip (payslipid INTEGER)
* vtiger_payslipcf(payslipid INTEGER PRIMARY KEY)
* vtiger_payslipgrouprel ((payslipid INTEGER PRIMARY KEY, groupname VARCHAR(100))
*/
Aadir el mdulo al men (punto de entrada de interfaz de usuario)
$menu = Vtiger_Menu::getInstance('Tools');
$menu -> addModule($module);
Aadir el mdulo bsico
$block1 = new Vtiger_Block();
$block1 -> etiqueta = 'LBL_PAYSLIP_INFORMATION';
$module -> addBlock($block1);
Aadir bloque personalizado (necesario para apoyar los campos personalizados)
$block2 = new Vtiger_Block();
$block2 -> etiqueta = 'LBL_CUSTOM_INFORMATION';
$module -> addBlock($block2);
/ ** Crear campos obligatorios y agregar al bloque * /
$field1 = new Vtiger_Field();
$field1 -> name = 'PayslipName';
$field1 -> tabla = $module -> basetable;
$field1 -> columna = 'payslipname';
$field1 -> columntype = 'Varchar (255)';
$field1 -> uitype = 2;
$field1 -> typeofdata = ' V ~ M';
$block1 -> addField($field1); / ** Crea el campo y se agrega al bloque * /
Establecer al menos un campo identificador de registro de mdulo
$module -> setEntityIdentifier($field1);
$field2 = new Vtiger_Field();
$field2 -> name = 'PayslipType';
$field2 -> etiqueta = 'Nmina tipo';
$field2 -> columntype = 'Varchar';
$field2 -> uitype = 15;
$field2 -> typeofdata = ' V ~ O'; / / Varchar ~ opcional
$block1 -> addField($field2); / ** tabla y columna se establecen automticamente * /
$field2 -> setPicklistValues (Array ('Empleado', 'Aprendiz'));
$field3 = new Vtiger_Field();
$field3 -> nombre = 'Mes';
vtlib
$field3 -> uitype = 23;
$field3 -> typeofdata = haba ~ M'; Fecha ~ obligatorio
$block1 -> addField($field3); / ** tabla, columna, etiqueta, valores por defecto * /
$field4 = new Vtiger_Field();
$field4 -> name = "LinkTo";
$field4 -> etiqueta = 'Link To';
$field4 -> tabla = 'vtiger_payslip';
$field4 -> columna = 'linkto';
$field4 -> columntype = 'Varchar';
$field4 -> uitype = 10;
$field4 -> typeofdata = ' V ~ O';
$field4 -> helpinfo = 'Se refieren a un contacto existente';
$block1 -> addField($field4);
$field4 -> setRelatedModules(Array('Contacts'));
/ ** Campos comunes que deberan estar en cada mdulo, vinculado a la mesa de ncleo
vtiger CRM
*/
$field5 = new Vtiger_Field();
$field5 -> name = 'assigned_user_id';
$field5 -> etiqueta = 'Asignado a';
$field5 -> tabla = 'vtiger_crmentity';
$field5 -> columna = 'smownerid';
$field5 -> uitype = 53;
$field5 -> typeofdata = ' V ~ M';
$block1 -> addField($field5);
$field6 = new Vtiger_Field();
$field6 -> name = 'CreatedTime';
$field6 -> etiqueta = 'Tiempo creado';
$field6 -> tabla = 'vtiger_crmentity';
$field6 -> columna = 'createdtime';
$field6 -> uitype = 70;
$field6 -> typeofdata = ' t ~ O';
$field6 -> displaytype = 2;
$block1 -> addField($field6);
$field7 = new Vtiger_Field();
$field7 -> name = 'ModifiedTime';
$field7 -> etiqueta = 'Tiempo modificado';
$field7 -> tabla = 'vtiger_crmentity';
$field7 -> columna = 'modifiedtime';
$field7 -> uitype = 70;
$field7 -> typeofdata = ' t ~ O';
$field7 -> displaytype = 2;
$block1 -> addField($field7);
/ ** FINAL * /
Crear filtros personalizados por defecto (obligatorio)
$filter1 = new Vtiger_Filter();
$filter1 -> nombre = 'Todos';
$filter1 -> isdefault = true;
$module -> addFilter($filter1);
Agregar campos al filtro creado
$filter1 -> addField($field1) -> addField ($campo2, 1) -> addField ($field5, 2);
Crear un filtro ms
$filter2 = new Vtiger_Filter();
$filter2 -> name = 'Sobretodo2';
$module -> addFilter($filter2);
Agregar campos al filtro
$filter2 -> addField($field1);
vtlib
$filter2 -> addField ($campo2, 1);
Agregar regla en el campo de filtro
$filter2 -> addRule ($campo1, 'Contiene', ' Test');
/ ** Asociar otros mdulos para este mdulo * /
$module -> setRelatedList(Vtiger_Module::getInstance('Accounts'), 'Cuentas',
Array('ADD','SELECT'));
/ ** Establece compartir acceso de este mdulo * /
$module -> setDefaultSharing('Private');
/ ** Activar y desactivar las herramientas disponibles * /
$module -> enableTools (Array ('Import', 'Exportar'));
$module -> disableTools('Merge');
?>
vtlib
Ejecutar el Script de creacin de mdulo
1. para ejecutar el vtlib.Test.Create.Module1.php script, abierto
http://localhost/vtigerCRM/vtlib.test.html
2. Haga clic en crear nmina mdulo para creacin de pruebas de mdulo de nmina
vtlib
Paso 8: Crear ficheros del mdulo (Frontend)
Cada nuevo mdulo debe tener un directorio bajo mdulos / carpeta. Para ayudar a acelerar el
mdulo
creacin de cdigo, vtlib viene liado con la estructura del esqueleto mdulo basado en el
mdulo 'Nmina'.
Este cdigo se incluyen en la carpeta vtlib/ModuleDir que se puede utilizar como plantilla para
nuevo mdulo que
se crea. Contiene archivos de origen que necesita ser cambiado como se explica ms abajo.
Nota: ModuleDir tiene subdirectorios especficos a la versin vtiger, por favor, asegrese de
usar la indicada.
1. copia ModuleDir / < target_vtiger_version > contenido al recin creados mdulos / <
NewModuleName >
carpeta.
2. rename < NewModuleName > /ModuleFile.php como < NewModuleName > / <
NewModuleName > .php
(como se indica en la tabla a continuacin)
3. cambiar el nombre de /ModuleFileAjax.php < NewModuleName > como
< NewModuleName > / < NewModuleName > Ajax.php
4. rename < NewModuleName > /ModuleFile.js a < NewModuleName > / < NewModuleName
> .js
5. edit < NewModuleName > / < NewModuleName > .php
a) cambiar el nombre de clase ModuleClass a < NewModuleName >
b) actualizar $table_name y $table_index (mdulo nombre y tabla ndice columna de la tabla)
c) actualizacin $groupTable
d) actualizacin $tab_name, $tab_name_index
e) actualizacin $list_fields, $list_fields_name, $sortby_fields, $list_link_field
f) actualizacin $detailview_links
g) actualizacin $default_order_by, $default_sort_order
h) actualizacin $required_fields
i) actualizacin $customFieldTable
j) cambie el nombre de funcin ModuleClass a la funcin < NewModuleName > [esta es la clase
del Constructor]
Nota: Otros archivos bajo mdulos / < NewModuleName > no necesita ser cambiado.
Ejemplo de fichero ModuleDir propsito bajo nmina
index.php entrada mdulo punto a travs de men index.php
Archivo de definicin de la clase de mdulo ModuleFile.php. Payslip.php
Archivo de ModuleFileAjax.php Base para acciones ajax utilizado bajo control Listview etc....
PayslipAjax.php
Funcin de javascript especfico del mdulo de ModuleFile.js puede ser escrita aqu Payslip.js
Controlador de vista de detalle de informacin ms CallRelatedList.php CallRelatedList.php
Vista de CustomView.php personalizado o controlador de filtro CustomView.php
Controlador de registro borrado Delete.php mdulo Delete.php
Controlador de vista detalle DetailView.php DetailView.php
Vista de detalle DetailViewAjax.php ajax editar controlador DetailViewAjax.php
Controlador de vista EditView.php Edit EditView.php
Controlador de exportacin rcord de mdulo ExportRecords.php ExportRecords.php
Importacin de registros Import.php mdulo controlador Import.php
Controlador de vista lista ListView.php ListView.php
Controlador de seleccin popup.php emergente de este registro de mdulo Popup.php
Controlador de creacin rpida de QuickCreate.php QuickCreate.php
Registro Save.php mdulo salvar controlador Save.php
vtlib
Ejemplo de fichero ModuleDir propsito bajo nmina
Controlador de nube TagCloud.php Tag TagCloud.php
updateRelations.php lista relacionados con registro controlador (guardar/borrar)
updateRelations.php
Archivos especficos a la versin vtiger 5.1.0.
Ejemplo de fichero ModuleDir propsito bajo nmina
MassEdit.php controlador de masa Record Edit MassEdit.php
Controlador de masa editar registro Save MassEditSave.php MassEditSave.php
FindDuplicateRecords.php controlador de encontrar registros duplicados
FindDuplicateRecords.php
Controlador de proceso registros duplicados (fusin) ProcessDuplicates.php
ProcessDuplicates.php
ListViewPagging.php controlador de lista vista paginacin ListViewPagging.php
Controlador de bsqueda Global de UnifiedSearch.php UnifiedSearch.php
Archivos para ser actualizado para un mdulo de vtlib construccin en versin 5.1.0, para
hacerlo funcionar en 5.2.0 (de vtlib /
ModuleDir/5.2.0):
Ejemplo ModuleDir propsito del archivo de actualizacin en nmina
CallRelatedList.php relacionados con la lista ver cambios CallRelatedList.php
DetailViewAjax.php relacionados con la lista ver cambios DetailViewAjax.php
ListView.php orden por tema fijada y generador de consultas de apoyo ListView.php
Soporte de generador de consultas de ModuleFile.php Payslip.php
Preparacin del archivo de idioma
Actualizacin de la cartografa de traduccin en el fichero de idioma de mdulo
(mdulos / < NewModuleName > / language/en_us.lang.php)
Algunas de la asignacin obligatoria que debe ser proporcionada son como sigue:
$mod_strings = array ()
'NewModuleName' = > 'NewModuleName_Translation',
'SINGLE_NewModuleName' = > 'NewModuleNameForSingleRecord',
'LBL_CUSTOM_INFORMATION' = > 'Informacin personalizada',
Etiqueta usada para su campo mdulo
'FieldLabel' = > 'Campo etiqueta traduccin'
);
vtlib
Nuevo mdulo Tour
Vista de lista
Crear vista
vtlib
Vista de detalle
Vista de lista
vtlib
Compartir acceso
Campos personalizados
vtlib
Paso 9: empaquetado
Paquete exportacin
vtlib proporciona API para exportar mdulo como un archivo zip (paquete) que puede utiliza
para la importacin a travs de
Mdulo Manger.
require_once('vtlib/vtiger/package.php');
require_once('vtlib/vtiger/Module.php');
$package = new Vtiger_Package();
$package -> Exportar ('Instancia del mdulo del < >', '< destino DIR >', '< archivo zip ' nombre >,
< directa
DESCARGAR >);
< mdulo instancia > Vtiger_Module instancia a ser exportados (empaquetado)
< destino DIR > (opcional: Default = prueba/vtlib)
Directorio donde el archivo zip de salida debe ser creado.
< nombre de archivo zip > (opcional: Default = modulename-timestamp.zip)
Nombre de archivo zip para el archivo de salida.
< descarga directa > (opcional: Default = false)
Si es true, el archivo zip creado ser transmitido para su descarga y archivo zip ser
eliminado despus de eso.
Ejemplo:
require_once('vtlib/vtiger/package.php');
require_once('vtlib/vtiger/Module.php');
$package = new Vtiger_Package();
$package -> export)
Vtiger_Module::getInstance('Payslip'),
'prueba/vtlib',
' Nmina-Export.zip',
verdadero
);
Nota: Asegrese de prueba/vtlib directorio existe bajo el directorio raz vtigercrm y es
modificable.
vtlib
Estructura del paquete
El archivo zip exportado (paquete) tiene la siguiente estructura:
Manifest.xml
mdulos /
ModuleName/
<Module Related Files>
language/
en_us.lang.php
<Other language Files>
templates/
<Smarty templates of the Module>
manifest.xml has the meta information that will be useful during the import process as shown:
<?xml version=1.0 encoding=utf-8?>
<module>
<exporttime>YYYY-MM-DD hh:mm:ss</exporttime>
<name>MODULE NAME</name>
<version>1.0</version>
<label>MODULE LABEL</label>
<parent>MENU</parent>
<dependencies>
<vtiger_version>VTIGER_VERSION_NUMBER</vtiger_version>
<vtiger_max_version>VTIGER_MAX_VERSION_SUPPORTED</vtiger_max_version>
</dependencies>
<tables>
<table>
<name>TABLENAME</name>
<sql>TABLE SQL</sql>
</table>
</tables>
<blocks>
<block>
<label>BLOCK LABEL</label>
<fields>
<field>
<fieldname>payslipname</fieldname>
<columnname>payslipname</columnname>
<uitype>UI TYPE</uitype>
<tablename>TABLE NAME</tablename>
<generatedtype>GEN TYPE</generatedtype>
<fieldlabel>FIELD LABEL</fieldlabel>
<readonly>READONLY</readonly>
<presence>PRESENCE</presence>
<selected>SELECTED</selected>
<maximumlength>MAXLEN</maximumlength>
<typeofdata>TYPEOFDATA</typeofdata>
<quickcreate>QUICKCREATE</quickcreate>
<displaytype>DISPTYPE</displaytype>
<info_type>INFOTYPE</info_type>
<helpinfo><![CDATA[HELP INFORMATION]]></helpinfo>
<masseditable>MASSEDIT VALUE</masseditable>
</field>
</fields>
</block>
</blocks>
<customviews>
vtlib
<customview>
<viewname>VIEWNAME</viewname>
<setdefault>0</setdefault>
<setmetrics>1</setmetrics>
<fields>
<field>
<fieldname>FIELDNAME</fieldname>
<columnindex>0</columnindex>
</field>
</fields>
</customview>
</customviews>
<sharingaccess>
<default>private</default>
</sharingaccess>
<actions>
<action>
<name>Export</name>
<status>enabled</status>
</action>
<action>
<name>Import</name>
<status>enabled</status>
</action>
</actions>
<customlinks>
<customlink>
<linktype>DETAILVIEW</linktype>
<linklabel>Visit Site</linklabel>
<linkurl><![CDATA[http://www.vtiger.com]]></linkurl>
<linkicon><![CDATA[themes/images/vtiger-paw.jpg]]></linkicon>
<sequence>0</sequence>
</customlink>
<customlinks>
<events>
<event>
<eventname>EVENT_NAME</eventname>
<classname>EVENT_HANDLER_CLASS</classname>
<filename>EVENT_HANDLER_CLASS_FILE</filename>
< condicin ><![CDATA [modulename en ['MODULENAME']]] >< / condicin >
< / evento >
< / eventos >
< / mdulo >
vtlib
Paquete importacin
Puede importar un mdulo de archivo del paquete (zip) usando la siguiente API
require_once('vtlib/vtiger/package.php');
$package = new Vtiger_Package();
$package -> import (< archivo zip mdulo >, < sobrescribir >);
< mdulo archivo zip > mdulo de archivo zip (paquete).
< Sobrescribir > (opcional: Default = false)
Sobrescribir el actual directorio del mdulo si est presente
Nota: sobrescribir bandera se ignora actualmente. Ser ejecutado en el futuro.
Por favor, asegrese de comprobar directorio inexistente antes de importar.
El archivo del paquete debe validarse antes de importar cual puede hacerse usando la
siguiente API
require_once('vtlib/vtiger/package.php');
$package = new Vtiger_Package();
$package -> checkZip (< mdulo archivo zip >);
< mdulo archivo zip > mdulo de archivo zip (paquete).
checkZip devuelve true si es la estructura del paquete en archivo zip especificada en la seccin
paquete
Exportacin anterior.
Nombre del mdulo deteccin siendo importado
require_once('vtlib/vtiger/package.php');
$package = new Vtiger_Package();
$package -> getModuleNameFromZip (< mdulo archivo zip >);
< mdulo archivo zip > mdulo de archivo zip (paquete).
getModuleNameFromZip devuelve ModuleName si checkZip tiene xito.
Ejemplo:
require_once('vtlib/vtiger/package.php');
require_once('vtlib/vtiger/Module.php');
$package = new Vtiger_Package();
$module = $package -> getModuleNameFromZip('test/vtlib/Payslip.zip');
$module_exists = false;
$module_dir_exists = false;
if($Module == null) {}
echo "archivo zip mdulo no es vlido!";
} if ms ({Vtiger_Module::getInstance($module))}
echo "$module ya existe!";
$module_exists = true;
} {if(is_dir("modules/$module")) ms
echo "$module carpeta existe! Sobrescribir? ";
$module_dir_exists = true;
}
Si ($module_exists == false & & $module_dir_exists == false) {}
$package -> import('test/vtlib/Payslip.zip');
}
vtlib
Actualizacin de paquete
Nota: Actualmente esta funcin Actualizacin del mdulo no admite cancelacin y
modificacin de salir del mdulo
campos. Antes de utilizar esta funcin, por favor asegrese de tu mdulo modificado no
cambiar o borrar los existentes
campos.
Puede actualizar un mdulo que fue importado anteriormente utilizando la API siguiente:
require_once('vtlib/vtiger/package.php');
require_once('vtlib/vtiger/Module.php');
$package = new Vtiger_Package();
$package -> update (< ModuleInstance >, < archivo zip mdulo >, < sobrescribir >);
< ModuleInstance > Vtiger_Module instancia que necesita actualizarse.
< mdulo archivo zip > mdulo de archivo zip (paquete).
< Sobrescribir > (opcional: Default = true)
Sobrescribir el actual directorio del mdulo si est presente
Ejemplo:
require_once('vtlib/vtiger/package.php');
require_once('vtlib/vtiger/Module.php');
$package = new Vtiger_Package();
$moduleInstance = Vtiger_Module::getInstance('Payslip');
$package->update($moduleInstance, 'test/vtlib/Payslip.zip');
Limitations
1. Any property change to existing block or field will not applied during module upgrade.
NOTE: Look at Adding_Migration_Details section to know more about adding migration
information to the
package file through manifest.xml
vtlib
Extension Module
Module Manager lets you install an extension module provided the manifest.xml (in package)
has
the following information. This feature is available from vtiger CRM 5.1.0 onwards only.
manifest.xml
<?xml version="1.0" encoding=utf-8?>
<module>
<type>extension</type>
<name>MODULENAME</name>
<label>MODULE LABEL</label>
<parent>Tools</parent>
<version>1.0</version>
<dependencies>
<vtiger_version>5.1.0</vtiger_version>
</dependencies>
<tables>
<table>
<name>TABLE-NAME</name>
<sql><![CDATA[CREATE_TABLE_SQL]]></sql>
</table>
</tables>
<events>
<event>
<eventname>EVENT_NAME</eventname>
<classname>EVENT_HANDLER_CLASS</classname>
<filename>EVENT_HANDLER_CLASS_FILE</filename>
<condition><![CDATA[modulename in ['MODULENAME']]]></condition>
</event>
</events>
</module>
type Mandatory Should have the value extension
name Mandatory Module name (should not contain spaces or special characters)
etiqueta etiqueta obligatoria utilizado para mostrar en la interfaz de usuario
Men opcional para que este mdulo tiene que fijarse los padres
dependencias
(vtiger_version)
Versin obligatoria para que el paquete est diseado para
Mesas Mesas opcional que necesita ser creada durante la instalacin del mdulo
eventos opcional que necesita ser registrado durante la instalacin del mdulo
Archivo de paquete
Se recomienda la siguiente estructura de archivo para paquete de mdulo de extensin
(archivo zip).
Manifest.xml
mdulos /
MODULENAME /
idioma /
en_US.lang.php
index.php
< otros ficheros del mdulo >
plantillas /
< plantillas smarty >
vtlib
Paquetes
Module Manager le permite instalar paquetes siempre el manifest.xml (en paquete) tiene los
siguientes
informacin. Esta caracterstica est disponible desde vtiger CRM 5.2.0 en adelante solamente.
Manifest.xml
<? xml version = "1,0" encoding = "utf-8"? >
mdulo de < >
< nombre > MODULENAME < / nombre >
< versin > 1.0 < / versin >
< dependencias >
5.1.0 < vtiger_version > < / vtiger_version >
5.* < vtiger_max_version > < / vtiger_max_version >
< / dependencias >
true < modulebundle > < / modulebundle >
< modulelist >
< dependent_module >
< nombre > BUNDLE_PART_1 < / nombre >
1 < install_sequence > < / install_sequence >
< filepath > MODULE_FILE_1.zip < / ruta >
< / dependent_module >
< dependent_module >
< nombre > BUNDLE_PART_2 < / nombre >
2 < install_sequence > < / install_sequence >
< filepath > MODULE_FILE_2.zip < / ruta >
< / dependent_module >
< / modulelist >
< / mdulo >
modulebundle obligatorio debe tener el valor true
nombre del mdulo obligatorio (que no contienen espacios ni caracteres especiales)
dependencias
(vtiger_version)
Versin obligatoria para que el paquete est diseado para
modulelist lista opcional de los mdulos que forman parte del paquete con su nombre,
secuencia de instalacin y el nombre del archivo
Archivo de paquete
Se recomienda la siguiente estructura de archivo para el paquete de paquetes (archivo zip).
Manifest.xml
MODULENAME_1.zip
MODULENAME_2.zip
...
vtlib
Paquete de idioma
Module Manager le permite instalar paquetes de idioma para la instalacin de vtiger CRM. La
lengua
paquete debe seguir la estructura del paquete, como se explica a continuacin:
Manifest.xml
<? xml version = "1,0" encoding = "utf-8"? >
mdulo de < >
idioma < tipo > < / tipo >
< nombre > Ingls < / nombre >
etiqueta < > Ingls < / label >
en_us < prefijo > < / prefijo >
< versin > 1.0 < / versin >
< dependencias >
5.1.0 < vtiger_version > < / vtiger_version >
< / dependencias >
< / mdulo >
tipo obligatoria debe tener el lenguaje del valor
nombre opcional Language pack completo
etiqueta etiqueta obligatoria para identificar el idioma de la interfaz de usuario (en la pgina
de inicio de sesin)
Prefijo obligatorio utiliza el prefijo de nombre de archivo para el archivo de idioma.
Se extraer solamente estos archivos desde el archivo del paquete durante
instalacin.
dependencias
(vtiger_version)
Mandatory Version for which the package is intended for.
Package File
The following file structure is recommended for extension language package (zip file).
manifest.xml
modules/
Accounts/
language/
<prefix>.lang.php
Contacts/
language/
<prefix>.lang.php
Leads/
language/
<prefix>.lang.php
...
vtlib
Adding License
The manifest.xml of the package can contain license information which will be displayed to
user
during Module Manager installation process. You will need to add <license> node in the
manifest.xml as described below:
Inline License:
<module>
<name>MODULENAME</name>
<label>MODULE_LABEL</label>
<version>1.0</version>
<dependencies>
<vtiger_version>5.0.4</vtiger_version>
</dependencies>
<license>
<inline><![CDATA[This is under vtiger Public License ]]></inline>
</license>
...
</module>
License from File:
You can specific the LICENSEFILE in the package that contains the License information.
<module>
<name>MODULENAME</name>
<label>MODULE_LABEL</label>
<version>1.0</version>
<dependencies>
<vtiger_version>5.0.4</vtiger_version>
</dependencies>
<license>
<file>LICENSEFILE</file>
</license>
...
</module>
vtlib
Adding Migration Details
Module Manager supports upgrade of modules built with vtlib. In some cases, custom schema
changes and data migration will be required for these module upgrades.
When a new version of a module is released it might have schema changes w.r.t older version.
The upgrade process might not be complete unless required schema changes and data
migration
are applied. In such cases, you can add the migration information in your manifest.xml as
described below:
<?xml version="1.0" encoding=utf-8?>
<module>
<name>MODULENAME</name>
<label>MODULE LABEL</label>
<parent>Tools</parent>
<version>1.2</version>
<dependencies>
<vtiger_version>5.0.4</vtiger_version>
</dependencies>
<migrations>
<migration version='1.0'>
<tables>
<table>
<name>TABLE-NAME</name>
<sql><![CDATA[ALTER TABLE MyTable ADD COLUMN
NewColumn INT]]></sql>
</table>
</tables>
</migration>
<migration version='1.1'>
<tables>
<table>
<name>TABLE-NAME</name>
<sql><![CDATA[UPDATE MyTable SET NewColumn=1 WHERE
NewColumn is NULL]]></sql>
</table>
</tables>
</migration>
</migrations>
<tables>
<table>
<name>TABLE-NAME</name>
<sql><![CDATA[CREATE_TABLE_SQL]]></sql>
</table>
</tables>
...
</module>
NOTE: The above snippet of manifest.xml is for version 1.2 of a module. It contains migration
information
para la versin 1.0 y 1.1
vtlib
Detalles del nodo migracin
< versin migracin = '1.0'... Esta versin indica que la versin de la fuente (antes
versin) para que la migracin debe ser aplicada.
Mesas de < >
< table >
< nombre >.
< sql >...
Nombre de la tabla para migrar.
SQL a utilizar para la migracin.
vtlib
Module Manager
Una vez instalado vtlib, proporciona al Module Manager herramienta de configuracin de
configuracin. Con esto
puede habilitar, deshabilitar o controlar la configuracin de los mdulos de vtiger CRM. En la
desactivacin de un mdulo, no
aparecer en el men y el acceso est restringido (incluido el administrador).
Los mdulos estn categorizados como estndar (que se suministran como una parte
fundamental de vtiger CRM), y
Costumbre (que ha importado o creado)
vtlib
Desactivacin de mdulo
Puede deshabilitar mdulo haciendo clic en el icono de interrogacin tick verde.
Mdulo que permite
Puede habilitar el mdulo haciendo clic en el icono de interrogacin rojo tick.
vtlib
Mdulo de exportacin
Haga clic en el icono de flecha para arriba en el administrador del mdulo, que exportar el
mdulo en un archivo zip.
vtlib
Mdulo de importacin
Gerente de mdulo le permitir importar nuevos mdulos. Siga los pasos indicados a
continuacin:
Haga clic en el botn importar nuevo
Seleccione el archivo zip (paquete) de mdulo que previamente fue exportado o creado.
vtlib
Verificar los detalles de importacin analizan desde el archivo zip. Haga clic en s para
continuar o No para cancelar.
Haga clic en finalizar para completar la importacin del mdulo.
vtlib
Nota: Si usted est intentando importar un mdulo que ya existe un directorio que est
presente en el
mdulos de la carpeta se ver el siguiente mensaje.
vtlib
Ajustes especficos del mdulo
Un mdulo puede tener su propia configuracin especfica. En tales casos, debe crearse
Settings.php bajo
la carpeta del mdulo. Este archivo ser invocado (si encuentran) cuando se hace clic en el
icono de configuracin.
Ejemplo: Muestra Settings.php para el mdulo de nmina
<? php
$thisModule = $_REQUEST ['formodule'];
require_once('Smarty_setup.php');
$smarty = new vtigerCRM_Smarty();
Utilice el archivo de plantilla especfica de mdulo
modules/Payslip/MySettings.tpl
$smarty -> display (vtlib_getModuleTemplate ('Nmina', 'MySettings.tpl'));
?>
vtlib
Actualizacin del mdulo
Ahora es posible a travs de Module Manager actualizar el mdulo a la prxima versin.
Nota: Actualmente esta funcin Actualizacin del mdulo no admite cancelacin y
modificacin de salir del mdulo
campos. Antes de utilizar esta funcin, por favor asegrese de tu mdulo modificado no
cambiar o borrar los existentes
campos.
Haga clic en el icono de actualizacin:
Seleccione el nuevo archivo de paquete para el mdulo:
vtlib
Verificar los detalles del paquete antes de actualizar:
Finalmente se actualizarn su mdulo:
vtlib
Apndice 1 - cambios en la API
vtlib 2.0 contiene cambios en las API anteriores en versin 1.x. Las nuevas API son ms
modular y se adhieren al modelo OOD.
Explicamos los cambios ms abajo.
Creacin de mdulo
Usando vtlib 1.x
Vtiger_Tab::Create ('Nmina', 'Nmina', 'Herramientas');
Vtiger_Utils::CreateTable ('vtiger_payslip', '(payslipid entero)');
Vtiger_Utils::CreateTable ('vtiger_payslipcf', ' (payslipid entero, clave principal
(payslipid))');
Vtiger_Utils::CreateTable ('vtiger_payslipgrouprel',
' (payslipid entero, groupname VARCHAR, key(payslipid))') primario;
Usando vtlib 2.x
$moduleInstance = new Vtiger_Module();
$moduleInstance -> nombre = 'Nmina';
$moduleInstance -> save();
$moduleInstance -> initTables();
$menuInstance = Vtiger_Menu::getInstance('Tools');
$menuInstance -> addModule($moduleInstance);
Crear bloque
Usando vtlib 1.x
Vtiger_Block::Create ('Nmina', 'LBL_PAYSLIP_INFORMATION');
Usando vtlib 2.x
$blockInstance = new Vtiger_Block();
$blockInstance -> etiqueta = 'LBL_PAYSLIP_INFORMATION';
$moduleInstance -> addBlock($blockInstance);
vtlib
Creacin de campo
Usando vtlib 1.x
$fieldInstance = new Vtiger_Field();
$fieldInstance -> set ('module', 'Nmina')
-> set ('columnname', 'payslipname')
-> set ('nombre_de_tabla', 'vtiger_payslip')
-> set ('columntype', ' varchar(255)')
-> set ('generatedtype', '1')
-> set ('uitype', 2)
-> set ('fieldname', 'payslipname')
-> set ('fieldlabel', 'PayslipName')
-> set ('readonly', '1')
-> set ('presencia', '0')
-> set ('seleccionado', ' 0')
-> set ('maximumlength', '100')
-> set ('secuencia', null)
-> set ('typeofdata', ' V ~ M')
-> set ('quickcreate', '1')
-> set ('bloque', null)
-> set ('blocklabel', 'LBL_PAYSLIP_INFORMATION')
-> set ('displaytype', '1')
-> set ('quickcreatesequence', null)
-> set ('info_type', 'BAS');
$fieldInstance -> create();
Usando vtlib 2.x
$fieldInstance = new Vtiger_Field();
$fieldInstance -> name = 'PayslipName';
$fieldInstance -> tabla = 'vtiger_payslip';
$fieldInstance -> columna = 'payslipname';
$fieldInstance -> columntype = 'Varchar';
$fieldInstance -> uitype = 2;
$fieldInstance -> typeofdata = ' V ~ M';
$blockInstance -> addField($fieldInstance);
Identificador de entidad ajuste
Usando vtlib 1.x
$fieldInstance -> set ('entityidfield', 'payslipid')
-> set ('entityidcolumn', 'payslipid');
$fieldInstance -> setEntityIdentifier();
Usando vtlib 2.x
$moduleInstance -> setEntityIdentifier($fieldInstance);
Lista desplegable establecer valores
Usando vtlib 1.x
$fieldInstance -> setupPicklistValues (Array ('Empleado', 'Aprendiz'));
Usando vtlib 2.x
$fieldInstance -> setPicklistValues (Array ('Empleado', 'Aprendiz'));
vtlib
Creacin de filtro
Usando vtlib 1.x
Vtiger_CustomView::Create ('Nmina', 'Todos', true);
$cv = new Vtiger_CustomView ('Nmina', 'All');
$cv -> addColumn($fieldInstance1)
-> addColumn ($fieldInstance2, 1);
Usando vtlib 2.x
$filterInstance = new Vtiger_Filter();
$filterInstance -> nombre = 'Todos';
$filterInstance -> isdefault = true;
$moduleInstance -> addFilter($filterInstance);
$filterInstance -> addField($fieldInstance1) -> addField ($fieldInstance2, 1);
Configurar herramientas
Usando vtlib 1.x
Vtiger_Module::disableAction('Payslip','Import');
Vtiger_Module::enableAction ('nmina', 'Exportar');
Usando vtlib 2.x
$moduleInstance -> enableTools (Array ('Import', 'Unir'));
$moduleInstance -> disableTools('Export');
Configurar compartir acceso
Usando vtlib 1.x
Vtiger_Module::setDefaultSharingAccess ('Nmina', 'Privado');
Usando vtlib 2.x
$moduleInstance -> setDefaultSharing('Private');
vtlib
Apndice 2 cambios de esquema
Algunas de la API vtlib hacen los cambios de esquema (o agregar una tabla nueva o una nueva
columna a
tabla existente) son capturados los detalles en esta seccin
Mesa columna accin Descripcin
vtiger_field helpinfo texto columna
Adicin
Esta columna va a almacenar el texto de ayuda asociado
con vtiger_field
vtiger_language mesa adems captura Idiomas instalados para vtiger CRM
vtiger_links mesa adems capta detalles de enlaces mdulo personalizado
versin vtiger_tab
NOMBRE
Columna
Adicin
Versin del mdulo en el uso de la pista. til durante
migracin o actualizacin del mdulo.
vtiger_tab_info tabla de adicin captura algunas de las preferencias del mdulo como
mnimo versin apoyada, mximo
soportados, etc.
vtiger_crmentityrel mesa adems capta a la relacin entre los registros del mdulo.
Para el manejo de la lista genrica relacionados.
vtiger_fieldmodulerel tabla adicin capturas relacionadas con informacin de mdulo para el
campo de uitype 10
vtiger_mailer_queue mesa adiciones estas tablas se agregarn cuando Vtiger_Mailer
clase usar para enviar mails
vtiger_mailer_queueinfo asincrnicamente.
vtlib
Apndice 3 usando vtiger_imageurl API
Hay imgenes reutilizables bajo la carpeta themes/images e imgenes especficas tema estar
bajo
temas / < THEMENAME > / carpeta de imgenes.
Usted puede dejar la imagen fcilmente configurable para cada tema, por favor asegrese de
seguir los pasos
abajo:
En YourSmartyFile.tpl (archivo de plantilla Smarty)
< img src="{'myimage.gif'|@vtiger_imageurl:$THEME}" >
$THEME variable ser enviada por el script llamada como sigue:
global $theme;
$smarty -> asignar ('Tema', $theme);
$smarty -> display('YourSmartyFile.tpl');
Esto se traduce en:
< img src = "temas / < THEMENAME > / images/myimage.gif" > si MiImagen.gif existe bajo
carpeta < THEMENAME >
< img src="themes/images/myimage.gif" > ruta de acceso predeterminada si no se encuentra
la imagen especfica del tema
Si directamente construir la interfaz de usuario de script PHP, asegrate de utilizar la API de la
siguiente manera:
vtiger_imageurl ('nombre ' de esta imagen, 'themename');
Nota: API vtiger_imageurl se define en include/utils/VtlibUtils.php
vtlib
Apndice 4 vtlib_handler mtodo
Mdulo clase debe definir vtlib_handler mtodo para controlar eventos especiales
desencadenados tal como se describe
abajo:
Descripcin del tipo de evento
Module.postinstall una vez completada la importacin del mdulo.
Module.preupdate antes de actualizar el mdulo (paquete).
Module.postupdate despus de que se actualiza el mdulo (paquete).
Module.disabled cuando el mdulo est deshabilitado.
Module.Enabled cuando se activa el mdulo.
Module.preUninstall antes de que se elimina la instancia del mdulo.
Ejemplo:
vtlib_handler funcin debe definirse como mtodo mdulo de clase.
/**
* Se invoca cuando se realizan acciones especiales en el mdulo.
nombre del mdulo string * @param
Tipo de evento de cadena * @param
*/
la funcin vtlib_handler ($modulename, $event_type) {}
Si ($event_type == 'module.postinstall') {}
Manejar TODO el post acciones de instalacin
} ms if ($event_type == 'module.disabled') {}
TODO manejar las acciones cuando este mdulo est deshabilitado.
} ms if ($event_type == 'module.enabled') {}
TODO manejar las acciones cuando se habilita este mdulo.
} ms if ($event_type == 'module.preuninstall') {}
TODO manejar acciones cuando este mdulo est a punto de ser eliminado.
} ms if ($event_type == 'module.preupdate') {}
Acciones de manejar TODO antes de este mdulo se actualiza.
} ms if ($event_type == 'module.postupdate') {}
TODO manejar las acciones despus de que este mdulo se actualiza.
}
}
UseCase
Cuando se deshabilita un mdulo, a travs de vtlib_handler ahora puede cancelar el registro
de cualquier notificacin de eventos si no es
permitido otra vez.
vtlib
Apndice 5 vtlib_listview javascript API
vtlib_listview javascript API proporciona la capacidad para registrar la funcin de detector para
algunos predefinidos
tipos de eventos.
vtlib_listview.Register (< EVENT_TYPE >, < HANDLER_FUNCTION >,
[< HANDLER_FUNCTION_OPTIONAL_PARAMETERS >]);
Cell.onmouseover cuando se mueve el ratn sobre la celda del control listview.
Cell.onmouseout cuando el ratn se mueve fuera de la clula de listview.
La funcin de controlador ser invocada con dos conjunto de argumentos:
Evento parmetros {}
evento: < EVENT_TYPE >
DomNode: nodo DOM HTML utilizado para detectar el evento
mdulo: nombre del mdulo al cual campo pertenece
FieldName: nombre del campo
recordID: ID de registro se muestran en el listview
}
Los parmetros opcionales es aquel que se ha pasado a la vtlib_listview.register API
Ejemplo: Usted puede tener los siguientes en el archivo javascript
vtlib_listview.Register ('cell.onmouseover', {function(evtparams)}
evtparams.domnode.style.backgroundColor = '#FFFD7C';
});
vtlib_listview.Register ('cell.onmouseout', {function(evtparams)}
evtparams.domnode.style.backgroundColor = 'blanco';
});
NOTA:
Para hacer el gatillo en todos los mdulos, usted necesitar configurar el javascript como
HEADERSCRIPT
(consulte la costumbre enlaces #Special LinkType)
vtlib
Preguntas frecuentes preguntas frecuentes
1. cmo escribir plantillas propias?
Referencia: http://forums.vtiger.com/viewtopic.php?p=75410#75410
Ahora quiero que mis propias plantillas. La documentacin de VTLib afirma que hago
esto:
Sus archivos de plantilla de mdulo especficos Smarty deben ser creados bajo
Smarty/plantillas/modules/< NewModuleName >.
Usar la API vtlib_getModuleTemplate ($module, $templateName)
(include/utils/VtlibUtils.php) como:
$smarty -> display (vtlib_getModuleTemplate ($currentModule, 'MyListview.tpl'));
Mi pregunta es dnde puedo colocar este fragmento de cdigo? En el creador del mdulo?
Solucin:
Supongamos que desea crear su propio Listview para el mdulo TestModule, lo que usted
necesita
hacer es la siguiente:
1. crear el MyListview.tpl bajo Smarty/templates/modules/TestModule/MyListView.tpl
2. en su modules/TestModule/Listview.php usted necesitar llamar la pantalla smarty como:
$smarty -> display (vtlib_getModuleTemplate ($currentModule, 'MyListview.tpl'));
Por favor, consulte: http://www.smarty.net/manual/en/ para aprender ms sobre el uso de
Smarty.
2. cmo se utiliza la plantilla de mdulo?
Siguiente ejemplo explica cmo se procesa el mdulo listview accin utilizando el sabelotodo.
vtlib
3. no se ve Module Manager!
He instalado vtlib en vitger 5.0.4 que no puedo parece a ver al gerente del mdulo
bajo configuracin de cualquiera, hay un archivo o dir que necesito mover algunos donde
orden para el administrador de mdulo rellenar?
Solucin:
Permiten acceso de escritura a los mdulos, Smarty, cron /,de prueba / directorio antes de
descomprimir
vtlib-x.y.zip
Borrar archivos de la carpeta Smarty/templates_c (con extensin *. tpl.php) y actualizar
la pgina de configuracin, deberas ver Module Manager.
4. Consejos para el uso de nombres de campo
1. preferiblemente utilizar pequeos personajes casos para campo (nombre y columnname).
2. Evite cualquier caracteres especiales como (_, :,-) en los nombres. Se puede utilizar para las
etiquetas
3. teniendo el mismo valor de campo (nombre y columnname) hace ms fcil evitar
para comenzar con la confusin.
vtlib

You might also like