treefrag.xts 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Licensed Materials - Property of IBM
  4. IBM Cognos Products: cpscrn
  5. (C) Copyright IBM Corp. 2005, 2011
  6. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7. -->
  8. <!--
  9. Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
  10. Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
  11. -->
  12. <!-- $Header: //cps4/main/src/cps/templates/cps4/portlets/portal-admin/portlet-impl/import/getMarkup.xts#23 $ -->
  13. <!-- $DateTime: 2005/05/17 21:27:31 $ -->
  14. <!-- $Change: 11554 $ -->
  15. <xts:morphlet version="1.0" xmlns:xts="http://developer.cognos.com/schemas/xts/">
  16. <!--
  17. Nav Tree Portlet
  18. -->
  19. <xts:block id="response" type="exec" mode="interpret" processor="XSLT">
  20. <xts:logicsheet path="/cps4/common/logicsheets/soaplogic.xslt"/>
  21. <xsl:stylesheet version="1.0"
  22. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  23. xmlns:wsrp="urn:oasis:names:tc:wsrp:v1:types"
  24. xmlns:mx="http://developer.cognos.com/schemas/cps/wsrp/extensions/1/"
  25. xmlns:nav="http://developer.cognos.com/schemas/cps/navigation/1/"
  26. xmlns:soap="http://developer.cognos.com/schemas/cps/logic/soap"
  27. xmlns:cps="http://developer.cognos.com/schemas/cps/asm/objects/1/"
  28. xmlns:xos="http://developer.cognos.com/schemas/xts/output/"
  29. xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
  30. xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  31. exclude-result-prefixes="xtsext soap SOAP-ENV wsrp mx nav cps xos">
  32. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  33. <xsl:key name="env-param" match="/root/env/param" use="@name"/>
  34. <xsl:key name="http-param" match="/root/http/param" use="@name"/>
  35. <xsl:variable name="host">
  36. <xsl:choose>
  37. <xsl:when test="contains(key('http-param', 'SERVER_PROTOCOL'), 'HTTPS')">
  38. <xsl:value-of select="'https://'"/>
  39. </xsl:when>
  40. <xsl:otherwise>
  41. <xsl:value-of select="'http://'"/>
  42. </xsl:otherwise>
  43. </xsl:choose>
  44. <xsl:value-of select="key('http-param', 'SERVER_NAME')"/>
  45. </xsl:variable>
  46. <xsl:variable name="script-name" select="key('http-param', 'SCRIPT_NAME')"/>
  47. <xsl:variable name="path-info" select="key('http-param', 'PATH_INFO')"/>
  48. <xsl:variable name="request-url" select="concat($host, $script-name, $path-info)"/>
  49. <xsl:variable name="resource-url" select="concat($host, $script-name, '?b_action=xts.run&amp;m=portal/mypages/page_resource.xts')"/>
  50. <xsl:variable name="frag-id" select="key('env-param', 'frag-id')"/>
  51. <xsl:variable name="frag-state" select="key('env-param', 'frag-state')"/>
  52. <xsl:variable name="frag-pagemode" select="key('env-param', 'frag-pagemode')"/>
  53. <xsl:variable name="frag-agent" select="key('env-param', 'frag-agent')"/>
  54. <!-- parameters not to be passed into assembler call -->
  55. <xsl:variable name="params-excluded" select="' encoding frag-id frag-state '"/>
  56. <xsl:variable name="interaction-params" select="/root/env/param[not(contains($params-excluded, concat(' ', @name, ' ')))]"/>
  57. <xsl:variable name="frag-view">/fragments/treefrag/view.xslt</xsl:variable>
  58. <!--xsl:variable name="nav-service">interface://crn/nav</xsl:variable-->
  59. <xsl:variable name="endpoint" select="key('env-param', 'endpoint')"/>
  60. <xsl:variable name="nav-service">
  61. <xsl:choose>
  62. <xsl:when test="$endpoint">
  63. <xsl:value-of select="$endpoint"/>
  64. </xsl:when>
  65. <xsl:otherwise>interface://nav</xsl:otherwise>
  66. </xsl:choose>
  67. </xsl:variable>
  68. <xsl:variable name="root-container" select="key('env-param', 'root')"/>
  69. <xsl:variable name="container-id" select="key('env-param', 'container')"/>
  70. <xsl:variable name="container-margin" select="key('env-param', 'margin')"/>
  71. <xsl:template match="/">
  72. <xts:sequence>
  73. <xts:append select="/root/output">
  74. <xos:part>
  75. <xos:entityHeader>
  76. <xos:param name="Content-type">text/xml</xos:param>
  77. </xos:entityHeader>
  78. <xos:entityBody>
  79. <fragment xmlns="http://developer.cognos.com/fragments/1/">
  80. <info>
  81. <title>Tree Fragment</title>
  82. </info>
  83. <meta>
  84. <customProperties name="endpoint">
  85. <label xml:lang="en">Endpoint of INav Web service</label>
  86. <hint xml:lang="en">This is a Web service endpoint that implements the IBM Cognos INav interface.</hint>
  87. </customProperties>
  88. </meta>
  89. <xsl:call-template name="markup">
  90. <xsl:with-param name="id" select="$container-id"/>
  91. <xsl:with-param name="transform" select="$frag-view"/>
  92. </xsl:call-template>
  93. </fragment>
  94. </xos:entityBody>
  95. </xos:part>
  96. </xts:append>
  97. </xts:sequence>
  98. </xsl:template>
  99. <xsl:template name="navigational-state">
  100. <xsl:param name="params"/>
  101. <wsrp:navigationalState>
  102. <xsl:variable name="markup">
  103. <xsl:for-each select="$params">
  104. <xsl:value-of select="concat('&lt;param name=&quot;', @name, '&quot;&gt;', xtsext:xmlencode(wsrp:value), '&lt;/param&gt;')"/>
  105. </xsl:for-each>
  106. </xsl:variable>
  107. <xsl:value-of select="xtsext:validator('prepare','treefrag',xtsext:base64encode($markup, true()))"/>
  108. </wsrp:navigationalState>
  109. </xsl:template>
  110. <xsl:template name="markup">
  111. <xsl:param name="id"/>
  112. <xsl:param name="transform"/>
  113. <markup>
  114. <mimeType>
  115. <xsl:text>text/html</xsl:text>
  116. </mimeType>
  117. <markupString>
  118. <xts:transform name="XMLEncode" option="content">
  119. <xts:transform name="XSLT" src="{ $transform }">
  120. <xts:param name="messageBase">/cps4/producer/messages/cpsproducermsgs.xml</xts:param>
  121. <root>
  122. <userAgent>
  123. <xsl:value-of select="$frag-agent"/>
  124. </userAgent>
  125. <xts:queryNode select="/root/env"/>
  126. <navresult>
  127. <xsl:call-template name="get-container">
  128. <xsl:with-param name="id">
  129. <xsl:choose>
  130. <xsl:when test="$container-id">
  131. <xsl:value-of select="$container-id"/>
  132. </xsl:when>
  133. <xsl:when test="$root-container">
  134. <xsl:value-of select="$root-container"/>
  135. </xsl:when>
  136. <xsl:otherwise>rootDefault</xsl:otherwise>
  137. </xsl:choose>
  138. </xsl:with-param>
  139. </xsl:call-template>
  140. </navresult>
  141. </root>
  142. </xts:transform>
  143. </xts:transform>
  144. </markupString>
  145. <requiresRewriting>true</requiresRewriting>
  146. </markup>
  147. </xsl:template>
  148. <xsl:template name="get-container">
  149. <xsl:param name="id"/>
  150. <!-- soap:request provider="NAV" faultBlock="requestFault" -->
  151. <soap:request protocol="SOAP" target="{ $nav-service }" faultBlock="requestFault">
  152. <nav:getContainer>
  153. <nav:id>
  154. <xsl:value-of select="$id"/>
  155. </nav:id>
  156. <nav:childObjects>all</nav:childObjects>
  157. <nav:property name="parentId"/>
  158. <nav:property name="fullPath"/>
  159. <nav:property name="hasChildren"/>
  160. <nav:property name="screenTip"/>
  161. <nav:property name="icons"/>
  162. <nav:property name="default:backUrl">false</nav:property>
  163. <nav:property name="status"/>
  164. <nav:property name="newState"/>
  165. <nav:property name="readState"/>
  166. <nav:property name="action"/>
  167. <nav:property name="actionsURL"/>
  168. <!-- nav:sort order="ascending">name</nav:sort -->
  169. </nav:getContainer>
  170. </soap:request>
  171. </xsl:template>
  172. <xsl:template name="get-actions">
  173. <xsl:param name="id"/>
  174. <!-- soap:request provider="NAV" faultBlock="requestFault" -->
  175. <soap:request protocol="SOAP" target="{ $nav-service }" faultBlock="requestFault">
  176. <nav:getItem>
  177. <nav:id>
  178. <xsl:value-of select="$id"/>
  179. </nav:id>
  180. <nav:property name="action"/>
  181. <nav:property name="actionsURL"/>
  182. </nav:getItem>
  183. </soap:request>
  184. </xsl:template>
  185. </xsl:stylesheet>
  186. </xts:block>
  187. <xts:block id="requestFault" type="fault" processor="XSLT">
  188. <xsl:stylesheet version="1.0"
  189. xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  190. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  191. <xsl:template match="/">
  192. <xsl:variable name="xts-fault" select="/root/fault/xts:exception[last()]"/>
  193. <xsl:variable name="code" select="$xts-fault/xts:exceptionCode"/>
  194. <xsl:variable name="prefix" select="substring-before( string( $code ), ':' )"/>
  195. <xsl:variable name="local-code" select="substring-after( string( $code ), ':' )"/>
  196. <xsl:choose>
  197. <xsl:when test="($prefix = 'nav') and ($local-code = 'InvalidCredentials')">
  198. <error type="invalidCookie">
  199. <message>
  200. <xsl:value-of select="$xts-fault/xts:exceptionMsg"/>
  201. </message>
  202. </error>
  203. </xsl:when>
  204. <xsl:otherwise>
  205. <xsl:copy-of select="/root/fault"/>
  206. </xsl:otherwise>
  207. </xsl:choose>
  208. </xsl:template>
  209. </xsl:stylesheet>
  210. </xts:block>
  211. </xts:morphlet>