This section describes how custom data entry pages are created.
What does this section cover?
Create Custom Data Entry Pages
For an introduction to data entry pages, go to Data Entry Pages.
Create New Data Entry Pages
To create a new data entry page, you need to create two XML files: a layout file and a definition file, in your custom projects directory under ../pages/dataEntry/<module_name>.
The custom data entry definition file for the new page must have a unique file path.
The custom data entry layout file for the new page must follow this naming convention: <definition_page_filename>layout.xml. More than one layout files can exist per data entry definition page. In such cases, a default data entry layout file per database must be defined in templates properties file (templates.properties)
New Data Entry Page Example
<?xml version="1.0" encoding="UTF-8"?><page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xsd/dataEntry.xsd">
<id>jobs/status</id>
<name>key_status</name>
<module>JOBS</module>
<functioncall>
<functions>
<function>
</function>
</functions>
</functioncall>
<datasources>
<datasource>
<key>form</key>
<classname>com.crm.web.generator.datasource.DTODatasource</classname>
</datasource>
</datasources>
<mainmenu>
<components>
<component>
<id>cmpHome</id>
<name>key_home</name>
<visiblemodes>read</visiblemodes>
<elements>
<button>
<id>btnHome</id>
<name>key_home</name>
<setmode>read</setmode>
<refresh>page</refresh>
<url>page.do?act=summary&xml=jobs/statuses</url>
</button>
</elements>
</component>
<component>
<id>cmpNew</id>
<name>key_new</name>
<visiblemodes>read</visiblemodes>
<elements>
<button>
<id>btnNew</id>
<name>key_new</name>
<setmode>new</setmode>
<refresh>page</refresh>
<functioncall>
<functions>
<function>
<type>ejb</type>
<classname>ejb/COMPANYCRMUIJobStatus</classname>
<functionname>createButton</functionname>
<resultaction>replace</resultaction>
<datatype>root</datatype>
</function>
</functions>
</functioncall>
</button>
</elements>
</component>
<component>
<id>cmpEdit</id>
<name>key_edit</name>
<visiblemodes>read</visiblemodes>
<elements>
<button>
<id>btnEdit</id>
<name>key_edit</name>
<visibilityconditions>'[[getValue,java.lang.String,isEditable]]'!='0'</visibilityconditions>
<setmode>edit</setmode>
<refresh>page</refresh>
<disableonclick>true</disableonclick>
<functioncall>
<functions>
<function>
<type>ejb</type>
<classname>ejb/COMPANYCRMUIJobStatus</classname>
<functionname>editButton</functionname>
<resultaction>replace</resultaction>
<datatype>root</datatype>
<parameters>
<parameter>
<value>[[getDTO]]</value>
<datatype>java.lang.Object</datatype>
</parameter>
</parameters>
</function>
</functions>
</functioncall>
</button>
<button>
<id>btnEdit</id>
<name>key_edit</name>
<visibilityconditions>'[[getValue,java.lang.String,isEditable]]'=='0'</visibilityconditions>
<style>TopToolbarItemsDisabled</style>
</button>
</elements>
</component>
<component>
<id>cmpDelete</id>
<name>key_delete</name>
<visiblemodes>read</visiblemodes>
<elements>
<button>
<id>btnDelete</id>
<name>key_delete</name>
<visibilityconditions>'[[getValue,java.lang.String,isDeletable]]'!='0'</visibilityconditions>
<setmode>read</setmode>
<refresh>page</refresh>
<url>page.do?act=summary&xml=jobs/statuses</url>
<functioncall>
<functions>
<function>
<type>ejb</type>
<classname>ejb/COMPANYCRMUIJobStatus</classname>
<functionname>deleteButton</functionname>
<datatype>root</datatype>
<parameters>
<parameter>
<value>[[getDTO]]</value>
<datatype>java.lang.Object</datatype>
</parameter>
</parameters>
</function>
</functions>
</functioncall>
</button>
<button>
<id>btnDelete</id>
<name>key_delete</name>
<visibilityconditions>'[[getValue,java.lang.String,isDeletable]]'=='0'</visibilityconditions>
<style>TopToolbarItemsDisabled</style>
</button>
</elements>
</component>
<component>
<id>cmpSave</id>
<name>key_save</name>
<visiblemodes>edit,new</visiblemodes>
<elements>
<button>
<id>btnSave</id>
<name>key_save</name>
<setmode>read</setmode>
<refresh>page</refresh>
<functioncall>
<functions>
<function>
<type>ejb</type>
<classname>ejb/COMPANYCRMUIJobStatus</classname>
<functionname>saveButton</functionname>
<resultaction>replace</resultaction>
<datatype>root</datatype>
<parameters>
<parameter>
<value>[[getDTO]]</value>
<datatype>java.lang.Object</datatype>
</parameter>
</parameters>
</function>
</functions>
</functioncall>
</button>
</elements>
</component>
<component>
<id>cmpCancel</id>
<name>key_cancel</name>
<visiblemodes>edit,new</visiblemodes>
<elements>
<button>
<id>btnCancel</id>
<name>key_cancel</name>
<setmode>read</setmode>
<refresh>cancel,page.do?act=summary&xml=jobs/statuses</refresh>
</button>
</elements>
</component>
</components>
</mainmenu>
<main>
<components>
<component>
<id>cmpLifeCycleState</id>
<name>key_lifecyclestate</name>
<elements>
<selectbox>
<id>slbLifeCycleState</id>
<lookuptype>ejb</lookuptype>
<label>key_life_cycle_state</label>
<datapath>lifeCycleState</datapath>
<datatype>enum</datatype>
<classname>com.crm.dataobject.jobs.JobLifeCycleState</classname>
<reload>true</reload>
<onload>
<type>ejb</type>
<classname>ejb/CRMUIJob</classname>
<functionname>getLifeCycleStateOptions</functionname>
</onload>
</selectbox>
</elements>
</component>
</components>
</main>
<details>
<tabs>
</tabs>
</details>
</page>
<?xml version="1.0" encoding="UTF-8"?><page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../xsd/dataEntryLayout.xsd">
<mainmenu>
<components>
<component><id>cmpHome</id></component>
<component><id>cmpNew</id></component>
<component><id>cmpEdit</id></component>
<component><id>cmpDelete</id></component>
<component><id>cmpSave</id></component>
<component><id>cmpCancel</id></component>
</components>
</mainmenu>
<main>
<view>
<type>areas</type>
<screenareas>
<screenarea>
<leftscreenarea>
<sections>
<section><id>secMainInformation</id></section>
<section><id>secLogInformation</id></section>
</sections>
</leftscreenarea>
</screenarea>
</screenareas>
</view>
<sections>
<section>
<id>secMainInformation</id>
<name>key_main_information</name>
<disable>false</disable>
<instruction>key_instruction_jobs_status_sec_main_information</instruction>
<left>
<components>
<component><id>file:general/name.xml</id></component>
<component><id>file:general/altCode.xml</id></component>
<component><id>cmpLifeCycleState</id></component>
</components>
</left>
<right>
<components>
<component><id>file:general/description_rowspan_2.xml</id></component>
</components>
</right>
</section>
<section>
<id>secLogInformation</id>
<name>key_log_information</name>
<disable>false</disable>
<left>
<columns>3</columns>
<components>
<component>
<id>file:loginfo/logInfoGroup.xml</id>
<colspan>3</colspan>
</component>
</components>
</left>
</section>
</sections>
</main>
<details>
<tabs>
</tabs>
</details>
</page>
As you can see in the example above, for the name, alternative code and log information components, generic components were used. For more information on generic components and how to use them, go to Use Generic Components.
Customise Existing Data Entry Pages
To extend the system's release functionality, by adding new components to an existing data entry page, both custom data entry definition and layout files must be created. To extend the system's release functionality, by just changing the layout of the existing components, only a custom data entry layout file must be created. Both definition and layout files must be created under ../pages/dataEntry/<module_name> in your custom project's directory.
The custom data entry definition file must follow this naming convention: <release_definition_page_filename>Custom.xml and include the new components ONLY.
The custom data entry layout file must have a unique file path, include ALL sections and components that need to be displayed and be defined in templates.properties file.
Customise Existing Data Entry Page Example
Templates Properties File
The templates properties file (templates.properties) is used for defining the default data entry layout file per database and/or unit when more than one layout files exist per data entry definition page.
For a full list of data entry page attributes, go to Data Entry Pages Documentation