assets.cp.scripts.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. $(document).ready(function() {
  26. // Fix body scroll
  27. $(window).resize(function() {
  28. DetectBodyScroll();
  29. });
  30. DetectBodyScroll();
  31. // Ajax forms
  32. $('form').each(function() {
  33. $(this).submit(function(e) {
  34. var form = $(this);
  35. if($(form).hasClass('loading')) {
  36. e.preventDefault();
  37. return;
  38. }
  39. $(form).addClass('loading');
  40. var button = $(this).find('button[type=submit]');
  41. $(button).addClass('progress-bar-striped').addClass('progress-bar-animated');
  42. $.ajax({
  43. type: "POST",
  44. url: form.attr('action'),
  45. data: form.serialize()
  46. }).done(function(data) {
  47. try {
  48. eval(data);
  49. } catch(e) {
  50. if(e instanceof SyntaxError) {
  51. console.log('JavaScript eval error:', e.message);
  52. console.log(data);
  53. }
  54. }
  55. }).fail(function() {
  56. console.log('Form send fail, page will be reloaded');
  57. window.location.reload(false);
  58. }).always(function() {
  59. $(form).removeClass('loading');
  60. $(button).removeClass('progress-bar-striped').removeClass('progress-bar-animated');
  61. });
  62. e.preventDefault();
  63. });
  64. });
  65. });