13Additional Code in the Customization Example

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