6Customizing Styles, Applets, Fields, and Controls

Customizing Logos, Themes, Backgrounds, Tabs, Styles, and Fonts

This topic describes how to customize the logo, theme, background image, and style that Siebel Open UI displays in the client. It includes the following information:

You can make these modifications in the client at run time. You can then copy them into CSS files on the Siebel Server, and then deploy them to all users.

    Customizing the Logo

    Starting with Siebel Innovation Pack 2014, Siebel Open UI defines the logo that it displays in the client in CSS files instead of coding the logo in ODH. It uses the following predefined code to display the logo in the Aurora theme for screen sizes larger than 1199 pixels:

    #_sweclient #_sweappmenu .siebui-logo    
       float: left;   
    height: 40px !important;   
    line-height: 40px;   
    background-image: url("../images/ebus.gif");   
    background-repeat: no-repeat;   
    background-origin: content-box;   
    background-position: 4px 12px;   
    width: 106px;   
    white-space: nowrap;   
    }
    

    You can configure Siebel Open UI to override this code, or you can create your own custom theme so that you can display a custom logo. You can configure Siebel Open UI to display a separate logo in each theme. For more information about overriding an existing theme, or adding a new theme, see Open UI Deployment Guide (Article ID 1499842.1) on My Oracle Support.

    To customize the logo

    1. Create a JPG file that includes your custom logo.

      For example, my-logo.jpg.

    2. Copy the file you created in Step 1 to the following folders:

      INSTALL_DIR\applicationcontainer\webapps\siebel\images\custom
      
    3. Use an editor to open your custom CSS file that resides in the following folder:

      INSTALL_DIR\applicationcontainer\webapps\siebel\files\custom
      

      For example, open the my-style.css file.

    4. Add the following code:

      #_sweclient #_sweappmenu .siebui-logo {   
        background-image: url('../../images/custom/my-logo.jpg')   
      }
      
    5. (Optional) Modify the logo attributes, as necessary:

      1. Use an editor to open your custom CSS file.

        For example, open my-style.css.

      2. Add your custom code.

        Siebel Open UI uses the following predefined code to specify the logo attributes:

        #_sweclient #_sweappmenu .siebui-logo {   
          float: left;   
          height: 40px !important;   
          line-height: 40px;   
          background-image: url("../images/ebus.gif");   
          background-repeat: no-repeat;   
          background-origin: content-box;   
          background-position: 4px 12px;   
          width: 106px;   
          white-space: nowrap;   
        }
        

        You can modify each of these attributes, as necessary. For example, you can modify the following width and height attributes to decrease the width and height of the logo to accommodate your custom logo image:

        #_sweclient #_sweappmenu .siebui-logo {   
          width: 25px;   
          height: 25px;   
        }
        
    6. Configure the manifest. For more information about how to do this step, see Configuring Manifests:

      1. Log in to a Siebel client with administrative privileges.

      2. Navigate to the Administration - Application screen, and then the Manifest Files view.

      3. Add the file that you modified in Step 4.

        For this example, you add the following file:

        custom/my-style.css
        
      4. Navigate to the Manifest Expressions view.

      5. In the Expressions list, add the following expression.

        Field Value

        Name

        GRAY_TAB 
        

        Expression

        LookupName (OUI_THEME_SELECTION, Preference 
        ("Behavior","DefaultTheme")) = "GRAY_TAB"
        

        where:

        • LookupName is a method that converts the language-dependent name of the theme to the language-independent name of theme. Siebel Open UI uses the language-independent name.

      6. Navigate to the Manifest Administration view.

      7. In the UI Objects list, specify the following object.

        Field Value

        Type

        Application

        Usage Type

        Theme

        Name

        PLATFORM DEPENDENT

      8. In the Object Expression list, add the following subexpression.

        Field Value

        Group Name

        Leave empty.

        Expression

        Desktop

        Level

        1

        Operator

        Leave empty.

        Web Template Name

        Leave empty.

      9. In the Object Expression list, add the following subexpression.

        Field Value

        Group Name

        Leave empty.

        Expression

        Enter the value that you specified in Step e.

        Level

        2

        Operator

        Leave empty.

        Web Template Name

        Leave empty.

      10. Use the Move Up, Move Down, Indent, and Outdent buttons to rearrange the subexpressions, as necessary.

      11. In the Files list, click Add.In the Files dialog box, click Query.

      12. In the Name field, enter the following path and file name:

        custom/my-style.css
        
      13. Click Go.

    7. Log out of the client, log back in to the client, and then verify that Siebel Open UI replaces the Oracle logo with your custom logo.

      Customizing Themes

      This topic includes an example that customizes the theme that Siebel Open UI displays in the client. It describes how to add a custom theme named Mobile Theme Gold that Siebel Open UI displays on a tablet.

      The User Preferences - Behavior screen in the Siebel Mobile client allows the user to choose the theme that this client displays. Siebel Open UI comes predefined with one theme for the tablet and one theme for the phone, by default. It constrains the theme that the user can choose depending on whether the user uses a phone, tablet, or desktop computer.

      To customize themes

      1. Create a new style sheet named theme-gold.css. Save this new file in the following folder:

        INSTALL_DIR\applicationcontainer\webapps\siebel\files\custom
        

        You can use any .css file that includes your custom theme. You can also specify multiple .css files. For this example, use theme-gold.css.

      2. Add the new theme to the OUI_THEME_SELECTION list of values:

        1. Open Siebel Tools. Connect to the database that your Siebel Mobile application uses.

          For more information, see Using Siebel Tools.

        2. Click the Screens application-level menu, click System Administration, and then click List of Values.

        3. Right-click in the List of Values list, and then click New Record.

        4. Add the following value to the OUI_THEME_SELECTION list of values.

          Property Value

          Type

          OUI_THEME_SELECTION

          Display Value

          Gold

          Language-Independent Code

          GOLD_THEME

          The value that you specify must match the theme name that you define in the manifest. In this example, this name is GOLD_THEME.

          Parent LIC

          NAVIGATION_TAB

          NAVIGATION_TREE

          NAVIGATION_SIDE

        5. For the new theme to be displayed only for desktop, then under Object Expression, add a new record with Expression = Desktop and Level = 1. For the new theme to be displayed for all platforms (desktop, mobile, and so on), then under Object Expression add a new record with Expression is null and Level = 1.

      3. Configure the manifest. For more information about how to do this step, see Adding Custom Manifest Expressions:

        1. Log in to a Siebel client with administrative privileges.

        2. Navigate to the Administration - Application screen, and then the Manifest Files view.

        3. Add the file that you created in Step 1.

          For this example, add the following file:

          files/custom/theme-gold.css
          
        4. Navigate to the Manifest Expressions view.

        5. In the Expressions list, add the following expression.

          Field Value

          Name

          GOLD_THEME 
          

          Expression

          LookupName (OUI_THEME_SELECTION, Preference ("Behavior","DefaultTheme")) = "GOLD_THEME"

          where:

          • LookupName is a method that converts the language-dependent name of the theme to the language-independent name of theme. Siebel Open UI uses the language-independent name.

        6. Navigate to the Manifest Administration view.

        7. In the UI Objects list, specify the following object.

          Field Value

          Type

          Application

          This example configures Siebel Open UI to display your custom theme for the entire Siebel application. To specify this theme for a single object, see Customizing Themes for Other Objects.

          Usage Type

          Theme

          Name

          PLATFORM DEPENDENT

        8. In the Object Expression list, add the following subexpression.

          Field Value

          Group Name

          Leave empty.

          Expression

          Gold Theme

          If you must add a theme to some other platform, such as a phone or desktop, then specify this other platform. For example, specify Phone instead of Tablet.

          Level

          1

          Operator

          Leave empty.

          Web Template Name

          Leave empty.

        9. In the Files list, add the file that you created in Step 1.

          For this example, you add the following file:

          files/custom/theme-gold.css
          

          You can use the Sequence field to determine the sequence that Siebel Open UI uses when it downloads cascading style sheets.

      4. Test your modifications:

        1. Login to the Siebel Open UI client.

        2. Click User Preferences, click Behavior, and then click Edit.

        3. Verify that the Theme field includes the Gold value.

        4. Click Gold, and then click Save.

        5. Log out of the Siebel Open UI client, and then log back in.

        6. Verify that the Siebel Open UI client displays Gold theme.

        Customizing Themes for Other Objects

        This topic describes how to customize themes other objects and portlet applications.

        To customize themes for other objects and portlet applications
        • Do Step 1 through Step 4, except for Step 3, Step e, in the topic Customizing Themes and specify the object type and name of the object where Siebel Open UI must apply the style.

          For example, to apply the style only for an applet, set the Type to Applet, and the Name to the applet name, such as Contact List Applet.

          To specify the theme for another application, use the following expression:

          GetProfileAttr("PortletId") = "PtId"
          

          where:

          Customizing the Synergy Theme

          In Siebel Innovation Pack 2015, the Synergy theme was introduced. This topic describes elements of the Synergy theme that can be customized. For more information about the Synergy theme, see Siebel Fundamentals Guide.

          The Synergy theme is designed for Available Tab navigation only and is not suitable for Side Menu or Tree navigation.

            Adding Landing Pages

            By default, the landing page is enabled for all desktop applications. Follow the instructions in this topic to add a Synergy theme landing page for mobile applications.

            To add landing page for mobile applications
            1. Navigate to the Administration - Runtime Events screen, and then the Action Sets view.

            2. Create an action set with a Name of your choosing and default field values.

            3. Add a new action to the action set you created in Step 2 with the following defined values:

              Field Value

              Name

              Action Name

              For example, Landing Page.

              Sequence

              1

              Profile Attribute

              Is Landing Page Enabled

              Value

              TRUE

            4. Navigate to the Administration - Runtime Events screen, and then the Action Sets view.

            5. Create a run-time event with the following values:

              Field Value

              Object Type

              Application

              Object Name

              Name of application

              For example, Siebel Universal Agent.

              Event

              Login

              Action Set Name

              Select the action set that was created in Step 2.

              Sequence

              Sequence number

              Removing Applets from Landing Pages

              Follow the instructions in this topic to configure Synergy theme landing page.

              To configure content on landing pages
              1. Navigate to the Administration - Personalization screen, and then the Applets view.

              2. Query for the applet that you want to remove from the landing page.

              3. Add the following expression:

                GetProfileAttr("Is SUI_THEME Landing View") = 'FALSE'

                Note: If there are any existing expressions, use the AND operator.

                Removing Landing Pages

                By default, in Siebel Open UI, desktop applications are configured to have landing pages. Whereas mobile applications do not have default landing pages. Follow the instructions in this topic to skip the display of landing page entirely.

                To remove landing pages
                1. Navigate to the Administration - Runtime Events screen, and then the Action Sets view.

                2. Create an action set with a Name of your choosing and default field values.

                3. Add a new action to the action set you created in Step 2 with the following defined values:

                  Field Value

                  Name

                  Action Name

                  For example, Remove Landing Page.

                  Sequence

                  1

                  Profile Attribute

                  Is Landing Page Enabled

                  Value

                  FALSE

                4. Navigate to the Administration - Runtime Events screen, and then the Action Sets view.

                5. Create a run-time event with the following values:

                  Field Value

                  Object Type

                  Application

                  Object Name

                  Name of application

                  For example, Siebel Universal Agent.

                  Event

                  Login

                  Action Set Name

                  Select the action set that was created in Step 2.

                  Sequence

                  Sequence number

                6. Navigate to the Administration - Personalization screen, and then the Applets view.

                7. Query for the Conditional Expression using containing the following string:

                  "*Is SUI_THEME Landing View*"

                8. Select a record from the results of the search performed in Step 7, then remove the following expression from the Conditional Expression string:

                  GetProfileAttr('Is SUI_THEME Landing View') = 'FALSE'

                9. Repeat Step 8 for every record returned in the search performed in Step 7.

                10. Select Reload Personalization Rules from the applet menu.

                  Customizing the Aurora Theme

                  This topic describes how to customize the Aurora theme. For more information about the Aurora theme, see Siebel Fundamentals Guide.

                  To customize the Aurora theme

                  1. Create new CSS rules in mycustom.css and place the file in:

                     <install_dir>\applicationcontainer\webapps\siebel\files\custom
                    
                  2. Navigate to the Sitemap and query for manifest and then select Manifest Files.

                  3. From the drop-down menu choose Name, then enter files in the text field and run the query.

                  4. Click the plus (+) icon in the menu bar.

                  5. In the name field, enter the path to the new CSS file, for example:

                     files\custom\<mycustom.css>
                    
                  6. Navigate to Manifest Administration and query for the Usage Type of Theme.

                  7. Click the plus (+) icon in the menu bar.

                  8. Create a new Platform Dependent record and click the plus (+) icon in Object Expressions.

                  9. Create an Aurora theme expression by clicking the plus icon (+) and entering "Aurora" in the Expression field.

                  10. Click the MVG icon.

                  11. In the Expressions pop-up window, click OK.

                  12. Set the new object expression’s level to 1.

                  13. Click the plus (+) icon in the Files menu bar.

                  14. In the Files pop-up window, click the Search icon.

                  15. Enter files in the search field and click the Execute icon.

                  16. Select the check box for your new CSS file and click OK.

                  17. Navigate to Tools, User Preferences, and then Behavior.

                  18. From the Theme drop-down menu choose Aurora.

                  19. Close the application and then restart it.

                    The changes you made in the new CSS file are now active.

                    Customizing Browser Tab Labels

                    Siebel Open UI uses the view Title that you define in Siebel Tools to set the Browser tab label. If this Title is not defined, then Siebel Open UI displays the Id of the current record as the label. For example, it might display 2-HB474 as the Browser tab label:

                    2-HB474 as the Browser tab label

                    If the label is not set for the view, the Id of the selected record is displayed by default. The tab name for the browser is set with the view Title or Title String Override, if it is defined within Siebel Tools. The same view Title is also looked up when the following script is called:

                    SiebelApp.S_App.GetActiveView().GetTitle().

                      Using Cascading Style Sheets to Modify the Position, Dimension, and Text Attributes of an Object

                      The example in this topic describes how to modify the cascading style sheet. You move the Predefined Query (PDQ) to a different location and you modify the text color of the Predefined Query.

                      To use cascading style sheets to modify the position, dimension, and text attributes of an object

                      1. Add these CSS rules to the end of your custom style sheet, my-style.css:

                        #_sweclient #_sweappmenu .PDQToolbarContainer {   
                          position: absolute;   
                          top: 40px;   
                          left: 610px;   
                          width: 140px;   
                        }   
                        #_sweclient #_sweappmenu .PDQToolbarContainer select {   
                          color: red;   
                          width: 140px;   
                        }
                        
                      2. Save the my-style.css file.

                      3. Verify that the Predefined Query drop-down list appear in the Help menu.

                        Adding Fonts to Siebel Open UI

                        This topic describes how to add custom fonts to Siebel Open UI. Although you can add custom fonts, it is recommended that your Siebel Open UI deployment use only Web-safe fonts because you might not be able to control font usage. For example, assume you deploy a custom font to all users in your company, and that you also add this font to Siebel Open UI. Assume that one of your Siebel Open UI users chooses this font in a text editor in Siebel Open UI, and then sends this text in an email message to an external customer who has not installed this custom font on their computer. In this situation, your Siebel Open UI user can read the font but the external customer cannot read it.

                        Using Web-safe fonts helps to make sure that any Browser or other client, such as a desktop computer or mobile device, can correctly render the text that your users provide, regardless of how each user configures font usage in their individual Browsers or clients, or the level of font customization that exists in your deployment environment. For more information about Web-safe fonts, see the topic that describes Web Safe Font Combinations at http://www.w3schools.com/cssref/css_websafe_fonts.asp.

                        To add fonts to Siebel Open UI

                        1. Create a JavaScript file that adds your custom font:

                          1. Create a new JavaScript file named ckeditorfontadditions.js, and then save this file in the custom folder.

                            For more information about this folder, see Organizing Files That You Customize.

                          2. Add the following code to the file that you created in Step a. This code adds the fonts that Siebel Open UI displays in the Font picklists when the user edits text in the client:

                            if (typeof(SiebelAppFacade.CKEDITOREXTN) == "undefined") {   
                              Namespace('SiebelAppFacade.CKEDITOREXTN');   
                              (function() {   
                                SiebelApp.EventManager.addListner("postload", ckeditorextn, this);   
                                var updatedFont = "";   
                                function ckeditorextn() {   
                                  try {   
                                    if (CKEDITOR &&   
                                      CKEDITOR.config.font_names !== updatedFont) {   
                                      CKEDITOR.config.font_names = CKEDITOR.config.font_names +   
                                        'font_families'   
                                      updatedFont = CKEDITOR.config.font_names;   
                                    }   
                                  } catch (error) {   
                                    // Nothing to do.   
                                  }   
                                }   
                              }());   
                            }
                            

                            where:

                            • CKEDITOR.config.font_names is a predefined function that Siebel Open UI uses to store the list of fonts that it uses.

                            • font_families specifies one or more font families that Siebel Open UI uses to render the font.

                            • catch (error) catches any error that might occur when Siebel Open UI attempts to render the fonts that you specify. If an error occurs, then Siebel Open UI uses a predefined font to display the control.

                            For this example, use the following code for font_families:

                            ';Calibri/Calibri, Verdana, Geneva, sans-serif;'
                            

                            For more information about how to specify the font family, see Specifying Font Families.

                        2. Administer the manifest:

                          For more information about how to do this step, see Configuring Manifests.

                          1. Log in to the client as an administrator.

                          2. Navigate to the Administration - Application screen, and then the Manifest Files view.

                          3. In the Files list, add the file that you created in Step 2.

                            You add the following record:

                            siebel/custom/ckeditorfontadditions.js
                            
                          4. Navigate to the Administration - Application screen, and then the Manifest Administration view.

                          5. In the UI Objects list, add a new record. Use values from the following table.

                            Type Usage Type Name

                            Application

                            Common

                            PLATFORM INDEPENDENT

                          6. In the Object Expression list, add the following subexpression.

                            Field Value

                            Group Name

                            Leave empty.

                            Expression

                            Desktop

                            Level

                            1

                            Operator

                            Leave empty.

                            Web Template Name

                            Leave empty.

                          7. In the Files list, add the file that you created in Step 2.

                            You add the following record:

                            siebel/custom/ckeditorfontadditions.js
                            
                          8. Refresh the manifest. Log out of the client, and then log back in to the client.

                        3. Verify that Siebel Open UI added your custom fonts:

                          1. Navigate to the Administration Communications screen, and then the All Templates view.

                          2. In the Compose Template section, in the Text window, click the Font drop-down, and then make sure the Font list displays the font that you specified in Step 1, Step b.

                          Specifying Font Families

                          You can use the following code to specify the font family:

                          function ckeditorextn() {   
                            try {   
                              if (CKEDITOR &&   
                                CKEDITOR.config.font_names !== updatedFont) {   
                                CKEDITOR.config.font_names = CKEDITOR.config.font_names +   
                                  'font_families'   
                                updatedFont = CKEDITOR.config.font_names;   
                              }   
                            } catch (error) {   
                              // Nothing to do.
                          

                          where:

                          • font_families specifies one or more font families that Siebel Open UI uses to render the font.

                            font_families can include one or more families. You must precede each font family with a semi-colon (;). For example:

                            ;font_family_1;font_family_2;font_family_n
                            

                          You must use the following format for each font family:

                          font_name/font_label,substitute_font_1,substitute_font_2, substitute_font_n, 
                          generic_font_family
                          

                          where:

                          • font_name specifies the name of the font, such as Calibri.

                          • font_label specifies the text label. It displays this label in the Font picklists in the client.

                          • substitute_font_1 specifies the font if the font that font_name specifies does not exist in the client computer.

                          • substitute_font_2 specifies the font if the font that substitute_font_1 specifies does not exist in the client computer.

                          • generic_font_family specifies the font family if the font that substitute_font_n specifies does not exist in the client computer. Siebel Open UI chooses a font from this generic font family.

                          It is recommended that you specify a substitution font that resembles the font that it substitutes. For example, Calibri is a sans-serif, proportionally spaced font. If you specify Calibri as the font_name, then it is recommended that you specify a close approximation to Calibri for substitute_font_1, such as Verdana, which is also a sans-serif, proportionally spaced font. It is recommended that you use this same approach when you specify the remaining substitution fonts. For example, specify Geneva for substitute_font_2.

                          Consider the following example:

                          ';Calibri/My Font, Verdana, Geneva, sans-serif;'
                          

                          This code configures Siebel Open UI to do the following:

                          • Adds Calibri to the list of fonts that Siebel Open UI displays in Font picklists.

                          • Uses My Font as the label for the Calibri font that Siebel Open UI displays in Font picklists.

                          • If Calibri is not installed on the client computer, then Siebel Open UI uses the following sequence to determine the font that it displays:

                            1. Uses Verdana for My Font.

                            2. If Verdana is not installed on the client computer, then it uses Geneva for My Font.

                            3. If Geneva is not installed on the client computer, then it uses any sans-serif font that is installed on the client computer for My Font.

                          If you specify a font that includes a space character, then you must use double-quotes to enclose the entire font name. For example, you must use double quotes to enclose Times New Roman and Courier New:

                          ';"Times New Roman"/My Font,Georgia,"Courier New",Serif;'
                          

                          For more information about font families, see the topic that describes the CSS font family property at the W3 Schools website at http://www.w3schools.com/cssref/pr_font_font-family.asp.

                            Displaying and Hiding Fields

                            The example in this topic describes how to configure Siebel Open UI to display a field. To view a diagram that illustrates some of the objects you modify and the relationships between these objects, see Configuring Manifests.

                            This topic is similar to the Displaying and Hiding Fields topic, but with fewer details. It demonstrates how you can quickly modify a presentation model.

                            To customize the fields that are visible in an applet

                            1. Copy the JavaScript files:

                              1. Download a copy of the partialrefreshpm.js file to the following folder:

                                INSTALL_DIR\applicationcontainer\webapps\siebel\scripts\siebel\custom
                                

                                For more information about this file, see Text Copy of Code That Does a Partial Refresh for the Presentation Model.

                              2. Download a copy of the partialrefreshpr.js file to in the following folder:

                                INSTALL_DIR\applicationcontainer\webapps\siebel\scripts\siebel\custom
                                

                                For more information about this file, see Text Copy of Code That Does a Partial Refresh for the Physical Renderer.

                            2. Configure the manifest:

                              1. Log in to a Siebel client with administrative privileges.

                                For more information about the screens that you use in this step, see Configuring Manifests.

                              2. Navigate to the Administration - Application screen, and then the Manifest Files view.

                              3. In the Files list, add the following files.

                                Field Value

                                Name

                                siebel/custom/partialrefreshpr.js

                                Name

                                siebel/custom/partialrefreshpm.js

                              4. Navigate to the Administration - Application screen, and then the Manifest Administration view.

                              5. In the UI Objects list, specify the following applet.

                                Field Value

                                Type

                                Applet

                                Usage Type

                                Physical Renderer

                                Name

                                Contact Form Applet

                              6. In the Object Expression list, add the following expression. The physical renderer uses this expression to render the applet in a mobile platform.

                                Field Value

                                Expression

                                Mobile

                                Level

                                1

                              7. In the Files list, add the following file:

                                siebel/custom/partialrefreshpr.js
                                
                              8. In the UI Objects list, specify the following applet.

                                Field Value

                                Type

                                Applet

                                Usage Type

                                Presentation Model

                                Name

                                Contact Form Applet

                              9. In the Object Expression list, add a record with no value in the Expression field.

                              10. In the Files list, add the following file:

                                siebel/custom/partialrefreshpm.js
                                
                            3. Test your modifications:

                              1. Open the browser in the client computer, and then clear the browser cache.

                              2. Open the Siebel application, and then navigate to the Contact Form Applet.

                              3. Delete the value in the Job Title field, and then step out of the field.

                              4. Make sure Siebel Open UI removes the values from the Work # and the Main Fax # fields.

                              5. Add a value to the Job Title field, and then step out of the field.

                              6. Make sure Siebel Open UI adds values to the Work # and the Main Fax # fields.

                              Text Copy of Code That Does a Partial Refresh for the Presentation Model

                              To get a copy of the partialrefreshpm.js file, see Article ID 1494998.1 on My Oracle Support. If you do not have access to this file on My Oracle Support, then you can open a JavaScript editor, create a new file named partialrefreshpm.js, copy the following code into this file, and then save your modifications:

                              if(typeof(SiebelAppFacade.PartialRefreshPM) === "undefined"){   
                              
                                SiebelJS.Namespace("SiebelAppFacade.PartialRefreshPM");   
                                define("siebel/custom/partialrefreshpm", [], function () {(   
                                SiebelAppFacade.PartialRefreshPM = (function(){   
                                  function PartialRefreshPM(proxy){   
                                    SiebelAppFacade.PartialRefreshPM.superclass.constructor.call(this, proxy);   
                                  }   
                                  SiebelJS.Extend(PartialRefreshPM, SiebelAppFacade.PresentationModel);   
                                  PartialRefreshPM.prototype.Init = function(){   
                                    SiebelAppFacade.PartialRefreshPM.superclass.Init.call(this);   
                                    this.AddProperty("ShowJobTitleRelatedField", "");    
                                    this.AddMethod("ShowSelection", SelectionChange,{sequence : false, scope : 
                              this});   
                                    this.AddMethod("FieldChange", OnFieldChange,{sequence : false, scope: this});   
                                  };   
                                  function SelectionChange(){   
                                    var controls = this.Get("GetControls");   
                                    var control = controls[ "JobTitle" ];   
                                    var value = this.ExecuteMethod("GetFieldValue", control);   
                                    this.SetProperty("ShowJobTitleRelatedField", (value ? true: false));   
                                  }   
                                  function OnFieldChange(control, value){   
                                    if(control.GetName() === "JobTitle"){   
                                      this.SetProperty("ShowJobTitleRelatedField", (value ? true: false));   
                                    }   
                                  }   
                                  return PartialRefreshPM;   
                                }());   
                              }
                              

                                Text Copy of Code That Does a Partial Refresh for the Physical Renderer

                                To get a copy of the partialrefreshpr.js file, see Article ID 1494998.1 on My Oracle Support. If you do not have access to this file on My Oracle Support, then you can open a JavaScript editor, create a new file named partialrefreshpr.js, copy the following code into this file, and then save your modifications:

                                if(typeof(SiebelAppFacade.PartialRefreshPR) === "undefined"){
                                  SiebelJS.Namespace("SiebelAppFacade.PartialRefreshPR");
                                  //Module with its dependencies
                                  define("siebel/custom/partialrefreshpr", ["order!3rdParty/
                                jquery.signaturepad.min", "order!siebel/phyrenderer"], function () {
                                    SiebelAppFacade.PartialRefreshPR = (function(){
                                      function PartialRefreshPR(pm){
                                        SiebelAppFacade.PartialRefreshPR.superclass.constructor.call(this, pm);
                                      }
                                      SiebelJS.Extend(PartialRefreshPR, SiebelAppFacade.PhysicalRenderer);
                                      PartialRefreshPR.prototype.Init = function () {
                                        SiebelAppFacade.PartialRefreshPR.superclass.Init.call(this);
                                        // To act when FieldChange method is raised at PM level and execute our 
                                custom code
                                        this.AttachPMBinding( "FieldChange", FieldChange );
                                      };
                                
                                      function ModifyLayout(){
                                        var controls = this.GetPM().Get("GetControls");
                                        var control = controls[ "JobTitle" ];
                                        var value = this.GetPM().ExecuteMethod( "GetFieldValue", control );
                                        var canShow = ( value ? true : false);
                                        var WorkPhoneNum = controls[ "WorkPhoneNum" ];
                                        var FaxPhoneNum = controls[ "FaxPhoneNum" ];
                                        if(canShow){
                                          $( "#WorkPhoneNum_Label" ).parent().show(); // We need to take the parent 
                                to get the whole div to hide
                                          $( "[name='" + WorkPhoneNum.GetInputName() + "']" ).parent().show();
                                          $( "#FaxPhoneNum_Label" ).parent().show();
                                          $( "[name='" + FaxPhoneNum.GetInputName() + "']" ).parent().show();
                                        }
                                        else{
                                          $( "#WorkPhoneNum_Label" ).parent().hide();
                                          $( "[name='" + WorkPhoneNum.GetInputName() + "']" ).parent().hide();
                                          $( "#FaxPhoneNum_Label" ).parent().hide();
                                          $( "[name='" + FaxPhoneNum.GetInputName() + "']" ).parent().hide();
                                        }
                                      }
                                
                                      function FieldChange (control, value, index) {
                                        if( control.GetName() === "JobTitle" ){
                                        ModifyLayout.call(this);
                                        }
                                      }
                                
                                      // We are overloading the standard PR ShowSelection to apply our customization
                                      // We ensure to first call the parent ShowSelection
                                      PartialRefreshPR.prototype.ShowSelection = function(index) {
                                        SiebelAppFacade.PartialRefreshPR.superclass.ShowSelection.call(this,index)
                                ;
                                        ModifyLayout.call(this);
                                      };
                                      return PartialRefreshPR;
                                    } ());
                                    return "SiebelAppFacade.PartialRefreshPR";
                                  });
                                }
                                

                                  Allowing Users to Drag and Drop Data Into List Applets

                                  The example in this topic describes how to allow users to select and move data from a spreadsheet to the Contact List applet. You cannot use a calculated field value for the Client PM User Properties.

                                  To allow users to select and move data into list applets

                                  1. Modify the list applet:

                                    1. Open Siebel Tools.

                                      For more information, see Using Siebel Tools.

                                    2. In the Object Explorer, click Applet.

                                    3. In the Applets list, query the Name property for Contact List Applet.

                                    4. In the Object Explorer, expand the Applet tree, and then click Applet User Prop.

                                    5. In the Applet User Properties list, add the following applet user properties.

                                      Name Value

                                      ClientPMUserProp

                                      EnableDragAndDropInList

                                      EnableDragAndDropInList

                                      TRUE

                                    6. Compile your modifications.

                                  2. Identify the columns that you must select and move:

                                    1. Log in to the client, navigate to the Contacts screen, and then the Contacts List.

                                    2. In the contact form, notice the required fields.

                                      Siebel Open UI uses an asterisk (red color) to indicate each required field. In the contact form, the Last Name and First Name fields are required.

                                  3. Create a spreadsheet:

                                    1. Open a spreadsheet application, such as Microsoft Excel.

                                    2. In the first row, add the column headers for the columns that you must select and move.

                                      • For each column name that you include, make sure the column name is identical to the column name that the list applet displays in the client.

                                      • Siebel Open UI does not require you to include all column headers. However, you must include all the required column headers that you noticed in Step 2.

                                      • You can include column headers in any order.

                                    3. Add data rows immediately after the column header row that you added in Step b.

                                      For example, add rows that include information about each contact, such as first name and last name.

                                    Your completed work might resemble the following spreadsheet:

                                    Sample spreadsheet
                                  4. Select and move the data:

                                    1. In the spreadsheet application, choose the cells that include the header and data information.

                                    2. Select and move the cells that you chose in Step a to the Contact List Applet in the Siebel application.

                                      Do the following to select and move cells in Excel. Your spreadsheet program might work differently:

                                      • Position the cursor over a corner of the selection area until Excel displays the cursor as a four-way arrow.

                                      • Right-click and hold down the mouse button over the cursor.

                                      • Move the selection area to the Contact List Applet.

                                      • Release the mouse button.

                                    3. Verify that Siebel Open UI added the data rows to the list applet.

                                    Expanding and Collapsing Applets

                                    This topic describes how to configure Siebel Open UI to display an applet as expanded or collapsed, by default.

                                    To expand and collapse applets

                                    1. Modify the applet:

                                      1. Open Siebel Tools.

                                        For more information about using Siebel Tools, see Using Siebel Tools.

                                      2. In the Object Explorer, click Applet.

                                      3. In the Applets list, query the Name property for the applet that you must modify.

                                        For example, query for SIS Account Entry Applet.

                                      4. In the Object Explorer, expand the Applet tree, and then click Applet User Property.

                                      5. In the Applet User Properties list, create two new applet user properties. Use values from the following table.

                                        Name Value

                                        ClientPMUserProp

                                        Default Applet Display Mode

                                        Default Applet Display Mode

                                        Use one of the following values:

                                        • Expanded. Siebel Open UI displays the applet in an expanded state, by default.

                                        • Collapsed. Siebel Open UI displays the applet in a collapsed state, by default.

                                      6. Compile your work.

                                    2. Modify the Web template:

                                      1. Identify the Web template that you must modify, and then open it for editing.

                                      2. Add the following code:

                                        <div od-type="form">
                                        <div od-if="Web Engine State Properties, IsPrintOff">
                                          <div class="od-context-SelectStyle">
                                        </div>
                                          <div class="siebui-collapsible-applet">
                                            <table datatable="0" summary="" width="100%" cellpadding="0"cellspacing="0" 
                                        border="0" align="center"
                                              <div class="siebui-collapsible-applet-header">
                                                <div od-include="CCTitle_Named"/>
                                                <div od-include="CCFormButtonsTop"/>
                                                <div od-type="error" type="Popup">
                                                  <table datatable="0" summary="" class="od-context-Applet" width="100%" 
                                        cellpadding="0"
                                        </div>
                                                <div class="siebui-collapsible-applet-content">
                                                  <div od-type="form-applet-layout">
                                                  </div>
                                                <div>
                                              <div>
                                            <table>
                                          <div>
                                        

                                        where:

                                        • siebui-collapsible-applet. Identifies the applet body.

                                        • siebui-collapsible-applet-header. Identifies the section where Siebel Open UI adds the expand button or the collapse button.

                                        • siebui-collapsible-applet-content. Identifies the section that Siebel Open UI expands or collapses.

                                    3. Test your work:

                                      1. Log in to the client.

                                      2. Navigate to the applet that you modified in Step 1.

                                      3. Verify that Siebel Open UI displays the applet as expanded or collapsed according to the value that you set for the Default Applet Display Mode applet user property in Step 1.

                                      4. Verify that Siebel Open UI displays the expand and collapse button correctly.

                                        If Siebel Open UI expands the applet, then it must display the following collapse icon in the the applet:

                                        If Siebel Open UI collapses the applet, then it must display the following expand icon in the applet:



                                      Customizing List Applets to Display a Box List

                                      This topic describes how to customize a list applet to display a box list. You customize how Siebel Open UI renders an applet, the content it displays, and the style that it uses in the client.

                                      To customize list applets to display a box list

                                      1. Log in to the client.

                                      2. Navigate to a view that displays a typical Siebel list applet.

                                        For example, navigate to the Accounts screen, and then the Accounts list.

                                        Notice that Siebel Open UI displays the typical predefined list.

                                      3. Open Windows Explorer, and then navigate to the following folder:

                                        INSTALL_DIR\applicationcontainer\webapps\siebel\scripts\siebel
                                        

                                        For example:

                                        C:\16.0\applicationcontainer\webapps\siebel\scripts\siebel
                                        
                                      4. Rename the existing jqgridrenderer.js file that resides in the folder you accessed in Step 3 to jqgridrenderer_original.js.

                                      5. Download the jqgridrenderer_tile.js file to the folder you accessed in Step 3.

                                        The jqgridrenderer_tile file prevents Siebel Open UI from initializing the jqgrid control and from rendering other fields in the grid. To get a copy of this file, see Article ID 1494998.1 on My Oracle Support.

                                      6. Rename the jqgridrenderer_tile.js file to jqgridrenderer.js.

                                      7. In the Siebel Open UI client, press the F5 key to refresh the screen.

                                        Siebel Open UI Client
                                      8. In Windows Explorer, navigate to the following folder:

                                        INSTALL_DIR\applicationcontainer\webapps\siebel\files\custom
                                        
                                      9. Use an editor to open the my-style.css file.

                                      10. Copy the following code into the theme_base.css file. This code configures Siebel Open UI to display account names in a series of vertical boxes:

                                        /*---------------------------------------------*/   
                                        /* Styles for alternate List display demo */   
                                        /*---------------------------------------------*/   
                                        .siebui-boxlist {   
                                          width: 100%;   
                                          height: 100%;   
                                          overflow: auto;   
                                        }   
                                        .siebui-boxlist-pager,.siebui-boxlist-items{   
                                          display: table-row;   
                                          white-space: nowrap;   
                                          width: 100%;   
                                        }   
                                        .siebui-boxlist-item, siebui-boxlist-item-selected {   
                                          padding: 100px 0px;   
                                          height: 40px;   
                                          border-radius: 5px;   
                                          float: left;   
                                          width: 120px;   
                                          overflow: hidden;   
                                          margin: 5px 12px;   
                                          color: #222!important;   
                                          text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7);   
                                          text-align: center;   
                                        }   
                                        .siebui-boxlist-item {   
                                          background: rgb(250, 250, 250);   
                                          background: -moz-linear-gradient(top, rgba(250, 250, 250, 1) 0%, rgba(225, 225, 
                                        225, 1) 100%);   
                                          background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, 
                                        rgba(250, 250, 250, 1)), color-stop(100%, rgba(225, 225, 225, 1)));   
                                          background: -webkit-linear-gradient(top, rgba(250, 250, 250, 1) 0%, rgba(225, 225, 
                                        225, 1) 100%);   
                                          border-bottom: 1px solid #AAA;   
                                          box-shadow: 0 0 3px rgba(0, 0, 0, 0.4);   
                                          -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.4);   
                                        }   
                                        .siebui-boxlist-item-selected {   
                                          background: rgb(250, 250, 250);   
                                          background: -moz-linear-gradient(top, rgba(249, 238, 167, 0.5) 0%, rgba(251, 236, 
                                        136, 0.5) 100%)!important;   
                                          background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, 
                                        rgba(249, 238, 167, 0.5)), color-stop(100%, rgba(251, 236, 136, 0.5)))!important;   
                                          background: -webkit-linear-gradient(top, rgba(249, 238, 167, 0.5) 0%, rgba(251, 
                                        236, 136, 0.5) 100%)!important;   
                                          border-bottom: 1px solid #AAA;   
                                          box-shadow: 0 0 3px rgba(0, 0, 0, 0.4);   
                                          -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.4);   
                                        }   
                                        /*---------------------------------------------*/   
                                        /* Styles for alternate List display demo */   
                                        /*---------------------------------------------*/
                                        
                                      11. Navigate to the Siebel Open UI client, and then press the F5 key to refresh the screen.

                                        The client displays the modified layout.

                                        Customizing List Applets to Render as Carousels

                                        The example in this topic describes how to customize Siebel Open UI to render a list applet as a carousel in Siebel Call Center. To view different example carousel styles and to get the code for these styles, see the http://sorgalla.com/projects/jcarousel Web site.

                                        To customize list applets to render as carousels

                                        1. Add records in the client:

                                          1. Open the client, navigate to the Contacts screen, and then click the Contact List link.

                                          2. Add the following contact.

                                            Field Value

                                            Last Name

                                            Aamos

                                            First Name

                                            Ray

                                          3. Click the link in the Last Name.

                                          4. Click the Affiliations link.

                                          5. In the Affiliations list, add four affiliations.

                                          6. Make sure you choose a different value in the Account field for each record. Accept default values for all other fields.

                                          7. Log out of the client.

                                        2. Add the JavaScript files that Siebel Open UI uses to render the carousel:

                                          1. Save the carouselrenderer.js file to the following folder:

                                            INSTALL_DIR\applicationcontainer\webapps\siebel\scripts\siebel\custom
                                            

                                            To get a copy of this file, see Article ID 1494998.1 on My Oracle Support.

                                            The carouselrenderer.js file is a physical renderer that bridges a JCarousel third-party control plug-in to the list presentation model that the listpmodel.js file defines. The List Applet and the Carousel applet use the same presentation model for the business logic that it uses to display each user interface. The only difference is how Siebel Open UI renders each applet.

                                          2. Save the jquery.jcarousel.js file to the following folder:

                                            INSTALL_DIR\applicationcontainer\webapps\siebel\scripts\3rdParty\jcarousel
                                            

                                            To get a copy of this file, see Article ID 1494998.1 on My Oracle Support. Oracle downloads and integrates this 3rdParty Carousel package into Siebel Open UI through the physical renderer. You must never modify these third-party plug-in files. If you require a configuration that the third-party plug-in does not meet, then you must modify the physical renderer instead of the third-party plug-in.

                                        3. Add the CSS file that the third-party uses:

                                          1. In Windows Explorer, navigate to the following folder:

                                            INSTALL_DIR\applicationcontainer\webapps\siebel\scripts\3rdParty
                                            
                                          2. Add the following subfolder hierarchy to the 3rdParty folder:

                                            \jcarousel\skins\tango\
                                            
                                          3. Save the skin.css file to the tango folder that you added in Step b:

                                            To get a copy of this file, see Article ID 1494998.1 on My Oracle Support.

                                        4. Add files to the manifest:

                                          1. Log in to a Siebel client with administrative privileges.

                                            For more information about the screens that you use in this step, see Configuring Manifests.

                                          2. Navigate to the Administration - Application screen, and then the Manifest Files view.

                                          3. In the Files list, add the following files. You must add a separate record for each file:

                                            siebel/custom/carouselrenderer.js   
                                            3rdParty/jcarousel/skins/tango/skin.css   
                                            files/theme-aurora.css
                                            

                                            Files that reside in the files folder are predefined files that you use in this example.

                                        5. Administer the manifest for the applet:

                                          1. Navigate to the Administration - Application screen, and then the Manifest Administration view.

                                          2. In the UI Objects list, specify the following applet.

                                            Field Value

                                            Type

                                            Applet

                                            Usage Type

                                            Physical Renderer

                                            Name

                                            Pharma Professional Affiliation From List Applet

                                          3. In the Object Expression list, add the following expression. Siebel Open UI uses this expression to render the applet on a desktop platform.

                                            Field Value

                                            Expression

                                            Desktop

                                            Level

                                            1

                                          4. In the Files list, add the following file:

                                            siebel/custom/carouselrenderer.js
                                            
                                        6. Administer the manifest for the Aurora theme:

                                          1. Navigate to the Manifest Expressions view.

                                          2. In the Expressions list, add the following expression.

                                            Field Value

                                            Name

                                            Aurora Theme

                                            Expression

                                            LookupName (OUI_THEME_SELECTION, Preference ("Behavior","DefaultTheme")) = "AURORA_THEME"

                                          3. Navigate to the Manifest Administration view.

                                          4. In the UI Objects list, specify the following object.

                                            Field Value

                                            Type

                                            Application

                                            Usage Type

                                            Theme

                                            Name

                                            PLATFORM DEPENDENT

                                          5. In the Object Expression list, add the following subexpression.

                                            Field Value

                                            Group Name

                                            Leave empty.

                                            Expression

                                            Aurora Theme

                                            Level

                                            1

                                            Operator

                                            Leave empty.

                                            Web Template Name

                                            Leave empty.

                                          6. In the Files list, add the following files:

                                            files/theme-aurora.css   
                                            3rdParty/jcarousel/skins/tango/skin.css
                                            
                                        7. Test your modifications:

                                          1. Clear the browser cache.

                                          2. Open the Siebel application, and then navigate to the contact that includes the affiliations that you added in Step 1.

                                          3. Make sure the affiliations view contains carousel data that runs together because no styling is defined for the carousel content. To fix this problem, do Step 8.

                                            Carousel data view
                                        8. Modify the styling that Siebel Open UI uses to render the view:

                                          1. Use a JavaScript editor to open the carouselrenderer.js file that you copied in Step 2.

                                          2. Locate the following code:

                                            itemMarkup += "</span><br>";
                                            
                                          3. Modify the code you located in Step b to the following. You remove the break:

                                            itemMarkup += "</span>";
                                            
                                          4. Use a JavaScript editor to open the skin.css file.

                                          5. Locate the following code:

                                            .jcarousel-skin-tango .jcarousel-item {   
                                              width: 75px;   
                                              height: 75px;   
                                            }
                                            
                                          6. Modify the code you located in Step e to the following. Bold font indicates the code that you must modify:

                                            .jcarousel-skin-tango .jcarousel-item {   
                                              width: 318px;   
                                              height: 75px;   
                                            }
                                            
                                          7. Locate the following code:

                                            .jcarousel-skin-tango .jcarousel-item-horizontal {   
                                              margin-left: 0;   
                                              margin-right: 10px;   
                                            }
                                            
                                          8. Modify the code you located in Step g to the following. Bold font indicates the code that you must modify:

                                            .jcarousel-skin-tango .jcarousel-item-horizontal {   
                                              margin-left: 10;   
                                              margin-right: 10px;   
                                              color: black;   
                                            }
                                            
                                        9. Test your modifications:

                                          1. Clear the browser cache.

                                          2. Refresh the view that you examined in Step 7.

                                          3. Make sure the styling no longer contains carousel data that overlaps, and that each record is displayed in its own block.


                                            Carousal data record display

                                          Customizing List Applets to Render as Maps

                                          A list applet can be configured to display a map instead of a standard list of records. When the list applet is configured to display a map, the following features are available:

                                          • Markers. A marker is displayed on the map at the location address for each record.

                                          • Contextual menu. Clicking a marker reveals a contextual menu with the following options:

                                            • View Details. Clicking this option opens a pop-up dialog box with details about the record associated with the marker.

                                            • Select. Clicking this option zooms in on the map to the location address associated with the marker record.

                                          • Tooltip. When you hover over a marker, a tooltip is revealed, showing the address associated with the record.

                                          • Map panning.

                                          • Map zooming.

                                          The example in this topic describes how to customize Siebel Open UI to render a list applet as a map in Siebel Open UI.

                                          To customize list applets to render as maps

                                          1. Add files to the manifest:

                                            1. Log in to a Siebel client with administrative privileges.

                                              For more information about the screens that you use in this step, see Configuring Manifests.

                                            2. Navigate to the Administration - Application screen, and then the Manifest Files view.

                                            3. In the Files list, add the following files. You must add a separate record for each file:

                                              siebel/mappmodel.js   
                                              siebel/maprenderer.js
                                              
                                          2. Administer the manifest for the applet:

                                            1. Navigate to the Administration - Application screen, and then the Manifest Administration view.

                                            2. In the UI Objects list, specify the following applet.

                                              Field Value

                                              Type

                                              Applet

                                              Usage Type

                                              Physical Renderer

                                              Name

                                              Applet Name

                                              Where Applet Name is the name of the applet in which you want the map to appear.

                                            3. In the Object Expression list, add the following expression. Siebel Open UI uses this expression to render the applet on a desktop platform.

                                              Field Value

                                              Expression

                                              Desktop

                                              Level

                                              1

                                            4. In the Files list, add the following file:

                                              siebel/custom/maprenderer.js
                                              
                                            5. In the UI Objects list, specify the following applet.

                                              Field Value

                                              Type

                                              Applet

                                              Usage Type

                                              Presentation Mode

                                              Name

                                              Applet Name

                                              Where Applet Name is the name of the applet in which you want the map to appear.

                                            6. In the Object Expression list, add the following expression. Siebel Open UI uses this expression to render the applet on a desktop platform.

                                              Field Value

                                              Expression

                                              Desktop

                                              Level

                                              1

                                            7. In the Files list, add the following file:

                                              siebel/custom/mappmodel.js
                                              
                                          3. Define the PM user properties:

                                            1. Open Siebel Tools.

                                              For more information about using Siebel Tools, see Using Siebel Tools.

                                            2. In the Object Explorer, click Applet.

                                            3. In the Applets list, query the Name property for the applet that you must modified in Step 2.

                                            4. In the Object Explorer, expand the Applet tree, and then click Applet User Property.

                                            5. In the Applet User Properties list, create four new applet user properties. Use values from the following table.

                                              Name Value

                                              MapMarkerLocation

                                              Business Component

                                              MapMarkerTitle

                                              Business Component

                                              MapSelectedRowImage

                                              The SVG image, as added in the CSS

                                              MapUnSelectedRowImage

                                              The SVG image, as added in the CSS

                                              When specifying the Value field for the MapMarkerLocation and the MapMarkerTitle, the business component specified must meet at least one of the following conditions in order to properly display the markers on the map:

                                              • It must be exposed in the list column of the list applet configured for the map.

                                              • It must be exposed as an applet control or list column of a sibling applet to the map applet of the same business component.

                                              • It must be set as a private field.

                                            6. Compile your work.

                                          4. Define the Web Template for the map:

                                            1. Open Siebel Tools.

                                              For more information about using Siebel Tools, see Using Siebel Tools.

                                            2. In the Object Explorer, expand the Applet tree, and then click Applet Web Template.

                                            3. In the Applet Web Templates list, add the following applet Web template.

                                              Property Description

                                              Name

                                              Enter text that describes the visualization behavior. For example, enter Map View to describe a map visualization.

                                              Type

                                              Edit List

                                              Web Template

                                              Choose a Web template that defines the desired visualization. For example, choose Applet Map.

                                            4. Make sure Siebel Tools defines ODH for the Web template that you defined in Step c.

                                              For example, make sure the Web Template Definition column in Siebel Tools includes ODH for Applet Map template. If your deployment requires a new Web template, then you must define it before you can define the applet Web template. For more information about configuring Web templates, see Configuring Siebel Business Applications.

                                          5. Test your modifications:

                                            1. Clear the browser cache.

                                            2. Refresh the list applet that you modified in Step 2.

                                            3. Make sure that it renders a map.

                                            Customizing List Applets with Class Names

                                            You can use class names at the record level to customize list applets. Using the Applet PM user property you can define a class name based on a condition that is evaluated for each row in the list applet. Before you begin to customize a list applet:

                                            • Configure a calculated field in a business component to use for applying the class name. Make sure the calculation produces an appropriate value that can be evaluated to produce the desired effect. For example, if you want to apply the class name when the calculated value is 1, 2, or 3, make sure that your calculation can handle all possible values it may encounter and produces the desired result.

                                            • If the calculated field is not exposed in the UI, expose it as a business component private field.

                                            • Configure the Applet PM User Property as follows (assuming the calculated field is named Record State):

                                              • Name: Record State Field, Value: Record_State

                                              • For each possible value for Record_State, create a name-value pair

                                                • Name: <State1>, Value <Class1>

                                                • Name: <Staten>, Value <Classn>

                                              • Configure the Applet PM User Property to include all of the previously configured name-value pairs: Name: ClientPMUserProp, Value: Record State Field, State1, State2, ... Staten

                                              For example, you can make a row in a list applet appear in a specific color if the revenue column has a value greater than $500. The following procedure explains how to implement this customization.

                                            To customize a list applet to display a row in color based on the value of a specific column

                                            1. Create a calculated field named "Record State" with the following calculated expression: [revenue > 500]

                                            2. Expose the field as a Business Component Private field.

                                            3. Configure the Presentation Model property as:

                                              1. Name: Record State field

                                              2. Value: Record State

                                            4. For each expected value of the expression (in this example, true or false), add name-value pairs:

                                              1. Name: true

                                              2. Value: siebui-row-good-revenue

                                              3. Name: false

                                              4. Name: siebui-row-avg-revenue

                                            5. Configure the properties to be exposed as Presentation Model properties:

                                              1. Name: ClientPMUserProp

                                              2. Value: Record State Field, true, false

                                                List applet rows having a revenue value greater than $500 have the siebui-row-good-revenue classname added. Rows that do not meet this criterion have the siebui-row-avg-revenue classname added. You can now add the a CSS definition to show the siebui-row-good-revenue rows in the spcified color if the revenue column has a value greater than $500.

                                              Disabling Oracle Maps

                                              Oracle Maps is configured as the default display for the Contact List Applet and the Contact Form Applet. You can disable the use of Oracle Maps by removing the configuration specified in Customizing List Applets to Render as Maps, or by using the following procedure.

                                              To disable Oracle Maps

                                              1. Run the Siebel application.

                                              2. Navigate to Sitemap, Administration Application, and then Manifest Application.

                                              3. Query for the Contact List Applet in the Name field.

                                              4. In Activate all the fields having Group Name as Map in the "Object Expression" Applet.

                                              5. Close the Siebel application.

                                              6. In Siebel Tools, navigate to Applet Query for Contact Form Applet -> Go to Control.

                                              7. Deactivate the Show Route control.

                                                Configuring the Focus in Siebel Applets

                                                If you modify an applet, then you must make sure that your modification does not adversely affect how Siebel Open UI sets the focus in this applet. Siebel Open UI does the following work to set the focus in applets:

                                                1. Sets the focus to the list column that includes a list column user property that specifies a default focus, such as DefaultFocus_Edit. This list column is a child object type of the list applet. For more information about default focus user properties, see the topic that describes Specifying the Default Applet Focus in Siebel Developer's Reference.

                                                2. If the list column user property described in Step 1 does not exist, then Siebel Open UI examines the columns of a row from first to last (left to right), and then places the focus on the first editable control that it encounters. It continues examining rows in this way until it finds an editable control, or until it reaches the last column of the last row.

                                                3. If Siebel Open UI does not find any editable controls in Step 2, then it sets the focus on the first non-editable control that the list applet displays.

                                                4. If Siebel Open UI does not find any non-editable controls in Step 3, then it sets the focus on the div container that it uses to display the list applet.

                                                Assume you do the following configuration:

                                                • Use Siebel Tools to add a large number of list columns to the SIS Account List Applet.

                                                • Make all list columns except the last list column read-only.

                                                • Log in to the client, navigate to the Account list view, and then run a query.

                                                In this situation, Siebel Open UI places the focus on the last list column that the list applet contains. The div container might not contain enough room to display this list column, the list column might not be visible in the applet, and you might not be able to use the applet because the focus is on a column that you cannot access.

                                                To configure the focus in list applets

                                                • Make sure your configuration does not set the focus to a list column or field that Siebel Open UI displays only partially or does not display at all.

                                                  You can use the following guidelines:

                                                  • If Siebel Open UI sets the focus to a list column that contains a DefaultFocus list column user property, then make sure it correctly displays this list column after you finish your modifications.

                                                  • If Siebel Open UI sets the focus to an editable or non-editable control, then make sure Siebel Open UI correctly displays this control after you finish your modifications.

                                                  To follow these guidelines, it might be necessary for you to rearrange the first-to-last sequence that Siebel Open UI uses to display list columns and controls in the list applet.

                                                  Adding Static Drilldowns to Applets

                                                  This topic describes how to add a static drill-down to a form applet so that the drill down object displays the name of the destination field, such as the primary account name, in the popup label when the user clicks a drill down link. If you do not do this configuration on a custom form applet that you create, then the drill down link displays the data from the field as the label, such as the account name, and not the caption text from the control. For information about how to configure a drill down on a form applet, see Article ID 539183.1 on My Oracle Support.

                                                  To add static drilldowns to applets

                                                  1. Create a static drilldown object on the applet that you must modify:

                                                    1. Open Siebel Tools.

                                                      For more information about using Siebel Tools, see Using Siebel Tools.

                                                    2. In the Object Explorer, click Applet.

                                                    3. In the Applets list, query the Name property for the applet that you must modify.

                                                    4. In the Object Explorer, expand the Applet tree, and then click Control.

                                                    5. In the Controls list, create the following control.

                                                      Property Value

                                                      Field

                                                      Specify the same field that you specified in the Hyperlink Field property of the drill down object that you created in Step a.

                                                      HTML Type

                                                      Text

                                                      For more information, see the topics about creating static drill down objects in Configuring Siebel Business Applications.

                                                    6. In the Object Explorer, click Applet.

                                                    7. In the Applets list, right-click the record of the applet you are modifying, and then choose Edit Web Layout.

                                                    8. Add the control that you created in Step e to the layout.

                                                    9. Compile your modifications.

                                                  2. Test your modifications:

                                                    1. Log in to the client.

                                                    2. Navigate to the applet you modified, and then make sure it displays your new static drill down object with the correct label.

                                                      For example, the following screen capture includes the correct Last Name label, and it displays the correct data in the field. If you do not do the configuration that this topic describes, then Siebel Open UI might display Last Name - Drilldown as the label and as the data in the field.

                                                      Last Name - Drilldown

                                                    Allowing Users to Change the Applet Visualization

                                                    This topic describes how you can modify an applet so that the user can change the applet visualization.The applet visualization is a type of configuration that specifies the layout that Siebel Open UI uses to display the applet. List, form, tile, map, grid, and carousel are each an example of an applet visualization.

                                                    Siebel Open UI allows the user to set some user preferences that determine how it displays an applet. The user can navigate to the User Preferences screen, and then use the Behavior view to set these preferences. For example, if the user chooses a value in the Visualization field of the Behavior view, such as Tile, and then navigates to a list applet that includes a tile configuration, such as the Opportunity List Applet, then Siebel Open UI displays this applet as a set of tiles. If the user clicks Grid in this applet, then Siebel Open UI displays the applet as a grid and sets Grid as the default layout only for the Opportunity List Applet. This local setting takes precedence over the global setting that the user sets in the Visualization field in the Behavior view. Siebel Open UI continues to use a tile layout for all other applets that include a tile configuration. In this situation, it displays the Opportunity List Applet as a grid even if the user logs out and then logs back in to the client.

                                                    The following figure includes the Contacts List that you modify in this topic so that it allows the user to change the applet visualization. It illustrates how Siebel Open UI displays this list after you successfully finish the configuration. The user can click one of the applet visualization buttons, such as Tile, to change the applet visualization.

                                                    Contacts List That Allows Users to Change the Applet Visualization

                                                    This topic describes how to configure the manifest for a custom applet visualization. For information about configuring the manifest for a predefined configuration, see Configuring Manifests for Predefined Visualizations.

                                                    To allow users to change the applet visualization

                                                    1. Modify the applet in Siebel Tools:

                                                      1. Open Siebel Tools.

                                                        For more information, see Using Siebel Tools.

                                                      2. In the Object Explorer, click Applet.

                                                      3. In the Applets list, query the Name property for the applet that you must modify.

                                                        For example, query the Name property for Contact List Applet.

                                                      4. In the Object Explorer, expand the Applet tree, and then click Applet Web Template.

                                                        The Applet Web Templates list displays the applet modes that Siebel Tools defines for the applet. For example, Base, Edit, and Edit List. For more information about these modes, see Displaying Applets Differently According to the Applet Mode.

                                                      5. In the Applet Web Templates list, add the following applet Web template.

                                                        Property Description

                                                        Name

                                                        Enter text that describes the visualization behavior. For example, enter Edit Tile to describe a tile visualization that allows the user to modify field values.

                                                        Sequence

                                                        Enter a value of 1000 or greater. To help you quickly recognize how Siebel Open UI uses a Web template, it is recommended that you use a value of:

                                                        • 1000 or greater for a Web template that Siebel Open UI uses to determine the applet visualization, such as a Tile.

                                                        • 1, 2, or 3 for a Web template that Siebel Open UI uses to determine the applet mode, such as Edit List.

                                                        Type

                                                        Specify the applet mode, such as Edit or Edit List.

                                                        Web Template

                                                        Choose a Web template that defines the desired visualization. For example, choose Applet Tile.

                                                      6. Make sure Siebel Tools defines an ODH for the Web template that you defined in Step e.

                                                        For example, make sure the "Definition" column of Web Template in Siebel Tools includes ODH for the Applet Tile Web template. If your deployment requires a new Web template, then you must define it before you can define the applet Web template. For more information about configuring Web templates, see Configuring Siebel Business Applications.

                                                      7. Repeat Step d and Step e for each Web template that your deployment requires.

                                                        Your completed work in Siebel Tools must resemble the following configuration.


                                                        Siebel Tools Configuration
                                                      8. Compile your modifications.

                                                    2. Configure the manifest for the applet that you modified in Step 1:

                                                      1. Log in to a Siebel client with administrative privileges.

                                                        For more information about the screens that you use in this step, see Configuring Manifests.

                                                      2. Navigate to the Administration - Application screen, and then the Manifest Files view.

                                                      3. In the Files list, add the following predefined files.

                                                        Field Value

                                                        Name

                                                        siebel/mappmodel.js

                                                        siebel/Tilescrollcontainer.js

                                                      4. Navigate to the Administration - Application screen, and then the Manifest Administration view.

                                                      5. In the UI Objects list, specify the following applet.

                                                        Field Value

                                                        Type

                                                        Applet

                                                        Usage Type

                                                        Web Template

                                                        Name

                                                        Contact List Applet

                                                      6. In the Object Expression list, add the expressions that Siebel Open UI uses to render the applet for this Web template in the various visualizations and applet modes that you defined in step 1.

                                                        Your completed work must resemble the following configuration. Use the Move Up, Move Down, Indent, and Outdent buttons to create the hierarchy. Note that you do not add files in the Files list for a Web template. You only add files for a presentation model or physical renderer. For more information about how to create these object expressions, see Configuring Manifests.


                                                        Object list configuration
                                                      7. Configure the manifest for the presentation model for each applet visualization that you defined in Step 1.

                                                        You add the UI object, object expressions, and files until the Manifest Administration screen resembles the following configuration.


                                                        Manifest Administration screen
                                                      8. Repeat Step g for each applet visualization that you configured in Siebel Tools.

                                                      9. Configure the physical renderer for each applet visualization that you defined in Step 1.

                                                        You add the UI object, object expressions, and files until the Manifest Administration screen resembles the following configuration:


                                                        Manifest Administration screen

                                                        If you do not do this administration, then Siebel Open UI uses the jqgridrenderer.js file for the physical renderer for a list applet, by default.

                                                    3. (Optional) Modify the strings that Siebel Open UI uses for the labels of the applet visualization buttons.

                                                      Do the following:

                                                      1. In Siebel Tools, choose the Screens application-level menu, click System Administration, and then click List of Values.

                                                      2. In the List of Values list, query the Type property for OUI_MODE_VISUALIZATION.

                                                      3. Make sure the Language-Independent Code property for each record that Siebel Tools displays in the List of Values list includes the same string that you modified in Step 2, Step g.

                                                        For example, make sure the Language-Independent Code property includes the following values:

                                                        Type Display Value Language-Independent Code

                                                        OUI_MODE_VISUALIZATION

                                                        Tile

                                                        Tile

                                                        Map

                                                        Map

                                                        Grid

                                                        Grid

                                                        Siebel Open UI uses the value that the Display Value property contains as the label for each applet visualization button. To view these buttons, see the first figure in this topic Allowing Users to Change the Applet Visualization.

                                                      4. Compile your modifications.

                                                      5. Log in to the client.

                                                      6. Navigate to the Administration - Application screen, and then the Manifest Expressions view.

                                                      7. In the Manifest Expressions view, modify the following strings, as necessary.

                                                        Name Expression

                                                        Tile

                                                        GetObjectAttr("VisualMode") = 'Tile'

                                                        Map

                                                        GetObjectAttr("VisualMode") = 'Map'

                                                        Grid

                                                        GetObjectAttr("VisualMode") = 'Grid'

                                                        For example, Siebel Open UI uses the Tile string in the Expression field for the Tile expression. You can modify these strings to meet your deployment requirements.

                                                    4. Test your modifications:

                                                      1. Log out of the client, and then log back in.

                                                      2. Navigate to the Contacts screen, and then the Contacts List view.

                                                      3. Verify that Siebel Open UI displays the Grid, Tile, and Map visualization buttons.

                                                        The visualization buttons must resemble the buttons that the first figure in this topic Allowing Users to Change the Applet Visualization displays.

                                                      4. Click each visualization button, and then verify that Siebel Open UI displays the visualization that is associated with the button that you click.

                                                      Configuring Manifests for Predefined Visualizations

                                                      The following table summarizes different manifest configurations for visualizations that come predefined with Siebel Open UI.It includes all the configuration required. For example, you do not configure any expressions or files for Web templates.

                                                      Table Configuring Manifests for Predefined Visualizations

                                                      Visualization Presentation Model Physical Render Web Template

                                                      Tile

                                                      Set Usage Type to Presentation Model.

                                                      Set Name to List Applet Name.

                                                      Add the following to the Files list:

                                                      siebel/listpmodel.js
                                                      

                                                      Set Usage Type to Physical Renderer.

                                                      Set Name to List Applet Name.

                                                      Add the following to the Files list:

                                                      siebel/
                                                      Tilescrollcontainer.j
                                                      s
                                                      

                                                      Set Usage Type to Web Template.

                                                      Set the Name to Edit Tile.

                                                      Grid

                                                      Same as Tile.

                                                      Set Usage Type to Physical Renderer.

                                                      Set Name to List Applet Name.

                                                      Add the following to the Files list:

                                                      siebel/
                                                      jqgridrenderer.js
                                                      

                                                      No manifest administration is necessary. You use Siebel Tools to configure Edit List Web templates.

                                                      Map

                                                      Same as Tile except add the following file:

                                                      siebel/mappmodel.js
                                                      

                                                      Same as Grid except add the following file:

                                                      siebel/custom/
                                                      siebelmaprenderer.js
                                                      

                                                      Set Usage Type to Web Template.

                                                      Set the Name to Edit Tile.

                                                      The following physical renderer modifies the List presentation model so that it can use the Google Map plugin for jQuery:

                                                      siebel/custom/siebelmaprenderer.js
                                                      

                                                      Oracle provides this file only as an example that does a map visualization for a list applet. Oracle does not support usage of siebelmaprenderer.js with Google Maps.

                                                        Displaying Applets Differently According to the Applet Mode

                                                        This topic describes how to configure Siebel Open UI to display applets differently according to the applet mode. It includes the following topics:

                                                        The applet mode is a type of behavior of an applet Web template that determines whether or not the user can or cannot create, edit, query, or delete Siebel CRM records in an applet. Edit, Edit List, Base, New, and Query are examples of applet modes. This topic describes how to modify the presentation model, or to modify the physical render and Web templates, to set the applet mode for an applet.

                                                        You can use a Web template to modify the physical layout of objects in the client that the Siebel Server renders as containers, such as the markup for an applet container. You can also use a physical renderer to modify how the client renders objects in the client, for example, to modify the markup that it uses to display a grid, menu, or tab.

                                                        For more information about applet modes and how to configure them in Siebel Tools, see the topic that describes how to control how the user creates, edits, queries, and deletes CRM data in Configuring Siebel Business Applications.

                                                          Configuring Siebel Open UI to Use Different Web Templates According to the Applet Mode

                                                          The example in this topic configures Siebel Open UI to display the same applet differently according to the following responsibility that Siebel CRM assigns to the current user:

                                                          • Display the applet as an editable list for the CEO.

                                                          • Display the applet as an editable grid for a Business Analyst.

                                                          To implement this example, you configure Siebel Open UI to use more than one Web template, where each of these Web templates reference a different ODH:

                                                          • You use the predefined Applet List (Base/EditList) Web template that references the CCAppletList_B_EL Web template. This template uses an editable list layout.

                                                          • You add a new Edit Grid List Web template. This template uses an editable grid layout.

                                                          You configure manifest expressions to determine the Web template that Siebel Open UI uses according to the user who is currently using the client.

                                                          This example configures the Contact List Applet to include the following applet Web templates:

                                                          • Edit List applet Web template that runs in edit list mode and uses the Applet List(Base/EditList) Web template.

                                                          • Edit Grid List applet Web template that runs in edit list mode and uses the Applet List Web template.

                                                          To Configure Siebel Open UI to Use Different Web Templates According to the Applet Mode
                                                          1. Examine the predefined Web template that this example uses:

                                                            1. Open Siebel Tools.

                                                              For more information, see Using Siebel Tools.

                                                            2. In the Object Explorer, click Web Template.

                                                            3. In the Web Templates list, query the Name property for the following value:

                                                              "Applet List (Base/EditList)"
                                                              
                                                            4. In the Object Explorer, select the Web Template, and then click Web Template File.

                                                            5. Notice the value that the Filename property contains.

                                                              This example uses the predefined Applet List (Base/EditList) Web template to display the applet in a list layout that the user can edit. This Web template uses the CCAppletList_B_EL Web template to display this layout. It is not necessary to modify this Web template for this example.

                                                          2. Add a custom Web template:

                                                            1. In the Object Explorer, click Web Template.

                                                            2. In the Web Templates list, add the following Web template.

                                                              Property Value

                                                              Name

                                                              Edit Grid List

                                                            3. In the Object Explorer, click Web Template File.

                                                            4. In the Web Template Files list, add the following Web template file.

                                                              Property Value

                                                              Name

                                                              Edit Grid List

                                                              Filename

                                                              Specify the file that Siebel Open UI must use to display this applet in a grid layout that the user can edit. For example:

                                                              EditGridList
                                                              
                                                          3. Modify the applet:

                                                            1. Do Step 1, but also add the following applet Web template to the Contact List Applet.

                                                              Property Value

                                                              Name

                                                              Edit Grid List

                                                              Web Template

                                                              Edit Grid List

                                                              You specify the Web template that you added in Step 1.

                                                              Type

                                                              Edit List

                                                            2. Compile your modifications.

                                                          4. Configure the manifest:

                                                            1. Log in to a Siebel client with administrative privileges.

                                                            2. Navigate to the Administration - Application screen, and then the Manifest Expressions view.

                                                              For more information about the screens that you use in this step, see Configuring Manifests.

                                                            3. In the Expressions list, add the following expressions.

                                                              Name Expression

                                                              Exp_User 1

                                                              GetProfileAttr("Primary Responsibility Name") = "Admin"

                                                              Exp_User 2

                                                              GetProfileAttr("Primary Responsibility Name") = "CEO"

                                                              For more information, see GetProfileAttr Method.

                                                            4. Navigate to the Manifest Administration view.

                                                            5. In the UI Objects list, specify the following applet.

                                                              Field Value

                                                              Type

                                                              Applet

                                                              Usage Type

                                                              Web Template

                                                              Name

                                                              Contact List Applet

                                                            6. In the Object Expression list, add expressions until this list resembles the following configuration.

                                                              Object Expression list

                                                            Note the following:

                                                            • You specify the same name that you examined in Step 1 for the Web Template Name for user 1.

                                                            • You specify the same name that you added in Step 2. For the Web Template Name for the user 2.

                                                            • You specify the expressions that you added in Step c. These expressions configure Siebel Open UI to display an edit list for a user who possesses the CEO responsibility, and a grid for a user who possesses the Business Analyst responsibility.

                                                            • If the Usage Type is Web Template, then you do not specify any files in the Files list.

                                                          5. Test your modifications:

                                                            1. Log in to the client as a user that Siebel CRM associates with the CEO responsibility, and then make sure Siebel Open UI uses the Edit List Web template to display the applet as a list.

                                                            2. Log out of the client, log back in to the client as a user that Siebel CRM associates with the Business Analyst responsibility, and then make sure Siebel Open UI uses the Edit Grid List Web template to display the applet as a grid.

                                                            Configuring Siebel Open UI to Use Different Physical Renderers and Presentation Models According to the Applet Mode

                                                            The example in this topic configures Siebel Open UI to download different presentation models and physical renderers depending on the following mode that the Contact List Applet must use:

                                                            • Edit List mode. Download a file named list_PM.js for the custom presentation model and a file named list_PR.js for the custom physical renderer.

                                                            • New mode. Download a file named new_PM.js for the custom presentation model and a file named new_PR.js for the custom physical renderer.

                                                            You can use any name for your custom presentation models and physical renderers.

                                                            To configure Siebel Open UI to use different physical renderers and presentation models according to the applet mode
                                                            1. Customize your presentation models and physical renderers.

                                                              In this example, assume you customized the following files:

                                                              • list_PM.js

                                                              • list_PR.js

                                                              • new_PM.js

                                                              • new_PR.js

                                                            2. Add your custom presentation models and physical renderers to the manifest:

                                                              1. Log in to the client with administrative privileges.

                                                              2. Navigate to the Administration - Application screen, and then the Manifest Files view.

                                                                For more information about the screens that you use in this step, see Configuring Manifests.

                                                              3. In the Files list, add the following files that you customized in Step 1.

                                                                Field Value

                                                                Name

                                                                siebel/custom/list_PM.js
                                                                

                                                                Name

                                                                siebel/custom/list_PR.js
                                                                

                                                                Name

                                                                siebel/custom/new_PM.js
                                                                

                                                                Name

                                                                siebel/custom/new_PR.js
                                                                
                                                            3. Configure the manifest for Edit List mode:

                                                              1. Navigate to the Manifest Administration view.

                                                              2. In the UI Objects list, specify the following applet.

                                                                Field Value

                                                                Type

                                                                Applet

                                                                Usage Type

                                                                Presentation Model

                                                                Name

                                                                Contact List Applet

                                                              3. In the Object Expression list, add the following expression.

                                                                Field Value

                                                                Expression

                                                                EditList

                                                                Level

                                                                1

                                                              4. In the Files list, add the following file:

                                                                siebel/custom/list_PM.js
                                                                

                                                                Siebel Open UI uses the file that you specify for the presentation model that it uses to display the Contact List Applet in Edit List mode.

                                                              5. In the UI Objects list, specify the following applet.

                                                                Field Value

                                                                Type

                                                                Applet

                                                                Usage Type

                                                                Physical Renderer

                                                                Name

                                                                Contact List Applet

                                                              6. In the Object Expression list, add the following expression.

                                                                Field Value

                                                                Expression

                                                                EditList

                                                                Level

                                                                1

                                                              7. In the Files list, add the following file:

                                                                siebel/custom/list_PR.js
                                                                

                                                                Siebel Open UI uses the file that you specify for the physical renderer that it uses to display the Contact List Applet in Edit List mode.

                                                            4. Configure the manifest for New mode:

                                                              1. In the UI Objects list, specify the following applet.

                                                                Field Value

                                                                Type

                                                                Applet

                                                                Usage Type

                                                                Presentation Model

                                                                Name

                                                                Contact List Applet

                                                              2. In the Object Expression list, add the following expression.

                                                                Field Value

                                                                Expression

                                                                New

                                                                Level

                                                                1

                                                              3. In the Files list, add the following file:

                                                                siebel/custom/new_PM.js
                                                                

                                                                Siebel Open UI uses the file that you specify for the presentation model that it uses to display the Contact List Applet in New mode.

                                                              4. In the UI Objects list, specify the following applet.

                                                                Field Value

                                                                Type

                                                                Applet

                                                                Usage Type

                                                                Physical Renderer

                                                                Name

                                                                Contact List Applet

                                                              5. In the Object Expression list, add the following expression.

                                                                Field Value

                                                                Expression

                                                                New

                                                                Level

                                                                1

                                                              6. In the Files list, add the following file:

                                                                siebel/custom/new_PR.js
                                                                

                                                                Siebel Open UI uses the file that you specify for the physical renderer that it uses to display the Contact List Applet in New mode.

                                                            5. Test your modifications.

                                                              Adding Custom User Preferences to Applets

                                                              This topic describes how to customize default applet behavior so that Siebel Open UI remembers the actions the user takes that effect this behavior. Expand and collapse is an example of this behavior. The example in this topic customizes a physical renderer to display the Opportunity List Applet applet as expanded or collapsed, by default, depending on how the user most recently displayed the applet. For example, assume the user navigates to the Opportunity List Applet, and then expands the applet.

                                                              Siebel Open UI then displays more records in the list. In the predefined behavior, if the user logs out of the client, logs back in to the client, and then navigates to this list again, then Siebel Open UI does not remember that the user expanded the list. This topic describes how to customize Siebel Open UI so that it remembers this user action.

                                                              You can use this example as a guideline to modify a predefined applet behavior or to create your own custom applet behavior.

                                                              To add custom user preferences to applets

                                                              1. Add the user preference to your custom physical renderer and presentation model:

                                                                1. Use a JavaScript editor to open your custom physical renderer that renders the Opportunity List Applet.

                                                                2. Add the custom user preference. You add the following code:

                                                                  var pm = this.GetPM();   
                                                                  
                                                                  var inputPS = CCFMiscUtil_CreatePropSet();   
                                                                  
                                                                  inputPS.SetProperty("Key", "user_preference_name");   
                                                                  
                                                                  inputPS.SetProperty("user_preference_name", "user_preference_value");   
                                                                  
                                                                  pm.OnControlEvent(siebConsts.get("PHYEVENT_INVOKE_CONTROL"), 
                                                                  pm.Get(siebConsts.get("SWE_MTHD_UPDATE_USER_PREF")), inputPS);   
                                                                  
                                                                  pm.SetProperty("user_preference_name", "user_preference_value");
                                                                  
                                                                3. Use a JavaScript editor to open your custom presentation model that renders the Opportunity List Applet.

                                                                4. Add a presentation model property that references the custom user preference. You add the following code

                                                                  var pm = this.GetPM();   
                                                                  
                                                                  var value = pm.Get("user_preference_name");
                                                                  

                                                                  You must make sure that Siebel Open UI derives your custom presentation model from the Presentation Model class. This class contains the logic that saves user preferences in presentation model properties. For more information, see Adding Presentation Model Properties That Siebel Servers Send to Clients.

                                                              2. Add the expand and collapse button:

                                                                1. Use a JavaScript editor to open the physical renderer that you edited in Step 1, Step a.

                                                                2. Add the following code to the end of the Show method:

                                                                  var id1 = this.GetPM().Get("GetFullId") + '-siebui-cust-expandcollapse-btn';   
                                                                  
                                                                  var expcolbtn = "<button " +   
                                                                  
                                                                  "id= '" + id1 + "' " +   
                                                                  
                                                                  "class= 'appletButton' " +   
                                                                  
                                                                  "aria-label=ExpandCollapse " +   
                                                                  
                                                                  "type=\"button\" " +   
                                                                  
                                                                  "title=ExpandCollapse " + ">" + "ExpandCollapse" + "</button>";
                                                                  
                                                                3. Add the following code to the end of the BindEvent method. This code binds the button click.

                                                                  $("#" + pm.Get("GetFullId") + "-" + "siebui-cust-expandcollapse-
                                                                  btn").bind("click", {ctx: this},   
                                                                  function (e) {   
                                                                  var self = e.data.ctx,   
                                                                  pm = self.GetPM();   
                                                                  SiebelJS.Log("Expand");   
                                                                  var inputPS = CCFMiscUtil_CreatePropSet();   
                                                                  var value = pm.Get ("Expand-Collapse");   
                                                                  inputPS.SetProperty("Key", "Expand-Collapse");   
                                                                  if(value === "Collapse")   
                                                                  {   
                                                                  inputPS.SetProperty("Expand-Collapse", "Expand");   
                                                                  pm.SetProperty("Expand-Collapse", "Expand");   
                                                                  }   
                                                                  else   
                                                                  {   
                                                                  inputPS.SetProperty("Expand-Collapse", "Collapse");   
                                                                  pm.SetProperty("Expand-Collapse", "Collapse");   
                                                                  }   
                                                                  pm.OnControlEvent(siebConsts.get("PHYEVENT_INVOKE_CONTROL"),pm.Get(siebConsts.g
                                                                  et("SWE_MTHD_UPDATE_USER_PREF")), inputPS);   
                                                                  if(value === "Collapse")   
                                                                  {   
                                                                  pm.SetProperty("Expand-Collapse", "Expand");   
                                                                  //Write Code to expand the applet   
                                                                  $("#s_" + pm.Get("GetFullId") + "_div").find(".siebui-collapsible-applet-
                                                                  content").show();   
                                                                  }   
                                                                  else   
                                                                  {   
                                                                  pm.SetProperty("Expand-Collapse", "Collapse");   
                                                                  //Write Code to collapse the applet   
                                                                  $("#s_" + pm.Get("GetFullId") + "_div").find(".siebui-collapsible-applet-
                                                                  content").hide();   
                                                                  }    
                                                                  }   
                                                                  );
                                                                  
                                                                4. Add the following code to the end of the ShowUI method. This code accesses the default value of the custom Expand-Collapse user preference, and then instructs Siebel Open UI to display the applet as expanded or collapsed according to the user preference value:

                                                                  PhysicalRenderer.prototype.ShowUI()   
                                                                  {   
                                                                  var pm = this.GetPM();   
                                                                  var value = pm.Get ("Expand-Collapse");   
                                                                  if(value === "Collapse")   
                                                                  {   
                                                                  //Write Code to collapse the applet 
                                                                  $("#s_" + pm.Get("GetFullId") + "_div").find(".siebui-collapsible-applet-
                                                                  content").hide();   
                                                                  }   
                                                                  else   
                                                                  {   
                                                                  //Write Code to expand the applet
                                                                  $("#s_" + pm.Get("GetFullId") + "_div").find(".siebui-collapsible-applet-
                                                                  content").show();   
                                                                  }   
                                                                  }
                                                                  
                                                                5. Use an HTML editor to open the HTML that Siebel Open UI uses to display the Opportunity List Applet, and then add the following code:

                                                                  $("#s_" + this.GetPM().Get("GetFullId") + "_div").find(".siebui-collapsible-
                                                                  applet").append(expcolbtn); 
                                                                  

                                                                  For more information about how to edit HTML code for an applet, see Customizing Logos, Themes, Backgrounds, Tabs, Styles, and Fonts.

                                                              3. Test your modifications:

                                                                1. Log in to the client, and then navigate to the Opportunity List Applet.

                                                                2. Click the expand and collapse button, and then verify that Siebel Open UI expands the applet.

                                                                3. Log out of the client, log back in to the client, navigate to the Opportunity List Applet, and then verify that Siebel Open UI displays the same expanded state that you set in Step 2, Step b.

                                                                Customizing Applets to Capture Signatures from Desktop Applications

                                                                A signature capture is an electronic capture of a user signature. This topic describes how to customize applets to capture signatures for calls in Siebel Open UI.

                                                                Note: This task uses Siebel Pharma as an example, but the procedure is similar when modifying a different application. For more information about migrating signatures from High Interactivity to Siebel Open UI, see the topic about configuring the digital migration service for signatures and the topic about rendering signatures in the user interface in Siebel Life Sciences Guide.

                                                                To customize applets to capture signatures for desktop applications

                                                                1. Copy a signature form applet that comes predefined with Siebel Open UI:

                                                                  1. Open Siebel Tools.

                                                                    For more information, see Using Siebel Tools.

                                                                  2. In the Object Explorer, click Applet.

                                                                  3. In the Applets list, locate an applet that includes a signature capture configuration.

                                                                    For this example, locate the following applet:

                                                                    LS Pharma Call Signature Form Applet
                                                                    
                                                                  4. Right-click the applet you located in Step c, and then click Copy Record.

                                                                  5. Add an _PUI suffix to the name. For example:

                                                                    LS Pharma Call Signature Form Applet_PUI
                                                                    
                                                                2. Add applet user properties:

                                                                  1. In the Object Explorer, expand the Applet tree, and then click Applet User Prop.

                                                                  2. In the Applet User Props list, add the following applet user properties.

                                                                    Name Value

                                                                    CanInvokeMethod: ClearSignature

                                                                    TRUE

                                                                    Signature Min Length

                                                                    5

                                                                3. Add controls:

                                                                  1. In the Object Explorer, click Control.

                                                                  2. In the Controls list, add the following controls.

                                                                    Name Description

                                                                    Clear Signature

                                                                    Set the MethodInvoked property to ClearSignature.

                                                                    Address

                                                                    Set the Field property to Address.

                                                                    Signature Capture

                                                                    Set the following properties:

                                                                    • Set the Field property to Signature

                                                                    • Set the HTML Type property to InkData.

                                                                    Disclaimer Text

                                                                    Signature Header Text

                                                                    Set the Read Only property to TRUE

                                                                4. Add an applet Web template:

                                                                  1. In the Object Explorer, click Applet Web Template.

                                                                  2. In the Applet Web Templates list, right-click the Base applet Web template, and then click Copy Record.

                                                                  3. Set the following properties.

                                                                    Property Value

                                                                    Name

                                                                    Edit

                                                                    Type

                                                                    Edit

                                                                5. Modify the drilldown objects:

                                                                  1. In the Object Explorer, click Drilldown Object.

                                                                  2. In the Drilldown Objects list, modify the following value of the Hyperlink Field property of the Apply Drilldown and the Cancel Drilldown drilldown objects.

                                                                    Old Value New Value

                                                                    Signature Header Text

                                                                    Address

                                                                6. Copy a predefined view:

                                                                  1. In the Object Explorer, click View.

                                                                  2. In the Views list, locate a view that includes a signature capture configuration.

                                                                    For this example, locate the following view:

                                                                    LS Pharma Call Signature Capture View
                                                                    
                                                                  3. Right-click the view you located in Step b, and then click Copy Record.

                                                                  4. Add an _PUI suffix to the name. For example:

                                                                    LS Pharma Call Signature Capture View_PUI
                                                                    
                                                                7. Modify the view Web template:

                                                                  1. In the Object Explorer, expand the View tree, expand the View Web Template tree, and then click View Web Template Item.

                                                                  2. In the View Web Template Items list, query the Name property for the following value:

                                                                    LS Pharma Call Signature Form Applet
                                                                    
                                                                  3. Modify the following value of the Name property.

                                                                    Old Value New Value

                                                                    LS Pharma Call Signature Form Applet

                                                                    LS Pharma Call Signature Form Applet_PUI

                                                                  4. Modify the following value of the Applet Mode property.

                                                                    Old Value New Value

                                                                    Base

                                                                    Edit

                                                                8. Modify a call form applet that comes predefined with Siebel Open UI:

                                                                  1. In the Object Explorer, click Applet.

                                                                  2. In the Applets list, locate an applet that includes a call form configuration.

                                                                    For this example, locate the following applet:

                                                                    Pharma Professional Call Form Applet
                                                                    
                                                                  3. In the Object Explorer, expand the Applet tree, and then click Applet User Prop.

                                                                  4. In the Applet User Props list, add the following applet user property.

                                                                    Name Value

                                                                    Signature Applet NamePUI

                                                                    LS Pharma Call Signature Form Applet_PUI

                                                                  5. In the Object Explorer, click Drilldown Object.

                                                                  6. In the Drilldown Objects list, query the Name property for Signature Capture Drilldown.

                                                                  7. Create a copy of this record, add the new drilldown to the record copy, and update the following field:

                                                                    Name New Value

                                                                    Signature Capture DrillDownPUI

                                                                    LS Pharma Call Signature Capture View_PUI

                                                                9. Modify the screen:

                                                                  1. In the Object Explorer, click Screen.

                                                                  2. In the Screens list, locate a screen that displays the signature form and call form applets.

                                                                    For this example, locate the following screen:

                                                                    LS Pharma Calls Screen
                                                                    
                                                                  3. In the Object Explorer, expand the Screen tree, and then click Screen View.

                                                                  4. In the Screen Views list, query the Name property for the following value:

                                                                    LS Pharma Call Signature Capture View
                                                                    
                                                                  5. Create a copy of the LS Pharma Call Signature Capture View, and update the following field:

                                                                    Old Value New Value

                                                                    LS Pharma Call Signature Capture View

                                                                    LS Pharma Call Signature Capture View_PUI

                                                                10. Compile your modifications.

                                                                11. Administer your customization:

                                                                  1. Log in to the client with administrative privileges.

                                                                  2. Navigate to the Administration - Application screen, and then the Views view.

                                                                  3. In the Views list, query the Name property for the following value:

                                                                    LS Pharma Call Signature Capture View
                                                                    
                                                                  4. Make a note of the field values of the responsibility that the client displays in the Responsibilities list.

                                                                  5. In the Views list, add the following view.

                                                                    Field Value

                                                                    View Name

                                                                    LS Pharma Call Signature Capture View_PUI

                                                                  6. In the Responsibilities list, add a responsibility. Use the same field values that you noted in Step c.

                                                                  7. Navigate to the Administration - Personalization screen, and then the Applets view.

                                                                  8. In the Applets list, add the following applet.

                                                                    Field Value

                                                                    Name

                                                                    LS Pharma Call Signature Form Applet_OUI

                                                                  9. In the Rule Sets list, add the following rule set.

                                                                    Field Value

                                                                    Name

                                                                    Pharma Call Default

                                                                    Sequence

                                                                    1

                                                                    Start Date

                                                                    Any date that has already occurred. For example, 01/01/2012.

                                                                12. Add the applet LS Pharma Call Signature Form Applet_PUI to the manifest administration as follows:

                                                                  1. Log in to the client with administrative privileges.

                                                                  2. Navigate to the Administration - Application screen, and then the Manifest Administration view.

                                                                  3. Under UI Objects, create a new record with the following values:

                                                                    Interactive Flag Type Usage Type Name

                                                                    N

                                                                    Applet

                                                                    Physical Renderer

                                                                    LS Pharma Call Signature Form Applet_PUI

                                                                  4. Under Object Expression, add the following child applet for the record created in Step c.

                                                                    Interactive Flag Expression Level

                                                                    N

                                                                    Desktop

                                                                    1

                                                                  5. Under Files, set the following file values:

                                                                    Interactive Flag Name

                                                                    N

                                                                    3rdParty/jquery.signaturepad.min.js

                                                                13. Test your modifications.

                                                                  1. Log in to the Siebel Open UI client (for example, Siebel Pharma application).

                                                                  2. Navigate to a contact call where you want to capture the signature.

                                                                  3. Click Sign to open the Signature Capture view.

                                                                  4. Verify that the Signature Capture view applet displays correctly - that is, according to the customizations detailed in this procedure.

                                                                  Customizing Applets to Capture Signatures for Siebel Mobile Applications

                                                                  A signature capture is an electronic capture of a user signature. This topic describes how to customize applets to capture signatures in Siebel Mobile applications.

                                                                  Note: This task uses Siebel Pharma as an example, but the procedure is similar when modifying a different application. For more information about migrating signatures from High Interactivity to Siebel Open UI, see the topic about configuring the digital migration service for signatures and the topic about rendering signatures in the user interface in Siebel Life Sciences Guide.

                                                                  To customize applets to capture signatures for Siebel Mobile applications

                                                                  1. Create a new business component and add a new field.

                                                                    1. Create a new Signature business component with the values shown in the following table.

                                                                      Property Value

                                                                      Name

                                                                      Signature BC

                                                                      Class

                                                                      CSSBCBase

                                                                    2. Create a new Signature business component field with the values shown in the following table.

                                                                      Property Value

                                                                      Name

                                                                      Signature

                                                                      Type

                                                                      DTYPE_NOTE

                                                                      Text Length

                                                                      16,383

                                                                      Force Activation

                                                                      Selected

                                                                  2. Create a new Form Applet with the values shown in the following table, adding an _PUI suffix to the name.

                                                                    Name Class Business Component

                                                                    Signature Form Applet_PUI

                                                                    CSSFrameBase

                                                                    Signature BC

                                                                  3. Add applet user properties:

                                                                    1. In the Object Explorer, expand the Applet tree, and then click Applet User Prop.

                                                                    2. In the Applet User Props list, add the following applet user properties as required.

                                                                      Name Value

                                                                      CanInvokeMethod: ClearSignature

                                                                      TRUE

                                                                      Parent BC Name, for example:

                                                                      • For Siebel Pharma, Parent BC Name is: Parent BC Name: Pharma Professional Call - Mobile

                                                                      • For Siebel Service, Parent BC Name is: Parent BC Name: Action

                                                                      For example:

                                                                      • Pharma Professional Call - Mobile

                                                                      • Action

                                                                      Signature Field

                                                                      Signature

                                                                      Signature Length

                                                                      1600

                                                                      Signature Min Length

                                                                      5

                                                                      Use Apply Drilldown

                                                                      Y

                                                                      Use Cancel Drilldown

                                                                      Y

                                                                  4. Add controls:

                                                                    1. In the Object Explorer, click Control.

                                                                    2. In the Controls list, add the following controls.

                                                                      Name Description

                                                                      Clear Signature

                                                                      Set the MethodInvoked property to ClearSignature.

                                                                      Address

                                                                      Set the Field property to Address.

                                                                      Note: You can create other fields such as Contact First Name in addition to the Address field as required.

                                                                      Signature Capture

                                                                      Set the following properties:

                                                                      • Set the Field property to Signature.

                                                                      • Set the HTML Type property to InkData.

                                                                      Apply Signature

                                                                      Set the MethodInvoked property to ApplySignature.

                                                                      Cancel Signature

                                                                      Set the MethodInvoked property to CancelSignature.

                                                                  5. Add an applet Web template:

                                                                    1. In the Object Explorer, click Applet Web Template.

                                                                    2. In the Applet Web Templates list, right-click and select new record.

                                                                    3. Set the following properties.

                                                                      Property Value

                                                                      Name

                                                                      Edit

                                                                      Type

                                                                      Edit

                                                                      Web Template

                                                                      SIA Applet Form Grid Layout - No Menu_OUI

                                                                  6. Create the following new drilldown objects:

                                                                    1. In the Object Explorer, click Drilldown Object.

                                                                    2. In the Drilldown Objects list, configure the values shown in the following table as required for the Apply Drilldown and the Cancel Drilldown drilldown objects.

                                                                      Note: The values shown in the following table (for View, Business Component, and so on) are examples only - you can choose a different view and business component as required.

                                                                      Name Hyperlink Field View Source Field Business Component Destination Field

                                                                      Apply Drilldown

                                                                      Address

                                                                      LS Pharma Professional Call Execute View - Mobile

                                                                      Activity Id

                                                                      Pharma Professional Call - Mobile

                                                                      Id

                                                                      Cancel Drilldown

                                                                      Address

                                                                      LS Pharma Professional Call Execute View - Mobile

                                                                      Activity Id

                                                                      Pharma Professional Call - Mobile

                                                                      Id

                                                                  7. Expose the Controls in the Applet Web Template item as follows:

                                                                    1. In the Object Explorer, click Applet.

                                                                    2. Select Applet "Signature Form Applet_PUI", then right-click and select Edit Web Layout.

                                                                    3. Select Edit mode.

                                                                    4. Select and move the Signature field and the Apply Signature, Cancel Signature, and Clear Signature buttons on the Web Layout.

                                                                  8. Compile your modifications.

                                                                  9. Add the applet Signature Form Applet_PUI to the manifest administration as follows:

                                                                    1. Log in to the client with administrative privileges.

                                                                    2. Navigate to the Administration - Application screen, and then the Manifest Administration view.

                                                                    3. Under UI Objects, create a new record with the following values:

                                                                      Interactive Flag Type Usage Type Name

                                                                      N

                                                                      Applet

                                                                      Physical Renderer

                                                                      Signature Form Applet_PUI

                                                                    4. Under Object Expression, add the following child applet for the record created in Step c.

                                                                      Interactive Flag Expression Level

                                                                      N

                                                                      <Empty>

                                                                      2

                                                                      N

                                                                      Mobile

                                                                      1

                                                                    5. Under Files, set the following file values:

                                                                      Interactive Flag Name

                                                                      N

                                                                      3rdParty/jquery.signaturepad.min.js

                                                                      N

                                                                      siebel/signviewpr.js

                                                                    6. Under UI Objects, create a new record with the following values:

                                                                      Interactive Flag Type Usage Type Name

                                                                      N

                                                                      Applet

                                                                      Presentation Model

                                                                      Signature Form Applet_PUI

                                                                    7. Under Object Expression, add the following child applet for the record created in step f.

                                                                      Interactive Flag Expression Level

                                                                      N

                                                                      Mobile

                                                                      1

                                                                    8. Under Files, set the following file values:

                                                                      Interactive Flag Name

                                                                      N

                                                                      siebel/signviewpm.js

                                                                  10. Test your modifications.

                                                                    1. Log in to the Siebel Open UI client.

                                                                    2. Navigate to a view where the Signature Form Applet_PUI is exposed.

                                                                    3. Verify that the Signature Capture view applet displays correctly - that is, according to the customizations detailed in this procedure.

                                                                    Customizing Controls

                                                                    This topic describes how to customize a control. It includes the following information:

                                                                    This book includes a number of other topics that also customize controls. For more information about:

                                                                      Creating and Managing Client-Side Controls

                                                                      The example in this topic describes how to create a text box that the Siebel Open UI client displays, and is not represented on the Siebel server. This is a Siebel Open UI client implementation, and as such, data will not be maintained after the user navigates away from the view containing this type of control. You can also create similar controls, such as date/time, check box, combobox, and so on.

                                                                      This example shows how to configure client-side controls in list applets, however, the same principals can be applied to form applets.

                                                                      To create controls in the client

                                                                      1. Create a custom presentation model:

                                                                        1. Use a JavaScript editor to create a new file named clientctrlpmodel.js. Save this file in the following folder:

                                                                          siebel\custom
                                                                          

                                                                          For more information about:

                                                                        2. Add the following code to the file that you created in Step a.

                                                                          This code does the basic set up:

                                                                          if( typeof( SiebelAppFacade.ClientCtrlPModel ) === "undefined" ){   
                                                                            SiebelJS.Namespace( 'SiebelAppFacade.ClientCtrlPModel' );   
                                                                            //Module with its dependencies   
                                                                            define("siebel/custom/clientctrlpmodel", [], function () {   
                                                                            SiebelAppFacade.ClientCtrlPModel = ( function(){   
                                                                              var consts  = SiebelJS.Dependency( "SiebelApp.Constants" );    
                                                                              /* *   
                                                                              * Constructor Function - ClientCtrlPModel   
                                                                              *   
                                                                              * Parameter - Be a good citizen. Pass All parameter to superclass.    
                                                                              * */   
                                                                              function ClientCtrlPModel(proxy){   
                                                                                var m_recordset = [];   
                                                                                SiebelAppFacade.ClientCtrlPModel.superclass.constructor.call( this, proxy);
                                                                          
                                                                        3. Add the client control:

                                                                                this.AddMethod("AddClientControl", null, { core : true } );       
                                                                                // add into method array   
                                                                                this.GetClientRecordSet = function( ) {   
                                                                                  return m_recordset ;   
                                                                                };   
                                                                              }
                                                                          

                                                                          For more information, see AddMethod Method and AddClientControl Method.

                                                                        4. Extend the ListPresentationModel object:

                                                                              /* Siebel OpenUI uses the ListPresentationModel object to initialize every 
                                                                          list applet. So, to maintain the functionality that ListPresentationModel 
                                                                          provides, you extend it.*/   
                                                                              SiebelJS.Extend( ClientCtrlPModel, SiebelAppFacade.ListPresentationModel );   
                                                                              ClientCtrlPModel.prototype.Init = function(){   
                                                                                SiebelAppFacade.ClientCtrlPModel.superclass.Init.call( this );
                                                                          
                                                                        5. Determine whether or not Siebel Open UI has removed the focus from the field in the applet, and then temporarily store the value that the user entered in the control:

                                                                                /* Attach Post Handler for LeaveField */   
                                                                                this.AddMethod( "LeaveField", PostLeaveField, { sequence : false, scope : 
                                                                          this } );
                                                                          

                                                                          For more information, see LeaveField Method and PreGetFormattedFieldValue Method.

                                                                        6. Get the format that the field uses to store the value for the control:

                                                                                /* Attach Pre Handler for GetFormattedFieldValue */   
                                                                                this.AddMethod("GetFormattedFieldValue", PreGetFormattedFieldValue, { 
                                                                          sequence : true, scope : this } );   
                                                                                /* Attach Handler for Delete Record Notification as well */   
                                                                                this.AttachNotificationHandler( consts.get( 
                                                                          "SWE_PROP_BC_NOTI_DELETE_RECORD" ),       HandleDeleteNotification );
                                                                          

                                                                          For more information, see GetFormattedFieldValue Method.

                                                                        7. Get the data from memory stored in Step f, and then display this data in the client control:

                                                                          function PreGetFormattedFieldValue(control, bUseWS, recIndex, returnStructure){   
                                                                            if (utils.IsEmpty(recIndex)){   
                                                                              recIndex = this.Get("GetSelection");   
                                                                            }   
                                                                            if (recIndex >=0) {   
                                                                              var clientObj = this.GetClientRecordSet();   
                                                                              var recordSet=this.Get("GetRawRecordSet");   
                                                                              var id = recordSet[recIndex]["Id"];   
                                                                              var flag = false;   
                                                                              var value;   
                                                                              switch(control.GetName()){   
                                                                                case "TestEdit":   
                                                                                  value = recordSet[recIndex]["Name"];   
                                                                                  flag = true;   
                                                                                  break;   
                                                                              }   
                                                                              if (flag){   
                                                                                if( clientObj[id] && clientObj[id][control.GetName()] ){   
                                                                                  value = clientObj[id][control.GetName()];   
                                                                                }   
                                                                                else if (clientObj[id]){   
                                                                                  clientObj[id ][control.GetName()] = value;   
                                                                                }   
                                                                              else{   
                                                                                  var recordclient = {};   
                                                                                  recordclient[control.GetName()] = value;   
                                                                                  clientObj[id] = recordclient;   
                                                                                }   
                                                                                returnStructure[ "CancelOperation" ] = true;   
                                                                                returnStructure[ "ReturnValue" ]     = value;   
                                                                              }   
                                                                            }   
                                                                          }
                                                                          

                                                                          For more information, see PreGetFormattedFieldValue Method.

                                                                        8. Save the value after the user leaves the client control:

                                                                          function PostLeaveField( control, value, notLeave, returnStructure ){   
                                                                            var clientObj = this.GetClientRecordSet();   
                                                                            var currSel = this.Get( "GetSelection" );   
                                                                            var recordSet=this.Get("GetRawRecordSet");   
                                                                            var id = recordSet[currSel]["Id"];   
                                                                            if (clientObj[id]){   
                                                                              switch(control.GetName()){   
                                                                                case "TestEdit":   
                                                                                  clientObj[id][control.GetName()] = returnStructure[ "ReturnValue" ] ;    
                                                                                  break;   
                                                                              }   
                                                                            }   
                                                                          }
                                                                          

                                                                          For more information, see PreGetFormattedFieldValue Method.

                                                                        9. Delete the reference to the record data that Siebel Open UI stored in the client for the control:

                                                                              function HandleDeleteNotification(propSet){   
                                                                                var activeRow = propSet.GetProperty( consts.get( 
                                                                          "SWE_PROP_BC_NOTI_ACTIVE_ROW" ) );   
                                                                                if( activeRow  === this.Get( "GetSelection" ) ){   
                                                                                  var delObj = this.GetClientRecordSet();   
                                                                                  delObj[ activeRow ] = null;   
                                                                                }   
                                                                              }
                                                                          

                                                                          For more information, see HandleDeleteNotification Method.

                                                                        10. Create a property set for the control.

                                                                          For this example, you use the following code to create a property set for the text box control:

                                                                              ClientCtrlPModel.prototype.UpdateModel = function(psInfo){   
                                                                              /// Specify the property set for Edit box   
                                                                              SiebelAppFacade.ClientCtrlPModel.superclass.UpdateModel.call( this, psInfo );   
                                                                              var ctrlTxtInfo = SiebelAppFacade.PresentationModel.GetCtrlTemplate 
                                                                          ("TestEdit", "Test Edit", consts.get( "SWE_CTRL_TEXTAREA" ), 1);
                                                                          

                                                                          For more information about this code, see Creating Property Sets for Client Side Controls.

                                                                        11. Add the property set information so that Siebel Open UI can add it to the proxy:

                                                                          this.ExecuteMethod( "AddClientControl", ctrlTxtInfo );
                                                                          
                                                                        12. Return the ClientCtrlPModel that you set up in Step b:

                                                                              };   
                                                                              return ClientCtrlPModel;   
                                                                              } ());   
                                                                              return "SiebelAppFacade.ClientCtrlPModel";   
                                                                            });   
                                                                          }
                                                                          
                                                                      2. Configure the manifest:

                                                                        1. Log in to a Siebel client with administrative privileges.

                                                                        2. Navigate to the Administration - Application screen, and then the Manifest Files view.

                                                                        3. In the Files list, add the following new files.

                                                                          Field Value

                                                                          Name

                                                                          siebel/custom/clientctrlpmodel.js
                                                                          
                                                                        4. Navigate to the Administration - Application screen, and then the Manifest Administration view.

                                                                        5. In the UI Objects list, specify the following applet.

                                                                          Field Value

                                                                          Type

                                                                          Applet

                                                                          Usage Type

                                                                          Presentation Model

                                                                          Name

                                                                          Account List Applet

                                                                        6. In the Object Expression list, add the following expression. The physical renderer uses this expression to render the applet in a desktop platform.

                                                                          Field Value

                                                                          Expression

                                                                          Desktop

                                                                          Level

                                                                          1

                                                                        7. In the Files list, add the following file:

                                                                          siebel/custom/clientctrlpmodel.js
                                                                          
                                                                        8. To refresh the manifest, log out of the client, and then log back in to the client.

                                                                      3. Test your work:

                                                                        1. Navigate to any list applet, and then verify that it displays the control that you added.

                                                                          In Step 1, Step b, you extended the ListPresentationModel object that Siebel Open UI uses to display every list applet. So, you can navigate to any list applet.

                                                                        Creating Property Sets for Client- Side Controls

                                                                        You can use the following code to create a property set for a control that Siebel Open UI displays in the client:

                                                                        ClientCtrlPModel.prototype.UpdateModel = function(psInfo){   
                                                                        /// Specify the property set for the control   
                                                                        SiebelAppFacade.ClientCtrlPModel.superclass.UpdateModel.call( this, psInfo );   
                                                                        var variable_name= SiebelAppFacade.PresentationModel.GetCtrlTemplate   
                                                                          ("control_name", "display_name", consts.get( "control_type" ), column_index );   
                                                                            ctrlComboInfo.SetPropertyStr(consts.get("control_property"), 
                                                                        "property_attribute")
                                                                        

                                                                        where:

                                                                        • control_name, display_name, control_type, and column_index are arguments of the GetCtrlTemplate method. For more information about these arguments, see GetCtrlTemplate Method.

                                                                        • control_property specifies a control property. For example, SWE_PROP_WIDTH specifies the width of the control, in pixels.

                                                                        • property_attribute specifies an attribute of the control that control_property specifies. For example, 200 sets the width of the control to 200 pixels.

                                                                        For example, the following code creates a variable named ctrlComboInfo for the TestCombo control. It sets the width and height of this control to 200 pixels, and centers it

                                                                        ClientCtrlPModel.prototype.UpdateModel = function(psInfo){   
                                                                        /// Specify the property set for the control   
                                                                        SiebelAppFacade.ClientCtrlPModel.superclass.UpdateModel.call( this, psInfo );   
                                                                        ClientCtrlPModel.prototype.UpdateModel = function(psInfo){   
                                                                        /// Specify the property set for the control   
                                                                        SiebelAppFacade.ClientCtrlPModel.superclass.UpdateModel.call( this, psInfo );   
                                                                        var ctrlComboInfo = SiebelAppFacade.PresentationModel.GetCtrlTemplate ("TestCombo",   
                                                                          "Test Drop Down", consts.get( "SWE_CTRL_COMBOBOX" ), 10 );   
                                                                            ctrlComboInfo.SetPropertyStr(consts.get("SWE_PROP_WIDTH"), "200")   
                                                                            ctrlComboInfo.SetPropertyStr(consts.get("SWE_PROP_HEIGHT"), "200")   
                                                                            ctrlChkboxInfo.SetPropertyStr(consts.get("SWE_PROP_JUSTIFICATION"), "center");
                                                                        

                                                                        For more information about control_property and property_attribute, see Properties That You Can Specify for Client-Side Controls. For more information about other control properties that you can specify, such as Sort or Vertical Scroll, see the topic that describes the control Applet Object Type in Siebel Object Types Reference.

                                                                          Properties That You Can Specify for Client-Side Controls

                                                                          The following table describes the properties that you can specify for controls. The Comparable Applet Control or Description column of this table includes the name of the applet control property that is similar to the SWE control property. If no applet control property is similar to the SWE control property, then this column includes a description. For more information about these applet control properties, see the topic that describes controls in the applet object types section of Siebel Object Types Reference.

                                                                          Table Properties That You Can Specify for Controls

                                                                          SWE Control Property Comparable Applet Control or Description

                                                                          SWE_PROP_CURR_FLD

                                                                          Identifies the field that is currently chosen.

                                                                          SWE_PROP_CASE_SENSITIVE

                                                                          Specifies to make text in the control case-sensitive.

                                                                          SWE_PROP_DISP_FORMAT

                                                                          Display Format

                                                                          SWE_PROP_DISP_MODE

                                                                          HTML Display Mode

                                                                          SWE_PROP_DISP_MAX_CHARS

                                                                          HTML Max Chars Displayed

                                                                          SWE_PROP_DISP_NAME

                                                                          Specifies the label that Siebel Open UI uses to identify this control in the client.

                                                                          SWE_PROP_FLD_NAME

                                                                          Field Name

                                                                          SWE_PROP_HEIGHT

                                                                          HTML Height

                                                                          SWE_PROP_HTML_ATTRIBUTE

                                                                          HTML Attributes

                                                                          SWE_PROP_IS_BOUND_PICK

                                                                          Specifies that the control is a bound picklist.

                                                                          SWE_PROP_IS_ENCODE

                                                                          HTML Display Mode

                                                                          SWE_PROP_INPUTMETHOD

                                                                          MethodInvoked

                                                                          SWE_PROP_JUSTIFICATION

                                                                          Text Alignment

                                                                          SWE_PROP_LABEL_JUSTIFICATION

                                                                          Specifies the text alignment for a column header that Siebel Open UI displays in a list control.

                                                                          SWE_PROP_MAX_SIZE

                                                                          HTML Max Chars Displayed

                                                                          SWE_PROP_NAME

                                                                          Name

                                                                          SWE_PROP_PICK_APLT

                                                                          Pick Applet

                                                                          SWE_PROP_POPUP_HEIGHT

                                                                          Specifies the height of the popup dialog box, in pixels.

                                                                          SWE_PROP_PROMPT

                                                                          Prompt Text

                                                                          SWE_PROP_POPUP_WIDTH

                                                                          Specifies the width of the popup dialog box, in pixels.

                                                                          SWE_PROP_IS_DYNAMIC

                                                                          Specifies whether or not Siebel Open UI dynamically displays values in the control.

                                                                          SWE_PROP_SPAN

                                                                          Specifies to span control contents across multiple fields. This property is not applicable for list controls.

                                                                          SWE_PROP_SEQ

                                                                          HTML Sequence

                                                                          SWE_PROP_TYPE

                                                                          Type, HTML Type, or Field Retrieval Type

                                                                          SWE_PROP_WIDTH

                                                                          Width

                                                                          SWE_PROP_COLINDEX

                                                                          Specifies the index number of a column.

                                                                          SWE_PROP_ICON_MAP

                                                                          Bitmap

                                                                          SWE_PROP_IS_SORTABLE

                                                                          Sort

                                                                            Text Copy of the Client Control Presentation Model File

                                                                            The following code from the clientctrlpmodel.js file adds example controls to the client. You can examine this code for your reference. To get a copy of this file, see Article ID 1494998.1 on My Oracle Support:

                                                                            if( typeof( SiebelAppFacade.ClientCtrlPModel ) === "undefined" ){   
                                                                              SiebelJS.Namespace( 'SiebelAppFacade.ClientCtrlPModel' );   
                                                                              //Module with its dependencies   
                                                                              define("siebel/custom/clientctrlpmodel", [], function () {   
                                                                              SiebelAppFacade.ClientCtrlPModel = ( function(){   
                                                                                var consts  = SiebelJS.Dependency( "SiebelApp.Constants" );    
                                                                                /* *   
                                                                                * Constructor Function - ClientCtrlPModel   
                                                                                *   
                                                                                * Parameter - Be a good citizen. Pass All parameter to superclass.    
                                                                                * */   
                                                                                function ClientCtrlPModel(proxy){   
                                                                                  var m_recordset = [];   
                                                                                  SiebelAppFacade.ClientCtrlPModel.superclass.constructor.call( this, proxy);   
                                                                                  this.AddMethod( "AddClientControl", null, { core : true } );       
                                                                                  // add into method array   
                                                                                  this.GetClientRecordSet = function( ) {   
                                                                                    return m_recordset ;   
                                                                                  };   
                                                                                }   
                                                                                /* Siebel OpenUI uses the ListPresentationModel object to initialize every list 
                                                                            applet. So, to maintain the functionality that ListPresentationModel provides, you 
                                                                            extend it.*/   
                                                                                SiebelJS.Extend( ClientCtrlPModel, SiebelAppFacade.ListPresentationModel );   
                                                                                ClientCtrlPModel.prototype.Init = function(){   
                                                                                  SiebelAppFacade.ClientCtrlPModel.superclass.Init.call( this );   
                                                                                  /* Attach Post Handler for LeaveField */   
                                                                                  this.AddMethod( "LeaveField", PostLeaveField, { sequence : false, scope : this 
                                                                            } );   
                                                                                  /* Attach Pre Handler for GetFormattedFieldValue */   
                                                                                  this.AddMethod("GetFormattedFieldValue", PreGetFormattedFieldValue, { sequence 
                                                                            : true, scope : this } );   
                                                                                  /* Attach Handler for Delete Record Notification as well */   
                                                                                  this.AttachNotificationHandler( consts.get( "SWE_PROP_BC_NOTI_DELETE_RECORD" 
                                                                            ),       HandleDeleteNotification );   
                                                                                };   
                                                                                function PreGetFormattedFieldValue(control, bUseWS, recIndex, returnStructure){   
                                                                                  if (utils.IsEmpty(recIndex)){   
                                                                                    recIndex = this.Get("GetSelection");   
                                                                                  }   
                                                                                  if (recIndex >=0) {   
                                                                                    var clientObj = this.GetClientRecordSet();   
                                                                                    var recordSet=this.Get("GetRawRecordSet");   
                                                                                    var id = recordSet[recIndex]["Id"];   
                                                                                    var flag = false;   
                                                                                    var value;   
                                                                                    switch(control.GetName()){   
                                                                                      case "TestEdit":   
                                                                                        value = recordSet[recIndex]["Name"];   
                                                                                        flag = true;   
                                                                                        break;   
                                                                                    }   
                                                                                    if (flag){   
                                                                                      if( clientObj[id] && clientObj[id][control.GetName()] ){   
                                                                                        value = clientObj[id][control.GetName()];   
                                                                                      }   
                                                                                      else if (clientObj[id]){   
                                                                                        clientObj[id ][control.GetName()] = value;   
                                                                                      }   
                                                                                    else{   
                                                                                        var recordclient = {};   
                                                                                        recordclient[control.GetName()] = value;   
                                                                                        clientObj[id] = recordclient;   
                                                                                      }   
                                                                                      returnStructure[ "CancelOperation" ] = true;   
                                                                                      returnStructure[ "ReturnValue" ]     = value;   
                                                                                    }   
                                                                                  }   
                                                                                }   
                                                                                function PostLeaveField( control, value, notLeave, returnStructure ){   
                                                                                  var clientObj = this.GetClientRecordSet();   
                                                                                  var currSel = this.Get( "GetSelection" );   
                                                                                  var recordSet=this.Get("GetRawRecordSet");   
                                                                                  var id = recordSet[currSel]["Id"];   
                                                                                  if (clientObj[id]){   
                                                                                    switch(control.GetName()){   
                                                                                      case "TestEdit":   
                                                                                        clientObj[id][control.GetName()] = returnStructure[ "ReturnValue" ] ;    
                                                                                        break;   
                                                                                    }   
                                                                                  }   
                                                                                }   
                                                                                    function HandleDeleteNotification(propSet){   
                                                                                      var activeRow = propSet.GetProperty( consts.get( 
                                                                            "SWE_PROP_BC_NOTI_ACTIVE_ROW" ) );   
                                                                                      if( activeRow  === this.Get( "GetSelection" ) ){   
                                                                                        var delObj = this.GetClientRecordSet();   
                                                                                        delObj[ activeRow ] = null;   
                                                                                      }   
                                                                                    }   
                                                                                    ClientCtrlPModel.prototype.UpdateModel = function(psInfo){   
                                                                                    /// PS Attribute info for Edit box   
                                                                                    SiebelAppFacade.ClientCtrlPModel.superclass.UpdateModel.call( this, psInfo );   
                                                                                    var ctrlTxtInfo = SiebelAppFacade.PresentationModel.GetCtrlTemplate 
                                                                            ("TestEdit", "Test Edit", consts.get( "SWE_CTRL_TEXTAREA" ), 1);   
                                                                                  this.ExecuteMethod( "AddClientControl", ctrlTxtInfo );   
                                                                                };   
                                                                                return ClientCtrlPModel;   
                                                                              } ());   
                                                                                return "SiebelAppFacade.ClientCtrlPModel";   
                                                                              });   
                                                                            }
                                                                            

                                                                              Configuring Client-Side Multi-Select

                                                                              Siebel Open UI uses a client-side control implementation to display a Multi-Select check box column in list applets. While this is primarily intended for touch-based devices where multiple selection of rows is not possible using the Shift + Click or Ctrl + Click, it can also be configured for desktop browsers.

                                                                              The Multi Row Select Checkbox Display user property controls the behavior and availability of the client-side multi-select check boxes. The property can have the following values:

                                                                              • TOUCH-HIDE. The multi-select column does not appear on touch devices.

                                                                              • TOUCH-SHOW. The multi-select column appears on touch devices.

                                                                              • NONTOUCH-HIDE. The multi-select column does not appear on desktop and non-touch based devices.

                                                                              • NONTOUCH-SHOW. The multi-select column appears on desktops and non-touch based Touch devices.

                                                                              When the user property is not configured for an applet, the default behavior is to show the Multi-Select column on touch devices and hide the column on non-touch devices. Administrators can use the user property to override this behavior on a per-list applet basis.

                                                                              To configure a multi-select check box for a list applet
                                                                              1. Open Siebel Tools.

                                                                                For more information, see Using Siebel Tools.

                                                                              2. In the Object Explorer, click Applet.

                                                                              3. In the Applets list, locate the applet that you want to configure.

                                                                              4. Add the applet user property to the applet that you located in Step 3:

                                                                                1. In the Object Explorer, expand the Applet tree, and then click Applet User Prop.

                                                                                2. In the Applet User Props list, add the following applet user property with one of the possible values:

                                                                                  Name Values

                                                                                  Multi Row Select Checkbox Display

                                                                                  TOUCH-HIDE, TOUCH-SHOW, NONTOUCH-HIDE, NONTOUCH-SHOW

                                                                              5. Compile the applet object.

                                                                              6. Restart the Siebel server.

                                                                                Your changes will now be visible in the Siebel Open UI client.

                                                                                Displaying Control Labels in Different Languages

                                                                                This topic describes how to modify the custom_messages.js file so that Siebel Open UI displays the text for a client-side control label according to the language that the client browser uses. You can also modify the presentation model instead of modifying the custom_messages.js file. For more information about how to do this, see Customizing Presentation Models to Display Control Labels in Different Languages. For more information about language support, see Languages That Siebel Open UI Supports.

                                                                                To display control labels in different languages

                                                                                1. Create the following folder structure, if it does not exist, where <lang> is the language code such as DEU:

                                                                                  AI_DIR/siebel/scripts/siebel/custom/<lang>
                                                                                  
                                                                                2. Copy custom_messages.js from below folder to the folder created in Step 1:

                                                                                  AI_DIR/siebel/scripts/siebel/samples
                                                                                  
                                                                                3. Open the file you saved in Step 2 using a JavaScript editor.

                                                                                4. Locate the following code:

                                                                                  function _SWEgetGlobalCustomMsgAry()   
                                                                                  {   
                                                                                    if (! _SWEbCMsgInit)   
                                                                                    {   
                                                                                      SWEbCMsgInit = true;   
                                                                                    }   
                                                                                    return _SWEcustommsgAry;   
                                                                                  }
                                                                                  
                                                                                5. Add the code in bold to the code that you located in Step 4:

                                                                                  function _SWEgetGlobalCustomMsgAry()   
                                                                                  {   
                                                                                    if (! _SWEbCMsgInit)   
                                                                                    {   
                                                                                      SWEbCMsgInit = true;   
                                                                                      SWEcustommsgAry["CUSTOM_ID"] = "custom_string";   
                                                                                    }   
                                                                                    return _SWEcustommsgAry;   
                                                                                  }
                                                                                  

                                                                                  where:

                                                                                  • CUSTOM_ID is a string that you use to reference the custom_string. You can use any value for CUSTOM_ID.

                                                                                  • custom_string is a text string that includes text that you manually translate into the language that your deployment requires.

                                                                                6. Add the following code at the beginning of the new file:

                                                                                  SiebelApp.S_App.LocaleObject.m_bClientStringsInitialized = false;
                                                                                7. Save the file.

                                                                                8. Navigate to the Administration - Application screen of your Siebel client, then the Manifest Expressions view.

                                                                                  Note: You need to have administrative privileges in the Siebel client.
                                                                                9. In the Expressions list, add the following expression for the language where the string will be used:

                                                                                  Field Name Expression

                                                                                  Value

                                                                                  <Name of the expression> such as Dutch

                                                                                  Language()= “<Language code>” such as “DEU”

                                                                                10. Navigate to the Manifest Files view to add the new file under manifest files.

                                                                                11. Add an entry for custom_message.js in the new folder created in Step 1 as follows:

                                                                                  siebel/custom/deu/custom_messages.js
                                                                                  
                                                                                12. Navigate to the Manifest Administration view to add a new record.

                                                                                13. In the Objects UI list, create a new entry and specify the object as follows:

                                                                                  Field Type Usage Type Name

                                                                                  Value

                                                                                  Application

                                                                                  Common

                                                                                  PLATFORM INDEPENDENT

                                                                                14. In the Object Expression list, add the following subexpression:

                                                                                  Field Group Name Expression Level

                                                                                  Value

                                                                                  Not Applicable

                                                                                  DEU

                                                                                  1

                                                                                15. In the Files list, click Add.

                                                                                16. In the Files dialog box, query for the path and filename that you added in Step 11.

                                                                                17. Click Go.

                                                                                18. Save the changes to the manifest.

                                                                                19. Customized translated string is now available for creating client side control via customized presentation model. Use the locale object GetLocalString API to retrieve the customized string. Update customized presentation model and provide appropriate values to the GetCtrlTemplate API to retrieve the string.

                                                                                20. Log out of the Siebel client, clear browser cache, and log in again.

                                                                                21. Test your work:

                                                                                  1. Navigate to the screen that includes the control that Siebel Open UI uses to display the translated string that you modified in Step 4.

                                                                                  Customizing Presentation Models to Display Control Labels in Different Languages

                                                                                  This topic describes how to customize a presentation model so that it displays a client-side control label in a different language instead of modifying the custom_messages.js file.

                                                                                  To customize presentation models to display control labels in different languages
                                                                                  1. Use a JavaScript editor to open the presentation model that Siebel Open UI uses to display the control label that you must modify.

                                                                                    For more information, see About the Presentation Model.

                                                                                  2. Add the following code to call the ExecuteMethod method that the presentation model uses. You can add this code anywhere in the presentation model file:

                                                                                    pm.ExecuteMethod("AddLocalString","ID","custom_string");
                                                                                    

                                                                                    where:

                                                                                    AddLocalString is the name of the method that ExecuteMethod calls to add your custom string.

                                                                                    For more information about how this example uses ID and custom_string, see Displaying Control Labels in Different Languages. For more information about these methods, see AddLocalString Method and ExecuteMethod Method.

                                                                                    For example, add the following code:

                                                                                    pm.ExecuteMethod("AddLocalString", "New", "Neu");    
                                                                                    pm.ExecuteMethod("AddLocalString", "Delete", "Löschen");
                                                                                    
                                                                                  3. Test your work:

                                                                                    1. Navigate to the screen that includes the control that Siebel Open UI uses to display the translated string that you modified in Step 2.

                                                                                    2. Verify that the control displays the translated string.

                                                                                    Customizing the Busy Cursor to Display While a Business Service Executes

                                                                                    You can force a busy cursor to appear while a selected business service is executing. The example in this topic describes how to configure this behavior.

                                                                                    There is a system preference for Busy Cursor Timeout. For more information, see About Preferences.

                                                                                    To display a busy cursor while a Business Service executes

                                                                                    1. Create an applet with a button that invokes an always-on method.

                                                                                    2. Create a physical renderer to respond to the method invocation.

                                                                                    3. Create a business service to be invoked.

                                                                                      1. The following is an example of a business service.

                                                                                        function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
                                                                                        {
                                                                                        var nReturn = ContinueOperation;
                                                                                        switch (MethodName) {
                                                                                        case "ExampleMethod":
                                                                                        var count;
                                                                                        for (var i=1; i<4000000; i++) {
                                                                                        Outputs.SetProperty("OutputProperty", "OutputValue");
                                                                                        Outputs.SetProperty("ReturnedProperty", Inputs.GetProperty("InputProperty"));
                                                                                        count++;
                                                                                         }
                                                                                        Return = CancelOperation;
                                                                                        break;
                                                                                        }
                                                                                         return (nReturn);
                                                                                        }
                                                                                        
                                                                                    4. Make sure the business service is invokable from the client using the application user property.

                                                                                    5. Update the physical renderer to invoke the business service workOnBusyCursor control upon method invocation.

                                                                                    6. Test your work:

                                                                                      1. Navigate to any list applet, and then verify that it displays the control that you added.

                                                                                      Creating Property Sets for Client Side Controls

                                                                                      You can use the following code to create a property set for a control that Siebel Open UI displays in the client:

                                                                                      ClientCtrlPModel.prototype.UpdateModel = function(psInfo){
                                                                                      /// Specify the property set for the control
                                                                                      SiebelAppFacade.ClientCtrlPModel.superclass.UpdateModel.call( this, psInfo );
                                                                                      var variable_name= SiebelAppFacade.PresentationModel.GetCtrlTemplate
                                                                                        ("control_name", "display_name", consts.get( "control_type" ), column_index );
                                                                                          ctrlComboInfo.SetPropertyStr(consts.get("control_property"), 
                                                                                      "property_attribute")
                                                                                      

                                                                                      where:

                                                                                      • variable_name specifies the name of a variable.

                                                                                      • control_name, display_name, control_type, and column_index are arguments of the GetCtrlTemplate method. For more information about these arguments, see GetCtrlTemplate Method.

                                                                                      • control_property specifies a control property. For example, SWE_PROP_WIDTH specifies the width of the control, in pixels.

                                                                                      • property_attribute specifies an attribute of the control that control_property specifies. For example, for the SWE_PROP_WIDTH property, a value of 200 sets the width of the control to 200 pixels.

                                                                                      For example, the following code creates a variable named ctrlComboInfo for the TestCombo control. It sets the width and height of this control to 200 pixels, and centers it

                                                                                      ClientCtrlPModel.prototype.UpdateModel = function(psInfo){   
                                                                                      /// Specify the property set for the control   
                                                                                      SiebelAppFacade.ClientCtrlPModel.superclass.UpdateModel.call( this, psInfo );   
                                                                                      ClientCtrlPModel.prototype.UpdateModel = function(psInfo){   
                                                                                      /// Specify the property set for the control   
                                                                                      SiebelAppFacade.ClientCtrlPModel.superclass.UpdateModel.call( this, psInfo );   
                                                                                      var ctrlComboInfo = SiebelAppFacade.PresentationModel.GetCtrlTemplate ("TestCombo",   
                                                                                        "Test Drop Down", consts.get( "SWE_CTRL_COMBOBOX" ), 10 );   
                                                                                          ctrlComboInfo.SetPropertyStr(consts.get("SWE_PROP_WIDTH"), "200")   
                                                                                          ctrlComboInfo.SetPropertyStr(consts.get("SWE_PROP_HEIGHT"), "200")   
                                                                                          ctrlChkboxInfo.SetPropertyStr(consts.get("SWE_PROP_JUSTIFICATION"), "center");
                                                                                      

                                                                                      For more information about control_property and property_attribute, see Properties That You Can Specify for Client-Side Controls. For more information about other control properties that you can specify, such as Sort or Vertical Scroll, see the topic that describes the control Applet Object Type in Siebel Object Types Reference.

                                                                                        Properties That You Can Specify for Client Side Controls

                                                                                        The following table describes the properties that you can specify for controls. The Comparable Applet Control or Description column of this table includes the name of the applet control property that is similar to the SWE control property. If no applet control property is similar to the SWE control property, then this column includes a description. For more information about these applet control properties, see the topic that describes controls in the applet object types section of Siebel Object Types Reference.

                                                                                        Table Properties That You Can Specify for Controls

                                                                                        SWE Control Property Comparable Applet Control or Description

                                                                                        SWE_PROP_CURR_FLD

                                                                                        Specifies the field that is currently chosen.

                                                                                        SWE_PROP_CASE_SENSITIVE

                                                                                        Specifies to make text in the control case-sensitive.

                                                                                        SWE_PROP_DISP_FORMAT

                                                                                        Display Format

                                                                                        SWE_PROP_DISP_MODE

                                                                                        HTML Display Mode

                                                                                        SWE_PROP_DISP_MAX_CHARS

                                                                                        HTML Max Chars Displayed

                                                                                        SWE_PROP_DISP_NAME

                                                                                        Specifies the label that Siebel Open UI uses to identify this control in the client.

                                                                                        SWE_PROP_FLD_NAME

                                                                                        Field Name

                                                                                        SWE_PROP_HEIGHT

                                                                                        HTML Height

                                                                                        SWE_PROP_HTML_ATTRIBUTE

                                                                                        HTML Attributes

                                                                                        SWE_PROP_IS_BOUND_PICK

                                                                                        Specifies that the control is a bound picklist.

                                                                                        SWE_PROP_IS_ENCODE

                                                                                        HTML Display Mode

                                                                                        SWE_PROP_INPUTMETHOD

                                                                                        MethodInvoked

                                                                                        SWE_PROP_JUSTIFICATION

                                                                                        Text Alignment

                                                                                        SWE_PROP_LABEL_JUSTIFICATION

                                                                                        Specifies the text alignment for a column header that Siebel Open UI displays in a list control.

                                                                                        SWE_PROP_MAX_SIZE

                                                                                        HTML Max Chars Displayed

                                                                                        SWE_PROP_NAME

                                                                                        Name

                                                                                        SWE_PROP_PICK_APLT

                                                                                        Pick Applet

                                                                                        SWE_PROP_POPUP_HEIGHT

                                                                                        Specifies the height of the popup dialog box, in pixels.

                                                                                        SWE_PROP_PROMPT

                                                                                        Prompt Text

                                                                                        SWE_PROP_POPUP_WIDTH

                                                                                        Specifies the width of the popup dialog box, in pixels.

                                                                                        SWE_PROP_IS_DYNAMIC

                                                                                        Specifies whether or not Siebel Open UI dynamically displays values in the control.

                                                                                        SWE_PROP_SPAN

                                                                                        Specifies to span control contents across multiple fields. This property is not applicable for list controls.

                                                                                        SWE_PROP_SEQ

                                                                                        HTML Sequence

                                                                                        SWE_PROP_TYPE

                                                                                        Type, HTML Type, or Field Retrieval Type

                                                                                        SWE_PROP_WIDTH

                                                                                        Width

                                                                                        SWE_PROP_COLINDEX

                                                                                        Specifies the index number of a column.

                                                                                        SWE_PROP_ICON_MAP

                                                                                        Bitmap

                                                                                        SWE_PROP_IS_SORTABLE

                                                                                        Sort

                                                                                          Text Copy of the Client Control Presentation Model File

                                                                                          The following code from the clientctrlpmodel.js file adds example controls to the client. You can examine this code for your reference. To get a copy of this file, see Article ID 1494998.1 on My Oracle Support:

                                                                                          if( typeof( SiebelAppFacade.ClientCtrlPModel ) === "undefined" ){
                                                                                            SiebelJS.Namespace( 'SiebelAppFacade.ClientCtrlPModel' );
                                                                                            //Module with its dependencies
                                                                                            define("siebel/custom/clientctrlpmodel", [], function () {   
                                                                                            SiebelAppFacade.ClientCtrlPModel = ( function(){   
                                                                                              var consts  = SiebelJS.Dependency( "SiebelApp.Constants" );    
                                                                                              /* *   
                                                                                              * Constructor Function - ClientCtrlPModel   
                                                                                              *   
                                                                                              * Parameter - Be a good citizen. Pass All parameter to superclass.    
                                                                                              * */   
                                                                                              function ClientCtrlPModel(proxy){   
                                                                                                var m_recordset = [];   
                                                                                                SiebelAppFacade.ClientCtrlPModel.superclass.constructor.call( this, proxy);   
                                                                                                this.AddMethod( "AddClientControl", null, { core : true } );       
                                                                                                // add into method array   
                                                                                                this.GetClientRecordSet = function( ) {   
                                                                                                  return m_recordset ;   
                                                                                                };   
                                                                                              }   
                                                                                              /* Siebel OpenUI uses the ListPresentationModel object to initialize every list 
                                                                                          applet. So, to maintain the functionality that ListPresentationModel provides, you 
                                                                                          extend it.*/   
                                                                                              SiebelJS.Extend( ClientCtrlPModel, SiebelAppFacade.ListPresentationModel );   
                                                                                              ClientCtrlPModel.prototype.Init = function(){   
                                                                                                SiebelAppFacade.ClientCtrlPModel.superclass.Init.call( this );   
                                                                                                /* Attach Post Handler for LeaveField */   
                                                                                                this.AddMethod( "LeaveField", PostLeaveField, { sequence : false, scope : this 
                                                                                          } );   
                                                                                                /* Attach Pre Handler for GetFormattedFieldValue */   
                                                                                                this.AddMethod("GetFormattedFieldValue", PreGetFormattedFieldValue, { sequence 
                                                                                          : true, scope : this } );   
                                                                                                /* Attach Handler for Delete Record Notification as well */   
                                                                                                this.AttachNotificationHandler( consts.get( "SWE_PROP_BC_NOTI_DELETE_RECORD" 
                                                                                          ),       HandleDeleteNotification );   
                                                                                              };   
                                                                                              function PreGetFormattedFieldValue(control, bUseWS, recIndex, returnStructure){   
                                                                                                if (utils.IsEmpty(recIndex)){   
                                                                                                  recIndex = this.Get("GetSelection");   
                                                                                                }   
                                                                                                if (recIndex >=0) {   
                                                                                                  var clientObj = this.GetClientRecordSet();   
                                                                                                  var recordSet=this.Get("GetRawRecordSet");   
                                                                                                  var id = recordSet[recIndex]["Id"];   
                                                                                                  var flag = false;   
                                                                                                  var value;   
                                                                                                  switch(control.GetName()){   
                                                                                                    case "TestEdit":   
                                                                                                      value = recordSet[recIndex]["Name"];   
                                                                                                      flag = true;   
                                                                                                      break;   
                                                                                                  }   
                                                                                                  if (flag){   
                                                                                                    if( clientObj[id] && clientObj[id][control.GetName()] ){   
                                                                                                      value = clientObj[id][control.GetName()];   
                                                                                                    }   
                                                                                                    else if (clientObj[id]){   
                                                                                                      clientObj[id ][control.GetName()] = value;   
                                                                                                    }   
                                                                                                  else{   
                                                                                                      var recordclient = {};   
                                                                                                      recordclient[control.GetName()] = value;   
                                                                                                      clientObj[id] = recordclient;   
                                                                                                    }   
                                                                                                    returnStructure[ "CancelOperation" ] = true;   
                                                                                                    returnStructure[ "ReturnValue" ]     = value;   
                                                                                                  }   
                                                                                                }   
                                                                                              }   
                                                                                              function PostLeaveField( control, value, notLeave, returnStructure ){   
                                                                                                var clientObj = this.GetClientRecordSet();   
                                                                                                var currSel = this.Get( "GetSelection" );   
                                                                                                var recordSet=this.Get("GetRawRecordSet");   
                                                                                                var id = recordSet[currSel]["Id"];   
                                                                                                if (clientObj[id]){   
                                                                                                  switch(control.GetName()){   
                                                                                                    case "TestEdit":   
                                                                                                      clientObj[id][control.GetName()] = returnStructure[ "ReturnValue" ] ;    
                                                                                                      break;   
                                                                                                  }   
                                                                                                }   
                                                                                              }   
                                                                                                  function HandleDeleteNotification(propSet){   
                                                                                                    var activeRow = propSet.GetProperty( consts.get( 
                                                                                          "SWE_PROP_BC_NOTI_ACTIVE_ROW" ) );   
                                                                                                    if( activeRow  === this.Get( "GetSelection" ) ){   
                                                                                                      var delObj = this.GetClientRecordSet();   
                                                                                                      delObj[ activeRow ] = null;   
                                                                                                    }   
                                                                                                  }   
                                                                                                  ClientCtrlPModel.prototype.UpdateModel = function(psInfo){   
                                                                                                  /// PS Attribute info for Edit box   
                                                                                                  SiebelAppFacade.ClientCtrlPModel.superclass.UpdateModel.call( this, psInfo );   
                                                                                                  var ctrlTxtInfo = SiebelAppFacade.PresentationModel.GetCtrlTemplate 
                                                                                          ("TestEdit", "Test Edit", consts.get( "SWE_CTRL_TEXTAREA" ), 1);   
                                                                                                this.ExecuteMethod( "AddClientControl", ctrlTxtInfo );   
                                                                                              };   
                                                                                              return ClientCtrlPModel;   
                                                                                            } ());   
                                                                                              return "SiebelAppFacade.ClientCtrlPModel";   
                                                                                            });   
                                                                                          }
                                                                                          

                                                                                            Configuring Client Side Multi-Select

                                                                                            Siebel Open UI uses a client-side control implementation to display a Multi-Select check box column in list applets. While this is primarily intended for touch-based devices where multiple selection of rows is not possible using the Shift + Click or Ctrl + Click, it can also be configured for desktop browsers.

                                                                                            The Multi Row Select Checkbox Display user property controls the behavior and availability of the client-side multi-select check boxes. The property can have the following values:

                                                                                            • TOUCH-HIDE. The multi-select column does not appear on touch devices.

                                                                                            • TOUCH-SHOW. The multi-select column appears on touch devices.

                                                                                            • NONTOUCH-HIDE. The multi-select column does not appear on desktop and non-touch based devices.

                                                                                            • NONTOUCH-SHOW. The multi-select column appears on desktops and non-touch based Touch devices.

                                                                                            When the user property is not configured for an applet, the default behavior is to show the Multi-Select column on touch devices and hide the column on non-touch devices. Administrators can use the user property to override this behavior on a per-list applet basis.

                                                                                            To configure a multi-select check box for a list applet
                                                                                            1. Open Siebel Tools.

                                                                                              For more information, see Using Siebel Tools.

                                                                                            2. In the Object Explorer, click Applet.

                                                                                            3. In the Applets list, locate the applet that you want to configure.

                                                                                            4. Add the applet user property to the applet that you located in Step 3:

                                                                                              1. In the Object Explorer, expand the Applet tree, and then click Applet User Prop.

                                                                                              2. In the Applet User Props list, add the following applet user property with one of the possible values:

                                                                                                Name Values

                                                                                                Multi Row Select Checkbox Display

                                                                                                TOUCH-HIDE, TOUCH-SHOW, NONTOUCH-HIDE, NONTOUCH-SHOW

                                                                                            5. Compile the applet object.

                                                                                            6. Restart the Siebel server.

                                                                                              Your changes will now be visible in the Siebel Open UI client.