forms.coffee 4.5 KB

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