vtlib espanol traduccion.docx

89
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 módulos desarrollados usando vtlib será compatibles con las versiones futuras de vtiger CRM, algunos cambios incompatibles pueden ser necesarios para la próxima versión de vtiger. En cuyo caso tendrás que recrear los módulos con una versión mejorada del vtlib para la versión específica 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

Upload: nazithmoreno8721

Post on 18-Jan-2016

117 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: vtlib espanol traduccion.docx

vtlib – biblioteca de desarrollo vtigerDESCARGO DE RESPONSABILIDAD:El desarrollo de la biblioteca de vtlib está en progreso y sujetos a cambio. Mientras nos esforzamos para hacerSeguro módulos desarrollados usando vtlib será compatibles con las versiones futuras de vtiger CRM, algunoscambios incompatibles pueden ser necesarios para la próxima versión de vtiger. En cuyo caso tendrás que recrearlos módulos con una versión mejorada del vtlib para la versión específica de vtiger CRM.vtlibTabla de contenidosAPI Version History.............................................................................................................4About vtlib.........................................................................................................................5vtlib API - Quick Reference..................................................................................................6Module Types.....................................................................................................................7Entity Module.................................................................................................................7Extension Module ...........................................................................................................7Language Pack...............................................................................................................7Bundles.........................................................................................................................7Creating a new Entity Module...............................................................................................8Backend ........................................................................................................................8FrontEnd........................................................................................................................8Packaging .....................................................................................................................8About Payslip Module.......................................................................................................8Step 1: Creating Module......................................................................................................9Paso 2: Crear bloque (en forma de interfaz de usuario).10Step 3: Adding Fields.........................................................................................................11Entity Identifier.............................................................................................................12Set Picklist Values.........................................................................................................12Set Related Module........................................................................................................12Set Help Information.....................................................................................................13Set MassEdit property....................................................................................................15Step 4: Creating Filters......................................................................................................16Configure fields.............................................................................................................16Setup Rules..................................................................................................................16Step 5: Related Lists.........................................................................................................17Step 6: Sharing Access Rules.............................................................................................19Step 7: Module Tools.........................................................................................................20Optional Step: Module Events.............................................................................................21Paso opcional: Módulo Webservices...22Paso opcional: Módulo plantillas...23Optional Step: Custom Links..............................................................................................24Special LinkType...........................................................................................................25Guión terminado final (Backend)...26Ejecutar el Script de creación de módulo...29Paso 8: Crear ficheros del módulo (Frontend).30Language File Preparation..............................................................................................31New Module Tour...............................................................................................................32List view......................................................................................................................32Create view..................................................................................................................32vtlibDetail view...................................................................................................................33

Page 2: vtlib espanol traduccion.docx

List view......................................................................................................................33Sharing Access.............................................................................................................34Custom Fields...............................................................................................................34Step 9: Packaging.............................................................................................................35Package Export.............................................................................................................35Package Structure.....................................................................................................36Package Import.............................................................................................................38Package Upgrade..........................................................................................................39Limitations...............................................................................................................39Extension Module .........................................................................................................40Bundles........................................................................................................................41Language Pack..............................................................................................................42Adding License..............................................................................................................43Adding Migration Details.................................................................................................44Module Manager................................................................................................................46Disabling Module...........................................................................................................47Enabling Module............................................................................................................47Exporting Module..........................................................................................................48Importing Module..........................................................................................................49Module Specific Settings.................................................................................................52Module Upgrade............................................................................................................53Appendix 1 - API Changes..................................................................................................55Creating Module............................................................................................................55Creating Block..............................................................................................................55Creating Field...............................................................................................................56Setting Entity Identifier..................................................................................................56Set Picklist Values.........................................................................................................56Creating Filter...............................................................................................................57Configure Tools.............................................................................................................57Configure Sharing Access...............................................................................................57Appendix 2 – Schema Changes...........................................................................................58Apéndice 3 – usando vtiger_imageurl API...59Apéndice 4 – vtlib_handler método...60Apéndice 5 – vtlib_listview javascript API...61FAQ – Preguntas más frecuentes.621. How to write own templates?......................................................................................622. ¿cómo se utiliza la plantilla de módulo?...623. Cannot See Module Manager!......................................................................................634. Tips for using field names...........................................................................................63vtlib

Page 3: vtlib espanol traduccion.docx

Historia versión APIVersión versión fecha Highlights2.2 integrado a 5.1.0 * añadido desencadenadores de eventos especiales módulo (invocación de método vtlib_handler)2.1 2009.01.07 * instalar paquete de idioma, módulo de extensión utilizando Module Manager* ModuleDir fue reorganizado para ser específico a una versión vtiger* Module Manager se encarga de acuerdo de licencia antes de la instalación.* Básico soporte agregado para upgrades de módulo con el módulo de administrador.* Posibilidad de añadir enlaces a las webs personalizadas para un módulo.* Soporte agregado para permitir la información de ayuda para los campos del módulo.* Agregado vtiger_imageurl API2.0 2008-11-26 * API proporcionada a relacionados con módulos (lista relacionado)* Cambios API para crear campos, bloques, módulo* Tipo UI 10 fue agregado para el campo emergente genérico1.4 2008-09-29 * de la exportación y la importación fue agregado al módulo de administrador1.3 2008-09-01 * module Manager fue agregado para que los administradores de instalar yactivar/desactivar los módulos nuevos desarrollados usando vtlib.* API para los valores de lista desplegable Configuración1.2 2008-08-29 * compartir acceso API fue agregado1.1 2008-08-27 * API es habilitar y deshabilitar herramientas como exportación, importación fueron agregados1.0 19 / 08 / 2008 * API básica ha sido añadido a creado campos, bloques, módulovtlibAcerca de vtlibvtlib es una biblioteca para facilitar el desarrollo de un módulo nuevo para vtiger CRM. vtlib incluye las API para crear omodificar los elementos de back-end para un módulo. Estas API ayudar a hacer los cambios necesarios para elbase de datos.vtlib incluye Module Manager que permite nuevos módulos ser empaquetados en archivos zip que otrosinstalaciones de vtiger CRM pueden fácilmente instalar y utilizar.vtlibvtlib API - referencia rápidavtlib incluye las siguientes API que pueden utilizarse para crear nuevos módulos. Para más detalles por favorMira la documentación de la API.➢Vtiger_Module➢nombre➢addBlock()➢addFilter()➢initTables()➢setRelatedList()➢setDefaultSharing()➢enableTools()➢disableTools()➢Save()➢addLink()➢Vtiger_Menu➢addModule()➢Vtiger_Block➢etiqueta

Page 4: vtlib espanol traduccion.docx

➢addField()➢Vtiger_Field➢mesa➢columna➢ColumnType➢uitype➢typeofdata➢setHelpInfo()➢setEntityIdentifier()➢setPicklistValues()➢setRelatedModules()➢Vtiger_Filter➢nombre➢IsDefault➢addField()➢addRule()➢Vtiger_Event➢Register()vtlib

Tipos de módulosmódulos de vtiger CRM pueden clasificarse en los siguientes tipos:1. entidad módulo

Page 5: vtlib espanol traduccion.docx

2. módulo de extensión3. paquete de idioma4. paquetes de

vtlib – biblioteca de desarrollo vtigerDESCARGO DE RESPONSABILIDAD:El desarrollo de la biblioteca de vtlib está en progreso y sujetos a cambio. Mientras nos esforzamos para hacerSeguro módulos desarrollados usando vtlib será compatibles con las versiones futuras de vtiger CRM, algunoscambios incompatibles pueden ser necesarios para la próxima versión de vtiger. En cuyo caso tendrás que recrearlos módulos con una versión mejorada del vtlib para la versión específica de vtiger CRM.vtlibTabla de contenidosAPI Version History.............................................................................................................4About vtlib.........................................................................................................................5vtlib API - Quick Reference..................................................................................................6Module Types.....................................................................................................................7Entity Module.................................................................................................................7Extension Module ...........................................................................................................7Language Pack...............................................................................................................7Bundles.........................................................................................................................7Creating a new Entity Module...............................................................................................8Backend ........................................................................................................................8FrontEnd........................................................................................................................8Packaging .....................................................................................................................8About Payslip Module.......................................................................................................8Step 1: Creating Module......................................................................................................9Paso 2: Crear bloque (en forma de interfaz de usuario).10Step 3: Adding Fields.........................................................................................................11Entity Identifier.............................................................................................................12Set Picklist Values.........................................................................................................12Set Related Module........................................................................................................12Set Help Information.....................................................................................................13Set MassEdit property....................................................................................................15Step 4: Creating Filters......................................................................................................16Configure fields.............................................................................................................16Setup Rules..................................................................................................................16Step 5: Related Lists.........................................................................................................17Step 6: Sharing Access Rules.............................................................................................19Step 7: Module Tools.........................................................................................................20Optional Step: Module Events.............................................................................................21Paso opcional: Módulo Webservices...22Paso opcional: Módulo plantillas...23Optional Step: Custom Links..............................................................................................24Special LinkType...........................................................................................................25Guión terminado final (Backend)...26Ejecutar el Script de creación de módulo...29Paso 8: Crear ficheros del módulo (Frontend).30Language File Preparation..............................................................................................31New Module Tour...............................................................................................................32

Page 6: vtlib espanol traduccion.docx

List view......................................................................................................................32Create view..................................................................................................................32vtlibDetail view...................................................................................................................33List view......................................................................................................................33Sharing Access.............................................................................................................34Custom Fields...............................................................................................................34Step 9: Packaging.............................................................................................................35Package Export.............................................................................................................35Package Structure.....................................................................................................36Package Import.............................................................................................................38Package Upgrade..........................................................................................................39Limitations...............................................................................................................39Extension Module .........................................................................................................40Bundles........................................................................................................................41Language Pack..............................................................................................................42Adding License..............................................................................................................43Adding Migration Details.................................................................................................44Module Manager................................................................................................................46Disabling Module...........................................................................................................47Enabling Module............................................................................................................47Exporting Module..........................................................................................................48Importing Module..........................................................................................................49Module Specific Settings.................................................................................................52Module Upgrade............................................................................................................53Appendix 1 - API Changes..................................................................................................55Creating Module............................................................................................................55Creating Block..............................................................................................................55Creating Field...............................................................................................................56Setting Entity Identifier..................................................................................................56Set Picklist Values.........................................................................................................56Creating Filter...............................................................................................................57Configure Tools.............................................................................................................57Configure Sharing Access...............................................................................................57Appendix 2 – Schema Changes...........................................................................................58Apéndice 3 – usando vtiger_imageurl API...59Apéndice 4 – vtlib_handler método...60Apéndice 5 – vtlib_listview javascript API...61FAQ – Preguntas más frecuentes.621. How to write own templates?......................................................................................622. ¿cómo se utiliza la plantilla de módulo?...623. Cannot See Module Manager!......................................................................................634. Tips for using field names...........................................................................................63vtlibHistoria versión APIVersión versión fecha Highlights2.2 integrado a 5.1.0 * añadido desencadenadores de eventos especiales módulo (invocación de método vtlib_handler)2.1 2009.01.07 * instalar paquete de idioma, módulo de extensión utilizando Module Manager* ModuleDir fue reorganizado para ser específico a una versión vtiger* Module Manager se encarga de acuerdo de licencia antes de la instalación.* Básico soporte agregado para upgrades de módulo con el módulo de administrador.

Page 7: vtlib espanol traduccion.docx

* Posibilidad de añadir enlaces a las webs personalizadas para un módulo.* Soporte agregado para permitir la información de ayuda para los campos del módulo.* Agregado vtiger_imageurl API2.0 2008-11-26 * API proporcionada a relacionados con módulos (lista relacionado)* Cambios API para crear campos, bloques, módulo* Tipo UI 10 fue agregado para el campo emergente genérico1.4 2008-09-29 * de la exportación y la importación fue agregado al módulo de administrador1.3 2008-09-01 * module Manager fue agregado para que los administradores de instalar yactivar/desactivar los módulos nuevos desarrollados usando vtlib.* API para los valores de lista desplegable Configuración1.2 2008-08-29 * compartir acceso API fue agregado1.1 2008-08-27 * API es habilitar y deshabilitar herramientas como exportación, importación fueron agregados1.0 19 / 08 / 2008 * API básica ha sido añadido a creado campos, bloques, módulovtlibAcerca de vtlibvtlib es una biblioteca para facilitar el desarrollo de un módulo nuevo para vtiger CRM. vtlib incluye las API para crear omodificar los elementos de back-end para un módulo. Estas API ayudar a hacer los cambios necesarios para elbase de datos.vtlib incluye Module Manager que permite nuevos módulos ser empaquetados en archivos zip que otrosinstalaciones de vtiger CRM pueden fácilmente instalar y utilizar.vtlibvtlib API - referencia rápidavtlib incluye las siguientes API que pueden utilizarse para crear nuevos módulos. Para más detalles por favorMira la documentación 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()

