contact_controller.rb 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. class ContactController < ApplicationController
  2. def index
  3. @message = Message.new
  4. end
  5. def create
  6. # Validate message fields
  7. valid = true
  8. @errors = []
  9. # Name is irrelevant, don't vlaidate
  10. # Email has to LOOK like an email
  11. if !(request.POST["sender_email"].match(URI::MailTo::EMAIL_REGEXP))
  12. valid = false
  13. @errors.push("INVALID_EMAIL")
  14. end
  15. # Text needs to have something
  16. if request.POST["text"].length < 1
  17. valid = false
  18. @error.push("INVALID_TEXT")
  19. end
  20. # If valid, save and send the email
  21. if valid
  22. @message = Message.new()
  23. @message.user_id = @user.id
  24. @message.sender_name = request.POST["sender_name"]
  25. @message.sender_email = request.POST["sender_email"]
  26. @message.text = request.POST["text"]
  27. @message.dtime = Time.now
  28. @message.language = I18n.locale
  29. @message.ip = request.remote_ip
  30. if @message.save
  31. ApplicationMailer.message_email(@user, @message).deliver_later
  32. else
  33. print("Error saving message: \n")
  34. print(" FROM: " + request.POST["sender_name"] + "(" + request.POST["sender_email"] + ")\n")
  35. print(" TEXT: " + request.POST["text"] + ")\n")
  36. print(@message.errors.full_messages)
  37. print("\n")
  38. end
  39. respond_to do |format|
  40. format.json { render 'contact/success'}
  41. end
  42. # If invalid, return the error
  43. else
  44. respond_to do |format|
  45. format.json { render 'contact/error', status: 400}
  46. end
  47. end
  48. end
  49. end