aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2006-02-12 06:11:17 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2006-02-12 06:11:17 +0000
commitff986f19af30efd05d413b37b22c295616804219 (patch)
tree1965bc8de0710d147870380655a9a489cb139368
parent050c3964d8fe8d68c03fff593e3c09b5eae77a46 (diff)
downloadrails-ff986f19af30efd05d413b37b22c295616804219.tar.gz
rails-ff986f19af30efd05d413b37b22c295616804219.tar.bz2
rails-ff986f19af30efd05d413b37b22c295616804219.zip
Flash shouldnt depend on components either [DHH]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3581 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r--actionpack/lib/action_controller/components.rb16
-rw-r--r--actionpack/lib/action_controller/flash.rb38
2 files changed, 40 insertions, 14 deletions
diff --git a/actionpack/lib/action_controller/components.rb b/actionpack/lib/action_controller/components.rb
index 28480e47b6..a9c850c49d 100644
--- a/actionpack/lib/action_controller/components.rb
+++ b/actionpack/lib/action_controller/components.rb
@@ -51,6 +51,9 @@ module ActionController #:nodoc:
alias_method :set_session_options_without_components, :set_session_options
alias_method :set_session_options, :set_session_options_with_components
+
+ alias_method :flash_without_components, :flash
+ alias_method :flash, :flash_with_components
end
# If this controller was instantiated to process a component request,
@@ -110,6 +113,19 @@ module ActionController #:nodoc:
end
end
+ def flash_with_components(refresh = false)
+ if @flash.nil? || refresh
+ @flash =
+ if @parent_controller
+ @parent_controller.flash
+ else
+ flash_without_components
+ end
+ end
+
+ @flash
+ end
+
private
def component_response(options, reuse_response)
klass = component_class(options)
diff --git a/actionpack/lib/action_controller/flash.rb b/actionpack/lib/action_controller/flash.rb
index 383263fe92..29a8962910 100644
--- a/actionpack/lib/action_controller/flash.rb
+++ b/actionpack/lib/action_controller/flash.rb
@@ -28,6 +28,9 @@ module ActionController #:nodoc:
base.send :include, InstanceMethods
base.class_eval do
+ alias_method :assign_shortcuts_without_flash, :assign_shortcuts
+ alias_method :assign_shortcuts, :assign_shortcuts_with_flash
+
alias_method :process_cleanup_without_flash, :process_cleanup
alias_method :process_cleanup, :process_cleanup_with_flash
end
@@ -35,7 +38,7 @@ module ActionController #:nodoc:
class FlashNow #:nodoc:
- def initialize flash
+ def initialize(flash)
@flash = flash
end
@@ -134,6 +137,11 @@ module ActionController #:nodoc:
end
module InstanceMethods
+ def assign_shortcuts_with_flash(request, response) #:nodoc:
+ assign_shortcuts_without_flash(request, response)
+ flash(:refresh)
+ end
+
def process_cleanup_with_flash
process_cleanup_without_flash
flash.sweep
@@ -143,19 +151,21 @@ module ActionController #:nodoc:
# Access the contents of the flash. Use <tt>flash["notice"]</tt> to read a notice you put there or
# <tt>flash["notice"] = "hello"</tt> to put a new one.
# Note that if sessions are disabled only flash.now will work.
- def flash #:doc:
- @flash ||=
- if @parent_controller
- @parent_controller.flash
- elsif @session.is_a?(Hash)
- # @session is a Hash, if sessions are disabled
- # we don't put the flash in the session in this case
- FlashHash.new
- else
- # otherwise, @session is a CGI::Session or a TestSession
- # so make sure it gets retrieved from/saved to session storage after request processing
- @session["flash"] ||= FlashHash.new
- end
+ def flash(refresh = false) #:doc:
+ if @flash.nil? || refresh
+ @flash =
+ if @session.is_a?(Hash)
+ # @session is a Hash, if sessions are disabled
+ # we don't put the flash in the session in this case
+ FlashHash.new
+ else
+ # otherwise, @session is a CGI::Session or a TestSession
+ # so make sure it gets retrieved from/saved to session storage after request processing
+ @session["flash"] ||= FlashHash.new
+ end
+ end
+
+ @flash
end
# deprecated. use <tt>flash.keep</tt> instead