Page 8: vtlib espanol traduccion.docx

➢setEntityIdentifier()➢setPicklistValues()➢setRelatedModules()➢Vtiger_Filter➢nombre➢IsDefault➢addField()➢addRule()➢Vtiger_Event➢Register()

Tipos de módulosMódulos de vtiger CRM pueden clasificarse en los siguientes tipos:1. Módulo Entidad2. Módulo de extensión3. Paquete de idioma4. Empaquetamiento (Bundle)

Page 9: vtlib espanol traduccion.docx

Módulo de entidad

En esta categoría los módulos creados son registros de la entidad en vtiger CRM. El módulo proporciona: crear, ver, editar vista, detalle de la vista y lista de la vista. Usted será capaz de crear filtros etc..

Módulos de entidad se recomiendan para los casos donde un nuevo tipo de objeto de datos, por ejemplo hojas de tiempo, debe añadirse al sistema como parte del nuevo módulo. Estos nuevos objetos de datos pueden ser han consultado y manejado por los administradores y usuarios.

Pre Contactos , contactos, cuentas, nóminas etc.... son módulos de entidad.

Módulo de extensión

Módulos en esta categoría no necesitan seguir el comportamiento general del módulo de la entidad. Los registros creado por el modulo de entidad podría utilizarse para proporcionar una funcionalidad extendida o los registros creación/edición puede ser manejado independientemente.Módulos de extensión pueden usarse cuando se necesita funcionalidad adicional, sin necesidad de nuevo clases de objetos de datos que los usuarios ver y administración.Tablero de instrumentos (DashBoard), informes, Portal etc.... son módulos de extensión.

Paquete de idiomaPaquetes de idioma para vtiger CRM son tratados también como otro tipo de módulo de vtlib.

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

Creación de un nuevo módulo de entidadvtlib simplifica la creación de nuevos módulos de vtiger CRM. Los desarrolladores pueden utilizar vtlib para desarrollar vtiger. Módulos CRM que añaden nuevas funciones a vtiger CRM. Estos módulos se pueden empaquetar entonces para poder permitir una fácil instalación en el módulo de administrador.

Nota: En este documento vamos a explicar el proceso de creación de un nuevo módulo mediante la construcción de un ejemplo Módulo 'Nómina'. Este código de ejemplo se incluye como parte del paquete de vtlib y puede ser utilizado como punto de partida para crear nuevos módulos. Por favor refiérase a el 'usando el código de ejemplo proporcionado con la API de vtlib' sección de este documento para obtener más información.

Los siguientes son los pasos que deben seguirse para obtener un módulo básico de trabajo. La sección de backend cubre cambios al nivel de base de datos del módulo, y el frontend cubre la sección de los archivos de interfaz de usuario.

Backend

Page 10: vtlib espanol traduccion.docx

Paso 1: Crear instancia de módulo, crear tablas de base de datos y agregarlo al menúPaso 2: Cuadrar añadir UI para el módulo.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 (Asegúrese de crear un filtro de todo lo que es llamado el filtro predeterminado)Paso 5: Crear lista relacionados (para mostrar en la ficha '' más información '')Paso 6: Ajuste de compartir las reglas de accesoPaso 7: Ajuste módulo herramientas opciones (es decir, Import/Export)

FrontEndPaso 8: Creando Módulo de directorio y archivos

Embalaje (Packaging)Paso 9 Empaquetar

Opciones adicionales➔Módulo de plantillas (Para personalizar la forma, vista de lista y configuración de interfaz de usuario)➔Ajustes del módulo (Que permiten a los administradores configurar el módulo)➔Módulo de eventos (sólo disponible en vtiger CRM versión 5.1)➔Módulo de Webservices (sólo disponible en vtiger CRM versión 5.1)

Estos pasos se explican en detalle en el curso de esta sección.

Estamos utilizando el módulo de ejemplo 'Nómina' para explicar el uso de vtlib APIs.

Sobre el Módulo de nómina

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

Asociamos este módulo con el menú Herramientas.

Page 11: vtlib espanol traduccion.docx

Paso 1: Creación de móduloClase Vtiger_Module proporciona una API para trabajar con módulos 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 módulo debeTienen como se explica más abajo:

Tabla Convencion de la tabla DescripciónBaseTable vtiger_< MODULENAME> contiene los campos por

defecto para el nuevo módulo

CustomTable vtiger_ < MODULENAME > cf contiene campos personalizados del módulo

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 módulo.

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

El ejemplo dado continuación describe la manera de crear nuevos bloques para el módulo 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 módulo.

Paso 3: Agregar camposClase Vtiger_Field proporciona la API para trabajar con los campos del módulo, cuáles son los elementos básicos que almacenar y visualizar los datos de registro del módulo.

Page 12: vtlib espanol traduccion.docx

En el ejemplo siguiente describe la manera de crear un nuevo campo para el módulo 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 / añadir al bloque.Otros valores (si no establece) están en Mora como se explica a continuación:$fieldInstance -> basetable del módulo de mesa$fieldInstance -> columna $fieldInstance -> nombre en minúsculas.[La mesa se verá alterada mediante la adición de la columna si no está presente.$fieldInstance -> columntype VARCHAR (255)$fieldInstance -> uitype 1$fieldInstance -> typeofdata V ~ O$fieldInstance -> etiqueta $fieldInstance -> nombre[Asignación de entrada debe estar presente en el archivo de módulo 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 rápida de crear1 – desactivar el campo en forma rápida de crear$fieldInstance -> masseditable 0 – campo Disallow permanentemente para la edición masiva (5.1.0 en adelante)1 – permiten campo para masa edición (en adelante 5.1.0)2 – no permitir campo para la edición de masa (puede ser puesta a disposición utilizando LayoutEditor 5.1.0 en adelante)vtlibIdentificador de entidadUno de los campo obligatorio debe configurarse como identificador de entidad del módulo una vez que se crea. Este campose utilizará para mostrar los detalles en 'Últimas entradas visitaron' etc....$moduleInstance -> setEntityIdentifier($fieldInstance);Lista desplegable establecer valoresSi el campo es de tipo lista desplegable (uitype 15, 16, 33, 55, 111) entonces usted puede configurar los valores inicialesusando la API siguiente:$fieldInstance -> setPicklistValues (Array ('Value1', 'Value2'));Configurar el módulo relacionadoSi el campo es de tipo select Popup (uitype = 10), puede configurar los módulos relacionados que podríaseleccionarse mediante Popup usando la API siguiente:$fieldInstance -> setRelatedModules (Array ('OtherModule1', 'OtherModule2'));

Page 13: vtlib espanol traduccion.docx

Para desactivar el módulo relacionado se puede utilizar la siguiente API:$fieldInstance -> unsetRelatedModules(Array('OtherModule2'));vtlibInformación de sistema de ayudaProporcionar ayuda información para campo módulo 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 información 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:vtlibNota: A continuación es el fragmento de código que se debe agregar a la EditView.php del módulo existente ahabilitar la compatibilidad con icono de ayuda.// ...Recopilar la información de ayuda asociada con campos$smarty -> asignar ('FIELDHELPINFO', vtlib_getFieldHelpInfo($currentModule));FINAL// ...Si ($focus -> modo == 'editar') $smarty -> display('salesEditView.tpl');más $smarty -> display('CreateView.tpl');Se recomienda:➢Proporcionar una correlación de traducción para el helpinfo se utiliza para un campo.Ejemplo establecer el helpinfo como HELP_FILEDNAME_INFO y proporcionar el contenido enel archivo de idioma.$fieldInstance -> setHelpInfo('HELP_FIELDNAME_INFO');En el módulo / < MODULENAME > /language/en_us.lang.php$mod_strings = array ()...'HELP_FIELDNAME_INFO' = > ' Fieldname ayuda debe ser el contenido aquí'...);➢Evitar saltos de línea 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 más detalles puede vincular auna página externa como se muestra en el ejemplo siguiente:Llene su nombre contactos aquí. Para saber más sobre lo < br >< a href = 'http://en.vtiger.com/wiki.html' > ver más < /a >vtlibEstablezca la propiedad MassEditNota: Masa Editar función está disponible desde vtiger 5.1 en adelanteUsted puede hacer el campo disponible para su utilización masiva edición las maneras siguientes que se describe a continuación:

Page 14: vtlib espanol traduccion.docx

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 Descripción0 no disponible para la edición masiva y esta propiedad no se puede controlar por el usuario.1 disponible para editar masa2 no disponible para la edición masiva pero la propiedad puede ser controlada por el usuario (mediante el administrador de diseño, etc.)vtlibPaso 4: Crear filtrosClase Vtiger_Filter proporciona API para trabajar con vista personalizada de un módulo o filtro. Mostrar la listase controla mediante estos filtros.En el ejemplo siguiente describe la manera de crear nuevo filtro para el módulo:include_once('vtlib/vtiger/Module.php');$filterInstance = new Vtiger_Filter();$filterInstance -> nombre = 'Todos';$filterInstance -> isdefault = true;$moduleInstance -> addFilter($filterInstance);Configurar camposPara 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 debería aparecer en la vista de lista.Reglas de configuraciónUna vez que se agrega el campo filtrar te puede fijar la regla (condición) para filtrado así como mediante lalas siguientes API:$filterInstance -> addRule ($fieldInstance, $comparator, $compareValue,$columnIndex);Donde comparador podría ser uno de los siguientes:ES IGUAL ANOT_EQUALSSTARTS_WITHENDS_WITHCONTIENEDOES_NOT_CONTAINSLESS_THANGREATER_THANLESS_OR_EQUALGREATER_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 condición de regla.vtlib

Page 15: vtlib espanol traduccion.docx

Paso 5: Listas relacionadasUn módulo podría estar asociado con varios registros de otro módulo que aparece debajoPestaña "Más información" en vista de detalle.El ejemplo dado continuación describe la manera de crear a una relación entre un módulo de nómina 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 más cuentas a los registros de nómina.A la relación entre el uso de módulos lo siguiente:$moduleInstance -> unsetRelatedList($targetModuleInstance);Acerca de setRelatedList APIVtiger_Module -> setRelatedList (< TARGET MODULE > [, < HEADER etiqueta >, < permitido acciones >,< CALLBACK función nombre >]);nombre < blanco módulo > a qué relación está siendo configuración.< HEADER etiqueta > opcional (por defecto = < TARGET MODULE >)Etiqueta para usar más la información relacionada con vista.< permitido acciones > opcional agregar o seleccione (default = false)¿Qué botones deben mostrarse en la vista lista relacionada al tiempo que añaderegistros.< nombre de la función de devolución de llamada > opcional (por defecto = get_related_list)La función debe ser definida en la clase de < módulo fuente >.Esto debería 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 relación entre el móduloregistros. Módulos estándar disponibles en vtiger CRM encarga de la relación en tablas separadas y realiza laSe unen para buscar datos específicos de cada módulo.Esto es un intento de lograr comportamiento genérico. Puedes escribir personalizada llamada vuelta relacionados con funciones para manejarconsultas de lista que satisfagan sus necesidades.vtlibLimitacionesSiguientes limitaciones para la lista relacionados con APIs1. variables de clase módulo estándar no se fijan como es requerido por el módulo de vtlib get_related_list API.La gestión de casos debe ser manejada @function vtlib_setup_modulevars en include/utils/VtlibUtils.php2. get_related_list API agregada a la clase de módulo no maneja unirseen las mesas donde algunos módulos como (cuentas) almacenar información por lo tanto, no son los detalles completosbuscar en la vista lista relacionados.(Clasificación de ejemplo en el campo de la ciudad en vista de lista relacionados fallará si dieOnError es true)vtlibPaso 6: Compartir las reglas de acceso

Page 16: vtlib espanol traduccion.docx

Configuración de acceso compartido para el módulo puede realizarse como se muestra a continuación:En el ejemplo siguiente describe la forma de configurar el módulo de nómina como privadoinclude_once('vtlib/vtiger/Module.php');$moduleInstance = Vtiger_Module::getInstance('Payslip');$moduleInstance -> setDefaultSharing('Private');La < PERMISSION_TYPE > puede ser una de las siguientes opciones:Public_ReadOnlyPublic_ReadWritePublic_ReadWriteDeletePrivadovtlibPaso 7: Módulo herramientasCaracterísticas como la importación, la exportación se denominan como herramientas del módulo. Estas herramientas pueden habilitarse o deshabilitan comose muestra a continuación:En el ejemplo siguiente describe la forma de activar y desactivar las herramientas para el módulo de nóminainclude_once('vtlib/vtiger/Module.php');$moduleInstance = Vtiger_Module::getInstance('Payslip');$module -> enableTools (Array ('Import', 'Exportar'));$module -> disableTools('Export');vtlibPaso opcional: Módulo eventosConcurso completo API se sustenta del vtiger 5.1 en adelante (leer más).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 módulo, utilice lo siguiente:include_once('vtlib/vtiger/Event.php');Vtiger_Event::Register ('< MODULENAME >', '< EVENTNAME >','< HANDLERCLASS >', '< HANDLERFILE >');< MODULNAME > módulo para lo cual deben registrar eventos< EVENTNAME > vtiger.entity.aftersavevtiger.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 después de salvar.Si (Vtiger_Event::hasSupport()) {}Vtiger_Event::Register)'Nómina', 'vtiger.entity.aftersave','PayslipHandler', 'modules/Payslip/PayslipHandler.php');Vtiger_Event::Register)'Nómina', 'vtiger.entity.beforesave','PayslipHandler', 'modules/Payslip/PayslipHandler.php');}modules/Payslip/PayslipHandler.php<? phpclase PayslipHandler amplía {VTEventHandler}

