save_as_run_option.xts 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Licensed Materials - Property of IBM
  4. IBM Cognos Products: ps
  5. (C) Copyright IBM Corp. 2005, 2015
  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. <!-- Used for the saveAs runOption -->
  13. <xts:morphlet xmlns:xts="http://developer.cognos.com/schemas/xts/" messageBase="messages/portalRL.xml, messages/portal.xml">
  14. <!-- formlogic_init =============================================================================================== -->
  15. <xts:block id="formlogic_init" type="exec" mode="interpret" processor="XSLT" path="/logicsheets/formlogic_init.xslt" nodelist="env,credential,system,http"/>
  16. <!-- If the CM roots (personal/public) have not been determined (i.e. exist in the session) then get them. ======================= -->
  17. <xts:block id="getRootNames" path="portal/cmroots.xml" condition=".[not(/root/session/param[@name = 'e_proot'])]" processor="XSLT" type="exec" mandatory="false">
  18. <xts:logicsheet path="logicsheets/buslogic.xslt"/>
  19. </xts:block>
  20. <!--
  21. ===============================================================================================
  22. getContent - get our data from Content Manager
  23. ===============================================================================================
  24. -->
  25. <xts:block id="getContent" processor="XSLT" type="exec" dependency="formlogic_init getRootNames">
  26. <xts:logicsheet path="logicsheets/buslogic.xslt"/>
  27. <xsl:stylesheet
  28. xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
  29. xmlns:send="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/brl/1/"
  30. xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/">
  31. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  32. <xsl:key name="env-param" match="/root/env/param" use="@name"/>
  33. <xsl:variable name="containerPath">
  34. <xsl:choose>
  35. <xsl:when test="string(/root/env/param[@name='so.searchPath'])!=''"><xsl:value-of select="/root/env/param[@name='so.searchPath']"/></xsl:when>
  36. <xsl:when test="string(/root/env/param[@name = 'm_ro_saveAsPath'])!=''"><xsl:value-of select="/root/env/param[@name = 'm_ro_saveAsPath']"/></xsl:when>
  37. <xsl:when test="string(/root/env/param[@name='m_path'])!=''"><xsl:value-of select="/root/env/param[@name='m_path']"/></xsl:when>
  38. </xsl:choose>
  39. </xsl:variable>
  40. <xsl:template match="/">
  41. <xts:sequence>
  42. <!-- If a new path has been chosen (or handed to us on the request) then get its ancestors.-->
  43. <xsl:if test=" $containerPath != '' ">
  44. <xts:append>
  45. <containerPath>
  46. <xts:transform src="transforms/CM/post-process.xslt" processor="XSLT">
  47. <send:request provider="cm">
  48. <xts:transform src="transforms/CM/pre-process.xslt" processor="XSLT">
  49. <cm:query xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/">
  50. <cm:search>
  51. <xsl:value-of select="$containerPath"/>
  52. </cm:search>
  53. <cm:properties>
  54. <cm:property name="defaultName"/>
  55. <cm:property name="searchPath"/>
  56. <cm:property name="permissions"/>
  57. <cm:property name="storeID"/>
  58. <cm:property name="ancestors"/>
  59. </cm:properties>
  60. </cm:query>
  61. </xts:transform>
  62. </send:request>
  63. </xts:transform>
  64. </containerPath>
  65. </xts:append>
  66. </xsl:if>
  67. <xts:append>
  68. <myfolder>
  69. <xts:transform src="transforms/CM/post-process.xslt" processor="XSLT">
  70. <send:request provider="cm">
  71. <xts:transform src="transforms/CM/pre-process.xslt" processor="XSLT">
  72. <cm:query xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/">
  73. <cm:search>~/folder</cm:search>
  74. <cm:properties>
  75. <cm:property name="defaultName"/>
  76. <cm:property name="permissions"/>
  77. <cm:property name="storeID"/>
  78. <cm:property name="parent"/>
  79. </cm:properties>
  80. </cm:query>
  81. </xts:transform>
  82. </send:request>
  83. </xts:transform>
  84. </myfolder>
  85. </xts:append>
  86. </xts:sequence>
  87. <!-- need to update and keep the default location -->
  88. <xts:sequence>
  89. <xsl:choose>
  90. <xsl:when test="/root/env/param[@name = 'so.defaultLocation']">
  91. <xts:replace select="/root/env/param[@name='so.defaultLocation']">
  92. <param name="so.defaultLocation"><xsl:value-of select="$containerPath"/></param>
  93. </xts:replace>
  94. </xsl:when>
  95. <xsl:otherwise>
  96. <xts:append select="/root/env">
  97. <param name="so.defaultLocation"><xsl:value-of select="$containerPath"/></param>
  98. </xts:append>
  99. </xsl:otherwise>
  100. </xsl:choose>
  101. </xts:sequence>
  102. </xsl:template>
  103. </xsl:stylesheet>
  104. </xts:block>
  105. <xts:block id="validatePath" processor="XSLT" type="exec" dependency="formlogic_init getContent" mandatory="false">
  106. <xts:logicsheet path="logicsheets/buslogic.xslt"/>
  107. <xsl:stylesheet
  108. xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
  109. xmlns:send="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/brl/1/"
  110. xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
  111. xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/">
  112. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  113. <!-- Validate the path and update m_ro_saveAsPath-->
  114. <!-- Determine if we can write to the selected folder. -->
  115. <xsl:variable name="canSave" select="contains(/root/containerPath/cm:queryResponse/*/cm:permissions, 'write') and contains(/root/containerPath/cm:queryResponse/*/cm:permissions, 'traverse')"/>
  116. <xsl:variable name="path" select="/root/containerPath/cm:queryResponse/*/cm:searchPath"/>
  117. <!-- Assume calling for saving as reportView so can't be saved in root -->
  118. <xsl:variable name="validPath">
  119. <xsl:choose>
  120. <xsl:when test="$path = '' or $path = '/content' or not($canSave)"/>
  121. <xsl:otherwise><xsl:value-of select="$path"/></xsl:otherwise>
  122. </xsl:choose>
  123. </xsl:variable>
  124. <xsl:template match="/">
  125. <xts:sequence>
  126. <xsl:choose>
  127. <xsl:when test="/root/env/param[@name = 'm_ro_saveAsPath']">
  128. <xts:replace select="/root/env/param[@name='m_ro_saveAsPath']">
  129. <param name="m_ro_saveAsPath"><xsl:value-of select="$validPath"/></param>
  130. </xts:replace>
  131. </xsl:when>
  132. <xsl:otherwise>
  133. <xts:append select="/root/env">
  134. <param name="m_ro_saveAsPath"><xsl:value-of select="$validPath"/></param>
  135. </xts:append>
  136. </xsl:otherwise>
  137. </xsl:choose>
  138. </xts:sequence>
  139. </xsl:template>
  140. </xsl:stylesheet>
  141. </xts:block>
  142. <!-- Load default root map for CM objects ==================================== -->
  143. <xts:block id="getRootMap" type="exec" mode="input" processor="XML" path="/portal/uiExtensions.xml" mandatory="false">
  144. <xts:logicsheet path="/logicsheets/uiobjects/uiobjects_roots.xslt"/>
  145. </xts:block>
  146. <!--
  147. ===============================================================================================
  148. renderPage - render the HTML page
  149. ===============================================================================================
  150. -->
  151. <xts:block id="renderPage" mode="output" processor="XSLT" type="exec" mimeType="text/html" dependency="formlogic_init getRootNames getContent validatePath getRootMap">
  152. <xts:logicsheet path="logicsheets/portal.xsl"/>
  153. <xts:logicsheet path="logicsheets/presentation/dialog/framework.xsl"/>
  154. <xts:logicsheet path="logicsheets/presentation/layout.xsl"/>
  155. <xts:logicsheet path="logicsheets/presentation/dialog/presentation.xsl"/>
  156. <xts:logicsheet path="logicsheets/presentation/controls/framework.xsl"/>
  157. <xts:logicsheet path="logicsheets/presentation/controls/presentation.xsl"/>
  158. <xts:logicsheet path="logicsheets/formlogic.xslt"/>
  159. <xts:logicsheet path="logicsheets/validation.xslt"/>
  160. <xts:logicsheet path="logicsheets/presentation/touch_up.xslt"/>
  161. <xsl:stylesheet version="1.0"
  162. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  163. xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/"
  164. xmlns:pf="http://developer.cognos.com/schemas/xts/pf"
  165. xmlns:lyt="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/layout/"
  166. xmlns:dp="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/presentation/"
  167. xmlns:df="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/framework/"
  168. xmlns:cf="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/controls/framework/"
  169. xmlns:cp="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/controls/presentation/"
  170. xmlns:utml="http://developer.cognos.com/schemas/xts/logicsheet/xslt/formlogic/"
  171. xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
  172. exclude-result-prefixes="xsl xts cm pf df lyt dp cf cp utml xtsext">
  173. <xsl:output method="html" version="1.0" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>
  174. <pf:variables/>
  175. <!-- start the output -->
  176. <xsl:template match="/root">
  177. <xsl:variable name="mname" select="'save_as_run_option.xts'"/>
  178. <xsl:variable name="path" select="string(key('env-param','m_ro_saveAsPath'))"/>
  179. <!-- check if MyFldr exists and user can write to it -->
  180. <xsl:variable name="validMyFldr" select="/root/myfolder/cm:queryResponse/*/cm:defaultName and contains(string(/root/myfolder/cm:queryResponse/*/cm:permissions),'write')"/>
  181. <xsl:variable name="new-class">
  182. <xsl:if test="string(key('env-param','m_class')) != ''">
  183. <xsl:value-of select="key('env-param','m_class')"/>
  184. </xsl:if>
  185. </xsl:variable>
  186. <xsl:variable name="myFoldersPath" select="concat('storeID(&quot;' , /root/myfolder/*/*/cm:storeID , '&quot;)')"/>
  187. <xsl:variable name="myFoldersID" select="/root/myfolder/*/*/cm:storeID"/>
  188. <xsl:variable name="accountPath" select="/root/myfolder/*/*/cm:parent/*/cm:searchPath"/>
  189. <!-- Determine if path coming in is My Folders -->
  190. <xsl:variable name="myFldrId" select="string(/root/myfolder/*/*/cm:storeID)"/>
  191. <xsl:variable name="pathId" select="string(containerPath/cm:queryResponse/*/cm:storeID)"/>
  192. <!-- Determine if the current path points to the personal folder space -->
  193. <xsl:variable name="isPersonalPath" select="$myFldrId = $pathId"/>
  194. <!-- determine if current path is under personal folder -->
  195. <xsl:variable name="underMyFldr" select="boolean(containerPath/cm:queryResponse/*/cm:ancestors/*/cm:storeID[ . =$myFldrId])"/>
  196. <!-- If the current path leads to the personal folder space OR the object we are creating does not belong in the main portal content space then do not show the option to place the new entry in "My Folders" -->
  197. <xsl:variable name="showMyFoldersChoice" select="not($isPersonalPath) and /root/CMRootMap/class[@name=$new-class]/@root = '/content'"/>
  198. <xsl:variable name="browserTitle"><xts:string id="IDS_SAVE_AS_CUSTOMVIEW_TITLE"/></xsl:variable>
  199. <xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html></xsl:text><dp:page longTitle="$browserTitle">
  200. <dp:meta>
  201. <pf:meta/> <!-- Standard meta tags -->
  202. </dp:meta>
  203. <!-- get passed in parameters -->
  204. <dp:script>
  205. <pf:help context="HID_DISTRIB_SAVE"/> <!-- Help system -->
  206. <script language="javascript">
  207. var MY_FOLDER_PATH = "<xsl:value-of select="xtsext:javascriptencode(string($myFoldersPath))"/>";
  208. var MY_FOLDERS_ID = "<xsl:value-of select="xtsext:javascriptencode(string($myFoldersID))"/>";
  209. function init()
  210. {
  211. if (document.pform.m_ro_saveAsName) {
  212. document.pform.m_ro_saveAsName.focus();
  213. }
  214. // Update the display path of MF
  215. if (<xsl:value-of select="$isPersonalPath"/>) {
  216. displayMF();
  217. }
  218. }
  219. function validate()
  220. {
  221. <!-- validate the name -->
  222. if (document.pform.m_ro_saveAsName)
  223. {
  224. if ( trim( document.pform.m_ro_saveAsName.value ) == "" )
  225. {
  226. alert( "<xts:string id="IDS_NEW_ERR_NO_NAME" encode="javascript"/>" );
  227. document.pform.m_ro_saveAsName.focus();
  228. return false;
  229. }
  230. }
  231. <!-- validate the destination -->
  232. if (document.pform.m_ro_saveAsPath.value == "")
  233. {
  234. alert( "<xts:string id="IDS_SAVE_AS_NO_DESTINATION" encode="javascript"/>" );
  235. return false;
  236. }
  237. return true;
  238. }
  239. function displayMF()
  240. {
  241. var pathdiv = document.getElementById('path');
  242. var mfdiv = document.getElementById('myfolder');
  243. var sfm = document.getElementById('showMyFldr');
  244. mfdiv.style.display = "inline";
  245. pathdiv.style.display = "none";
  246. sfm.style.display = "none";
  247. }
  248. function setMyFoldersPath()
  249. {
  250. // Set the destination path
  251. document.pform.m_ro_saveAsPath.value = MY_FOLDER_PATH;
  252. // Update state params for the alternate location page so it knows that we switched the target.
  253. if (document.pform.elements["so.searchPath"]) {
  254. document.pform.elements["so.searchPath"].value = MY_FOLDER_PATH;
  255. }
  256. if (document.pform.elements["so.defaultLocation"]) {
  257. document.pform.elements["so.defaultLocation"].value = MY_FOLDER_PATH;
  258. }
  259. if (document.pform.elements["so.id"]) {
  260. document.pform.elements["so.id"].value = MY_FOLDERS_ID;
  261. }
  262. if (document.pform.elements["so.storeID"]) {
  263. document.pform.elements["so.storeID"].value = MY_FOLDER_PATH;
  264. }
  265. }
  266. </script>
  267. <script language="javascript" src="{$webcontent}/{$app}/js/utilities.js"></script>
  268. </dp:script>
  269. <utml:form name="pform" method="post" action="{$gateway}">
  270. <utml:exclusion-list><xsl:value-of select="' pageitem selected_path '"/></utml:exclusion-list>
  271. <utml:input type="hidden" name="visited_save_as" value="true" utml:update="false"/>
  272. <!-- Header -->
  273. <!-- =============================================================================== -->
  274. <dp:header>
  275. <dp:title><xsl:value-of select="$browserTitle"/></dp:title>
  276. <dp:description><xts:string id="IDS_NEW_INTRO_SAVE_RUN_OPTIONS"/></dp:description>
  277. </dp:header>
  278. <!-- Name / Description -->
  279. <!-- =============================================================================== -->
  280. <lyt:layout style="1">
  281. <lyt:section>
  282. <dp:input>
  283. <dp:section1><label for="m_ro_saveAsName"><xts:string id="IDS_NEW_NAME"/></label></dp:section1>
  284. <dp:section2>
  285. <utml:input type="text" name="m_ro_saveAsName" id="m_ro_saveAsName" size="53" maxlength="256">
  286. <utml:value>
  287. <xsl:choose>
  288. <xsl:when test="string-length(key('env-param','m_ro_saveAsName')) &gt; 256">
  289. <xsl:value-of select="substring(key('env-param','m_ro_saveAsName'),0,257)"/>
  290. </xsl:when>
  291. <xsl:otherwise>
  292. <xsl:value-of select="key('env-param','m_ro_saveAsName')"/>
  293. </xsl:otherwise>
  294. </xsl:choose>
  295. </utml:value>
  296. </utml:input>
  297. </dp:section2>
  298. </dp:input>
  299. </lyt:section>
  300. </lyt:layout>
  301. <!-- Path / Destination folder -->
  302. <!-- =============================================================================== -->
  303. <lyt:layout style="1" joinSection="yes">
  304. <lyt:section>
  305. <dp:list>
  306. <dp:section><dp:label><xts:string id="IDS_NEW_DESTINATION"/></dp:label></dp:section>
  307. <dp:section wrap="wrap">
  308. <div id="path" style="display:inline; ">
  309. <xsl:choose>
  310. <xsl:when test="$path =''">
  311. <dp:inactiveText><xts:string id="IDS_NONE"/>&#160;&#160;</dp:inactiveText>
  312. </xsl:when>
  313. <xsl:otherwise>
  314. <dp:text valign="top" wrap="wrap">
  315. <xsl:variable name="rootPath">
  316. <xsl:choose>
  317. <xsl:when test="$isPersonalPath or $underMyFldr">
  318. <xsl:value-of select="concat($accountPath, '/folder')"/>
  319. </xsl:when>
  320. <xsl:when test="starts-with($path, '/content')">
  321. <xsl:value-of select="$defaultContentRoot"/>
  322. </xsl:when>
  323. </xsl:choose>
  324. </xsl:variable>
  325. <cf:do-the-path-link>
  326. <cf:param name="familytree">containerPath/cm:queryResponse/*/cm:ancestors</cf:param>
  327. <cf:param name="familymember">containerPath/cm:queryResponse/*/cm:defaultName</cf:param>
  328. <cf:param name="home"><xsl:value-of select="$rootPath"/></cf:param>
  329. </cf:do-the-path-link>
  330. </dp:text>
  331. </xsl:otherwise>
  332. </xsl:choose>
  333. </div>
  334. </dp:section>
  335. <dp:section wrap="wrap">
  336. <div id="myfolder" style="padding:0px; display:none;">
  337. <xsl:if test="$validMyFldr">
  338. <dp:text><xsl:value-of select="/root/myfolder/cm:queryResponse/*/cm:defaultName"/></dp:text>
  339. </xsl:if>
  340. </div>
  341. </dp:section>
  342. <dp:section>
  343. <div>
  344. <dp:group>
  345. <dp:groupItem valign="top">
  346. <utml:a utml:op="maintain">
  347. <utml:target>
  348. <xsl:value-of select="$app"/>/select/select.xts<xsl:text/>
  349. </utml:target>
  350. <xsl:text/><xts:string id="IDS_SELECT_ANOTHER_FOLDER"/><xsl:text/>
  351. </utml:a>
  352. <img height="1" width="5" border="0" alt="">
  353. <xsl:attribute name="src"><xsl:value-of select="$webcontent"/>/images/space.gif</xsl:attribute>
  354. </img>
  355. </dp:groupItem>
  356. <dp:groupItem valign="top">
  357. <div id="showMyFldr" style="padding:0px; ">
  358. <xsl:if test="$validMyFldr">
  359. <a href="#">
  360. <xsl:attribute name="onclick">setMyFoldersPath();displayMF()</xsl:attribute>
  361. <xsl:text/><xts:string id="IDS_SELECT_MY_FLDR_CM_NAME"><xts:param name="myfldr"><xsl:value-of select="string(/root/myfolder/cm:queryResponse/*/cm:defaultName)"/></xts:param></xts:string><xsl:text/>
  362. </a>
  363. </xsl:if>
  364. </div>
  365. </dp:groupItem>
  366. </dp:group>
  367. </div>
  368. </dp:section>
  369. </dp:list>
  370. <!-- hidden variables required for select.xts morphlet -->
  371. <utml:input type="hidden" name="so.select" value="reportView.container" utml:update="false"/>
  372. <utml:input type="hidden" name="so.return.m" utml:update="false">
  373. <utml:value><xsl:value-of select="concat($app,'/',$mname)"/></utml:value>
  374. </utml:input>
  375. </lyt:section>
  376. </lyt:layout>
  377. <!-- Footer -->
  378. <!-- =============================================================================== -->
  379. <dp:footer>
  380. <df:button df:id="IDS_OK" utml:validate="true" df:style="stack-down-save"/>
  381. <df:button df:id="IDS_CANCEL" df:style="stack-down"/>
  382. </dp:footer>
  383. </utml:form>
  384. </dp:page>
  385. </xsl:template>
  386. </xsl:stylesheet>
  387. </xts:block>
  388. <!--
  389. ===============================================================================================
  390. debug
  391. ===============================================================================================
  392. -->
  393. <xts:block id="debug" dependency="renderPage" condition=".[ /root/session/param[@name='debug'] = '1' ]" type="exec" mode="output" processor="XSLT" mandatory="false" mimeType="text/html">
  394. <xts:logicsheet path="logicsheets/debuglogic.xslt"/>
  395. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dbg="http://developer.cognos.com/schemas/xts/logicsheets/xslt/debug/" exclude-result-prefixes="dbg">
  396. <xsl:output method="html" version="1.0" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>
  397. <xsl:template match="/">
  398. <dbg:dumpxml select="/root"/>
  399. </xsl:template>
  400. </xsl:stylesheet>
  401. </xts:block>
  402. </xts:morphlet>