July 07, 2016

How to customize siebel error messages?


With IP14 Oracle has provided ErrorObjectRenderer.js to replace browser based dialogs with jQuery based dialogs. Problem with browser based dialogs is that users can accidently disable them. Thus it is not a good place to show error messages or important instructions to the user. 
Standard alert()
However jQuery based dialogs always shows up on the screen and user have to click ok always to get past them.
jQuery Dialog

Lets see how we can achieve the same functionality in IP13.  

Open UI framework uses browser alert() function to popup error messages. In Javascript it is possible to override any function including browser native functions like alert and change it according to the business needs.

Simplest way to override alert is to define a function alert() in your code, this will force your browser to call your custom function all the time whenever Siebel calls alert() instead of browser's native function. .

function alert(str){
 $("<div id='my_error'>" + str + "</div>").dialog({
               modal: true,
                buttons: [{ id: "btn-accept",
                    text: "Ok",
                    click: function () { $(this).dialog("close"); }               
                }]
            });
}

Just add the above code in post load file and job done, after executing this code all the error messages will shown in jQuery dialog which will always pop-up. See it in action on codepen

Happy alerting ! 
This is trick is shared by avid reader TJ, please share your tips and tricks in comments below.

4 comments :

  1. Thanks for this, looks like there is a small error in the code; after 'my_error' there is a ) that doesn't belong there and shows up in the HTML. This doesn't break anything however.

    ReplyDelete
  2. Hello
    Can you explain how i add this code for all my popup massage box in siebel ip2015?
    If this works good on last version of chrome?
    Best regards!

    ReplyDelete
  3. Thanks for this.
    If you deploy to different languages you can replace the hardcoded text:
    text: "Ok" --> text: _SWEmsgAry["IDS_SWE_CKEDITOR_OK"],
    You can also add:
    title: _SWEmsgAry["IDS_CLIENT_WARNING"],

    ReplyDelete