Page 17: vtlib espanol traduccion.docx

función handleEvent ($eventName, $data) {}Si ($eventName == 'vtiger.entity.beforesave') {}Entidad está a punto de ser salvado, tomar acción requerida}Si ($eventName == 'vtiger.entity.aftersave') {}Entidad ha sido salvado, tomar acción siguiente}}}?>vtlibPaso opcional: Módulo WebservicesWebServices API se sustenta del vtiger 5.1 en adelante (leer más).Usted necesitará invocar la configuración API para habilitar el soporte para los módulos personalizados.include_once('vtlib/vtiger/Module.php');$moduleInstance = Vtiger_Module::getInstance('Payslip');$moduleInstance -> initWebservice();Nota: Cuando se importa el módulo de la API de inicializar Webservice se invoca automáticamente.vtlibPaso opcional: Módulo plantillasSi desea personalizar la vista de lista o tener una página de configuración personalizada para el módulo, entoncesUsted necesitará crear una plantilla Smarty en consecuencia. Usted necesitará tener algún conocimiento deUso de Plantillas Smarty yuu antes de proceder.Sus archivos de plantilla de módulo específicos 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'));vtlibPaso opcional: Enlaces personalizadosSe puede añadir enlace web personalizado para el módulo 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ú "Más acciones" en la vista de detalle del registro.DETAILVIEWBASIC: Agregará un vínculo a la lista de 'Acciones' en la vista de detalle del registro.DETAILVIEWWIDGET: Se añade un widget en el lado derecho de la vista de detalle de laRegistro, similar al widget de la nube de etiquetas.LISTVIEW: Agregará un enlace bajo el botón de "Más acciones" en la vista de lista de un módulo.LISTVIEWBASIC: Añadir un botón en la vista lista del módulo similar a borrar, masaBotones de edición.LinkLabel etiqueta a utilizar para el enlace al MostrarLinkURL URL del enlace. Puede utilizar variables como $variablename$

Page 18: vtlib espanol traduccion.docx

En la página del módulo ListView controlador (modules/Payslip/ListView.php) tendrá este fragmento de código(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 página del módulo DetailView controlador (modules/Payslip/DetailView.php) tendrá este pedazo decódigo (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 valoresa través de DetailView.phpEl $MODULE$, $ACTION$, variables de $ $CATEGORY en el LinkURL, será reemplazado por el conjunto de valoresa través de ListView.phpvtlibA continuación es un ejemplo que agrega un enlace a la DetailView del módulo.include_once('vtlib/vtiger/Module.php');$moduleInstance = Vtiger_Module::getInstance('Payslip');$moduleInstance -> (addLink'DETAILVIEW',"Nueva acción",' index.php?module=OtherModule & acción = haga & src_module = $MODULE$ & src_record = $RECORD$ ');En la página DetailView encontrará que más acciones de enlace. Cuando ratón cierne sobre este toda la costumbre relacionadaenlaces aparecerá como una gota abajo. Vea la captura de pantalla siguiente:LinkType especialLinkTypes siguientes se tratan especialmente mientras que procesa para la exhibición:Descripción LinkTypeHEADERSCRIPT el enlace será tratado como un tipo de javascript y se importarán en la sección head della página de salida HTML como < script tipo = ' text/javascript' src = 'linkurl' >< / script >HEADERCSS el enlace será tratado como un tipo CSS y se importarán en la sección principal de laPágina de salida HTML como < link rel = "stylesheet" type = ' text/css' href ='linkurl >HEADERLINK puedes ver estos enlace agrupados bajo más en el panel de encabezado superior.Es útil si desea proporcionar herramientas utitlity como Bookmarklet, etc.vtlibGuión terminado final (Backend)Aquí está el guión completo (vtlib.Test.Create.Module1.php) que crea el módulo de nómina<? php

Page 19: vtlib espanol traduccion.docx

Activar depuración nivel$Vtiger_Utils_Log = true;include_once('vtlib/vtiger/menu.php');include_once('vtlib/vtiger/Module.php');Crear instancia de módulo y guárdelo primero$module = new Vtiger_Module();$module -> nombre = 'Nómina';$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))*/Añadir el módulo al menú (punto de entrada de interfaz de usuario)$menu = Vtiger_Menu::getInstance('Tools');$menu -> addModule($module);Añadir el módulo básico$block1 = new Vtiger_Block();$block1 -> etiqueta = 'LBL_PAYSLIP_INFORMATION';$module -> addBlock($block1);Añadir 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 módulo$module -> setEntityIdentifier($field1);$field2 = new Vtiger_Field();$field2 -> name = 'PayslipType';$field2 -> etiqueta = 'Nómina tipo';$field2 -> columntype = 'Varchar';$field2 -> uitype = 15;$field2 -> typeofdata = ' V ~ O'; / / Varchar ~ opcional$block1 -> addField($field2); / ** tabla y columna se establecen automáticamente * /$field2 -> setPicklistValues (Array ('Empleado', 'Aprendiz'));$field3 = new Vtiger_Field();$field3 -> nombre = 'Mes';vtlib$field3 -> uitype = 23;$field3 -> typeofdata = había ~ M'; Fecha ~ obligatorio$block1 -> addField($field3); / ** tabla, columna, etiqueta, valores por defecto * /

Page 20: vtlib espanol traduccion.docx

$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 deberían estar en cada módulo, vinculado a la mesa de núcleo 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 más$filter2 = new Vtiger_Filter();$filter2 -> name = 'Sobretodo2';$module -> addFilter($filter2);

Page 21: vtlib espanol traduccion.docx

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 módulos para este módulo * /$module -> setRelatedList(Vtiger_Module::getInstance('Accounts'), 'Cuentas',Array('ADD','SELECT'));/ ** Establece compartir acceso de este módulo * /$module -> setDefaultSharing('Private');/ ** Activar y desactivar las herramientas disponibles * /$module -> enableTools (Array ('Import', 'Exportar'));$module -> disableTools('Merge');?>vtlibEjecutar el Script de creación de módulo1. para ejecutar el vtlib.Test.Create.Module1.php script, abiertohttp://localhost/vtigerCRM/vtlib.test.html2. Haga clic en crear nómina módulo para creación de pruebas de módulo de nóminavtlibPaso 8: Crear ficheros del módulo (Frontend)Cada nuevo módulo debe tener un directorio bajo módulos / carpeta. Para ayudar a acelerar el módulocreación de código, vtlib viene liado con la estructura del esqueleto módulo basado en el módulo 'Nómina'.Este código se incluyen en la carpeta vtlib/ModuleDir que se puede utilizar como plantilla para nuevo módulo quese crea. Contiene archivos de origen que necesita ser cambiado como se explica más abajo.Nota: ModuleDir tiene subdirectorios específicos a la versión vtiger, por favor, asegúrese de usar la indicada.1. copia ModuleDir / < target_vtiger_version > contenido al recién creados módulos / < NewModuleName >carpeta.2. rename < NewModuleName > /ModuleFile.php como < NewModuleName > / < NewModuleName > .php(como se indica en la tabla a continuación)3. cambiar el nombre de /ModuleFileAjax.php < NewModuleName > como< NewModuleName > / < NewModuleName > Ajax.php4. rename < NewModuleName > /ModuleFile.js a < NewModuleName > / < NewModuleName > .js5. edit < NewModuleName > / < NewModuleName > .phpa) cambiar el nombre de clase ModuleClass a < NewModuleName >b) actualizar $table_name y $table_index (módulo nombre y tabla índice columna de la tabla)c) actualización $groupTabled) actualización $tab_name, $tab_name_indexe) actualización $list_fields, $list_fields_name, $sortby_fields, $list_link_fieldf) actualización $detailview_linksg) actualización $default_order_by, $default_sort_orderh) actualización $required_fieldsi) actualización $customFieldTable

Page 22: vtlib espanol traduccion.docx

j) cambie el nombre de función ModuleClass a la función < NewModuleName > [esta es la clase del Constructor]Nota: Otros archivos bajo módulos / < NewModuleName > no necesita ser cambiado.Ejemplo de fichero ModuleDir propósito bajo nóminaindex.php entrada módulo punto a través de menú index.phpArchivo de definición de la clase de módulo ModuleFile.php. Payslip.phpArchivo de ModuleFileAjax.php Base para acciones ajax utilizado bajo control Listview etc.... PayslipAjax.phpFunción de javascript específico del módulo de ModuleFile.js puede ser escrita aquí Payslip.jsControlador de vista de detalle de información más CallRelatedList.php CallRelatedList.phpVista de CustomView.php personalizado o controlador de filtro CustomView.phpControlador de registro borrado Delete.php módulo Delete.phpControlador de vista detalle DetailView.php DetailView.phpVista de detalle DetailViewAjax.php ajax editar controlador DetailViewAjax.phpControlador de vista EditView.php Edit EditView.phpControlador de exportación récord de módulo ExportRecords.php ExportRecords.phpImportación de registros Import.php módulo controlador Import.phpControlador de vista lista ListView.php ListView.phpControlador de selección popup.php emergente de este registro de módulo Popup.phpControlador de creación rápida de QuickCreate.php QuickCreate.phpRegistro Save.php módulo salvar controlador Save.phpvtlibEjemplo de fichero ModuleDir propósito bajo nóminaControlador de nube TagCloud.php Tag TagCloud.phpupdateRelations.php lista relacionados con registro controlador (guardar/borrar) updateRelations.phpArchivos específicos a la versión vtiger 5.1.0.Ejemplo de fichero ModuleDir propósito bajo nóminaMassEdit.php controlador de masa Record Edit MassEdit.phpControlador de masa editar registro Save MassEditSave.php MassEditSave.phpFindDuplicateRecords.php controlador de encontrar registros duplicados FindDuplicateRecords.phpControlador de proceso registros duplicados (fusión) ProcessDuplicates.php ProcessDuplicates.phpListViewPagging.php controlador de lista vista paginación ListViewPagging.phpControlador de búsqueda Global de UnifiedSearch.php UnifiedSearch.phpArchivos para ser actualizado para un módulo de vtlib construcción en versión 5.1.0, para hacerlo funcionar en 5.2.0 (de vtlib /ModuleDir/5.2.0):Ejemplo ModuleDir propósito del archivo de actualización en nóminaCallRelatedList.php relacionados con la lista ver cambios CallRelatedList.phpDetailViewAjax.php relacionados con la lista ver cambios DetailViewAjax.phpListView.php orden por tema fijada y generador de consultas de apoyo ListView.phpSoporte de generador de consultas de ModuleFile.php Payslip.phpPreparación del archivo de idiomaActualización de la cartografía de traducción en el fichero de idioma de módulo(módulos / < NewModuleName > / language/en_us.lang.php)Algunas de la asignación obligatoria que debe ser proporcionada son como sigue:$mod_strings = array ()'NewModuleName' = > 'NewModuleName_Translation','SINGLE_NewModuleName' = > 'NewModuleNameForSingleRecord','LBL_CUSTOM_INFORMATION' = > 'Información personalizada',

Page 23: vtlib espanol traduccion.docx

Etiqueta usada para su campo módulo'FieldLabel' = > 'Campo etiqueta traducción');vtlibNuevo módulo TourVista de listaCrear vistavtlibVista de detalleVista de listavtlibCompartir accesoCampos personalizadosvtlibPaso 9: empaquetadoPaquete exportaciónvtlib proporciona API para exportar módulo como un archivo zip (paquete) que puede utiliza para la importación a través deMódulo Manger.require_once('vtlib/vtiger/package.php');require_once('vtlib/vtiger/Module.php');$package = new Vtiger_Package();$package -> Exportar ('Instancia del módulo del < >', '< destino DIR >', '< archivo zip ' nombre >, < directaDESCARGAR >);< módulo 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 después 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',' Nómina-Export.zip',verdadero);Nota: Asegúrese de prueba/vtlib directorio existe bajo el directorio raíz vtigercrm y es modificable.vtlibEstructura del paqueteEl archivo zip exportado (paquete) tiene la siguiente estructura:Manifest.xmlmódulos /ModuleName/<Module Related Files>

