Guest User

Untitled

a guest
Oct 6th, 2018
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.77 KB | None | 0 0
  1. // lib/events.js
  2. // topnav ala bootstrap
  3.  
  4. // stores a reference to the modal dialog
  5. var m;
  6.  
  7. session.on('change', function (userCtx) {
  8.  
  9. if (!$('#session_menu').length) {
  10. $('#topnav .pull-right').append(
  11. '<li id="session_menu" class="dropdown"><li>'
  12. );
  13. }
  14. var el;
  15. if (userCtx.name) {
  16. el = $(
  17. '<li id="session_menu" class="dropdown">' +
  18. '<a class="dropdown-toggle">' +
  19. '<i class="icon-user"></i> ' + userCtx.name + ' ' +
  20. '<b class="icon-chevron-down"></b>' +
  21. '</a>' +
  22. '<ul class="dropdown-menu">' +
  23. '<li><a class="logout" href="#">Logout</a></li>' +
  24. '</ul>' +
  25. '</li>'
  26. );
  27. $('.dropdown-toggle', el).click(handleDropdown);
  28. $('.logout', el).click(function (ev) {
  29. ev.preventDefault();
  30. session.logout(function(err, resp) {
  31. location.href = dutils.getBaseURL();
  32. });
  33. return false;
  34. });
  35. }
  36. else {
  37. el = $(
  38. '<li id="session_menu">' +
  39. '<a class="login" href="#">Login</a>' +
  40. '</li>'
  41. );
  42.  
  43. if (m) {
  44. // clear previous modal dialog
  45. m.modal('hide');
  46. m.data('modal', null);
  47. m.remove();
  48. }
  49. m = $(templates.render("login_modal.html", {userCtx: userCtx}, {}));
  50.  
  51. var submitHandler = function(ev) {
  52. ev.preventDefault();
  53.  
  54. var username = $('#id_username', m).val();
  55. var password = $('#id_password', m).val();
  56.  
  57. $('.alert', m).remove();
  58. $('.help-inline', m).remove();
  59. $('.control-group', m).removeClass('error');
  60. $('.controls', m).show(); // sometimes these get hidden
  61.  
  62. var username_cg = $('#id_username').parents('.control-group');
  63. var password_cg = $('#id_password').parents('.control-group');
  64. var errors = false;
  65.  
  66. if (!username) {
  67. username_cg.addClass('error');
  68. $('#id_username').after(
  69. '<span class="help-inline">Required</span>'
  70. );
  71. errors = true;
  72. }
  73. if (!password) {
  74. password_cg.addClass('error');
  75. $('#id_password').after(
  76. '<span class="help-inline">Required</span>'
  77. );
  78. errors = true;
  79. }
  80. if (errors) {
  81. return false;
  82. }
  83.  
  84. session.login(username, password, function (err) {
  85. if (err) {
  86. var msg = err.toString();
  87. $('form', m).before(
  88. '<div class="alert alert-error">' + msg + '</div>'
  89. );
  90. }
  91. else {
  92. m.modal('hide');
  93. location.href = dutils.getBaseURL();
  94. }
  95. });
  96. return false;
  97. };
  98.  
  99. // this is broken for some reason, I suspect the bootstrap-modal
  100. // plugin is doing preventDefault on events inside the modal
  101. //$('form', m).submit(submitHandler);
  102.  
  103. // fake form submit event
  104. $('input', m).keyup(function (ev) {
  105. if (ev.keyCode === 13) {
  106. return submitHandler.apply(this, arguments);
  107. }
  108. });
  109.  
  110. $('.btn-primary', m).click(submitHandler);
  111. $('.btn-close', m).click(function () {
  112. m.modal('hide');
  113. });
  114.  
  115. $('.login', el).click(function (ev) {
  116. ev.preventDefault();
  117. m.modal('show');
  118. $('#id_username').focus();
  119. return false;
  120. });
  121. }
  122. $('#session_menu').replaceWith(el);
  123. });
Add Comment
Please, Sign In to add comment