This shows you the differences between two versions of the page.
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 lists, and 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 i 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 I 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. |