Page 24: vtlib espanol traduccion.docx

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>

Page 25: vtlib espanol traduccion.docx

<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>< condición ><![CDATA [modulename en ['MODULENAME']]] >< / condición >< / evento >< / eventos >< / módulo >vtlibPaquete importaciónPuede importar un módulo de archivo del paquete (zip) usando la siguiente APIrequire_once('vtlib/vtiger/package.php');$package = new Vtiger_Package();$package -> import (< archivo zip módulo >, < sobrescribir >);< módulo archivo zip > módulo de archivo zip (paquete).< Sobrescribir > (opcional: Default = false)Sobrescribir el actual directorio del módulo si está presenteNota: sobrescribir bandera se ignora actualmente. Será ejecutado en el futuro.Por favor, asegúrese de comprobar directorio inexistente antes de importar.

Page 26: vtlib espanol traduccion.docx

El archivo del paquete debe validarse antes de importar cual puede hacerse usando la siguiente APIrequire_once('vtlib/vtiger/package.php');$package = new Vtiger_Package();$package -> checkZip (< módulo archivo zip >);< módulo archivo zip > módulo de archivo zip (paquete).checkZip devuelve true si es la estructura del paquete en archivo zip especificada en la sección paqueteExportación anterior.Nombre del módulo detección siendo importadorequire_once('vtlib/vtiger/package.php');$package = new Vtiger_Package();$package -> getModuleNameFromZip (< módulo archivo zip >);< módulo archivo zip > módulo 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 módulo no es válido!";} if más ({Vtiger_Module::getInstance($module))}echo "$module ya existe!";$module_exists = true;} {if(is_dir("modules/$module")) másecho "$module carpeta existe! Sobrescribir? ";$module_dir_exists = true;}Si ($module_exists == false & & $module_dir_exists == false) {}$package -> import('test/vtlib/Payslip.zip');}vtlibActualización de paqueteNota: Actualmente esta función Actualización del módulo no admite cancelación y modificación de salir del módulocampos. Antes de utilizar esta función, por favor asegúrese de tu módulo modificado no cambiar o borrar los existentescampos.Puede actualizar un módulo 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 módulo >, < sobrescribir >);< ModuleInstance > Vtiger_Module instancia que necesita actualizarse.< módulo archivo zip > módulo de archivo zip (paquete).< Sobrescribir > (opcional: Default = true)Sobrescribir el actual directorio del módulo si está presenteEjemplo:require_once('vtlib/vtiger/package.php');

Page 27: vtlib espanol traduccion.docx

require_once('vtlib/vtiger/Module.php');$package = new Vtiger_Package();$moduleInstance = Vtiger_Module::getInstance('Payslip');$package->update($moduleInstance, 'test/vtlib/Payslip.zip');Limitations1. 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 thepackage file through manifest.xmlvtlibExtension ModuleModule Manager lets you install an extension module provided the manifest.xml (in package) hasthe 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 extensionname Mandatory Module name (should not contain spaces or special characters)etiqueta etiqueta obligatoria utilizado para mostrar en la interfaz de usuarioMenú opcional para que este módulo tiene que fijarse los padresdependencias(vtiger_version)Versión obligatoria para que el paquete está diseñado paraMesas Mesas opcional que necesita ser creada durante la instalación del móduloeventos opcional que necesita ser registrado durante la instalación del móduloArchivo de paqueteSe recomienda la siguiente estructura de archivo para paquete de módulo de extensión (archivo zip).

Page 28: vtlib espanol traduccion.docx

Manifest.xmlmódulos /MODULENAME /idioma /en_US.lang.phpindex.php< otros ficheros del módulo >plantillas /< plantillas smarty >vtlibPaquetesModule Manager le permite instalar paquetes siempre el manifest.xml (en paquete) tiene los siguientesinformación. Esta característica está disponible desde vtiger CRM 5.2.0 en adelante solamente.Manifest.xml<? xml version = "1,0" encoding = "utf-8"? >módulo de < >< nombre > MODULENAME < / nombre >< versión > 1.0 < / versión >< 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 >< / módulo >modulebundle obligatorio debe tener el valor truenombre del módulo obligatorio (que no contienen espacios ni caracteres especiales)dependencias(vtiger_version)Versión obligatoria para que el paquete está diseñado paramodulelist lista opcional de los módulos que forman parte del paquete con su nombre,secuencia de instalación y el nombre del archivoArchivo de paqueteSe recomienda la siguiente estructura de archivo para el paquete de paquetes (archivo zip).Manifest.xmlMODULENAME_1.zipMODULENAME_2.zip...vtlibPaquete de idioma

Page 29: vtlib espanol traduccion.docx

Module Manager le permite instalar paquetes de idioma para la instalación de vtiger CRM. La lenguapaquete debe seguir la estructura del paquete, como se explica a continuación:Manifest.xml<? xml version = "1,0" encoding = "utf-8"? >módulo de < >idioma < tipo > < / tipo >< nombre > Inglés < / nombre >etiqueta < > Inglés < / label >en_us < prefijo > < / prefijo >< versión > 1.0 < / versión >< dependencias >5.1.0 < vtiger_version > < / vtiger_version >< / dependencias >< / módulo >tipo obligatoria debe tener el lenguaje del valornombre opcional Language pack completoetiqueta etiqueta obligatoria para identificar el idioma de la interfaz de usuario (en la página de inicio de sesión)Prefijo obligatorio utiliza el prefijo de nombre de archivo para el archivo de idioma.Se extraerá solamente estos archivos desde el archivo del paquete duranteinstalación.dependencias(vtiger_version)Mandatory Version for which the package is intended for.Package FileThe following file structure is recommended for extension language package (zip file).manifest.xmlmodules/Accounts/language/<prefix>.lang.phpContacts/language/<prefix>.lang.phpLeads/language/<prefix>.lang.php...vtlibAdding LicenseThe manifest.xml of the package can contain license information which will be displayed to userduring Module Manager installation process. You will need to add <license> node in themanifest.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>

Page 30: vtlib espanol traduccion.docx

</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>vtlibAdding Migration DetailsModule Manager supports upgrade of modules built with vtlib. In some cases, custom schemachanges 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 migrationare applied. In such cases, you can add the migration information in your manifest.xml asdescribed 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 COLUMNNewColumn INT]]></sql></table></tables></migration><migration version='1.1'><tables><table><name>TABLE-NAME</name>

Page 31: vtlib espanol traduccion.docx

