Commit a54164eb4cd47750a7fa329d46479279b4f62c55

Authored by Daniela Feitosa
1 parent 0c76dfbb

Some fixes when sending contact messages

added content_type text/html on mailer and HTML tags on message
including environment contact_email on from and sender email on reply_to
app/models/contact.rb
@@ -23,9 +23,11 @@ class Contact < ActiveRecord::Base #WithoutTable @@ -23,9 +23,11 @@ class Contact < ActiveRecord::Base #WithoutTable
23 23
24 class Sender < ActionMailer::Base 24 class Sender < ActionMailer::Base
25 def mail(contact) 25 def mail(contact)
  26 + content_type 'text/html'
26 emails = contact.dest.notification_emails 27 emails = contact.dest.notification_emails
27 recipients emails 28 recipients emails
28 - from "#{contact.name} <#{contact.email}>" 29 + from "#{contact.name} <#{contact.dest.environment.contact_email}>"
  30 + reply_to contact.email
29 if contact.sender 31 if contact.sender
30 headers 'X-Noosfero-Sender' => contact.sender.identifier 32 headers 'X-Noosfero-Sender' => contact.sender.identifier
31 end 33 end
app/views/contact/sender/mail.rhtml
1 -<%= _('This message was sent by %{sender} to %{target} on %{environment}.') %  
2 - {:sender => @name, :target => @target, :environment => @environment} %>  
3 -<%= _('Below here are the informations about the user who sent this message:')%>  
4 -<ul>  
5 - <li><%= content_tag('b', _('Name')+': ') + @name%></li>  
6 - <li><%= content_tag('b', _('Email')+': ') + @email%></li>  
7 - <% if @city || @state %>  
8 - <li><%= content_tag('b', _('City and state')+': ') + (@city || '?')+'/'+(@state || '?') %></li>  
9 - <% end %>  
10 -</ul> 1 +<!DOCTYPE html>
  2 +<html>
  3 + <head>
  4 + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  5 + </head>
  6 + <body>
  7 + <p><%= _('This message was sent by %{sender} to %{target} on %{environment}.') %
  8 + {:sender => @name, :target => @target, :environment => @environment} %></p>
  9 + <%= _('Information about the user who sent this message:')%>
  10 + <ul>
  11 + <li><%= content_tag('b', _('Name')+': ') + @name%></li>
  12 + <li><%= content_tag('b', _('Email')+': ') + @email%></li>
  13 + <% if @city || @state %>
  14 + <li><%= content_tag('b', _('City and state')+': ') + (@city || '?')+'/'+(@state || '?') %></li>
  15 + <% end %>
  16 + </ul>
  17 + <hr/>
  18 + <%= content_tag('b', _('Message:')) %>
  19 + <p><%= word_wrap(@message) %></p>
11 20
12 -<%= _('Message:') %>  
13 --------------------------------------------------------------------------------  
14 -<%= word_wrap(@message) %>  
15 -------------------------------------------------------------------------------- 21 + --<br/>
  22 + <%= _('Greetings,') %><br/>
  23 + <%= _('%s team.') % @environment %><br/>
  24 + <%= @url %>
  25 + </body>
  26 +</html>
16 27
17 -<%= _('Greetings,') %>  
18 -  
19 ---  
20 -<%= _('%s team.') % @environment %>  
21 -<%= @url %>  
test/unit/contact_test.rb
@@ -22,7 +22,7 @@ class ContactTest &lt; ActiveSupport::TestCase @@ -22,7 +22,7 @@ class ContactTest &lt; ActiveSupport::TestCase
22 should 'validates format of email only if not empty' do 22 should 'validates format of email only if not empty' do
23 contact = Contact.new 23 contact = Contact.new
24 contact.valid? 24 contact.valid?
25 - assert_match /^.* can't be blank$/, contact.errors[:email] 25 + assert_match(/^.* can't be blank$/, contact.errors[:email])
26 end 26 end
27 27
28 should 'inicialize fields on instanciate' do 28 should 'inicialize fields on instanciate' do
@@ -44,4 +44,25 @@ class ContactTest &lt; ActiveSupport::TestCase @@ -44,4 +44,25 @@ class ContactTest &lt; ActiveSupport::TestCase
44 assert !c.deliver 44 assert !c.deliver
45 end 45 end
46 46
  47 + should 'use sender name and environment contact_email on from' do
  48 + ent = fast_create(Enterprise, :name => 'my enterprise', :identifier => 'myent')
  49 + c = Contact.new(:name => 'john', :email => 'john@invalid.com', :subject => 'hi', :message => 'hi, all', :dest => ent)
  50 + email = c.deliver
  51 + assert_equal "#{c.name} <#{ent.environment.contact_email}>", email['from'].to_s
  52 + end
  53 +
  54 + should 'add dest name on subject' do
  55 + ent = fast_create(Enterprise, :name => 'my enterprise', :identifier => 'myent')
  56 + c = Contact.new(:name => 'john', :email => 'john@invalid.com', :subject => 'hi', :message => 'hi, all', :dest => ent)
  57 + email = c.deliver
  58 + assert_equal "[#{ent.short_name(30)}] #{c.subject}", email['subject'].to_s
  59 + end
  60 +
  61 + should 'add sender email on reply_to' do
  62 + ent = fast_create(Enterprise, :name => 'my enterprise', :identifier => 'myent')
  63 + c = Contact.new(:name => 'john', :email => 'john@invalid.com', :subject => 'hi', :message => 'hi, all', :dest => ent)
  64 + email = c.deliver
  65 + assert_equal c.email, email.reply_to.to_s
  66 + end
  67 +
47 end 68 end