Oracle APEX实现动态菜单进阶2

显示Font Apex列表

问题来源:

标准功能里有这样一个效果:定义菜单的时候,用户可以选择Font Apex列表

image.png
image.png

那我就在想如何在自定义的菜单中实现类似的功能呢?


image.png

实验步骤:

1.用F12+查看网页源代码,发现是调用了popupURL这个函数
popupURL('f?p=4000:654:12824872074807');


image.png

2.于是在自己的测试页面里加了一个ITEM,用Dynamic Action执行了
popupURL('f?p=4000:654:12824872074807');这段JS,
报错。
这个时候我在想是不是漏了引用JS,但是标准页面引用的JS太多,头大,果断放弃。还研究了一下这篇文章:
https://blog.csdn.net/jonlan/article/details/82382207

3.这个时候我又想,既然这个页面是标准功能的页面,我要是能看到标准功能页面的代码就好了。
新问题来了可是标准功能的页面怎么看呢?

select * from APEX_APPLICATION_PAGES where application_id = 4000 and page_id = 654;
select * from APEX_APPLICATION_PAGE_BUTTONS where application_id = 4000 and page_id = 654;
select * from APEX_APPLICATION_PAGE_REGIONS where application_id = 4000 and page_id = 654;
select * from APEX_APPLICATION_PAGE_ITEMS where application_id = 4000 and page_id = 654;

4.标准功能的Region是用这个存储过程实现的
wwv_flow_f4000_util

5.果断在自己的测试页面新建了一个PLSQL动态Region

APEX_180200.wwv_flow_f4000_util.show_popup_images(
    p_image_size => 64,
    p_show       => 'FONTAPEX',
    p_category   => null);

又失败

6.打开wwv_flow_f4000_util发现被加密wrap过。在百度上找破解工具全是垃圾的csdn要下载币,放弃了这个思路,那怎么办?

7.这个fontawesome应该在某一张表里存的,先碰碰运气。

select icon_library from APEX_180200.wwv_flow_themes t ;
select * from all_objects where object_name like  '%ICON%' and owner = 'APEX_180200';
select * from all_objects where object_name like  '%ICON%' and owner = 'APEX_180200';
select * from all_objects where object_name like  '%CATEGORY%' and owner = 'APEX_180200';
select * from all_objects where object_name like  '%IMAGE%'  and owner = 'APEX_180200';
select * from all_objects where object_name like  '%REGION%' and object_type ='TABLE' 
select * from APEX_180200.WWV_FLOW_ICON_BAR ;
select * from APEX_180200.WWV_FLOW_RANDOM_IMAGES;
select * from APEX_180200.WWV_FLOW_PKG_APP_IMAGES;
WWV_FLOW_IMAGE_REPOSITORY;

没碰到

上PLSQL Dev的牛逼的Find DB Object,也没找到我想要的表。

8.这个我又想,既然APEX能查询SESSION级别的ITEM值,能不能查询SESSION级别的REGION值呢?
乱试一通,无果,我就在想到底渲染页面,REGION时的HTML内容数据库到底有没有保存呢?彻底迷茫

select * from APEX_WORKSPACE_SESSIONS ;
select * from APEX_180200.WWV_FLOW_DATA ;
select * from APEX_180200.WWV_FLOW_MODEL_PAGE_REGIONS ;

9.此时我面临三个选择,
1.重回破解的思路
2.重回,让JS编译通过的思路
3.继续找渲染的REGION。
想了一想还是第一个靠谱。
我自己下了一个antiwrap,没用明白
杰高告诉我一个网址,没用明白
https://www.codecrete.net/UnwrapIt/
赵睿给我传了一个工具oracle fyunwrap_full,搞定!

10.破解了wwv_flow_f4000_util之后,一切都柳岸花明了。
找到核心代码,收工

SELECT '<div class="fa-icon-block">' || '<span class="fa ' ||
       WWV_FLOW_ESCAPE.HTML(ICON_CSS_CLASSES) ||
       '"></span><span class="icon-label">' ||
       WWV_FLOW_ESCAPE.HTML(ICON_CSS_CLASSES) || '</span></div>' as d ICON_CSS_CLASSES as r
  FROM APEX_180200.WWV_FLOW_STEP_BUTTONS
 where ICON_CSS_CLASSES is not null
   and ICON_CSS_CLASSES not like '%&%'
 group by ICON_CSS_CLASSES
 order by ICON_CSS_CLASSES;

SELECT '<div class="fa-icon-block">' || '<span class="fa ' ||
       WWV_FLOW_ESCAPE.HTML(ICON_NAME) ||
       '"></span><span class="icon-label">' ||
       WWV_FLOW_ESCAPE.HTML(ICON_NAME) || '</span></div>'
  FROM APEX_180200.WWV_FLOW_STANDARD_ICONS t
 WHERE ICON_LIBRARY = 'FONTAPEX'
 ORDER BY ICON_NAME;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。