drillthrough.xts 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Licensed Materials - Property of IBM
  4. IBM Cognos Products: Viewer
  5. (C) Copyright IBM Corp. 2001, 2017
  6. US Government Users Restricted Rights - Use, duplication or
  7. disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  8. -->
  9. <xts:morphlet xmlns:xts="http://developer.cognos.com/schemas/xts/" messageBase="messages/viewer.xml" requiredCapability="canUseCognosViewer">
  10. <xts:block id="parseURL" path="rv/logicsheets/parseURL.xslt" type="exec" processor="XSLT" mandatory="false"/>
  11. <xts:block id="drillTargets" mode="interpret" processor="XSLT" type="exec" dependency="parseURL" condition=".[/root/env/param[@name='drillTargets'] != '']" nodelist="env" mandatory="false">
  12. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt" xmlns:bus="http://developer.cognos.com/schemas/bibus/3/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  13. <xsl:template match="/">
  14. <xts:sequence>
  15. <xts:append select="/root">
  16. <drillTargets xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  17. <xsl:value-of select="string(/root/env/param[@name='drillTargets'])" disable-output-escaping="yes"/>
  18. </drillTargets>
  19. </xts:append>
  20. </xts:sequence>
  21. </xsl:template>
  22. </xsl:stylesheet>
  23. </xts:block>
  24. <xts:block id="get-objects" type="exec" mode="interpret" processor="XSLT" condition=".[not(/root/env/param[@name='permitRequest']='true')]" dependency="parseURL drillTargets" mandatory="false">
  25. <xts:logicsheet path="logicsheets/buslogic.xslt"/>
  26. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/" xmlns:send="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/brl/1/">
  27. <xsl:template match="/root">
  28. <xts:sequence>
  29. <xsl:choose>
  30. <xsl:when test="/root/drillTargets">
  31. <xts:replace select="/root/drillTargets">
  32. <drillTargets>
  33. <xts:transform src="portal/drillthrough.xslt" processor="XSLT">
  34. <getTargets>
  35. <drillTargets>
  36. <xsl:copy-of select="/root/*[local-name()='drillTargets']/*/*"/>
  37. </drillTargets>
  38. <xsl:for-each select="/root/*[local-name()='drillTargets']/*[local-name()='rvDrillTargets']/*[local-name()='drillTarget'][@path!='']">
  39. <cmResponseNode>
  40. <xsl:attribute name="refId"><xsl:value-of select="./@path"/></xsl:attribute>
  41. <xts:transform src="transforms/CM/post-process.xslt" processor="XSLT">
  42. <send:request provider="cm">
  43. <xts:transform src="transforms/CM/pre-process.xslt" processor="XSLT">
  44. <cm:query xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/">
  45. <cm:requests>
  46. <xsl:call-template name="cmQueryRequest">
  47. <xsl:with-param name="path" select="./@path"/>
  48. </xsl:call-template>
  49. <xsl:variable name="reportVersion">
  50. <xsl:value-of select="./@path"/>
  51. <xsl:text>/reportVersion/*[permission('read')]</xsl:text>
  52. </xsl:variable>
  53. <xsl:call-template name="cmQueryRequest">
  54. <xsl:with-param name="path" select="$reportVersion"/>
  55. </xsl:call-template>
  56. </cm:requests>
  57. </cm:query>
  58. </xts:transform>
  59. </send:request>
  60. </xts:transform>
  61. </cmResponseNode>
  62. </xsl:for-each>
  63. </getTargets>
  64. </xts:transform>
  65. </drillTargets>
  66. </xts:replace>
  67. </xsl:when>
  68. <xsl:when test="/root/env/param[@name='ui.object']!=''">
  69. <xts:replace select="/root/env">
  70. <xts:transform src="portal/drillthrough.xslt" processor="XSLT">
  71. <getAction>
  72. <drillAction>
  73. <xsl:copy-of select="/root/env/*"/>
  74. </drillAction>
  75. <cmResponseNode>
  76. <xsl:attribute name="refId"><xsl:value-of select="/root/env/param[@name='ui.object']"/></xsl:attribute>
  77. <xts:transform src="transforms/CM/post-process.xslt" processor="XSLT">
  78. <send:request provider="cm">
  79. <xts:transform src="transforms/CM/pre-process.xslt" processor="XSLT">
  80. <cm:query xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/">
  81. <cm:requests>
  82. <xsl:call-template name="cmQueryRequest">
  83. <xsl:with-param name="path" select="/root/env/param[@name='ui.object']"/>
  84. </xsl:call-template>
  85. <xsl:variable name="reportVersion">
  86. <xsl:value-of select="/root/env/param[@name='ui.object']"/>
  87. <xsl:text>/reportVersion/*[permission('read')]</xsl:text>
  88. </xsl:variable>
  89. <xsl:call-template name="cmQueryRequest">
  90. <xsl:with-param name="path" select="$reportVersion"/>
  91. </xsl:call-template>
  92. </cm:requests>
  93. </cm:query>
  94. </xts:transform>
  95. </send:request>
  96. </xts:transform>
  97. </cmResponseNode>
  98. </getAction>
  99. </xts:transform>
  100. </xts:replace>
  101. </xsl:when>
  102. </xsl:choose>
  103. </xts:sequence>
  104. </xsl:template>
  105. <xsl:template name="cmQueryRequest">
  106. <xsl:param name="path"/>
  107. <cm:query xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/">
  108. <cm:search>
  109. <xsl:value-of select="$path"/>
  110. </cm:search>
  111. <cm:properties>
  112. <cm:property name="searchPath"/>
  113. <cm:property name="permissions"/>
  114. <cm:property name="executionFormat"/>
  115. <cm:property name="defaultOutputFormat"/>
  116. <cm:property name="format"/>
  117. <cm:property name="defaultPortalAction"/>
  118. </cm:properties>
  119. </cm:query>
  120. </xsl:template>
  121. </xsl:stylesheet>
  122. </xts:block>
  123. <xts:block id="build-drill-context" type="exec" mode="interpret" processor="XSLT" condition=".[/root/drillTargets and count(/root/drillTargets/*) > 0]" dependency="get-objects" nodelist="drillTargets, env" mandatory="false">
  124. <xts:logicsheet path="logicsheets/portal.xsl"/>
  125. <xts:logicsheet path="rv/logicsheets/rvlogic.xsl"/>
  126. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt" xmlns:pf="http://developer.cognos.com/schemas/xts/pf" xmlns:rvl="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/rv/rvlogic/">
  127. <xsl:template match="/root">
  128. <xts:sequence>
  129. <xts:append select="/root/env">
  130. <param name="authoredDrillthru">
  131. <xsl:text>&lt;context&gt;</xsl:text>
  132. <xsl:for-each select="/*[local-name()='root']/*[local-name()='drillTargets']/*[local-name()='drillTarget']">
  133. <xsl:text>&lt;member&gt;</xsl:text>
  134. <xsl:text>&lt;name&gt;</xsl:text>
  135. <xsl:value-of select="xtsext:xmlencode(string(./@label))"/>
  136. <xsl:text>&lt;/name&gt;</xsl:text>
  137. <xsl:text>&lt;drillThroughSearchPath&gt;</xsl:text>
  138. <xsl:value-of select="xtsext:xmlencode(string(./@path))"/>
  139. <xsl:text>&lt;/drillThroughSearchPath&gt;</xsl:text>
  140. <xsl:text>&lt;drillThroughAction&gt;</xsl:text>
  141. <xsl:value-of select="xtsext:xmlencode(string(./@method))"/>
  142. <xsl:text>&lt;/drillThroughAction&gt;</xsl:text>
  143. <xsl:text>&lt;drillThroughFormat&gt;</xsl:text>
  144. <xsl:value-of select="xtsext:xmlencode(string(./@outputFormat))"/>
  145. <xsl:text>&lt;/drillThroughFormat&gt;</xsl:text>
  146. <xsl:text>&lt;data&gt;</xsl:text>
  147. <xsl:text>?</xsl:text>
  148. <xsl:text>&amp;amp;b_action=cognosViewer</xsl:text>
  149. <xsl:text>&amp;amp;ui.action=authoredDrillThrough2</xsl:text>
  150. <xsl:text>&amp;amp;ui.routingServerGroup=</xsl:text><xsl:value-of select="string(/root/env/param[@name='ui.routingServerGroup'])"/>
  151. <xsl:text>&amp;amp;authoredDrill.request=</xsl:text>
  152. <xsl:variable name="authoredDrillRequest">
  153. <xsl:call-template name="buildDrillRequest"/>
  154. </xsl:variable>
  155. <xsl:value-of select="xtsext:urlencode(string($authoredDrillRequest))"/>
  156. <xsl:text>&lt;/data&gt;</xsl:text>
  157. <xsl:text>&lt;/member&gt;</xsl:text>
  158. </xsl:for-each>
  159. <xsl:text>&lt;/context&gt;</xsl:text>
  160. </param>
  161. </xts:append>
  162. </xts:sequence>
  163. </xsl:template>
  164. <xsl:template name="buildDrillRequest">
  165. <xsl:text>&lt;authoredDrillRequest&gt;</xsl:text>
  166. <xsl:text>&lt;param name=&quot;action&quot;&gt;</xsl:text>
  167. <xsl:choose>
  168. <xsl:when test="string(./@method)='execute'">
  169. <xsl:text>run</xsl:text>
  170. </xsl:when>
  171. <xsl:otherwise><xsl:value-of select="xtsext:xmlencode(string(./@method))"/></xsl:otherwise>
  172. </xsl:choose>
  173. <xsl:text>&lt;/param&gt;</xsl:text>
  174. <xsl:text>&lt;param name=&quot;target&quot;&gt;</xsl:text><xsl:value-of select="xtsext:xmlencode(string(./@path))"/><xsl:text>&lt;/param&gt;</xsl:text>
  175. <xsl:text>&lt;param name=&quot;format&quot;&gt;</xsl:text><xsl:value-of select="xtsext:xmlencode(string(./@outputFormat))"/><xsl:text>&lt;/param&gt;</xsl:text>
  176. <xsl:text>&lt;param name=&quot;locale&quot;&gt;</xsl:text><xsl:value-of select="xtsext:xmlencode(string(./@outputLocale))"/><xsl:text>&lt;/param&gt;</xsl:text>
  177. <xsl:text>&lt;param name=&quot;prompt&quot;&gt;</xsl:text><xsl:value-of select="xtsext:xmlencode(string(./@prompt))"/><xsl:text>&lt;/param&gt;</xsl:text>
  178. <xsl:text>&lt;param name=&quot;dynamicDrill&quot;&gt;</xsl:text><xsl:value-of select="xtsext:xmlencode(string(./@dynamicDrill))"/><xsl:text>&lt;/param&gt;</xsl:text>
  179. <xsl:text>&lt;param name=&quot;showInNewWindow&quot;&gt;</xsl:text><xsl:value-of select="xtsext:xmlencode(string(./@showInNewWindow))"/><xsl:text>&lt;/param&gt;</xsl:text>
  180. <xsl:if test="./@bookmarkRef!=''">
  181. <xsl:text>&lt;param name=&quot;bookmark&quot;&gt;</xsl:text><xsl:value-of select="xtsext:xmlencode(string(./@bookmarkRef))"/><xsl:text>&lt;/param&gt;</xsl:text>
  182. </xsl:if>
  183. <xsl:if test="string(./@method) != 'view'">
  184. <xsl:text>&lt;param name=&quot;sourceContext&quot;&gt;</xsl:text>
  185. <xsl:variable name="markup-sourceContext">
  186. <xsl:call-template name="serialize-xml">
  187. <xsl:with-param name="node-set" select="./*[local-name()='parameters']"/>
  188. </xsl:call-template>
  189. </xsl:variable>
  190. <xsl:value-of select="xtsext:xmlencode(string($markup-sourceContext))"/>
  191. <xsl:text>&lt;/param&gt;</xsl:text>
  192. <xsl:text>&lt;param name=&quot;objectPaths&quot;&gt;</xsl:text>
  193. <xsl:variable name="markup-objectPaths">
  194. <xsl:call-template name="serialize-xml">
  195. <xsl:with-param name="node-set" select="./*[local-name()='objectPaths']"/>
  196. </xsl:call-template>
  197. </xsl:variable>
  198. <xsl:value-of select="xtsext:xmlencode(string($markup-objectPaths))"/>
  199. <xsl:text>&lt;/param&gt;</xsl:text>
  200. </xsl:if>
  201. <xsl:text>&lt;drillParameters&gt;</xsl:text>
  202. <xsl:for-each select="./drillParameter">
  203. <xsl:text>&lt;param name=&quot;p_</xsl:text><xsl:value-of select="xtsext:xmlencode(string(./@name))"/><xsl:text>&quot;&gt;</xsl:text>
  204. <xsl:if test="./@value!=''">
  205. <xsl:variable name="selectChoices">
  206. <rvl:selectChoices/>
  207. </xsl:variable>
  208. <xsl:value-of select="xtsext:xmlencode(string($selectChoices))"/>
  209. </xsl:if>
  210. <xsl:if test="./@nil!=''">
  211. <xsl:variable name="selectChoicesNil">
  212. <rvl:selectChoicesNil/>
  213. </xsl:variable>
  214. <xsl:value-of select="xtsext:xmlencode(string($selectChoicesNil))"/>
  215. </xsl:if>
  216. <xsl:text>&lt;/param&gt;</xsl:text>
  217. </xsl:for-each>
  218. <xsl:text>&lt;/drillParameters&gt;</xsl:text>
  219. <xsl:text>&lt;param name=&quot;executionParameters&quot;&gt;</xsl:text>
  220. <xsl:value-of select="string(/root/env/param[@name='encExecutionParameters'])"/>
  221. <xsl:text>&lt;/param&gt;</xsl:text>
  222. <xsl:text>&lt;param name=&quot;metadataModel&quot;&gt;</xsl:text>
  223. <xsl:value-of select="xtsext:xmlencode(string(/root/env/param[@name='modelPath']))"/>
  224. <xsl:text>&lt;/param&gt;</xsl:text>
  225. <xsl:text>&lt;param name=&quot;selectionContext&quot;&gt;</xsl:text>
  226. <xsl:choose>
  227. <xsl:when test="string(/root/env/param[@name='drillContext']) != ''">
  228. <xsl:value-of select="xtsext:xmlencode(string(/root/env/param[@name='drillContext']))"/>
  229. </xsl:when>
  230. <xsl:otherwise>
  231. <xsl:value-of select="xtsext:xmlencode(string(/root/env/param[@name='selectionContext']))"/>
  232. </xsl:otherwise>
  233. </xsl:choose>
  234. <xsl:text>&lt;/param&gt;</xsl:text>
  235. <xsl:text>&lt;param name=&quot;source&quot;&gt;</xsl:text>
  236. <xsl:value-of select="xtsext:xmlencode(string(/root/env/param[@name='drillSource']))"/>
  237. <xsl:text>&lt;/param&gt;</xsl:text>
  238. <xsl:text>&lt;param name=&quot;sourceSpecification&quot;&gt;</xsl:text>
  239. <xsl:value-of select="xtsext:xmlencode(string(/root/env/param[@name='sourceSpecification']))"/>
  240. <xsl:text>&lt;/param&gt;</xsl:text>
  241. <xsl:text>&lt;/authoredDrillRequest&gt;</xsl:text>
  242. </xsl:template>
  243. <pf:serialize-xml/>
  244. </xsl:stylesheet>
  245. </xts:block>
  246. <xts:block id="tranformRequest" mode="interpret" processor="XSLT" type="exec" dependency="parseURL get-objects build-drill-context" condition=".[not(/root/drillTargets) or (/root/env/param[@name='invokeGotoPage'])]" nodelist="env" mandatory="false">
  247. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt" exclude-result-prefixes="xts xtsext">
  248. <xsl:template match="/">
  249. <xts:sequence>
  250. <xsl:variable name="method">
  251. <xsl:value-of select="/root/env/param[@name='ui.action']"/>
  252. </xsl:variable>
  253. <xsl:choose>
  254. <xsl:when test="/root/env/param[@name='invokeGotoPage']='true'">
  255. <xts:replace select="/root/env/param[@name='m']">
  256. <param name="m">portal/goto2.xts</param>
  257. </xts:replace>
  258. </xsl:when>
  259. <xsl:when test="$method='editQuery' or $method='edit'">
  260. <xts:replace select="/root/env/param[@name='m']">
  261. <param name="m">qs/qs.xts</param>
  262. </xts:replace>
  263. </xsl:when>
  264. <xsl:when test="$method='editAnalysis'">
  265. </xsl:when>
  266. <xsl:otherwise>
  267. <xts:delete select="/root/env/param[@name='m']"/>
  268. <xts:replace select="/root/env/param[@name='b_action']">
  269. <param name="b_action">cognosViewer</param>
  270. </xts:replace>
  271. </xsl:otherwise>
  272. </xsl:choose>
  273. <xsl:if test="contains($method, 'edit')">
  274. <xts:delete select="/root/env/param[@name='run.outputFormat' or @name='outputFormat']"/>
  275. </xsl:if>
  276. <!--
  277. In the case we couldn't determine the default action from our cm request, set the
  278. default action to execute. This should only happen of the drill target no longer exists. This will allow
  279. us to run the report, and present the user with an error page, so they know the target is gone.
  280. marcel - test
  281. -->
  282. <xsl:if test="/root/env/param[@name='ui.action']='default'">
  283. <xts:replace select="/root/env/param[@name='ui.action']">
  284. <param name="ui.action">run</param>
  285. </xts:replace>
  286. </xsl:if>
  287. </xts:sequence>
  288. </xsl:template>
  289. </xsl:stylesheet>
  290. </xts:block>
  291. <xts:block id="do-single-drill" processor="XSLT" condition=".[not(/root/env/param[@name='invokeGotoPage'])]" dependency="parseURL tranformRequest" type="exec" mode="output" mimeType="text/html" mandatory="false">
  292. <xts:logicsheet path="logicsheets/portal.xsl"/>
  293. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:pf="http://developer.cognos.com/schemas/xts/pf" xmlns:xos="http://developer.cognos.com/schemas/xts/output/" xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt" exclude-result-prefixes="xsl xos">
  294. <xsl:output method="html" encoding="utf-8" indent="no"/>
  295. <xsl:key name="env-param" match="/root/env/param" use="@name"/>
  296. <pf:variables/>
  297. <xsl:template match="/">
  298. <html>
  299. <head>
  300. <script language="javascript" src="{$webRoot}/rv/common.js"/>
  301. <script language="javascript" src="{$webRoot}/common/framework/util/XMLParser.js"/>
  302. <script language="javascript" src="{$webRoot}/cr1/drill.js"/>
  303. <script language="javascript">
  304. function executeDrillThrough()
  305. {
  306. var args = new Array();
  307. var objPathArgument = new Array();
  308. objPathArgument.push(&quot;obj&quot;);
  309. objPathArgument.push(&quot;<xsl:value-of select="xtsext:javascriptencode(string(key('env-param','ui.object')))"/>&quot;);
  310. args.push(objPathArgument);
  311. var parametersArgument;
  312. <xsl:for-each select="/root/env/param[starts-with(@name, 'p_')]">
  313. parametersArgument = new Array();
  314. parametersArgument.push(&quot;<xsl:value-of select="xtsext:javascriptencode(string(@name))"/>&quot;);
  315. parametersArgument.push(&quot;<xsl:value-of select="xtsext:javascriptencode(string(.))"/>&quot;);
  316. args.push(parametersArgument);
  317. </xsl:for-each>
  318. <xsl:if test="string(key('env-param','dfemail')) != ''">
  319. window.g_dfEmail = <xsl:value-of select="xtsext:javascriptencode(string(key('env-param','dfemail')))"/>;
  320. </xsl:if>
  321. if (parent != this &amp;&amp; parent.Application &amp;&amp; typeof parent.Application.LaunchDrillTargetFromPdf == 'function')
  322. {
  323. //Handle drill-through in authoring perspective
  324. parent.Application.LaunchDrillTargetFromPdf(
  325. &quot;&quot;,
  326. args,
  327. &quot;<xsl:value-of select="xtsext:javascriptencode(string(key('env-param','ui.action')))"/>&quot;,
  328. &quot;<xsl:value-of select="xtsext:javascriptencode(string(key('env-param','run.outputFormat')))"/>&quot;,
  329. &quot;<xsl:value-of select="xtsext:javascriptencode(string(key('env-param','run.outputLocale')))"/>&quot;,
  330. &quot;<xsl:value-of select="xtsext:javascriptencode(string(key('env-param','ui.bookmark')))"/>&quot;,
  331. &quot;<xsl:value-of select="xtsext:javascriptencode(string(key('env-param','sourceContext')))"/>&quot;,
  332. &quot;<xsl:value-of select="xtsext:javascriptencode(string(key('env-param','objectPaths')))"/>&quot;,
  333. &quot;&quot;,
  334. &quot;<xsl:value-of select="xtsext:javascriptencode(string(key('env-param','run.prompt')))"/>&quot;,
  335. &quot;<xsl:value-of select="xtsext:javascriptencode(string(key('env-param','dynamicDrill')))"/>&quot;);
  336. }
  337. else
  338. {
  339. doSingleDrill(&quot;&quot;,
  340. args,
  341. &quot;<xsl:value-of select="xtsext:javascriptencode(string(key('env-param','ui.action')))"/>&quot;,
  342. &quot;<xsl:value-of select="xtsext:javascriptencode(string(key('env-param','run.outputFormat')))"/>&quot;,
  343. &quot;<xsl:value-of select="xtsext:javascriptencode(string(key('env-param','run.outputLocale')))"/>&quot;,
  344. &quot;<xsl:value-of select="xtsext:javascriptencode(string(key('env-param','ui.bookmark')))"/>&quot;,
  345. &quot;<xsl:value-of select="xtsext:javascriptencode(string(key('env-param','sourceContext')))"/>&quot;,
  346. &quot;<xsl:value-of select="xtsext:javascriptencode(string(key('env-param','objectPaths')))"/>&quot;,
  347. &quot;&quot;,
  348. &quot;<xsl:value-of select="xtsext:javascriptencode(string(key('env-param','run.prompt')))"/>&quot;,
  349. &quot;<xsl:value-of select="xtsext:javascriptencode(string(key('env-param','dynamicDrill')))"/>&quot;);
  350. }
  351. };
  352. </script>
  353. </head>
  354. <body onload="executeDrillThrough();"/>
  355. </html>
  356. </xsl:template>
  357. </xsl:stylesheet>
  358. </xts:block>
  359. <xts:block id="launch-goto-page" processor="XSLT" condition=".[/root/env/param[@name='invokeGotoPage']]" dependency="parseURL tranformRequest" type="exec" mode="output" mimeType="text/html" mandatory="false">
  360. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xos="http://developer.cognos.com/schemas/xts/output/" xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt" exclude-result-prefixes="xsl xos">
  361. <xsl:output method="html" encoding="utf-8" indent="no"/>
  362. <xsl:template match="/">
  363. <html>
  364. <body onload="document.drillThroughForm.submit();">
  365. <form action="{/root/http/param[@name='SCRIPT_NAME']}" name="drillThroughForm" id="drillThroughForm" method="post" style="height:100%;margin:0px">
  366. <input type="hidden" name="m" value="portal/goto2.xts"/>
  367. <input type="hidden" name="b_action" value="xts.run"/>
  368. <input type="hidden" name="authoredDrillthru" value="{/root/env/param[@name='authoredDrillthru']}"/>
  369. <xsl:if test="/root/env/param[@name='modelDrillEnabled']='true'">
  370. <input type="hidden" name="drillContext" value="{/root/env/param[@name='drillContext']}"/>
  371. </xsl:if>
  372. <xsl:for-each select="/root/env/param[@name != 'm' and @name != 'b_action' and @name != 'authoredDrillthru' and @name != 'drillTargets' and @name != 'drillContext' and @name != 'modelDrillEnabled']">
  373. <xsl:element name="input">
  374. <xsl:attribute name="type">hidden</xsl:attribute>
  375. <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  376. <xsl:attribute name="value"><xsl:value-of select="."/></xsl:attribute>
  377. </xsl:element>
  378. </xsl:for-each>
  379. </form>
  380. </body>
  381. </html>
  382. </xsl:template>
  383. </xsl:stylesheet>
  384. </xts:block>
  385. </xts:morphlet>