首发右键菜单完美解决方案,修改源码。
资料简介:
先上图:
这两天测试组需求,想让我们去掉多余的右键菜单(如:传承),见扫用户操作犯错的机会。
我是用java开发的经验,分析出,既然它是一个HTML那么他肯定有他加载的位置,既然他可以做权限控制那么一定是动态的,
下一步就看他是动态生成的HTML还是动态的控制隐藏或者修改。发现右键菜单在页面初始化的时候由一段JS控制生成右键菜单,
那么如果我找到了这段JS,我就可以完美的控制菜单的生成(找JS的过程很复杂,先通过css 在通过其他手段)。
js脚本的位置如下:I:ibmcognosc10webappsp2pdrvcv.js 154行
如果想加入自己的新菜单只需按照相应的代码片段样式编写即可。
这两天测试组需求,想让我们去掉多余的右键菜单(如:传承),见扫用户操作犯错的机会。
我是用java开发的经验,分析出,既然它是一个HTML那么他肯定有他加载的位置,既然他可以做权限控制那么一定是动态的,
下一步就看他是动态生成的HTML还是动态的控制隐藏或者修改。发现右键菜单在页面初始化的时候由一段JS控制生成右键菜单,
那么如果我找到了这段JS,我就可以完美的控制菜单的生成(找JS的过程很复杂,先通过css 在通过其他手段)。
js脚本的位置如下:I:ibmcognosc10webappsp2pdrvcv.js 154行
/*去掉“术语表” if(this.getCV().bCanUseGlossary && this.m_oStrings.sGlossaryTextItem && sBlacklist.indexOf(' RV_CONTEXT_MENU_GLOSSARY ') == -1) { bGlossary = true; this.m_contextMenu.add(gMenuSeperator); this.m_glossaryItem = new CMenuItem(this.m_contextMenu, this.m_oStrings.sGlossaryTextItem, this.getCVObjectRef() + ".executeAction('Glossary');", sWebContentRoot + '/rv/images/action_glossary.gif', gMenuItemStyle, sWebContentRoot, sSkin); this.m_glossaryItem.disable(); } */ /*去掉“传承” if (this.isLinegaeVisisble(sBlacklist)) { if (!bGlossary) { this.m_contextMenu.add(gMenuSeperator); } this.m_lineageItem = new CMenuItem(this.m_contextMenu, this.m_oStrings.sLineageTextItem, this.getCVObjectRef() + ".executeAction('Lineage');", sWebContentRoot + '/rv/images/action_lineage.gif', gMenuItemStyle, sWebContentRoot, sSkin); this.m_lineageItem.disable(); } */I:ibmcognosc10webappsp2pdrvCDrillManager.js 1243行
/*去掉“相关连接”;去掉“搜索” if (gtContextMenu != null) { if(typeof gMenuSeperator != "undefined" && gtContextMenu.getNumItems() > 0 && (this.getCV().bCanUseCognosViewerIndexSearch || sBlackList.indexOf(' RV_CONTEXT_MENU_GOTO_RELATED_LINKS ') == -1)) { gtContextMenu.add(gMenuSeperator); } var moreContextMenuItem = new CMenuItem(gtContextMenu, this.getCV().oStrings.sMoreTextItem, this.getCVObjectRef() + '.getDrillMgr().launchGoToPage();', '', gMenuItemStyle, this.getCV().getWebContentRoot(), this.getCV().getSkin()); if (this.getCV().bCanUseCognosViewerIndexSearch) { searchMenuItem = new CMenuItem(gtContextMenu, this.getCV().oStrings.sSearchTextItem, this.getCVObjectRef() + '.getDrillMgr().launchSearchPage();', '', gMenuItemStyle, this.getCV().getWebContentRoot(), this.getCV().getSkin()); } if(sBlackList.indexOf(' RV_CONTEXT_MENU_GOTO_RELATED_LINKS ') != -1) { moreContextMenuItem.hide(); } else if(selectionController == null || selectionController.getModelDrillThroughEnabled() == false) { moreContextMenuItem.disable(); } } if (searchMenuItem != null && selectionController != null) { var allSelections = selectionController.getAllSelectedObjects(); if (allSelections == null || allSelections.length === 0) { searchMenuItem.disable(); } } */找到生成右键菜单的js代码进行JS注释,就可以了。想修改在某维度的某级别禁止向上追溯要用另外一种方法。以后有时间在发。
如果想加入自己的新菜单只需按照相应的代码片段样式编写即可。
2012-03-26
浏览5162
下载1