settings.js 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  1. /*global console,ajaxurl,$,jQuery*/
  2. /**
  3. *
  4. */
  5. jQuery(function ($) {
  6. "use strict";
  7. if ($('input.mega-setting-responsive_breakpoint').val() == '0px') {
  8. $('.mega-tab-content-mobile_menu').addClass('mega-mobile-disabled');
  9. }
  10. $('input.mega-setting-responsive_breakpoint').on("keyup", function() {
  11. if ( $(this).val() == '0px' || $(this).val() == '0') {
  12. $('.mega-tab-content-mobile_menu').addClass('mega-mobile-disabled');
  13. } else {
  14. $('.mega-tab-content-mobile_menu').removeClass('mega-mobile-disabled');
  15. }
  16. });
  17. if ($('input[name="settings[disable_mobile_toggle]"]').is(":checked")) {
  18. $('.mega-tab-content-mobile_menu').addClass('mega-toggle-disabled');
  19. }
  20. $('input[name="settings[disable_mobile_toggle]"]').on("change", function() {
  21. if ( $(this).is(":checked")) {
  22. $('.mega-tab-content-mobile_menu').addClass('mega-toggle-disabled');
  23. } else {
  24. $('.mega-tab-content-mobile_menu').removeClass('mega-toggle-disabled');
  25. }
  26. });
  27. if ($('#codemirror').length) {
  28. var codeMirror = CodeMirror.fromTextArea(document.getElementById('codemirror'), {
  29. tabMode: 'indent',
  30. lineNumbers: true,
  31. lineWrapping: true,
  32. viewportMargin: Infinity,
  33. onChange: function(cm) {
  34. cm.save();
  35. }
  36. });
  37. }
  38. $('[data-tab="mega-tab-content-custom_styling"]').on('click', function() {
  39. setTimeout( function() {
  40. $('.mega-tab-content-custom_styling').find('.CodeMirror').each(function(key, value) {
  41. value.CodeMirror.refresh();
  42. });
  43. }, 160);
  44. });
  45. $(".mm_colorpicker").spectrum({
  46. preferredFormat: "rgb",
  47. showInput: true,
  48. showAlpha: true,
  49. clickoutFiresChange: true,
  50. showSelectionPalette: true,
  51. showPalette: true,
  52. palette: [ ],
  53. localStorageKey: "maxmegamenu.themeeditor",
  54. change: function(color) {
  55. if (color.getAlpha() === 0) {
  56. $(this).siblings('div.chosen-color').html('transparent');
  57. } else {
  58. $(this).siblings('div.chosen-color').html(color.toRgbString());
  59. }
  60. }
  61. });
  62. $(".mega-copy_color span").on('click', function() {
  63. var from = $(this).parent().parent().children(":first").find("input");
  64. var to = $(this).parent().parent().children(":last").find("input");
  65. $(to).spectrum("set", from.val());
  66. to.siblings('div.chosen-color').html(from.siblings('div.chosen-color').html());
  67. })
  68. $(".confirm").on("click", function() {
  69. return confirm(megamenu_settings.confirm);
  70. });
  71. $('#theme_selector').on('change', function () {
  72. var url = $(this).val();
  73. if (url) {
  74. window.location = url;
  75. }
  76. return false;
  77. });
  78. $('.mega-location-header').on("click", function(e) {
  79. if (e.target.nodeName.toLowerCase() != 'a') {
  80. $(this).parent().toggleClass('mega-closed').toggleClass('mega-open');
  81. $(this).siblings('.mega-inner').slideToggle();
  82. }
  83. });
  84. $('.icon_dropdown').select2({
  85. containerCssClass: 'tpx-select2-container select2-container-sm',
  86. dropdownCssClass: 'tpx-select2-drop',
  87. minimumResultsForSearch: -1,
  88. formatResult: function(icon) {
  89. return '<i class="' + $(icon.element).attr('data-class') + '"></i>';
  90. },
  91. formatSelection: function (icon) {
  92. return '<i class="' + $(icon.element).attr('data-class') + '"></i>';
  93. }
  94. });
  95. $('.mega-tab-content').each(function() {
  96. if (!$(this).hasClass('mega-tab-content-general')) {
  97. $(this).hide();
  98. }
  99. });
  100. $('.mega-tab').on("click", function() {
  101. var selected_tab = $(this);
  102. selected_tab.siblings().removeClass('nav-tab-active');
  103. selected_tab.addClass('nav-tab-active');
  104. var content_to_show = $(this).attr('data-tab');
  105. $('.mega-tab-content').hide();
  106. $('.' + content_to_show).show();
  107. });
  108. $(".theme_editor").on("submit", function(e) {
  109. e.preventDefault();
  110. $(".theme_result_message").remove();
  111. $(".spinner").css('visibility', 'visible').css('display', 'block');
  112. $("input#submit").attr('disabled', 'disabled');
  113. var memory_limit_link = $("<a>").attr('href', megamenu_settings.increase_memory_limit_url).html(megamenu_settings.increase_memory_limit_anchor_text);
  114. $.ajax({
  115. url:ajaxurl,
  116. async: true,
  117. data: $(this).serialize(),
  118. type: 'POST',
  119. success: function(message) {
  120. if (message.success == true) { //Theme saved successfully
  121. var success = $("<p>").addClass('saved theme_result_message');
  122. var icon = $("<span>").addClass('dashicons dashicons-yes');
  123. $('.megamenu_submit .mega_left').append(success.html(icon).append(message.data));
  124. } else if (message.success == false) { // Errors in scss
  125. var error = $("<p>").addClass('fail theme_result_message').html(megamenu_settings.theme_save_error + " ").append(megamenu_settings.theme_save_error_refresh).append("<br /><br />").append(message.data);
  126. $('.megamenu_submit').after(error);
  127. } else {
  128. if (message.indexOf("exhausted") >= 0) {
  129. var error = $("<p>").addClass('fail theme_result_message').html(megamenu_settings.theme_save_error + " ").append(megamenu_settings.theme_save_error_exhausted + " ").append(megamenu_settings.theme_save_error_memory_limit + " ").append(memory_limit_link).append("<br />").append(message);
  130. } else {
  131. var error = $("<p>").addClass('fail theme_result_message').html(megamenu_settings.theme_save_error + "<br />").append(message);
  132. }
  133. $('.megamenu_submit').after(error);
  134. }
  135. },
  136. error: function(message) {
  137. if(message.status == 500) { // 500 error with no response from server
  138. var error = $("<p>").addClass('fail theme_result_message').html(megamenu_settings.theme_save_error_500 + " ").append(megamenu_settings.theme_save_error_memory_limit + " ").append(memory_limit_link);
  139. } else {
  140. if (message.responseText == "-1") { // nonce check failed
  141. var error = $("<p>").addClass('fail theme_result_message').html(megamenu_settings.theme_save_error + " " + megamenu_settings.theme_save_error_nonce_failed );
  142. }
  143. }
  144. $('.megamenu_submit').after(error);
  145. },
  146. complete: function() {
  147. $(".spinner").hide();
  148. $("input#submit").removeAttr('disabled');
  149. }
  150. });
  151. });
  152. $(".theme_editor").on("change", function(e) {
  153. $(".theme_result_message").css('visibility', 'hidden');
  154. });;
  155. $('select#mega_css').on("change", function() {
  156. var select = $(this);
  157. var selected = $(this).val();
  158. select.next().children().hide();
  159. select.next().children('.' + selected).show();
  160. });
  161. // validate inputs once the user moves to the next setting
  162. $( window ).scroll(function() {
  163. $('.theme_editor input:focus').blur();
  164. });
  165. $('form.theme_editor label[data-validation]').each(function() {
  166. var label = $(this);
  167. var validation = label.attr('data-validation');
  168. var error_message = label.siblings( '.mega-validation-message-' + label.attr('class') );
  169. var input = $('input', label);
  170. input.on('blur', function() {
  171. var value = $(this).val();
  172. if (label.hasClass('mega-flyout_width') && value == 'auto') {
  173. label.removeClass('mega-error');
  174. label.siblings( '.mega-validation-message-' + label.attr('class') ).hide();
  175. return;
  176. }
  177. if ( ( validation == 'int' && Math.floor(value) != value )
  178. || ( validation == 'px' && ! ( value.substr(value.length - 2) == 'px' || value.substr(value.length - 2) == 'em' || value.substr(value.length - 2) == 'vh' || value.substr(value.length - 2) == 'vw' || value.substr(value.length - 2) == 'pt' || value.substr(value.length - 3) == 'rem' || value.substr(value.length - 1) == '%' ) && value != 0 )
  179. || ( validation == 'float' && ! $.isNumeric(value) ) ) {
  180. label.addClass('mega-error');
  181. error_message.show();
  182. } else {
  183. label.removeClass('mega-error');
  184. label.siblings( '.mega-validation-message-' + label.attr('class') ).hide();
  185. }
  186. });
  187. });
  188. });