v1.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. window.closeCustomPopupMenu = function()
  2. {
  3. $('#formSettingBtn-toggle.with-popover-show').trigger('click');
  4. }
  5. window.cancelFormSetting = function(e)
  6. {
  7. $.get($(e.target).closest('button').data('url'), function(data)
  8. {
  9. if(data)
  10. {
  11. e.target.closest('form').querySelectorAll('input').forEach(function(field)
  12. {
  13. const checked = `,${data},`.indexOf(`,${$(field).val()},`) >=0;
  14. $(field).prop('checked', checked);
  15. });
  16. }
  17. });
  18. closeCustomPopupMenu(e);
  19. }
  20. window.revertDefaultFields = function(e)
  21. {
  22. const $panel = $(e.target).closest('.panel-form');
  23. const $form = $(e.target).closest('form');
  24. const $globalBox = $panel.find('.form-actions input[name=global]');
  25. const submitUrl = $(e.target).closest('button').data('url');
  26. postData = new FormData();
  27. postData.append('action', 'reset');
  28. if($globalBox.length > 0) postData.append('global', $globalBox.prop('checked') ? '1' : '0');
  29. $.post(submitUrl, postData, function(response)
  30. {
  31. response = JSON.parse(response);
  32. const customFields = response.customFields.split(',');
  33. const showFields = response.showFields.split(',');
  34. customFields.forEach(function(field)
  35. {
  36. if(!field) return true;
  37. var $fieldCheckbox = $(e.target).closest('#formSettingBtn').find('input[type=checkbox][value="' + field + '"]');
  38. if($fieldCheckbox.length == 0) return false;
  39. $fieldCheckbox.prop('checked', showFields.includes(field));
  40. });
  41. hideAndShowFormFields(customFields, showFields);
  42. closeCustomPopupMenu(e);
  43. });
  44. }
  45. window.onSubmitFormtSetting = function(e)
  46. {
  47. const customFields = [];
  48. const showFields = [];
  49. const $panel = $(e.target).closest('.panel-form');
  50. const $form = $(e.target).closest('form');
  51. const $globalBox = $panel.find('.form-actions input[name=global]');
  52. postData = new FormData($form[0]);
  53. if($globalBox.length > 0) postData.append('global', $globalBox.prop('checked') ? '1' : '0');
  54. $.post($form.attr('action'), postData, function()
  55. {
  56. $form.find('input[type="checkbox"]').each(function()
  57. {
  58. /* Gather all custom fields. */
  59. $field = $(this);
  60. customFields.push($field.val());
  61. if($field.val() === 'source') customFields.push('sourceNote');
  62. if(!$field.prop('checked')) return;
  63. /* Gather checked fields to be visible. */
  64. showFields.push($field.val());
  65. if($field.val() === 'source') showFields.push('sourceNote');
  66. });
  67. hideAndShowFormFields(customFields, showFields);
  68. closeCustomPopupMenu(e);
  69. });
  70. }
  71. function hideAndShowFormFields(customFields, showFields)
  72. {
  73. if(typeof formBatch == 'undefined' || !formBatch) return toggleSingleField(customFields, showFields);
  74. if(typeof formBatch != 'undefined' && formBatch) return toggleBatchField(customFields, showFields);
  75. }
  76. function toggleSingleField(customFields, showFields)
  77. {
  78. if(typeof customFields == 'undefined') return false;
  79. customFields.forEach(function(field)
  80. {
  81. let $field = $('form [name^="' + field + '"]');
  82. if($field.length == 0) return;
  83. let hidden = !showFields.includes(field);
  84. let $formRow = $field.closest('.form-row');
  85. let $formGroup = $field.closest('.form-group');
  86. let $inputGroup = $field.closest('.input-group');
  87. let $inputControl = $field.closest('.input-control');
  88. if($inputGroup.length == 1)
  89. {
  90. $prev = $field.prev();
  91. if($prev.hasClass('input-group-addon')) $prev.toggleClass('hidden', hidden);
  92. $field.toggleClass('hidden', hidden);
  93. if($field.hasClass('pick-value'))
  94. {
  95. $pickBox = $field.closest('.pick').parent();
  96. $pickBox.toggleClass('hidden', hidden);
  97. $prev = $pickBox.prev();
  98. if($prev.hasClass('input-group-addon')) $prev.toggleClass('hidden', hidden);
  99. $next = $pickBox.next();
  100. if($next.hasClass('input-group-addon')) $next.toggleClass('hidden', hidden);
  101. }
  102. if($inputControl.length == 1)
  103. {
  104. if($inputControl.hasClass('has-suffix'))
  105. {
  106. if($inputControl.prev().hasClass('input-group-addon')) $inputControl.prev().toggleClass('hidden', hidden);
  107. $inputControl.toggleClass('hidden', hidden);
  108. }
  109. }
  110. if($inputGroup.prev().hasClass('form-label')) $inputGroup.prev().toggleClass('hidden', hidden);
  111. $inputGroup.toggleClass('hidden', $inputGroup.children().length == $inputGroup.children('.hidden').length);
  112. $formGroup.toggleClass('hidden', $formGroup.children().length == $formGroup.children('.hidden').length);
  113. }
  114. else
  115. {
  116. $formGroup.toggleClass('hidden', hidden);
  117. }
  118. $formRow.toggleClass('hidden', $formRow.children().length == $formRow.children('.hidden').length);
  119. });
  120. }
  121. function toggleBatchField(customFields, showFields)
  122. {
  123. if(typeof customFields == 'undefined') return false;
  124. let hiddenFields = [];
  125. let shownFields = [];
  126. customFields.forEach(function(field)
  127. {
  128. if($('th.form-batch-head[data-name="' + field + '"]').length == 0) return true;
  129. let hidden = !showFields.includes(field);
  130. $('th.form-batch-head[data-name="' + field + '"]').toggleClass('hidden', hidden);
  131. $('td.form-batch-control[data-name="' + field + '"]').toggleClass('hidden', hidden);
  132. if(field === 'story' && config.currentMethod == 'batchcreate')
  133. {
  134. $('th.form-batch-head[data-name="preview"], th.form-batch-head[data-name="copyStory"]').toggleClass('hidden', hidden);
  135. $('td.form-batch-control[data-name="preview"], td.form-batch-control[data-name="copyStory"]').toggleClass('hidden', hidden);
  136. }
  137. $($('template.form-batch-template')[0].content).find('td.form-batch-control[data-name="' + field + '"]').toggleClass('hidden', hidden);
  138. if(field === 'source')
  139. {
  140. $('th.form-batch-head[data-name="sourceNote"]').toggleClass('hidden', hidden);
  141. $('td.form-batch-control[data-name="sourceNote"]').toggleClass('hidden', hidden);
  142. $($('template.form-batch-template')[0].content).find('td.form-batch-control[data-name="sourceNote"]').toggleClass('hidden', hidden);
  143. }
  144. hidden ? hiddenFields.push(field) : shownFields.push(field);
  145. if(field === 'source') hidden ? hiddenFields.push('sourceNote') : shownFields.push('sourceNote');
  146. });
  147. batchForm = $('th.form-batch-head').closest('.form-batch').zui('batchForm');
  148. if(hiddenFields.length > 0) batchForm.toggleCols(hiddenFields, false);
  149. if(shownFields.length > 0) batchForm.toggleCols(shownFields, true);
  150. }