123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
- Licensed Materials - Property of IBM
- IBM Cognos Products: HTS
- (C) Copyright IBM Corp. 2005, 2010
- US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- -->
- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt">
- <xsl:import href="render-menu.xslt"/>
- <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
- <xsl:template match="/">
- <xsl:call-template name="renderContextMenu"/>
- </xsl:template>
- <xsl:template name="renderContextMenu">
- <xsl:param name="contextMenus" select="/root/input/contextMenu"/>
- <script type="text/javascript">
- //may not be needed!!!
- document.body.onclick = _THIS_conextMenuHide;
- var newdiv;
- function _THIS_showContextMenu(evt, task_id) {
- _THIS_conextMenuHide();
- contextMenuTaskId = task_id;
- //get the event in a cross-browser fashion
- evt = (evt) ? evt : ((event) ? event : null);
- evt.cancelBubble = true;
- var pos_x = 0;
- var pos_y = 0;
- if (evt.pageX) {
- pos_x = evt.pageX;
- pos_y = evt.pageY;
- } else if (evt.clientX) {
- pos_x = evt.clientX;
- pos_y = evt.clientY;
- }
- newdiv = document.createElement('div');
- newdiv.style.position= "absolute";
- //cater for scrolling.. Those figures are to make sure that IE and FF behave the same.
- var scrollX = getScrollPosX(document.body) - (document.all?4:2);
- var scrollY = getScrollPosY(document.body) * (document.all?2:1) - (document.all?15:1);
- newdiv.style.left = pos_x + scrollX;
- newdiv.style.top = pos_y + scrollY;
- newdiv.style.display = 'block';
- newdiv.style.height = 1;
- newdiv.style.width = 1;
- newdiv.onclick= showMenu;
- document.body.appendChild(newdiv);
- fireClickEvent(newdiv);
- }
- function fireClickEvent(control) {
- if (document.all) {
- var evt=window.document.createEventObject();
- control.fireEvent("onclick",evt);
- }
- else {
- var clickEvent = window.document.createEvent("MouseEvent");
- clickEvent.initEvent("click", false, true);
- control.dispatchEvent(clickEvent);
- }
- }
- function showMenu(event) {
- var evt = event?event:window.event;
- <xsl:variable name="menuName" select="concat('_THIS_',$contextMenus/item[@type='menu']/menu/@id)"/>
- ui_menuUpdate(<xsl:value-of select="$menuName"/>);
- ui_menuShow(evt,<xsl:value-of select="$menuName"/>);
- }
- function _THIS_conextMenuHide() {
- if (newdiv) {
- newdiv.style.display="none";
- document.body.removeChild(newdiv);
- }
- contextMenuTaskId = null;
- newdiv = null;
- }
- var menuHide = new TasksMenu();
- var contextMenuTaskId;
- function TasksMenu() {
- this.id = new Object();
- this.addMenus = function(taskId,menus) {
- this.id[taskId] = menus;
- };
- this.contains = function(taskId,menu) {
- var menus = this.id[taskId];
- for(key in menus) {
- if (menus[key] == menu) {
- return true;
- }
- }
- return false;
- };
- this.toString = function() {
- var result = "";
- for(key in this.id) {
- result += "[" + key + ": " + this.id[key] + "]";
- }
- return result;
- };
- }
- </script>
- <xsl:call-template name="doContent">
- <xsl:with-param name="items" select="$contextMenus/item[@type='button' or @type='separator' or @type='menu']"/>
- </xsl:call-template>
- </xsl:template>
- <xsl:template name="doContent">
- <xsl:param name="items"/>
- <xsl:for-each select="$items">
- <xsl:choose>
- <xsl:when test="./@type='button'">
- <div tabindex="0" accessKey="1" class="bannerOptionsButtonNormal" onKeyPress="if (window.event.keyCode == 13){./action}" onclick="{./action}" onmouseover="this.className='bannerOptionsButtonOver';" onmouseout="this.className='bannerOptionsButtonNormal';">
- <img border="0" src="_THIS?frag-resource=/{./image}/THIS_" alt="{./name}" title="{./name}"/>
- </div>
- </xsl:when>
- <xsl:when test="./@type='separator'">
- <img width="12px" alt="" src="_THIS?frag-resource=/fragments/myinbox/images/sep.gif/THIS_"/>
- </xsl:when>
- <xsl:when test="./@type='menu'">
- <xsl:call-template name="renderMenu">
- <xsl:with-param name="menu" select="./menu"/>
- <xsl:with-param name="customName" select="concat('_THIS_',./menu/@id)"/>
- <xsl:with-param name="menuType" select="'contextMenu'"/>
- </xsl:call-template>
- </xsl:when>
- </xsl:choose>
- </xsl:for-each>
- </xsl:template>
- <xsl:template name="doMenusToHide">
- <xsl:param name="contextMenusHide" select="./*[local-name()='menus']"/>
- <xsl:param name="task_id"/>
- <script type="text/javascript">
- var menusList = new Array();
- <xsl:for-each select="$contextMenusHide/*">
- menusList.push('<xsl:value-of select="xtsext:javascriptencode(string(./@name))"/>');
- </xsl:for-each>
- menuHide.addMenus('<xsl:value-of select="xtsext:javascriptencode(string($task_id))"/>', menusList);
- </script>
- </xsl:template>
- </xsl:stylesheet>
|