selectValueUI.xts 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Licensed Materials - Property of IBM
  4. IBM Cognos Products: AGS
  5. (C) Copyright IBM Corp. 2005, 2019
  6. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7. -->
  8. <xts:morphlet version="1.0" xmlns:xts="http://developer.cognos.com/schemas/xts/" messageBase="messages/portal.xml,messages/AGS.xml,messages/portalRL.xml" requiredCapability="canUseEventStudio">
  9. <!--
  10. ================================================================================
  11. Page Renderer
  12. ================================================================================
  13. -->
  14. <xts:block id="page" type="exec" mode="output" processor="XSLT" mimeType="text/html">
  15. <!-- get the debug logic sheet -->
  16. <xts:logicsheet path="logicsheets/debuglogic.xslt"/>
  17. <!-- get the new theme stuff -->
  18. <xts:logicsheet path="logicsheets/portal.xsl"/>
  19. <xts:logicsheet path="logicsheets/presentation/dialog/framework.xsl"/>
  20. <xts:logicsheet path="logicsheets/presentation/dialog/presentation.xsl"/>
  21. <xts:logicsheet path="logicsheets/presentation/controls/framework.xsl"/>
  22. <xts:logicsheet path="logicsheets/presentation/controls/presentation.xsl"/>
  23. <xts:logicsheet path="logicsheets/presentation/layout.xsl"/>
  24. <!-- apply the form logic -->
  25. <xts:logicsheet path="logicsheets/formlogic.xslt"/>
  26. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xts="http://developer.cognos.com/schemas/xts/" xmlns:lyt="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/layout/" xmlns:pf="http://developer.cognos.com/schemas/xts/pf" xmlns:dp="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/presentation/" xmlns:df="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/framework/" xmlns:cp="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/controls/presentation/" xmlns:cf="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/controls/framework/" xmlns:dbg="http://developer.cognos.com/schemas/xts/logicsheets/xslt/debug/" xmlns:utml="http://developer.cognos.com/schemas/xts/logicsheet/xslt/formlogic/" xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt" exclude-result-prefixes="xsl xts lyt pf dp df cp cf dbg utml xtsext">
  27. <xsl:output method="html" version="1.0" encoding="UTF-8" indent="no"/>
  28. <!-- Global template variables -->
  29. <pf:variables/>
  30. <!-- start the output -->
  31. <xsl:template match="/root">
  32. <dp:page title="AGENT_STUDIO_WINDOW_TITLE">
  33. <link href="{$skin_root}/ags/ags.css" type="text/css" rel="stylesheet"/>
  34. <dp:script>
  35. <script type="text/javascript" src="../ags/util.js">//</script>
  36. <script type="text/javascript" src="../common/framework/ui/CUIStyle.js">//</script>
  37. <script type="text/javascript" src="../ags/CList.js"/>
  38. <script type="text/javascript">
  39. // get access to the configFrame - the parent window
  40. var cf = window.opener;
  41. // keep the items which launched the query - we should be able to run multiple
  42. // items - the items which have been selected in the tree.
  43. var items = null;
  44. // tracking and conversation we need to keep
  45. var tracking = null;
  46. var conversation = null;
  47. // we also have to persist globally the sort/filter/filter type
  48. var g_sSortOrder = null;
  49. var filter = null;
  50. var filter_type = null;
  51. var search_finished = true;
  52. // List objects
  53. var clistLeft ;
  54. var clistRight ;
  55. // define the callback function - response from worker thread
  56. var callbackFn = function(status)
  57. {
  58. if (status == cf.SV_PASSPORT || status == cf.SV_FAULT || status == cf.SV_CANCEL) {
  59. // we want to close the window
  60. closeDialog();
  61. }
  62. if (status == cf.SV_WORKING) {
  63. // show the working pane
  64. hideElement("buttonDiv");
  65. showElement("waitingDiv");
  66. }
  67. if(status == cf.SV_PROMPTING){
  68. if(window.blur)window.blur();
  69. }
  70. if(status == cf.SV_PROMPTING_FINISHED){
  71. if(window.focus)window.focus();
  72. }
  73. if (status == cf.SV_FINISHED) {
  74. // grab the conversation and the tracking
  75. conversation = cf.sv_conversation;
  76. tracking = cf.sv_tracking;
  77. // unable search
  78. search_finished = true;
  79. // we want to grab all the updated information and use it
  80. hideElement("waitingDiv");
  81. showElement("buttonDiv");
  82. // should be able to trial something rather quick
  83. updateValues(cf.sv_displayValues, cf.sv_useValues);
  84. // loop over the available secondary requests
  85. for (var i = 0; i &lt; cf.sv_secondaryRequests.length; i++) {
  86. // get the secondary request
  87. var secReq = cf.sv_secondaryRequests[i];
  88. if (secReq == "firstPage") {
  89. updateNavLink("navFirstPage",true);
  90. }
  91. if (secReq == "previousPage") {
  92. updateNavLink("navPreviousPage",true);
  93. }
  94. if (secReq == "nextPage") {
  95. updateNavLink("navNextPage",true);
  96. }
  97. if (secReq == "lastPage") {
  98. updateNavLink("navLastPage",true);
  99. }
  100. }
  101. }
  102. }
  103. function clistEqualityCheck(list, node) {
  104. var result = false;
  105. var items = list.getAllItems();
  106. for (var i=0; items &amp;&amp; i &lt; items.length;i++) {
  107. result = result || items[i].firstChild.nodeValue.localeCompare(node.nodeValue) == 0;
  108. }
  109. return result;
  110. }
  111. // init function - this will initiate the conversation_frame with the information it need to start up
  112. function init()
  113. {
  114. //Trakker bug 509781.0 - Netscape 7.2: 'Selected Value' page disappeared when click 'Move Selected Item Right' arrow button for validation
  115. if (cf.browserCheck.isFirefox() || cf.browserCheck.isIE()) {
  116. window.Onbeforeunload = closeDialog;
  117. }
  118. var uiStyle = new CUIStyle("SelValCList_li", "SelValCList_over", "SelValCList_selected", "", null);
  119. clistLeft = new CList("myCListLeft",false, "CList_ul",uiStyle);
  120. clistRight = new CList("myCListRight",false, "CList_ul",uiStyle);
  121. clistRight.setEqualityFunc(clistEqualityCheck);
  122. var divLeft = document.getElementById('selectValuesDivLeft');
  123. divLeft.className = "CList_hintText_inactive";
  124. // add the clistLeft on the page
  125. divLeft.appendChild(clistLeft.getListElement());
  126. var divRight = document.getElementById('selectValuesDivRight');
  127. divRight.className = "CList_hintText_inactive";
  128. // add the clistRight on the page
  129. divRight.appendChild(clistRight.getListElement());
  130. //assign the default sort order
  131. g_sSortOrder = getSortOrder();
  132. // save the single query item from the tree
  133. items = cf.metadataSelectedQueryItems();
  134. if (items.length == 1) {
  135. var dataItem = items[0];
  136. // send Query - no filter here though
  137. sendQuery(callbackFn, "runSpecification",dataItem);
  138. }
  139. }
  140. function closeDialog()
  141. {
  142. if (cf.doClosePopUp) {
  143. cf.doClosePopUp();
  144. }
  145. window.close();
  146. }
  147. // create the URL which starts the conversation
  148. function sendQuery(callbackFn, method, treeObj)
  149. {
  150. // update the nav links
  151. updateNavLink("navFirstPage",false);
  152. updateNavLink("navPreviousPage",false);
  153. updateNavLink("navNextPage",false);
  154. updateNavLink("navLastPage",false);
  155. // send the query
  156. cf.doSelectValuesRequest(callbackFn, method, treeObj, g_sSortOrder, filter, filter_type, tracking, conversation);
  157. }
  158. function doSecondaryRequest(method)
  159. {
  160. sendQuery(callbackFn, method, items[0]);
  161. }
  162. function updateValues(displayValues, useValues)
  163. {
  164. // get rid of the previous contents of the select
  165. clistLeft.removeAllNodes();
  166. // now put the new ones in
  167. for (var i = displayValues.length-1; i&gt;=0; i--) {
  168. // create a new option
  169. var node1 = document.createElement("div");
  170. // set some stuff into it - the value that we're going to see
  171. node1.setAttribute('useValue', useValues[i] );
  172. var dispVal = document.createTextNode(displayValues[i]);
  173. node1.appendChild(dispVal);
  174. // add it to the selection
  175. clistLeft.add(node1);
  176. }
  177. }
  178. // hide the element
  179. function hideElement(id)
  180. {
  181. document.getElementById(id).style.display="none";
  182. }
  183. // show the element
  184. function showElement(id)
  185. {
  186. if (cf.browserCheck.isIE5Up()) {
  187. document.getElementById(id).style.display="block";
  188. } else {
  189. document.getElementById(id).style.display="table";
  190. }
  191. }
  192. function updateNavLink(id, state)
  193. {
  194. if (state) {
  195. hideElement(id + "Inactive");
  196. showElement(id + "Active");
  197. } else {
  198. hideElement(id + "Active");
  199. showElement(id + "Inactive");
  200. }
  201. }
  202. function getSortOrder() {
  203. var v_sSortOrder;
  204. // sort out the sort order
  205. if (document.pform.sort_order[1].checked || document.pform.sort_order[2].checked) {
  206. if (document.pform.sort_order[1].checked) {
  207. v_sSortOrder = document.pform.sort_order[1].value;
  208. }
  209. if (document.pform.sort_order[2].checked) {
  210. v_sSortOrder = document.pform.sort_order[2].value;
  211. }
  212. }
  213. return v_sSortOrder;
  214. }
  215. function doSearch()
  216. {
  217. if (search_finished) {
  218. // initialize the values
  219. g_sSortOrder = getSortOrder();
  220. filter = null;
  221. filter_type = null;
  222. // filter out the filter
  223. if (document.pform.searchValue.value.length > 0) {
  224. filter = document.pform.searchValue.value;
  225. }
  226. // get the filter type
  227. if (document.pform.search_method[0].checked) {
  228. filter_type = document.pform.search_method[0].value;
  229. }
  230. if (document.pform.search_method[1].checked) {
  231. filter_type = document.pform.search_method[1].value;
  232. }
  233. if (document.pform.search_method[2].checked) {
  234. filter_type = document.pform.search_method[2].value;
  235. }
  236. // send Query - no filter here though - this is a brand new query as well - so have to clear out the tracking and conv
  237. tracking = null;
  238. conversation = null;
  239. // diable search
  240. search_finished = false;
  241. // send the query
  242. sendQuery(callbackFn, "runSpecification",items[0]);
  243. }
  244. }
  245. function addItem(selectElemRef, selectedElemRef, i)
  246. {
  247. // is this option already in the selected values
  248. if (!alreadySelected(selectElemRef.options[i].value)) {
  249. // add it into the selected options
  250. // create a new option
  251. var optionRef = document.createElement("option");
  252. // set the value in too
  253. optionRef.value = selectElemRef.options[i].value;
  254. if (cf.browserCheck.isIE5Up()) {
  255. // IE5 version - set some stuff into it
  256. optionRef.text = selectElemRef.options[i].text;
  257. selectedElemRef.add(optionRef);
  258. } else {
  259. // NS6 version - set some stuff into it
  260. optionRef.textContent = selectElemRef.options[i].textContent;
  261. selectedElemRef.add(optionRef, null);
  262. }
  263. }
  264. // unselect the option now
  265. selectElemRef.options[i].selected = false;
  266. }
  267. function addSelected()
  268. {
  269. var selectElemRef = clistLeft.getAllSelectedItems();
  270. addItems(selectElemRef);
  271. }
  272. function addAll()
  273. {
  274. var selectElemRef = clistLeft.getAllItems();
  275. addItems(selectElemRef);
  276. }
  277. function addItems(selectElemRef){
  278. // loop over all the selected items
  279. for (var i=selectElemRef.length-1; i &gt;-1 ; i--) {
  280. // move item i from select to selected
  281. if(!clistRight.containsItem(selectElemRef[i])) {
  282. var node1 = document.createElement("div");
  283. node1.setAttribute('useValue', selectElemRef[i].getAttribute('useValue') );
  284. var dispVal = document.createTextNode(selectElemRef[i].firstChild.nodeValue);
  285. node1.appendChild(dispVal);
  286. clistRight.add(node1);
  287. }
  288. }
  289. }
  290. function alreadySelected(value)
  291. {
  292. var alreadySelected = false;
  293. var selectedElemRef = clistRight.getAllItems();
  294. // loop over all the items
  295. for (var i=0; i &lt; selectedElemRef.length &amp;&amp; !alreadySelected; ++i) {
  296. alreadySelected = (selectedElemRef[i].value == value);
  297. }
  298. return alreadySelected;
  299. }
  300. function deleteSelected()
  301. {
  302. // get rid of the selected contents of the Right CLIST
  303. clistRight.removeSelected();
  304. }
  305. function insertSelected()
  306. {
  307. // how many are selected
  308. var num_selected = clistRight.size();
  309. if (num_selected > 0) {
  310. // the location of the result
  311. var insertString = "";
  312. // Put bracket for all values - single or multiple [bug: 564754.0]
  313. // if (num_selected == 1) {
  314. // insertString = clistRight.getAllItems()[0].getAttribute('useValue');
  315. // } else if (num_selected > 1) {
  316. insertString = generateMultipleInsert(clistRight.getAllItems());
  317. // }
  318. // get the target
  319. var target_id = null;
  320. var frameName = null;
  321. if (cf.browserCheck.isIE5Up()) {
  322. target_id = document.getElementById('target_id').value;
  323. frameName = document.getElementById('frameName').value;
  324. } else {
  325. target_id = document.getElementsByName('target_id')[0].value;
  326. frameName = document.getElementsByName('frameName')[0].value;
  327. }
  328. // update it
  329. window.opener.getFrame(frameName).droppy.updateDropZoneValue(insertString, target_id);
  330. }
  331. }
  332. function generateMultipleInsert(selectedElemRef)
  333. {
  334. // get the selected element
  335. var insertString = "(";
  336. var listSeparator = cf.cfgGet("listSeparator");
  337. var numInserted = 0;
  338. for (var i=0; i &lt; selectedElemRef.length; ++i) {
  339. // do we need to pre-pend with a separator
  340. if (numInserted > 0) {
  341. insertString += listSeparator;
  342. }
  343. // append the option value
  344. insertString += selectedElemRef[i].getAttribute('useValue');
  345. // up the number of inserts
  346. numInserted++;
  347. }
  348. // add the closing item
  349. insertString += ")";
  350. // return the result
  351. return insertString;
  352. }
  353. </script>
  354. </dp:script>
  355. <link href="{$skin_root}/ags/ags.css" type="text/css" rel="stylesheet"/>
  356. <utml:form name="pform" method="post" action="{$gateway}">
  357. <!-- need a couple of hidden inputs -->
  358. <utml:input type="hidden" name="target_id" id="target_id">
  359. <utml:value>
  360. <xsl:value-of select="/root/env/param[@name='target_id']"/>
  361. </utml:value>
  362. </utml:input>
  363. <utml:input type="hidden" name="frameName" id="frameName">
  364. <utml:value>
  365. <xsl:value-of select="/root/env/param[@name='frameName']"/>
  366. </utml:value>
  367. </utml:input>
  368. <!-- hack to specify that we need to build the run options -->
  369. <dp:header help="false">
  370. <dp:title>
  371. <xts:string id="DIALOG_SEARCH_TITLE"/>
  372. </dp:title>
  373. <dp:description>
  374. <xts:string id="DIALOG_SEARCH_DESCRIPTION"/>
  375. </dp:description>
  376. <dp:close>
  377. <a href="#" onclick="closeDialog();">
  378. <dp:closeMarker/>
  379. </a>
  380. </dp:close>
  381. </dp:header>
  382. <!-- do the body -->
  383. <lyt:layout style="1">
  384. <lyt:section>
  385. <dp:list>
  386. <dp:section>
  387. <dp:label>
  388. <xts:string id="DIALOG_SEARCH_HEADER"/>
  389. </dp:label>
  390. </dp:section>
  391. <dp:section>
  392. <dp:text>
  393. <input type="text" size="40" name="searchValue" id="searchValue"/>
  394. </dp:text>
  395. <dp:buttonGroup>
  396. <dp:button>
  397. <dp:defaultKey>active</dp:defaultKey>
  398. <dp:defaultAct>doSearch();</dp:defaultAct>
  399. <a href="#" onclick="doSearch();">
  400. <dp:buttonText>
  401. <xts:string id="DIALOG_SEARCH_BUTTON"/>
  402. </dp:buttonText>
  403. <dp:buttonImage name="imgSearch">{$image_root}action_search.gif</dp:buttonImage>
  404. </a>
  405. </dp:button>
  406. </dp:buttonGroup>
  407. </dp:section>
  408. </dp:list>
  409. <!-- do the advanced search features -->
  410. <dp:box>
  411. <dp:boxSection valign="top" height="100%">
  412. <dp:list>
  413. <dp:section>
  414. <dp:label>
  415. <xts:string id="DIALOG_SEARCH_FILTER"/>
  416. </dp:label>
  417. </dp:section>
  418. <dp:section>
  419. <dp:choice>
  420. <utml:radio-group name="search_method">
  421. <utml:default-value>contains</utml:default-value>
  422. <dp:section1>
  423. <utml:input type="radio">
  424. <utml:value>
  425. <xsl:text>contains</xsl:text>
  426. </utml:value>
  427. </utml:input>
  428. </dp:section1>
  429. <dp:section2>
  430. <span style="cursor:default">
  431. <xts:string id="DIALOG_SEARCH_FILTER_CONTAINS"/>
  432. </span>
  433. </dp:section2>
  434. <dp:section1>
  435. <utml:input type="radio">
  436. <utml:value>
  437. <xsl:text>starts-with</xsl:text>
  438. </utml:value>
  439. </utml:input>
  440. </dp:section1>
  441. <dp:section2>
  442. <span style="cursor:default">
  443. <xts:string id="DIALOG_SEARCH_FILTER_STARTS_WITH"/>
  444. </span>
  445. </dp:section2>
  446. <dp:section1>
  447. <utml:input type="radio">
  448. <utml:value>
  449. <xsl:text>equals</xsl:text>
  450. </utml:value>
  451. </utml:input>
  452. </dp:section1>
  453. <dp:section2>
  454. <span style="cursor:default">
  455. <xts:string id="DIALOG_SEARCH_FILTER_EQUALS"/>
  456. </span>
  457. </dp:section2>
  458. </utml:radio-group>
  459. </dp:choice>
  460. </dp:section>
  461. </dp:list>
  462. </dp:boxSection>
  463. <dp:boxSection valign="top" height="100%">
  464. <dp:list>
  465. <dp:section>
  466. <dp:label>
  467. <xts:string id="DIALOG_SEARCH_SORT_ORDER"/>
  468. </dp:label>
  469. </dp:section>
  470. <dp:section>
  471. <dp:choice>
  472. <utml:radio-group name="sort_order">
  473. <utml:default-value>ascending</utml:default-value>
  474. <dp:section1>
  475. <utml:input type="radio" onclick="document.pform.sort_order[0].checked=true">
  476. <utml:value>
  477. <xsl:text>none</xsl:text>
  478. </utml:value>
  479. </utml:input>
  480. </dp:section1>
  481. <dp:section2>
  482. <span style="cursor:default">
  483. <xts:string id="DIALOG_SEARCH_SORT_ORDER_NO_SORT"/>
  484. </span>
  485. </dp:section2>
  486. <dp:section1>
  487. <utml:input type="radio" onclick="document.pform.sort_order[1].checked=true">
  488. <utml:value>
  489. <xsl:text>ascending</xsl:text>
  490. </utml:value>
  491. </utml:input>
  492. </dp:section1>
  493. <dp:section2>
  494. <span style="cursor:default">
  495. <xts:string id="DIALOG_SEARCH_SORT_ORDER_ASCENDING"/>
  496. </span>
  497. </dp:section2>
  498. <dp:section1>
  499. <utml:input type="radio" onclick="document.pform.sort_order[2].checked=true">
  500. <utml:value>
  501. <xsl:text>descending</xsl:text>
  502. </utml:value>
  503. </utml:input>
  504. </dp:section1>
  505. <dp:section2>
  506. <span style="cursor:default">
  507. <xts:string id="DIALOG_SEARCH_SORT_ORDER_DESCENDING"/>
  508. </span>
  509. </dp:section2>
  510. </utml:radio-group>
  511. </dp:choice>
  512. </dp:section>
  513. </dp:list>
  514. </dp:boxSection>
  515. </dp:box>
  516. <!-- do the pick items selection boxes -->
  517. <dp:box>
  518. <dp:boxSection width="45%" valign="top" height="100%">
  519. <dp:list width="100%">
  520. <dp:section>
  521. <dp:label>
  522. <xts:string id="DIALOG_SEARCH_PICK_ITEMS"/>
  523. </dp:label>
  524. </dp:section>
  525. <dp:section>
  526. <div id="selectValuesDivLeft" style="width:170px;height:370px;border:2;border-style: inset; overflow:auto; "/>
  527. </dp:section>
  528. <dp:section>
  529. <table border="0" cellpadding="0" cellspacing="0">
  530. <tr>
  531. <td>
  532. <div id="navFirstPageActive" style="display:none">
  533. <a href="#" onclick="doSecondaryRequest('firstPage');">
  534. <img src="{$skin_root}/portal/images/control_btn_top.gif" border="0">
  535. <xsl:attribute name="alt"><xts:string id="DIALOG_SEARCH_FIRST_PAGE_ALT"/></xsl:attribute>
  536. </img>
  537. </a>
  538. </div>
  539. <div id="navFirstPageInactive">
  540. <img src="{$skin_root}/portal/images/control_btn_top_disabled.gif" border="0">
  541. <xsl:attribute name="alt"><xts:string id="DIALOG_SEARCH_FIRST_PAGE_ALT"/></xsl:attribute>
  542. </img>
  543. </div>
  544. </td>
  545. <td>
  546. <div id="navPreviousPageActive" style="display:none">
  547. <a href="#" onclick="doSecondaryRequest('previousPage');">
  548. <img src="{$skin_root}/portal/images/control_btn_pageup.gif" border="0">
  549. <xsl:attribute name="alt"><xts:string id="DIALOG_SEARCH_PREVIOUS_PAGE_ALT"/></xsl:attribute>
  550. </img>
  551. </a>
  552. </div>
  553. <div id="navPreviousPageInactive">
  554. <img src="{$skin_root}/portal/images/control_btn_pageup_disabled.gif" border="0">
  555. <xsl:attribute name="alt"><xts:string id="DIALOG_SEARCH_PREVIOUS_PAGE_ALT"/></xsl:attribute>
  556. </img>
  557. </div>
  558. </td>
  559. <td>
  560. <div id="navNextPageActive" style="display:none">
  561. <a href="#" onclick="doSecondaryRequest('nextPage');">
  562. <img src="{$skin_root}/portal/images/control_btn_pagedown.gif" border="0">
  563. <xsl:attribute name="alt"><xts:string id="DIALOG_SEARCH_NEXT_PAGE_ALT"/></xsl:attribute>
  564. </img>
  565. </a>
  566. </div>
  567. <div id="navNextPageInactive">
  568. <img src="{$skin_root}/portal/images/control_btn_pagedown_disabled.gif" border="0">
  569. <xsl:attribute name="alt"><xts:string id="DIALOG_SEARCH_NEXT_PAGE_ALT"/></xsl:attribute>
  570. </img>
  571. </div>
  572. </td>
  573. <td>
  574. <div id="navLastPageActive" style="display:none">
  575. <a href="#" onclick="doSecondaryRequest('lastPage');">
  576. <img src="{$skin_root}/portal/images/control_btn_bottom.gif" border="0">
  577. <xsl:attribute name="alt"><xts:string id="DIALOG_SEARCH_LAST_PAGE_ALT"/></xsl:attribute>
  578. </img>
  579. </a>
  580. </div>
  581. <div id="navLastPageInactive">
  582. <img src="{$skin_root}/portal/images/control_btn_bottom_disabled.gif" border="0">
  583. <xsl:attribute name="alt"><xts:string id="DIALOG_SEARCH_LAST_PAGE_ALT"/></xsl:attribute>
  584. </img>
  585. </div>
  586. </td>
  587. </tr>
  588. </table>
  589. </dp:section>
  590. </dp:list>
  591. </dp:boxSection>
  592. <dp:boxSection width="10%" align="center" valign="middle" height="100%">
  593. <div id="waitingDiv" border="1">
  594. <table width="112" align="center" cellspacing="0" cellpadding="0" style="vertical-align:middle; border:1px outset;">
  595. <tr align="center">
  596. <td align="center">
  597. <img src="{$skin_root}/branding/progress.gif" style="margin:5px;" width="48" height="48"/>
  598. </td>
  599. </tr>
  600. <tr>
  601. <td align="center" nowrap="nowrap" class="formText">
  602. <xts:string id="SELECT_VALUES_WAIT"/>
  603. </td>
  604. </tr>
  605. <tr>
  606. <td colspan="2">
  607. <img src="../common/images/spacer.gif" height="10" width="20"/>
  608. </td>
  609. </tr>
  610. </table>
  611. </div>
  612. <div id="buttonDiv" style="display:none">
  613. <dp:columnButtonGroup align="center">
  614. <dp:columnButton>
  615. <xsl:variable name="moveItemRightToolTip">
  616. <xsl:text><xts:string id="DIALOG_MOVE_ITEM_RIGHT_TOOL_TIP"/></xsl:text>
  617. </xsl:variable>
  618. <df:button df:style="href" df:href="#" onclick="addSelected();" title="{$moveItemRightToolTip}">
  619. <df:image>../ags/images/tree/insert.gif</df:image>
  620. </df:button>
  621. </dp:columnButton>
  622. <dp:columnButton>
  623. <xsl:variable name="moveAllRightToolTip">
  624. <xsl:text><xts:string id="DIALOG_MOVE_ALL_RIGHT_TOOL_TIP"/></xsl:text>
  625. </xsl:variable>
  626. <df:button df:style="href" df:href="#" onclick="addAll();" title="{$moveAllRightToolTip}">
  627. <df:image>../ps/portal/images/move_all_right.gif</df:image>
  628. </df:button>
  629. </dp:columnButton>
  630. </dp:columnButtonGroup>
  631. </div>
  632. </dp:boxSection>
  633. <dp:boxSection width="45%" valign="top" height="100%">
  634. <dp:list width="100%">
  635. <dp:section>
  636. <dp:label>
  637. <xts:string id="DIALOG_SEARCH_SELECTED_ITEMS"/>
  638. </dp:label>
  639. </dp:section>
  640. <dp:section>
  641. <div id="selectValuesDivRight" style="width:170px;height:377px;border:2;border-style: inset; overflow:auto; "/>
  642. </dp:section>
  643. <dp:section>
  644. <table>
  645. <tr>
  646. <td>
  647. <a href="#" onclick="deleteSelected();">
  648. <img src="{$skin_root}/portal/images/action_delete_module.gif" border="0">
  649. <xsl:attribute name="alt"><xts:string id="DIALOG_SEARCH_REMOVE_SELECTED"/></xsl:attribute>
  650. </img>
  651. </a>
  652. </td>
  653. </tr>
  654. </table>
  655. </dp:section>
  656. </dp:list>
  657. </dp:boxSection>
  658. </dp:box>
  659. </lyt:section>
  660. </lyt:layout>
  661. <!-- footer -->
  662. <div style="_position: absolute; _top: 100%;vertical-align: bottom;">
  663. <div style="top: -100%;">
  664. <dp:footer style="width:100%">
  665. <df:button df:id="IDS_OK" df:style="href" df:href="#" onclick="insertSelected();closeDialog();"/>
  666. <df:button df:id="IDS_CANCEL" df:style="href" df:href="#" onclick="closeDialog();"/>
  667. </dp:footer>
  668. </div>
  669. </div>
  670. </utml:form>
  671. </dp:page>
  672. </xsl:template>
  673. </xsl:stylesheet>
  674. </xts:block>
  675. <!-- =========================================================================================
  676. D E B U G B L O C K
  677. =========================================================================================
  678. -->
  679. <xts:block id="debug" type="exec" mode="output" processor="XSLT" condition=".[/root/session/param[@name = 'debug'] = '1']" mandatory="false" mimeType="text/html" dependency="page">
  680. <!-- Get the debug logicsheet. -->
  681. <xts:logicsheet path="logicsheets/debuglogic.xslt"/>
  682. <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">
  683. <xsl:output method="html" version="1.0" encoding="UTF-8" indent="no"/>
  684. <xsl:template match="/">
  685. <dbg:dumpxml select="/root"/>
  686. </xsl:template>
  687. </xsl:stylesheet>
  688. </xts:block>
  689. </xts:morphlet>