<sql><![CDATA[UPDATE MyTable SET NewColumn=1 WHERENewColumn 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 informationpara la versión 1.0 y 1.1vtlibDetalles del nodo migración< versión migración = '1.0'... Esta versión indica que la versión de la fuente (antesversión) para que la migración debe ser aplicada.Mesas de < >< table >< nombre >.< sql >...Nombre de la tabla para migrar.SQL a utilizar para la migración.vtlibModule ManagerUna vez instalado vtlib, proporciona al Module Manager herramienta de configuración de configuración. Con estopuede habilitar, deshabilitar o controlar la configuración de los módulos de vtiger CRM. En la desactivación de un módulo, noaparecerá en el menú y el acceso está restringido (incluido el administrador).Los módulos están categorizados como estándar (que se suministran como una parte fundamental de vtiger CRM), yCostumbre (que ha importado o creado)vtlibDesactivación de móduloPuede deshabilitar módulo haciendo clic en el icono de interrogación tick verde.Módulo que permitePuede habilitar el módulo haciendo clic en el icono de interrogación rojo tick.vtlibMódulo de exportaciónHaga clic en el icono de flecha para arriba en el administrador del módulo, que exportará el módulo en un archivo zip.vtlibMódulo de importaciónGerente de módulo le permitirá importar nuevos módulos. Siga los pasos indicados a continuación:Haga clic en el botón importar nuevoSeleccione el archivo zip (paquete) de módulo que previamente fue exportado o creado.

Page 32: vtlib espanol traduccion.docx

vtlibVerificar los detalles de importación analizan desde el archivo zip. Haga clic en sí para continuar o No para cancelar.Haga clic en finalizar para completar la importación del módulo.vtlibNota: Si usted está intentando importar un módulo que ya existe un directorio que está presente en elmódulos de la carpeta se verá el siguiente mensaje.vtlibAjustes específicos del móduloUn módulo puede tener su propia configuración específica. En tales casos, debe crearse Settings.php bajola carpeta del módulo. Este archivo será invocado (si encuentran) cuando se hace clic en el icono de configuración.Ejemplo: Muestra Settings.php para el módulo de nómina<? php$thisModule = $_REQUEST ['formodule'];require_once('Smarty_setup.php');$smarty = new vtigerCRM_Smarty();Utilice el archivo de plantilla específica de módulomodules/Payslip/MySettings.tpl$smarty -> display (vtlib_getModuleTemplate ('Nómina', 'MySettings.tpl'));?>vtlibActualización del móduloAhora es posible a través de Module Manager actualizar el módulo a la próxima versión.Nota: Actualmente esta función Actualización del módulo no admite cancelación y modificación de salir del módulocampos. Antes de utilizar esta función, por favor asegúrese de tu módulo modificado no cambiar o borrar los existentescampos.Haga clic en el icono de actualización:Seleccione el nuevo archivo de paquete para el módulo:vtlibVerificar los detalles del paquete antes de actualizar:Finalmente se actualizarán su módulo:vtlibApéndice 1 - cambios en la APIvtlib 2.0 contiene cambios en las API anteriores en versión 1.x. Las nuevas API son másmodular y se adhieren al modelo OOD.Explicamos los cambios más abajo.Creación de móduloUsando vtlib 1.xVtiger_Tab::Create ('Nómina', 'Nómina', '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 = 'Nómina';

Page 33: vtlib espanol traduccion.docx

$moduleInstance -> save();$moduleInstance -> initTables();$menuInstance = Vtiger_Menu::getInstance('Tools');$menuInstance -> addModule($moduleInstance);Crear bloqueUsando vtlib 1.xVtiger_Block::Create ('Nómina', 'LBL_PAYSLIP_INFORMATION');Usando vtlib 2.x$blockInstance = new Vtiger_Block();$blockInstance -> etiqueta = 'LBL_PAYSLIP_INFORMATION';$moduleInstance -> addBlock($blockInstance);vtlibCreación de campoUsando vtlib 1.x$fieldInstance = new Vtiger_Field();$fieldInstance -> set ('module', 'Nómina')-> 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 ajusteUsando vtlib 1.x$fieldInstance -> set ('entityidfield', 'payslipid')-> set ('entityidcolumn', 'payslipid');$fieldInstance -> setEntityIdentifier();Usando vtlib 2.x$moduleInstance -> setEntityIdentifier($fieldInstance);

Page 34: vtlib espanol traduccion.docx

Lista desplegable establecer valoresUsando vtlib 1.x$fieldInstance -> setupPicklistValues (Array ('Empleado', 'Aprendiz'));Usando vtlib 2.x$fieldInstance -> setPicklistValues (Array ('Empleado', 'Aprendiz'));vtlibCreación de filtroUsando vtlib 1.xVtiger_CustomView::Create ('Nómina', 'Todos', true);$cv = new Vtiger_CustomView ('Nómina', '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 herramientasUsando vtlib 1.xVtiger_Module::disableAction('Payslip','Import');Vtiger_Module::enableAction ('nómina', 'Exportar');Usando vtlib 2.x$moduleInstance -> enableTools (Array ('Import', 'Unir'));$moduleInstance -> disableTools('Export');Configurar compartir accesoUsando vtlib 1.xVtiger_Module::setDefaultSharingAccess ('Nómina', 'Privado');Usando vtlib 2.x$moduleInstance -> setDefaultSharing('Private');vtlibApéndice 2 – cambios de esquemaAlgunas de la API vtlib hacen los cambios de esquema (o agregar una tabla nueva o una nueva columna atabla existente) son capturados los detalles en esta secciónMesa columna acción Descripciónvtiger_field helpinfo texto columnaAdiciónEsta columna va a almacenar el texto de ayuda asociadocon vtiger_fieldvtiger_language mesa además captura Idiomas instalados para vtiger CRMvtiger_links mesa además capta detalles de enlaces módulo personalizadoversión vtiger_tabNOMBREColumnaAdiciónVersión del módulo en el uso de la pista. Útil durantemigración o actualización del módulo.vtiger_tab_info tabla de adición captura algunas de las preferencias del módulo comomínimo versión apoyada, máximosoportados, etc.vtiger_crmentityrel mesa además capta a la relación entre los registros del módulo.

Page 35: vtlib espanol traduccion.docx

Para el manejo de la lista genérica relacionados.vtiger_fieldmodulerel tabla adición capturas relacionadas con información de módulo para elcampo de uitype 10vtiger_mailer_queue mesa adiciones estas tablas se agregarán cuando Vtiger_Mailerclase usará para enviar mailsvtiger_mailer_queueinfo asincrónicamente.vtlibApéndice 3 – usando vtiger_imageurl APIHay imágenes reutilizables bajo la carpeta themes/images e imágenes específicas tema estará bajotemas / < THEMENAME > / carpeta de imágenes.Usted puede dejar la imagen fácilmente configurable para cada tema, por favor asegúrese de seguir los pasosabajo: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 específica del temaSi directamente construir la interfaz de usuario de script PHP, asegúrate 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.phpvtlibApéndice 4 – vtlib_handler métodoMódulo clase debe definir vtlib_handler método para controlar eventos especiales desencadenados tal como se describeabajo:Descripción del tipo de eventoModule.postinstall una vez completada la importación del módulo.Module.preupdate antes de actualizar el módulo (paquete).Module.postupdate después de que se actualiza el módulo (paquete).Module.disabled cuando el módulo está deshabilitado.Module.Enabled cuando se activa el módulo.Module.preUninstall antes de que se elimina la instancia del módulo.Ejemplo:vtlib_handler función debe definirse como método módulo de clase./*** Se invoca cuando se realizan acciones especiales en el módulo.nombre del módulo string * @paramTipo de evento de cadena * @param*/la función vtlib_handler ($modulename, $event_type) {}Si ($event_type == 'module.postinstall') {}Manejar TODO el post acciones de instalación} más if ($event_type == 'module.disabled') {}

Page 36: vtlib espanol traduccion.docx

TODO manejar las acciones cuando este módulo está deshabilitado.} más if ($event_type == 'module.enabled') {}TODO manejar las acciones cuando se habilita este módulo.} más if ($event_type == 'module.preuninstall') {}TODO manejar acciones cuando este módulo está a punto de ser eliminado.} más if ($event_type == 'module.preupdate') {}Acciones de manejar TODO antes de este módulo se actualiza.} más if ($event_type == 'module.postupdate') {}TODO manejar las acciones después de que este módulo se actualiza.}}UseCaseCuando se deshabilita un módulo, a través de vtlib_handler ahora puede cancelar el registro de cualquier notificación de eventos si no espermitido otra vez.vtlibApéndice 5 – vtlib_listview javascript APIvtlib_listview javascript API proporciona la capacidad para registrar la función de detector para algunos predefinidostipos de eventos.vtlib_listview.Register (< EVENT_TYPE >, < HANDLER_FUNCTION >,[< HANDLER_FUNCTION_OPTIONAL_PARAMETERS >]);Cell.onmouseover cuando se mueve el ratón sobre la celda del control listview.Cell.onmouseout cuando el ratón se mueve fuera de la célula de listview.La función de controlador será invocada con dos conjunto de argumentos:Evento parámetros {}evento: < EVENT_TYPE >DomNode: nodo DOM HTML utilizado para detectar el eventomódulo: nombre del módulo al cual campo perteneceFieldName: nombre del camporecordID: ID de registro se muestran en el listview}Los parámetros opcionales es aquel que se ha pasado a la vtlib_listview.register APIEjemplo: Usted puede tener los siguientes en el archivo javascriptvtlib_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 módulos, usted necesitará configurar el javascript como HEADERSCRIPT(consulte la costumbre enlaces #Special LinkType)vtlibPreguntas frecuentes – preguntas frecuentes1. cómo escribir plantillas propias?Referencia: http://forums.vtiger.com/viewtopic.php?p=75410#75410Ahora quiero que mis propias plantillas. La documentación de VTLib afirma que hagoesto:Sus archivos de plantilla de módulo específicos Smarty deben ser creados bajoSmarty/plantillas/modules/< NewModuleName >.

Page 37: vtlib espanol traduccion.docx

Usar la API vtlib_getModuleTemplate ($module, $templateName)(include/utils/VtlibUtils.php) como:$smarty -> display (vtlib_getModuleTemplate ($currentModule, 'MyListview.tpl'));Mi pregunta es ¿dónde puedo colocar este fragmento de código? ¿En el creador del módulo?Solución:Supongamos que desea crear su propio Listview para el módulo TestModule, lo que usted necesitahacer es la siguiente:1. crear el MyListview.tpl bajo Smarty/templates/modules/TestModule/MyListView.tpl2. 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 más sobre el uso de Smarty.2. ¿cómo se utiliza la plantilla de módulo?Siguiente ejemplo explica cómo se procesa el módulo listview acción utilizando el sabelotodo.vtlib3. no se ve Module Manager!He instalado vtlib en vitger 5.0.4 que no puedo parece a ver al gerente del módulobajo configuración de cualquiera, hay un archivo o dir que necesito mover algunos donde¿orden para el administrador de módulo rellenar?Solución:●Permiten acceso de escritura a los módulos, Smarty, cron /,de prueba / directorio antes de descomprimirvtlib-x.y.zip●Borrar archivos de la carpeta Smarty/templates_c (con extensión *. tpl.php) y actualizarla página de configuración, deberías ver Module Manager.4. Consejos para el uso de nombres de campo1. preferiblemente utilizar pequeños personajes casos para campo (nombre y columnname).2. Evite cualquier caracteres especiales como (_, :,-) en los nombres. Se puede utilizar para las etiquetas3. teniendo el mismo valor de campo (nombre y columnname) hace más fácil evitarpara comenzar con la confusión.vtlib

En esta categoría los módulos creará registros de la entidad en vtiger CRM. El módulo proporcionará crearver, editar vista, vista de detalle y vista de lista. Usted será capaz de crear filtros etc..Módulos de entidad se recomiendan para los casos donde un nuevo tipo de objeto de datos, por ejemplo hojas de tiempo,debe añadirse al sistema como parte del nuevo módulo. Estos nuevos objetos de datos pueden serhan consultado y manejado por los administradores y usuarios.Conduce, contactos, cuentas, nóminas etc.... son módulos de entidad.Módulo de extensiónMódulos en esta categoría no necesitan seguir el comportamiento general del módulo de la entidad. Los registroscreado por entidad módulo podría utilizarse para proporcionar una funcionalidad extendida o los registroscreación/edición puede ser manejado en su propia manera.Módulos de extensión pueden usarse cuando se necesita funcionalidad adicional, sin necesidad de nuevoclases de objetos de datos que los usuarios ver y administración.

Page 38: vtlib espanol traduccion.docx

Tablero de instrumentos, informes, Portal etc.... son módulos de extensión.Paquete de idiomaPaquetes de idioma para vtiger CRM son tratados también como otro tipo de módulo de vtlib.PaquetesPaquetes te dejan instalar un sistema de inter dependiente vtlib módulos en el orden indicado.Nota: Module manager proporcionará la posibilidad de instalar estos módulos diferentes.vtlibCreación de un nuevo módulo de entidadvtlib simplifica la creación de nuevos módulos de vtiger CRM. Los desarrolladores pueden utilizar vtlib para desarrollar vtigerMódulos CRM que añaden nuevas funciones a vtiger CRM. Estos módulos se pueden empaquetar entonces parafácil instalación por el módulo de administrador.Nota: En este documento vamos a explicar el proceso de creación de un nuevo módulo mediante la construcción de un ejemploMódulo 'Nómina'. Este código de ejemplo se incluye como parte del paquete de vtlib y puede ser utilizado como una partidapunto para crear nuevos módulos. Por favor refiérase a la 'usando el código de ejemplo proporcionado con la API de vtlib'sección de este documento para obtener más información.Los siguientes son pasos importantes que deben seguirse para obtener un módulo básico de trabajo. Elbackend sección cubre cambios en el nivel de base de datos para el módulo, y cubre la sección frontendlos archivos de interfaz de usuario.BackendPaso 1 crear instancia de módulo, crear tablas de base de datos y agregarlo al menúPaso 2 cuadras añadir UI para el módulo.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 (Asegúrese de crear un filtro de todo lo que es llamadoel filtro predeterminado)Paso 5 crear lista relacionados (para mostrar en la ficha '' más información '')Paso 6 ajuste de compartir las reglas de accesoPaso 7 Ajuste módulo herramientas opciones (es decir, Import/Export)FrontEndPaso 8 módulo crear directorio y archivosEmbalajePaso 9 envasesOpciones adicionales➔Módulo de plantillas (para personalizar la forma, vista de lista y configuración de interfaz de usuario)➔Ajustes del módulo (que permiten a los administradores configurar el módulo)➔Módulo de eventos (sólo disponible en vtiger CRM versión 5.1)➔Módulo de Webservices (sólo disponible en vtiger CRM versión 5.1)Estos pasos se explican en detalle en el curso de esta sección.Estamos utilizando el módulo de ejemplo 'Nómina' para explicar el uso de vtlib API.Sobre el módulo de nóminaTendrá la capacidad para crear, editar, eliminar los registros de nómina. Puede crear filtros personalizados para el Listview,que muestra la lista de instancias de nómina.

Page 39: vtlib espanol traduccion.docx

¿Asociamos este módulo con el menú Herramientas.vtlibPaso 1: Creación de móduloClase Vtiger_Module proporciona una API para trabajar con módulos de vtiger CRM.include_once('vtlib/vtiger/Module.php');$moduleInstance = new Vtiger_Module();$moduleInstance -> nombre = 'Nómina';$moduleInstance -> save();$moduleInstance -> initTables();$menuInstance = Vtiger_Menu::getInstance('Tools');$menuInstance -> addModule($moduleInstance);Vtiger_Module -> initTables() API inicializará (crear) las tablas necesarias 3 un módulo debetienen como se explica más abajo:Convención de denominación Descripción de la tablaBaseTable vtiger_ < MODULENAME > contiene los campos por defecto para el nuevo móduloCustomTable vtiger_ < MODULENAME > cf contiene campos personalizados del móduloGrouptable grouprel vtiger_ < MODULENAME > se utiliza cuando los registros se asignan a un grupoVtiger_Menu -> addModule (< ModuleInstance >) API creará el elemento de menú que sirve como interfaz de usuariopunto de entrada del módulo.vtlibPaso 2: Crear bloque (en forma de interfaz de usuario)Clase Vtiger_Block proporciona API para trabajar con un bloque del módulo, el recipiente que contiene los camposjuntos.El ejemplo dado continuación describe la manera de crear nuevos bloques para el módulo 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 unmódulo.vtlibPaso 3: Agregar camposClase Vtiger_Field proporciona API para trabajar con un campo de módulo, cuáles son los elementos básicos quealmacenar y visualizar los datos de registro del módulo.En el ejemplo siguiente describe la manera de crear nuevo campo para el módulo 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;

Page 40: vtlib espanol traduccion.docx

$fieldInstance -> typeofdata = ' V ~ M';$blockInstance -> addField($fieldInstance);Nota: El nombre de fieldInstance es un valor obligatorio ajustarse antes de guardar / añadir al bloque.Otros valores (si no establece) están en Mora como se explica a continuación:$fieldInstance -> basetable del módulo de mesa$fieldInstance -> columna $fieldInstance -> nombre en minúsculas.[La mesa se verá alterada mediante la adición de la columna si no está presente.$fieldInstance -> columntype VARCHAR (255)$fieldInstance -> uitype 1$fieldInstance -> typeofdata V ~ O$fieldInstance -> etiqueta $fieldInstance -> nombre[Asignación de entrada debe estar presente en el archivo de módulo 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 rápida de crear1 – desactivar el campo en forma rápida de crear$fieldInstance -> masseditable 0 – campo Disallow permanentemente para la edición masiva (5.1.0 en adelante)1 – permiten campo para masa edición (en adelante 5.1.0)2 – no permitir campo para la edición de masa (puede ser puesta a disposición utilizando LayoutEditor 5.1.0 en adelante)vtlibIdentificador de entidadUno de los campo obligatorio debe configurarse como identificador de entidad del módulo una vez que se crea. Este campose utilizará para mostrar los detalles en 'Últimas entradas visitaron' etc....$moduleInstance -> setEntityIdentifier($fieldInstance);Lista desplegable establecer valoresSi el campo es de tipo lista desplegable (uitype 15, 16, 33, 55, 111) entonces usted puede configurar los valores inicialesusando la API siguiente:$fieldInstance -> setPicklistValues (Array ('Value1', 'Value2'));Configurar el módulo relacionadoSi el campo es de tipo select Popup (uitype = 10), puede configurar los módulos relacionados que podríaseleccionarse mediante Popup usando la API siguiente:$fieldInstance -> setRelatedModules (Array ('OtherModule1', 'OtherModule2'));Para desactivar el módulo relacionado se puede utilizar la siguiente API:$fieldInstance -> unsetRelatedModules(Array('OtherModule2'));vtlibInformación de sistema de ayudaProporcionar ayuda información para campo módulo 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';

Page 41: vtlib espanol traduccion.docx

...$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 información 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:vtlibNota: A continuación es el fragmento de código que se debe agregar a la EditView.php del módulo existente ahabilitar la compatibilidad con icono de ayuda.// ...Recopilar la información de ayuda asociada con campos$smarty -> asignar ('FIELDHELPINFO', vtlib_getFieldHelpInfo($currentModule));FINAL// ...Si ($focus -> modo == 'editar') $smarty -> display('salesEditView.tpl');más $smarty -> display('CreateView.tpl');Se recomienda:➢Proporcionar una correlación de traducción para el helpinfo se utiliza para un campo.Ejemplo establecer el helpinfo como HELP_FILEDNAME_INFO y proporcionar el contenido enel archivo de idioma.$fieldInstance -> setHelpInfo('HELP_FIELDNAME_INFO');En el módulo / < MODULENAME > /language/en_us.lang.php$mod_strings = array ()...'HELP_FIELDNAME_INFO' = > ' Fieldname ayuda debe ser el contenido aquí'...);➢Evitar saltos de línea 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 más detalles puede vincular auna página externa como se muestra en el ejemplo siguiente:Llene su nombre contactos aquí. Para saber más sobre lo < br >< a href = 'http://en.vtiger.com/wiki.html' > ver más < /a >vtlibEstablezca la propiedad MassEditNota: Masa Editar función está disponible desde vtiger 5.1 en adelanteUsted puede hacer el campo disponible para su utilización masiva edición las maneras siguientes que se describe a continuación: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);

Page 42: vtlib espanol traduccion.docx

El valor establecido para masseditable propiedad tiene el siguiente significado:Valor Descripción0 no disponible para la edición masiva y esta propiedad no se puede controlar por el usuario.1 disponible para editar masa2 no disponible para la edición masiva pero la propiedad puede ser controlada por el usuario (mediante el administrador de diseño, etc.)vtlibPaso 4: Crear filtrosClase Vtiger_Filter proporciona API para trabajar con vista personalizada de un módulo o filtro. Mostrar la listase controla mediante estos filtros.En el ejemplo siguiente describe la manera de crear nuevo filtro para el módulo:include_once('vtlib/vtiger/Module.php');$filterInstance = new Vtiger_Filter();$filterInstance -> nombre = 'Todos';$filterInstance -> isdefault = true;$moduleInstance -> addFilter($filterInstance);Configurar camposPara 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 debería aparecer en la vista de lista.Reglas de configuraciónUna vez que se agrega el campo filtrar te puede fijar la regla (condición) para filtrado así como mediante lalas siguientes API:$filterInstance -> addRule ($fieldInstance, $comparator, $compareValue,$columnIndex);Donde comparador podría ser uno de los siguientes:ES IGUAL ANOT_EQUALSSTARTS_WITHENDS_WITHCONTIENEDOES_NOT_CONTAINSLESS_THANGREATER_THANLESS_OR_EQUALGREATER_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 condición de regla.vtlibPaso 5: Listas relacionadasUn módulo podría estar asociado con varios registros de otro módulo que aparece debajoPestaña "Más información" en vista de detalle.El ejemplo dado continuación describe la manera de crear a una relación entre un módulo de nómina y cuentas:include_once('vtlib/vtiger/Module.php');$moduleInstance = Vtiger_Module::getInstance('Payslip');$accountsModule = Vtiger_Module::getInstance('Accounts');$relationLabel = 'Cuentas';$moduleInstance -> setRelatedList)

Page 43: vtlib espanol traduccion.docx

$accountsModule, $relationLabel, Array('ADD','SELECT'));Con esto usted puede agregar una o más cuentas a los registros de nómina.A la relación entre el uso de módulos lo siguiente:$moduleInstance -> unsetRelatedList($targetModuleInstance);Acerca de setRelatedList APIVtiger_Module -> setRelatedList (< TARGET MODULE > [, < HEADER etiqueta >, < permitido acciones >,< CALLBACK función nombre >]);nombre < blanco módulo > a qué relación está siendo configuración.< HEADER etiqueta > opcional (por defecto = < TARGET MODULE >)Etiqueta para usar más la información relacionada con vista.< permitido acciones > opcional agregar o seleccione (default = false)¿Qué botones deben mostrarse en la vista lista relacionada al tiempo que añaderegistros.< nombre de la función de devolución de llamada > opcional (por defecto = get_related_list)La función debe ser definida en la clase de < módulo fuente >.Esto debería 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 relación entre el móduloregistros. Módulos estándar disponibles en vtiger CRM encarga de la relación en tablas separadas y realiza laSe unen para buscar datos específicos de cada módulo.Esto es un intento de lograr comportamiento genérico. Puedes escribir personalizada llamada vuelta relacionados con funciones para manejarconsultas de lista que satisfagan sus necesidades.vtlibLimitacionesSiguientes limitaciones para la lista relacionados con APIs1. variables de clase módulo estándar no se fijan como es requerido por el módulo de vtlib get_related_list API.La gestión de casos debe ser manejada @function vtlib_setup_modulevars en include/utils/VtlibUtils.php2. get_related_list API agregada a la clase de módulo no maneja unirseen las mesas donde algunos módulos como (cuentas) almacenar información por lo tanto, no son los detalles completosbuscar en la vista lista relacionados.(Clasificación de ejemplo en el campo de la ciudad en vista de lista relacionados fallará si dieOnError es true)vtlibPaso 6: Compartir las reglas de accesoConfiguración de acceso compartido para el módulo puede realizarse como se muestra a continuación:En el ejemplo siguiente describe la forma de configurar el módulo de nómina como privadoinclude_once('vtlib/vtiger/Module.php');$moduleInstance = Vtiger_Module::getInstance('Payslip');$moduleInstance -> setDefaultSharing('Private');La < PERMISSION_TYPE > puede ser una de las siguientes opciones:Public_ReadOnlyPublic_ReadWritePublic_ReadWriteDelete

Page 44: vtlib espanol traduccion.docx

PrivadovtlibPaso 7: Módulo herramientasCaracterísticas como la importación, la exportación se denominan como herramientas del módulo. Estas herramientas pueden habilitarse o deshabilitan comose muestra a continuación:En el ejemplo siguiente describe la forma de activar y desactivar las herramientas para el módulo de nóminainclude_once('vtlib/vtiger/Module.php');$moduleInstance = Vtiger_Module::getInstance('Payslip');$module -> enableTools (Array ('Import', 'Exportar'));$module -> disableTools('Export');vtlibPaso opcional: Módulo eventosConcurso completo API se sustenta del vtiger 5.1 en adelante (leer más).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 módulo, utilice lo siguiente:include_once('vtlib/vtiger/Event.php');Vtiger_Event::Register ('< MODULENAME >', '< EVENTNAME >','< HANDLERCLASS >', '< HANDLERFILE >');< MODULNAME > módulo para lo cual deben registrar eventos< EVENTNAME > vtiger.entity.aftersavevtiger.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 después de salvar.Si (Vtiger_Event::hasSupport()) {}Vtiger_Event::Register)'Nómina', 'vtiger.entity.aftersave','PayslipHandler', 'modules/Payslip/PayslipHandler.php');Vtiger_Event::Register)'Nómina', 'vtiger.entity.beforesave','PayslipHandler', 'modules/Payslip/PayslipHandler.php');}modules/Payslip/PayslipHandler.php<? phpclase PayslipHandler amplía {VTEventHandler}función handleEvent ($eventName, $data) {}Si ($eventName == 'vtiger.entity.beforesave') {}Entidad está a punto de ser salvado, tomar acción requerida}Si ($eventName == 'vtiger.entity.aftersave') {}Entidad ha sido salvado, tomar acción siguiente}}}?>

