diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2006-02-12 06:11:17 +0000 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2006-02-12 06:11:17 +0000 |
commit | ff986f19af30efd05d413b37b22c295616804219 (patch) | |
tree | 1965bc8de0710d147870380655a9a489cb139368 /actionpack/lib/action_controller | |
parent | 050c3964d8fe8d68c03fff593e3c09b5eae77a46 (diff) | |
download | rails-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
Diffstat (limited to 'actionpack/lib/action_controller')
-rw-r--r-- | actionpack/lib/action_controller/components.rb | 16 | ||||
-rw-r--r-- | actionpack/lib/action_controller/flash.rb | 38 |
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 |