Refactor: Decouple failed attachments and the flash messages
Attachment#attach_files will no longer need to return a flash message, instead it will put unsaved attachments into object#unsaved_attachments where the calling object can access them. A utility method #render_attachment_warning_if_needed is included for setting the standard flash warning. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3528 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -301,4 +301,9 @@ class ApplicationController < ActionController::Base
|
||||
def api_request?
|
||||
%w(xml json).include? params[:format]
|
||||
end
|
||||
|
||||
# Renders a warning flash if obj has unsaved attachments
|
||||
def render_attachment_warning_if_needed(obj)
|
||||
flash[:warning] = l(:warning_attachments_not_saved, obj.unsaved_attachments.size) if obj.unsaved_attachments.present?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -48,7 +48,7 @@ class DocumentsController < ApplicationController
|
||||
@document = @project.documents.build(params[:document])
|
||||
if request.post? and @document.save
|
||||
attachments = Attachment.attach_files(@document, params[:attachments])
|
||||
flash[:warning] = attachments[:flash] if attachments[:flash]
|
||||
render_attachment_warning_if_needed(@document)
|
||||
flash[:notice] = l(:notice_successful_create)
|
||||
redirect_to :action => 'index', :project_id => @project
|
||||
end
|
||||
@@ -69,7 +69,7 @@ class DocumentsController < ApplicationController
|
||||
|
||||
def add_attachment
|
||||
attachments = Attachment.attach_files(@document, params[:attachments])
|
||||
flash[:warning] = attachments[:flash] if attachments[:flash]
|
||||
render_attachment_warning_if_needed(@document)
|
||||
|
||||
Mailer.deliver_attachments_added(attachments[:files]) if attachments.present? && attachments[:files].present? && Setting.notified_events.include?('document_added')
|
||||
redirect_to :action => 'show', :id => @document
|
||||
|
||||
@@ -159,7 +159,7 @@ class IssuesController < ApplicationController
|
||||
call_hook(:controller_issues_new_before_save, { :params => params, :issue => @issue })
|
||||
if @issue.save
|
||||
attachments = Attachment.attach_files(@issue, params[:attachments])
|
||||
flash[:warning] = attachments[:flash] if attachments[:flash]
|
||||
render_attachment_warning_if_needed(@issue)
|
||||
flash[:notice] = l(:notice_successful_create)
|
||||
call_hook(:controller_issues_new_after_save, { :params => params, :issue => @issue})
|
||||
respond_to do |format|
|
||||
@@ -571,7 +571,8 @@ private
|
||||
|
||||
if @issue.valid?
|
||||
attachments = Attachment.attach_files(@issue, params[:attachments])
|
||||
flash[:warning] = attachments[:flash] if attachments[:flash]
|
||||
render_attachment_warning_if_needed(@issue)
|
||||
|
||||
attachments[:files].each {|a| @journal.details << JournalDetail.new(:property => 'attachment', :prop_key => a.id, :value => a.filename)}
|
||||
call_hook(:controller_issues_edit_before_save, { :params => params, :issue => @issue, :time_entry => @time_entry, :journal => @journal})
|
||||
if @issue.save
|
||||
|
||||
@@ -63,7 +63,7 @@ class MessagesController < ApplicationController
|
||||
if request.post? && @message.save
|
||||
call_hook(:controller_messages_new_after_save, { :params => params, :message => @message})
|
||||
attachments = Attachment.attach_files(@message, params[:attachments])
|
||||
flash[:warning] = attachments[:flash] if attachments[:flash]
|
||||
render_attachment_warning_if_needed(@message)
|
||||
redirect_to :action => 'show', :id => @message
|
||||
end
|
||||
end
|
||||
@@ -77,7 +77,7 @@ class MessagesController < ApplicationController
|
||||
if !@reply.new_record?
|
||||
call_hook(:controller_messages_reply_after_save, { :params => params, :message => @reply})
|
||||
attachments = Attachment.attach_files(@reply, params[:attachments])
|
||||
flash[:warning] = attachments[:flash] if attachments[:flash]
|
||||
render_attachment_warning_if_needed(@reply)
|
||||
end
|
||||
redirect_to :action => 'show', :id => @topic, :r => @reply
|
||||
end
|
||||
@@ -91,7 +91,7 @@ class MessagesController < ApplicationController
|
||||
end
|
||||
if request.post? && @message.update_attributes(params[:message])
|
||||
attachments = Attachment.attach_files(@message, params[:attachments])
|
||||
flash[:warning] = attachments[:flash] if attachments[:flash]
|
||||
render_attachment_warning_if_needed(@message)
|
||||
flash[:notice] = l(:notice_successful_update)
|
||||
@message.reload
|
||||
redirect_to :action => 'show', :board_id => @message.board, :id => @message.root, :r => (@message.parent_id && @message.id)
|
||||
|
||||
@@ -304,7 +304,7 @@ class ProjectsController < ApplicationController
|
||||
if request.post?
|
||||
container = (params[:version_id].blank? ? @project : @project.versions.find_by_id(params[:version_id]))
|
||||
attachments = Attachment.attach_files(container, params[:attachments])
|
||||
flash[:warning] = attachments[:flash] if attachments[:flash]
|
||||
render_attachment_warning_if_needed(container)
|
||||
|
||||
if !attachments.empty? && Setting.notified_events.include?('file_added')
|
||||
Mailer.deliver_attachments_added(attachments[:files])
|
||||
|
||||
@@ -77,7 +77,7 @@ class WikiController < ApplicationController
|
||||
else
|
||||
if !@page.new_record? && @content.text == params[:content][:text]
|
||||
attachments = Attachment.attach_files(@page, params[:attachments])
|
||||
flash[:warning] = attachments[:flash] if attachments[:flash]
|
||||
render_attachment_warning_if_needed(@page)
|
||||
# don't save if text wasn't changed
|
||||
redirect_to :action => 'index', :id => @project, :page => @page.title
|
||||
return
|
||||
@@ -89,7 +89,7 @@ class WikiController < ApplicationController
|
||||
# if page is new @page.save will also save content, but not if page isn't a new record
|
||||
if (@page.new_record? ? @page.save : @content.save)
|
||||
attachments = Attachment.attach_files(@page, params[:attachments])
|
||||
flash[:warning] = attachments[:flash] if attachments[:flash]
|
||||
render_attachment_warning_if_needed(@page)
|
||||
call_hook(:controller_wiki_edit_after_save, { :params => params, :page => @page})
|
||||
redirect_to :action => 'index', :id => @project, :page => @page.title
|
||||
end
|
||||
@@ -214,7 +214,7 @@ class WikiController < ApplicationController
|
||||
def add_attachment
|
||||
return render_403 unless editable?
|
||||
attachments = Attachment.attach_files(@page, params[:attachments])
|
||||
flash[:warning] = attachments[:flash] if attachments[:flash]
|
||||
render_attachment_warning_if_needed(@page)
|
||||
redirect_to :action => 'index', :page => @page.title
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user