forms.coffee 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. require [
  2. "libs/jquery.validate"
  3. "libs/fineuploader"
  4. "libs/bootstrap/bootstrap2full"
  5. ], ()->
  6. $().ready ->
  7. url = document.location.toString();
  8. if (url.match('#'))
  9. $('.nav-tabs a[href=#'+url.split('#')[1]+']').tab('show')
  10. $('.nav-tabs a').on 'shown', (e)->
  11. window.location.hash = e.target.hash
  12. shortRegisterFormRules =
  13. rules:
  14. redir:
  15. required:false
  16. email:
  17. required: true
  18. email: true
  19. password:
  20. required: true
  21. errorElement: 'div'
  22. submitHandler: (form)->
  23. formData = $(form).serialize()
  24. $.ajax
  25. url: "/register",
  26. type:'POST',
  27. data: formData,
  28. success: (data)->
  29. if data.message?
  30. new Message data.message
  31. ga('send', 'event', 'register', 'failure', data.message)
  32. else
  33. ga('send', 'event', 'register', 'success')
  34. window.location = data.redir || "/project"
  35. $('#registerFormShort').validate shortRegisterFormRules
  36. $("#registerFormShort").show()
  37. passwordFormInited = false
  38. $('a#changePassword').click (event)->
  39. event.preventDefault()
  40. $modal = $ '#changePasswordModal'
  41. $modal.modal
  42. backdrop:true
  43. show:true
  44. keyboard:true
  45. if !passwordFormInited
  46. passwordFormInited = true
  47. $modal.find('.cancel').click (e)->
  48. $modal.modal('hide')
  49. $modal.find('form#changePasswordForm').submit (e)->
  50. e.preventDefault()
  51. formData = $('form#changePasswordForm').serialize()
  52. $.ajax
  53. url: "/user/password/update"
  54. type:'POST'
  55. data: formData
  56. success: (data)->
  57. if(data.message)
  58. new Message data.message
  59. $modal.modal('hide')
  60. $('form#loginForm').submit (event)->
  61. event.preventDefault()
  62. formData = $(this).serialize()
  63. $.ajax
  64. url: "/login"
  65. type:'POST'
  66. data: formData
  67. error: (data)->
  68. if data.responseText
  69. message = JSON.parse(data.responseText).message
  70. new Message message
  71. success: (data)->
  72. if data.message
  73. new Message data.message
  74. ga('send', 'event', 'login', 'failure', data.message)
  75. else if data.redir
  76. window.location.href = data.redir
  77. ga('send', 'event', 'login', 'success')
  78. else
  79. ga('send', 'event', 'login', 'success')
  80. window.location.href = '/project'
  81. $('form#passwordReset').submit (event)->
  82. event.preventDefault()
  83. formData = $(this).serialize()
  84. $.ajax
  85. url: "/user/passwordReset"
  86. type:'POST'
  87. data: formData
  88. success: (data)->
  89. if data.message
  90. new Message data.message
  91. else if data.redir
  92. window.location.href = data.redir
  93. else
  94. window.location.href = '/'
  95. $('a#deleteUserAccount').click (e)->
  96. redirect = ->
  97. window.location.href = '/'
  98. $modal = $('#deleteUserAccountModal')
  99. $modal.modal
  100. backdrop:true
  101. show:true
  102. keyboard:true
  103. $modal.find('.cancel').click (e)->
  104. $modal.modal('hide')
  105. $confirm = $modal.find('.btn-danger')
  106. $modal.on 'hide', ->
  107. $confirm.off 'click'
  108. $confirm.click (e) =>
  109. e.preventDefault()
  110. val = $modal.find(".inputmodal").val()
  111. if val == "Delete"
  112. $modal.modal('hide')
  113. $.ajax
  114. url: '/user'
  115. type: 'DELETE'
  116. data:
  117. _csrf: $(@).data("csrf")
  118. success: (data)->
  119. new Message {title:"Deleted", text:" : Your account has been deleted"}
  120. setTimeout redirect, 10000
  121. else
  122. $modal.find(".inputmodal").val("")
  123. alert "You did not type 'Delete', please try again"
  124. $('a#unsubscribeFromNewsletter').click (e)->
  125. $.ajax
  126. url: '/user/newsletter/unsubscribe'
  127. type: 'DELETE'
  128. data:
  129. _csrf: $(@).data("csrf")
  130. success: (data)->
  131. new Message {title:"Unsubscribed", text:" : You have been unsubscribed from the newsletter"}
  132. $('form#userSettings').validate
  133. rules:
  134. newPassword1:
  135. minlength: 1
  136. newPassword2:
  137. equalTo: "#newPassword1"
  138. messages:
  139. newPassword1:
  140. minlength: "1 character minimum"
  141. newPassword2:
  142. equalTo: "Passwords don't match"
  143. highlight: (element, errorClass, validClas)->
  144. $(element).parents("div[class='clearfix']").addClass("error")
  145. unhighlight: (element, errorClass, validClass)->
  146. $(element).parents(".error").removeClass("error")
  147. errorElement: 'div'
  148. submitHandler: (form)->
  149. formData = $(form).serialize()
  150. $.ajax
  151. url: '/user/settings'
  152. type:'POST'
  153. data: formData
  154. success: (data)->
  155. if data.message
  156. displayMessage data
  157. else
  158. new Message {text:"Your settings have been saved"}
  159. class Message
  160. constructor: (message)->
  161. aClose = $('<a></a>').addClass('close').attr('href','#').text('x')
  162. pTitle = $('<strong></strong>').text(message.title)
  163. pText = $('<span></span>').html(' '+message.text)
  164. div = $('<div></div>')
  165. .addClass('alert')
  166. .append(aClose)
  167. .append(pTitle)
  168. .append(pText)
  169. if message.type == "error"
  170. div.addClass("alert-error")
  171. else
  172. div.addClass("alert-info")
  173. $('.messageArea').last().append(div)
  174. $(aClose).click (event) ->
  175. $(div).remove()