diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index bbc6a35d4..2a0e341b6 100644 --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -77,10 +77,10 @@ class MessagesController < ApplicationController @reply.author = User.current @reply.board = @board @reply.safe_attributes = params[:reply] + @reply.save_attachments(params[:attachments]) @topic.children << @reply if !@reply.new_record? call_hook(:controller_messages_reply_after_save, { :params => params, :message => @reply}) - attachments = Attachment.attach_files(@reply, params[:attachments]) render_attachment_warning_if_needed(@reply) end flash[:notice] = l(:notice_successful_update) @@ -91,12 +91,14 @@ class MessagesController < ApplicationController def edit (render_403; return false) unless @message.editable_by?(User.current) @message.safe_attributes = params[:message] - if request.post? && @message.save - attachments = Attachment.attach_files(@message, params[:attachments]) - render_attachment_warning_if_needed(@message) - flash[:notice] = l(:notice_successful_update) - @message.reload - redirect_to board_message_path(@message.board, @message.root, :r => (@message.parent_id && @message.id)) + if request.post? + @message.save_attachments(params[:attachments]) + if @message.save + render_attachment_warning_if_needed(@message) + flash[:notice] = l(:notice_successful_update) + @message.reload + redirect_to board_message_path(@message.board, @message.root, :r => (@message.parent_id && @message.id)) + end end end diff --git a/app/views/mailer/message_posted.html.erb b/app/views/mailer/message_posted.html.erb index 3401b1816..2bd4ae0ea 100644 --- a/app/views/mailer/message_posted.html.erb +++ b/app/views/mailer/message_posted.html.erb @@ -2,3 +2,11 @@ <%= @message.author %> <%= textilizable(@message, :content, :only_path => false) %> + +<% if @message.attachments.any? -%> +
<%= l(:label_attachment_plural) %> +<% @message.attachments.each do |attachment| -%> + <%= link_to_attachment attachment, :download => true, :only_path => false %> (<%= number_to_human_size(attachment.filesize) %>)
+<% end -%> +
+<% end -%> diff --git a/app/views/mailer/message_posted.text.erb b/app/views/mailer/message_posted.text.erb index ef6a3b3ae..9396caa6f 100644 --- a/app/views/mailer/message_posted.text.erb +++ b/app/views/mailer/message_posted.text.erb @@ -2,3 +2,10 @@ <%= @message.author %> <%= @message.content %> + +<% if @message.attachments.any? -%> +---<%= l(:label_attachment_plural).ljust(37, '-') %> +<% @message.attachments.each do |attachment| -%> +<%= attachment.filename %> (<%= number_to_human_size(attachment.filesize) %>) +<% end -%> +<% end -%> diff --git a/test/unit/mailer_test.rb b/test/unit/mailer_test.rb index 82ca6cc5f..6e7fc84a7 100644 --- a/test/unit/mailer_test.rb +++ b/test/unit/mailer_test.rb @@ -334,6 +334,7 @@ class MailerTest < ActiveSupport::TestCase def test_message_posted_message_id message = Message.find(1) + attachment = message.attachments.first Mailer.deliver_message_posted(message) mail = last_email uid = destination_user(mail).id @@ -344,11 +345,22 @@ class MailerTest < ActiveSupport::TestCase assert_select "a[href=?]", "http://localhost:3000/boards/#{message.board.id}/topics/#{message.id}", :text => message.subject + # link to the attachments download + assert_select 'fieldset.attachments' do + assert_select 'a[href=?]', + "http://localhost:3000/attachments/download/#{attachment.id}/#{attachment.filename}", + :text => attachment.filename + end end end def test_reply_posted_message_id + set_tmp_attachments_directory message = Message.find(3) + attachment = Attachment.generate!( + :container => message, + :file => uploaded_test_file('testfile.txt', 'text/plain') + ) Mailer.deliver_message_posted(message) mail = last_email uid = destination_user(mail).id @@ -359,6 +371,12 @@ class MailerTest < ActiveSupport::TestCase assert_select "a[href=?]", "http://localhost:3000/boards/#{message.board.id}/topics/#{message.root.id}?r=#{message.id}#message-#{message.id}", :text => message.subject + # link to the attachments download + assert_select 'fieldset.attachments' do + assert_select 'a[href=?]', + "http://localhost:3000/attachments/download/#{attachment.id}/testfile.txt", + :text => 'testfile.txt' + end end end