assets.cp.scripts.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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 ActionSingOut() {
  40. $.ajax({
  41. type: "POST",
  42. url: '/cp/',
  43. data: {
  44. action: 'singout',
  45. }
  46. }).done(function(data) {
  47. AjaxDone(data)
  48. }).fail(function() {
  49. AjaxFail();
  50. });
  51. }
  52. $(document).ready(function() {
  53. // Fix body scroll
  54. $(window).resize(function() {
  55. DetectBodyScroll();
  56. });
  57. DetectBodyScroll();
  58. // Ajax forms
  59. $('form').each(function() {
  60. $(this).submit(function(e) {
  61. var form = $(this);
  62. if($(form).hasClass('loading')) {
  63. e.preventDefault();
  64. return;
  65. }
  66. $(form).addClass('loading');
  67. var button = $(this).find('button[type=submit]');
  68. $(button).addClass('progress-bar-striped').addClass('progress-bar-animated');
  69. $.ajax({
  70. type: "POST",
  71. url: form.attr('action'),
  72. data: form.serialize()
  73. }).done(function(data) {
  74. AjaxDone(data)
  75. }).fail(function() {
  76. AjaxFail();
  77. }).always(function() {
  78. $(form).removeClass('loading');
  79. $(button).removeClass('progress-bar-striped').removeClass('progress-bar-animated');
  80. });
  81. e.preventDefault();
  82. });
  83. });
  84. // Fix navbar bottstrap menu hover
  85. /*
  86. $('#navbarCollapse ul').each(function() {
  87. var ul = $(this);
  88. ul.find('li').mouseover(function() {
  89. if(ul.find('li.show').length > 0) {
  90. var li = $(this);
  91. ul.find('li').removeClass('show');
  92. ul.find('li div.dropdown-menu').removeClass('show');
  93. ul.find('li a[role=button]').attr('aria-expanded', false);
  94. li.addClass('show');
  95. li.find('div.dropdown-menu').addClass('show');
  96. li.find('a[role=button]:first').attr('aria-expanded', true);
  97. }
  98. });
  99. });
  100. */
  101. });