14: --
15: -- Error (PRIVATE)
16: -- Print a page with an error message.
17: -- Errors are retrieved from these sources in order: 18: -- 1. wf_core errors 19: -- 2. Oracle errors
20: -- 3. Unspecified INTERNAL error
21: --
22: procedure Error
Line 61: htp.title(wf_core.translate('WFA_LOGIN_REQUEST'));
57: -- Set the language to the default language for the system
58:
59: htp.htmlOpen;
60: htp.headOpen; 61: htp.title(wf_core.translate('WFA_LOGIN_REQUEST')); 62: wfa_html.create_help_function('wf/links/log.htm?LOGIN');
63: htp.headClose;
64: wfa_sec.Header(background_only=>FALSE, inc_lov_applet=>FALSE);
65:
Line 75: htp.header(4, wf_core.translate(message));
71: end if;
72:
73:
74: if (message is not null) then 75: htp.header(4, wf_core.translate(message)); 76: htp.br;
77: end if;
78:
79: htp.br;
123: htp.htmlClose;
124: exception
125: when others then
126: rollback; 127: wf_core.context('Wfa_Html', 'Login'); 128: wfa_html.Error;
129: end Login;
130:
131: --
Line 165: if (wf_core.error_name='WFSEC_USER_PASSWORD') then
161: begin
162: wfa_sec.CreateSession(username, password);
163: exception
164: when others then 165: if (wf_core.error_name='WFSEC_USER_PASSWORD') then 166: -- Bad username or password
167: wf_core.clear;
168: wfa_html.Login('WFA_ILLEGAL_IDP');
169: return;
Line 167: wf_core.clear;
163: exception
164: when others then
165: if (wf_core.error_name='WFSEC_USER_PASSWORD') then
166: -- Bad username or password 167: wf_core.clear; 168: wfa_html.Login('WFA_ILLEGAL_IDP');
169: return;
170: end if;
171: -- Raise any other error message
Line 203: wf_core.context('Wfa_Html', 'Viewer', user_id, password);
199:
200: exception
201: when others then
202: rollback; 203: wf_core.context('Wfa_Html', 'Viewer', user_id, password); 204: wfa_html.Error;
205: end Viewer;
206:
207:
Line 285: WFA_HTML.g_priority := WF_CORE.Translate('WFJSP_HIGH_PRIORITY');
281: return varchar2
282: as
283: begin
284: if (priority < 34) /* HIGH */ then 285: WFA_HTML.g_priority := WF_CORE.Translate('WFJSP_HIGH_PRIORITY'); 286: return(wfa_html.image_loc||'high.gif');
287: elsif (priority > 66) /* LOW */ then
288: WFA_HTML.g_priority := WF_CORE.Translate('WFJSP_LOW_PRIORITY');
289: return(wfa_html.image_loc||'low.gif');
Line 288: WFA_HTML.g_priority := WF_CORE.Translate('WFJSP_LOW_PRIORITY');
284: if (priority < 34) /* HIGH */ then
285: WFA_HTML.g_priority := WF_CORE.Translate('WFJSP_HIGH_PRIORITY');
286: return(wfa_html.image_loc||'high.gif');
287: elsif (priority > 66) /* LOW */ then 288: WFA_HTML.g_priority := WF_CORE.Translate('WFJSP_LOW_PRIORITY'); 289: return(wfa_html.image_loc||'low.gif');
290: else /* NORMAL */
291: return null;
292: end if;
Line 385: Wf_Core.Token('NID', nid);
381: from WF_NOTIFICATIONS WN
382: where WN.NOTIFICATION_ID = nid;
383: exception
384: when no_data_found then 385: Wf_Core.Token('NID', nid); 386: Wf_Core.Raise('WFNTF_NID');
387: end;
388:
389: -- Verify this notification was sent to this user
Line 386: Wf_Core.Raise('WFNTF_NID');
382: where WN.NOTIFICATION_ID = nid;
383: exception
384: when no_data_found then
385: Wf_Core.Token('NID', nid); 386: Wf_Core.Raise('WFNTF_NID'); 387: end;
388:
389: -- Verify this notification was sent to this user
390: -- Note that username could be the in the recipient role
Line 471: admin_role := wf_core.translate('WF_ADMIN_ROLE');
467: exception
468: when no_data_found then
469: -- Check if current user has WF_ADMIN_ROLE privileges.
470: -- If so, allow access anyway. 471: admin_role := wf_core.translate('WF_ADMIN_ROLE'); 472: if (admin_role <> '*' and
473: not Wf_Directory.IsPerformer(username, admin_role)) then
474: Wf_Core.Token('USER', username);
475: Wf_Core.Token('NID', to_char(nid));
Line 474: Wf_Core.Token('USER', username);
470: -- If so, allow access anyway.
471: admin_role := wf_core.translate('WF_ADMIN_ROLE');
472: if (admin_role <> '*' and
473: not Wf_Directory.IsPerformer(username, admin_role)) then 474: Wf_Core.Token('USER', username); 475: Wf_Core.Token('NID', to_char(nid));
476: Wf_Core.Raise('WFNTF_ACCESS_USER');
477: end if;
478: end;
Line 475: Wf_Core.Token('NID', to_char(nid));
471: admin_role := wf_core.translate('WF_ADMIN_ROLE');
472: if (admin_role <> '*' and
473: not Wf_Directory.IsPerformer(username, admin_role)) then
474: Wf_Core.Token('USER', username); 475: Wf_Core.Token('NID', to_char(nid)); 476: Wf_Core.Raise('WFNTF_ACCESS_USER');
477: end if;
478: end;
479: else
Line 476: Wf_Core.Raise('WFNTF_ACCESS_USER');
472: if (admin_role <> '*' and
473: not Wf_Directory.IsPerformer(username, admin_role)) then
474: Wf_Core.Token('USER', username);
475: Wf_Core.Token('NID', to_char(nid)); 476: Wf_Core.Raise('WFNTF_ACCESS_USER'); 477: end if;
478: end;
479: else
480: -- Nkey passed, means this must be disconnected (mailed html).
Line 499: wf_core.raise('WFNTF_ACCESS_KEY');
495: end if;
496:
497: username := Wf_Notification.AccessCheck(wfsession);
498: if (username is null) then 499: wf_core.raise('WFNTF_ACCESS_KEY'); 500: end if;
501: end if;
502:
503: return(username);
Line 507: wf_core.context('Wfa_Html', 'Authenticate', to_char(nid), nkey);
503: return(username);
504:
505: exception
506: when others then 507: wf_core.context('Wfa_Html', 'Authenticate', to_char(nid), nkey); 508: raise;
509: end Authenticate;
510:
511: --
Line 658: wf_core.clear;
654: end if;
655: exception
656: when OTHERS then
657: -- this is the first attempt to see a detached notfication 658: wf_core.clear; 659: owa_util.mime_header('text/html', FALSE);
660: owa_cookie.send('WF_SESSION', wfsession, '', '/');
661: wfa_sec.PseudoSession(FALSE, username);
662: owa_util.http_header_close;
Line 674: wf_core.token('NID', nid);
670: open notcurs;
671: fetch notcurs into notrec;
672: if (notcurs%notfound) then
673: close notcurs; 674: wf_core.token('NID', nid); 675: wf_core.raise('WFNTF_NID');
676: end if;
677: close notcurs;
678:
Line 675: wf_core.raise('WFNTF_NID');
671: fetch notcurs into notrec;
672: if (notcurs%notfound) then
673: close notcurs;
674: wf_core.token('NID', nid); 675: wf_core.raise('WFNTF_NID'); 676: end if;
677: close notcurs;
678:
679: if (notrec.language = userenv('LANG')) then
Line 681: l_subject := wf_core.substitutespecialchars(notrec.subject);
677: close notcurs;
678:
679: if (notrec.language = userenv('LANG')) then
680: disprole := notrec.to_user; 681: l_subject := wf_core.substitutespecialchars(notrec.subject); 682: else
683: Wf_Directory.GetRoleInfo(notrec.recipient_role, disprole, s0, s0, s0, s0);
684: l_subject := Wf_Notification.GetSubject(to_number(nid));
685: end if;
Line 697: htp.title(wf_core.translate('WFA_DTITLE')||' '||titlerole);
693:
694: fnd_document_management.get_open_dm_display_window;
695:
696: if (notrec.status = 'OPEN') then 697: htp.title(wf_core.translate('WFA_DTITLE')||' '||titlerole); 698: else
699: htp.title(wf_core.translate('WFA_CDTITLE')||' '||titlerole);
700: end if;
701: wfa_html.create_help_function('wf/links/det.htm?DETNOT');
Line 699: htp.title(wf_core.translate('WFA_CDTITLE')||' '||titlerole);
695:
696: if (notrec.status = 'OPEN') then
697: htp.title(wf_core.translate('WFA_DTITLE')||' '||titlerole);
698: else 699: htp.title(wf_core.translate('WFA_CDTITLE')||' '||titlerole); 700: end if;
701: wfa_html.create_help_function('wf/links/det.htm?DETNOT');
702:
703: -- Make sure the resulting link puts on the top window.
Line 715: wf_core.translate('WFA_DTITLE_TBAR'), FALSE, pseudo_login);
711: htp.p('');
712:
713: if (nkey is null) then
714: wfa_sec.Header(FALSE, owa_util.get_owa_service_path ||'wfa_html.Find', 715: wf_core.translate('WFA_DTITLE_TBAR'), FALSE, pseudo_login); 716: else
717: -- disabled Find for detached notification
718: wfa_sec.Header(FALSE, null,
719: wf_core.translate('WFA_DTITLE_TBAR'), FALSE, pseudo_login);
Line 719: wf_core.translate('WFA_DTITLE_TBAR'), FALSE, pseudo_login);
Line 729: htp.tableData(cvalue=>wf_core.translate('FROM'),
725: -- LINE 0: from user if it is not null
726: --
727: if (notrec.from_user is not null) then
728: htp.tableRowOpen(cvalign=>'Baseline'); 729: htp.tableData(cvalue=>wf_core.translate('FROM'), 730: calign=>'right', cattributes=>'id=""');
731: htp.tableHeader(cvalue=>notrec.from_user,
732: cnowrap=>1,
733: calign=>'left', cattributes=>'BGCOLOR=WHITE WIDTH="*" id=""');
Line 743: htp.tableData(cvalue=>wf_core.translate('TO'),
739: --
740: htp.tableRowOpen(cvalign=>'Baseline');
741:
742: -- Always print Sent To and begin_date 743: htp.tableData(cvalue=>wf_core.translate('TO'), 744: calign=>'right', cattributes=>'id=""');
745: htp.tableHeader(cvalue=>disprole,
746: cnowrap=>1,
747: calign=>'left', cattributes=>'BGCOLOR=WHITE WIDTH="*" id=""');
Line 748: htp.tableData(cvalue=>wf_core.translate('BEGIN_DATE'),
Line 760: htp.tableData(cvalue=>wf_core.translate('DUE_DATE'),
756:
757: -- Due:
758: -- Do not print Due Date if it is null
759: if (to_char(notrec.due_date) is not null) then 760: htp.tableData(cvalue=>wf_core.translate('DUE_DATE'), 761: calign=>'right', cattributes=>'id=""');
762: htp.tableHeader(cvalue=>to_char(notrec.due_date)||
763: to_char(notrec.due_date, ' HH24:MI:SS'),
764: cnowrap=>1,
Line 772: htp.tableData(cvalue=>wf_core.translate('CANCELED'),
768:
769: -- Closed: (only if not open)
770: if (notrec.status <> 'OPEN') then
771: if (notrec.status = 'CANCELED') then 772: htp.tableData(cvalue=>wf_core.translate('CANCELED'), 773: calign=>'right', cattributes=>'id=""');
774: else
775: htp.tableData(cvalue=>wf_core.translate('END_DATE'),
776: calign=>'right', cattributes=>'id=""');
Line 775: htp.tableData(cvalue=>wf_core.translate('END_DATE'),
771: if (notrec.status = 'CANCELED') then
772: htp.tableData(cvalue=>wf_core.translate('CANCELED'),
773: calign=>'right', cattributes=>'id=""');
774: else 775: htp.tableData(cvalue=>wf_core.translate('END_DATE'), 776: calign=>'right', cattributes=>'id=""');
777: end if;
778: htp.tableHeader(cvalue=>to_char(notrec.end_date)||
779: to_char(notrec.end_date, ' HH24:MI:SS'),
Line 791: htp.tableData(cvalue=>wf_core.translate('SUBJECT'),
787: --
788: -- Subject:
789: --
790: htp.tableRowOpen(cvalign=>'Baseline'); 791: htp.tableData(cvalue=>wf_core.translate('SUBJECT'), 792: calign=>'right', cattributes=>'id=""');
793:
794: --make colspan 1 less than col because 1 col is taken up by "subject"
795: htp.tableHeader(cvalue=>l_subject,
Line 806: htp.p(wf_core.translate('COMMENTS')||':');
802: --
803: -- COMMENTS
804: --
805: if (notrec.user_comment is not null) then 806: htp.p(wf_core.translate('COMMENTS')||':'); 807: htp.tableOpen(cattributes=>'WIDTH=100% BGCOLOR=WHITE summary=""');
808: htp.tableRowOpen;
809: htp.p('
881: wfa_html.base_url||'/wfa_html.show_plsql_doc'||
882: '?nid='||nid||'&aname='||not_attr_row.name||'&nkey='||nkey||
883: '" TARGET="'||not_attr_row.format||'">'||
884: '';
886: end if;
887:
888: end if;
889:
Line 898: if (not wf_core.CheckIllegalChars(link_text,true)) then
894:
895: -- Bug 4634849
896: -- Do not display potentially harmful url
897: begin 898: if (not wf_core.CheckIllegalChars(link_text,true)) then 899: link_text := ''||
901: '';
Line 902: WF_CORE.Translate('WFITD_ATTR_TYPE_DOCUMENT') || '" BORDER=no>';
898: if (not wf_core.CheckIllegalChars(link_text,true)) then
899: link_text := ''||
901: '';
903: end if;
904: exception
905: when OTHERS then
906: wf_core.get_error(error_name, link_text, error_stack);
Line 906: wf_core.get_error(error_name, link_text, error_stack);
902: WF_CORE.Translate('WFITD_ATTR_TYPE_DOCUMENT') || '" BORDER=no>';
903: end if;
904: exception
905: when OTHERS then 906: wf_core.get_error(error_name, link_text, error_stack); 907:
908: link_text :=wf_core.substitutespecialchars(link_text);
909: error_stack:= '';
910: end;
Line 908: link_text :=wf_core.substitutespecialchars(link_text);
904: exception
905: when OTHERS then
906: wf_core.get_error(error_name, link_text, error_stack);
907: 908: link_text :=wf_core.substitutespecialchars(link_text); 909: error_stack:= '';
910: end;
911:
912: end if;
Line 1006: if (not wf_core.CheckIllegalChars(link_text,true)) then
1002:
1003: -- Bug 4634849
1004: -- Do not display potentially harmful url
1005: begin 1006: if (not wf_core.CheckIllegalChars(link_text,true)) then 1007: link_text := ''||
1009: not_attr_row.display_name||'';
1010:
Line 1014: wf_core.get_error(error_name, link_text, error_stack);
1010:
1011: end if;
1012: exception
1013: when OTHERS then 1014: wf_core.get_error(error_name, link_text, error_stack); 1015:
1016: link_text :=wf_core.substitutespecialchars(link_text);
1017: error_stack:= '';
1018: end;
Line 1016: link_text :=wf_core.substitutespecialchars(link_text);
1012: exception
1013: when OTHERS then
1014: wf_core.get_error(error_name, link_text, error_stack);
1015: 1016: link_text :=wf_core.substitutespecialchars(link_text); 1017: error_stack:= '';
1018: end;
1019: end if;
1020:
Line 1048: htp.p('
'||wf_core.translate('WF_EXECUTE_FORM_FAILED'));
1044: --
1045: -- Print warning message
1046: --
1047: if (cnt > 0) then 1048: htp.p('
'||wf_core.translate('WF_EXECUTE_FORM_FAILED'));
1049: htp.br;
1050: end if;
1051:
1052: --
Line 1061: wf_core.context('Wfa_Html', 'DetailFrame', nid, nkey);
1057:
1058: exception
1059: when others then
1060: rollback; 1061: wf_core.context('Wfa_Html', 'DetailFrame', nid, nkey); 1062: wfa_html.Error;
1063: end DetailFrame;
1064:
1065: --
Line 1182: wf_core.clear;
1178: end if;
1179: exception
1180: when OTHERS then
1181: -- this is the first attempt to see a detached notfication 1182: wf_core.clear; 1183: owa_util.mime_header('text/html', FALSE);
1184: wfa_sec.PseudoSession(FALSE, username);
1185: end;
1186: wfa_sec.validate_only := FALSE;
Line 1206: htp.title(wf_core.translate('WFA_DTITLE')||' '||realname);
1202: --
1203: htp.htmlOpen;
1204: htp.headOpen;
1205: if (status = 'OPEN') then 1206: htp.title(wf_core.translate('WFA_DTITLE')||' '||realname); 1207: else
1208: htp.title(wf_core.translate('WFA_CDTITLE')||' '||realname);
1209: end if;
1210:
Line 1208: htp.title(wf_core.translate('WFA_CDTITLE')||' '||realname);
1204: htp.headOpen;
1205: if (status = 'OPEN') then
1206: htp.title(wf_core.translate('WFA_DTITLE')||' '||realname);
1207: else 1208: htp.title(wf_core.translate('WFA_CDTITLE')||' '||realname); 1209: end if;
1210:
1211: -- Add the java script to the header to open the dm window for
1212: -- any DM function that is executed.
Line 1238: ctext => wf_core.translate('WFA_WORKLIST_RETURN'),
1234: -- email attachment
1235: if (nkey is null) then
1236: htp.center(htf.anchor(
1237: curl => owa_util.get_owa_service_path||'wfa_html.WorkList', 1238: ctext => wf_core.translate('WFA_WORKLIST_RETURN'), 1239: cattributes=>'TARGET="_top"'));
1240: else
1241: pseudo_login := TRUE;
1242: end if;
Line 1292: htp.p('
'||wf_core.translate('WF_EXECUTE_FORM_FAILED'));
1288: --
1289: -- Print warning message
1290: --
1291: if (cnt > 0) then 1292: htp.p('
'||wf_core.translate('WF_EXECUTE_FORM_FAILED'));
1293: htp.br;
1294: end if;
1295:
1296: if (respcnt >= 1) then
Line 1349: htp.center(htf.bold(wf_core.translate('WFA_NOTIF_CANCELED')));
1345: htp.formHidden('h_fdocnames', 'Dummy_Value');
1346: else
1347: -- Add submitted title if ntf not open
1348: if (status = 'CANCELED') then 1349: htp.center(htf.bold(wf_core.translate('WFA_NOTIF_CANCELED'))); 1350: else
1351: if (pseudo_login) then
1352: htp.center(htf.bold(wf_core.translate('WFA_RESPONSE_COMPLETE')));
1353: else
Line 1352: htp.center(htf.bold(wf_core.translate('WFA_RESPONSE_COMPLETE')));
1348: if (status = 'CANCELED') then
1349: htp.center(htf.bold(wf_core.translate('WFA_NOTIF_CANCELED')));
1350: else
1351: if (pseudo_login) then 1352: htp.center(htf.bold(wf_core.translate('WFA_RESPONSE_COMPLETE'))); 1353: else
1354: htp.center(htf.bold(wf_core.translate('WFA_SUBMIT_RESPONSE')));
1355: end if;
1356: end if;
Line 1354: htp.center(htf.bold(wf_core.translate('WFA_SUBMIT_RESPONSE')));
1350: else
1351: if (pseudo_login) then
1352: htp.center(htf.bold(wf_core.translate('WFA_RESPONSE_COMPLETE')));
1353: else 1354: htp.center(htf.bold(wf_core.translate('WFA_SUBMIT_RESPONSE'))); 1355: end if;
1356: end if;
1357: end if;
1358:
Line 1467: wf_core.translate ('SUBMIT'),
1463: -- Add a 'Submit' button to submit the form.
1464: htp.tableRowOpen;
1465: htp.p('
Line 1479: htp.tableData(wf_core.translate('WFA_NO_RESPONSE'), cattributes=>'id=""');
1475:
1476: -- No responses at all.
1477: -- Add a message to that effect.
1478: htp.tableRowOpen; 1479: htp.tableData(wf_core.translate('WFA_NO_RESPONSE'), cattributes=>'id=""'); 1480: htp.tableRowClose;
1481:
1482: -- Followed by a 'Close' button
1483: htp.tableRowOpen;
1537: hide_button := Wf_Notification.GetAttrText(nid, '#HIDE_REASSIGN');
1538: exception
1539: when OTHERS then
1540: -- Do not want anything on the error stack 1541: Wf_Core.Clear; 1542: end;
1543: if (hide_button <> 'Y') then
1544: htp.p('
Line 1584: wf_core.context('Wfa_Html', 'ResponseFrame', nid, nkey);
1580: if (attrs%isopen) then
1581: close attrs; -- Close cursor just in case
1582: end if;
1583: rollback; 1584: wf_core.context('Wfa_Html', 'ResponseFrame', nid, nkey); 1585: wfa_html.Error;
1586: end ResponseFrame;
1587:
1588: --
Line 1606: l_message varchar2(240) := wfa_html.replace_onMouseOver_quotes(wf_core.translate ('WFPREF_LOV'));
Line 1841: htp.tableData(cvalue=>wf_core.translate('MAXLENGTH'), calign=>'right');
1837:
1838: -- Format
1839: htp.tableRowOpen;
1840: if (attrtype = 'VARCHAR2') then 1841: htp.tableData(cvalue=>wf_core.translate('MAXLENGTH'), calign=>'right'); 1842: htp.tableData(cvalue=>htf.bold(nvl(format, '2000')), calign=>'left',
1843: cattributes=>'bgcolor=white');
1844: elsif (attrtype = 'LOOKUP') then
1845: htp.tableData(cvalue=>wf_core.translate('LOOKUP'), calign=>'right', cattributes=>'id=""');
Line 1845: htp.tableData(cvalue=>wf_core.translate('LOOKUP'), calign=>'right', cattributes=>'id=""');
1841: htp.tableData(cvalue=>wf_core.translate('MAXLENGTH'), calign=>'right');
1842: htp.tableData(cvalue=>htf.bold(nvl(format, '2000')), calign=>'left',
1843: cattributes=>'bgcolor=white');
1844: elsif (attrtype = 'LOOKUP') then 1845: htp.tableData(cvalue=>wf_core.translate('LOOKUP'), calign=>'right', cattributes=>'id=""'); 1846:
1847: -- Get displayed name of lookup
1848: begin
1849: select WLT.DISPLAY_NAME
Line 1863: htp.tableData(cvalue=>wf_core.translate('FORMAT'), calign=>'right', cattributes=>'id=""');
1859:
1860: elsif format is not null then
1861: -- All others just print format only if it exists
1862: -- printing "default" is confusing UI. 1863: htp.tableData(cvalue=>wf_core.translate('FORMAT'), calign=>'right', cattributes=>'id=""'); 1864: htp.tableData(cvalue=>htf.bold(nvl(format, '&'||'lt;'||
1865: wf_core.translate('DEFAULT')||'&'||'gt;')),
1866: calign=>'left',
1867: cattributes=>'bgcolor=white id=""');
Line 1865: wf_core.translate('DEFAULT')||'&'||'gt;')),
1861: -- All others just print format only if it exists
1862: -- printing "default" is confusing UI.
1863: htp.tableData(cvalue=>wf_core.translate('FORMAT'), calign=>'right', cattributes=>'id=""');
1864: htp.tableData(cvalue=>htf.bold(nvl(format, '&'||'lt;'|| 1865: wf_core.translate('DEFAULT')||'&'||'gt;')), 1866: calign=>'left',
1867: cattributes=>'bgcolor=white id=""');
1868: end if;
1869: htp.tableRowClose;
Line 1877: wf_core.context('Wfa_Html', 'AttributeInfo', nid, name);
1873: htp.htmlClose;
1874: exception
1875: when others then
1876: rollback; 1877: wf_core.context('Wfa_Html', 'AttributeInfo', nid, name); 1878: wfa_html.Error;
1879: end AttributeInfo;
1880:
1881: --
Line 1965: wf_core.context('Wfa_Html', 'RespFrameSize', to_char(nid));
1961: return(respsize);
1962:
1963: exception
1964: when others then 1965: wf_core.context('Wfa_Html', 'RespFrameSize', to_char(nid)); 1966: raise;
1967: end RespFrameSize;
1968:
1969: --
Line 1999: htp.title(wf_core.translate('WFA_DTITLE') || ' ' || realname);
Line 2019: WF_CORE.Translate('WFA_DTITLE_TBAR') || '" LONGDESC="' ||
2015: -- Open frameset, and set focus to response window.
2016: -- NOTE: MSIE does not support focus method.
2017: if (instr(owa_util.get_cgi_env('HTTP_USER_AGENT'), 'MSIE') <> 0) then
2018: htp.p('