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