Page 45: vtlib espanol traduccion.docx

vtlibPaso opcional: Módulo WebservicesWebServices API se sustenta del vtiger 5.1 en adelante (leer más).Usted necesitará invocar la configuración API para habilitar el soporte para los módulos personalizados.include_once('vtlib/vtiger/Module.php');$moduleInstance = Vtiger_Module::getInstance('Payslip');$moduleInstance -> initWebservice();Nota: Cuando se importa el módulo de la API de inicializar Webservice se invoca automáticamente.vtlibPaso opcional: Módulo plantillasSi desea personalizar la vista de lista o tener una página de configuración personalizada para el módulo, entoncesUsted necesitará crear una plantilla Smarty en consecuencia. Usted necesitará tener algún conocimiento deUso de Plantillas Smarty yuu antes de proceder.Sus archivos de plantilla de módulo específicos 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'));vtlibPaso opcional: Enlaces personalizadosSe puede añadir enlace web personalizado para el módulo 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ú "Más acciones" en la vista de detalle del registro.DETAILVIEWBASIC: Agregará un vínculo a la lista de 'Acciones' en la vista de detalle del registro.DETAILVIEWWIDGET: Se añade un widget en el lado derecho de la vista de detalle de laRegistro, similar al widget de la nube de etiquetas.LISTVIEW: Agregará un enlace bajo el botón de "Más acciones" en la vista de lista de un módulo.LISTVIEWBASIC: Añadir un botón en la vista lista del módulo similar a borrar, masaBotones de edición.LinkLabel etiqueta a utilizar para el enlace al MostrarLinkURL URL del enlace. Puede utilizar variables como $variablename$En la página del módulo ListView controlador (modules/Payslip/ListView.php) tendrá este fragmento de código(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 página del módulo DetailView controlador (modules/Payslip/DetailView.php) tendrá este pedazo decódigo (antes de la llamada a $smarty -> display()):

Page 46: vtlib espanol traduccion.docx

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 valoresa través de DetailView.phpEl $MODULE$, $ACTION$, variables de $ $CATEGORY en el LinkURL, será reemplazado por el conjunto de valoresa través de ListView.phpvtlibA continuación es un ejemplo que agrega un enlace a la DetailView del módulo.include_once('vtlib/vtiger/Module.php');$moduleInstance = Vtiger_Module::getInstance('Payslip');$moduleInstance -> (addLink'DETAILVIEW',"Nueva acción",' index.php?module=OtherModule & acción = haga & src_module = $MODULE$ & src_record = $RECORD$ ');En la página DetailView encontrará que más acciones de enlace. Cuando ratón cierne sobre este toda la costumbre relacionadaenlaces aparecerá como una gota abajo. Vea la captura de pantalla siguiente:LinkType especialLinkTypes siguientes se tratan especialmente mientras que procesa para la exhibición:Descripción LinkTypeHEADERSCRIPT el enlace será tratado como un tipo de javascript y se importarán en la sección head della página de salida HTML como < script tipo = ' text/javascript' src = 'linkurl' >< / script >HEADERCSS el enlace será tratado como un tipo CSS y se importarán en la sección principal de laPágina de salida HTML como < link rel = "stylesheet" type = ' text/css' href ='linkurl >HEADERLINK puedes ver estos enlace agrupados bajo más en el panel de encabezado superior.Es útil si desea proporcionar herramientas utitlity como Bookmarklet, etc.vtlibGuión terminado final (Backend)Aquí está el guión completo (vtlib.Test.Create.Module1.php) que crea el módulo de nómina<? phpActivar depuración nivel$Vtiger_Utils_Log = true;include_once('vtlib/vtiger/menu.php');include_once('vtlib/vtiger/Module.php');Crear instancia de módulo y guárdelo primero$module = new Vtiger_Module();$module -> nombre = 'Nómina';$module -> save();Inicializar todas las tablas necesarias$module -> initTables();/**

Page 47: vtlib espanol traduccion.docx

