DBA Data[Home] [Help]

PACKAGE BODY: APPS.ORACLENAVIGATE

Source


1 package body OracleNavigate as
2 /* $Header: ICXSENB.pls 120.2 2007/11/21 19:24:40 amgonzal ship $ */
3 
4 TYPE object IS RECORD (
5         location           varchar2(30),
6         display_sequence   pls_integer,
7         type               varchar2(30),
8         resp_appl_id       pls_integer,
9         responsibility_id  pls_integer,
10         security_group_id  pls_integer,
11         parent_menu_id     pls_integer,
12         entry_sequence     pls_integer,
13         menu_id            pls_integer,
14         function_id        pls_integer,
15         function_type      varchar2(30),
16         menu_explode       varchar2(30),
17         function_explode   varchar2(30),
18         level              pls_integer,
19         prompt             varchar2(240),
20         description        varchar2(240),
21         web_html_call      varchar2(240));
22 
23 TYPE objectTable IS TABLE OF object index by binary_integer;
24 
25 g_nulllist       objectTable;
26 g_list           objectTable;
27 g_executablelist objectTable;
28 
29 procedure timer(message VARCHAR2) is     --defaulted to NULL, removed for GSCC
30 l_hsecs pls_integer;
31 begin
32     select HSECS into l_hsecs from V$TIMER;
33     htp.p('DEBUG ('||l_hsecs||') '||message);htp.nl;
34 end;
35 
36 function security_group(p_responsibility_id number,
37                         p_application_id number) return boolean is
41 
38 l_security_group_count pls_integer;
39 l_security_group varchar2(30);
40 l_profile_defined BOOLEAN;
42 begin
43 
44 /*
45     select count(*)
46     into   l_security_group_count
47     from   fnd_security_groups
48     where  security_group_id >= 0;
49 */
50     --l_security_group := fnd_profile.value('ENABLE_SECURITY_GROUPS');
51 
52     fnd_profile.get_specific(
53                 name_z                  => 'ENABLE_SECURITY_GROUPS',
54                 responsibility_id_z     => p_responsibility_id,
55 		application_id_z	=> p_application_id,
56                 val_z                   => l_security_group,
57                 defined_z               => l_profile_defined);
58 
59     if l_security_group = 'Y'
60     then
61       return TRUE;
62     else
63       return FALSE;
64     end if;
65 
66 end;
67 
68 --  ***********************************************
69 --      Procedure listMenuEntries
70 --  ***********************************************
71 procedure listMenuEntries(p_object in object,
72 			  p_entries in BOOLEAN,                      --defaulted to true, removed for GSCC
73 			  p_executable in BOOLEAN) is  --defaulted to false, removed for GSCC
74 
75 l_index         pls_integer;
76 l_object        object;
77 l_count		pls_integer;
78 c_error_msg     varchar2(240);
79 
80 cursor  menuentries is
81 select  prompt,
82         description,
83         sub_menu_id,
84 	entry_sequence
85 from    fnd_menu_entries_vl
86 where   menu_id = p_object.parent_menu_id
87 and	sub_menu_id is not null
88 and     function_id is null
89 and     prompt is not null
90   AND nvl(SUB_MENU_ID,-1) not IN -- add support for submenu exclusions 2029055
91              (select ACTION_ID
92               from   FND_RESP_FUNCTIONS
93               where  RESPONSIBILITY_ID = p_object.responsibility_id
94               and    APPLICATION_ID    = p_object.resp_appl_id)
95 order by entry_sequence;
96 
97 cursor  functionentries is  --mputman removed nvl() 1911095
98 SELECT  b.prompt prompt,    --mputman removed nvl() 1911095
99         nvl(b.description,b.prompt) description,
100         b.function_id,
101         b.entry_sequence,
102 	a.type,
103         a.web_html_call
104 from    fnd_form_functions_vl a,
105 	fnd_menu_entries_vl b
106 where   b.menu_id = p_object.parent_menu_id
107 AND b.prompt IS NOT NULL -- mputman added 1815466
108 --AND b.grant_flag='Y'
109 --removed grant_flag bug 3575253
110 and	a.function_id = b.function_id
111 and     a.type in ('WWW','WWK','SERVLET','JSP','FORM','INTEROPJSP')
112 and    nvl(a.FUNCTION_ID,-1) not in   -- menu exclusion support 1911095 mputman
113              (select ACTION_ID
114               from   FND_RESP_FUNCTIONS
115               where  RESPONSIBILITY_ID = p_object.responsibility_id
116               and    APPLICATION_ID    = p_object.resp_appl_id)
117 order by entry_sequence;
118 
119 
120 begin
121 
122 -- Bug 3575253 - Added the below to use fnd_function_id.test_id
123 
124    if (FND_FUNCTION.G_ALREADY_FAST_COMPILED <> 'T') then
125        FND_FUNCTION.FAST_COMPILE;
126     end if;
127 
128 
129 
130     fnd_global.apps_initialize(icx_sec.g_user_id,
131                                p_object.responsibility_id,
132                                p_object.resp_appl_id,
133                                p_object.security_group_id);
134 
135 -- Bug 3575253
136 
137 if not p_executable
138 and (p_object.function_explode = 'Y' or (p_entries and p_object.level = 1))
139 then
140 
141   select  count(*)
142   into    l_count
143   from    fnd_form_functions a,
144           fnd_menu_entries b
145   where   b.menu_id = p_object.parent_menu_id
146   and     a.function_id = b.function_id
147   and     a.type in ('WWW','WWK','SERVLET','JSP','FORM','INTEROPJSP')
148 --AND b.grant_flag='Y'
149 --removed grant_flag bug 3575253
150 
151 and    nvl(a.FUNCTION_ID,-1) not in   -- menu exclusion support 1911095 mputman
152              (select ACTION_ID
153               from   FND_RESP_FUNCTIONS
154               where  RESPONSIBILITY_ID = p_object.responsibility_id
155               and    APPLICATION_ID    = p_object.resp_appl_id);
156 
157   if l_count > 0
158   then
159    if p_object.level = 1
160    then
161     l_index := g_list.COUNT;
162     g_list(l_index).type := 'MENU';
163     g_list(l_index).resp_appl_id := p_object.resp_appl_id;
164     g_list(l_index).responsibility_id := p_object.responsibility_id;
165     g_list(l_index).security_group_id := p_object.security_group_id;
166     g_list(l_index).parent_menu_id := p_object.parent_menu_id;
167     g_list(l_index).entry_sequence := 0;
168     g_list(l_index).level := p_object.level;
169     g_list(l_index).prompt := p_object.prompt;
170     g_list(l_index).description := p_object.description;
171    end if;
172 
173    for f in functionentries loop
174         l_index := g_list.COUNT;
175 	g_list(l_index).type := 'FUNCTION';
176         g_list(l_index).resp_appl_id := p_object.resp_appl_id;
177         g_list(l_index).responsibility_id := p_object.responsibility_id;
178         g_list(l_index).security_group_id := p_object.security_group_id;
179         g_list(l_index).parent_menu_id := p_object.parent_menu_id;
180         g_list(l_index).entry_sequence := f.entry_sequence;
181 	g_list(l_index).function_id := f.function_id;
182         g_list(l_index).function_type := f.type;
183         g_list(l_index).web_html_call := f.web_html_call;
184         g_list(l_index).level := p_object.level;
185 
186 
187 --Bug 3575253 used fnd_function_test_id
188 
189     if (f.prompt is not null) and (fnd_function.test_id(f.function_id))
190         then
191             g_list(l_index).prompt := f.prompt;
192     if (f.description is not null) and (fnd_function.test_id(f.function_id))
193                then
194                 g_list(l_index).description := f.description;
195 
196         else if (fnd_function.test_id(f.function_id))
197                then
198 
199                 g_list(l_index).description := f.prompt;
200 
201          else if (fnd_function.test_id(f.function_id))
202 
203            then
204 
205               g_list(l_index).prompt := f.description;
206 
207               g_list(l_index).description := f.description;
208            end if;
209 end if;
210 
211 
212  end if;
213 
214 /*
215         if f.prompt is not null
216         then
217             g_list(l_index).prompt := f.prompt;
218             if f.description is not null
219             then
220                 g_list(l_index).description := f.description;
221             else
222                 g_list(l_index).description := f.prompt;
223             end if;
224         else
225             g_list(l_index).prompt := f.description;
226             g_list(l_index).description := f.description;
227 */
228 
229         end if;
230     end loop; -- menuentries
231   end if;
232 end if;
233 
234 select  count(*)
235 into    l_count
236 from    fnd_menu_entries
237 where   menu_id = p_object.parent_menu_id
238 and     sub_menu_id is not null;
239 
240 if l_count > 0
241 then
242   for m in menuentries loop
243     l_index := g_list.COUNT;
244     g_list(l_index).type := 'MENU';
245     g_list(l_index).resp_appl_id := p_object.resp_appl_id;
246     g_list(l_index).responsibility_id := p_object.responsibility_id;
247     g_list(l_index).security_group_id := p_object.security_group_id;
248     g_list(l_index).parent_menu_id := p_object.parent_menu_id;
249     g_list(l_index).entry_sequence := m.entry_sequence;
250     g_list(l_index).level := p_object.level;
251     g_list(l_index).prompt := m.prompt;
252     g_list(l_index).description := m.description;
253     if p_object.menu_explode = 'Y'
254     then
255         l_object.resp_appl_id := p_object.resp_appl_id;
256         l_object.responsibility_id := p_object.responsibility_id;
257         l_object.security_group_id := p_object.security_group_id;
258         l_object.parent_menu_id := m.sub_menu_id;
259         l_object.menu_explode := p_object.menu_explode;
260         l_object.function_explode := p_object.function_explode;
261         l_object.level := p_object.level+1;
262         l_object.prompt := p_object.prompt;
263         l_object.description := p_object.description;
264         listMenuEntries(p_object =>l_object,
265                         p_entries => p_entries,
266                         p_executable => p_executable);
267     end if;
268   end loop; -- menuentries
269 end if;
270 
271 exception
272     when others then
273 --        htp.p(SQLERRM);
274    fnd_message.set_name('ICX','ICX_CONTACT_WEBMASTER');
275    c_error_msg := fnd_message.get;
276    htp.p('<valign=left NOWRAP><font color="#CC0000" face="Arial" size=2><b>'||c_error_msg||dbms_utility.format_error_stack);
277 
278 
279 end;
280 
281 procedure listMenu(p_object in object,
282 		   p_entries in BOOLEAN) is
283 l_prompt		varchar2(240);
284 l_description           varchar2(240);
285 l_sub_menu_id               pls_integer;
286 l_index                 pls_integer;
287 l_object		object;
288 c_error_msg             varchar2(240);
289 
290 begin
291 
292 select  prompt,
293         description,
294         sub_menu_id
295 into	l_prompt,
296 	l_description,
297 	l_sub_menu_id
298 from    fnd_menu_entries_vl
299 where   menu_id = p_object.parent_menu_id
300 and	entry_sequence = p_object.entry_sequence
301 order by entry_sequence;
302 
303 l_index := g_list.COUNT;
304 g_list(l_index).location := p_object.location;
305 g_list(l_index).display_sequence := p_object.display_sequence;
306 g_list(l_index).type := 'MENU';
307 g_list(l_index).responsibility_id := p_object.responsibility_id;
308 g_list(l_index).parent_menu_id := p_object.parent_menu_id;
309 g_list(l_index).entry_sequence := p_object.entry_sequence;
310 g_list(l_index).menu_explode := p_object.menu_explode;
311 g_list(l_index).function_explode := p_object.function_explode;
312 g_list(l_index).level := p_object.level;
313 
314 if l_prompt is not null
315 then
316     g_list(l_index).prompt := l_prompt;
317     if l_description is not null
318     then
319         g_list(l_index).description := l_description;
320     else
321         g_list(l_index).description := l_prompt;
322     end if;
323 else
324     g_list(l_index).prompt := l_description;
325     g_list(l_index).description := l_description;
326 end if;
327 
328 l_object.responsibility_id := p_object.responsibility_id;
329 l_object.parent_menu_id := l_sub_menu_id;
330 l_object.menu_explode := p_object.menu_explode;
331 l_object.function_explode := p_object.function_explode;
332 l_object.level := p_object.level+1;
333 listMenuEntries(p_object => l_object,
334 		          p_entries => p_entries,
335                 p_executable => FALSE); -- pass in defaults (GSCC)
336 
340       fnd_message.set_name('ICX','ICX_CONTACT_WEBMASTER');
337 exception
338     when others then
339 --        htp.p(SQLERRM);
341       c_error_msg := fnd_message.get;
342       htp.p('<valign=left NOWRAP><font color="#CC0000" face="Arial" size=2><b>'||c_error_msg||dbms_utility.format_error_stack);
343 
344 
345 
346 end;
347 
348 --  ***********************************************
349 --      Procedure listResponsibility
350 --  ***********************************************
351 procedure listResponsibility(p_object in object,
352 			     p_entries  in BOOLEAN,             --defaulted to true, removed for GSCC
353 		             p_executable in BOOLEAN) is  --defaulted to fales, removed for GSCC
354 
355 l_responsibility_name	varchar2(100);
356 l_description		varchar2(240);
357 l_menu_id		pls_integer;
358 l_index         	pls_integer;
359 l_object		object;
360 c_error_msg             varchar2(240);
361 
362 begin
363 
364 -- 1584809 nlbarlow, add application_id
365 select  responsibility_name,
366         description,
367         menu_id
368 into    l_responsibility_name,
369         l_description,
370         l_menu_id
371 from    fnd_responsibility_vl
372 where   application_id = p_object.resp_appl_id
373 and     responsibility_id = p_object.responsibility_id
374 and     version in ('4','W')
375 and     start_date <= sysdate
376 and     (end_date is null or end_date > sysdate);
377 
378 l_index := g_list.COUNT;
379 g_list(l_index).location := p_object.location;
380 g_list(l_index).display_sequence := p_object.display_sequence;
381 g_list(l_index).type := 'RESPONSIBILITY';
382 g_list(l_index).resp_appl_id := p_object.resp_appl_id;
383 g_list(l_index).responsibility_id := p_object.responsibility_id;
384 g_list(l_index).security_group_id := p_object.security_group_id;
385 g_list(l_index).prompt := l_responsibility_name;
386 g_list(l_index).description := l_description;
387 g_list(l_index).menu_explode := p_object.menu_explode;
388 g_list(l_index).function_explode := p_object.function_explode;
389 g_list(l_index).level := p_object.level;
390 
391 if p_object.menu_explode = 'Y'
392 or (p_entries and p_object.level = 0)
393 then
394     l_object.resp_appl_id := p_object.resp_appl_id;
395     l_object.responsibility_id := p_object.responsibility_id;
396     l_object.security_group_id := p_object.security_group_id;
397     l_object.parent_menu_id := l_menu_id;
398     l_object.menu_explode := p_object.menu_explode;
399     l_object.function_explode := p_object.function_explode;
400     l_object.level := p_object.level+1;
401     l_object.prompt := p_object.prompt;
402     l_object.description := p_object.description;
403     listMenuEntries(p_object =>l_object,
404 		    p_entries => p_entries,
405 		    p_executable => p_executable);-- pass in defaults (GSCC)
406 end if;
407 
408 exception
409     when others then
410 --        htp.p(SQLERRM);
411        fnd_message.set_name('ICX','ICX_CONTACT_WEBMASTER');
412        c_error_msg := fnd_message.get;
413        htp.p('<valign=left NOWRAP><font color="#CC0000" face="Arial" size=2><b>'||c_error_msg||dbms_utility.format_error_stack);
414 
415 
416 end;
417 
418 procedure displayUnderConstruction is
419 
420 l_title varchar2(80);
421 l_name varchar2(80);
422 
423 begin
424 
425     htp.p('<html>');
426     htp.p('<head>');
427 
428     htp.p('<title>'||l_title||'</title>');
429 
430     htp.p('<SCRIPT LANGUAGE="JavaScript">');
431 
432     htp.p('var function_window = new Object();');
433     htp.p('function_window.open = false;');
434 
435     htp.p('function icx_nav_window(mode, url, name){
436           if (mode == "WWK" || mode =="FORM") {
437             attributes = "status=yes,resizable=yes,scrollbars=yes,menubar=no,toolbar=no";
438             function_window.win = window.open(url, "function_window", attributes);
439             if (function_window.win != null)
440               if (function_window.win.opener == null)
441                 function_window.win.opener = self;
442             function_window.win.focus();
443             }
444           else {
445             top.location = url;
446             };
447         };');
448 
449     htp.p('function topwindowfocus() {
450             if (document.functionwindowfocus.X.value == "TRUE") {
451                function_window.win.focus();
452             }
453           };');
454 
455     icx_admin_sig.help_win_script('ICXPHP', null, 'FND');
456 
457     htp.p('</SCRIPT>');
458 
459     htp.p('</head>');
460 --    htp.p('<body bgcolor="'||icx_plug_utilities.bgcolor||'" onfocus="topwindowfocus()">');
461     htp.p('<body bgcolor= #FFFFFF onfocus="topwindowfocus()">');
462 
463     htp.formOpen(curl => 'XXX',
464                cattributes => 'NAME="functionwindowfocus"');
465     htp.formHidden('X','FALSE');
466     htp.formClose;
467 
468     icx_plug_utilities.toolbar(p_text => l_title,
469                                p_language_code => icx_sec.g_language_code,
470                                p_disp_help => 'Y',
471                                p_disp_exit => 'Y',
472                                p_disp_menu => 'N');
473 
474     htp.p('<!- Outer table ->');
475     htp.p('<table  border=0 cellspacing=0 cellpadding=0>');
476     htp.p('<tr>');
477     htp.p('<!- Left Column ->');
478     htp.p('<td valign=top align=left width="1%"> This feature is not available yet.');
479     htp.p('</td></tr>');
480     htp.p('</table>'); -- outer table
481     htp.p('</html>');
482 
483 end;
484 
485 
486 -- ************************************************************
487 --           Responsibility
491                          D                in varchar2,
488 -- ************************************************************
489 
490 procedure Responsibility(P                in pls_integer,
492                          S                in pls_integer,
493                          M                in pls_integer,
494                          tab_context_flag in varchar2) is
495    --P = responsibility
496    --D = plug name
497    --S = security group
498    --M = menu id - defaults to 9999
499 
500 
501 l_resp_appl_id			number;
502 l_responsibility_id		number;
503 l_responsibility_name		varchar2(240);
504 l_responsibility_description	varchar2(240);
505 l_security_group_id	        number;
506 l_security_group_name		varchar2(80);
507 l_object			object;
508 l_message			varchar2(2000);
509 l_title				varchar2(80);
510 l_name				varchar2(80);
511 l_toolbar_color			varchar2(30);
512 l_url				varchar2(4000);
513 l_target			varchar2(30);
514 l_agent				varchar2(80);
515 l_page_id			number;
516 l_session_id			number;
517 l_menu_id                       number;
518 l_prompts		icx_util.g_prompts_table;
519 l_title2				varchar2(80);
520 l_function_id      NUMBER;
521 l_menu_type        VARCHAR2(50);
522 
523 c_error_msg             varchar2(240);
524 
525 --Modified this cursor to join to menus 2314636  --mputman
526 cursor responsibilities is
527 select distinct b.RESPONSIBILITY_APPLICATION_ID,
528         a.RESPONSIBILITY_ID,
529         b.SECURITY_GROUP_ID,
530         a.RESPONSIBILITY_NAME,
531         a.DESCRIPTION,
532         fsg.SECURITY_GROUP_NAME,
533         m.TYPE,
534         m.menu_id
535 from    FND_SECURITY_GROUPS_VL fsg,
536         FND_RESPONSIBILITY_VL a,
537         FND_USER_RESP_GROUPS b,
538         fnd_menus m
539 where   b.user_id = icx_sec.g_user_id
540 AND     a.menu_id = m.menu_id
541 and     b.start_date <= sysdate
542 and     (b.end_date is null or b.end_date > sysdate)
543 and     b.RESPONSIBILITY_id = a.responsibility_id
544 and     b.RESPONSIBILITY_application_id = a.application_id
545 and     a.version IN ('W')
546 and     a.start_date <= sysdate
547 and     (a.end_date is null or a.end_date > sysdate)
548 AND b.SECURITY_GROUP_ID IN (-1, fsg.SECURITY_GROUP_ID)
549 AND fsg.SECURITY_GROUP_ID >= 0
550 AND nvl(FND_PROFILE.VALUE('NODE_TRUST_LEVEL'),1) <=
551 nvl(FND_PROFILE.VALUE_SPECIFIC('APPL_SERVER_TRUST_LEVEL',b.USER_ID,a.RESPONSIBILITY_ID,b.RESPONSIBILITY_APPLICATION_ID),1)
552 ORDER BY a.RESPONSIBILITY_NAME, fsg.SECURITY_GROUP_NAME;
553 
554 begin
555 
556 if icx_sec.validateSession
557 then
558 
559 -- 2758891 nlbarlow APPLICATIONS_HOME_PAGE
560 if (icx_sec.g_mode_code = '115X') then -- Oracle Portal, nlbarlow
561 
562    fnd_profile.get(name => 'APPS_PORTAL',
563                     val => l_url);
564 
565    if l_url IS NULL Then
566       htp.p ('Please contact System Administrator. ');
567       htp.p ('Profile - APPS_PORTAL is null') ;
568    end If ;
569 
570     owa_util.mime_header('text/html', FALSE);
571     owa_util.redirect_url(l_url);
572     owa_util.http_header_close;
573 
574 elsif fnd_profile.value('APPLICATIONS_HOME_PAGE') = 'FWK'
575 then
576     select FUNCTION_ID
577     into   l_function_id
578     from   FND_FORM_FUNCTIONS
579     where  FUNCTION_NAME = 'OAHOMEPAGE';
580 
581     l_url := icx_portlet.createExecLink
582                 (p_application_id => nvl(icx_sec.g_resp_appl_id,'-1'),
583                  p_responsibility_id => nvl(icx_sec.g_responsibility_id,'-1'),
584                  p_security_group_id => nvl(icx_sec.g_security_group_id,'0'),
585                  p_function_id => l_function_id,
586                  p_url_only => 'Y');
587 
588     owa_util.mime_header('text/html', FALSE);
589     owa_util.redirect_url(l_url);
590     owa_util.http_header_close;
591 
592 elsif fnd_profile.value('APPLICATIONS_HOME_PAGE') = 'PHP_FWK'
593 then
594     select FUNCTION_ID
595     into   l_function_id
596     from   FND_FORM_FUNCTIONS
597     where  FUNCTION_NAME = 'FND_NAVIGATE_PAGE';
598 
599     l_url := icx_portlet.createExecLink
600                 (p_application_id => nvl(icx_sec.g_resp_appl_id,'-1'),
601                  p_responsibility_id => nvl(icx_sec.g_responsibility_id,'-1'),
602                  p_security_group_id => nvl(icx_sec.g_security_group_id,'0'),
603                  p_function_id => l_function_id,
604                  p_url_only => 'Y');
605 
606     owa_util.mime_header('text/html', FALSE);
607     owa_util.redirect_url(l_url);
608     owa_util.http_header_close;
609 
610 elsif (icx_sec.g_mode_code in ('115J', '115P', 'SLAVE') and
611     tab_context_flag = 'ON') then
612 
613     OracleMyPage.DrawTabContent;
614 
615 else -- PHP
616 
617     l_title := icx_util.getPrompt(601,'ICX_OBIS_NAVIGATE',178,'ICX_MAIN_MENU');
618     l_toolbar_color := icx_plug_utilities.toolbarcolor;
619 
620     /*
621     ** The agent must have the web server in front of it to ensure
622     ** it works in ie javascript.  The problem is if your running the
623     ** old style OBIS mode, you'll get an extra slash from
624     ** icx_plug_utilities.getPLSQLagent.  Will remove here.
625     */
626     if (substr(icx_plug_utilities.getPLSQLagent, 1, 1) = '/') then
627 
628        l_agent := FND_WEB_CONFIG.WEB_SERVER||
629                   substr(icx_plug_utilities.getPLSQLagent,2);
630 
631     else
632 
633        l_agent := FND_WEB_CONFIG.WEB_SERVER||icx_plug_utilities.getPLSQLagent;
634 
635     end if;
636 
637 
638     if P is null
639     then
640 
641       l_responsibility_id := icx_sec.getID(icx_sec.PV_RESPONSIBILITY_ID);
642       if NVL(l_responsibility_id, -1) = -1
643       then
644         open responsibilities;
645         fetch responsibilities into l_resp_appl_id,
646                                     l_responsibility_id,
647                                     l_security_group_id,
648                                     l_responsibility_name,
649                                     l_responsibility_description,
650                                     l_security_group_name,
651                                     l_menu_type,
652                                     l_menu_id;
653         close responsibilities;
654          l_menu_id := NULL;
655          l_menu_type := NULL;
656       end if;
657     else
658         l_responsibility_id := icx_call.decrypt2(P);
659     end if;
660 
661     /* ensure that menu is set to a not null value so that Main Menu icon
662        is painted only for functions called from the Navigate plug. */
663     if M is null then
664        l_menu_id := 9999;
665     else
666        l_menu_id := M;
667     end if;
668 
669     if (D is null) then
670        -- check to see if need to get page for new style or old style page.
671        if (icx_sec.g_mode_code in ('115J', '115P', 'SLAVE')) then
672 
673           l_session_id := icx_sec.getsessioncookie;
674 
675           select page_id into l_page_id
676             from icx_sessions
677            where session_id = l_session_id;
678 
679           -- see if display name is associated with navigate plug with a value of -1
680           begin
681               select display_name
682 		into l_name
683 		from icx_page_plugs a,
684 		     icx_pages b
685 	       where b.user_id = icx_sec.g_user_id
686 		 and b.page_id = a.page_id
687 		 and a.page_id = l_page_id
688 		 and a.responsibility_id = -1
689 		 and a.menu_id = -1;
690           exception
691                when no_data_found then
692                     l_name := null;
693           end;
694 
695           if (l_name is null) then
696              -- display_name is associated with a non -1 navigate plug
697              -- also since there could be more than one such plug on a page
698              -- use select distinct so only one row is returned.  This may
699              -- return the incorrect name but we can't help that because
700              -- currently there is no way for us to know what navigate plug
701              -- to return to.
702 
703              begin
704    	       select distinct NVL(ipp.DISPLAY_NAME, fme.prompt)
705 	         into l_name
706 	         from icx_page_plugs ipp,
707 		      fnd_menu_entries_vl fme,
708 		      fnd_form_functions fff
709 	        where ipp.page_id = l_page_id
710 		  and ipp.menu_id = fme.menu_id
711 		  and ipp.entry_sequence = fme.entry_sequence
712 		  and fff.function_id = fme.function_id
713 		  and fff.function_name = 'ICX_NAVIGATE_PLUG';
714              exception
715                 when no_data_found then
716                    l_name := null;
717              end;
718 
719           end if;
720 
721        else -- need to return to the old style page
722 
723           begin
724 	     select DISPLAY_NAME
725 	       into l_name
726 	       from ICX_PAGE_PLUGS a,
727 		    ICX_PAGES b
728 	      where b.USER_ID = icx_sec.g_user_id
729 		and b.PAGE_ID = a.PAGE_ID
730 		and a.RESPONSIBILITY_ID = -1
731 		and a.MENU_ID = -1
732 		and b.page_id in (select MIN(page_id)
733 				    from ICX_PAGES
734 				   where user_id = icx_sec.g_user_id
735 				     and PAGE_TYPE = 'USER');
736           exception
737              when no_data_found then
738                   l_name := null;
739           end;
740 
741           if (l_name is null) then
742              -- display_name is associated with a non -1 navigate plug
743              -- also since there could be more than one such plug on a page
744              -- use select distinct so only one row is returned.  This may
745              -- return the incorrect name but we can't help that because
746              -- currently there is no way for us to know what navigate plug
747              -- to return to.
748 
749              begin
750 		select distinct NVL(ipp.DISPLAY_NAME, fme.prompt)
751 		  into l_name
752 		  from icx_page_plugs ipp,
753 		       fnd_menu_entries_vl fme,
754 		       fnd_form_functions fff
755 		 where ipp.menu_id = fme.menu_id
756 		   and ipp.entry_sequence = fme.entry_sequence
757 		   and fff.function_id = fme.function_id
758 		   and fff.function_name = 'ICX_NAVIGATE_PLUG'
759 		   and ipp.page_id in (select MIN(page_id)
760 					 from ICX_PAGES
761 					where user_id = icx_sec.g_user_id
762 					  and PAGE_TYPE = 'USER');
763               exception
764                   when no_data_found then
765                        l_name := null;
766               end;
767 
768           end if;
769 
770        end if; -- need to return to the old style page
771     else
772 BEGIN
773    SELECT display_name
774       INTO l_name
775       FROM icx_page_plugs
776       WHERE plug_id= D;
777 EXCEPTION
778    WHEN OTHERS THEN
779 
780       l_name :=D;
781 END;
782        --l_name := D;
783     end if;
784 
785 IF l_name IS NULL THEN
786   icx_util.getprompts(601, 'ICX_OBIS_NAVIGATE', l_title2, l_prompts);
787   l_name:=l_prompts(1);
788 END IF;
789 
790     if S is null
791     then
792       l_security_group_id := icx_sec.g_security_group_id;
793     else
794       l_security_group_id := S;
795     end if;
796 
797     if l_security_group_id is null
798     then
799       l_security_group_id := 0;
800     end if;
801 
802     select b.RESPONSIBILITY_APPLICATION_ID,
803            b.SECURITY_GROUP_ID,
804            a.RESPONSIBILITY_NAME,
805            a.DESCRIPTION,
806            fsg.SECURITY_GROUP_NAME
807     into   l_resp_appl_id,
808            l_security_group_id,
809            l_responsibility_name,
810            l_responsibility_description,
811            l_security_group_name
812     from   FND_SECURITY_GROUPS_VL fsg,
813            FND_RESPONSIBILITY_VL a,
814            FND_USER_RESP_GROUPS b
815     where  b.USER_ID = icx_sec.g_user_id
816     and    a.APPLICATION_ID = b.RESPONSIBILITY_APPLICATION_ID
817     and    a.RESPONSIBILITY_ID = b.RESPONSIBILITY_ID
818     and    a.RESPONSIBILITY_ID = l_responsibility_id
819     and    b.SECURITY_GROUP_ID = fsg.SECURITY_GROUP_ID
820     and    fsg.SECURITY_GROUP_ID = l_security_group_id;
821 
822     g_list := g_nulllist;
823 
824     l_object.type := 'RESPONSIBILITY';
825     l_object.resp_appl_id := l_resp_appl_id;
826     l_object.responsibility_id := l_responsibility_id;
827     l_object.security_group_id := l_security_group_id;
828     l_object.parent_menu_id := '';
829     l_object.entry_sequence := '';
830     l_object.menu_explode := 'Y';
831     l_object.function_explode := 'Y';
832     l_object.level := 0;
833 
834     if security_group(l_responsibility_id, l_resp_appl_id)
835     then
836       l_object.prompt := l_responsibility_name||', '||l_security_group_name;
837     else
838       l_object.prompt := l_responsibility_name;
839     end if;
840     l_object.description := l_responsibility_description;
841 
842     listResponsibility(p_object => l_object,
843 		          p_entries => TRUE,
844                 p_executable => FALSE); -- pass in defaults (GSCC)
845 
846     htp.p('<html>');
847     if icx_cabo.g_base_href is null
848     then
849       htp.p('<BASE HREF="'||FND_WEB_CONFIG.WEB_SERVER||'">');
850     else
851 --      htp.p('<SCRIPT LANGUAGE="JavaScript">
852 --              base.href="'||icx_cabo.g_base_href||'"
853 --             </SCRIPT>');
854       htp.p('<BASE HREF="'||icx_cabo.g_base_href||'">');
855     end if;
856     htp.p('<head>');
857     htp.p('<title>'||l_title||'</title>');
858 
859     htp.p('<SCRIPT LANGUAGE="JavaScript">');
860 
861     htp.p('var function_window = new Object();');
862     htp.p('var counter=0;'); -- add support for unique window names 1812147
863     htp.p('var hostname="'||replace((replace(FND_WEB_CONFIG.DATABASE_ID,'-','_')),'.','_')||'";');
864     htp.p('function_window.open = false;');
865     --mputman added 1743710
866     htp.p('function icx_nav_window2(mode, url, resp_app, resp_key, secgrp_key, name){
867              counter=counter+1;
868              hostname=hostname;
869              resp_app=escape(unescape(resp_app));
870              resp_key=escape(unescape(resp_key));
871              secgrp_key=escape(unescape(secgrp_key));
872              url=url+"RESP_APP="+resp_app+"&RESP_KEY="+resp_key+"&SECGRP_KEY="+secgrp_key;
873              if (mode == "WWK" || mode =="FORM") {
874                attributes = "status=yes,resizable=yes,scrollbars=yes,menubar=no,toolbar=no";
875                function_window.win = window.open(url, "function_window"+counter_hostname, attributes);
876                if (function_window.win != null)
877                  if (function_window.win.opener == null)
878                    function_window.win.opener = self;
879                    function_window.win.focus();
880              }
881              else {
882                self.location = url;
883                };
884 
885 
886       };');
887 
888     htp.p('function icx_nav_window(mode, url, name){
889           if (mode == "WWK" || mode =="FORM") {
890             attributes = "status=yes,resizable=yes,scrollbars=yes,menubar=no,toolbar=no";
891             function_window.win = window.open(url, "function_window", attributes);
892             if (function_window.win != null)
893               if (function_window.win.opener == null)
894                 function_window.win.opener = self;
895             function_window.win.focus();
896             }
897           else {
898             top.location = url;
899             };
900         };');
901 
902    htp.p('function topwindowfocus() {
903             if (document.functionwindowfocus.X.value == "TRUE") {
904                function_window.win.focus();
905             }
906           };');
907 
908     icx_admin_sig.help_win_script('ICXPHP', null, 'FND');
909 
910     htp.p('</SCRIPT>');
911 
912     htp.p('</head>');
913 
914     if (icx_sec.g_mode_code in ('115J', '115P', 'SLAVE')) then
915         htp.p('<body bgcolor="#CCCCCC" onfocus="topwindowfocus()">');
916     else
917         htp.p('<body bgcolor="'||icx_plug_utilities.bgcolor||'" onfocus="topwindowfocus()">');
918     end if;
919 
920 --  Needed for RF.jsp
921 --  htp.p(FND_RUN_FUNCTION.GET_FORMS_LAUNCHER_SETUP);
922 
923     htp.formOpen(curl => 'XXX',
924                cattributes => 'NAME="functionwindowfocus"');
925     htp.formHidden('X','FALSE');
926     htp.formClose;
927 
928     if ( substr(icx_sec.g_mode_code,1,3) = '115' or
929          icx_sec.g_mode_code = 'SLAVE')
930     then
931       l_target := '_self';
932     else
933       l_target := '_top';
934 
935     icx_plug_utilities.toolbar(p_text => l_title,
936                                p_language_code => icx_sec.g_language_code,
937                                p_disp_help => 'Y',
938                                p_disp_exit => 'Y',
939                                p_disp_menu => 'N');
940     end if;
941 
942     htp.p('<!- Outer table ->');
943     htp.p('<table  border=0 cellspacing=0 cellpadding=0>');
944     htp.p('<tr><td><img src="/OA_MEDIA/FNDINVDT.gif" width=8 height=12></td>');
945 
946     htp.p('<!- Left Column ->');
947 
948     htp.p('<td valign=top align=left width="1%">');
949     htp.p('<table  border=0 cellspacing=0 cellpadding=0><tr><td>');
950     icx_plug_utilities.banner(l_name);
951     htp.p('</td></tr>');
952     htp.p('<tr><td><font size=-2><BR></font></td></tr>');
953     htp.p('<tr><td>');
954 
955     htp.p('<table border=0 cellspacing=0 cellpadding=0 valign=top align=left>');
956     for r in responsibilities loop
957 
958     if security_group  (r.responsibility_id, r.responsibility_application_id)
959     then
960       l_responsibility_name := r.responsibility_name||', '||r.security_group_name;
961     else
962       l_responsibility_name := r.responsibility_name;
963     end if;
964 
965     if l_responsibility_id = r.responsibility_id and
966        l_security_group_id = r.security_group_id
967     then
968 
969     htp.p('<tr>');
970     htp.p('<td>');
971     htp.p('<image src="/OA_MEDIA/FNDREDPT.gif" alt="'||icx_util.replace_alt_quotes(r.description)||'">');
972     htp.p('</td>');
973     htp.p('<td valign=middle NOWRAP><font color="#CC0000" face="Arial" size=2><b>'||l_responsibility_name||'</td></tr>');
974     htp.p('</tr>');
975 
976     else
977 
978     htp.p('<tr>');
979     htp.p('<td></td>');
980     htp.p('<td NOWRAP><font face="Arial" size=2><b>');
981     --Put IF logic here for bug 2314636 --mputman
982     IF r.TYPE = 'HOMEPAGE' THEN
983          BEGIN
984            SELECT function_id
985              INTO l_function_id
986              FROM fnd_menu_entries_vl
987              WHERE menu_id=r.menu_id
988              AND FUNCTION_ID is not null
989              AND ROWNUM=1
990              ORDER BY entry_sequence;
991          END;
992 
993       l_url := icx_portlet.createExecLink
994                (p_application_id => r.responsibility_application_id,
995                 p_responsibility_id => r.responsibility_id,
996                 p_security_group_id => r.security_group_id,
997                 p_function_id => l_function_id,
998                 p_link_name => l_responsibility_name,
999                 p_url_only => 'N');
1000 
1001      htp.p(l_url);
1002 
1003     ELSE
1004       htp.anchor(curl => l_agent||'OracleNavigate.Responsibility?P='||icx_call.encrypt2(r.responsibility_id)||'&'||'D='||wfa_html.conv_special_url_chars(D)||'&'||'S='||r.security_group_id||'&'||'tab_context_flag=OFF',
1005                  ctext => l_responsibility_name,
1006                  cattributes => 'TARGET="'||l_target||'" onMouseOver="window.status='''||icx_util.replace_quotes(r.description)||''';return true"');
1007     END IF;
1008     htp.p('</td>');
1009     htp.p('</tr>');
1010 
1011     end if; -- P = r.responsibility_id
1012 
1013     end loop;
1014 
1015     htp.p('<tr><td colspan=3><img src="/OA_MEDIA/FNDINVDT.gif" width=8 height=12></td></tr>');
1016     htp.p('</table>');
1017 
1018     htp.p('</td></tr></table>');
1019 
1020     htp.p('<!- Vertical Divider ->');
1021     htp.p('<td width="1"><img src="/OA_MEDIA/FNDINVDT.gif" width=8 height=12></td>');
1022     htp.p('<td width="1"><img src="/OA_MEDIA/FNDINVDT.gif" width=8 height=12></td>');
1023     htp.p('<td bgcolor="'||l_toolbar_color||'" width="1" cellpadding=0 cellspacing=0><img src="/OA_MEDIA/FNDINVDT.gif" width=1></td>');
1024 
1025 
1026     htp.p('<!- Right Column ->');
1027     htp.p('<td valign=top align=left width="99%">');
1028     htp.p('<table border=0 cellspacing=0 cellpadding=0 width="100%">');
1029 
1030     for i in 1..g_list.LAST loop -- functions
1031 
1032     if g_list(i).prompt is not null -- null prompt
1033     then
1034     if g_list(i).type = 'MENU' -- menu type
1035     then
1036      if g_list(i+1).type <> 'MENU'
1037      then
1038       htp.p('<tr>');
1039       htp.p('<td>');
1040       icx_plug_utilities.banner(g_list(i).prompt);
1041       htp.p('</td>');
1042       htp.p('</tr><tr><td><font size=-2><BR></font></td>');
1043       htp.p('</tr>');
1044      end if;
1045 
1046 
1047     else
1048       htp.p('<tr>');
1049       htp.p('<td align=left>');
1050       htp.p('&'||'nbsp<image src="/OA_MEDIA/FNDWATHS.gif" alt="'||icx_util.replace_alt_quotes(g_list(i).description)||'">');
1051       htp.p('<font face="Arial" size=2><b>');
1052       if substr(g_list(i).web_html_call,1,10) = 'javascript' -- javascript
1053       then
1054         l_url := replace(g_list(i).web_html_call,'"','''');
1055         l_url := replace(l_url,'[RESPONSIBILITY_ID]',g_list(i).responsibility_id);
1056         l_url := replace(l_url,'[PLSQL_AGENT]',icx_plug_utilities.getPLSQLagent);
1057         l_url := '<A HREF="'||l_url||'" onMouseOver="window.status='''||icx_util.replace_onMouseOver_quotes(g_list(i).description)||''';return true">'||g_list(i).prompt||'</b></font></A>';
1058 
1059         htp.p(l_url);
1060 
1061       else
1062         -- 2903730 nlbarlow
1063         if g_list(i).FUNCTION_TYPE = 'WWK'
1064         then
1065           l_url := icx_portlet.createExecLink
1066                (p_application_id => g_list(i).resp_appl_id,
1067                 p_responsibility_id => g_list(i).responsibility_id,
1068                 p_security_group_id => g_list(i).security_group_id,
1069                 p_function_id => g_list(i).function_id,
1070                 p_link_name => g_list(i).prompt,
1071                 p_url_only => 'Y');
1072 
1073           l_url := 'javascript:top.main.icx_nav_window('''||g_list(i).FUNCTION_TYPE||''','''||l_url||''', '''||icx_util.replace_quotes(g_list(i).PROMPT)||''')';
1074 
1075           htp.anchor(curl => l_url,
1079         else if g_list(i).FUNCTION_TYPE = 'WWW'  -- bug 3764537
1076                ctext => g_list(i).prompt,
1077                cattributes => 'onMouseOver="window.status='''||icx_util.replace_onMouseOver_quotes(g_list(i).description)||''';return true"');
1078 
1080 		then
1081 
1082                   l_url := icx_portlet.createExecLink
1083                        (p_application_id => g_list(i).resp_appl_id,
1084                         p_responsibility_id => g_list(i).responsibility_id,
1085                         p_security_group_id => g_list(i).security_group_id,
1086                         p_function_id => g_list(i).function_id,
1087                         p_link_name => g_list(i).prompt,
1088                         p_url_only => 'N');
1089                   htp.p(l_url);
1090 
1091 		-- end bug 3764537
1092 
1093 		else
1094 		  l_url := icx_portlet.createExecLink
1095 		       (p_application_id => g_list(i).resp_appl_id,
1096 			p_responsibility_id => g_list(i).responsibility_id,
1097 			p_security_group_id => g_list(i).security_group_id,
1098 			p_function_id => g_list(i).function_id,
1099 			p_link_name => g_list(i).prompt,
1100 			p_url_only => 'N',
1101 			p_parameters=> 'OAFMID=' || to_char(g_list(i).parent_menu_id) || '&OAPB=_OAFMID' ); -- bug 3456465
1102 
1103 		  htp.p(l_url);
1104 		end if;
1105         end if;
1106 /*
1107         if ( substr(icx_sec.g_mode_code,1,3) = '115' OR
1108              icx_sec.g_mode_code = 'SLAVE')
1109         then
1110            IF ((g_list(i).FUNCTION_TYPE = 'WWK') OR (g_list(i).FUNCTION_TYPE = 'FORM')) THEN
1111                l_url := 'javascript:top.main.icx_nav_window('''||g_list(i).FUNCTION_TYPE||''','''||l_url||''', '''||icx_util.replace_quotes(g_list(i).PROMPT)||''')';
1112            END IF;
1113         else
1114            IF ((g_list(i).FUNCTION_TYPE = 'WWK') OR (g_list(i).FUNCTION_TYPE = 'FORM')) THEN
1115               l_url := 'javascript:icx_nav_window('''||g_list(i).FUNCTION_TYPE||''','''||l_url||''', '''||icx_util.replace_quotes(g_list(i).PROMPT)||''')';
1116            END IF;
1117         end if;
1118 */
1119       end if;
1120 
1121 /*
1122       IF ((g_list(i).FUNCTION_TYPE = 'WWK') OR (g_list(i).FUNCTION_TYPE = 'FORM')) THEN
1123       htp.anchor(curl => l_url,
1124                ctext => g_list(i).prompt,
1125                cattributes => 'onMouseOver="window.status='''||icx_util.replace_onMouseOver_quotes(g_list(i).description)||''';return true"');
1126       ELSE
1127       htp.anchor2(curl => l_url,
1128                ctext => g_list(i).prompt,
1129                cattributes => 'onMouseOver="window.status='''||icx_util.replace_onMouseOver_quotes(g_list(i).description)||''';return true"',
1130                ctarget => '_top');
1131       END IF;
1132 */
1133 
1134 
1135       htp.p('</td>');
1136       htp.p('</tr>');
1137       if i+1 = g_list.COUNT
1138       then
1139         htp.p('<tr><td><BR></td></tr>');
1140 
1141       else
1142         if g_list(i+1).type = 'MENU'
1143         then
1144           htp.p('<tr><td><BR></td></tr>');
1145 
1146         end if;
1147       end if;
1148     end if; -- menu type
1149     end if; -- null prompt
1150     end loop; -- functions
1151 
1152 
1153     htp.p('</table>');
1154 
1155     if l_url is null
1156      then
1157 
1158     fnd_message.set_name('FND','FND_APPSNAV_NO_AVAIL_APPS');
1159     c_error_msg := fnd_message.get;
1160 
1161     htp.p('<font size=-2></font>');
1162     htp.p('</b>');
1163     htp.p('<font face="Arial" size=2><b>'||c_error_msg);
1164 
1165 else
1166 
1167     htp.p('</tr>');
1168 
1169     htp.p('</table>');
1170 
1171     --htp.p('<script>'||substr(l_url,12)||'</script>');--mputman debug
1172 end if;  --icx_sec.validatesession
1173 
1174 end if;  -- icx_sec.g_mode_code in ('115J', '115P');
1175 
1176 --added end if;
1177 end if;
1178 
1179 
1180 
1181 exception
1182     when others then
1183 --        htp.p(SQLERRM);
1184       fnd_message.set_name('ICX','ICX_CONTACT_WEBMASTER');
1185       c_error_msg := fnd_message.get;
1186       htp.p('<valign=left NOWRAP><font color="#CC0000" face="Arial" size=2><b>'||c_error_msg||dbms_utility.format_error_stack);
1187 
1188 end;
1189 
1190 
1191 procedure Navigate(p_session_id pls_integer,
1192                    p_plug_id    pls_integer,
1193                    p_display_name  varchar2,
1194                    p_delete     VARCHAR2) is
1195 
1196 l_object		object;
1197 l_url			varchar2(4000);
1198 l_title			varchar2(80);
1199 l_php_mode		varchar2(30);
1200 l_prompts		icx_util.g_prompts_table;
1201 l_agent			varchar2(80);
1202 l_responsibility_name   varchar2(240);
1203 l_encrypted_session_id	varchar2(240);
1204 l_target		varchar2(30);
1205 l_function_id           NUMBER;
1206 c_error_msg             varchar2(240);
1207 
1208 cursor responsibilities_W is
1209 select distinct a.responsibility_id,
1210         a.responsibility_name,
1211         a.description,
1212         a.responsibility_key,
1213         b.responsibility_application_id,
1214         fsg.SECURITY_GROUP_NAME,
1215         fsg.SECURITY_GROUP_ID,
1216         fsg.security_group_key,
1217         fa.application_short_name,
1218         m.menu_id,
1219         m.type,
1220         a.version
1221 from    FND_SECURITY_GROUPS_VL fsg,
1222         fnd_responsibility_vl a,
1223         FND_USER_RESP_GROUPS b,
1224         FND_APPLICATION fa,
1225         FND_MENUS m
1226 where   b.user_id = icx_sec.g_user_id
1227 AND     m.menu_id = a.menu_id
1228 and     version in ('4','W')
1232 and     b.RESPONSIBILITY_application_id = a.application_id
1229 and     b.start_date <= sysdate
1230 and     (b.end_date is null or b.end_date > sysdate)
1231 and     b.RESPONSIBILITY_id = a.responsibility_id
1233 and     a.application_id = fa.application_id
1234 and     a.start_date <= sysdate
1235 and     (a.end_date is null or a.end_date > sysdate)
1236 AND b.SECURITY_GROUP_ID IN (-1, fsg.SECURITY_GROUP_ID)
1237 AND fsg.SECURITY_GROUP_ID >= 0
1238 AND nvl(FND_PROFILE.VALUE('NODE_TRUST_LEVEL'),1) <=
1239 nvl(FND_PROFILE.VALUE_SPECIFIC('APPL_SERVER_TRUST_LEVEL',b.USER_ID,a.RESPONSIBILITY_ID,b.RESPONSIBILITY_APPLICATION_ID),1)
1240 ORDER BY a.RESPONSIBILITY_NAME, fsg.SECURITY_GROUP_NAME;
1241 
1242 begin
1243 
1244 if p_delete = 'Y'
1245 then
1246   l_agent := l_agent;
1247 elsif icx_sec.validatePlugSession(p_plug_id,p_session_id)
1248 then
1249     /*
1250     ** The agent must have the web server in front of it to ensure
1251     ** it works in ie javascript.  The problem is if your running the
1252     ** old style OBIS mode, you'll get an extra slash from
1253     ** icx_plug_utilities.getPLSQLagent.  Will remove here.
1254     */
1255 
1256     if (substr(icx_plug_utilities.getPLSQLagent, 1, 1) = '/') then
1257 
1258        l_agent := FND_WEB_CONFIG.WEB_SERVER||
1259                   substr(icx_plug_utilities.getPLSQLagent,2);
1260 
1261     else
1262 
1263        l_agent := FND_WEB_CONFIG.WEB_SERVER||icx_plug_utilities.getPLSQLagent;
1264 
1265     end if;
1266 
1267     icx_util.getprompts(601, 'ICX_OBIS_NAVIGATE', l_title, l_prompts);
1268 
1269     l_php_mode := fnd_profile.value('APPLICATIONS_HOME_PAGE');
1270 
1271     if l_prompts.COUNT = 7 -- remove once seeddate available
1272     then
1273       l_prompts(6) := '';
1274       l_prompts(7) := '';
1275     end if;
1276 
1277     htp.p('<table border=0 cellspacing=0 cellpadding=0 width=100%>');
1278     htp.p('<tr><td>');
1279     icx_plug_utilities.plugbanner(nvl(p_display_name,l_prompts(1)),'','FNDNAVIG.gif');
1280     htp.p('</td></tr>');
1281 
1282     htp.p('<tr><td><font size=-2><BR></font></td></tr>');
1283 
1284     htp.p('<tr><td>');
1285     htp.p('<table border=0 cellspacing=0 cellpadding=0 width=100%>');
1286 
1287     if ( substr(icx_sec.g_mode_code,1,3) = '115' OR
1288          icx_sec.g_mode_code = 'SLAVE')
1289     then
1290       l_target := '_self';
1291     else
1292       l_target := '_top';
1293     end if;
1294 
1295     for r in responsibilities_W loop
1296 
1297        if security_group(r.responsibility_id, r.responsibility_application_id)
1298        then
1299 	 l_responsibility_name := r.responsibility_name||', '||r.security_group_name;
1300        else
1301 	 l_responsibility_name := r.responsibility_name;
1302        end if;
1303 
1304        htp.p('<tr>');
1305        htp.p('<td align="left" valign="top" NOWRAP>');
1306        htp.p('<font face="Arial" size=2>');
1307     --Put IF logic here for bug 2314636 --mputman
1308        IF r.type='HOMEPAGE' THEN
1309          BEGIN
1310            SELECT function_id
1311              INTO l_function_id
1312              FROM fnd_menu_entries_vl
1313              WHERE menu_id=r.menu_id
1314              AND FUNCTION_ID is not null
1315              AND ROWNUM=1
1316              ORDER BY entry_sequence;
1317          END;
1318 
1319          if l_php_mode = 'PHP_FWK'
1320          then
1321            l_url := icx_portlet.createExecLink
1322                (p_application_id => r.responsibility_application_id,
1323                 p_responsibility_id => r.responsibility_id,
1324                 p_security_group_id => r.security_group_id,
1325                 p_function_id => l_function_id,
1326                 p_link_name => l_responsibility_name,
1327                 p_url_only => 'N');
1328 
1329            htp.p('<image src="/OA_MEDIA/tree_document.gif" alt="'||icx_util.replace_alt_quotes(r.description)||'">');
1330            htp.p(l_url);
1331          else
1332            htp.p('<image src="/OA_MEDIA/FNDWATHS.gif" height=18 width=18 alt="'||icx_util.replace_alt_quotes(r.description)||'">');
1333 
1334            htp.anchor(curl => l_agent||'OracleSSWA.Execute?E='||icx_call.encrypt(r.responsibility_application_id||'*'||r.responsibility_id||'*'||r.security_group_id||'*'||l_function_id||'**]'),
1335                       ctext => l_responsibility_name,cattributes => 'TARGET="_top" onMouseOver="window.status='''||icx_util.replace_onMouseOver_quotes(r.description)||''';return true"');
1336          end if;
1337 
1338        ELSE
1339 
1340          if l_php_mode = 'PHP_FWK'
1341          then
1342            select FUNCTION_ID
1343            into   l_function_id
1344            from   FND_FORM_FUNCTIONS
1345            where  FUNCTION_NAME = 'FND_NAVIGATE_PAGE';
1346 
1347            l_url := icx_portlet.createExecLink
1348                (p_application_id => r.responsibility_application_id,
1349                 p_responsibility_id => r.responsibility_id,
1350                 p_security_group_id => r.security_group_id,
1351                 p_function_id => l_function_id,
1352                 p_parameters => 'navRespId='||r.responsibility_id||'&'||'navRespAppId='||r.responsibility_application_id||'&'||'navSecGrpId='||r.security_group_id,
1353                 p_link_name => l_responsibility_name,
1354                 p_url_only => 'N');
1355 
1356            htp.p('<image src="/OA_MEDIA/tree_folder.gif" alt="'||icx_util.replace_alt_quotes(r.description)||'">');
1357 
1358            htp.p(l_url);
1359 
1360          elsif r.version = '4'
1361          then
1362            htp.p('<image src="/OA_MEDIA/FNDWATHS.gif" height=18 width=18 alt="'||icx_util.replace_alt_quotes(r.description)||'">');
1363 
1364            l_url := 'javascript:top.main.icx_nav_window2(''WWK'', '''||l_agent|| 'fnd_icx_launch.runforms?ICX_TICKET=&''';
1365 
1369                          ||''','''||icx_util.replace_quotes(l_responsibility_name)||''')';
1366            l_url := l_url||','''||wfa_html.conv_special_url_chars(r.application_short_name)
1367                          ||''','''||wfa_html.conv_special_url_chars(r.responsibility_key)
1368                          ||''','''||wfa_html.conv_special_url_chars(r.security_group_key)
1370 
1371            htp.anchor(curl => l_url,
1372                ctext => l_responsibility_name,
1373                cattributes => 'TARGET="_top" onMouseOver="window.status='''||icx_util.replace_onMouseOver_quotes(r.description)||''';return true"');
1374 
1375          else
1376            htp.p('<image src="/OA_MEDIA/FNDWATHS.gif" height=18 width=18 alt="'||icx_util.replace_alt_quotes(r.description)||'">');
1377 
1378            htp.anchor(curl => l_agent||'OracleNavigate.Responsibility?P='||icx_call.encrypt2(r.responsibility_id)||'&'||'D='||wfa_html.conv_special_url_chars(p_plug_id)||'&'||'S='||r.security_group_id||'&'||'tab_context_flag=OFF'||'&'||'M=
1379 9999',
1380                       ctext => l_responsibility_name,
1381                       cattributes => 'TARGET="'||l_target||'" onMouseOver="window.status='''||icx_util.replace_onMouseOver_quotes(r.description)||''';return true"');
1382          end if;
1383 
1384        END IF;
1385        htp.p('</td></tr>');
1386 
1387     end loop;
1388 
1389     htp.p('</td></tr></table>');
1390     htp.p('</TABLE>');
1391 
1392 end if;
1393 
1394 exception
1395     when others then
1396 --        htp.p(SQLERRM);
1397        fnd_message.set_name('ICX','ICX_CONTACT_WEBMASTER');
1398        c_error_msg := fnd_message.get;
1399        htp.p('<valign=left NOWRAP><font color="#CC0000" face="Arial" size=2><b>'||c_error_msg||dbms_utility.format_error_stack);
1400 
1401 
1402 end;
1403 
1404 procedure Favorites(p_session_id pls_integer,
1405                    p_plug_id    pls_integer,
1406                    p_display_name  varchar2,
1407                    p_delete     varchar2) is
1408 
1409 l_object object;
1410 l_url          varchar2(2000); --changed from 240 to 2000 bug#1333631, mputman
1411 l_title        varchar2(100);
1412 l_prompts      icx_util.g_prompts_table;
1413 l_agent        varchar2(80);
1414 c_error_msg    varchar2(240);
1415 
1416 cursor Favorites is
1417     select RESPONSIBILITY_APPLICATION_ID,
1418            RESPONSIBILITY_ID,
1419            a.SECURITY_GROUP_ID,
1420            PROMPT,
1421            DESCRIPTION,
1422            a.FUNCTION_ID,
1423            FUNCTION_TYPE,
1424            URL,
1425            WEB_HTML_CALL
1426     from   FND_FORM_FUNCTIONS_VL b,
1427            ICX_CUSTOM_MENU_ENTRIES a
1428     where  USER_ID = icx_sec.g_user_id
1429     and    PLUG_ID = p_plug_id
1430     and    b.FUNCTION_ID(+) = a.FUNCTION_ID
1431     and    ( RESPONSIBILITY_ID in
1432            (select responsibility_id from
1433               icx_custom_menu_entries
1434             where USER_ID=icx_sec.g_user_id
1435             intersect
1436             select RESPONSIBILITY_ID from fnd_user_resp_groups where
1437               USER_ID=icx_sec.g_user_id
1438             and
1439               start_date <= sysdate
1440             and
1441               (end_date is null or end_date > sysdate)
1442             ) or responsibility_id=0)
1443             order by DISPLAY_SEQUENCE;
1444 begin
1445 
1446 if p_delete = 'Y'
1447 then
1448   begin
1449     delete ICX_CUSTOM_MENU_ENTRIES
1450     where  USER_ID = icx_sec.g_user_id
1451     and    PLUG_ID = p_plug_id;
1452   exception
1453     when others then
1454       l_agent := l_agent;
1455   end;
1456 
1457 elsif icx_sec.validatePlugSession(p_plug_id,p_session_id)
1458 then
1459     /*
1460     ** The agent must have the web server in front of it to ensure
1461     ** it works in ie javascript.  The problem is if your running the
1462     ** old style OBIS mode, you'll get an extra slash from
1463     ** icx_plug_utilities.getPLSQLagent.  Will remove here.
1464     */
1465     if (substr(icx_plug_utilities.getPLSQLagent, 1, 1) = '/') then
1466 
1467        l_agent := FND_WEB_CONFIG.WEB_SERVER||
1468                   substr(icx_plug_utilities.getPLSQLagent,2);
1469 
1470     else
1471 
1472        l_agent := FND_WEB_CONFIG.WEB_SERVER||icx_plug_utilities.getPLSQLagent;
1473 
1474     end if;
1475 
1476     icx_util.getprompts(601, 'ICX_OBIS_NAVIGATE', l_title, l_prompts);
1477 
1478     htp.p('<!-- Favorites Plug -->');
1479 
1480     htp.p('<table border=0 cellspacing=0 cellpadding=0 width=100%>');
1481     htp.p('<tr><td>');
1482     icx_plug_utilities.plugbanner(nvl(p_display_name,l_prompts(1)),l_agent||'OracleNavigate.customizeFavorites?X='||icx_call.encrypt2(p_plug_id,p_session_id), 'FNDNAVIG.gif');
1483     htp.p('</td></tr>');
1484 
1485     htp.p('<tr><td><font size=-2><BR></font></td></tr>');
1486 
1487     htp.p('<tr><td>');
1488     htp.p('<table border=0 cellspacing=0 cellpadding=0 width=100%>');
1489 
1490     for f in Favorites loop
1491 
1492     htp.p('<tr>');
1493     if f.URL is null
1494     then
1495         if substr(f.WEB_HTML_CALL,1,10) = 'javascript'
1496         then
1497           l_url := replace(f.WEB_HTML_CALL,'"','''');
1498           l_url := replace(l_url,'[RESPONSIBILITY_ID]',f.responsibility_id);
1499           l_url := replace(l_url,'[PLSQL_AGENT]',l_agent);
1500           l_url := '<A HREF="'||l_url||'" onMouseOver="window.status='''||icx_util.replace_onMouseOver_quotes(f.description)||''';return true">'||f.prompt||'</A>';
1501         else
1502           l_url := icx_portlet.createExecLink
1503                (p_application_id => f.responsibility_application_id,
1504                 p_responsibility_id => f.responsibility_id,
1505                 p_security_group_id => f.security_group_id,
1506                 p_function_id => f.function_id,
1510         end if;
1507                 p_link_name => f.prompt,
1508                 p_url_only => 'N');
1509 
1511 
1512 -- Bug 3240178    htp.p('<td align="left" valign="top" NOWRAP>');
1513 
1514         htp.p('<td align="left" valign="top" NOWRAP><image src="/OA_MEDIA/FNDWATHS.gif" height=18 width=18 alt="'||icx_util.replace_alt_quotes(f.prompt)||'">');
1515 
1516         htp.p('<font face="Arial" size=2>');
1517         htp.p(l_url);
1518     else
1519         if instr(upper(f.URL),'HTTP') > 0
1520         then
1521             l_url := f.URL;
1522         elsif instr(f.URL, 'file://') > 0
1523         then
1524             l_url := f.URL;
1525         else
1526             l_url := 'http://'||f.URL; -- This http: OK, nlbarlow
1527         end if;
1528 
1529         htp.p('<td align="left" valign="top" NOWRAP>');
1530         htp.p('<image src="/OA_MEDIA/FNDWATHS.gif" height=18 width=18 alt="'||f.prompt||'">');
1531         htp.p('<font face="Arial" size=2>');
1532         if ( substr(icx_sec.g_mode_code,1,3) = '115' OR
1533              icx_sec.g_mode_code = 'SLAVE')
1534         then
1535           htp.anchor(curl => 'javascript:top.main.icx_nav_window(''WWK'','''||l_url||''','''||f.PROMPT||''')',
1536                ctext => f.PROMPT,
1537                cattributes => ' onMouseOver="window.status='''||l_url||''';return true"');
1538 
1539         else
1540           htp.anchor(curl => 'javascript:icx_nav_window(''WWW'','''||l_url||''','''||f.PROMPT||''')',
1541                ctext => f.PROMPT,
1542                cattributes => ' onMouseOver="window.status='''||l_url||''';return true"');
1543         end if;
1544     end if;
1545 
1546     htp.p('</b></td></tr>');
1547 
1548     end loop;
1549 
1550     htp.p('</td></tr></table>');
1551     htp.p('</TABLE>');
1552 
1553 end if;
1554 exception
1555     when others then
1556 --        htp.p(SQLERRM);
1557       fnd_message.set_name('ICX','ICX_CONTACT_WEBMASTER');
1558       c_error_msg := fnd_message.get;
1559       htp.p('<valign=left NOWRAP><font color="#CC0000" face="Arial" size=2><b>'||c_error_msg||dbms_utility.format_error_stack);
1560 
1561 end;
1562 
1563 procedure FavoriteCreate is
1564 
1565 l_title         varchar2(80);
1566 l_prompts       icx_util.g_prompts_table;
1567 c_error_msg     varchar2(240);
1568 
1569 begin
1570 
1571 if(icx_sec.validateSession)
1572 then
1573     icx_util.getprompts(601, 'ICX_OBIS_FAVORITE_CREATE', l_title, l_prompts);
1574 
1575     htp.p('<html>');
1576     htp.p('<head>');
1577     htp.p('<title>'||l_title||'</title>');
1578     htp.p('</head>');
1579 
1580     if (icx_sec.g_mode_code in ('115J', '115P', 'SLAVE')) then
1581         htp.p('<body bgcolor= #FFFFFF onload="Javascrpit:window.focus()">');
1582     else
1583         htp.p('<body bgcolor="'||icx_plug_utilities.bgcolor||'" onload="Javascrpit:window.focus()">');
1584     end if;
1585 
1586     htp.p('<SCRIPT LANGUAGE="JavaScript">');
1587 
1588     htp.p('function saveCreate() {
1589 
1590         if (document.createFavorite.LOCATION.value == "")
1591           alert("'||l_prompts(1)||'");
1592         else
1593           if (document.createFavorite.NAME.value == "")
1594             alert("'||l_prompts(2)||'");
1595           else {
1596             var end=parent.opener.parent.document.Favorites.C.length-1;
1597             var totext=document.createFavorite.NAME.value;
1598             var tovalue="0*0*0*X" + document.createFavorite.LOCATION.value + "*WWW";
1599 
1600             if (end > 0)
1601             if (parent.opener.parent.document.Favorites.C.options[end-1].value == "")
1602               end = end - 1;
1603 
1604             parent.opener.parent.document.Favorites.C.options[end].text = totext;
1605             parent.opener.parent.document.Favorites.C.options[end].value = tovalue;');
1606         if instr(owa_util.get_cgi_env('HTTP_USER_AGENT'),'MSIE') = 0
1607         then
1608             htp.p('parent.opener.parent.history.go(0);');
1609         end if;
1610         htp.p('window.close();
1611             };
1612         }');
1613 
1614     htp.p('</SCRIPT>');
1615 
1616     htp.formOpen('javascript:saveCreate()','POST','','','NAME="createFavorite"')
1617 ;
1618     htp.tableOpen;
1619     htp.tableRowOpen;
1620     htp.tableData(l_prompts(1), 'RIGHT');
1621     htp.tableData(htf.formText(cname => 'LOCATION',
1622                                csize => '35',
1623                                cmaxlength => '2000'), 'LEFT');
1624     htp.tableRowClose;
1625     htp.tableRowOpen;
1626     htp.tableData(l_prompts(2), 'RIGHT');
1627     htp.tableData(htf.formText(cname => 'NAME',
1628                                csize => '35',
1629                                cmaxlength => '240'), 'LEFT');
1630     htp.tableRowClose;
1631     htp.tableRowOpen;
1632     htp.p('<td align=center colspan=2>');
1633     htp.p('<table width="100%"><tr>');
1634     htp.p('<td align="right" width="50%">');
1635     icx_plug_utilities.buttonLeft(l_prompts(3),'javascript:saveCreate()','FNDJLFOK.gif');
1636     htp.p('</td><td align="right" width="50%">');
1637     icx_plug_utilities.buttonRight(l_prompts(4),'javascript:window.close()','FNDJLFCN.gif');
1638     htp.p('</td></tr></table>');
1639     htp.p('</td>');
1640     htp.tableRowClose;
1641     htp.tableClose;
1642     htp.formClose;
1643 
1644     htp.bodyClose;
1645     htp.htmlClose;
1646 
1647 end if;
1648 
1649 exception
1650     when others then
1651 --        htp.p(SQLERRM);
1652        fnd_message.set_name('ICX','ICX_CONTACT_WEBMASTER');
1653        c_error_msg := fnd_message.get;
1654        htp.p('<valign=left NOWRAP><font color="#CC0000" face="Arial" size=2><b>'||c_error_msg||dbms_utility.format_error_stack);
1655 
1656 
1657 end;
1658 
1659 procedure FavoriteRename(item_name VARCHAR2) is
1660 -- added item name to pass get location 976843 mputman
1661 l_title         varchar2(80);
1662 l_prompts       icx_util.g_prompts_table;
1663 l_location      VARCHAR2(2000);
1664 c_error_msg     varchar2(240);
1665 
1666 begin
1667 
1668 if(icx_sec.validateSession)
1669 then
1670     icx_util.getprompts(601, 'ICX_OBIS_FAVORITE_RENAME', l_title, l_prompts);
1671 
1672 
1673     htp.p('<html>');
1674     htp.p('<head>');
1675     htp.p('<title>'||l_title||'</title>');
1676     htp.p('</head>');
1677     if (icx_sec.g_mode_code in ('115J', '115P', 'SLAVE')) then
1678         htp.p('<body bgcolor= #FFFFFF onload="Javascrpit:window.focus()">');
1679     else
1680         htp.p('<body bgcolor="'||icx_plug_utilities.bgcolor||'" onload="Javascrpit:window.focus()">');
1681     end if;
1682 
1683     htp.p('<SCRIPT LANGUAGE="JavaScript">');
1684     l_location:=(substr(item_name,8,length(item_name)-11)); -- used to get location URL without codes 976843 mputman
1685     htp.p('var temp=parent.opener.parent.document.Favorites.C.selectedIndex;
1686            var l_location=parent.opener.parent.document.Favorites.C.options[temp].value;
1687            var fav_type=l_location.substring(0,7);
1688            var l_location=l_location.substring(7,(l_location.length-4));
1689          ');
1690 
1691     htp.p('function loadName() {
1692             document.renameFavorite.NAME.value = parent.opener.parent.document.Favorites.C.options[temp].text;
1693             document.renameFavorite.LOCATION.value = l_location
1694         }'); --added code to show location in text box 976843 mputman
1695 
1696     htp.p('function saveRename() {
1697         var temp=parent.opener.parent.document.Favorites.C.selectedIndex;
1698 
1699         if (document.renameFavorite.LOCATION.value == "")
1700            alert("'||l_prompts(5)||'");
1701         else
1702           if (document.renameFavorite.NAME.value == "")
1703            alert("'||l_prompts(1)||'");
1704         else {
1705           parent.opener.parent.document.Favorites.C.options[temp].text = document.renameFavorite.NAME.value;');-- added code to show alert if location is null 976843 mputman
1706     IF (item_name='0*0*0*X') THEN  -- prevents updating location for non custom locations 976843 mputman
1707        htp.p('parent.opener.parent.document.Favorites.C.options[temp].value="0*0*0*X" + document.renameFavorite.LOCATION.value + "*WWW";'); --wrapps location in codes 976843 mputman
1708     END IF;
1709         if instr(owa_util.get_cgi_env('HTTP_USER_AGENT'),'MSIE') = 0
1710         then
1711             htp.p('parent.opener.parent.history.go(0);');
1712         end if;
1713         htp.p('window.close();
1714         };
1715         }');
1716 
1717     htp.p('</SCRIPT>');
1718 
1719     htp.formOpen('javascript:saveRename()','POST','','','NAME="renameFavorite"');
1720     htp.tableOpen;
1721     htp.tableRowOpen;
1722     htp.tableData(l_prompts(1), 'RIGHT');
1723     htp.tableData(htf.formText(cname => 'NAME',
1724                                csize => '35',
1725                                cmaxlength => '50'), 'LEFT');
1726     htp.tableRowClose;
1727     htp.tableRowOpen;
1728     IF (substr(item_name,1,7)='0*0*0*X') THEN   -- only show this if it is a custom URL 976843 mputman
1729     htp.tableData(l_prompts(5), 'RIGHT');
1730     htp.tableData(htf.formText(cname => 'LOCATION',
1731                                csize => '35',
1732                                cmaxlength => '2000'), 'LEFT');
1733     ELSE     -- if not a custom URL... still need this for the save function to work 976843 mputman
1734        htp.tableData(' ', 'RIGHT'); -- add text box but save NULL value 976843 mputman
1735        htp.tableData(htf.formHidden(cname => 'LOCATION'),'LEFT'); -- hidden text box 976843 mputman
1736 
1737     END IF;
1738     htp.tableRowClose;
1739     htp.tableRowOpen;
1740     htp.p('<td align=center colspan=2>');
1741     htp.p('<table width="100%"><tr>');
1742     htp.p('<td align="right" width="50%">');
1743     icx_plug_utilities.buttonLeft(l_prompts(2),'javascript:saveRename()','FNDJLFOK.gif');
1744     htp.p('</td><td align="right" width="50%">');
1745     icx_plug_utilities.buttonRight(l_prompts(3),'javascript:window.close()','FNDJLFCN.gif');
1746     htp.p('</td></tr></table>');
1747     htp.p('</td>');
1748     htp.tableRowClose;
1749     htp.tableClose;
1750     htp.formClose;
1751 
1752     htp.p('<SCRIPT LANGUAGE="JavaScript">loadName();</SCRIPT>');
1753 
1754     htp.bodyClose;
1755     htp.htmlClose;
1756 
1757 end if;
1758 
1759 exception
1760     when others then
1761 --        htp.p(SQLERRM);
1762        fnd_message.set_name('ICX','ICX_CONTACT_WEBMASTER');
1763        c_error_msg := fnd_message.get;
1764        htp.p('<valign=left NOWRAP><font color="#CC0000" face="Arial" size=2><b>'||c_error_msg||dbms_utility.format_error_stack);
1765 
1766 
1767 end;
1768 
1769 procedure customizeFavorites(X in pls_integer) is
1770 
1771 l_plug_id               pls_integer;
1772 l_counter               pls_integer;
1773 l_count                 pls_integer;
1774 l_object		object;
1775 l_title                 varchar2(80);
1776 l_favorite              varchar2(2000); --changed from 80 to 2000 bug#1333631, mputman
1777 l_prompts               icx_util.g_prompts_table;
1778 l_message               varchar2(2000);
1779 l_responsibilities      icx_sec.g_char_tbl_type;
1780 l_resp_appl_ids    icx_sec.g_num_tbl_type;
1781 l_responsibility_ids    icx_sec.g_num_tbl_type;
1782 l_security_group_ids    icx_sec.g_num_tbl_type;
1783 l_initialize            varchar2(80);
1784 r_initialize            varchar2(80);
1785 l_nbsp                  varchar2(240);
1786 l_history varchar2(240);
1787 l_resp_counter number;
1788 l_prompt_length number;
1789 c_error_msg             varchar2(240);
1793 	a.responsibility_name,
1790 
1791 cursor responsibilities is
1792 select distinct a.responsibility_id,
1794         a.application_id,
1795         b.security_group_id,
1796         fsg.SECURITY_GROUP_NAME
1797 from    FND_SECURITY_GROUPS_VL fsg,
1798         fnd_responsibility_vl a,
1799         FND_USER_RESP_GROUPS b
1800 where   b.user_id = icx_sec.g_user_id
1801 and     b.start_date <= sysdate
1802 and     (b.end_date is null or b.end_date > sysdate)
1803 and     b.RESPONSIBILITY_id = a.responsibility_id
1804 and     b.RESPONSIBILITY_application_id = a.application_id
1805 and     a.version IN ('W')
1806 and     a.start_date <= sysdate
1807 and     (a.end_date is null or a.end_date > sysdate)
1808 AND b.SECURITY_GROUP_ID IN (-1, fsg.SECURITY_GROUP_ID)
1809 AND fsg.SECURITY_GROUP_ID >= 0
1810 AND nvl(FND_PROFILE.VALUE('NODE_TRUST_LEVEL'),1) <=
1811 nvl(FND_PROFILE.VALUE_SPECIFIC('APPL_SERVER_TRUST_LEVEL',b.USER_ID,a.RESPONSIBILITY_ID,b.RESPONSIBILITY_APPLICATION_ID),1)
1812 ORDER BY a.RESPONSIBILITY_NAME, fsg.SECURITY_GROUP_NAME;
1813 
1814 cursor Favorites is
1815 select PROMPT,
1816        RESPONSIBILITY_APPLICATION_ID,
1817        RESPONSIBILITY_ID,
1818        SECURITY_GROUP_ID,
1819        FUNCTION_ID,
1820        FUNCTION_TYPE,
1821        URL
1822 from   ICX_CUSTOM_MENU_ENTRIES
1823 where  USER_ID = icx_sec.g_user_id
1824 and    PLUG_ID = l_plug_id
1825 order by DISPLAY_SEQUENCE;
1826 
1827 begin
1828 
1829 if(icx_sec.validateSession)
1830 then
1831     l_plug_id := icx_call.decrypt2(X);
1832     icx_util.getprompts(601, 'ICX_OBIS_FAVORITES', l_title, l_prompts);
1833     l_title := icx_plug_utilities.getPlugTitle(l_plug_id);
1834     l_nbsp := '&'||'nbsp;';
1835     l_initialize := '1234567890123456789012345678901234567890';
1836     r_initialize := '1234567890123456789012345678901234567890';
1837 
1838 --bug 2644185
1839 --    if instr(owa_util.get_cgi_env('HTTP_USER_AGENT'),'MSIE') > 0
1840 --    then
1841 
1842         l_history := '';
1843 
1844 --    else
1845 --        l_history := 'history.go(0);';
1846 --    end if;
1847 --bug 2644185
1848 
1849     htp.p('<html>');
1850     htp.p('<head>');
1851     htp.p('<title>'||l_title||'</title>');
1852     htp.p('</head>');
1853 
1854     if (icx_sec.g_mode_code in ('115J', '115P', 'SLAVE')) then
1855         htp.p('<body bgcolor= "#CCCCCC">');
1856     else
1857         htp.p('<body bgcolor="'||icx_plug_utilities.bgcolor||'">');
1858     end if;
1859 
1860     htp.p('<SCRIPT LANGUAGE="JavaScript">');
1861 
1862     htp.p('function loadFrom() {
1863         var temp=document.Favorites.A.selectedIndex;
1864         var resp=document.Favorites.A[temp].value;
1865 	for (var i=0; i<document.Favorites.B.length; i++)
1866 	    document.Favorites.B.options[i] = new Option("","");');
1867 
1868     l_object.type := 'RESPONSIBILITY';
1869     l_object.parent_menu_id := '';
1870     l_object.entry_sequence := '';
1871     l_object.menu_explode := 'Y';
1872     l_object.function_explode := 'Y';
1873     l_object.level := 0;
1874     l_resp_counter := 0;
1875     l_prompt_length := 0;
1876     for r in responsibilities loop
1877         l_counter := 0;
1878         g_list := g_nulllist;
1879         l_object.responsibility_id := r.responsibility_id;
1880         l_object.resp_appl_id := r.application_id;
1881         l_object.security_group_id := r.security_group_id;
1882         listResponsibility(p_object => l_object,
1883 		                     p_entries => TRUE,
1884                            p_executable => FALSE);-- pass in defaults (GSCC)
1885         if g_list.COUNT > 1
1886         then
1887           if security_group(r.responsibility_id, r.application_id)
1888           then
1889             l_responsibilities(l_resp_counter) := r.responsibility_name||', '||r.security_group_name;
1890           else
1891             l_responsibilities(l_resp_counter) := r.responsibility_name;
1892           end if;
1893           l_resp_appl_ids(l_resp_counter) := r.application_id;
1894           l_responsibility_ids(l_resp_counter) := r.responsibility_id;
1895           l_security_group_ids(l_resp_counter) := r.security_group_id;
1896           l_resp_counter := l_resp_counter + 1;
1897           htp.p('if (resp == "'||r.application_id||'*'||r.responsibility_id||'*'||r.security_group_id||'") {');
1898           for i in 1..g_list.LAST loop
1899             if g_list(i).type = 'FUNCTION'
1900 	    then
1901                 htp.p('document.Favorites.B.options['||l_counter||'] = new Option("'||g_list(i).prompt||'","'||g_list(i).function_id||'*'||g_list(i).function_type||'");');
1902 		l_counter := l_counter + 1;
1903                 if l_resp_counter = 1
1904                 and length(g_list(i).prompt) > l_prompt_length
1905                 then
1906                     l_prompt_length := length(g_list(i).prompt);
1907                 end if;
1908 	    end if;
1909           end loop;
1910           htp.p('}');
1911         end if; -- g_list.COUNT > 0
1912     end loop;
1913     htp.p('}');
1914     l_initialize := substr(l_initialize,1,l_prompt_length);
1915 
1916     fnd_message.set_name('ICX','ICX_OBIS_SELECT_OPTION');
1917     l_message := icx_util.replace_quotes(fnd_message.get);
1918 
1919     htp.p('function selectFrom() {
1920         alert("'||l_message||'")
1921         }');
1922 
1923     htp.p('function addTo() {
1924         var temp=document.Favorites.B.selectedIndex;
1925 
1926         if (temp < 0)
1927           selectFrom();
1928         else {
1929 	  var end=document.Favorites.C.length;
1930           if (end > 0)
1934           var totext=document.Favorites.B[temp].text;
1931             if (document.Favorites.C.options[end-1].value == "")
1932               end = end - 1;
1933           var resp=document.Favorites.A.selectedIndex;
1935           var tovalue=document.Favorites.A[resp].value + "*" + document.Favorites.B[temp].value;
1936 	  document.Favorites.C.options[end] = new Option(totext,tovalue);
1937           document.Favorites.C.selectedIndex = end;
1938           '||l_history||'
1939           }
1940         }');
1941 
1942     fnd_message.set_name('ICX','ICX_OBIS_SELECT_SELECTION');
1943     l_message := icx_util.replace_quotes(fnd_message.get);
1944 
1945     htp.p('function selectTo() {
1946         alert("'||l_message||'")
1947         }');
1948 
1949     htp.p('function upTo() {
1950         var temp=document.Favorites.C.selectedIndex;
1951         var end=document.Favorites.C.length;
1952         if (document.Favorites.C.options[end-1].value == "")
1953             end = end - 1;
1954 
1955         if (temp < 0)
1956 	  selectTo();
1957         else
1958 	  if (temp != 0) {
1959           document.Favorites.C.options[end] = new Option(document.Favorites.C.options[temp].text,document.Favorites.C.options[temp].value);
1960           document.Favorites.C.options[temp] = new Option(document.Favorites.C.options[temp-1].text, document.Favorites.C.options[temp-1].value);
1961           document.Favorites.C.options[temp-1] = new Option(document.Favorites.C.options[end].text,document.Favorites.C.options[end].value);
1962           document.Favorites.C.options[end] = null;
1963           document.Favorites.C.selectedIndex = temp-1;
1964           };
1965         }');
1966 
1967     htp.p('function downTo() {
1968         var temp=document.Favorites.C.selectedIndex;
1969         var end=document.Favorites.C.length;
1970         if (document.Favorites.C.options[end-1].value == "")
1971             end = end - 1;
1972 
1973         if (temp < 0)
1974           selectTo();
1975         else
1976           if (temp != end-1) {
1977           document.Favorites.C.options[end] = new Option(document.Favorites.C.options[temp].text,document.Favorites.C.options[temp].value);
1978           document.Favorites.C.options[temp] = new Option(document.Favorites.C.options[temp+1].text, document.Favorites.C.options[temp+1].value);
1979           document.Favorites.C.options[temp+1] = new Option(document.Favorites.C.options[end].text,document.Favorites.C.options[end].value);
1980           document.Favorites.C.options[end] = null;
1981           document.Favorites.C.selectedIndex = temp+1;
1982           };
1983         }');
1984 
1985     l_message := icx_util.replace_quotes(l_prompts(11))||': ';
1986 
1987     htp.p('function deleteTo() {
1988         var temp=document.Favorites.C.selectedIndex;
1989 
1990         if (temp < 0)
1991           selectTo();
1992         else {
1993             document.Favorites.C.options[temp] = null;
1994           };
1995         '||l_history||'
1996         }');
1997 
1998     htp.p('function open_new_browser(url,x,y){
1999         var attributes = "resizable=yes,scrollbars=yes,toolbar=no,width="+x+",height="+ y;
2000         var new_browser = window.open(url, "new_browser", attributes);
2001         if (new_browser != null) {
2002             if (new_browser.opener == null)
2003                 new_browser.opener = self;
2004             new_browser.location.href = url;
2005             }
2006         }');
2007 
2008     htp.p('function renameTo() {
2009         var temp=document.Favorites.C.selectedIndex;
2010         var temp2=document.Favorites.C.options[document.Favorites.C.selectedIndex].value;
2011         temp2=temp2.substring(0,7);
2012 
2013           if (temp < 0)
2014           selectTo();
2015         else
2016 open_new_browser(''OracleNavigate.FavoriteRename?item_name=''+temp2,400,110);
2017         }'); -- add parameter to send item name to rename box 976843 mputman
2018 
2019 
2020     htp.p('function createTo() {
2021         var end=document.Favorites.C.length;
2022 	document.Favorites.C.options[end] = new Option("","");
2023         open_new_browser(''OracleNavigate.FavoriteCreate'',400,145);
2024         }');
2025 
2026     htp.p('function saveFavorites() {
2027         var end=document.Favorites.C.length;
2028 
2029         for (var i=0; i<end; i++)
2030           if (document.Favorites.C.options[i].value != "")
2031             document.updateFavorites.X.value = document.updateFavorites.X.value + "+" + document.Favorites.C.options[i].value + "*" + document.Favorites.C.options[i].text;
2032 
2033 	document.updateFavorites.X.value = document.updateFavorites.X.value + "+";
2034 	document.updateFavorites.submit();
2035         }');
2036 
2037         icx_admin_sig.help_win_script('ICXCFGPG', null, 'BIS');
2038 
2039     htp.p('</SCRIPT>');
2040 
2041     icx_plug_utilities.toolbar(p_text => l_title,
2042                                p_language_code => icx_sec.g_language_code,
2043                                p_disp_help => 'Y',
2044                                p_disp_mainmenu => 'N',
2045                                p_disp_menu => 'N');
2046 
2047     htp.formOpen('OracleNavigate.updateFavorites','POST','','','NAME="updateFavorites"');
2048     htp.formHidden('X');
2049     htp.formHidden('Y',X);
2050     htp.formClose;
2051 
2052     fnd_message.set_name('ICX','ICX_CUSTOMIZE_FAVORITES');
2053     l_message := fnd_message.get;
2054 
2055     htp.p('<table width="100%" border=0 cellspacing=0 cellpadding=0>');
2056     htp.p('<tr><td width=5%></td><td width=90%><I>'||l_message||'</I></td><td width=5%></td></tr>');
2057     htp.p('</table>');
2058 
2059     htp.formOpen('javascript:saveFavorites()','POST','','','NAME="Favorites"');
2060     htp.p('<table width="100%" border=0 cellspacing=0 cellpadding=0>'); -- main
2061     htp.p('<tr><td align=center>');
2062 --Bug 2687577
2063 --  htp.p('<table width="10%" border=0 cellspacing=0 cellpadding=0>'); -- Cell
2064 --
2065     htp.p('<tr><td colspan=2>');
2066     htp.p(l_prompts(1));
2067     htp.p('</td></tr>');
2068     htp.p('<tr><td colspan=2>');
2069     htp.p('<select name="A" onchange="loadFrom();'||l_history||'">');
2070     if l_responsibilities.COUNT > 0
2071     then
2072     for r in l_responsibilities.FIRST..l_responsibilities.LAST loop
2073     htp.formSelectOption(cvalue => l_responsibilities(r),
2074                          cattributes => 'VALUE = "'||l_resp_appl_ids(r)||'*'||l_responsibility_ids(r)||'*'||l_security_group_ids(r)||'"');
2075     end loop;
2076     else
2077     htp.formSelectOption(cvalue => '',
2078                          cattributes => 'VALUE = ""');
2079     end if;
2080     htp.formSelectClose;
2081     htp.p('</td></tr>');
2082     htp.p('<tr><td>');
2083     htp.p(l_prompts(2));
2084     htp.p('</td><td>');
2085     htp.p(l_prompts(3));
2086     htp.p('</td><td>');
2087     htp.p('<tr><td>');
2088     htp.p('<table border=0 cellspacing=0 cellpadding=0><tr><td>');  -- Full Menu cell
2089     htp.p('<select name="B" size=10>');
2090     htp.formSelectOption(l_initialize);
2091     htp.formSelectClose;
2092     htp.p('<SCRIPT LANGUAGE="JavaScript">loadFrom()</SCRIPT>');
2093     htp.p('</td><td align="left">');
2094     htp.p('<table><tr><td>'); -- Add
2095     htp.p('<A HREF="javascript:addTo();" onMouseOver="window.status='''||icx_util.replace_onMouseOver_quotes(l_prompts(4))||''';return true"><image src="/OA_MEDIA/FNDRTARW.gif" alt="'||icx_util.replace_alt_quotes(l_prompts(4))||'" BORDER="0"></A>');
2096     htp.p('</td></tr></table>'); -- Add
2097     htp.p('</td></tr></table>'); -- Full Menu cell
2098     htp.p('</td><td>');
2099     htp.p('<table border=0 cellspacing=0 cellpadding=0><tr><td>'); -- Favorite cell
2100     htp.p('<select name="C" size=10>');
2101 
2102 --bug 2644185
2103       htp.formSelectOption('____________________________________________');
2104 
2105     for f in favorites loop
2106         if f.URL is null
2107         then
2108             l_favorite := f.responsibility_application_id||'*'||f.responsibility_id||'*'||f.security_group_id||'*'||f.function_id||'*'||f.function_type;
2109         else
2110             l_favorite := '0*0*0*X'||f.URL||'*WWW';
2111         end if;
2112         htp.formSelectOption(cvalue => f.prompt,
2113                              cattributes => 'VALUE = '||l_favorite);
2114     end loop;
2115     htp.formSelectClose;
2116     htp.p('</td><td align="left">');
2117     htp.p('<table><tr><td align="left" valign="bottom">'); -- Up and Down
2118     htp.p('<A HREF="javascript:upTo()" onMouseOver="window.status='''||icx_util.replace_onMouseOver_quotes(l_prompts(5))||''';return true"><image src="/OA_MEDIA/FNDUPARW.gif" alt="'||icx_util.replace_alt_quotes(l_prompts(5))||'" BORDER="0"></A>');
2119     htp.p('</td></tr><tr><td align="left" valign="top">');
2120     htp.p('<A HREF="javascript:downTo()" onMouseOver="window.status='''||icx_util.replace_onMouseOver_quotes(l_prompts(6))||''';return true"><image src="/OA_MEDIA/FNDDNARW.gif" alt="'||icx_util.replace_alt_quotes(l_prompts(6))||'" BORDER="0"></A>');
2121     htp.p('</td></tr></table>'); -- Up and Down
2122     htp.p('</td></tr></table>'); -- Favorite cell
2123     htp.p('</td></tr>');
2124     htp.p('<tr><td></td><td>');
2125     htp.p('<table><tr>'); -- Buttons
2126     htp.p('<td>');
2127     icx_plug_utilities.buttonBoth(l_prompts(9),'javascript:createTo()');
2128     htp.p('</td><td>');
2129     icx_plug_utilities.buttonBoth(l_prompts(13),'javascript:renameTo()'); -- changed from prompt(10) for 976843
2130     htp.p('</td><td>');
2131     icx_plug_utilities.buttonBoth(l_prompts(11),'javascript:deleteTo()');
2132     htp.p('</tr></table>'); -- Buttons
2133     htp.p('</td></tr>');
2134 
2135     htp.p('<tr><td colspan="2"><BR></td></tr>');
2136 
2137     htp.p('<tr><td colspan="2">');
2138     htp.p('<table width=100%><tr><td width=50% align="right">'); -- OK
2139     icx_plug_utilities.buttonLeft(l_prompts(7),'javascript:saveFavorites()','FNDJLFOK.gif');
2140     htp.p('</td><td width=50% align="left">');
2141     icx_plug_utilities.buttonRight(l_prompts(8),'javascript:history.go(-1)','FNDJLFCN.gif');
2142     htp.p('</td></tr></table>'); -- OK
2143     htp.p('</td></tr>');
2144     htp.p('</table>'); -- Cell
2145     htp.p('</td></tr>');
2146     htp.p('</table>'); -- Main
2147 
2148     htp.formClose;
2149     htp.p('<SCRIPT LANGUAGE="JavaScript">document.Favorites.A.focus();</SCRIPT>');
2150     htp.bodyClose;
2151     htp.htmlClose;
2152 
2153 end if;
2154 
2155 exception
2156     when others then
2157 ---        htp.p(SQLERRM);
2158        fnd_message.set_name('ICX','ICX_CONTACT_WEBMASTER');
2159        c_error_msg := fnd_message.get;
2160        htp.p('<valign=left NOWRAP><font color="#CC0000" face="Arial" size=2><b>'||c_error_msg||dbms_utility.format_error_stack);
2161 
2162 
2163 end;
2164 
2165 procedure updateFavorites(X in varchar2,
2166                           Y in pls_integer) is
2167 
2168 l_plug_id               pls_integer;
2169 l_line			varchar2(2000);
2170 l_line_length		pls_integer;
2171 l_point1		pls_integer;
2172 l_point2		pls_integer;
2173 l_point3		pls_integer;
2174 l_point4                pls_integer;
2175 l_point5                pls_integer;
2176 l_point_1_2		pls_integer;
2177 l_point_2_3		pls_integer;
2178 l_point_3_4             pls_integer;
2179 l_point_4_5             pls_integer;
2180 l_length		pls_integer;
2181 l_index			pls_integer;
2182 l_nextcount		pls_integer;
2186 l_security_group_id     pls_integer;
2183 l_lastcount		pls_integer;
2184 l_occurence		pls_integer;
2185 l_resp_appl_id          pls_integer;
2187 l_responsibility_id	pls_integer;
2188 l_function_id		pls_integer;
2189 l_function_type         varchar2(30);
2190 l_prompt		varchar2(240);
2191 l_url			varchar2(2000);
2192 c_error_msg             varchar2(240);
2193 
2194 begin
2195 
2196 if icx_sec.validateSession
2197 then
2198     l_plug_id := icx_call.decrypt2(Y);
2199     l_length := length(X);
2200     l_index := 0;
2201     l_occurence := 1;
2202     l_lastcount := 1;
2203 
2204     delete ICX_CUSTOM_MENU_ENTRIES
2205     where  USER_ID = icx_sec.g_user_id
2206     and    PLUG_ID = l_plug_id;
2207 
2208     while l_lastcount <= l_length loop
2209 	l_nextcount := instr(X,'+',1,l_occurence);
2210         if l_lastcount <> l_nextcount
2211 	then
2212 	l_line_length := l_nextcount-l_lastcount;
2213         l_line := substr(X,l_lastcount,l_line_length);
2214 	l_point1 := instr(l_line,'*',1,1);
2215 	l_point2 := instr(l_line,'*',1,2);
2216         l_point3 := instr(l_line,'*',1,3);
2217         l_point4 := instr(l_line,'*',1,4);
2218         l_point5 := instr(l_line,'*',1,5);
2219 	l_point_1_2 := l_point2 - l_point1 - 1;
2220 	l_point_2_3 := l_point3 - l_point2 - 1;
2221 	l_point_3_4 := l_point4 - l_point3 - 1;
2222 	l_point_4_5 := l_point5 - l_point4 - 1;
2223 
2224         l_resp_appl_id := substr(l_line,1,l_point1-1);
2225         l_responsibility_id := substr(l_line,l_point1+1,l_point_1_2);
2226         l_security_group_id := substr(l_line,l_point2+1,l_point_2_3);
2227         l_url := substr(l_line,l_point3+1,l_point_3_4);
2228         if substr(l_url,1,1) = 'X'
2229         then
2230 	    l_url := substr(l_url,2,length(l_url)-1);
2231 	else
2232 	    l_function_id := to_number(l_url);
2233 	    l_url := '';
2234 	end if;
2235         l_function_type := substr(l_line,l_point4+1,l_point_4_5);
2236         l_prompt := substr(l_line,l_point5+1,length(l_line));
2237 
2238         insert into ICX_CUSTOM_MENU_ENTRIES
2239 	(USER_ID,
2240          PLUG_ID,
2241          DISPLAY_SEQUENCE,
2242          PROMPT,
2243          RESPONSIBILITY_APPLICATION_ID,
2244          RESPONSIBILITY_ID,
2245          SECURITY_GROUP_ID,
2246          FUNCTION_ID,
2247          FUNCTION_TYPE,
2248          URL)
2249 	values
2250 	(icx_sec.g_user_id,
2251          l_plug_id,
2252          l_index,
2253          l_prompt,
2254          l_resp_appl_id,
2255          l_responsibility_id,
2256          l_security_group_id,
2257          l_function_id,
2258          l_function_type,
2259          l_url);
2260 
2261          l_index := l_index + 1;
2262         end if;
2263 
2264 	l_lastcount := l_nextcount + 1;
2265 	l_occurence := l_occurence + 1;
2266     end loop;
2267 
2268     icx_plug_utilities.gotoMainMenu;
2269 
2270 end if; -- validateSession
2271 
2272 exception
2273     when others then
2274 --        htp.p(SQLERRM);
2275       fnd_message.set_name('ICX','ICX_CONTACT_WEBMASTER');
2276       c_error_msg := fnd_message.get;
2277       htp.p('<valign=left NOWRAP><font color="#CC0000" face="Arial" size=2><b>'||c_error_msg||dbms_utility.format_error_stack);
2278 
2279 
2280 
2281 end;
2282 
2283 PROCEDURE menuBypass(p_token IN VARCHAR2,
2284                      p_mode IN VARCHAR2)
2285    IS
2286    -- added for 1352780
2287    -- this signature is used to
2288    -- make calls to launch
2289    -- the only function available
2290    -- to the only responsibility available
2291    l_parameters    icx_on_utilities.v80_table;
2292    p_app_id NUMBER;
2293    p_resp_id NUMBER;
2294    p_function_id NUMBER;
2295    p_sec_grp_id NUMBER;
2296    p_agent VARCHAR2(2000);
2297    l_web_call VARCHAR2(2000);
2298    l_url VARCHAR2(2000);
2299 
2300 BEGIN
2301    IF icx_sec.ValidateSession THEN
2302 
2303       icx_on_utilities.unpack_parameters(icx_call.decrypt(p_token),l_parameters);
2304 
2305       p_app_id := nvl(l_parameters(1),178);
2306       p_resp_id := l_parameters(2);
2307       p_function_id := l_parameters(3);
2308       p_sec_grp_id := l_parameters(4);
2309       p_agent := l_parameters(5);
2310 
2311 
2312       SELECT web_html_call
2313          INTO l_web_call
2314          FROM fnd_form_functions_vl
2315          WHERE function_id=p_function_id;
2316       --if added for 1352780
2317       if substrb(l_web_call,1,10) = 'javascript'
2318       then
2319         l_url := replace(l_web_call,'"','''');
2320         l_url := replace(l_url,'[RESPONSIBILITY_ID]',p_resp_id);
2321         l_url := replace(l_url,'[PLSQL_AGENT]',icx_plug_utilities.getPLSQLagent);
2322         l_url :=(substrb(l_url, (instrb(l_url,'''',1,1)+1),(instrb((substrb(l_url,(instrb(l_url,'''',1,1)+1))),'''',1,1)-1)));
2323         l_url:='"'||l_url||'"';
2324       ELSE
2325         l_url := icx_portlet.createExecLink
2326                (p_application_id => p_app_id,
2327                 p_responsibility_id => p_resp_id,
2328                 p_security_group_id => p_sec_grp_id,
2329                 p_function_id => p_function_id,
2330                 p_url_only => 'Y');
2331         l_url:='"'||l_url||'"';
2332       END IF;
2333          --htp.p(l_url);
2334          -- 3097745 nlbarlow
2335          htp.p('<script>top.location='||l_url||';</script>');
2336 
2337       END IF;
2338 
2339    end; --menubypass
2340 
2341    PROCEDURE menuBypass(p_token IN VARCHAR2)  IS
2342 
2343       -- added for 1352780
2344    -- this signature is used to
2345    -- make calls to launch
2346    -- the only (forms) responsibility
2347    -- available.. will launch apps
2348 
2352    p_sec_grp_key VARCHAR2(100);
2349    l_parameters    icx_on_utilities.v80_table;
2350    p_app_short_name VARCHAR2(200);
2351    p_resp_key VARCHAR2(240);
2353    p_agent VARCHAR2(2000);
2354    l_url VARCHAR2(2000);
2355    l_encrypted_session_id VARCHAR2(240);
2356 
2357 BEGIN
2358 
2359    IF icx_sec.ValidateSession THEN
2360 
2361       icx_on_utilities.unpack_parameters(icx_call.decrypt(p_token),l_parameters);
2362       p_app_short_name := l_parameters(1);
2363       p_resp_key := l_parameters(2);
2364       p_sec_grp_key := l_parameters(3);
2365       p_agent := l_parameters(4);
2366 
2367 --   l_encrypted_session_id := icx_call.encrypt3(icx_sec.getsessioncookie); removed mputman
2368 
2369 -- bug 1728149 - removed l_encrypted_session_id from icx_ticket
2370  --  l_url:=p_agent||'fnd_icx_launch.runforms?ICX_TICKET='||'&';
2371  --  l_url:=l_url||'RESP_APP='||wfa_html.conv_special_url_chars(p_app_short_name)||'&'||'RESP_KEY='||wfa_html.conv_special_url_chars(p_resp_key)||'&'; -- mputman added wfa call 1690141
2372  --  l_url:=l_url||'SECGRP_KEY='||wfa_html.conv_special_url_chars(p_sec_grp_key); -- mputman added wfa call 1690141
2373  --  l_url:='"'||l_url||'"';
2374      l_url:='"dummy"';
2375          htp.p('
2376 
2377 
2378                <script>
2379                function menuBypass(url){
2380                var p_agent="'||p_agent||'";
2381                var p_app_short_name="'||p_app_short_name||'";
2382                p_app_short_name=escape(p_app_short_name);
2383                var p_resp_key="'||p_resp_key||'";
2384                p_resp_key=escape(p_resp_key);
2385                var p_sec_grp_key="'||p_sec_grp_key||'";
2386                p_sec_grp_key=escape(p_sec_grp_key);
2387                var l_url=p_agent+"fnd_icx_launch.runforms?ICX_TICKET=&RESP_APP="+p_app_short_name+"&RESP_KEY="+p_resp_key+"&SECGRP_KEY="+p_sec_grp_key;
2388                top.location=l_url;
2389 
2390                }
2391                </script>
2392 
2393                <frameset cols="100%,*" frameborder=no border=0>
2394 
2395                <frame
2396                 src=javascript:parent.menuBypass('||l_url||')
2397                 name=hiddenFrame1
2398                 marginwidth=0
2399                 marginheight=0
2400                 scrolling=no>
2401 
2402 
2403                </frameset>
2404 
2405                ');
2406 
2407 
2408 
2409       END IF;
2410 
2411    end; --menubypass
2412 
2413 end OracleNavigate;