User Tools


Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:devel:createvtlibmodule [2017/11/21 18:27]
joebordes
en:devel:createvtlibmodule [2020/04/15 22:38] (current)
joebordes
Line 10: Line 10:
 ^Internal Name: | cbJustLogIt | ^Internal Name: | cbJustLogIt |
  
-**Repository**:​ create a repository to manage your module. For example, ​ https://GitHub.com/​tsolucio/​cbJustLogIt+**Repository**:​ create a repository to manage your module. For example, ​ https://github.com/​tsolucio/​cbJustLogIt
  
 Now we have to **define the fields**, their validations and their layout. I use a template that defines the block name followed by each field definition in the order I want them to appear on the screen. In this layout, I also indicate which field will be the record link identifier and any special functionality I need the fields to have. This looks like this Now we have to **define the fields**, their validations and their layout. I use a template that defines the block name followed by each field definition in the order I want them to appear on the screen. In this layout, I also indicate which field will be the record link identifier and any special functionality I need the fields to have. This looks like this
Line 32: Line 32:
 | rel_module | 1 | rel_module | Related Module | 2 | V~O | save the setype of the module rel_id if set in save_module | | rel_module | 1 | rel_module | Related Module | 2 | V~O | save the setype of the module rel_id if set in save_module |
 | | | | | | | | | | | | | | | |
-| donefrom | 1 | donefrom' ​| Done From | 2 | V~O | save $_SERVER['​REMOTE_ADDR'​] in save_module |+| donefrom | 1 | donefrom | Done From | 2 | V~O | save $_SERVER['​REMOTE_ADDR'​] in save_module |
 | | | | | | | | | | | | | | | |
 ^ Block: Custom information ^^^^^^^ ^ Block: Custom information ^^^^^^^
Line 46: Line 46:
   * how I accommodate space for the default fields   * how I accommodate space for the default fields
   * how I specify the modules supported by the uitype 10 capture field   * how I specify the modules supported by the uitype 10 capture field
 +  * **ALL** field and column names **MUST** be in lower case
  
 Next up are the **list view fields**. We have to choose from the fields above which ones will appear on the "​All"​ filter, which ones appear in the popup when we try to select a record from this module and also which fields appear on any related list this module may be related to. I simply indicate them like this Next up are the **list view fields**. We have to choose from the fields above which ones will appear on the "​All"​ filter, which ones appear in the popup when we try to select a record from this module and also which fields appear on any related list this module may be related to. I simply indicate them like this
Line 66: Line 67:
  
  
-Finally, we must **specify any additional functionality**. This is where we will explain cron jobs, event handlers and any special widgets or operations the module ​must have.+Finally, we must **specify any additional functionality**. This is where we will explain cron jobs, event handlers and any special widgets or operations the module ​will have.
  
 Reached this point we have a clear idea of everything we need to create our module and we can start coding. Reached this point we have a clear idea of everything we need to create our module and we can start coding.
 +
 +{{ :​en:​devel:​moduletemplate.zip |You can download a text template here}}
  
 The steps are The steps are
Line 94: Line 97:
 **3.4.-** Add the SQL to create the main table. **3.4.-** Add the SQL to create the main table.
  
-**3.4.1.-** This table must be the name of your module in lower case prefixed with "​vtiger_"​.+**3.4.1.-** This table must be the name of your module in **lowercase** ​prefixed with "​vtiger_"​.
  
-**3.4.2.-** It must contain the internal primary key which is the name of your module in lowercase followed by "​id"​+**3.4.2.-** It must contain the internal primary key which is the name of your module in **lowercase** followed by "​id"​
  
 **3.4.3.-** Add a field for all the fields in your module except the common _crmentity fields **3.4.3.-** Add a field for all the fields in your module except the common _crmentity fields
Line 108: Line 111:
 **3.7.-** Fill in the All filter fields **3.7.-** Fill in the All filter fields
  
-**3.8.-** Fill in the sharing access, default actions, related ​ lists and other special settings+**3.8.-** Fill in the sharing access, default actions, related listsand other special settings
  
-**4.-** Each module has a main file which defines ​it'​s ​class. This file was copied in step 1 and renamed in step 2. So we now have a file called:+**4.-** Each module has a main file that defines ​its class. This file was copied in step 1 and renamed in step 2. So we now have a file called:
  
-```+<​code>​
 modules/​cbJustLogIt/​cbJustLogIt.php modules/​cbJustLogIt/​cbJustLogIt.php
-```+</​code>​
  
 edit this main module file and change edit this main module file and change
Line 120: Line 123:
 **4.1.-** the module class name **4.1.-** the module class name
  
-**4.2.-** replace **MODULE_NAME_LOWERCASE** with the lowercase internal name of your module+**4.2.-** replace **MODULE_NAME_LOWERCASE** with the **lowercase** internal name of your module
  
 **4.3.-** replace **MODULE_REFERENCE_FIELD** with the name of your modules'​ reference field **4.3.-** replace **MODULE_REFERENCE_FIELD** with the name of your modules'​ reference field
Line 143: Line 146:
 Now you are ready to install and test. Use the build/​HelperScripts/​installmodule.php script. Now you are ready to install and test. Use the build/​HelperScripts/​installmodule.php script.
  
-Before installing I like to make a dump of the database so I can easily recover if made a mistake and try again. Normally the errors appear in the manifest field definitions,​ typical copy paste errors.+Before installing I like to make a dump of the database so I can easily recover if made a mistake and try again. Normally the errors appear in the manifest field definitions,​ typical copy-paste errors.
  
 In order to be able to send this module to any coreBOS, you have to set up a specific structure. In order to be able to send this module to any coreBOS, you have to set up a specific structure.