Commit 125613f4038d7d6e89d2aff7b65166248ba8a149

Authored by Daniela Feitosa
1 parent b501e2ce

Fixes for sendemail_plugin

- Fixed email sent to users
- Removed from params info that don't need to be displayed to users on screen
  and email
- Fixed replace of macro "{sendemail}"
plugins/send_email/controllers/send_email_plugin_base_controller.rb
@@ -11,7 +11,8 @@ module SendEmailPluginBaseController @@ -11,7 +11,8 @@ module SendEmailPluginBaseController
11 ) 11 )
12 @mail.subject = params[:subject] unless params[:subject].blank? 12 @mail.subject = params[:subject] unless params[:subject].blank?
13 if @mail.valid? 13 if @mail.valid?
14 - SendEmailPlugin::Sender.send_message(request.referer, @context_url, @mail).deliver 14 + @referer = request.referer
  15 + SendEmailPlugin::Sender.send_message(@referer, @context_url, @mail).deliver
15 if request.xhr? 16 if request.xhr?
16 render :text => _('Message sent') 17 render :text => _('Message sent')
17 else 18 else
plugins/send_email/lib/send_email_plugin.rb
@@ -16,9 +16,9 @@ class SendEmailPlugin < Noosfero::Plugin @@ -16,9 +16,9 @@ class SendEmailPlugin < Noosfero::Plugin
16 16
17 def parse_content(html, source) 17 def parse_content(html, source)
18 if context.profile 18 if context.profile
19 - html.gsub!(/\{sendemail\}/, "/profile/#{context.profile.identifier}/plugin/send_email/deliver") 19 + html.gsub!(/({|%7[Bb])sendemail(}|%7[Dd])/, "/profile/#{context.profile.identifier}/plugin/send_email/deliver")
20 else 20 else
21 - html.gsub!(/\{sendemail\}/, '/plugin/send_email/deliver') 21 + html.gsub!(/({|%7[Bb])sendemail(}|%7[Dd])/, '/plugin/send_email/deliver')
22 end 22 end
23 [html, source] 23 [html, source]
24 end 24 end
plugins/send_email/lib/send_email_plugin/mail.rb
@@ -10,12 +10,11 @@ class SendEmailPlugin::Mail @@ -10,12 +10,11 @@ class SendEmailPlugin::Mail
10 validate :recipients_format 10 validate :recipients_format
11 11
12 def initialize(attributes = {:subject => 'New mail'}) 12 def initialize(attributes = {:subject => 'New mail'})
13 - @environment = attributes[:environment]  
14 - @from = attributes[:from]  
15 - @to = attributes[:to]  
16 - @subject = attributes[:subject]  
17 - @message = attributes[:message]  
18 - @params = attributes[:params] 13 + if attributes
  14 + attributes.each do |attr,value|
  15 + self.send("#{attr}=", value)
  16 + end
  17 + end
19 end 18 end
20 19
21 def recipients_format 20 def recipients_format
@@ -36,7 +35,7 @@ class SendEmailPlugin::Mail @@ -36,7 +35,7 @@ class SendEmailPlugin::Mail
36 end 35 end
37 36
38 def params=(value = {}) 37 def params=(value = {})
39 - [:action, :controller, :to, :message, :subject, :from].each{|k| value.delete(k)} 38 + [:action, :controller, :to, :message, :subject, :from, :commit].each{|k| value.delete(k)}
40 @params = value 39 @params = value
41 end 40 end
42 41
plugins/send_email/lib/send_email_plugin/sender.rb
@@ -9,7 +9,6 @@ class SendEmailPlugin::Sender < Noosfero::Plugin::MailerBase @@ -9,7 +9,6 @@ class SendEmailPlugin::Sender < Noosfero::Plugin::MailerBase
9 mail( 9 mail(
10 to: mail.to, 10 to: mail.to,
11 from: mail.from, 11 from: mail.from,
12 - body: mail.params,  
13 subject: "[#{mail.environment.name}] #{mail.subject}" 12 subject: "[#{mail.environment.name}] #{mail.subject}"
14 ) 13 )
15 end 14 end
plugins/send_email/test/functional/send_email_plugin_base_controller_test.rb
@@ -54,6 +54,13 @@ def run_common_tests @@ -54,6 +54,13 @@ def run_common_tests
54 post :deliver, @extra_args.merge(:to => 'john@example.com', :message => 'Hi john', :subject => 'Hello john') 54 post :deliver, @extra_args.merge(:to => 'john@example.com', :message => 'Hi john', :subject => 'Hello john')
55 assert_equal '[Colivre.net] Hello john', ActionMailer::Base.deliveries.first.subject 55 assert_equal '[Colivre.net] Hello john', ActionMailer::Base.deliveries.first.subject
56 end 56 end
  57 +
  58 + should 'deliver mail with message from view' do
  59 + Environment.any_instance.stubs(:send_email_plugin_allow_to).returns('john@example.com')
  60 + post :deliver, @extra_args.merge(:to => 'john@example.com', :message => 'Hi john', :subject => 'Hello john')
  61 + assert_match /Contact from/, ActionMailer::Base.deliveries.first.body.to_s
  62 + end
  63 +
