forms.coffee 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  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/password/reset"
  86. type:'POST'
  87. data: formData
  88. success: (data)->
  89. new Message text:"You have been sent an email to complete your password reset."
  90. error:(data)->
  91. message = JSON.parse(data?.responseText)?.message
  92. new Message type:"error", text: message || "Something went wrong processing your request."
  93. $('form#setPasswordReset').validate
  94. rules:
  95. password:
  96. required: true
  97. messages:
  98. password: "Password is required"
  99. errorElement: 'div'
  100. submitHandler: (form)->
  101. event.preventDefault()
  102. formData = $(form).serialize()
  103. $.ajax
  104. url: "/user/password/set"
  105. type:'POST'
  106. data: formData
  107. success: (data)->
  108. new Message text:"Your password has been reset. <a href='/login'>Login here</a>."
  109. error:(data)->
  110. new Message type:"error", text:"Something went wrong processing your request."
  111. $('a#deleteUserAccount').click (e)->
  112. redirect = ->
  113. window.location.href = '/'
  114. $modal = $('#deleteUserAccountModal')
  115. $modal.modal
  116. backdrop:true
  117. show:true
  118. keyboard:true
  119. $modal.find('.cancel').click (e)->
  120. $modal.modal('hide')
  121. $confirm = $modal.find('.btn-danger')
  122. $modal.on 'hide', ->
  123. $confirm.off 'click'
  124. $confirm.click (e) =>
  125. e.preventDefault()
  126. val = $modal.find(".inputmodal").val()
  127. if val == "Delete"
  128. $modal.modal('hide')
  129. $.ajax
  130. url: '/user'
  131. type: 'DELETE'
  132. data:
  133. _csrf: $(@).data("csrf")
  134. success: (data)->
  135. new Message {title:"Deleted", text:" : Your account has been deleted"}
  136. setTimeout redirect, 10000
  137. else
  138. $modal.find(".inputmodal").val("")
  139. alert "You did not type 'Delete', please try again"
  140. $('a#unsubscribeFromNewsletter').click (e)->
  141. $.ajax
  142. url: '/user/newsletter/unsubscribe'
  143. type: 'DELETE'
  144. data:
  145. _csrf: $(@).data("csrf")
  146. success: (data)->
  147. new Message {title:"Unsubscribed", text:" : You have been unsubscribed from the newsletter"}
  148. $('form#userSettings').validate
  149. rules:
  150. email:
  151. required: true
  152. email: true
  153. highlight: (element, errorClass, validClas)->
  154. $(element).parents("div[class='clearfix']").addClass("error")
  155. unhighlight: (element, errorClass, validClass)->
  156. $(element).parents(".error").removeClass("error")
  157. errorElement: 'div'
  158. submitHandler: (form)->
  159. formData = $(form).serialize()
  160. $.ajax
  161. url: '/user/settings'
  162. type: 'POST'
  163. data: formData
  164. success: (data)->
  165. if data.message
  166. displayMessage data
  167. else
  168. new Message {text:"Your settings have been saved"}
  169. error:(data)->
  170. message = JSON.parse(data?.responseText)?.message
  171. new Message type:"error", text: message || "Something went wrong processing your request."
  172. class Message
  173. constructor: (message)->
  174. aClose = $('<a></a>').addClass('close').attr('href','#').text('x')
  175. pTitle = $('<strong></strong>').text(message.title)
  176. pText = $('<span></span>').html(' '+message.text)
  177. div = $('<div></div>')
  178. .addClass('alert')
  179. .append(aClose)
  180. .append(pTitle)
  181. .append(pText)
  182. if message.type == "error"
  183. div.addClass("alert-error")
  184. else
  185. div.addClass("alert-info")
  186. $('.messageArea').last().append(div)
  187. $(aClose).click (event) ->
  188. $(div).remove()