languageselection.js 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. // Licensed Materials - Property of IBM
  2. //
  3. // IBM Cognos Products: cpscrn
  4. //
  5. // (C) Copyright IBM Corp. 2005, 2011
  6. //
  7. // US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  8. //
  9. //
  10. // Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
  11. // Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
  12. function processItem(cForm,lang,itemsArray,action,thefrag,pForm)
  13. {
  14. // Loop itemArray to create new hidden input items
  15. for (i=0; i < itemsArray.length; i++)
  16. {
  17. var item = itemsArray[i]+'-'+lang;
  18. switch(action)
  19. {
  20. case "create":
  21. {
  22. setHiddenItemValue(cForm,item,'');
  23. clearLangRemove(cForm, "removeLang", lang);
  24. setHiddenItemValue(cForm,cForm.name+'_changed','true');
  25. break;
  26. }
  27. case "remove":
  28. {
  29. setHiddenItemValue(cForm,item,'');
  30. setLangRemove(cForm, "removeLang", lang);
  31. setHiddenItemValue(cForm,cForm.name+'_changed','true');
  32. break;
  33. }
  34. }
  35. }
  36. }
  37. function setItemValue(cForm,item,sVal)
  38. {
  39. cForm.elements[item].value = sVal;
  40. }
  41. function getLanguageSelected(thefrag,sel)
  42. {
  43. var selector = $(thefrag + sel);
  44. return selector.options[selector.selectedIndex].value;
  45. }
  46. function setDisplayItem(cForm,thefrag,lang,itemsArray)
  47. {
  48. // Loop itemArray to set the display fields to the appropriate values
  49. for (i=0; i < itemsArray.length; i++)
  50. {
  51. displayItem = thefrag + itemsArray[i];
  52. if(lang != '')
  53. {
  54. var item = itemsArray[i]+'-'+lang;
  55. var fItem = cForm.elements[item];
  56. if(fItem)
  57. {
  58. setItemValue(cForm,displayItem,fItem.value);
  59. }
  60. document.getElementById(displayItem).disabled = false;
  61. }
  62. else
  63. {
  64. setItemValue(cForm,displayItem,lang);
  65. document.getElementById(displayItem).disabled = true;
  66. }
  67. }
  68. }
  69. function adjustSelection(thefrag,pForm,sel,itemsArray,action)
  70. {
  71. // Based on the create action, hidden fields will be created and display fields will be initialized to "" or if they already exist
  72. // the display fields will be populated with those values. The drop-down list is adjusted accordingly.
  73. // Based on the remove action, hidden fields are removed and the display fields and drop-down list adjusted accordingly.
  74. var cForm = _F_Form.find(thefrag + pForm);
  75. var selector = $(thefrag + sel);
  76. var curOption = selector.options[selector.selectedIndex];
  77. var selectedLang = curOption.value;
  78. switch(action)
  79. {
  80. case "remove": {
  81. if (selectedLang != "-")
  82. {
  83. var sep = null;
  84. for (i=0; i <= selector.options.length;i++) {
  85. if ( i != selector.options.length )
  86. {
  87. if (sep != null)
  88. {
  89. if (selector.options[i].text > curOption.text)
  90. {
  91. var insertPoint = selector.options[i];
  92. selector.removeChild(curOption);
  93. selector.insertBefore(curOption,insertPoint);
  94. break;
  95. }
  96. }
  97. else if (selector.options[i].value == "-")
  98. {
  99. sep = selector.options[i];
  100. }
  101. }
  102. else
  103. {
  104. selector.removeChild(curOption);
  105. selector.appendChild(curOption);
  106. break;
  107. }
  108. }
  109. processItem(cForm,selectedLang,itemsArray,action,thefrag,pForm);
  110. selector.options[0].selected=true;
  111. if (selector.options[0].value=="-")
  112. {
  113. setDisplayItem(cForm,thefrag,"",itemsArray);
  114. }
  115. else
  116. setDisplayItem(cForm,thefrag,selector.options[selector.selectedIndex].value,itemsArray);
  117. }
  118. break;
  119. }
  120. case "create": {
  121. var sep,i,j;
  122. var match=false;
  123. if(selectedLang == "-")
  124. {
  125. selector.options[0].selected=true;
  126. curOption = selector.options[0];
  127. selectedLang = curOption.value;
  128. }
  129. for (i=0; i<selector.options.length; i++)
  130. {
  131. if (selector.options[i].value == "-")
  132. {
  133. sep = selector.options[i];
  134. break;
  135. }
  136. }
  137. if (selector.selectedIndex > i)
  138. {
  139. processItem(cForm,selectedLang,itemsArray,action,thefrag,pForm);
  140. selector.removeChild(curOption);
  141. for (j=0; j<i; j++)
  142. {
  143. if (selector.options[j].text > curOption.text)
  144. {
  145. selector.insertBefore(curOption, selector.options[j]);
  146. selector.options[j].selected=true;
  147. match=true;
  148. break;
  149. }
  150. }
  151. if(!match)
  152. {
  153. selector.insertBefore(curOption, sep);
  154. selector.options[i].selected=true;
  155. }
  156. }
  157. if (selector.options[0].value!="-")
  158. {
  159. setDisplayItem(cForm,thefrag,selectedLang,itemsArray);
  160. }
  161. else
  162. {
  163. setDisplayItem(cForm,thefrag,"",itemsArray);
  164. }
  165. break;
  166. }
  167. default: {
  168. break;
  169. }
  170. }
  171. }
  172. function savelangitem(thefrag,pForm,sel,item)
  173. {
  174. // Populate the hidden fields will the values entered in those fields.
  175. var selectedLang = getLanguageSelected(thefrag,sel);
  176. var hItem = item.id.substr(thefrag.length) +'-'+ selectedLang;
  177. var cForm = _F_Form.find(thefrag + pForm);
  178. setHiddenItemValue(cForm,hItem,item.value);
  179. }
  180. function setLangRemove(cForm,itemId,lang)
  181. {
  182. var delimitedLang = lang + ";";
  183. rElement = cForm.elements["removeLang"];
  184. if(typeof rElement == 'undefined' || rElement == null)
  185. {
  186. rElement = setHiddenItemValue(cForm,"removeLang",'');
  187. }
  188. if( rElement.value.indexOf(delimitedLang) == -1 )
  189. {
  190. rElement.value += delimitedLang;
  191. }
  192. }
  193. function clearLangRemove(cForm,itemId,lang)
  194. {
  195. var delimitedLang = lang + ";";
  196. rElement = cForm.elements[itemId];
  197. if(typeof rElement == 'undefined' || rElement == null)
  198. {
  199. rElement = setHiddenItemValue(cForm,itemId,'');
  200. }
  201. else
  202. {
  203. var sval = rElement.value;
  204. var sidx = sval.indexOf(delimitedLang);
  205. if( sidx > -1 )
  206. {
  207. var zval = sval.substr(sidx + delimitedLang.length);
  208. if( sidx == 0 )
  209. rElement.value = zval;
  210. else
  211. {
  212. var aval = sval.substring(0,sidx);
  213. rElement.value = aval + zval;
  214. }
  215. }
  216. }
  217. }
  218. function validateMultiLingualProperty(selectorName, propertyName, formName, theFrag, fragInst, itemList)
  219. {
  220. var cForm = _F_Form.find(theFrag + formName);
  221. var selector = $(theFrag + selectorName);
  222. var returnCode = 0;
  223. for (var index=0;index < selector.options.length;index++)
  224. {
  225. var currentOption = selector.options[index];
  226. if (currentOption.value == '-')
  227. break;
  228. var languageSpecificPropertyName = propertyName + "-" + currentOption.value;
  229. var currentLanguageItem = cForm.elements[languageSpecificPropertyName];
  230. //in the case there is no currentLanguage item this means that the drop down has
  231. //defaulted and no value has been typed in so no need to validate
  232. if (currentLanguageItem == null)
  233. return CValidator.RES_VALID
  234. var res = fragInst.validate(languageSpecificPropertyName, currentLanguageItem.value);
  235. returnCode = res;
  236. if (res != CValidator.RES_VALID)
  237. {
  238. currentOption.selected=true;
  239. adjustSelection(theFrag,formName,selectorName,itemList,"create");
  240. return res;
  241. }
  242. }
  243. return returnCode;
  244. }