ui.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. /**
  2. * Shows one of the headers.
  3. *
  4. * @param header Header ID.
  5. * @param from Element clicked to open the header. It will be highlighted.
  6. */
  7. function showHeader(header, from){
  8. if(document.getElementById('header_' + header).style.display == 'block'){
  9. document.getElementById('header_' + header).style.display = 'none';
  10. from.style.backgroundColor = '#000000';
  11. }
  12. else{
  13. var headers = document.getElementsByClassName('secondary_header');
  14. for (var i = 0; i < headers.length; i ++)
  15. headers.item(i).style.display = 'none';
  16. var sections = document.getElementsByClassName('header_section');
  17. for (var j = 0; j < sections.length; j ++)
  18. sections.item(j).style.backgroundColor = '#000000';
  19. document.getElementById('header_' + header).style.display = 'block';
  20. from.style.backgroundColor = '#333333';
  21. }
  22. }
  23. /**
  24. * Shows a language tab.
  25. *
  26. * @param lang Two letter language code. 'es', 'en' or 'eu'.
  27. */
  28. function showLanguage(lang){
  29. switch (lang){
  30. case 'es':
  31. document.getElementById('content_lang_es').style.display = 'block';
  32. document.getElementById('content_lang_eu').style.display = 'none';
  33. document.getElementById('content_lang_en').style.display = 'none';
  34. document.getElementById('lang_tab_es').classList.add("lang_tabs_active");
  35. document.getElementById('lang_tab_eu').classList.remove("lang_tabs_active");
  36. document.getElementById('lang_tab_en').classList.remove("lang_tabs_active");
  37. break;
  38. case 'eu':
  39. document.getElementById('content_lang_es').style.display = 'none';
  40. document.getElementById('content_lang_eu').style.display = 'block';
  41. document.getElementById('content_lang_en').style.display = 'none';
  42. document.getElementById('lang_tab_es').classList.remove("lang_tabs_active");
  43. document.getElementById('lang_tab_eu').classList.add("lang_tabs_active");
  44. document.getElementById('lang_tab_en').classList.remove("lang_tabs_active");
  45. break;
  46. case 'en':
  47. document.getElementById('content_lang_es').style.display = 'none';
  48. document.getElementById('content_lang_eu').style.display = 'none';
  49. document.getElementById('content_lang_en').style.display = 'block';
  50. document.getElementById('lang_tab_es').classList.remove("lang_tabs_active");
  51. document.getElementById('lang_tab_eu').classList.remove("lang_tabs_active");
  52. document.getElementById('lang_tab_en').classList.add("lang_tabs_active");
  53. }
  54. }
  55. function dialog(type, title, message, callback) {
  56. var dialogWindow = document.getElementById('dialog');
  57. var dialogText = document.getElementById('dialog_text');
  58. var dialogTitle = document.getElementById('dialog_title');
  59. var background = document.getElementById('dialog_background');
  60. var ynContainer = document.getElementById('dialog_button_yn_container');
  61. var aContainer = document.getElementById('dialog_button_a_container');
  62. var yButton = document.getElementById('dialog_yes');
  63. var nButton = document.getElementById('dialog_no');
  64. var aButton = document.getElementById('dialog_accept');
  65. function show(){
  66. dialogTitle.innerText = title;
  67. dialogText.innerHTML = message;
  68. dialogWindow.style.display = 'block';
  69. dialogWindow.style.opacity = '1';
  70. };
  71. function hide(){
  72. dialogWindow.style.display = 'none';
  73. dialogWindow.style.opacity = '0';
  74. };
  75. // Set up the dialog type
  76. if (type == "confirm"){
  77. ynContainer.style.display = "block";
  78. aContainer.style.display = "none";
  79. yButton.onclick = function() {
  80. hide();
  81. callback(true);
  82. }
  83. nButton.onclick = function() {
  84. hide();
  85. callback(false);
  86. }
  87. }
  88. else if (type == "alert"){
  89. ynContainer.style.display = "none";
  90. aContainer.style.display = "block";
  91. aButton.onclick = function() {
  92. hide();
  93. callback(true);
  94. };
  95. }
  96. show();
  97. }
  98. function enableEdit(button){
  99. var container = button.parentElement;
  100. var fieldResult = container.getElementsByClassName('field_result')[0];
  101. var fieldEditable = container.getElementsByClassName('field_editable')[0];
  102. var cke = container.getElementsByClassName('cke')[0];
  103. var buttonEdit = container.getElementsByClassName('button_edit')[0];
  104. var buttonSave = container.getElementsByClassName('button_save')[0];
  105. var buttonCancel = container.getElementsByClassName('button_cancel')[0];
  106. fieldEditable.value = fieldResult.innerHTML;
  107. fieldResult.style.display = 'none';
  108. if (typeof(cke) != 'undefined' && cke != null){
  109. cke.style.display = 'block';
  110. }
  111. else{
  112. fieldEditable.style.display = 'initial';
  113. }
  114. buttonEdit.style.display = 'none';
  115. buttonSave.style.display = 'initial';
  116. buttonCancel.style.display = 'initial';
  117. }
  118. function saveEdit(button, table, column, id){
  119. var container = button.parentElement;
  120. var fieldResult = container.getElementsByClassName('field_result')[0];
  121. var fieldEditable = container.getElementsByClassName('field_editable')[0];
  122. var cke = container.getElementsByClassName('cke')[0];
  123. var buttonEdit = container.getElementsByClassName('button_edit')[0];
  124. var buttonSave = container.getElementsByClassName('button_save')[0];
  125. var buttonCancel = container.getElementsByClassName('button_cancel')[0];
  126. var value;
  127. if (typeof(cke) != 'undefined' && cke != null){
  128. fieldEditable.innerHTML = CKEDITOR.instances['text_en'].getData()
  129. fieldResult.innerHTML = fieldEditable.innerHTML;
  130. value = escape(fieldEditable.innerHTML);
  131. }
  132. else{
  133. value = escape(fieldEditable.value);
  134. }
  135. // TODO: Do some validation.
  136. var xmlhttp;
  137. if (window.XMLHttpRequest){
  138. xmlhttp = new XMLHttpRequest();
  139. }
  140. xmlhttp.onreadystatechange=function(){
  141. if (xmlhttp.readyState == 4){
  142. if (xmlhttp.status == 200){
  143. if (typeof(cke) != 'undefined' && cke != null){
  144. cke.style.display = 'none';
  145. fieldEditable.innerHTML = CKEDITOR.instances['text_en'].getData()
  146. fieldResult.innerHTML = fieldEditable.innerHTML;
  147. }
  148. else{
  149. fieldEditable.style.display = 'none';
  150. fieldResult.innerHTML = fieldEditable.value;
  151. }
  152. fieldResult.style.display = 'initial';
  153. buttonEdit.style.display = 'initial';
  154. buttonSave.style.display = 'none';
  155. buttonCancel.style.display = 'none';
  156. }
  157. else{
  158. dialog("alert", "ERROR", "Error saving changes.", null);
  159. }
  160. }
  161. }
  162. xmlhttp.open("GET","/functions/save.php?t=" + table + "&c=" + column + "&v=" + value + "&i=" + id, true);
  163. xmlhttp.send();
  164. }
  165. function cancelEdit(button){
  166. var container = button.parentElement;
  167. var fieldResult = container.getElementsByClassName('field_result')[0];
  168. var fieldEditable = container.getElementsByClassName('field_editable')[0];
  169. var cke = container.getElementsByClassName('cke')[0];
  170. var buttonEdit = container.getElementsByClassName('button_edit')[0];
  171. var buttonSave = container.getElementsByClassName('button_save')[0];
  172. var buttonCancel = container.getElementsByClassName('button_cancel')[0];
  173. fieldEditable.value = fieldResult.innerHTML;
  174. fieldResult.style.display = 'initial';
  175. if (typeof(cke) != 'undefined' && cke != null){
  176. cke.style.display = 'none';
  177. }
  178. else{
  179. fieldEditable.style.display = 'none';
  180. }
  181. buttonEdit.style.display = 'initial';
  182. buttonSave.style.display = 'none';
  183. buttonCancel.style.display = 'none';
  184. }