Commit 3683ac99adfd23ff592a3a630adca519347ea482

Authored by Antonio Terceiro
1 parent adb43797

Honouring all URL options when sending e-mails.

This includes the port number, if for some reason a Noosfero instance is
publicly available on another port then the HTTP default.

Based on a patch from Josef Spillner.
app/models/task_mailer.rb
@@ -22,15 +22,15 @@ class TaskMailer < ActionMailer::Base @@ -22,15 +22,15 @@ class TaskMailer < ActionMailer::Base
22 :target => task.target.name, 22 :target => task.target.name,
23 :message => msg, 23 :message => msg,
24 :environment => task.requestor.environment.name, 24 :environment => task.requestor.environment.name,
25 - :url => url_for(:host => task.requestor.environment.default_hostname, :controller => 'home'), 25 + :url => generate_environment_url(task, :controller => 'home'),
26 :tasks_url => url_for_tasks_list 26 :tasks_url => url_for_tasks_list
27 end 27 end
28 28
29 def invitation_notification(task) 29 def invitation_notification(task)
30 msg = task.message 30 msg = task.message
31 msg = msg.gsub(/<user>/, task.requestor.name) 31 msg = msg.gsub(/<user>/, task.requestor.name)
32 - msg = msg.gsub(/<friend>/, task.friend_name)  
33 - msg = msg.gsub(/<url>/, url_for(:host => task.requestor.environment.default_hostname, :controller => 'account', :action => 'signup', :invitation_code => task.code)) 32 + msg = msg.gsub(/<friend>/, task.friend_name.blank? ? task.friend_email : task.friend_name)
  33 + msg = msg.gsub(/<url>/, generate_environment_url(task, :controller => 'account', :action => 'signup', :invitation_code => task.code))
34 34
35 recipients task.friend_email 35 recipients task.friend_email
36 36
@@ -66,4 +66,8 @@ class TaskMailer &lt; ActionMailer::Base @@ -66,4 +66,8 @@ class TaskMailer &lt; ActionMailer::Base
66 "#{task.requestor.environment.name} <#{task.requestor.environment.contact_email}>" 66 "#{task.requestor.environment.name} <#{task.requestor.environment.contact_email}>"
67 end 67 end
68 68
  69 + def generate_environment_url(task, url = {})
  70 + url_for(Noosfero.url_options.merge(:host => task.requestor.environment.default_hostname).merge(url))
  71 + end
  72 +
69 end 73 end
test/unit/task_mailer_test.rb
@@ -113,7 +113,7 @@ class TaskMailerTest &lt; Test::Unit::TestCase @@ -113,7 +113,7 @@ class TaskMailerTest &lt; Test::Unit::TestCase
113 113
114 task.expects(:message).returns('Hello <friend>, <user> invite you, please follow this link: <url>') 114 task.expects(:message).returns('Hello <friend>, <user> invite you, please follow this link: <url>')
115 task.expects(:friend_email).returns('friend@exemple.com') 115 task.expects(:friend_email).returns('friend@exemple.com')
116 - task.expects(:friend_name).returns('friend name') 116 + task.expects(:friend_name).returns('friend name').at_least_once
117 117
118 requestor = mock() 118 requestor = mock()
119 requestor.expects(:name).returns('my name') 119 requestor.expects(:name).returns('my name')