57 end 64 end
58 65
59 class SendEmailPluginProfileControllerTest < ActionController::TestCase 66 class SendEmailPluginProfileControllerTest < ActionController::TestCase
plugins/send_email/test/unit/send_email_plugin_sender_test.rb
@@ -15,12 +15,14 @@ class SendEmailPluginSenderTest &lt; ActiveSupport::TestCase @@ -15,12 +15,14 @@ class SendEmailPluginSenderTest &lt; ActiveSupport::TestCase
15 end 15 end
16 16
17 should 'be able to deliver mail' do 17 should 'be able to deliver mail' do
  18 + @mail.expects(:params).returns({})
18 response = SendEmailPlugin::Sender.send_message("http://localhost/contact", 'http//profile', @mail) 19 response = SendEmailPlugin::Sender.send_message("http://localhost/contact", 'http//profile', @mail)
19 assert_equal 'noreply@localhost', response.from.join 20 assert_equal 'noreply@localhost', response.from.join
20 assert_equal "[Noosfero] #{@mail.subject}", response.subject 21 assert_equal "[Noosfero] #{@mail.subject}", response.subject
21 end 22 end
22 23
23 should 'deliver mail to john@example.com' do 24 should 'deliver mail to john@example.com' do
  25 + @mail.expects(:params).returns({})
24 response = SendEmailPlugin::Sender.send_message("http://localhost/contact", 'http//profile', @mail) 26 response = SendEmailPlugin::Sender.send_message("http://localhost/contact", 'http//profile', @mail)
25 assert_equal ['john@example.com'], response.to 27 assert_equal ['john@example.com'], response.to
26 end 28 end
plugins/send_email/test/unit/send_email_plugin_test.rb
@@ -26,4 +26,12 @@ class SendEmailPluginTest &lt; ActiveSupport::TestCase @@ -26,4 +26,12 @@ class SendEmailPluginTest &lt; ActiveSupport::TestCase
26 assert_match /profile\/#{@plugin.context.profile.identifier}\/plugin\/send_email\/deliver/, @plugin.parse_content("expand this macro {sendemail}", nil).first 26 assert_match /profile\/#{@plugin.context.profile.identifier}\/plugin\/send_email\/deliver/, @plugin.parse_content("expand this macro {sendemail}", nil).first
27 end 27 end
28 28
  29 + should 'expand macro used on form on profile context' do
  30 + profile = fast_create(Community)
  31 + @plugin.context.stubs(:profile).returns(profile)
  32 + article = RawHTMLArticle.create!(:name => 'Raw HTML', :body => "<form action='{sendemail}'></form>", :profile => profile)
  33 +
  34 + assert_match /profile\/#{profile.identifier}\/plugin\/send_email\/deliver/, @plugin.parse_content(article.to_html, nil).first
  35 + end
  36 +
29 end 37 end
plugins/send_email/views/send_email_plugin/sender/message.html.erb
@@ -1,8 +0,0 @@ @@ -1,8 +0,0 @@
1 -<%= _('Contact from %s') % @referer %>  
2 -  
3 -<%= word_wrap(@message || @mail.message) %>  
4 -<% (@params || @mail.params).each_pair do |key, value| %>  
5 -<%= key %>: <%= word_wrap(value) %>  
6 -<% end %>  
7 ----  
8 -<%= url_for @context_url %>  
plugins/send_email/views/send_email_plugin/sender/send_message.html.erb 0 → 100644
@@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
  1 +<%= _('Contact from %s') % @referer %>
  2 +
  3 +<%= word_wrap(@message || @mail.message) %>
  4 +<% (@params || @mail.params).each_pair do |key, value| %>
  5 +<%= key %>: <%= word_wrap(value) %>
  6 +<% end %>
  7 +---
  8 +<%= url_for @context_url %>
plugins/send_email/views/send_email_plugin/success.html.erb
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 2
3 <table class='sendemail-plugin-message-sent'> 3 <table class='sendemail-plugin-message-sent'>
4 <tr><td class='label'><strong><%= c_('Subject') %>:</strong></td><td class='value'><em><%=h @mail.subject %></em></td></tr> 4 <tr><td class='label'><strong><%= c_('Subject') %>:</strong></td><td class='value'><em><%=h @mail.subject %></em></td></tr>
5 - <tr><td class='label'><strong><%= c_('Message') %>:</strong></td><td class='value'><pre><%=h render :file => 'send_email_plugin/sender/message' %></pre></td></tr> 5 + <tr><td class='label'><strong><%= c_('Message') %>:</strong></td><td class='value'><pre><%=h render :file => 'send_email_plugin/sender/send_message' %></pre></td></tr>
6 </table> 6 </table>
7 7
8 <p><%= button :back, c_('Back'), :back %></p> 8 <p><%= button :back, c_('Back'), :back %></p>