getDeploymentOptionsUI.xslt 55 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648
  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. 2014, 2016
  6. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7. -->
  8. <!--
  9. ===============================================================================================
  10. Compile all the options into the model which is used by UI and keeps all user choices in /root/deploymentOptionsUI.
  11. [deploymentOptionsUI]
  12. [deploymentOption name="package"]
  13. [packageDeploymentInfo]
  14. [sourceName]
  15. [cm:multilingualToken xml:lang="en-US"]A[/cm:multilingualToken]
  16. [cm:multilingualToken xml:lang="fr-FR"]B[/cm:multilingualToken]
  17. [sourceName]
  18. [targetName]
  19. [cm:multilingualToken xml:lang="fr-CA"]C[/cm:multilingualToken]
  20. [targetName]
  21. [enabled]false[enabled]
  22. [x:guid]1234567890[/x:guid]
  23. for import also:
  24. [inTargetContent]true[/inTargetContent]
  25. [modificationTime][/modificationTime]
  26. for existing import also:
  27. [inTargetDefinition]true[/inTargetDefinition]
  28. [/packageDeploymentInfo]
  29. [/deploymentOption]
  30. [deploymentOption name="archive"]a15[/deploymentOption]
  31. [deploymentOption name="archiveOverwrite"]false[/deploymentOption]
  32. [deploymentOption name="packageSelect"]true[/deploymentOption]
  33. [deploymentOption name="packageOutputs" enabled="true"]false[/deploymentOption]
  34. [deploymentOption name="packageDatasetOutputs" enabled="true"]false[/deploymentOption]
  35. [deploymentOption name="namespaceSelect" enabled="false"]true[/deploymentOption]
  36. [deploymentOption name="namespaceThirdParty" enabled="true"]true[/deploymentOption]
  37. [deploymentOption name="namespaceConflictResolution"]keep[/deploymentOption]
  38. [deploymentOption name="dataSourceSelect" enabled="true"]false[/deploymentOption]
  39. [deploymentOption name="dataSourceSignonSelect" enabled="true"]false[/deploymentOption]
  40. [deploymentOption name="dataSourceConflictResolution"]keep[/deploymentOption]
  41. [deploymentOption name="recipientsSelect" enabled="true"]false[/deploymentOption]
  42. [deploymentOption name="recipientsConflictResolution"]keep[/deploymentOption]
  43. [deploymentOption name="takeOwnership"]false[/deploymentOption]
  44. [/deploymentOptionsUI]
  45. ===============================================================================================
  46. -->
  47. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
  48. xmlns:send="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/brl/1/"
  49. xmlns:bus="http://developer.cognos.com/schemas/bibus/1/"
  50. xmlns:pf="http://developer.cognos.com/schemas/xts/pf"
  51. xmlns:dpl="http://developer.cognos.com/schemas/xts/logicsheets/deployment/"
  52. xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/"
  53. xmlns:set="http://exslt.org/sets"
  54. xmlns:xts="http://developer.cognos.com/schemas/xts/"
  55. xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
  56. exclude-result-prefixes="xsl send bus pf dpl cm xts xtsext">
  57. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no" />
  58. <!-- add any theme variables -->
  59. <pf:variables />
  60. <dpl:variables />
  61. <dpl:getDefaultPackageName />
  62. <!-- add any theme variables -->
  63. <xsl:variable name="archiveOptions" select="/root/archiveOptions/cm:getDeploymentOptionsResponse/cm:deploymentOptions" />
  64. <xsl:variable name="packagesInContent" select="/root/packagesInContent/cm:queryResponse" />
  65. <xsl:variable name="deploymentObject" select="/root/deploymentObject/cm:queryResponse/*/cm:deploymentOptions" />
  66. <xsl:template match="/root">
  67. <xts:sequence>
  68. <xts:append select="/root">
  69. <xsl:choose>
  70. <xsl:when test="key('env-param', 'm_deploymentOptionsUI')">
  71. <xsl:value-of select="xtsext:web64decode(xtsext:cafaction( 'sign_unwrap', string(/root/env/param[@name = 'm_deploymentOptionsUI'])), true())" disable-output-escaping="yes" />
  72. </xsl:when>
  73. <xsl:otherwise>
  74. <xts:transform src="transforms/portal/deploymentOptions/packages_sort.xslt" processor="XSLT">
  75. <cm:deploymentOptionsUI>
  76. <xsl:choose>
  77. <!-- Import -->
  78. <xsl:when test="key('env-param','m_class') = 'importDeployment' ">
  79. <!-- packages in archive -->
  80. <cm:deploymentOption name="package" class="cm:deploymentOptionPackageInfo">
  81. <xsl:for-each select="$archiveOptions/cm:deploymentOption[@name='package']/*[local-name() = 'packageDeploymentInfo']">
  82. <xsl:variable name="sourceName" select="cm:sourceName/cm:multilingualToken" />
  83. <xsl:variable name="archiveOptionsArchivePath" select="cm:archiveSearchPath" />
  84. <!--xsl:variable name="ancestor" select="cm:ancestors/cm:ancestorInfo"/ -->
  85. <cm:packageDeploymentInfo>
  86. <xsl:variable name="deploymentSpecObject" select="$deploymentObject/cm:deploymentOption[@name='package']/*[cm:archiveSearchPath=$archiveOptionsArchivePath]" />
  87. <xsl:choose>
  88. <xsl:when test="$deploymentSpecObject">
  89. <!-- object exists in the deployment specification; get target information from deployment spec -->
  90. <xsl:call-template name="target-dependable-elements">
  91. <xsl:with-param name="targetName" select="$deploymentSpecObject/*[local-name()='targetName']/cm:multilingualToken" />
  92. </xsl:call-template>
  93. <cm:inTargetSpecification>true</cm:inTargetSpecification>
  94. <cm:inPackagesToInclude>true</cm:inPackagesToInclude>
  95. <cm:enabled>
  96. <xsl:value-of select="$deploymentSpecObject/*[local-name()='enabled']" />
  97. </cm:enabled>
  98. <cm:searchPath>
  99. <xsl:value-of select="$deploymentSpecObject/*[local-name()='archiveSearchPath']" />
  100. </cm:searchPath>
  101. <xsl:copy-of select="$deploymentSpecObject/*[local-name()='targetLocation']" />
  102. <cm:ancestors>
  103. <cm:ancestorInfo>
  104. <cm:searchPath>
  105. <xsl:value-of select="$deploymentSpecObject/*[local-name()='ancestorInfo']/*[local-name()='searchPath']" />
  106. </cm:searchPath>
  107. <cm:title>
  108. <xsl:value-of select="$deploymentSpecObject/*[local-name()='ancestorInfo']/*[local-name()='title']" />
  109. </cm:title>
  110. <cm:storeID>
  111. <xsl:value-of select="$deploymentSpecObject/*[local-name()='ancestorInfo']/*[local-name()='storeID']" />
  112. </cm:storeID>
  113. </cm:ancestorInfo>
  114. </cm:ancestors>
  115. </xsl:when>
  116. <xsl:otherwise>
  117. <xsl:call-template name="target-dependable-elements">
  118. <xsl:with-param name="targetName" select="*[local-name()='targetName']/cm:multilingualToken" />
  119. <xsl:with-param name="targetDefaultName" select="*[local-name()='defaultName']" />
  120. <xsl:with-param name="targetLocation" select="*[local-name()='targetLocation']" />
  121. </xsl:call-template>
  122. <cm:inPackagesToInclude>false</cm:inPackagesToInclude>
  123. <cm:inTargetSpecification>false</cm:inTargetSpecification>
  124. <cm:enabled>
  125. <xsl:value-of select="cm:enabled" />
  126. </cm:enabled>
  127. <cm:searchPath>
  128. <xsl:value-of select="cm:archiveSearchPath" />
  129. </cm:searchPath>
  130. <xsl:copy-of select="*[local-name()='targetLocation']" />
  131. <cm:ancestors>
  132. <cm:ancestorInfo>
  133. <cm:searchPath>
  134. <xsl:value-of select="*[local-name()='ancestorInfo']/*[local-name()='searchPath']" />
  135. </cm:searchPath>
  136. <cm:title>
  137. <xsl:value-of select="*[local-name()='ancestorInfo']/*[local-name()='title']" />
  138. </cm:title>
  139. <cm:storeID>
  140. <xsl:value-of select="*[local-name()='ancestorInfo']/*[local-name()='storeID']" />
  141. </cm:storeID>
  142. </cm:ancestorInfo>
  143. </cm:ancestors>
  144. </xsl:otherwise>
  145. </xsl:choose>
  146. <xsl:choose>
  147. <xsl:when test="*[local-name()='objectClass'] != ''">
  148. <cm:objectClass>
  149. <xsl:value-of select="*[local-name()='objectClass']" />
  150. </cm:objectClass>
  151. </xsl:when>
  152. <xsl:otherwise>
  153. <!-- Default object class. Used for older archives that are missing this value. -->
  154. <cm:objectClass>package</cm:objectClass>
  155. </xsl:otherwise>
  156. </xsl:choose>
  157. <cm:ancestorsSource>
  158. <cm:ancestorInfo>
  159. <cm:title>
  160. <xsl:value-of select="*[local-name()='sourceAncestorsInfo']/*[local-name()='ancestorInfo']/*[local-name()='title']" />
  161. </cm:title>
  162. </cm:ancestorInfo>
  163. </cm:ancestorsSource>
  164. <xsl:call-template name="source-dependable-elements">
  165. <xsl:with-param name="sourceName" select="$sourceName" />
  166. </xsl:call-template>
  167. </cm:packageDeploymentInfo>
  168. </xsl:for-each>
  169. <!-- packages in spec but not in the archive -->
  170. <xsl:for-each select="$deploymentObject/cm:deploymentOption[@name='package']/*">
  171. <xsl:variable name="sourceName" select="cm:sourceName/cm:multilingualToken" />
  172. <xsl:variable name="archiveSearchPath" select="cm:archiveSearchPath" />
  173. <!--xsl:variable name="ancestor" select="cm:ancestors/cm:ancestorInfo"/ -->
  174. <xsl:if test="not($archiveOptions/cm:deploymentOption[@name='package']/*[cm:archiveSearchPath=$archiveSearchPath])">
  175. <cm:packageDeploymentInfo>
  176. <xsl:call-template name="target-dependable-elements">
  177. <xsl:with-param name="targetName" select="cm:targetName/cm:multilingualToken" />
  178. <xsl:with-param name="targetDefaultName" select="cm:defaultName" />
  179. <xsl:with-param name="targetLocation" select="cm:targetLocation" />
  180. </xsl:call-template>
  181. <cm:inTargetSpecification>true</cm:inTargetSpecification>
  182. <cm:inPackagesToInclude>false</cm:inPackagesToInclude>
  183. <cm:showAsDisabled>true</cm:showAsDisabled>
  184. <cm:enabled>
  185. <xsl:value-of select="cm:enabled" />
  186. </cm:enabled>
  187. <cm:objectClass>
  188. <xsl:value-of select="*[local-name()='objectClass']" />
  189. </cm:objectClass>
  190. <cm:searchPath>
  191. <xsl:value-of select="cm:archiveSearchPath" />
  192. </cm:searchPath>
  193. <cm:ancestorInfo>
  194. <cm:searchPath>
  195. <xsl:value-of select="*[local-name()='ancestorInfo']/*[local-name()='searchPath']" />
  196. </cm:searchPath>
  197. <cm:title>
  198. <xsl:value-of select="*[local-name()='ancestorInfo']/*[local-name()='title']" />
  199. </cm:title>
  200. <cm:storeID>
  201. <xsl:value-of select="*[local-name()='ancestorInfo']/*[local-name()='storeID']" />
  202. </cm:storeID>
  203. </cm:ancestorInfo>
  204. <xsl:call-template name="source-dependable-elements">
  205. <xsl:with-param name="sourceName" select="$sourceName" />
  206. </xsl:call-template>
  207. <xsl:copy-of select="*[local-name()='targetLocation']" />
  208. </cm:packageDeploymentInfo>
  209. </xsl:if>
  210. </xsl:for-each>
  211. </cm:deploymentOption>
  212. <!-- options for Import Wizard and Properties.
  213. If it's New Import take archive options. If it's Update Import
  214. Wizard and the deployment method in the spec doesn't differ from the one
  215. in the archive then take spec options otherwise take archive options. -->
  216. <xsl:choose>
  217. <xsl:when test="key('env-param','m_obj') != '' and $deploymentObject/cm:deploymentOption[@name='entireContentStoreSelect']=$archiveOptions/cm:deploymentOption[@name='entireContentStoreSelect']">
  218. <xsl:for-each select="$deploymentObject/cm:deploymentOption[@name != 'package' and @name != 'deploymentName' and @name != 'deploymentDescription' and @name != 'deploymentScreenTip' and @name != 'tenants' and @name != 'tenantsContentConflictResolution']">
  219. <xsl:call-template name="other-option-elements" />
  220. </xsl:for-each>
  221. <xsl:if test="$deploymentObject/cm:deploymentOption[@name = 'tenants']">
  222. <cm:deploymentOption>
  223. <xsl:copy-of select="$deploymentObject/cm:deploymentOption[@name = 'tenants']/@*" />
  224. <xsl:for-each select="$deploymentObject/cm:deploymentOption[@name = 'tenants']/*">
  225. <cm:value><xsl:value-of select="."/></cm:value>
  226. </xsl:for-each>
  227. </cm:deploymentOption>
  228. </xsl:if>
  229. <xsl:if test="$deploymentObject/cm:deploymentOption[@name = 'tenantsContentConflictResolution']">
  230. <cm:deploymentOption>
  231. <xsl:copy-of select="$deploymentObject/cm:deploymentOption[@name = 'tenantsContentConflictResolution']/@*" />
  232. <xsl:value-of select="$deploymentObject/cm:deploymentOption[@name = 'tenantsContentConflictResolution']"/>
  233. </cm:deploymentOption>
  234. </xsl:if>
  235. </xsl:when>
  236. <xsl:otherwise>
  237. <!-- options for New Import Wizard and Properties -->
  238. <xsl:for-each select="$archiveOptions/cm:deploymentOption[@name != 'package' and @name != 'deploymentName' and @name != 'deploymentDescription' and @name != 'deploymentScreenTip' and @name != 'upgradeClasses' and @name != 'tenants' and @name != 'tenantsContentConflictResolution']">
  239. <xsl:call-template name="other-option-elements" />
  240. </xsl:for-each>
  241. <xsl:if test="$archiveOptions/cm:deploymentOption[@name = 'tenants']">
  242. <cm:deploymentOption>
  243. <xsl:copy-of select="$archiveOptions/cm:deploymentOption[@name = 'tenants']/@*" />
  244. <xsl:for-each select="$archiveOptions/cm:deploymentOption[@name = 'tenants']/*">
  245. <cm:value><xsl:value-of select="."/></cm:value>
  246. </xsl:for-each>
  247. </cm:deploymentOption>
  248. </xsl:if>
  249. <xsl:if test="$archiveOptions/cm:deploymentOption[@name = 'tenantsContentConflictResolution']">
  250. <cm:deploymentOption>
  251. <xsl:copy-of select="$archiveOptions/cm:deploymentOption[@name = 'tenantsContentConflictResolution']/@*" />
  252. <xsl:value-of select="$archiveOptions/cm:deploymentOption[@name = 'tenantsContentConflictResolution']"/>
  253. </cm:deploymentOption>
  254. </xsl:if>
  255. </xsl:otherwise>
  256. </xsl:choose>
  257. </xsl:when>
  258. <!-- Export -->
  259. <xsl:otherwise>
  260. <!-- packages Export Wizard and Properties -->
  261. <cm:deploymentOption name="package" class="cm:deploymentOptionPackageInfo">
  262. <xsl:for-each select="/root/packagesInContent/cm:queryResponse/*[local-name()='queryReply']/*[local-name()='package' or local-name()='folder' or local-name()='account' or local-name()='namespaceFolder' or local-name()='namespace' or local-name()='catalog' or local-name()='catalogFolder' or local-name()='visualization' or local-name()='userInterfaceProfile']">
  263. <xsl:variable name="sourceName" select="cm:name/cm:multilingualToken" />
  264. <xsl:variable name="storeID" select="cm:storeID" />
  265. <xsl:variable name="ancestors" select="cm:ancestors" />
  266. <cm:packageDeploymentInfo>
  267. <xsl:variable name="deploymentObjectPackage" select="$deploymentObject/cm:deploymentOption[@name='package']/*[cm:storeID=$storeID]" />
  268. <xsl:choose>
  269. <xsl:when test="$deploymentObjectPackage">
  270. <xsl:call-template name="deployment-object-package">
  271. <xsl:with-param name="sourceName" select="$sourceName" />
  272. </xsl:call-template>
  273. </xsl:when>
  274. <xsl:otherwise>
  275. <cm:targetName><xsl:copy-of select="$sourceName" /></cm:targetName>
  276. <cm:defaultTargetName>
  277. <xsl:call-template name="get-default-package-name">
  278. <xsl:with-param name="package-name" select="$sourceName" />
  279. <xsl:with-param name="defaultName" select="$sourceName/self::node()[1]" />
  280. </xsl:call-template>
  281. </cm:defaultTargetName>
  282. <cm:enabled>true</cm:enabled>
  283. <cm:inPackagesToInclude>true</cm:inPackagesToInclude>
  284. </xsl:otherwise>
  285. </xsl:choose>
  286. <cm:objectClass><xsl:value-of select="*[local-name()='objectClass']" /></cm:objectClass>
  287. <cm:modificationTime><xsl:value-of select="cm:modificationTime" /></cm:modificationTime>
  288. <cm:storeID><xsl:value-of select="cm:storeID" /></cm:storeID>
  289. <cm:hidden><xsl:value-of select="cm:hidden" /></cm:hidden>
  290. <cm:searchPath><xsl:value-of select="cm:searchPath" /></cm:searchPath>
  291. <cm:parent><xsl:value-of select="cm:parent/*/cm:storeID" /></cm:parent>
  292. <cm:targetLocation>
  293. <xsl:value-of select="$deploymentObject/cm:deploymentOption[@name='package']/*[cm:storeID=$storeID]/cm:targetLocation" />
  294. </cm:targetLocation>
  295. <cm:ancestors>
  296. <xsl:for-each select="cm:ancestors/*">
  297. <cm:ancestorInfo>
  298. <xsl:copy-of select="cm:objectClass" />
  299. <xsl:copy-of select="cm:searchPath" />
  300. <xsl:copy-of select="cm:storeID" />
  301. <xsl:copy-of select="cm:title" />
  302. </cm:ancestorInfo>
  303. </xsl:for-each>
  304. </cm:ancestors>
  305. <cm:ancestorsSource>
  306. <xsl:for-each select="cm:ancestors/*">
  307. <cm:ancestorInfo>
  308. <xsl:copy-of select="cm:objectClass" />
  309. <xsl:copy-of select="cm:searchPath" />
  310. <xsl:copy-of select="cm:storeID" />
  311. <xsl:copy-of select="cm:title" />
  312. </cm:ancestorInfo>
  313. </xsl:for-each>
  314. </cm:ancestorsSource>
  315. <!-- TODO copy ancestors -->
  316. <xsl:call-template name="source-dependable-elements">
  317. <xsl:with-param name="sourceName" select="$sourceName" />
  318. </xsl:call-template>
  319. </cm:packageDeploymentInfo>
  320. </xsl:for-each>
  321. <!-- packages in spec but not in the content -->
  322. <xsl:for-each select="$deploymentObject/cm:deploymentOption[@name='package']/*">
  323. <xsl:variable name="sourceName" select="cm:sourceName/cm:multilingualToken" />
  324. <xsl:variable name="storeID" select="cm:storeID" />
  325. <xsl:variable name="archiveSearchPath" select="cm:archiveSearchPath" />
  326. <xsl:variable name="storeIDFromMap" select="/root/*[local-name()='storeIDMap']/*[local-name()='queryResponse']/*[local-name()='queryReply']/*[local-name()='package' or local-name()='folder' or local-name()='account' or local-name()='namespaceFolder' or local-name()='namespace' or local-name()='catalog' or local-name()='catalogFolder' or local-name()='visualization' or local-name()='userInterfaceProfile'][*[local-name()='searchPath']=$archiveSearchPath]/*[local-name()='storeID']"/>
  327. <xsl:variable name="packagesInContentResponse" select="/root/packagesInContent/cm:queryResponse/*[local-name()='queryReply']/*[local-name()='package' or local-name()='folder' or local-name()='account' or local-name()='namespaceFolder' or local-name()='namespace' or local-name()='catalog' or local-name()='catalogFolder' or local-name()='visualization' or local-name()='userInterfaceProfile']"/>
  328. <!-- need to check for existence in the content using the given storeID AND the one in the storeIDMap because CM does not guarantee
  329. whether the archive searchPath will be a storeID or a searchPath. -->
  330. <xsl:variable name="notFoundInContentUsingStoreID" select="not($packagesInContentResponse/*[local-name()='storeID' and contains($archiveSearchPath,.)])"/>
  331. <xsl:variable name="notFoundInContentUsingStoreIDFromStoreIDMap" select="not($packagesInContentResponse/*[local-name()='storeID' and contains($storeIDFromMap,.)])"/>
  332. <xsl:if test="$notFoundInContentUsingStoreID and $notFoundInContentUsingStoreIDFromStoreIDMap">
  333. <cm:packageDeploymentInfo>
  334. <cm:targetName><xsl:copy-of select="cm:targetName/cm:multilingualToken" /></cm:targetName>
  335. <cm:defaultTargetName>
  336. <xsl:call-template name="get-default-package-name">
  337. <xsl:with-param name="package-name" select="cm:targetName/cm:multilingualToken" />
  338. <xsl:with-param name="defaultName" select="cm:targetName/cm:multilingualToken/self::node()[1]" />
  339. </xsl:call-template>
  340. </cm:defaultTargetName>
  341. <cm:objectClass><xsl:value-of select="*[local-name()='objectClass']" /></cm:objectClass>
  342. <cm:enabled><xsl:value-of select="cm:enabled" /></cm:enabled>
  343. <xsl:choose>
  344. <xsl:when test="$storeID">
  345. <cm:inPackagesToInclude>true</cm:inPackagesToInclude>
  346. </xsl:when>
  347. <xsl:otherwise>
  348. <cm:inPackagesToInclude>false</cm:inPackagesToInclude>
  349. </xsl:otherwise>
  350. </xsl:choose>
  351. <xsl:choose>
  352. <xsl:when test="key('env-param','m_uiType') = 'properties'">
  353. <cm:showAsDisabled>false</cm:showAsDisabled>
  354. </xsl:when>
  355. <xsl:otherwise>
  356. <cm:showAsDisabled>true</cm:showAsDisabled>
  357. </xsl:otherwise>
  358. </xsl:choose>
  359. <cm:modificationTime>
  360. <xsl:value-of select="/root/packagesInContent/cm:queryResponse/*[local-name()='queryReply']/*[cm:storeID=$storeID]/cm:modificationTime" />
  361. </cm:modificationTime>
  362. <xsl:choose>
  363. <xsl:when test="$sourceName!=''">
  364. <xsl:call-template name="source-dependable-elements">
  365. <xsl:with-param name="sourceName" select="$sourceName" />
  366. </xsl:call-template>
  367. </xsl:when>
  368. <xsl:otherwise>
  369. <!-- TODO show unavailable -->
  370. </xsl:otherwise>
  371. </xsl:choose>
  372. <cm:storeID><xsl:value-of select="$storeID" /></cm:storeID>
  373. <cm:searchPath><xsl:value-of select="$archiveSearchPath" /></cm:searchPath>
  374. <cm:parent />
  375. <xsl:copy-of select="cm:targetLocation" />
  376. <xsl:copy-of select="cm:ancestors" />
  377. <xsl:copy-of select="cm:ancestorsSource" />
  378. </cm:packageDeploymentInfo>
  379. </xsl:if>
  380. </xsl:for-each>
  381. </cm:deploymentOption>
  382. <!-- Other export options -->
  383. <xsl:choose>
  384. <xsl:when test="key('env-param','m_obj') != '' ">
  385. <!-- Other options in the deployment object for Update Export Wizard and Propeties -->
  386. <xsl:for-each select="$deploymentObject/cm:deploymentOption[@name != 'package' and @name != 'archiveOverwrite' and @name != 'deploymentName' and @name != 'deploymentDescription' and @name != 'deploymentScreenTip' and @name != 'tenants']">
  387. <xsl:call-template name="other-option-elements" />
  388. </xsl:for-each>
  389. <xsl:variable name="optionName">archiveOverwrite</xsl:variable>
  390. <xsl:if test="$deploymentObject/cm:deploymentOption[@name = 'tenants']">
  391. <cm:deploymentOption>
  392. <xsl:copy-of select="$deploymentObject/cm:deploymentOption[@name = 'tenants']/@*" />
  393. <xsl:for-each select="$deploymentObject/cm:deploymentOption[@name = 'tenants']/*">
  394. <cm:value><xsl:value-of select="."/></cm:value>
  395. </xsl:for-each>
  396. </cm:deploymentOption>
  397. </xsl:if>
  398. <cm:deploymentOption>
  399. <xsl:copy-of select="$deploymentObject/cm:deploymentOption[@name = 'archiveOverwrite']/@*" />
  400. <xsl:text>true</xsl:text>
  401. </cm:deploymentOption>
  402. </xsl:when>
  403. <xsl:otherwise>
  404. <!-- other options in content for New Export Wizard -->
  405. <cm:deploymentOption name="archive" class="cm:deploymentOptionString">
  406. <xsl:value-of select="key('env-param','m_archive')" />
  407. </cm:deploymentOption>
  408. <!-- by default set the archiveOverwite value to true all the time. -->
  409. <!-- This is to prevent recurring runs of scheduled exports to fail. T#463341, CL#14975 -->
  410. <cm:deploymentOption name="archiveOverwrite" class="cm:deploymentOptionBoolean">true</cm:deploymentOption>
  411. <cm:deploymentOption name="packageSelect" class="cm:deploymentOptionBoolean">true</cm:deploymentOption>
  412. <cm:deploymentOption name="packageOutputs" class="cm:deploymentOptionBoolean" enabled="true">false</cm:deploymentOption>
  413. <cm:deploymentOption name="packageOutputsConflictResolution" class="cm:deploymentOptionResolution" enabled="true" depend-on="packageOutputs">replace</cm:deploymentOption>
  414. <cm:deploymentOption name="packageDatasetOutputs" class="cm:deploymentOptionBoolean" enabled="true">false</cm:deploymentOption>
  415. <cm:deploymentOption name="packageDatasetOutputsConflictResolution" class="cm:deploymentOptionResolution" enabled="true" depend-on="packageDatasetOutputs">replace</cm:deploymentOption>
  416. <cm:deploymentOption name="packageHistories" class="cm:deploymentOptionBoolean" enabled="true">false</cm:deploymentOption>
  417. <cm:deploymentOption name="packageHistoriesConflictResolution" class="cm:deploymentOptionResolution" enabled="true" depend-on="packageHistories">replace</cm:deploymentOption>
  418. <cm:deploymentOption name="packageSchedules" class="cm:deploymentOptionBoolean" enabled="true">false</cm:deploymentOption>
  419. <cm:deploymentOption name="packageSchedulesConflictResolution" class="cm:deploymentOptionResolution" enabled="true" depend-on="packageSchedules">replace</cm:deploymentOption>
  420. <cm:deploymentOption name="namespaceSelect" class="cm:deploymentOptionBoolean" enabled="true" depend-on="">false</cm:deploymentOption>
  421. <cm:deploymentOption name="namespaceThirdParty" class="cm:deploymentOptionBoolean" enabled="true" depend-on="">false</cm:deploymentOption>
  422. <cm:deploymentOption name="namespaceConflictResolution" class="cm:deploymentOptionResolution" enabled="true" depend-on="namespaceSelect">replace</cm:deploymentOption>
  423. <cm:deploymentOption name="dataSourceSelect" class="cm:deploymentOptionBoolean" enabled="true" depend-on="">false</cm:deploymentOption>
  424. <cm:deploymentOption name="dataSourceSignonSelect" class="cm:deploymentOptionBoolean" enabled="true" depend-on="dataSourceSelect">false</cm:deploymentOption>
  425. <cm:deploymentOption name="dataSourceConflictResolution" class="cm:deploymentOptionResolution" enabled="true" depend-on="dataSourceSelect">replace</cm:deploymentOption>
  426. <cm:deploymentOption name="recipientsSelect" class="cm:deploymentOptionBoolean" enabled="true" depend-on="">false</cm:deploymentOption>
  427. <cm:deploymentOption name="recipientsConflictResolution" class="cm:deploymentOptionResolution" enabled="true" depend-on="recipientsSelect">replace</cm:deploymentOption>
  428. <cm:deploymentOption name="takeOwnership" class="cm:deploymentOptionBoolean" enabled="true" depend-on="">false</cm:deploymentOption>
  429. <cm:deploymentOption name="ownershipConflictResolution" class="cm:deploymentOptionResolution" enabled="true" depend-on="">replace</cm:deploymentOption>
  430. <cm:deploymentOption name="objectPolicies" class="cm:deploymentOptionBoolean" enabled="true" depend-on="">false</cm:deploymentOption>
  431. <cm:deploymentOption name="objectPoliciesConflictResolution" class="cm:deploymentOptionResolution" enabled="true" depend-on="objectPolicies">replace</cm:deploymentOption>
  432. <cm:deploymentOption name="entireContentStoreSelect" class="cm:deploymentOptionBoolean" enabled="true" depend-on="">false</cm:deploymentOption>
  433. <cm:deploymentOption name="entireContentStoreReplace" class="cm:deploymentOptionBoolean" enabled="true" depend-on="entireContentStoreSelect">false</cm:deploymentOption>
  434. <cm:deploymentOption name="personalDataSelect" class="cm:deploymentOptionBoolean" enabled="true" depend-on="entireContentStoreSelect">false</cm:deploymentOption>
  435. <cm:deploymentOption name="tenants" class="cm:deploymentOptionStringArray" enabled="true" depend-on="entireContentStoreSelect"/>
  436. <cm:deploymentOption name="tenantsContentConflictResolution" class="cm:deploymentOptionResolution" enabled="true" depend-on="tenants">keep</cm:deploymentOption>
  437. </xsl:otherwise>
  438. </xsl:choose>
  439. </xsl:otherwise>
  440. </xsl:choose>
  441. <xsl:choose>
  442. <xsl:when test="key('env-param','m_recordingLevel') != '' and contains(' full minimal basic ', concat(' ',key('env-param','m_recordingLevel'),' '))">
  443. <cm:deploymentOption name="recordingLevel" class="cm:deploymentOptionAuditLevel" enabled="true" depend-on="">
  444. <xsl:value-of select="key('env-param','m_recordingLevel')" />
  445. </cm:deploymentOption>
  446. </xsl:when>
  447. <xsl:when test="$deploymentObject/cm:deploymentOptionAuditLevel[@name='recordingLevel']">
  448. <cm:deploymentOption name="recordingLevel" class="cm:deploymentOptionAuditLevel" enabled="true" depend-on="">
  449. <xsl:value-of select="$deploymentObject/cm:deploymentOptionAuditLevel[@name='recordingLevel']" />
  450. </cm:deploymentOption>
  451. </xsl:when>
  452. <xsl:otherwise>
  453. <cm:deploymentOption name="recordingLevel" class="cm:deploymentOptionAuditLevel" enabled="true" depend-on="">basic</cm:deploymentOption>
  454. </xsl:otherwise>
  455. </xsl:choose>
  456. </cm:deploymentOptionsUI>
  457. </xts:transform>
  458. </xsl:otherwise>
  459. </xsl:choose>
  460. </xts:append>
  461. <xsl:if test="/root/env/param[@name='m_recordingLevel']">
  462. <xts:replace select="/root//*[local-name()='deploymentOptionsUI']/*[local-name()='deploymentOption' and @name='recordingLevel'] ">
  463. <cm:deploymentOption name="recordingLevel" class="cm:deploymentOptionAuditLevel" enabled="true" depend-on="">
  464. <xsl:value-of select="key('env-param','m_recordingLevel')" />
  465. </cm:deploymentOption>
  466. </xts:replace>
  467. </xsl:if>
  468. <xts:delete select="/root/env/param[@name='m_recordingLevel']" />
  469. </xts:sequence>
  470. </xsl:template>
  471. <xsl:template name="source-dependable-elements">
  472. <xsl:param name="sourceName" />
  473. <cm:sourceName>
  474. <xsl:copy-of select="$sourceName" />
  475. </cm:sourceName>
  476. <cm:defaultSourceName>
  477. <xsl:call-template name="get-default-package-name">
  478. <xsl:with-param name="package-name" select="$sourceName" />
  479. <xsl:with-param name="defaultName" select="$sourceName/self::node()[1]" />
  480. </xsl:call-template>
  481. </cm:defaultSourceName>
  482. <xsl:variable name="new-guid" select="xtsext:generateGUID()" />
  483. <x:guid xmlns:x="x">
  484. <xsl:value-of select="$new-guid" />
  485. </x:guid>
  486. </xsl:template>
  487. <xsl:template name="target-dependable-elements">
  488. <xsl:param name="targetName" />
  489. <xsl:param name="targetDefaultName" />
  490. <xsl:param name="targetLocation" />
  491. <cm:targetName>
  492. <xsl:copy-of select="$targetName" />
  493. </cm:targetName>
  494. <cm:defaultTargetName>
  495. <xsl:call-template name="get-default-package-name">
  496. <xsl:with-param name="package-name" select="$targetName" />
  497. <xsl:with-param name="defaultName" select="$targetName/self::node()[1]" />
  498. </xsl:call-template>
  499. </cm:defaultTargetName>
  500. <xsl:choose>
  501. <xsl:when test="/root/packagesInContent/cm:queryResponse/cm:queryReply/*[cm:defaultName=$targetDefaultName and cm:parent/*[local-name()='content']/*[local-name()='searchPath']=$targetLocation]">
  502. <cm:inTargetContent>true</cm:inTargetContent>
  503. </xsl:when>
  504. <xsl:otherwise>
  505. <cm:inTargetContent>false</cm:inTargetContent>
  506. </xsl:otherwise>
  507. </xsl:choose>
  508. <cm:modificationTime>
  509. <xsl:value-of select="/root/packagesInContent/cm:queryResponse/cm:queryReply/*[cm:defaultName=$targetDefaultName and cm:parent/*[local-name()='content']/*[local-name()='searchPath']=$targetLocation]/cm:modificationTime" />
  510. </cm:modificationTime>
  511. </xsl:template>
  512. <xsl:template name="deployment-object-package">
  513. <xsl:param name="sourceName" />
  514. <!-- XSLTC returns an empty node-set if $variable/something is selected.
  515. So we cannot get targetName as $deploymentObjectPackage/cm:targetName/cm:multilingualToken.
  516. To fix the problem we create a separate variable for target name. Same is
  517. for enabled -->
  518. <xsl:variable name="deploymentObjectPackageTargetName" select="$deploymentObject/cm:deploymentOption[@name='package']/*[cm:sourceName/cm:multilingualToken=$sourceName]/cm:targetName/cm:multilingualToken" />
  519. <xsl:variable name="deploymentObjectPackageEnabled" select="$deploymentObject/cm:deploymentOption[@name='package']/*[cm:sourceName/cm:multilingualToken=$sourceName]/cm:enabled" />
  520. <xsl:choose>
  521. <xsl:when test="$deployment-method='import'">
  522. <xsl:call-template name="target-dependable-elements">
  523. <xsl:with-param name="targetName" select="$deploymentObjectPackageTargetName" />
  524. </xsl:call-template>
  525. </xsl:when>
  526. <xsl:otherwise>
  527. <cm:targetName>
  528. <xsl:copy-of select="set:distinct($deploymentObjectPackageTargetName)" />
  529. </cm:targetName>
  530. <cm:defaultTargetName>
  531. <xsl:call-template name="get-default-package-name">
  532. <xsl:with-param name="package-name" select="$deploymentObjectPackageTargetName" />
  533. <xsl:with-param name="defaultName" select="$deploymentObjectPackageTargetName/self::node()[1]" />
  534. </xsl:call-template>
  535. </cm:defaultTargetName>
  536. </xsl:otherwise>
  537. </xsl:choose>
  538. <cm:enabled>
  539. <xsl:value-of select="$deploymentObjectPackageEnabled" />
  540. </cm:enabled>
  541. <cm:inPackagesToInclude>true</cm:inPackagesToInclude>
  542. </xsl:template>
  543. <xsl:template name="other-option-elements">
  544. <xsl:if test="@name!='export'">
  545. <cm:deploymentOption>
  546. <xsl:copy-of select="@*" />
  547. <xsl:variable name="optionName" select="@name" />
  548. <xsl:variable name="enabled">
  549. <xsl:call-template name="option-enable-attr">
  550. <xsl:with-param name="optionName" select="$optionName" />
  551. </xsl:call-template>
  552. </xsl:variable>
  553. <xsl:attribute name="enabled">
  554. <xsl:value-of select="$enabled" />
  555. </xsl:attribute>
  556. <xsl:attribute name="depend-on">
  557. <xsl:call-template name="option-depend-on-attr">
  558. <xsl:with-param name="optionName" select="$optionName" />
  559. </xsl:call-template>
  560. </xsl:attribute>
  561. <xsl:variable name="optionValue" select="." />
  562. <xsl:choose>
  563. <xsl:when test="$enabled='false' and $optionValue='true'">
  564. <xsl:value-of select="'false'" />
  565. </xsl:when>
  566. <xsl:when test="$enabled='false' and $optionValue='keep'">
  567. <xsl:value-of select="'replace'" />
  568. </xsl:when>
  569. <xsl:otherwise>
  570. <xsl:value-of select="$optionValue" />
  571. </xsl:otherwise>
  572. </xsl:choose>
  573. </cm:deploymentOption>
  574. </xsl:if>
  575. </xsl:template>
  576. <xsl:template name="option-enable-attr">
  577. <xsl:param name="optionName" />
  578. <xsl:copy>
  579. <xsl:choose>
  580. <xsl:when test="$optionName = 'takeOwnership' ">true</xsl:when>
  581. <xsl:when test="$archiveOptions/cm:deploymentOption[@name = $optionName] = 'false' ">false</xsl:when>
  582. <!-- set enabled attribute for Conflict Resolution option to false if respective Select option is false -->
  583. <xsl:when test="contains($optionName,'ConflictResolution')">
  584. <xsl:variable name="mainOptionName">
  585. <xsl:call-template name="main-option-for-conflict-option">
  586. <xsl:with-param name="optionName" select="$optionName" />
  587. </xsl:call-template>
  588. </xsl:variable>
  589. <xsl:choose>
  590. <xsl:when test="$archiveOptions and $archiveOptions/cm:deploymentOption[@name=$mainOptionName]='false'">false</xsl:when>
  591. <xsl:otherwise>true</xsl:otherwise>
  592. </xsl:choose>
  593. </xsl:when>
  594. <xsl:otherwise>true</xsl:otherwise>
  595. </xsl:choose>
  596. </xsl:copy>
  597. </xsl:template>
  598. <xsl:template name="main-option-for-conflict-option">
  599. <xsl:param name="optionName" />
  600. <xsl:variable name="subName" select="substring-before($optionName, 'ConflictResolution')" />
  601. <xsl:choose>
  602. <xsl:when test="$subName='objectPolicies' or starts-with($subName,'package')">
  603. <xsl:value-of select="$subName" />
  604. </xsl:when>
  605. <xsl:when test="$subName='ownership'">
  606. <xsl:value-of select="''" />
  607. </xsl:when>
  608. <xsl:otherwise>
  609. <xsl:value-of select="concat($subName,'Select')" />
  610. </xsl:otherwise>
  611. </xsl:choose>
  612. </xsl:template>
  613. <xsl:template name="option-depend-on-attr">
  614. <xsl:param name="optionName" />
  615. <xsl:choose>
  616. <!-- set depend-on attribute for Conflict Resolution option to the respective Select option -->
  617. <xsl:when test="contains($optionName,'ConflictResolution')">
  618. <xsl:variable name="mainOptionName">
  619. <xsl:call-template name="main-option-for-conflict-option">
  620. <xsl:with-param name="optionName" select="$optionName" />
  621. </xsl:call-template>
  622. </xsl:variable>
  623. <xsl:value-of select="$mainOptionName" />
  624. </xsl:when>
  625. <!-- set depend-on attribute for dataSourceSignonSelect option to the dataSourceSelect option -->
  626. <xsl:when test="$optionName='dataSourceSignonSelect'">dataSourceSelect</xsl:when>
  627. <!-- set depend-on attribute for package options to the packageSelect option -->
  628. <xsl:when test="$optionName='packageOutputs' or $optionName='packageDatasetOutputs' or $optionName='packageHistories' or $optionName='packageSchedules'">packageSelect</xsl:when>
  629. <xsl:otherwise>
  630. <xsl:text />
  631. </xsl:otherwise>
  632. </xsl:choose>
  633. </xsl:template>
  634. </xsl:stylesheet>