CREATE OR REPLACE FORCE VIEW nav_top AS WITH curr AS ( SELECT /*+ MATERIALIZE */ app.get_app_id() AS app_id, app.get_page_id() AS page_id, app.get_page_parent() AS parent_id, app.get_page_root() AS page_root, app.get_page_group() AS page_group, app.get_user_id() AS user_id, app.get_user_name() AS user_name FROM DUAL ), j AS ( -- get javascript targets hidden in page item SELECT i.page_id, i.item_source FROM apex_application_page_items i JOIN curr ON curr.app_id = i.application_id AND i.item_name = 'P' || TO_CHAR(i.page_id) || '_REDIRECT' AND i.item_source LIKE 'javascript%' ) SELECT CASE WHEN n.parent_id IS NULL THEN 1 ELSE 2 END AS lvl, -- CASE WHEN n.page_id = 100 -- home page THEN REPLACE(n.page_name, '&' || 'ENV_NAME.', app.get_env_name() || ' &' || 'nbsp; ') WHEN n.page_id > 0 THEN REGEXP_REPLACE(REPLACE(n.page_name, '&' || 'APP_USER.', APEX_ESCAPE.HTML(NVL(curr.user_name, curr.user_id))), '^(&' || 'nbsp; )+', '') ELSE '