viewer.xts 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727
  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, 2014
  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: //cpscrn/main/templates/cps4/portlets/nav/portlet-impl/viewer/viewer.xts#1 $ -->
  13. <!-- $DateTime: 2008/10/22 11:12:04 $ -->
  14. <!-- $Change: 25109 $ -->
  15. <xts:morphlet version="1.0" xmlns:xts="http://developer.cognos.com/schemas/xts/">
  16. <xts:block id="session" type="exec" mode="interpret" processor="XSLT">
  17. <xts:logicsheet path="/cps4/producer/logicsheets/cps-portlet.xslt"/>
  18. <xts:logicsheet path="/cps4/common/logicsheets/soaplogic.xslt"/>
  19. <xsl:stylesheet version="1.0"
  20. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  21. xmlns:portlet="http://developer.cognos.com/schemas/cps/logic/portlet/1/">
  22. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  23. <portlet:passport/>
  24. <xsl:template match="/">
  25. <portlet:if-mode name="wsrp:view|wsrp:preview">
  26. <portlet:property name="channel" select="'channel'"/>
  27. <xsl:if test="$channel != ''">
  28. <xts:sequence>
  29. <xts:append>
  30. <portlet:session-read channel="$channel">
  31. <portlet:session-data name="'display_id'"/>
  32. <portlet:session-data name="'session_id'"/>
  33. </portlet:session-read>
  34. </xts:append>
  35. </xts:sequence>
  36. </xsl:if>
  37. </portlet:if-mode>
  38. </xsl:template>
  39. </xsl:stylesheet>
  40. </xts:block>
  41. <xts:block id="request" dependency="session" type="exec" mode="interpret" processor="XSLT">
  42. <xts:logicsheet path="/cps4/producer/logicsheets/cps-portlet.xslt"/>
  43. <xts:logicsheet path="/cps4/portlets/nav/logicsheets/nav-request.xslt"/>
  44. <xsl:stylesheet version="1.0"
  45. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  46. xmlns:wsrp="urn:oasis:names:tc:wsrp:v1:types"
  47. xmlns:portlet="http://developer.cognos.com/schemas/cps/logic/portlet/1/"
  48. xmlns:nav="http://developer.cognos.com/schemas/cps/navigation/1/"
  49. xmlns:nreq="http://developer.cognos.com/schemas/cps/logic/nav/request/1/"
  50. xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  51. xmlns:cps="http://developer.cognos.com/schemas/cps/asm/objects/1/">
  52. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  53. <xsl:variable name="nav-service">interface://crn</xsl:variable>
  54. <xsl:variable name="deployment-id" select="$portlet-state-params[@name = 'display_id_dep']"/>
  55. <portlet:property name="display-id" select="'display_id'"/>
  56. <portlet:property name="display-action" select="'display_action'"/>
  57. <portlet:property name="view-action" select="'view_action'"/>
  58. <portlet:property name="display-settings-norm" select="'display_settings_norm'"/>
  59. <portlet:property name="display-settings-max" select="'display_settings_max'"/>
  60. <portlet:property name="cw-hide" select="'cw_hide'"/>
  61. <portlet:property name="viewer-resize" select="'viewer_resize'"/>
  62. <xsl:template match="/">
  63. <xts:sequence>
  64. <xts:append>
  65. <results>
  66. <portlet:if-window-state name="wsrp:normal|wsrp:maximized|wsrp:solo">
  67. <portlet:if-mode name="wsrp:view|wsrp:preview">
  68. <xsl:call-template name="get-report">
  69. <xsl:with-param name="id" select="$display-id"/>
  70. </xsl:call-template>
  71. </portlet:if-mode>
  72. <portlet:if-mode name="wsrp:edit|cps:config">
  73. <xsl:choose>
  74. <xsl:when test="contains( $portlet-navigational-params[@name = 'edit_mode'], 'about' )">
  75. <portlet:get-version/>
  76. </xsl:when>
  77. <xsl:when test="contains( $portlet-navigational-params[@name = 'edit_mode'], 'listreports' )">
  78. <xsl:call-template name="list-content"/>
  79. </xsl:when>
  80. <xsl:otherwise>
  81. <xsl:call-template name="get-report">
  82. <xsl:with-param name="id">
  83. <xsl:choose>
  84. <xsl:when test="$portlet-navigational-params[@name = 'p_display_id'] != ''">
  85. <xsl:value-of select="$portlet-navigational-params[@name = 'p_display_id']"/>
  86. </xsl:when>
  87. <xsl:otherwise>
  88. <xsl:value-of select="$display-id"/>
  89. </xsl:otherwise>
  90. </xsl:choose>
  91. </xsl:with-param>
  92. <xsl:with-param name="in-edit-mode" select="true()"/>
  93. </xsl:call-template>
  94. </xsl:otherwise>
  95. </xsl:choose>
  96. </portlet:if-mode>
  97. </portlet:if-window-state>
  98. </results>
  99. </xts:append>
  100. </xts:sequence>
  101. </xsl:template>
  102. <xsl:template name="cps-header">
  103. <!-- TODO: replace the cpsh:CPSHeader locales into the BIBUS header -->
  104. <xts:queryNode select="/root/envelope/*[local-name()='Envelope']/*[local-name()='Header']/*"/>
  105. </xsl:template>
  106. <xsl:template name="get-report">
  107. <xsl:param name="id"/>
  108. <xsl:param name="in-edit-mode" select="false()"/>
  109. <xsl:if test="$id != ''">
  110. <xts:request protocol="NAV" target="{ $nav-service }" faultBlock="requestFault">
  111. <xsl:choose>
  112. <xsl:when test="$in-edit-mode = 'true'">
  113. <xsl:attribute name="responseEnvelope">true</xsl:attribute>
  114. <xsl:attribute name="faultBlock">faultHandler</xsl:attribute>
  115. </xsl:when>
  116. <xsl:otherwise>
  117. <xsl:attribute name="responseEnvelope">false</xsl:attribute>
  118. </xsl:otherwise>
  119. </xsl:choose>
  120. <SOAP-ENV:Envelope>
  121. <SOAP-ENV:Header>
  122. <xsl:call-template name="cps-header"/>
  123. </SOAP-ENV:Header>
  124. <SOAP-ENV:Body>
  125. <nav:getItem>
  126. <nav:validateTag>
  127. <xsl:value-of select="$portlet-markups/wsrp:validateTag"/>
  128. </nav:validateTag>
  129. <nav:id>
  130. <xsl:value-of select="$id"/>
  131. </nav:id>
  132. <xsl:if test="$portlet-state-params[@name = 'display_id'] = $id">
  133. <nav:deploymentId>
  134. <xsl:value-of select="$deployment-id"/>
  135. </nav:deploymentId>
  136. </xsl:if>
  137. <nav:property name="screenTip"/>
  138. <nav:property name="internalId"/>
  139. <nav:property name="searchPath"/>
  140. <xsl:choose>
  141. <xsl:when test="$in-edit-mode = 'true'">
  142. <nav:property name="deploymentId"/>
  143. <nav:property name="parentId"/>
  144. <nav:property name="fullPath"/>
  145. <nav:property name="hidden"/>
  146. <nav:param name="useDefaultIcon"/>
  147. </xsl:when>
  148. <xsl:otherwise>
  149. <!--
  150. if we're only running the report, ask explicity for the "run" action, however be aware that "run"
  151. or "run_options" could be returned, depending on the implementation.
  152. -->
  153. <nav:property name="action">
  154. <xsl:if test="$display-action != 'view' or $view-action='run'">run</xsl:if>
  155. </nav:property>
  156. <nav:param name="urlFlags">
  157. <xsl:choose>
  158. <xsl:when test="( ($portlet-markups/wsrp:windowState = 'wsrp:maximized' and $display-settings-max != '' ) or ($portlet-markups/wsrp:windowState != 'wsrp:maximized' and $display-settings-norm != '' ) ) ">
  159. <xsl:text>t1</xsl:text>
  160. </xsl:when>
  161. <xsl:otherwise>
  162. <xsl:text>t0</xsl:text>
  163. </xsl:otherwise>
  164. </xsl:choose>
  165. </nav:param>
  166. </xsl:otherwise>
  167. </xsl:choose>
  168. <!-- Add the CW hide parameter -->
  169. <nav:param name="DashboardConsole.param.remUI">
  170. <xsl:choose>
  171. <xsl:when test="$cw-hide">
  172. <xsl:value-of select="$cw-hide"/>
  173. </xsl:when>
  174. <xsl:otherwise>
  175. <!-- By default, we hide the banner and the sidebar -->
  176. <xsl:text>banner,sidebar</xsl:text>
  177. </xsl:otherwise>
  178. </xsl:choose>
  179. </nav:param>
  180. <!-- Add the embedded parameter to the workspace url -->
  181. <nav:param name="DashboardConsole.param.ui.embedded">true</nav:param>
  182. <nreq:common-request-params/>
  183. <nav:param name="defaultAction">viewOutput</nav:param>
  184. <nav:param name="default:backUrl">back.xts</nav:param>
  185. <xsl:if test="$display-action != 'view'">
  186. <nav:param name="run_options:backUrl">back.xts</nav:param>
  187. </xsl:if>
  188. </nav:getItem>
  189. </SOAP-ENV:Body>
  190. </SOAP-ENV:Envelope>
  191. </xts:request>
  192. </xsl:if>
  193. </xsl:template>
  194. <xsl:template name="list-content">
  195. <xsl:variable name="from" select="$portlet-navigational-params[@name = 'tmp_from']"/>
  196. <xsl:variable name="to" select="$portlet-navigational-params[@name = 'tmp_to']"/>
  197. <xsl:variable name="skip" select="$portlet-navigational-params[@name = 'tmp_skip']"/>
  198. <xsl:variable name="skipObjects">
  199. <xsl:choose>
  200. <xsl:when test="$from != ''">
  201. <xsl:value-of select="number( $from ) - 1"/>
  202. </xsl:when>
  203. <xsl:when test="$skip != ''">
  204. <xsl:value-of select="$skip"/>
  205. </xsl:when>
  206. <xsl:otherwise>0</xsl:otherwise>
  207. </xsl:choose>
  208. </xsl:variable>
  209. <xsl:variable name="maxObjects">
  210. <xsl:choose>
  211. <xsl:when test="$to != ''">
  212. <xsl:value-of select="number( $to ) - number($skipObjects)"/>
  213. </xsl:when>
  214. <xsl:otherwise>10</xsl:otherwise>
  215. </xsl:choose>
  216. </xsl:variable>
  217. <xts:request protocol="NAV" target="{ $nav-service }" responseEnvelope="false" faultBlock="requestFault">
  218. <SOAP-ENV:Envelope>
  219. <SOAP-ENV:Header>
  220. <xsl:call-template name="cps-header"/>
  221. </SOAP-ENV:Header>
  222. <SOAP-ENV:Body>
  223. <nav:getContainer>
  224. <nav:id>
  225. <xsl:choose>
  226. <xsl:when test="$portlet-navigational-params[@name = 'tmp_folder_id'] != ''">
  227. <xsl:value-of select="$portlet-navigational-params[@name = 'tmp_folder_id']"/>
  228. </xsl:when>
  229. <xsl:otherwise>rootDefault</xsl:otherwise>
  230. </xsl:choose>
  231. </nav:id>
  232. <nav:childObjects>all</nav:childObjects>
  233. <nav:skipObjects>
  234. <xsl:value-of select="$skipObjects"/>
  235. </nav:skipObjects>
  236. <nav:maxObjects>
  237. <xsl:value-of select="$maxObjects"/>
  238. </nav:maxObjects>
  239. <nav:property name="screenTip"/>
  240. <nav:property name="parentId"/>
  241. <nav:property name="viewable"/>
  242. <nav:property name="hidden"/>
  243. <nreq:common-request-params/>
  244. <!-- This is used to override the default portal action of a package so we can drill into it and select reports . -->
  245. <nav:param name="defaultAction">view</nav:param>
  246. <nav:param name="useDefaultIcon"/>
  247. </nav:getContainer>
  248. </SOAP-ENV:Body>
  249. </SOAP-ENV:Envelope>
  250. </xts:request>
  251. </xsl:template>
  252. </xsl:stylesheet>
  253. </xts:block>
  254. <xts:block id="asm-request" dependency="request" condition=".[ /root/envelope/*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='getMarkup']/*[local-name()='markupParams']/*[local-name()='extensions']/*[local-name()='portalContext']/*[local-name()='portalAgent'] = 'cognos' and (/root/results/*[local-name()='getItemResponse']/*[local-name()='item']/*[local-name()='type'] = 'pagelet' or /root/results/*[local-name()='getItemResponse']/*[local-name()='shortcut']/*[local-name()='item']/*[local-name()='type']='pagelet')]" type="exec" mode="interpret" processor="XSLT" mandatory="false">
  255. <xts:logicsheet path="/cps4/producer/logicsheets/cps-portlet.xslt"/>
  256. <xts:logicsheet path="/cps4/common/logicsheets/soaplogic.xslt"/>
  257. <xsl:stylesheet version="1.0"
  258. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  259. xmlns:wsrp="urn:oasis:names:tc:wsrp:v1:types"
  260. xmlns:portlet="http://developer.cognos.com/schemas/cps/logic/portlet/1/"
  261. xmlns:nav="http://developer.cognos.com/schemas/cps/navigation/1/"
  262. xmlns:soap="http://developer.cognos.com/schemas/cps/logic/soap"
  263. xmlns:cps="http://developer.cognos.com/schemas/cps/asm/objects/1/"
  264. xmlns:bus="http://developer.cognos.com/schemas/bibus/3/"
  265. xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  266. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  267. <portlet:property name="display-id" select="'display_id'"/>
  268. <portlet:passport/>
  269. <xsl:template match="/">
  270. <xts:sequence>
  271. <xsl:variable name="display-id-pagelet" select="/root/results/nav:getItemResponse/nav:item/nav:id | /root/results/nav:getItemResponse/nav:shortcut/nav:item/nav:id"/>
  272. <soap:cpx-tracking-param name="viewer-path-recursive-marker"/>
  273. <xsl:choose>
  274. <xsl:when test="$viewer-path-recursive-marker = $display-id-pagelet">
  275. <xts:append select="/root/results">
  276. <recursive-error/>
  277. </xts:append>
  278. </xsl:when>
  279. <xsl:otherwise>
  280. <xsl:variable name="package-name" select="'//connection'"/>
  281. <xsl:variable name="path">
  282. <xsl:choose>
  283. <xsl:when test="starts-with($display-id-pagelet,'_')">
  284. <xsl:text>/connection/</xsl:text>
  285. <xsl:value-of select="substring-after($display-id-pagelet,'_')"/>
  286. </xsl:when>
  287. <xsl:otherwise>
  288. <xsl:text>/connection/path:</xsl:text>
  289. <xsl:value-of select="$display-id-pagelet"/>
  290. </xsl:otherwise>
  291. </xsl:choose>
  292. </xsl:variable>
  293. <!-- send the request to the assembler and append the response to the root document -->
  294. <xts:append>
  295. <assembler>
  296. <soap:request provider="assembler" target="interface://cps/assembler">
  297. <soap:cpx-tracking name="viewer-path-recursive-marker" select="$display-id-pagelet"/>
  298. <asm:getPagelet xmlns:asm="http://developer.cognos.com/schemas/cps/asm/assembler/1/">
  299. <cps:path>
  300. <xsl:value-of select="$path"/>
  301. </cps:path>
  302. <!-- Generate the pageletContext and interaction params -->
  303. <xsl:variable name="page-nav-params" select="$portlet-markups/wsrp:navigationalState/param"/>
  304. <!-- assembler pagelet state in case this is a pagelet request
  305. <navigationalState>
  306. <param name="pagelet-id"> pagelet id</param>
  307. <param name="interaction"> [xml encoded interaction params ] </param>
  308. <param name="pagelet-params"> [xml encoded pagelet params ] </param>
  309. <param name="pageletStatePath">pagelet state path </param>
  310. <param name="pageletState"> pagelet state</param>
  311. </navigationalState>
  312. -->
  313. <!--
  314. Extract the pagelet interaction-params and the pageletstate from the navigational state, only if the navigational state is for the pagelet that we are currently viewing.
  315. Here is a scenario that could explain this better:
  316. Viewer portlet is configure to use p2p. We open pagelet (A) and the navigate in it.
  317. Now the last render or action request made in this pagelet is saved in the navigational state of the viewer portlet.
  318. If, using p2p, we change viewer to display pagelet (B). Since there was no interaction made with the viewer portlet, it will use the last navigational state
  319. but this will fail because the last nav state has references to a portlet id/ instance id that only exist in the previous pagelet (A).
  320. -->
  321. <xsl:if test="$page-nav-params[@name='pagelet-id'] = $display-id-pagelet">
  322. <xsl:if test="$page-nav-params">
  323. <xts:transform name="XSLT" src="/cps4/portlets/nav/portlet-impl/viewer/pagestate.xslt">
  324. <navigational-state>
  325. <!--
  326. Decode the interaction params if they exist.
  327. -->
  328. <xsl:if test="$page-nav-params[@name='interaction']">
  329. <xsl:value-of disable-output-escaping="yes" select="xtsext:base64decode(string($page-nav-params[@name='interaction']),true())"/>
  330. </xsl:if>
  331. <xsl:copy-of select="$page-nav-params[@name='pagelet-params' or @name='pageletStatePath' or @name='pageletState']"/>
  332. </navigational-state>
  333. </xts:transform>
  334. </xsl:if>
  335. </xsl:if>
  336. <xsl:choose>
  337. <xsl:when test="$portlet-markups/wsrp:extensions/cps:portalContext != ''">
  338. <xsl:copy-of select="$portlet-markups/wsrp:extensions/cps:portalContext"/>
  339. </xsl:when>
  340. <xsl:otherwise>
  341. <cps:portalContext>
  342. <cps:portalAgent>
  343. <xsl:value-of select="$portlet-registration-params[@name='consumerAgent']"/>
  344. </cps:portalAgent>
  345. </cps:portalContext>
  346. </xsl:otherwise>
  347. </xsl:choose>
  348. <cps:userContext>
  349. <cps:userContextKey>
  350. <xsl:value-of select="$portlet-op/wsrp:userContext/wsrp:userContextKey"/>
  351. </cps:userContextKey>
  352. <cps:profile>
  353. <xsl:copy-of select="$portlet-op/wsrp:userContext/wsrp:profile/*"/>
  354. </cps:profile>
  355. <cps:preferences>
  356. <xsl:for-each select="/root/envelope/SOAP-ENV:Envelope/SOAP-ENV:Header/bus:biBusHeader/bus:userPreferenceVars/item">
  357. <cps:param name="{ name }">
  358. <xsl:value-of select="value"/>
  359. </cps:param>
  360. </xsl:for-each>
  361. </cps:preferences>
  362. </cps:userContext>
  363. <cps:pageletParams>
  364. <cps:userAgent>
  365. <xsl:value-of select="$portlet-markups/*[local-name()='clientData']/*[local-name()='userAgent']"/>
  366. </cps:userAgent>
  367. <cps:pageletMode>cps:view</cps:pageletMode>
  368. <cps:locales>
  369. <xsl:value-of select="$portlet-content-locale"/>
  370. </cps:locales>
  371. <xsl:if test="$portlet-content-locale != $portlet-product-locale">
  372. <cps:locales>
  373. <xsl:value-of select="$portlet-product-locale"/>
  374. </cps:locales>
  375. </xsl:if>
  376. <cps:mimeTypes>text/html</cps:mimeTypes>
  377. </cps:pageletParams>
  378. <!-- Get the package state stored in the session
  379. <cps:packageContext>
  380. ....
  381. </cps:packageContext>
  382. -->
  383. <xts:function name="TDSRequest">
  384. <xts:param name="action">get</xts:param>
  385. <xts:param name="session-id"><xsl:value-of select="$passport"/></xts:param>
  386. <xts:param name="map-id"><xsl:value-of select="'portlets'"/></xts:param>
  387. <xts:param name="name"><xsl:value-of select="$package-name"/></xts:param>
  388. </xts:function>
  389. </asm:getPagelet>
  390. </soap:request>
  391. </assembler>
  392. </xts:append>
  393. </xsl:otherwise>
  394. </xsl:choose>
  395. </xts:sequence>
  396. </xsl:template>
  397. </xsl:stylesheet>
  398. </xts:block>
  399. <xts:block id="response" dependency="asm-request" type="exec" mode="interpret" processor="XSLT">
  400. <xts:logicsheet path="/cps4/producer/logicsheets/cps-portlet.xslt"/>
  401. <xts:logicsheet path="/cps4/common/logicsheets/soaplogic.xslt"/>
  402. <xsl:stylesheet version="1.0"
  403. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  404. xmlns:wsrp="urn:oasis:names:tc:wsrp:v1:types"
  405. xmlns:portlet="http://developer.cognos.com/schemas/cps/logic/portlet/1/"
  406. xmlns:nav="http://developer.cognos.com/schemas/cps/navigation/1/"
  407. xmlns:soap="http://developer.cognos.com/schemas/cps/logic/soap"
  408. xmlns:cps="http://developer.cognos.com/schemas/cps/asm/objects/1/"
  409. xmlns:bus="http://developer.cognos.com/schemas/bibus/3/"
  410. xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  411. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  412. <portlet:property name="display-id" select="'display_id'"/>
  413. <portlet:property name="channel" select="'channel'"/>
  414. <xsl:variable name="display-id-pagelet" select="/root/results/nav:getItemResponse/nav:item/nav:id | /root/results/nav:getItemResponse/nav:shortcut/nav:item/nav:id"/>
  415. <xsl:template match="/">
  416. <portlet:portlet handle="viewer">
  417. <portlet:soap-response>
  418. <xsl:choose>
  419. <xsl:when test="/root/results/error">
  420. <portlet:soap-fault select="/root/results/error"/>
  421. </xsl:when>
  422. <xsl:otherwise>
  423. <portlet:if-mode name="wsrp:view|wsrp:preview">
  424. <portlet:response>
  425. <portlet:content>
  426. <xsl:variable name="val-tag">
  427. <xsl:choose>
  428. <xsl:when test="/root/results/nav:getItemResponse">
  429. <xsl:value-of select="/root/results/nav:getItemResponse/nav:validateTag"/>
  430. </xsl:when>
  431. <xsl:otherwise>norequest</xsl:otherwise>
  432. </xsl:choose>
  433. </xsl:variable>
  434. <xsl:variable name="use-cache" select="$portlet-markups/wsrp:validateTag = string($val-tag) and (string($val-tag) != '')"/>
  435. <portlet:markup-context useCachedMarkup="$use-cache" mimeType="'text/html'" requiresUrlRewriting="'true'">
  436. <xsl:if test="not($use-cache = 'true')">
  437. <portlet:if-window-state name="wsrp:minimized">
  438. <portlet:markup-string/>
  439. </portlet:if-window-state>
  440. <portlet:if-window-state name="wsrp:normal|wsrp:maximized|wsrp:solo">
  441. <xsl:variable name="xslt-src">
  442. <xsl:choose>
  443. <xsl:when test="$display-id != ''">
  444. <xsl:text>/cps4/portlets/nav/portlet-impl/viewer/view.xslt</xsl:text>
  445. </xsl:when>
  446. <xsl:otherwise>
  447. <xsl:text>/cps4/portlets/nav/portlet-impl/viewer/ready.xslt</xsl:text>
  448. </xsl:otherwise>
  449. </xsl:choose>
  450. </xsl:variable>
  451. <xsl:choose>
  452. <xsl:when test="(/root/assembler) and not(/root/results/recursive-error)">
  453. <!--
  454. Now we have the assembler response, we need to re-write all urls to include the
  455. page-state and the interaction params in the navigationalstate
  456. get the markup after rewriting it using pagelet-rewrite.xslt.
  457. -->
  458. <xts:transform name="XSLT" src="/cps4/portlets/nav/portlet-impl/viewer/pagelet-rewrite.xslt">
  459. <xts:param name="messageBaseLocale">
  460. <xsl:value-of select="$portlet-product-locale"/>
  461. </xts:param>
  462. <xts:param name="messageBase">/cps4/portlets/nav/messages/cpsnavmsgs.xml</xts:param>
  463. <root>
  464. <pageletId><xsl:value-of select="$display-id-pagelet"/></pageletId>
  465. <!-- New pagelet state to include in the navigational state when we do rewriting -->
  466. <newPageContext>
  467. <xts:queryNode select="/root/assembler/*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='getPageletResponse']/*[local-name()='updateResponse']/*[local-name()='pageletContext']"/>
  468. </newPageContext>
  469. <!-- Current pageletstate. The rewriter will use this state if there is no new state-->
  470. <currentPageContext>
  471. <pageletContext>
  472. <path>
  473. <xsl:value-of select="$portlet-markups/wsrp:navigationalState/param[@name='pageletStatePath']"/>
  474. </path>
  475. <state>
  476. <xsl:value-of select="$portlet-markups/wsrp:navigationalState/param[@name='pageletState']"/>
  477. </state>
  478. </pageletContext>
  479. </currentPageContext>
  480. <!-- copy more stuff for P2PC -->
  481. <portletState>
  482. <xsl:copy-of select="$portlet-state-params"/>
  483. </portletState>
  484. <session>
  485. <xsl:copy-of select="$portlet-session-params"/>
  486. </session>
  487. <windowState>
  488. <xsl:value-of select="$portlet-window-state"/>
  489. </windowState>
  490. <!-- Get the page response -->
  491. <xts:queryNode select="/root/assembler/*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='getPageletResponse']"/>
  492. <xsl:if test="$portlet-mode = 'wsrp:preview'">
  493. <preview-markup>
  494. <xts:transform name="XMLEncode">
  495. <portlet:markup-preview/>
  496. </xts:transform>
  497. </preview-markup>
  498. </xsl:if>
  499. </root>
  500. </xts:transform>
  501. </xsl:when>
  502. <xsl:otherwise>
  503. <portlet:markup-transform name="XSLT" src="$xslt-src">
  504. <portlet:logicsheet>/cps4/producer/logicsheets/cps-ui.xslt</portlet:logicsheet>
  505. <portlet:messageBase>/cps4/producer/messages/cpsproducermsgs.xml</portlet:messageBase>
  506. <portlet:messageBase>/cps4/portlets/nav/messages/cpsnavmsgs.xml</portlet:messageBase>
  507. <portlet:source>
  508. <xts:queryNode select="/root/results/*"/>
  509. </portlet:source>
  510. </portlet:markup-transform>
  511. </xsl:otherwise>
  512. </xsl:choose>
  513. <!--
  514. If we are viewing a pagelet, do not return the validate tag ..
  515. This will be fixed once the viewer starts using the assembler cache.
  516. The plan is when we are using the assembler cache, we will mark the assembler validate tag so we can recognize it and not send it in the NAV request.
  517. -->
  518. <xsl:if test="$channel = '' and not(/root/results/nav:getItemResponse/nav:item/nav:type = 'pagelet' or /root/results/nav:getItemResponse/nav:shortcut/nav:item/nav:type='pagelet')">
  519. <portlet:cache-control expires="'15'" validateTag="$val-tag"/>
  520. </xsl:if>
  521. <portlet:property name="use-title" select="'use_title'"/>
  522. <xsl:choose>
  523. <xsl:when test="$use-title = 'true'">
  524. <xsl:variable name="titles" select="$portlet-state-params[starts-with( @name, 'title_' ) and .!='']"/>
  525. <portlet:preferred-title-localized select="$titles"/>
  526. </xsl:when>
  527. <xsl:otherwise>
  528. <portlet:preferred-title>
  529. <xsl:value-of select="/root/results/nav:getItemResponse/*/nav:name"/>
  530. </portlet:preferred-title>
  531. </xsl:otherwise>
  532. </xsl:choose>
  533. </portlet:if-window-state>
  534. </xsl:if>
  535. </portlet:markup-context>
  536. </portlet:content>
  537. </portlet:response>
  538. </portlet:if-mode>
  539. <portlet:if-mode name="wsrp:edit|cps:config">
  540. <portlet:response>
  541. <portlet:content>
  542. <portlet:markup-context mimeType="'text/html'" requiresUrlRewriting="'true'">
  543. <xsl:variable name="xslt-src">
  544. <xsl:choose>
  545. <xsl:when test="contains( $portlet-navigational-params[@name = 'edit_mode'], 'about' )">
  546. <xsl:text>/cps4/producer/wsrp-impl/transforms/display-about.xslt</xsl:text>
  547. </xsl:when>
  548. <xsl:when test="contains( $portlet-navigational-params[@name = 'edit_mode'], 'listreports' )">
  549. <xsl:text>/cps4/portlets/nav/portlet-impl/viewer/list-reports.xslt</xsl:text>
  550. </xsl:when>
  551. <xsl:otherwise>
  552. <xsl:text>/cps4/portlets/nav/portlet-impl/viewer/edit.xslt</xsl:text>
  553. </xsl:otherwise>
  554. </xsl:choose>
  555. </xsl:variable>
  556. <portlet:markup-transform name="XSLT" src="$xslt-src">
  557. <portlet:logicsheet>/cps4/portlets/nav/logicsheets/nav-ui.xslt</portlet:logicsheet>
  558. <portlet:logicsheet>/cps4/producer/logicsheets/cps-ui-ext.xslt</portlet:logicsheet>
  559. <portlet:logicsheet>/cps4/producer/logicsheets/cps-ui.xslt</portlet:logicsheet>
  560. <portlet:logicsheet>/cps4/producer/logicsheets/cps-formlogic.xslt</portlet:logicsheet>
  561. <portlet:messageBase>/cps4/producer/messages/cpsproducermsgs.xml</portlet:messageBase>
  562. <portlet:messageBase>/cps4/portlets/nav/messages/cpsnavmsgs.xml</portlet:messageBase>
  563. <portlet:source>
  564. <xts:queryNode select="/root/results/*"/>
  565. <xts:function name="getConfiguration">
  566. <xts:param name="contentLocales">
  567. <xsl:value-of select="$portlet-product-locale"/>
  568. </xts:param>
  569. </xts:function>
  570. <xsl:variable name="nav-titles" select="$portlet-navigational-params[starts-with( @name, 'p_title_' ) and .!='']"/>
  571. <xsl:variable name="state-titles" select="$portlet-state-params[starts-with( @name, 'title_' ) and .!='']"/>
  572. <portlet:title-locale selectState1="$nav-titles" selectState2="$state-titles"/>
  573. </portlet:source>
  574. </portlet:markup-transform>
  575. </portlet:markup-context>
  576. </portlet:content>
  577. </portlet:response>
  578. </portlet:if-mode>
  579. <portlet:if-mode name="wsrp:help">
  580. <portlet:response>
  581. <portlet:content>
  582. <portlet:markup-context mimeType="'text/html'" requiresUrlRewriting="'false'">
  583. <portlet:markup-help/>
  584. </portlet:markup-context>
  585. </portlet:content>
  586. </portlet:response>
  587. </portlet:if-mode>
  588. </xsl:otherwise>
  589. </xsl:choose>
  590. </portlet:soap-response>
  591. </portlet:portlet>
  592. </xsl:template>
  593. </xsl:stylesheet>
  594. </xts:block>
  595. <xts:block id="save-state" dependency="response" condition=".[/root/assembler]" type="exec" mode="interpret" processor="XSLT">
  596. <xts:logicsheet path="/cps4/producer/logicsheets/cps-portlet.xslt"/>
  597. <xts:logicsheet path="/cps4/common/logicsheets/soaplogic.xslt"/>
  598. <xsl:stylesheet version="1.0"
  599. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  600. xmlns:wsrp="urn:oasis:names:tc:wsrp:v1:types"
  601. xmlns:portlet="http://developer.cognos.com/schemas/cps/logic/portlet/1/"
  602. xmlns:nav="http://developer.cognos.com/schemas/cps/navigation/1/"
  603. xmlns:soap="http://developer.cognos.com/schemas/cps/logic/soap"
  604. xmlns:cps="http://developer.cognos.com/schemas/cps/asm/objects/1/">
  605. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  606. <portlet:passport/>
  607. <xsl:template match="/">
  608. <xsl:variable name="new-packagestate" select="/root/assembler/*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='getPageletResponse']/*[local-name()='updateResponse']/*[local-name()='packageContext']"/>
  609. <xsl:variable name="package-name" select="'//connection'"/>
  610. <xsl:if test="$new-packagestate">
  611. <xts:sequence>
  612. <xts:discard>
  613. <xts:function name="TDSRequest">
  614. <xts:param name="action">set</xts:param>
  615. <xts:param name="session-id"><xsl:value-of select="$passport"/></xts:param>
  616. <xts:param name="map-id"><xsl:value-of select="'portlets'"/></xts:param>
  617. <xts:param name="name"><xsl:value-of select="$package-name"/></xts:param>
  618. <xts:param name="source">
  619. <xts:transform processor="XMLEncode">
  620. <xsl:copy-of select="$new-packagestate"/>
  621. </xts:transform>
  622. </xts:param>
  623. </xts:function>
  624. </xts:discard>
  625. </xts:sequence>
  626. </xsl:if>
  627. </xsl:template>
  628. </xsl:stylesheet>
  629. </xts:block>
  630. <xts:block id="requestFault" type="fault" processor="XSLT">
  631. <xsl:stylesheet version="1.0"
  632. xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  633. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  634. <xsl:template match="/">
  635. <xsl:variable name="xts-fault" select="/root/fault/xts:exception[last()]"/>
  636. <xsl:variable name="code" select="$xts-fault/xts:exceptionCode"/>
  637. <xsl:variable name="prefix" select="substring-before( string( $code ), ':' )"/>
  638. <xsl:variable name="local-code" select="substring-after( string( $code ), ':' )"/>
  639. <xsl:choose>
  640. <xsl:when test="($prefix = 'nav') and ($local-code = 'InvalidCredentials')">
  641. <error type="invalidCookie">
  642. <message>
  643. <xsl:value-of select="$xts-fault/xts:exceptionMsg"/>
  644. </message>
  645. </error>
  646. </xsl:when>
  647. <xsl:otherwise>
  648. <xsl:copy-of select="/root/fault"/>
  649. </xsl:otherwise>
  650. </xsl:choose>
  651. </xsl:template>
  652. </xsl:stylesheet>
  653. </xts:block>
  654. </xts:morphlet>