* Crea la siguiente tabla:* vtiger_payslip (payslipid INTEGER)* vtiger_payslipcf(payslipid INTEGER PRIMARY KEY)* vtiger_payslipgrouprel ((payslipid INTEGER PRIMARY KEY, groupname VARCHAR(100))*/Añadir el módulo al menú (punto de entrada de interfaz de usuario)$menu = Vtiger_Menu::getInstance('Tools');$menu -> addModule($module);Añadir el módulo básico$block1 = new Vtiger_Block();$block1 -> etiqueta = 'LBL_PAYSLIP_INFORMATION';$module -> addBlock($block1);Añadir 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 módulo$module -> setEntityIdentifier($field1);$field2 = new Vtiger_Field();$field2 -> name = 'PayslipType';$field2 -> etiqueta = 'Nómina tipo';$field2 -> columntype = 'Varchar';$field2 -> uitype = 15;$field2 -> typeofdata = ' V ~ O'; / / Varchar ~ opcional$block1 -> addField($field2); / ** tabla y columna se establecen automáticamente * /$field2 -> setPicklistValues (Array ('Empleado', 'Aprendiz'));$field3 = new Vtiger_Field();$field3 -> nombre = 'Mes';vtlib$field3 -> uitype = 23;$field3 -> typeofdata = había ~ 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'));

Page 48: vtlib espanol traduccion.docx

/ ** Campos comunes que deberían estar en cada módulo, vinculado a la mesa de núcleo 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 más$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 módulos para este módulo * /$module -> setRelatedList(Vtiger_Module::getInstance('Accounts'), 'Cuentas',Array('ADD','SELECT'));/ ** Establece compartir acceso de este módulo * /$module -> setDefaultSharing('Private');

Page 49: vtlib espanol traduccion.docx

/ ** Activar y desactivar las herramientas disponibles * /$module -> enableTools (Array ('Import', 'Exportar'));$module -> disableTools('Merge');?>vtlibEjecutar el Script de creación de módulo1. para ejecutar el vtlib.Test.Create.Module1.php script, abiertohttp://localhost/vtigerCRM/vtlib.test.html2. Haga clic en crear nómina módulo para creación de pruebas de módulo de nóminavtlibPaso 8: Crear ficheros del módulo (Frontend)Cada nuevo módulo debe tener un directorio bajo módulos / carpeta. Para ayudar a acelerar el módulocreación de código, vtlib viene liado con la estructura del esqueleto módulo basado en el módulo 'Nómina'.Este código se incluyen en la carpeta vtlib/ModuleDir que se puede utilizar como plantilla para nuevo módulo quese crea. Contiene archivos de origen que necesita ser cambiado como se explica más abajo.Nota: ModuleDir tiene subdirectorios específicos a la versión vtiger, por favor, asegúrese de usar la indicada.1. copia ModuleDir / < target_vtiger_version > contenido al recién creados módulos / < NewModuleName >carpeta.2. rename < NewModuleName > /ModuleFile.php como < NewModuleName > / < NewModuleName > .php(como se indica en la tabla a continuación)3. cambiar el nombre de /ModuleFileAjax.php < NewModuleName > como< NewModuleName > / < NewModuleName > Ajax.php4. rename < NewModuleName > /ModuleFile.js a < NewModuleName > / < NewModuleName > .js5. edit < NewModuleName > / < NewModuleName > .phpa) cambiar el nombre de clase ModuleClass a < NewModuleName >b) actualizar $table_name y $table_index (módulo nombre y tabla índice columna de la tabla)c) actualización $groupTabled) actualización $tab_name, $tab_name_indexe) actualización $list_fields, $list_fields_name, $sortby_fields, $list_link_fieldf) actualización $detailview_linksg) actualización $default_order_by, $default_sort_orderh) actualización $required_fieldsi) actualización $customFieldTablej) cambie el nombre de función ModuleClass a la función < NewModuleName > [esta es la clase del Constructor]Nota: Otros archivos bajo módulos / < NewModuleName > no necesita ser cambiado.Ejemplo de fichero ModuleDir propósito bajo nóminaindex.php entrada módulo punto a través de menú index.phpArchivo de definición de la clase de módulo ModuleFile.php. Payslip.phpArchivo de ModuleFileAjax.php Base para acciones ajax utilizado bajo control Listview etc.... PayslipAjax.phpFunción de javascript específico del módulo de ModuleFile.js puede ser escrita aquí Payslip.jsControlador de vista de detalle de información más CallRelatedList.php CallRelatedList.phpVista de CustomView.php personalizado o controlador de filtro CustomView.phpControlador de registro borrado Delete.php módulo Delete.php

Page 50: vtlib espanol traduccion.docx

Controlador de vista detalle DetailView.php DetailView.phpVista de detalle DetailViewAjax.php ajax editar controlador DetailViewAjax.phpControlador de vista EditView.php Edit EditView.phpControlador de exportación récord de módulo ExportRecords.php ExportRecords.phpImportación de registros Import.php módulo controlador Import.phpControlador de vista lista ListView.php ListView.phpControlador de selección popup.php emergente de este registro de módulo Popup.phpControlador de creación rápida de QuickCreate.php QuickCreate.phpRegistro Save.php módulo salvar controlador Save.phpvtlibEjemplo de fichero ModuleDir propósito bajo nóminaControlador de nube TagCloud.php Tag TagCloud.phpupdateRelations.php lista relacionados con registro controlador (guardar/borrar) updateRelations.phpArchivos específicos a la versión vtiger 5.1.0.Ejemplo de fichero ModuleDir propósito bajo nóminaMassEdit.php controlador de masa Record Edit MassEdit.phpControlador de masa editar registro Save MassEditSave.php MassEditSave.phpFindDuplicateRecords.php controlador de encontrar registros duplicados FindDuplicateRecords.phpControlador de proceso registros duplicados (fusión) ProcessDuplicates.php ProcessDuplicates.phpListViewPagging.php controlador de lista vista paginación ListViewPagging.phpControlador de búsqueda Global de UnifiedSearch.php UnifiedSearch.phpArchivos para ser actualizado para un módulo de vtlib construcción en versión 5.1.0, para hacerlo funcionar en 5.2.0 (de vtlib /ModuleDir/5.2.0):Ejemplo ModuleDir propósito del archivo de actualización en nóminaCallRelatedList.php relacionados con la lista ver cambios CallRelatedList.phpDetailViewAjax.php relacionados con la lista ver cambios DetailViewAjax.phpListView.php orden por tema fijada y generador de consultas de apoyo ListView.phpSoporte de generador de consultas de ModuleFile.php Payslip.phpPreparación del archivo de idiomaActualización de la cartografía de traducción en el fichero de idioma de módulo(módulos / < NewModuleName > / language/en_us.lang.php)Algunas de la asignación obligatoria que debe ser proporcionada son como sigue:$mod_strings = array ()'NewModuleName' = > 'NewModuleName_Translation','SINGLE_NewModuleName' = > 'NewModuleNameForSingleRecord','LBL_CUSTOM_INFORMATION' = > 'Información personalizada',Etiqueta usada para su campo módulo'FieldLabel' = > 'Campo etiqueta traducción');vtlibNuevo módulo TourVista de listaCrear vistavtlibVista de detalleVista de listavtlibCompartir acceso

Page 51: vtlib espanol traduccion.docx

Campos personalizadosvtlibPaso 9: empaquetadoPaquete exportaciónvtlib proporciona API para exportar módulo como un archivo zip (paquete) que puede utiliza para la importación a través deMódulo Manger.require_once('vtlib/vtiger/package.php');require_once('vtlib/vtiger/Module.php');$package = new Vtiger_Package();$package -> Exportar ('Instancia del módulo del < >', '< destino DIR >', '< archivo zip ' nombre >, < directaDESCARGAR >);< módulo 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 después 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',' Nómina-Export.zip',verdadero);Nota: Asegúrese de prueba/vtlib directorio existe bajo el directorio raíz vtigercrm y es modificable.vtlibEstructura del paqueteEl archivo zip exportado (paquete) tiene la siguiente estructura:Manifest.xmlmódulos /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>

Page 52: vtlib espanol traduccion.docx

<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>

Page 53: vtlib espanol traduccion.docx

</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>< condición ><![CDATA [modulename en ['MODULENAME']]] >< / condición >< / evento >< / eventos >< / módulo >vtlibPaquete importaciónPuede importar un módulo de archivo del paquete (zip) usando la siguiente APIrequire_once('vtlib/vtiger/package.php');$package = new Vtiger_Package();$package -> import (< archivo zip módulo >, < sobrescribir >);< módulo archivo zip > módulo de archivo zip (paquete).< Sobrescribir > (opcional: Default = false)Sobrescribir el actual directorio del módulo si está presenteNota: sobrescribir bandera se ignora actualmente. Será ejecutado en el futuro.Por favor, asegúrese de comprobar directorio inexistente antes de importar.El archivo del paquete debe validarse antes de importar cual puede hacerse usando la siguiente APIrequire_once('vtlib/vtiger/package.php');$package = new Vtiger_Package();$package -> checkZip (< módulo archivo zip >);< módulo archivo zip > módulo de archivo zip (paquete).checkZip devuelve true si es la estructura del paquete en archivo zip especificada en la sección paqueteExportación anterior.Nombre del módulo detección siendo importadorequire_once('vtlib/vtiger/package.php');$package = new Vtiger_Package();

Page 54: vtlib espanol traduccion.docx

$package -> getModuleNameFromZip (< módulo archivo zip >);< módulo archivo zip > módulo 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 módulo no es válido!";} if más ({Vtiger_Module::getInstance($module))}echo "$module ya existe!";$module_exists = true;} {if(is_dir("modules/$module")) másecho "$module carpeta existe! Sobrescribir? ";$module_dir_exists = true;}Si ($module_exists == false & & $module_dir_exists == false) {}$package -> import('test/vtlib/Payslip.zip');}vtlibActualización de paqueteNota: Actualmente esta función Actualización del módulo no admite cancelación y modificación de salir del módulocampos. Antes de utilizar esta función, por favor asegúrese de tu módulo modificado no cambiar o borrar los existentescampos.Puede actualizar un módulo 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 módulo >, < sobrescribir >);< ModuleInstance > Vtiger_Module instancia que necesita actualizarse.< módulo archivo zip > módulo de archivo zip (paquete).< Sobrescribir > (opcional: Default = true)Sobrescribir el actual directorio del módulo si está presenteEjemplo: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');Limitations1. 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 thepackage file through manifest.xmlvtlibExtension Module

Page 55: vtlib espanol traduccion.docx

Module Manager lets you install an extension module provided the manifest.xml (in package) hasthe 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 extensionname Mandatory Module name (should not contain spaces or special characters)etiqueta etiqueta obligatoria utilizado para mostrar en la interfaz de usuarioMenú opcional para que este módulo tiene que fijarse los padresdependencias(vtiger_version)Versión obligatoria para que el paquete está diseñado paraMesas Mesas opcional que necesita ser creada durante la instalación del móduloeventos opcional que necesita ser registrado durante la instalación del móduloArchivo de paqueteSe recomienda la siguiente estructura de archivo para paquete de módulo de extensión (archivo zip).Manifest.xmlmódulos /MODULENAME /idioma /en_US.lang.phpindex.php< otros ficheros del módulo >plantillas /< plantillas smarty >vtlibPaquetes

Page 56: vtlib espanol traduccion.docx

Module Manager le permite instalar paquetes siempre el manifest.xml (en paquete) tiene los siguientesinformación. Esta característica está disponible desde vtiger CRM 5.2.0 en adelante solamente.Manifest.xml<? xml version = "1,0" encoding = "utf-8"? >módulo de < >< nombre > MODULENAME < / nombre >< versión > 1.0 < / versión >< 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 >< / módulo >modulebundle obligatorio debe tener el valor truenombre del módulo obligatorio (que no contienen espacios ni caracteres especiales)dependencias(vtiger_version)Versión obligatoria para que el paquete está diseñado paramodulelist lista opcional de los módulos que forman parte del paquete con su nombre,secuencia de instalación y el nombre del archivoArchivo de paqueteSe recomienda la siguiente estructura de archivo para el paquete de paquetes (archivo zip).Manifest.xmlMODULENAME_1.zipMODULENAME_2.zip...vtlibPaquete de idiomaModule Manager le permite instalar paquetes de idioma para la instalación de vtiger CRM. La lenguapaquete debe seguir la estructura del paquete, como se explica a continuación:Manifest.xml<? xml version = "1,0" encoding = "utf-8"? >módulo de < >idioma < tipo > < / tipo >< nombre > Inglés < / nombre >etiqueta < > Inglés < / label >en_us < prefijo > < / prefijo >< versión > 1.0 < / versión >

Page 57: vtlib espanol traduccion.docx

< dependencias >5.1.0 < vtiger_version > < / vtiger_version >< / dependencias >< / módulo >tipo obligatoria debe tener el lenguaje del valornombre opcional Language pack completoetiqueta etiqueta obligatoria para identificar el idioma de la interfaz de usuario (en la página de inicio de sesión)Prefijo obligatorio utiliza el prefijo de nombre de archivo para el archivo de idioma.Se extraerá solamente estos archivos desde el archivo del paquete duranteinstalación.dependencias(vtiger_version)Mandatory Version for which the package is intended for.Package FileThe following file structure is recommended for extension language package (zip file).manifest.xmlmodules/Accounts/language/<prefix>.lang.phpContacts/language/<prefix>.lang.phpLeads/language/<prefix>.lang.php...vtlibAdding LicenseThe manifest.xml of the package can contain license information which will be displayed to userduring Module Manager installation process. You will need to add <license> node in themanifest.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>

