properties_signon.xts 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809
  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, 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. <xts:morphlet xmlns:xts="http://developer.cognos.com/schemas/xts/" messageBase="messages/portal.xml, messages/portalRL.xml" requiredCapability="canUseAdministrationPortal">
  13. <xts:block id="formlogic_init" type="exec" mode="interpret" processor="XSLT" path="/logicsheets/formlogic_init.xslt" nodelist="env,credential,system,http"/>
  14. <!--
  15. ===============================================================================================
  16. callMorphlet - Calls the appropriate morphlet using the passed in params which will return
  17. markup to be displayed or the expected results
  18. ===============================================================================================
  19. -->
  20. <xts:block
  21. id="callMorphlet"
  22. nodelist="requestParams,env, http, session, credential, cookies, header, user"
  23. processor="XSLT"
  24. type="exec"
  25. dependency="formlogic_init"
  26. condition=".[ /root/env/param[@name='controller_state'] != '' ]"
  27. mandatory="false">
  28. <xts:logicsheet path="logicsheets/portal.xsl"/>
  29. <xts:logicsheet path="logicsheets/presentation/dialog/controller-templates.xsl"/>
  30. <xsl:stylesheet version="1.0"
  31. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  32. xmlns:dlgctrl="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/controller-templates/"
  33. xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
  34. xmlns:req-params="http://developer.cognos.com/schemas/request/params"
  35. exclude-result-prefixes="xsl dlgctrl xtsext req-params">
  36. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  37. <xsl:key name="request-param" match="/root/*[local-name()='requestParams']/*[local-name()='param']" use="@name"/>
  38. <xsl:template match="/">
  39. <xts:sequence>
  40. <dlgctrl:XTS2Request>
  41. <dlgctrl:target>/portal/addEntries/add_entries.xts</dlgctrl:target>
  42. <dlgctrl:stackName>addEntriesStack</dlgctrl:stackName>
  43. <req-params:param name="defaultTarget">/portal/properties_signon.xts</req-params:param>
  44. <req-params:param name="titlePostfix"><xsl:value-of select="/root/env/param[@name='m_name']"/></req-params:param>
  45. <req-params:param name="defaultSearchPath">/directory</req-params:param>
  46. <req-params:param name="showUsers">true</req-params:param>
  47. <req-params:param name="addEntriesUI">members</req-params:param>
  48. <req-params:param name="allowDuplicates">false</req-params:param>
  49. <req-params:param name="typeDialog">true</req-params:param>
  50. <req-params:param name="returnProperties">
  51. <req-params:property name="userName"/>
  52. </req-params:param>
  53. </dlgctrl:XTS2Request>
  54. </xts:sequence>
  55. </xsl:template>
  56. </xsl:stylesheet>
  57. </xts:block>
  58. <!--
  59. ===============================================================================================
  60. processReponse - Process the response from the callMorphlet block and either displays
  61. the markup or processes the results
  62. ===============================================================================================
  63. -->
  64. <xts:block
  65. id="processResponse"
  66. nodelist="output,http,env,system,user,morphletResponse,credential,cookies"
  67. path="/portal/addEntries/logicsheets/process_added_entries.xslt"
  68. processor="XSLT"
  69. dependency="callMorphlet"
  70. type="exec"
  71. condition=".[ /root/env/param[@name='controller_state'] != '' ]"
  72. mandatory="false">
  73. <xts:logicsheet path="logicsheets/presentation/dialog/controller-templates.xsl"/>
  74. <xts:logicsheet path="logicsheets/portal.xsl"/>
  75. </xts:block>
  76. <!-- Load object-specific property tabs map ============================================================== -->
  77. <xts:block id="getTabs" type="exec" mode="interpret" processor="XML" path="/portal/uiobjects_tabs.xml" dependency="processResponse" condition=".[not(/root/mode='addEntries')]" mandatory="false"/>
  78. <!--
  79. ================================================================================
  80. encrypt_credentials
  81. Encrypts the credentials from the Specify the signon userid & password dialog.
  82. ================================================================================
  83. -->
  84. <xts:block id="encrypt_credentials" type="exec" dependency="processResponse" mode="interpret" processor="XSLT" mandatory="false" condition=".[not(/root/mode='addEntries') and (/root/env/param[@name='m_cube_password'] or /root/env/param[@name='m_signon_password'])]">
  85. <xts:logicsheet path="logicsheets/presentation/dialog/connections.xslt"/>
  86. <xsl:stylesheet version="1.0"
  87. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  88. xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
  89. xmlns:dcx="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/connections/1/">
  90. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  91. <xsl:key name="env-param" match="/root/env/param" use="@name"/>
  92. <xsl:template match="/">
  93. <xts:sequence>
  94. <xsl:if test="key('env-param','m_signon_cube_pwd_changed')='1' or key('env-param','m_signon_pwd_changed')='1' or key('env-param','changed_m_signon_userid')='1'">
  95. <xts:delete select="/root/env/param[@name='m_p_credentials']"/>
  96. <xsl:variable name="password">
  97. <xsl:choose>
  98. <xsl:when test="key('env-param','m_signon_pwd_changed')='1'">
  99. <xsl:value-of select="key('env-param','m_signon_password')"/>
  100. </xsl:when>
  101. <xsl:otherwise>
  102. <xsl:value-of select="key('env-param','pass_encrypted')"/>
  103. </xsl:otherwise>
  104. </xsl:choose>
  105. </xsl:variable>
  106. <xsl:variable name="passwordEncrypted">
  107. <xsl:choose>
  108. <xsl:when test="key('env-param','m_signon_pwd_changed')='1' and not(/root/env/param[@name='m_signon_password' and @format='encrypted'])">
  109. <xsl:value-of select="false()"/>
  110. </xsl:when>
  111. <xsl:otherwise>
  112. <xsl:value-of select="true()"/>
  113. </xsl:otherwise>
  114. </xsl:choose>
  115. </xsl:variable>
  116. <xsl:variable name="cubePassword">
  117. <xsl:choose>
  118. <xsl:when test="key('env-param','m_signon_cube_pwd_changed')='1'">
  119. <xsl:value-of select="key('env-param','m_cube_password')"/>
  120. </xsl:when>
  121. <xsl:otherwise>
  122. <xsl:value-of select="key('env-param','cube_pass_encrypted')"/>
  123. </xsl:otherwise>
  124. </xsl:choose>
  125. </xsl:variable>
  126. <xsl:variable name="cubePasswordEncrypted">
  127. <xsl:choose>
  128. <xsl:when test="key('env-param','m_signon_cube_pwd_changed')='1' and not(/root/env/param[@name='m_cube_password' and @format='encrypted'])">
  129. <xsl:value-of select="false()"/>
  130. </xsl:when>
  131. <xsl:otherwise>
  132. <xsl:value-of select="true()"/>
  133. </xsl:otherwise>
  134. </xsl:choose>
  135. </xsl:variable>
  136. <!-- Generate the credentials with the user id and password. -->
  137. <xts:append select="/root/env">
  138. <param name="m_p_credentials">
  139. <xsl:call-template name="dcx:genCredentials">
  140. <xsl:with-param name="username" select="key('env-param','m_signon_userid')"/>
  141. <xsl:with-param name="password" select="$password"/>
  142. <xsl:with-param name="passwordEncrypted" select="$passwordEncrypted"/>
  143. <xsl:with-param name="cubePassword" select="$cubePassword"/>
  144. <xsl:with-param name="cubePasswordEncrypted" select="$cubePasswordEncrypted"/>
  145. </xsl:call-template>
  146. </param>
  147. </xts:append>
  148. <!-- if the password changed, then encrypt it and keep it in the env -->
  149. <xsl:if test="key('env-param','m_signon_pwd_changed')='1'">
  150. <xts:delete select="/root/env/param[@name='pass_encrypted']"/>
  151. <xts:append select="/root/env">
  152. <!-- password -->
  153. <param name="pass_encrypted">
  154. <xts:encrypt>
  155. <xts:param name="provider">cognos.cam</xts:param>
  156. <xts:param name="source">
  157. <xsl:choose>
  158. <xsl:when test="/root/env/param[@name='m_signon_password' and @format='encrypted']">
  159. <xts:transform name="XMLEncode">
  160. <xts:decrypt>
  161. <xts:param name="encode">xml</xts:param>
  162. <xts:param name="provider">cognos.cam</xts:param>
  163. <xts:param name="source"><xsl:value-of select="key('env-param','m_signon_password')"/></xts:param>
  164. </xts:decrypt>
  165. </xts:transform>
  166. </xsl:when>
  167. <xsl:otherwise><xsl:value-of select="xtsext:xmlencode(string(key('env-param','m_signon_password')))"/></xsl:otherwise>
  168. </xsl:choose>
  169. </xts:param>
  170. </xts:encrypt>
  171. </param>
  172. </xts:append>
  173. </xsl:if>
  174. <xsl:if test="key('env-param','m_signon_cube_pwd_changed')='1'">
  175. <xts:delete select="/root/env/param[@name='cube_pass_encrypted']"/>
  176. <xts:append select="/root/env">
  177. <!-- cube password -->
  178. <param name="cube_pass_encrypted">
  179. <xts:encrypt>
  180. <xts:param name="provider">cognos.cam</xts:param>
  181. <xts:param name="source">
  182. <xsl:choose>
  183. <xsl:when test="/root/env/param[@name='m_cube_password' and @format='encrypted']">
  184. <xts:transform name="XMLEncode">
  185. <xts:decrypt>
  186. <xts:param name="encode">xml</xts:param>
  187. <xts:param name="provider">cognos.cam</xts:param>
  188. <xts:param name="source"><xsl:value-of select="key('env-param','m_cube_password')"/></xts:param>
  189. </xts:decrypt>
  190. </xts:transform>
  191. </xsl:when>
  192. <xsl:otherwise><xsl:value-of select="xtsext:xmlencode(string(key('env-param','m_cube_password')))"/></xsl:otherwise>
  193. </xsl:choose>
  194. </xts:param>
  195. </xts:encrypt>
  196. </param>
  197. </xts:append>
  198. </xsl:if>
  199. </xsl:if>
  200. <xts:delete select="/root/env/param[@name='m_cube_password' or @name='m_cube_confirm_password' or @name='m_signon_password' or @name='m_signon_confirm_password']"/>
  201. </xts:sequence>
  202. </xsl:template>
  203. <dcx:genCredentialTemplate/>
  204. </xsl:stylesheet>
  205. </xts:block>
  206. <!--
  207. ================================================================================
  208. get_content
  209. If there is no 'signon_data' parameter, get the necessary properties from CM,
  210. otherwise the signon_data value is 'web64decoded'.
  211. ================================================================================
  212. -->
  213. <xts:block id="get_content" type="exec" mode="interpret" processor="XSLT" dependency="processResponse" condition=".[not(/root/mode='addEntries')]" mandatory="false">
  214. <xts:logicsheet path="logicsheets/buslogic.xslt"/>
  215. <xts:logicsheet path="logicsheets/cm-logic.xsl"/>
  216. <xsl:stylesheet version="1.0"
  217. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  218. xmlns:send="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/brl/1/"
  219. xmlns:cml="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/cml/1/"
  220. xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/"
  221. xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
  222. exclude-result-prefixes="xsl send cml cm xtsext">
  223. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  224. <xsl:variable name="query-values" select="/root/env/param"/>
  225. <xsl:template match="/">
  226. <xts:sequence>
  227. <xts:append>
  228. <xsl:choose>
  229. <xsl:when test="$query-values[@name = 'm_p_consumers']">
  230. <xsl:value-of select="xtsext:web64decode(xtsext:cafaction('sign_unwrap', string($query-values[@name='m_p_consumers'])), true())" disable-output-escaping="yes"/>
  231. </xsl:when>
  232. <xsl:otherwise>
  233. <content>
  234. <xts:transform src="transforms/CM/post-process.xslt" processor="XSLT">
  235. <send:request provider="cm">
  236. <xts:transform src="transforms/CM/pre-process.xslt" processor="XSLT">
  237. <query xmlns="http://developer.cognos.com/schemas/xts-cm/1/">
  238. <search>
  239. <xsl:value-of select="$query-values[@name = 'm_obj']"/>
  240. <xsl:text>[permission(&quot;read&quot;)]</xsl:text>
  241. </search>
  242. <properties>
  243. <cml:prop-signon/>
  244. </properties>
  245. <options>
  246. <refProps>
  247. <refProp refPropName="consumers">
  248. <properties>
  249. <property name="defaultName"/>
  250. <property name="defaultDescription"/>
  251. <property name="defaultScreenTip"/>
  252. <property name="searchPath"/>
  253. <property name="ancestors"/>
  254. <property name="userName"/>
  255. </properties>
  256. </refProp>
  257. <refProp refPropName="parent">
  258. <properties>
  259. <property name="connectionString"/>
  260. </properties>
  261. </refProp>
  262. </refProps>
  263. </options>
  264. </query>
  265. </xts:transform>
  266. </send:request>
  267. </xts:transform>
  268. </content>
  269. </xsl:otherwise>
  270. </xsl:choose>
  271. </xts:append>
  272. <xsl:if test="not(/root/env/param[@name='connectionString'])">
  273. <xts:append select="/root/env">
  274. <param name="connectionString"><xts:transform name="XMLEncode"><xts:queryValue select="/root/content/*[local-name()='queryResponse']/*/*[local-name()='parent']/*/*[local-name()='connectionString']"/></xts:transform></param>
  275. </xts:append>
  276. </xsl:if>
  277. <xts:delete select="/root/env/param[@name='pagerfromconsumers']"/>
  278. <xts:delete select="/root/env/param[@name='pagertoconsumers']"/>
  279. <xts:delete select="/root/env/param[@name='pagerfrom_dconsumers']"/>
  280. <xts:delete select="/root/env/param[@name='pagerto_dconsumers']"/>
  281. </xts:sequence>
  282. </xsl:template>
  283. </xsl:stylesheet>
  284. </xts:block>
  285. <!--
  286. ================================================================================
  287. decrypt_credentials
  288. Decrypts the credentials property of the signon in the decrypted-credentials
  289. node.
  290. ================================================================================
  291. -->
  292. <xts:block id="decrypt_credentials" dependency="get_content" type="exec" mode="interpret" processor="XSLT" mandatory="false" condition=".[not(/root/mode='addEntries') and /root/content]">
  293. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt" xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/">
  294. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  295. <xsl:variable name="xtscm" select="'http://developer.cognos.com/schemas/xts-cm/1/'"/>
  296. <xsl:template match="/">
  297. <xts:sequence>
  298. <xts:append select="/root/content/*[local-name()='queryResponse' and namespace-uri()='{$xtscm}']/*[local-name()='dataSourceSignon' and namespace-uri()='{$xtscm}']">
  299. <decrypted-credentials xmlns="http://developer.cognos.com/schemas/xts-cm/1/">
  300. <xts:decrypt>
  301. <xts:param name="provider">cognos.cam</xts:param>
  302. <xts:param name="source"><xsl:value-of select="substring-before(substring-after(xtsext:xmldecode( string(/root/content/cm:queryResponse/cm:dataSourceSignon/cm:credentials)), '&lt;encryptedValue&gt;'), '&lt;/encryptedValue&gt;')"/></xts:param>
  303. </xts:decrypt>
  304. </decrypted-credentials>
  305. </xts:append>
  306. </xts:sequence>
  307. </xsl:template>
  308. </xsl:stylesheet>
  309. </xts:block>
  310. <!--
  311. ================================================================================
  312. extract_userid
  313. Extracts the userid from the decrypted credentials.
  314. ================================================================================
  315. -->
  316. <xts:block id="extract_userid" type="exec" mode="interpret" dependency="decrypt_credentials" processor="XSLT" mandatory="false" condition=".[not(/root/mode='addEntries') and /root/content]">
  317. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt" xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/">
  318. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  319. <xsl:variable name="xtscm" select="'http://developer.cognos.com/schemas/xts-cm/1/'"/>
  320. <xsl:template match="/">
  321. <xts:sequence>
  322. <xsl:variable name="userid" select="xtsext:xmldecode(string(/root/content/cm:queryResponse/cm:dataSourceSignon/cm:decrypted-credentials/cm:credential/cm:username))"/>
  323. <xsl:variable name="pass" select="xtsext:xmldecode(string(/root/content/cm:queryResponse/cm:dataSourceSignon/cm:decrypted-credentials/cm:credential/cm:password))"/>
  324. <xts:delete select="/root/env/param[@name='m_signon_userid' or @name='pass_encrypted']"/>
  325. <xts:append select="/root/env">
  326. <param name="m_signon_userid"><xsl:value-of select="$userid"/></param>
  327. <param name="pass_encrypted">
  328. <xts:encrypt>
  329. <xts:param name="provider">cognos.cam</xts:param>
  330. <xts:param name="source"><xsl:value-of select="$pass"/></xts:param>
  331. </xts:encrypt>
  332. </param>
  333. </xts:append>
  334. <xts:delete select="/root/content/*[local-name()='queryResponse' and namespace-uri()='{$xtscm}']/*[local-name()='dataSourceSignon' and namespace-uri()='{$xtscm}']/*[local-name()='decrypted-credentials' and namespace-uri()='{$xtscm}']"/>
  335. </xts:sequence>
  336. </xsl:template>
  337. </xsl:stylesheet>
  338. </xts:block>
  339. <!--
  340. ================================================================================
  341. copy_content
  342. Copy the consumers from
  343. /root/content/cm:queryResponse/cm:dataSourceSignon/cm:consumers to /root/signon
  344. ================================================================================
  345. -->
  346. <xts:block id="copy_content" dependency="get_content extract_userid" type="exec" mode="interpret" processor="XML" mandatory="false" condition=".[not(/root/mode='addEntries') and /root/content]">
  347. <xts:sequence>
  348. <xts:append>
  349. <list>
  350. <xts:queryNode select="/root/content/*[local-name()='queryResponse' and namespace-uri()='http://developer.cognos.com/schemas/xts-cm/1/']/*[local-name()='dataSourceSignon' and namespace-uri()='http://developer.cognos.com/schemas/xts-cm/1/']/*[local-name()='consumers' and namespace-uri()='http://developer.cognos.com/schemas/xts-cm/1/']/*"/>
  351. </list>
  352. <permissions>
  353. <xts:queryValue select="/root/content/*[local-name()='queryResponse' and namespace-uri()='http://developer.cognos.com/schemas/xts-cm/1/']/*[local-name()='dataSourceSignon' and namespace-uri()='http://developer.cognos.com/schemas/xts-cm/1/']/*[local-name()='permissions' and namespace-uri()='http://developer.cognos.com/schemas/xts-cm/1/']"/>
  354. </permissions>
  355. </xts:append>
  356. <xts:delete select="/root/content"/>
  357. </xts:sequence>
  358. </xts:block>
  359. <!--
  360. ================================================================================
  361. execute_command
  362. Execute the operation: delete, additems_
  363. ================================================================================
  364. -->
  365. <xts:block id="execute_command" dependency="copy_content" type="exec" mode="interpret" processor="XSLT" condition=".[not(/root/mode='addEntries')]" mandatory="false">
  366. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/" xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt" xmlns:x="x">
  367. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  368. <xsl:variable name="query-values" select="/root/env/param"/>
  369. <xsl:variable name="xtscm" select="'http://developer.cognos.com/schemas/xts-cm/1/'"/>
  370. <xsl:variable name="op" select="$query-values[@name = 'listop']"/>
  371. <xsl:template match="/">
  372. <xsl:choose>
  373. <xsl:when test="$op = 'delete'">
  374. <xts:sequence>
  375. <!-- loop through selection params -->
  376. <xsl:for-each select="$query-values[starts-with(@name, 'pform_consumers_')]">
  377. <xsl:variable name="searchPath">
  378. <xsl:value-of select="."/>
  379. </xsl:variable>
  380. <xsl:choose>
  381. <xsl:when test="/root/list/*[*[local-name()='searchPath']=$searchPath][x:added]">
  382. <!-- Since this was a newly added entry, just remove from the list. -->
  383. <xts:delete select="/root/list/*[*[local-name()='searchPath']='{$searchPath}']"/>
  384. </xsl:when>
  385. <xsl:otherwise>
  386. <!-- For entries that were already in the list, simply append a deleted marker. -->
  387. <xts:append select="/root/list/*[*[local-name()='searchPath']='{$searchPath}']">
  388. <xsl:element name="x:deleted" namespace="x"/>
  389. </xts:append>
  390. </xsl:otherwise>
  391. </xsl:choose>
  392. </xsl:for-each>
  393. <xts:delete select="/root/env/param[starts-with(@name, 'pform_consumers_')]"/>
  394. </xts:sequence>
  395. </xsl:when>
  396. <xsl:when test="/root/newEntries">
  397. <xts:sequence>
  398. <xsl:variable name="appends">
  399. <xsl:for-each select="/root/newEntries/*">
  400. <xsl:variable name="searchPath" select="*[local-name()='searchPath']"/>
  401. <xsl:choose>
  402. <xsl:when test="not(*[local-name()='searchPath'] = /root/list/*/*[local-name()='searchPath'])">
  403. <xts:append select="/root/list">
  404. <xsl:element name="{local-name()}" namespace="http://developer.cognos.com/schemas/xts-cm/1/">
  405. <xsl:copy-of select="*"/>
  406. <x:added xmlns:x="x"/>
  407. </xsl:element>
  408. </xts:append>
  409. </xsl:when>
  410. <xsl:when test="/root/list/*[*[local-name()='searchPath'] = $searchPath]/x:deleted">
  411. <xts:delete select="/root/list/*[*[local-name()='searchPath']='{$searchPath}']/*[local-name() = 'deleted' and namespace-uri()='x']"/>
  412. </xsl:when>
  413. <xsl:otherwise>
  414. <xts:append select="/root">
  415. <duplicateEntry/>
  416. </xts:append>
  417. </xsl:otherwise>
  418. </xsl:choose>
  419. </xsl:for-each>
  420. </xsl:variable>
  421. <xsl:if test="$appends">
  422. <xts:sequence>
  423. <xsl:copy-of select="$appends"/>
  424. </xts:sequence>
  425. </xsl:if>
  426. </xts:sequence>
  427. </xsl:when>
  428. </xsl:choose>
  429. </xsl:template>
  430. </xsl:stylesheet>
  431. </xts:block>
  432. <!--
  433. ================================================================================
  434. encode_list
  435. Serialize the data (web64 encoded)
  436. ================================================================================
  437. -->
  438. <xts:block id="encode_list" dependency="execute_command" type="exec" mode="interpret" processor="XSLT" condition=".[not(/root/mode='addEntries')]" mandatory="false">
  439. <xts:logicsheet path="logicsheets/portal.xsl"/>
  440. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt" xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/" xmlns:pf="http://developer.cognos.com/schemas/xts/pf">
  441. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  442. <pf:serialize-xml/>
  443. <pf:variables/>
  444. <xsl:template match="/">
  445. <xts:sequence>
  446. <xts:delete select="/root/env/param[@name = 'm_p_consumers']"/>
  447. <xsl:variable name="markup">
  448. <xsl:apply-templates mode="markup" select="/root/list | /root/permissions"/>
  449. </xsl:variable>
  450. <xts:append select="/root/env">
  451. <param name="m_p_consumers">
  452. <xsl:value-of select="xtsext:cafaction( concat('sign_wrap_setpassportid_', $passport), xtsext:web64encode(string($markup), true()))"/>
  453. </param>
  454. </xts:append>
  455. </xts:sequence>
  456. </xsl:template>
  457. </xsl:stylesheet>
  458. </xts:block>
  459. <!--
  460. ===============================================================================================
  461. getObjects - get object class names
  462. ===============================================================================================
  463. -->
  464. <xts:block id="classNames" type="exec" mode="input" processor="XML" path="/portal/uiExtensions.xml">
  465. <xts:logicsheet path="/logicsheets/uiobjects/uiobjects_names.xslt"/>
  466. </xts:block>
  467. <!--
  468. ================================================================================
  469. render_page
  470. Render the HTML page
  471. ===============================================================================================
  472. -->
  473. <xts:block id="render_page" dependency="formlogic_init getTabs encode_list encrypt_credentials classNames" mode="output" processor="XSLT" type="exec" mimeType="text/html" condition=".[not(/root/mode='addEntries')]" mandatory="false">
  474. <!-- portal specific information -->
  475. <xts:logicsheet path="logicsheets/portal.xsl"/>
  476. <!-- Get the new theme framework. -->
  477. <xts:logicsheet path="logicsheets/presentation/dialog/framework.xsl"/>
  478. <xts:logicsheet path="logicsheets/presentation/layout.xsl"/>
  479. <xts:logicsheet path="logicsheets/presentation/dialog/presentation.xsl"/>
  480. <xts:logicsheet path="logicsheets/presentation/dialog/templates.xsl"/>
  481. <xts:logicsheet path="logicsheets/presentation/controls/framework.xsl"/>
  482. <xts:logicsheet path="logicsheets/presentation/controls/presentation.xsl"/>
  483. <xts:logicsheet path="logicsheets/presentation/dialog/confirm.xslt"/>
  484. <!-- apply the form logic -->
  485. <xts:logicsheet path="logicsheets/formlogic.xslt"/>
  486. <!-- Prevent the href from appearing in the status bar. -->
  487. <xts:logicsheet path="logicsheets/validation.xslt"/> <xts:logicsheet path="logicsheets/presentation/touch_up.xslt"/>
  488. <xsl:stylesheet version="1.0"
  489. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  490. xmlns:pf="http://developer.cognos.com/schemas/xts/pf"
  491. xmlns:lyt="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/layout/"
  492. xmlns:dp="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/presentation/"
  493. xmlns:df="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/framework/"
  494. xmlns:dt="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/templates/"
  495. xmlns:cp="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/controls/presentation/"
  496. xmlns:cf="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/controls/framework/"
  497. xmlns:dc="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/confirm/1/"
  498. xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/"
  499. xmlns:bus="http://developer.cognos.com/schemas/bibus/3/"
  500. xmlns:utml="http://developer.cognos.com/schemas/xts/logicsheet/xslt/formlogic/"
  501. xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
  502. xmlns:xts="http://developer.cognos.com/schemas/xts/"
  503. xmlns:x="x"
  504. exclude-result-prefixes="xsl lyt dp dc pf df cp cf cm utml xtsext x">
  505. <xsl:output method="html" version="1.0" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>
  506. <!-- current file name -->
  507. <xsl:variable name="mname" select="'properties_signon.xts'"/>
  508. <xsl:variable name="m_class" select="/root/env/param[@name = 'm_class']"/>
  509. <!-- add any theme variables -->
  510. <pf:variables/>
  511. <xsl:variable name="back-url" select="key('env-param','backURL')"/>
  512. <pf:gen-icon/>
  513. <!-- start the output -->
  514. <xsl:template match="root">
  515. <xsl:variable name="browserTitle">
  516. <xsl:choose>
  517. <xsl:when test="key('env-param','m_name')!= ''">
  518. <xts:string id="IDS_PROPERTIES_TITLE">
  519. <xts:param name="objectName"><span lang="{$contentLocale}"><xsl:value-of select="key('env-param','m_name')"/></span></xts:param>
  520. </xts:string>
  521. </xsl:when>
  522. <xsl:otherwise>
  523. <xts:string id="IDS_PROPERTIES"/>
  524. </xsl:otherwise>
  525. </xsl:choose>
  526. </xsl:variable>
  527. <!-- Page and title -->
  528. <xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html></xsl:text><dp:page longTitle="$browserTitle">
  529. <dp:meta>
  530. <!-- Standard meta tags -->
  531. <pf:meta/>
  532. </dp:meta>
  533. <dp:script>
  534. <!-- Help system -->
  535. <pf:help context="HID_DATA_SOURCES_SIGNON"/>
  536. <script language="JavaScript" src="{$webcontent}/{$app}/js/utilities.js"/>
  537. <dc:confirm-cancel/>
  538. <!-- Define selectall and deselectall functions.-->
  539. <dt:selectDeselectAll/>
  540. <script language="javascript">
  541. function init()
  542. {
  543. if (document.pform.controller_state)
  544. {
  545. document.pform.controller_state.value = '';
  546. }
  547. }
  548. </script>
  549. </dp:script>
  550. <xsl:variable name="canWrite" select="contains(/root/permissions,'write')"/>
  551. <xsl:variable name="canSetPolicy" select="contains(/root/permissions,'setPolicy')"/>
  552. <xsl:variable name="showOKCancel" select="$canWrite or $canSetPolicy"/>
  553. <utml:form name="pform" action="{$gateway}" method="post">
  554. <!-- Determine if this form is read-only. -->
  555. <utml:read-only>
  556. <xsl:choose>
  557. <xsl:when test="$canWrite">
  558. <xsl:text>false</xsl:text>
  559. </xsl:when>
  560. <xsl:otherwise>
  561. <xsl:text>true</xsl:text>
  562. </xsl:otherwise>
  563. </xsl:choose>
  564. </utml:read-only>
  565. <utml:input type="hidden" name="controller_state" value="" utml:update="false"/>
  566. <utml:input type="hidden" name="listop" value="" utml:update="false"/>
  567. <!-- Determine if the list of consumers has been changed. -->
  568. <utml:input type="hidden" name="changed_m_signon_consumers" utml:update="false">
  569. <utml:value>
  570. <xsl:choose>
  571. <xsl:when test="/root/list/*[x:added | x:deleted]">1</xsl:when>
  572. <xsl:otherwise>0</xsl:otherwise>
  573. </xsl:choose>
  574. </utml:value>
  575. </utml:input>
  576. <!-- Determine if the credentials have changed. -->
  577. <utml:input type="hidden" name="changed_m_p_credentials" utml:update="false">
  578. <utml:value>
  579. <xsl:choose>
  580. <xsl:when test="key('env-param','m_p_credentials')!=''">1</xsl:when>
  581. <xsl:otherwise>0</xsl:otherwise>
  582. </xsl:choose>
  583. </utml:value>
  584. </utml:input>
  585. <!-- Dialog header -->
  586. <dp:header useBackURL="not($showOKCancel)">
  587. <dp:title><xsl:copy-of select="$browserTitle"/></dp:title>
  588. </dp:header>
  589. <df:propertiesTabs select="signon">
  590. <df:hasSetPolicy><xsl:value-of select="$canSetPolicy"/></df:hasSetPolicy>
  591. </df:propertiesTabs>
  592. <!-- Tab description -->
  593. <dp:description>
  594. <xts:string id="IDS_PROP_SIGNON_INTRO"/>
  595. </dp:description>
  596. <lyt:layout style="1">
  597. <lyt:section>
  598. <xsl:if test="$canWrite">
  599. <dp:input>
  600. <dp:section1>
  601. <xts:string id="IDS_PROP_SIGNON_CREDENTIALS"/>
  602. </dp:section1>
  603. <dp:section2>
  604. <dp:link>
  605. <utml:a utml:op="stack-up">
  606. <utml:target><xsl:value-of select="concat($app,'/set_signons.xts')"/></utml:target>
  607. <xsl:text/><xts:string id="IDS_PROP_SIGNON_CREDENTIALS_LINK"/><xsl:text/>
  608. </utml:a>
  609. </dp:link>
  610. </dp:section2>
  611. </dp:input>
  612. </xsl:if>
  613. </lyt:section>
  614. <lyt:section>
  615. <cf:main-pager-section name="consumers" form="pform" width="100%" genDelete="yes">
  616. <cf:param name="item-path">/root/list/*[not(x:deleted or cm:searchPath='')]</cf:param>
  617. <cf:param name="target">concat(concat($app,'/'),$mname)</cf:param>
  618. <cf:param name="lines-per-page">
  619. <xsl:choose>
  620. <xsl:when test="key('session-param','linesPerPage')!=''">
  621. <xsl:value-of select="key('session-param','linesPerPage')"/>
  622. </xsl:when>
  623. <xsl:otherwise>
  624. <xsl:value-of select="/root/system/param[@name='defaultPortalPreferences']/pref[@name='lines']"/>
  625. </xsl:otherwise>
  626. </xsl:choose>
  627. </cf:param>
  628. <cf:param name="actions">
  629. <cp:action>
  630. <xsl:if test="$canWrite">
  631. <utml:a utml:op="maintain" utml:formName="pform">
  632. <utml:href>document.pform.controller_state.value='addEntries|navigate';</utml:href>
  633. <utml:target>
  634. <xsl:value-of select="concat($app, '/', $mname)"/>
  635. </utml:target>
  636. <xsl:text/><xts:string id="IDS_COMMAND_ADD"/><xsl:text/>
  637. </utml:a>
  638. </xsl:if>
  639. </cp:action>
  640. <cp:action>
  641. <xsl:if test="$canWrite">
  642. <utml:a href="javascript:document.pform.listop.value='delete';if(window.preDeleteconsumers)preDeleteconsumers('pform','pform_consumers_');">
  643. <utml:target>
  644. <xsl:value-of select="concat( $app, '/', $mname )"/>
  645. </utml:target>
  646. <xsl:text/><xts:string id="IDS_REMOVE"/><xsl:text/>
  647. </utml:a>
  648. </xsl:if>
  649. </cp:action>
  650. </cf:param>
  651. <cf:param name="rows">
  652. <cp:tableHeader>
  653. <cp:columnHeader width="16" toggleName="pform_consumers_" utml="utml" noLabel="true"/>
  654. <cp:columnHeader width="16"/>
  655. <cp:columnHeader width="100%">
  656. <!-- All of this is to align the header (...> Name) with the contents of the table-->
  657. <img height="5" width="1" border="0"><xsl:attribute name="src"><xsl:value-of select="$webcontent"/>/images/space.gif</xsl:attribute></img>
  658. <xsl:text/><xts:string id="IDS_PATH_INDICATOR"/><xsl:text>&#160;</xsl:text>
  659. <img height="5" width="1" border="0"><xsl:attribute name="src"><xsl:value-of select="$webcontent"/>/images/space.gif</xsl:attribute></img>
  660. <xsl:text/><xts:string id="IDS_NAME"/><xsl:text/>
  661. </cp:columnHeader>
  662. <cp:columnHeader width="100">
  663. <xts:string id="IDS_TYPE"/>
  664. </cp:columnHeader>
  665. </cp:tableHeader>
  666. <cp:tableContent>
  667. <xsl:variable name="entryLabel">
  668. <xsl:value-of select="cm:defaultName"/>
  669. <xsl:if test="cm:userName and not(cm:userName[@nil='true'])">
  670. <xsl:text> (</xsl:text>
  671. <xsl:value-of select="cm:userName"/>
  672. <xsl:text>)</xsl:text>
  673. </xsl:if>
  674. </xsl:variable>
  675. <cp:columnContent>
  676. <xsl:choose>
  677. <xsl:when test="$canWrite">
  678. <utml:input type="checkbox" utml:track="false">
  679. <xsl:attribute name="aria-label"><xts:string id="IDS_SELECTION_FOR_PAGER_ITEM" encode="html"><xts:param name="pagerItemName"><xsl:value-of select="$entryLabel"/></xts:param></xts:string></xsl:attribute>
  680. <utml:prefix>
  681. <xsl:text>pform_consumers_</xsl:text>
  682. </utml:prefix>
  683. <utml:name>
  684. <xsl:value-of select="position()"/>
  685. </utml:name>
  686. <utml:value>
  687. <xsl:value-of select="cm:searchPath"/>
  688. </utml:value>
  689. </utml:input>
  690. </xsl:when>
  691. <xsl:otherwise>&#160;</xsl:otherwise>
  692. </xsl:choose>
  693. </cp:columnContent>
  694. <cp:columnContent>
  695. <xsl:call-template name="gen-icon">
  696. <xsl:with-param name="showAction" select="false()"/>
  697. </xsl:call-template>
  698. </cp:columnContent>
  699. <cp:columnContent>
  700. <img width="20" height="16" align="absmiddle">
  701. <xsl:attribute name="alt">
  702. <cf:do-the-path-link>
  703. <cf:param name="familytree">cm:ancestors</cf:param>
  704. <cf:param name="familymember">cm:defaultName</cf:param>
  705. <cf:param name="onlyAncestors">true</cf:param>
  706. </cf:do-the-path-link>
  707. </xsl:attribute>
  708. <xsl:attribute name="src"><xsl:value-of select="concat($skin_images,'path.gif')"/></xsl:attribute>
  709. </img>
  710. <xsl:text>&#160;</xsl:text>
  711. <xsl:value-of select="$entryLabel"/>
  712. </cp:columnContent>
  713. <cp:columnContent>
  714. <xsl:variable name="objectClass"><xsl:value-of select="cm:objectClass"/></xsl:variable>
  715. <xsl:value-of select="/root/objectClass/class[@name=$objectClass]"/>
  716. </cp:columnContent>
  717. </cp:tableContent>
  718. </cf:param>
  719. </cf:main-pager-section>
  720. </lyt:section>
  721. </lyt:layout>
  722. <dp:footer>
  723. <xsl:choose>
  724. <xsl:when test="$showOKCancel">
  725. <df:button df:id="IDS_OK" utml:validate="true" df:style="submit"/>
  726. <xsl:choose>
  727. <xsl:when test="key('env-param', 'ps_nav_stack') and not(key('env-param', 'ps_nav_stack') = '') ">
  728. <df:button df:id="IDS_CANCEL" df:style="stack-down" onclick="{$dc-confirm-cancel}"/>
  729. </xsl:when>
  730. <xsl:otherwise>
  731. <df:button df:id="IDS_CANCEL" df:style="back-url" onclick="{$dc-confirm-cancel}"/>
  732. </xsl:otherwise>
  733. </xsl:choose>
  734. </xsl:when>
  735. <xsl:otherwise>
  736. <df:button df:id="IDS_CLOSE" df:style="back-url"/>
  737. </xsl:otherwise>
  738. </xsl:choose>
  739. </dp:footer>
  740. <!-- if the user tried to add a duplicate entry -->
  741. <script language="javascript">
  742. <xsl:if test="/root/duplicateEntry">
  743. <xsl:variable name="msg">
  744. <xts:string id="IDS_DUPLICATE_ENTRY" encode="javascript"/>
  745. </xsl:variable>
  746. window.alert('<xsl:value-of select="normalize-space($msg)"/>');
  747. </xsl:if>
  748. </script>
  749. </utml:form>
  750. </dp:page>
  751. </xsl:template>
  752. </xsl:stylesheet>
  753. </xts:block>
  754. <!--
  755. ================================================================================
  756. debug
  757. ================================================================================
  758. -->
  759. <xts:block id="debug" type="exec" mode="output" processor="XSLT" condition=".[/root/session/param[@name = 'debug'] = '1']" mandatory="false" mimeType="text/html" dependency="render_page processResponse">
  760. <!-- Get the debug logic sheet -->
  761. <xts:logicsheet path="logicsheets/debuglogic.xslt"/>
  762. <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">
  763. <xsl:output method="html" version="1.0" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>
  764. <xsl:template match="/">
  765. <dbg:dumpxml select="/root"/>
  766. </xsl:template>
  767. </xsl:stylesheet>
  768. </xts:block>
  769. </xts:morphlet>