From b141624abbd1be6aa9836708fe4c20c03af5ab3b Mon Sep 17 00:00:00 2001 From: Alastair Brunton Date: Fri, 8 Aug 2008 15:55:50 +0200 Subject: Added image_submit_tag confirm option [status:committed #784] Signed-off-by: David Heinemeier Hansson --- actionpack/CHANGELOG | 2 ++ actionpack/lib/action_view/helpers/form_tag_helper.rb | 10 ++++++++++ actionpack/test/template/form_tag_helper_test.rb | 7 +++++++ 3 files changed, 19 insertions(+) (limited to 'actionpack') diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index adc4dec229..3743e3e8fe 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *Edge* +* Added FormTagHelper#image_submit_tag confirm option #784 [Alastair Brunton] + * Fixed FormTagHelper#submit_tag with :disable_with option wouldn't submit the button's value when was clicked #633 [Jose Fernandez] * Stopped logging template compiles as it only clogs up the log [DHH] diff --git a/actionpack/lib/action_view/helpers/form_tag_helper.rb b/actionpack/lib/action_view/helpers/form_tag_helper.rb index fe7e174c4d..294c22521e 100644 --- a/actionpack/lib/action_view/helpers/form_tag_helper.rb +++ b/actionpack/lib/action_view/helpers/form_tag_helper.rb @@ -371,6 +371,9 @@ module ActionView # source is passed to AssetTagHelper#image_path # # ==== Options + # * :confirm => 'question?' - This will add a JavaScript confirm + # prompt with the question specified. If the user accepts, the form is + # processed normally, otherwise no action is taken. # * :disabled - If set to true, the user will not be able to use this input. # * Any other key creates standard HTML options for the tag. # @@ -387,6 +390,13 @@ module ActionView # image_submit_tag("agree.png", :disabled => true, :class => "agree-disagree-button") # # => def image_submit_tag(source, options = {}) + options.stringify_keys! + + if confirm = options.delete("confirm") + options["onclick"] ||= '' + options["onclick"] += "return #{confirm_javascript_function(confirm)};" + end + tag :input, { "type" => "image", "src" => path_to_image(source) }.update(options.stringify_keys) end diff --git a/actionpack/test/template/form_tag_helper_test.rb b/actionpack/test/template/form_tag_helper_test.rb index 15e84564be..6473d011d5 100644 --- a/actionpack/test/template/form_tag_helper_test.rb +++ b/actionpack/test/template/form_tag_helper_test.rb @@ -241,6 +241,13 @@ class FormTagHelperTest < ActionView::TestCase submit_tag("Save", :confirm => "Are you sure?") ) end + + def test_image_submit_tag_with_confirmation + assert_dom_equal( + %(), + image_submit_tag("save.gif", :confirm => "Are you sure?") + ) + end def test_pass assert_equal 1, 1 -- cgit v1.2.3