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 22 :target => task.target.name,
23 23 :message => msg,
24 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 26 :tasks_url => url_for_tasks_list
27 27 end
28 28  
29 29 def invitation_notification(task)
30 30 msg = task.message
31 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 35 recipients task.friend_email
36 36  
... ... @@ -66,4 +66,8 @@ class TaskMailer &lt; ActionMailer::Base
66 66 "#{task.requestor.environment.name} <#{task.requestor.environment.contact_email}>"
67 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 73 end
... ...
test/unit/task_mailer_test.rb
... ... @@ -113,7 +113,7 @@ class TaskMailerTest &lt; Test::Unit::TestCase
113 113  
114 114 task.expects(:message).returns('Hello <friend>, <user> invite you, please follow this link: <url>')
115 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 118 requestor = mock()
119 119 requestor.expects(:name).returns('my name')
... ...