Page 58: vtlib espanol traduccion.docx

<version>1.0</version><dependencies><vtiger_version>5.0.4</vtiger_version></dependencies><license><file>LICENSEFILE</file></license>...</module>vtlibAdding Migration DetailsModule Manager supports upgrade of modules built with vtlib. In some cases, custom schemachanges 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 migrationare applied. In such cases, you can add the migration information in your manifest.xml asdescribed 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 COLUMNNewColumn INT]]></sql></table></tables></migration><migration version='1.1'><tables><table><name>TABLE-NAME</name><sql><![CDATA[UPDATE MyTable SET NewColumn=1 WHERENewColumn is NULL]]></sql></table></tables></migration></migrations><tables><table><name>TABLE-NAME</name><sql><![CDATA[CREATE_TABLE_SQL]]></sql></table>

Page 59: vtlib espanol traduccion.docx

</tables>...</module>NOTE: The above snippet of manifest.xml is for version 1.2 of a module. It contains migration informationpara la versión 1.0 y 1.1vtlibDetalles del nodo migración< versión migración = '1.0'... Esta versión indica que la versión de la fuente (antesversión) para que la migración debe ser aplicada.Mesas de < >< table >< nombre >.< sql >...Nombre de la tabla para migrar.SQL a utilizar para la migración.vtlibModule ManagerUna vez instalado vtlib, proporciona al Module Manager herramienta de configuración de configuración. Con estopuede habilitar, deshabilitar o controlar la configuración de los módulos de vtiger CRM. En la desactivación de un módulo, noaparecerá en el menú y el acceso está restringido (incluido el administrador).Los módulos están categorizados como estándar (que se suministran como una parte fundamental de vtiger CRM), yCostumbre (que ha importado o creado)vtlibDesactivación de móduloPuede deshabilitar módulo haciendo clic en el icono de interrogación tick verde.Módulo que permitePuede habilitar el módulo haciendo clic en el icono de interrogación rojo tick.vtlibMódulo de exportaciónHaga clic en el icono de flecha para arriba en el administrador del módulo, que exportará el módulo en un archivo zip.vtlibMódulo de importaciónGerente de módulo le permitirá importar nuevos módulos. Siga los pasos indicados a continuación:Haga clic en el botón importar nuevoSeleccione el archivo zip (paquete) de módulo que previamente fue exportado o creado.vtlibVerificar los detalles de importación analizan desde el archivo zip. Haga clic en sí para continuar o No para cancelar.Haga clic en finalizar para completar la importación del módulo.vtlibNota: Si usted está intentando importar un módulo que ya existe un directorio que está presente en elmódulos de la carpeta se verá el siguiente mensaje.vtlibAjustes específicos del módulo

Page 60: vtlib espanol traduccion.docx

Un módulo puede tener su propia configuración específica. En tales casos, debe crearse Settings.php bajola carpeta del módulo. Este archivo será invocado (si encuentran) cuando se hace clic en el icono de configuración.Ejemplo: Muestra Settings.php para el módulo de nómina<? php$thisModule = $_REQUEST ['formodule'];require_once('Smarty_setup.php');$smarty = new vtigerCRM_Smarty();Utilice el archivo de plantilla específica de módulomodules/Payslip/MySettings.tpl$smarty -> display (vtlib_getModuleTemplate ('Nómina', 'MySettings.tpl'));?>vtlibActualización del móduloAhora es posible a través de Module Manager actualizar el módulo a la próxima versión.Nota: Actualmente esta función Actualización del módulo no admite cancelación y modificación de salir del módulocampos. Antes de utilizar esta función, por favor asegúrese de tu módulo modificado no cambiar o borrar los existentescampos.Haga clic en el icono de actualización:Seleccione el nuevo archivo de paquete para el módulo:vtlibVerificar los detalles del paquete antes de actualizar:Finalmente se actualizarán su módulo:vtlibApéndice 1 - cambios en la APIvtlib 2.0 contiene cambios en las API anteriores en versión 1.x. Las nuevas API son másmodular y se adhieren al modelo OOD.Explicamos los cambios más abajo.Creación de móduloUsando vtlib 1.xVtiger_Tab::Create ('Nómina', 'Nómina', '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 = 'Nómina';$moduleInstance -> save();$moduleInstance -> initTables();$menuInstance = Vtiger_Menu::getInstance('Tools');$menuInstance -> addModule($moduleInstance);Crear bloqueUsando vtlib 1.xVtiger_Block::Create ('Nómina', 'LBL_PAYSLIP_INFORMATION');Usando vtlib 2.x$blockInstance = new Vtiger_Block();$blockInstance -> etiqueta = 'LBL_PAYSLIP_INFORMATION';

Page 61: vtlib espanol traduccion.docx

$moduleInstance -> addBlock($blockInstance);vtlibCreación de campoUsando vtlib 1.x$fieldInstance = new Vtiger_Field();$fieldInstance -> set ('module', 'Nómina')-> 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 ajusteUsando vtlib 1.x$fieldInstance -> set ('entityidfield', 'payslipid')-> set ('entityidcolumn', 'payslipid');$fieldInstance -> setEntityIdentifier();Usando vtlib 2.x$moduleInstance -> setEntityIdentifier($fieldInstance);Lista desplegable establecer valoresUsando vtlib 1.x$fieldInstance -> setupPicklistValues (Array ('Empleado', 'Aprendiz'));Usando vtlib 2.x$fieldInstance -> setPicklistValues (Array ('Empleado', 'Aprendiz'));vtlibCreación de filtroUsando vtlib 1.xVtiger_CustomView::Create ('Nómina', 'Todos', true);$cv = new Vtiger_CustomView ('Nómina', 'All');

Page 62: vtlib espanol traduccion.docx

$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 herramientasUsando vtlib 1.xVtiger_Module::disableAction('Payslip','Import');Vtiger_Module::enableAction ('nómina', 'Exportar');Usando vtlib 2.x$moduleInstance -> enableTools (Array ('Import', 'Unir'));$moduleInstance -> disableTools('Export');Configurar compartir accesoUsando vtlib 1.xVtiger_Module::setDefaultSharingAccess ('Nómina', 'Privado');Usando vtlib 2.x$moduleInstance -> setDefaultSharing('Private');vtlibApéndice 2 – cambios de esquemaAlgunas de la API vtlib hacen los cambios de esquema (o agregar una tabla nueva o una nueva columna atabla existente) son capturados los detalles en esta secciónMesa columna acción Descripciónvtiger_field helpinfo texto columnaAdiciónEsta columna va a almacenar el texto de ayuda asociadocon vtiger_fieldvtiger_language mesa además captura Idiomas instalados para vtiger CRMvtiger_links mesa además capta detalles de enlaces módulo personalizadoversión vtiger_tabNOMBREColumnaAdiciónVersión del módulo en el uso de la pista. Útil durantemigración o actualización del módulo.vtiger_tab_info tabla de adición captura algunas de las preferencias del módulo comomínimo versión apoyada, máximosoportados, etc.vtiger_crmentityrel mesa además capta a la relación entre los registros del módulo.Para el manejo de la lista genérica relacionados.vtiger_fieldmodulerel tabla adición capturas relacionadas con información de módulo para elcampo de uitype 10vtiger_mailer_queue mesa adiciones estas tablas se agregarán cuando Vtiger_Mailerclase usará para enviar mailsvtiger_mailer_queueinfo asincrónicamente.vtlibApéndice 3 – usando vtiger_imageurl APIHay imágenes reutilizables bajo la carpeta themes/images e imágenes específicas tema estará bajo

Page 63: vtlib espanol traduccion.docx

temas / < THEMENAME > / carpeta de imágenes.Usted puede dejar la imagen fácilmente configurable para cada tema, por favor asegúrese de seguir los pasosabajo: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 específica del temaSi directamente construir la interfaz de usuario de script PHP, asegúrate 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.phpvtlibApéndice 4 – vtlib_handler métodoMódulo clase debe definir vtlib_handler método para controlar eventos especiales desencadenados tal como se describeabajo:Descripción del tipo de eventoModule.postinstall una vez completada la importación del módulo.Module.preupdate antes de actualizar el módulo (paquete).Module.postupdate después de que se actualiza el módulo (paquete).Module.disabled cuando el módulo está deshabilitado.Module.Enabled cuando se activa el módulo.Module.preUninstall antes de que se elimina la instancia del módulo.Ejemplo:vtlib_handler función debe definirse como método módulo de clase./*** Se invoca cuando se realizan acciones especiales en el módulo.nombre del módulo string * @paramTipo de evento de cadena * @param*/la función vtlib_handler ($modulename, $event_type) {}Si ($event_type == 'module.postinstall') {}Manejar TODO el post acciones de instalación} más if ($event_type == 'module.disabled') {}TODO manejar las acciones cuando este módulo está deshabilitado.} más if ($event_type == 'module.enabled') {}TODO manejar las acciones cuando se habilita este módulo.} más if ($event_type == 'module.preuninstall') {}TODO manejar acciones cuando este módulo está a punto de ser eliminado.} más if ($event_type == 'module.preupdate') {}Acciones de manejar TODO antes de este módulo se actualiza.} más if ($event_type == 'module.postupdate') {}TODO manejar las acciones después de que este módulo se actualiza.}

Page 64: vtlib espanol traduccion.docx

}UseCaseCuando se deshabilita un módulo, a través de vtlib_handler ahora puede cancelar el registro de cualquier notificación de eventos si no espermitido otra vez.vtlibApéndice 5 – vtlib_listview javascript APIvtlib_listview javascript API proporciona la capacidad para registrar la función de detector para algunos predefinidostipos de eventos.vtlib_listview.Register (< EVENT_TYPE >, < HANDLER_FUNCTION >,[< HANDLER_FUNCTION_OPTIONAL_PARAMETERS >]);Cell.onmouseover cuando se mueve el ratón sobre la celda del control listview.Cell.onmouseout cuando el ratón se mueve fuera de la célula de listview.La función de controlador será invocada con dos conjunto de argumentos:Evento parámetros {}evento: < EVENT_TYPE >DomNode: nodo DOM HTML utilizado para detectar el eventomódulo: nombre del módulo al cual campo perteneceFieldName: nombre del camporecordID: ID de registro se muestran en el listview}Los parámetros opcionales es aquel que se ha pasado a la vtlib_listview.register APIEjemplo: Usted puede tener los siguientes en el archivo javascriptvtlib_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 módulos, usted necesitará configurar el javascript como HEADERSCRIPT(consulte la costumbre enlaces #Special LinkType)vtlibPreguntas frecuentes – preguntas frecuentes1. cómo escribir plantillas propias?Referencia: http://forums.vtiger.com/viewtopic.php?p=75410#75410Ahora quiero que mis propias plantillas. La documentación de VTLib afirma que hagoesto:Sus archivos de plantilla de módulo específicos Smarty deben ser creados bajoSmarty/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 ¿dónde puedo colocar este fragmento de código? ¿En el creador del módulo?Solución:Supongamos que desea crear su propio Listview para el módulo TestModule, lo que usted necesitahacer es la siguiente:1. crear el MyListview.tpl bajo Smarty/templates/modules/TestModule/MyListView.tpl2. en su modules/TestModule/Listview.php usted necesitará llamar la pantalla smarty como:

Page 65: vtlib espanol traduccion.docx

$smarty -> display (vtlib_getModuleTemplate ($currentModule, 'MyListview.tpl'));Por favor, consulte: http://www.smarty.net/manual/en/ para aprender más sobre el uso de Smarty.2. ¿cómo se utiliza la plantilla de módulo?Siguiente ejemplo explica cómo se procesa el módulo listview acción utilizando el sabelotodo.vtlib3. no se ve Module Manager!He instalado vtlib en vitger 5.0.4 que no puedo parece a ver al gerente del módulobajo configuración de cualquiera, hay un archivo o dir que necesito mover algunos donde¿orden para el administrador de módulo rellenar?Solución:●Permiten acceso de escritura a los módulos, Smarty, cron /,de prueba / directorio antes de descomprimirvtlib-x.y.zip●Borrar archivos de la carpeta Smarty/templates_c (con extensión *. tpl.php) y actualizarla página de configuración, deberías ver Module Manager.4. Consejos para el uso de nombres de campo1. preferiblemente utilizar pequeños personajes casos para campo (nombre y columnname).2. Evite cualquier caracteres especiales como (_, :,-) en los nombres. Se puede utilizar para las etiquetas3. teniendo el mismo valor de campo (nombre y columnname) hace más fácil evitarpara comenzar con la confusión.vtlib