cleandrill.xslt 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. *****************************************************************
  4. ** Licensed Materials - Property of IBM
  5. **
  6. ** IBM Cognos Products: drill
  7. **
  8. ** (C) Copyright IBM Corp. 2001, 2010
  9. **
  10. ** US Government Users Restricted Rights - Use, duplication or
  11. ** disclosure restricted by GSA ADP Schedule Contract with
  12. ** IBM Corp.
  13. *****************************************************************
  14. -->
  15. <!--
  16. Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
  17. Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
  18. -->
  19. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt" xmlns:xts="http://developer.cognos.com/schemas/xts/" xmlns:send="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/brl/1/" xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/" exclude-result-prefixes="cm send xts xtsext">
  20. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  21. <xsl:key name="env-param" match="/root/env/param" use="@name"/>
  22. <xsl:template match="/">
  23. <xts:sequence>
  24. <xsl:variable name="targetPath">
  25. <xsl:choose>
  26. <xsl:when test="string(key('env-param','so.searchPath'))!=''"><xsl:value-of select="key('env-param','so.searchPath')"/></xsl:when>
  27. <xsl:when test="string(key('env-param','m_p_target'))!=''"><xsl:value-of select="key('env-param','m_p_target')"/></xsl:when>
  28. </xsl:choose>
  29. </xsl:variable>
  30. <!-- Prompting is finished so wipe out the method used for prompting -->
  31. <xsl:if test="/root/*[local-name()='view']='properties'">
  32. <xts:delete select="/root/env/param[@name='method']"/>
  33. </xsl:if>
  34. <!-- Use the stored promptRequest returned because we don't want to have to keep prompting every time we leave the page for links (other than changing targets). -->
  35. <xsl:if test="/root/env/param[@name='promptRequest']">
  36. <xsl:choose>
  37. <xsl:when test="/root/*[local-name()='promptRequest']">
  38. <xts:replace select="/root/*[local-name()='promptRequest']">
  39. <xsl:value-of select="xtsext:web64decode(xtsext:cafaction('sign_unwrap',string(/root/env/param[@name='promptRequest'])), true())" disable-output-escaping="yes"/>
  40. </xts:replace>
  41. </xsl:when>
  42. <xsl:otherwise>
  43. <xts:append select="/root">
  44. <xsl:value-of select="xtsext:web64decode(xtsext:cafaction('sign_unwrap',string(/root/env/param[@name='promptRequest'])), true())" disable-output-escaping="yes"/>
  45. </xts:append>
  46. </xsl:otherwise>
  47. </xsl:choose>
  48. </xsl:if>
  49. <!-- The target has changed 'selected_path' so wipe out any target parameters 'drillParam_' that are lying around from a previous target -->
  50. <xsl:if test="string(/root/env/param[@name='so.searchPath'])!='' and string(/root/env/param[@name='m_p_target'])!='' and string(/root/env/param[@name='so.searchPath'])!=string(/root/env/param[@name='m_p_target']) and /root/env/param[contains(string(@name),'drillParam_')]">
  51. <xts:delete select="/root/env/param[contains(string(@name),'drillParam_')]"/>
  52. </xsl:if>
  53. <xsl:if test="/root/env/param[@name='selected_scope']">
  54. <xts:delete select="/root/env/param[@name='m_p_scope' or @name='selected_scope']"/>
  55. <xts:append select="/root/env">
  56. <param name="m_p_scope">
  57. <xsl:choose>
  58. <xsl:when test="/root/env/param[@name='selected_scope']"><xsl:value-of select="string(/root/env/param[@name='selected_scope'])"/></xsl:when>
  59. <xsl:when test="/root/env/param[@name='m_p_scope']"><xsl:value-of select="string(/root/env/param[@name='m_p_scope'])"/></xsl:when>
  60. </xsl:choose>
  61. </param>
  62. </xts:append>
  63. </xsl:if>
  64. <xsl:if test="string($targetPath)!=''">
  65. <xts:delete select="/root/env/param[@name='m_p_target']"/>
  66. <xts:append select="/root/env">
  67. <param name="m_p_target"><xsl:value-of select="$targetPath"/></param>
  68. </xts:append>
  69. </xsl:if>
  70. <xsl:if test="/root/env/param[@name='selected_query']">
  71. <xts:delete select="/root/env/param[@name='m_p_bookmarkItem' or @name='selected_query' or @name='m_p_bookmarkText']"/>
  72. <xts:append select="/root/env">
  73. <param name="m_p_bookmarkItem">
  74. <xsl:choose>
  75. <xsl:when test="/root/env/param[@name='selected_query']"><xsl:value-of select="string(/root/env/param[@name='selected_query'])"/></xsl:when>
  76. <xsl:when test="/root/env/param[@name='m_p_bookmarkItem']"><xsl:value-of select="string(/root/env/param[@name='m_p_bookmarkItem'])"/></xsl:when>
  77. </xsl:choose>
  78. </param>
  79. </xts:append>
  80. </xsl:if>
  81. <xsl:if test="/root/env/param[@name='selected_param']">
  82. <xsl:variable name="sourceparam">
  83. <xsl:value-of select="concat('drillParam_',string(/root/env/param[@name='paramToSelect']))"/>
  84. </xsl:variable>
  85. <xts:delete select="/root/env/param[@name='{$sourceparam}' or @name='paramToSelect' or @name='selected_param']"/>
  86. <xts:append select="/root/env">
  87. <param>
  88. <xsl:attribute name="name"><xsl:value-of select="string($sourceparam)"/></xsl:attribute>
  89. <xsl:choose>
  90. <xsl:when test="/root/env/param[@name='selected_param']"><xsl:value-of select="string(/root/env/param[@name='selected_param'])"/></xsl:when>
  91. <xsl:when test="/root/env/param[@name='{$sourceparam}']"><xsl:value-of select="/root/env/param[@name='{$sourceparam}']"/></xsl:when>
  92. </xsl:choose>
  93. </param>
  94. </xts:append>
  95. </xsl:if>
  96. <xsl:if test="/root/env/param[@name='selected_param_MetaDataType']">
  97. <xsl:variable name="sourceparamSelectedMetaData">
  98. <xsl:value-of select="concat('MappedMetaDataType_drillParam_',string(/root/env/param[@name='paramToSelect']))"/>
  99. </xsl:variable>
  100. <xts:delete select="/root/env/param[@name='{$sourceparamSelectedMetaData}' or @name='paramToSelect' or @name='selected_param_MetaDataType']"/>
  101. <xts:append select="/root/env">
  102. <param>
  103. <xsl:attribute name="name"><xsl:value-of select="string($sourceparamSelectedMetaData)"/></xsl:attribute>
  104. <xsl:choose>
  105. <xsl:when test="/root/env/param[@name='selected_param_MetaDataType']"><xsl:value-of select="string(/root/env/param[@name='selected_param_MetaDataType'])"/></xsl:when>
  106. <xsl:when test="/root/env/param[@name='{$sourceparamSelectedMetaData}']"><xsl:value-of select="/root/env/param[@name='{$sourceparamSelectedMetaData}']"/></xsl:when>
  107. </xsl:choose>
  108. </param>
  109. </xts:append>
  110. </xsl:if>
  111. <xsl:if test="string($targetPath)!=''">
  112. <!-- Remove any existing target - this is possible because cleandrill could be called twice within properties-target. -->
  113. <xts:delete select="/root/target"/>
  114. <xts:append>
  115. <target>
  116. <xts:transform src="transforms/CM/post-process.xslt" processor="XSLT">
  117. <send:request provider="cm">
  118. <xts:transform src="transforms/CM/pre-process.xslt" processor="XSLT">
  119. <cm:query>
  120. <cm:search><xsl:value-of select="$targetPath"/></cm:search>
  121. <cm:properties>
  122. <cm:property name="defaultName"/>
  123. <cm:property name="searchPath"/>
  124. <cm:property name="ancestors"/>
  125. <cm:property name="permissions"/>
  126. <cm:property name="parent"/>
  127. <cm:property name="base"/>
  128. </cm:properties>
  129. <cm:options maxObjects="1"/>
  130. </cm:query>
  131. </xts:transform>
  132. </send:request>
  133. </xts:transform>
  134. </target>
  135. </xts:append>
  136. </xsl:if>
  137. <xsl:if test="string(key('env-param','so.searchPath'))!=''">
  138. <xsl:if test="string(key('env-param','m_p_target'))!='' and string(key('env-param','m_p_target')) != string(key('env-param','so.searchPath'))">
  139. <xts:delete select="/root/env/param[starts-with(string(@name),'m_ro_outputF')]"/>
  140. <xts:delete select="/root/env/param[@name='m_p_action' or @name='tg_fmtselect']"/>
  141. </xsl:if>
  142. </xsl:if>
  143. <xts:delete select="/root/env/param[@name='radio_entry']"/>
  144. <xts:delete select="/root/env/param[@name='m_pg_e' or @name='pageitem']"/>
  145. </xts:sequence>
  146. </xsl:template>
  147. </xsl:stylesheet>