13Additional Code in the Customization Example
Additional Code in the Customization Example
This chapter includes the more lengthy XML code that the customization example requires. It includes the following topics:
XML Code That Defines a Set of Custom Fields
To define a set of custom fields, you add the following code to the type element of the od_basic_mapping.xml file:
<type id="ChannelPartner" hidden_folder="true" folder_type="10" display_name="CHPT"> <form message_class="IPM.Contact.OnDemand.Channel_Partner" display_name="Channel Partner" icon="type_image:User:16"></form> <field id="Name"> <reader> <mapi_std> <mapi_tag id="0x3A110000"></mapi_tag> <convertor><string/></convertor> </mapi_std> </reader> <writer> <outlook_std> <outlook_field id="LastName"></outlook_field> <convertor><string/></convertor> </outlook_std> </writer> <reader> <mapi_std> <mapi_tag id="0x3A060000"></mapi_tag> <convertor><string/></convertor> </mapi_std> </reader> <writer> <outlook_std> <outlook_field id="FirstName"></outlook_field> <convertor><string/></convertor> </outlook_std> </writer> </field> <field id="Location"> <reader> <mapi_user> <user_field id="od Location" ol_field_type="1"></user_field> <convertor><string/></convertor> </mapi_user> </reader> <writer> <outlook_user> <user_field id="od Location" ol_field_type="1"></user_field> <convertor><string/></convertor> </outlook_user> </writer> </field> </type>
XML Code That Maps a Definition for a Custom Object
The following code is an example of a complete mapping definition for Custom Object 1 in the od_basic_mapping.xml file:
<types> <type id="Custom Object 1" folder_type="10" display_name="CustomObject1" ver="2"> <form message_class="IPM.Contact.OnDemand.CustomObject1" display_name="CustomObject1" icon="type_image:Generic:16">OnDemand CustomObject1</form> <custom_views default_name = "#view_od_co1"> <view id="all_customobject1" name ="#view_od_co1"> </view> </custom_views> <field id="Name"> <reader> <mapi_user> <user_field id="od Name" ol_field_type="1"></user_field> <convertor> <string/> </convertor> </mapi_user> </reader> <writer> <outlook_user> <user_field id="od Name" ol_field_type="1"></user_field> <convertor> <string/> </convertor> </outlook_user> </writer> </field> <field id="Description"> <reader> <mapi_std> <mapi_tag id="0x3A110000"></mapi_tag> <convertor> <string/> </convertor> </mapi_std> </reader> <writer> <outlook_std> <outlook_field id="LastName"></outlook_field> <convertor> <string/> </convertor> </outlook_std> </writer> </field> </type> </types>
If the object you are adding is defined in CRM Desktop storage, then you must add the following object definition to the <database> element, which you can find in the od_basic_mapping.xml file:
<type id="Custom Object 1" icon="type_image:Custom Object 1:16"> <field id ="Name"> <type> <simple type="string"/> </type> </field> <field id ="Description"> <type> <simple type="string"/> </type> </field> </type>
XML Code That Hides Unused Microsoft Outlook Controls
The following code is an example of how the unused native Microsoft Outlook controls are removed in to a small cell:
<form id="OnDemand CustomObject1" > <page id="General" tag="0x10A6" min_height="155" min_width="520"> ... ... <!-- hidden section --> <cell size="0"> <stack layout="vert"> <cell> <control id="0x103f" window_id="0x103f"></control> <!-- Description --> </cell> <cell> <control id="0x6f2a" window_id="0x6f2a"></control> <!-- Full Name button --> </cell> <cell> <control id="0x1000" window_id="0x1000"></control> <!-- Full Name edit --> </cell> <cell> <control id="0x11a2" window_id="0x11a2"></control> <!--Company static--> </cell> <cell> <control id="0x1181" window_id="0x1181"></control> <!-- Company edit --> </cell> <cell> <control id="0x11a3" window_id="0x11a3"></control> <!-- Job Title static --> </cell> <cell> <control id="0x1180" window_id="0x1180"></control> <!-- Job Title edit --> </cell> <cell> <control id="0x11a4" window_id="0x11a4"></control> <!-- FileAs static --> </cell> <cell> <control id="0x1182" window_id="0x1182"></control> <!-- FileAs combo --> </cell> <cell> <control id="0x11a1" window_id="0x11a1"></control> <!--phone numbers separator--> </cell> <cell> <control id="0x11a5" window_id="0x11a5"></control> <!--Phone numbers static--> </cell> <cell> <control id="0x1113" window_id="0x1113"></control> <!-- Business phone button --> </cell> <cell> <control id="0x110a" window_id="0x110a"></control> <!-- Business Phone type (small) button --> </cell> <cell> <control id="0x1001" window_id="0x1001"></control> <!-- Business Phone Phone edit --> </cell> <cell> <control id="0x110b" window_id="0x110b"></control> <!-- Home Phone Type button --> </cell> <cell> <control id="0x1002" window_id="0x1002"></control> <!-- Home Phone edit --> </cell> <cell> <control id="0x1114" window_id="0x1114"></control> <!-- Home Phone button --> </cell> <cell> <control id="0x110c" window_id="0x110c"></control> <!-- Business Fax Type button --> </cell> <cell> <control id="0x1003" window_id="0x1003"></control> <!-- Business Fax edit --> </cell> <cell> <control id="0x1115" window_id="0x1115"></control> <!-- Business Fax button --> </cell> <cell> <control id="0x1116" window_id="0x1116"></control> <!--Mobile phone button --> </cell> <cell> <control id="0x110d" window_id="0x110d"></control> <!-- Mobile Phone Type button --> </cell> <cell> <control id="0x1004" window_id="0x1004"></control> <!-- Mobile Phone edit --> </cell> <cell> <control id="0x11a7" window_id="0x11a7"></control> <!-- Addresses section header --> </cell> <cell> <control id="0x11a8" window_id="0x11a8"></control> <!--Address separator --> </cell> <cell> <control id="0x6f2b" window_id="0x6f2b"></control> <!-- Address (Business...) button --> </cell> <cell> <control id="0x1109" window_id="0x1109"></control> <!-- Address Type button --> </cell> <cell> <control id="0x1080" window_id="0x1080"></control> <!-- Mailing Address checkbox --> </cell> <cell> <control id="0x1017" window_id="0x1017"></control> <!--Address edit --> </cell> <cell> <control id="0x1108" window_id="0x1108"></control> <!-- Contact Picture button --> </cell> <cell> <control id="0x11c7" window_id="0x11c7"></control> <!--Business Card --> </cell> <cell> <control id="0x11bb" window_id="0x11bb"></control> <!-- Internet caption--> </cell> <cell> <control id="0x11c5" window_id="0x11c5"></control> <!-- Internet separator--> </cell> <cell> <control id="0x1101" window_id="0x1101"></control> <!-- Email AddressBook button --> </cell> <cell> <control id="0x111b" window_id="0x111b"></control> <!--email address button small --> </cell> <cell> <control id="0x1018" window_id="0x1018"></control> <!--email address edit --> </cell> <cell> <control id="0x11c6" window_id="0x11c6"></control> <!-- DisplayAs static --> </cell> <cell> <control id="0x101c" window_id="0x101c"></control> <!-- DisplayAs edit --> </cell> <cell> <control id="0x11aa" window_id="0x11aa"></control> <!-- Web Page static --> </cell> <cell> <control id="0x11a9" window_id="0x11a9"></control> <!-- Web Page edit --> </cell> <cell> <control id="0x11ba" window_id="0x11ba"></control> <!--IM address static--> </cell> <cell> <control id="0x1016" window_id="0x1016"></control> <!-- IM Address edit --> </cell> <cell> <control id="0x11a6" window_id="0x11a6"></control> <!-- Notes Caption --> </cell> <cell> <control id="0x11b7" window_id="0x11b7"></control> <!-- Notes separator --> </cell> <cell> <control id="0x200" window_id="0x200"></control> <!-- "In folder" caption --> </cell> <cell> <control id="0x201" window_id="0x201"></control> <!-- Folder icon --> </cell> <cell> <control id="0x202" window_id="0x202"></control> <!-- Folder name --> </cell> <cell> <control id="0x10A3" window_id="0x10A3"></control> <!-- Contacts botton --> </cell> <cell> <control id="0x10A4" window_id="0x10A4"></control> <!-- Contacts Edit --> </cell> <cell> <control id="hidden_address_map_it" window_id="0x111c"></control> <!-- Map it button --> </cell> <cell> <control id="hidden_address_static" window_id="0x11C3"></control> <!-- Static control --> </cell> <!-- Contact picture --> <cell> <control id="0x1023" window_id="0x1023"/> </cell> </stack> </cell> </page> </form
XML Code of a Complete Form for Custom Object1
The following code is an example of the complete custom form for Custom Object 1 in the forms_12.xml file:
<form id="OnDemand CustomObject1" > <script> <![CDATA[ include("forms.js", "forms"); var ctx = { "application": application, "ui": ui, "application_script": application_script, "form": form }; var current_form = new forms.od_co1_form(forms.create_form_ctx(ctx)); ]]> </script> <page id="General" tag="0x10A6" min_height="155" min_width="520"> <cell> <stack layout="vert" padding="5"> <cell> <stack layout="horz" spacing="3"> <cell size="65"> <stack layout="vert" spacing="5"> <cell size="21"> <static id="lbl_co1_name" tab_order="2"> <text>#lbl_co1_name</text> </static> </cell> <cell size="21"> <static id="lbl_co1_description" tab_order="4"> <text>#lbl_co1_description</text> </static> </cell> </stack> </cell> <cell> <stack layout="vert" spacing="5"> <cell size="21"> <edit id="Name" max_chars="100" tab_order="3"> <field value="string">Name</field> </edit> </cell> <cell size="21"> <edit id="Description" max_chars="100" tab_order="5"> <field value="string">Description</field> </edit> </cell> </stack> </cell> <!-- hidden section --> <cell size="0"> <stack layout="vert"> <cell> <control id="0x103f" window_id="0x103f"></control> <!-- Description --> </cell> <cell> <control id="0x6f2a" window_id="0x6f2a"></control> <!-- Full Name button --> </cell> <cell> <control id="0x1000" window_id="0x1000"></control> <!-- Full Name edit --> </cell> <cell> <control id="0x11a2" window_id="0x11a2"></control> <!--Company static--> </cell> <cell> <control id="0x1181" window_id="0x1181"></control> <!-- Company edit --> </cell> <cell> <control id="0x11a3" window_id="0x11a3"></control> <!-- Job Title static --> </cell> <cell> <control id="0x1180" window_id="0x1180"></control> <!-- Job Title edit --> </cell> <cell> <control id="0x11a4" window_id="0x11a4"></control> <!-- FileAs static --> </cell> <cell> <control id="0x1182" window_id="0x1182"></control> <!-- FileAs combo --> </cell> <cell> <control id="0x11a1" window_id="0x11a1"></control> <!--phone numbers separator--> </cell> <cell> <control id="0x11a5" window_id="0x11a5"></control> <!--Phone numbers static--> </cell> <cell> <control id="0x1113" window_id="0x1113"></control> <!-- Business phone button --> </cell> <cell> <control id="0x110a" window_id="0x110a"></control> <!-- Business Phone type (small) button --> </cell> <cell> <control id="0x1001" window_id="0x1001"></control> <!-- Business Phone Phone edit --> </cell> <cell> <control id="0x110b" window_id="0x110b"></control> <!-- Home Phone Type button --> </cell> <cell> <control id="0x1002" window_id="0x1002"></control> <!-- Home Phone edit --> </cell> <cell> <control id="0x1114" window_id="0x1114"></control> <!-- Home Phone button --> </cell> <cell> <control id="0x110c" window_id="0x110c"></control> <!-- Business Fax Type button --> </cell> <cell> <control id="0x1003" window_id="0x1003"></control> <!-- Business Fax edit --> </cell> <cell> <control id="0x1115" window_id="0x1115"></control> <!-- Business Fax button --> </cell> <cell> <control id="0x1116" window_id="0x1116"></control> <!--Mobile phone button --> </cell> <cell> <control id="0x110d" window_id="0x110d"></control> <!-- Mobile Phone Type button --> </cell> <cell> <control id="0x1004" window_id="0x1004"></control> <!-- Mobile Phone edit --> </cell> <cell> <control id="0x11a7" window_id="0x11a7"></control> <!-- Addresses section header --> </cell> <cell> <control id="0x11a8" window_id="0x11a8"></control> <!--Address separator --> </cell> <cell> <control id="0x6f2b" window_id="0x6f2b"></control> <!-- Address (Business...) button --> </cell> <cell> <control id="0x1109" window_id="0x1109"></control> <!-- Address Type button --> </cell> <cell> <control id="0x1080" window_id="0x1080"></control> <!-- Mailing Address checkbox --> </cell> <cell> <control id="0x1017" window_id="0x1017"></control> <!--Address edit --> </cell> <cell> <control id="0x1108" window_id="0x1108"></control> <!-- Contact Picture button --> </cell> <cell> <control id="0x11c7" window_id="0x11c7"></control> <!--Business Card --> </cell> <cell> <control id="0x11bb" window_id="0x11bb"></control> <!-- Internet caption--> </cell> <cell> <control id="0x11c5" window_id="0x11c5"></control> <!-- Internet separator--> </cell> <cell> <control id="0x1101" window_id="0x1101"></control> <!-- Email AddressBook button --> </cell> <cell> <control id="0x111b" window_id="0x111b"></control> <!--email address button small --> </cell> <cell> <control id="0x1018" window_id="0x1018"></control> <!--email address edit --> </cell> <cell> <control id="0x11c6" window_id="0x11c6"></control> <!-- DisplayAs static --> </cell> <cell> <control id="0x101c" window_id="0x101c"></control> <!-- DisplayAs edit --> </cell> <cell> <control id="0x11aa" window_id="0x11aa"></control> <!-- Web Page static --> </cell> <cell> <control id="0x11a9" window_id="0x11a9"></control> <!-- Web Page edit --> </cell> <cell> <control id="0x11ba" window_id="0x11ba"></control> <!--IM address static--> </cell> <cell> <control id="0x1016" window_id="0x1016"></control> <!-- IM Address edit --> </cell> <cell> <control id="0x11a6" window_id="0x11a6"></control> <!-- Notes Caption --> </cell> <cell> <control id="0x11b7" window_id="0x11b7"></control> <!-- Notes separator --> </cell> <cell> <control id="0x200" window_id="0x200"></control> <!-- "In folder" caption --> </cell> <cell> <control id="0x201" window_id="0x201"></control> <!-- Folder icon --> </cell> <cell> <control id="0x202" window_id="0x202"></control> <!-- Folder name --> </cell> <cell> <control id="0x10A3" window_id="0x10A3"></control> <!-- Contacts botton --> </cell> <cell> <control id="0x10A4" window_id="0x10A4"></control> <!-- Contacts Edit --> </cell> <cell> <control id="hidden_address_map_it" window_id="0x111c"></control> <!-- Map it button --> </cell> <cell> <control id="hidden_address_static" window_id="0x11C3"></control> <!-- Static control --> </cell> <!-- Contact picture --> <cell> <control id="0x1023" window_id="0x1023"/> </cell> </stack> </cell> </stack> </cell> </stack> </cell> </page> </form>
XML Code That Defines a Many-To-Many Relationship
Many-to-many relationships are typically defined using association objects. It is recommended that you place these objects in DB FACADE storage by adding the following XML code to the od_basic_mapping.xml file:
<type id="Opportunity.Channel_Partner.Association" icon="type_image:Opportunity.Channel_Partner.Association:16"> <field id="OpportunityId"> <type> <simple type="binary" /> </type> </field> <field id="ChannelPartnerId"> <type> <foreign_key> <type_id>Channel_Partner</type_id> </foreign_key> </type> </field> <field id="ChannelPartnerStatus"> <type> <simple type="string" /> </type> </field> </type>
XML Code That Defines a List
To define a drop-down list, you add the following code to the od_basic_mapping.xml file on the activity object:
<type id="ActionTypePicklist" icon="type_image:ActionTypePicklist:16"> <field id="Label"> <type> <simple type="string" /> </type> </field> <field id="Value"> <type> <simple type="string" /> </type> </field> <field id="SortOrder"> <type> <simple type="integer" /> </type> </field> <field id="IsDefault"> <type> <simple type="boolean" /> </type> </field> <field id="Parent"> <type> <simple type="string" /> </type> </field> </type>
XML Code That Creates Cells
To define part of the layout of the form, you add the following code to the forms_12.xml file:
<stack layout="horz" spacing="3"> <cell size="5" attraction="far"></cell> <!-- left side captions --> <cell size="90"> <stack spacing="5" layout="vert" padding="4"> <cell size="21"> <static id="lbl_account" tab_order="25"> <text>#lbl_account</text> </static> </cell> <cell size="21"> <static id="lbl_opportunity" tab_order="28"> <text>#lbl_opportunity</text> </static> </cell> <cell size="21"> <static id="lbl_lead" tab_order="31"> <text>#lbl_lead</text> </static> </cell> </stack> </cell> <!-- left side fields --> <cell> <stack layout="vert" spacing="5"> <cell size="21"> <stack layout="horz" spacing="3"> <cell> <autocomplete id="account_id" tab_order="26"> <field>AccountId</field> <source type="Account" format=":[:(AccountName):]"></source> </autocomplete> </cell> <cell size="21" attraction="far"> <button id="btn_account_select" image="lookup_button" tab_order="27"> <text>...</text> </button> </cell> </stack> </cell> <cell size="21"> <stack layout="horz" spacing="3"> <cell> <scriptable_autocomplete id="opportunity_id" tab_order="29"> <!--field>OpportunityId</field> <source type="Opportunity" format=":[:(OpportunityName):]"></source--> </scriptable_autocomplete> </cell> <cell size="21" attraction="far"> <button id="btn_opportunity_select" image="lookup_button" tab_order="30"> <text>...</text> </button> </cell> </stack> </cell> <cell size="21"> <stack layout="horz" spacing="3"> <cell> <scriptable_autocomplete id="lead_id" tab_order="32"> <!--field>LeadId</field> <source type="Lead" format=":[:(LeadFullName):]"></source--> </scriptable_autocomplete> </cell> <cell size="21" attraction="far"> <button id="btn_lead_select" image="lookup_button" tab_order="33"> <text>...</text> </button> </cell> </stack> </cell> </stack> </cell> </stack>
Related Topics
Process of Customizing Objects in Oracle CRM On Demand Desktop