assets.cp.scripts.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. (function($) {
  2. $.fn.hasScrollBar = function() {
  3. return this.get(0).scrollHeight > this.get(0).clientHeight;
  4. }
  5. })(jQuery);
  6. function DetectBodyScroll() {
  7. var body = $('body');
  8. if($(body).hasScrollBar()) {
  9. $(body).removeClass('no-scroll');
  10. } else {
  11. $(body).addClass('no-scroll');
  12. }
  13. }
  14. function ModalSysMsg(title, html) {
  15. DetectBodyScroll();
  16. var dialog = $('#sys-modal-msg');
  17. $('#sysModalMsgLabel').text(title);
  18. $('#sysModalMsgBody').html(html);
  19. return dialog;
  20. }
  21. function ModalShowMsg(title, message) {
  22. var dialog = ModalSysMsg(title, message);
  23. dialog.modal('show');
  24. }
  25. function AjaxDone(data) {
  26. try {
  27. eval(data);
  28. } catch(e) {
  29. if(e instanceof SyntaxError) {
  30. console.log(data);
  31. ModalShowMsg('JavaScript Eval Error', e.message)
  32. }
  33. }
  34. }
  35. function AjaxFail() {
  36. console.log('Form send fail, page will be reloaded');
  37. window.location.reload(false);
  38. }
  39. function ActionUserSettings() {
  40. // Reset form to remove autocomplete
  41. $('form.form-user-settings')[0].reset();
  42. }
  43. function ActionSingOut() {
  44. $.ajax({
  45. type: "POST",
  46. url: '/cp/',
  47. data: {
  48. action: 'singout',
  49. }
  50. }).done(function(data) {
  51. AjaxDone(data)
  52. }).fail(function() {
  53. AjaxFail();
  54. });
  55. }
  56. $(document).ready(function() {
  57. // Fix body scroll
  58. $(window).resize(function() {
  59. DetectBodyScroll();
  60. });
  61. DetectBodyScroll();
  62. // Ajax forms
  63. $('form').each(function() {
  64. $(this).submit(function(e) {
  65. var form = $(this);
  66. if($(form).hasClass('loading')) {
  67. e.preventDefault();
  68. return;
  69. }
  70. $(form).addClass('loading');
  71. var button = $(this).find('button[type=submit]');
  72. $(button).addClass('progress-bar-striped').addClass('progress-bar-animated');
  73. $.ajax({
  74. type: "POST",
  75. url: form.attr('action'),
  76. data: form.serialize()
  77. }).done(function(data) {
  78. AjaxDone(data)
  79. }).fail(function() {
  80. AjaxFail();
  81. }).always(function() {
  82. $(form).removeClass('loading');
  83. $(button).removeClass('progress-bar-striped').removeClass('progress-bar-animated');
  84. });
  85. e.preventDefault();
  86. });
  87. });
  88. // Fix navbar bottstrap menu hover
  89. /*
  90. $('#navbarCollapse ul').each(function() {
  91. var ul = $(this);
  92. ul.find('li').mouseover(function() {
  93. if(ul.find('li.show').length > 0) {
  94. var li = $(this);
  95. ul.find('li').removeClass('show');
  96. ul.find('li div.dropdown-menu').removeClass('show');
  97. ul.find('li a[role=button]').attr('aria-expanded', false);
  98. li.addClass('show');
  99. li.find('div.dropdown-menu').addClass('show');
  100. li.find('a[role=button]:first').attr('aria-expanded', true);
  101. }
  102. });
  103. });
  104. */
  105. });