Permalink
Browse files

removing Prototype inline js for attributes for :with and :condition,…

… it now is free form js that can be placed there, also moved :submit out into AjaxHelper, updated tests to reflect changes
  • Loading branch information...
1 parent d9af0df commit 06dd23d67133601f2639695a0fadab81213f6200 @erikstmartin erikstmartin committed with stefanpenner Jan 24, 2010
Showing with 38 additions and 20 deletions.
  1. +14 −14 actionpack/lib/action_view/helpers/ajax_helper.rb
  2. +24 −6 actionpack/test/template/ajax_helper_test.rb
View
28 actionpack/lib/action_view/helpers/ajax_helper.rb
@@ -503,6 +503,10 @@ def extract_remote_attributes!(options)
attributes.merge!(extract_request_attributes!(options))
attributes["data-remote"] = true
+ if submit = options.delete(:submit)
+ attributes["data-submit"] = submit
+ end
+
attributes
end
@@ -563,12 +567,13 @@ module AjaxHelperCompat
def link_to_remote(name, options, html_options = {})
set_callbacks(options, html_options)
- set_conditions(options, html_options)
+ set_with_and_condition_attributes(options, html_options)
super
end
def button_to_remote(name, options = {}, html_options = {})
set_callbacks(options, html_options)
+ set_with_and_condition_attributes(options, html_options)
super
end
@@ -581,7 +586,7 @@ def form_remote_tag(options, &block)
def observe_field(name, options = {})
html = {}
- set_conditions(options, html)
+ set_with_and_condition_attributes(options, html)
options.merge!(:callbacks => html)
super
end
@@ -599,18 +604,13 @@ def set_callbacks(options, html)
end
end
- def set_conditions(options, html)
- #TODO: Remove all references to prototype - BR
- if options.delete(:form)
- html["data-parameters"] = 'Form.serialize(this)'
- elsif submit = options.delete(:submit)
- html["data-parameters"] = "Form.serialize('#{submit}')"
- elsif with = options.delete(:with)
- if with !~ /[\{=(.]/
- html["data-with"] = "'#{with}=' + encodeURIComponent(value)"
- else
- html["data-with"] = with
- end
+ def set_with_and_condition_attributes(options, html)
+ if with = options.delete(:with)
+ html["data-with"] = with
+ end
+
+ if condition = options.delete(:condition)
+ html["data-condition"] = condition
end
end
end
View
30 actionpack/test/template/ajax_helper_test.rb
@@ -92,9 +92,18 @@ def setup
end
test "link_to_remote using :with expression" do
- expected = %(<a href=\"#\" data-remote=\"true\" data-url=\"http://www.example.com/whatnot\" data-with=\"'id=' + encodeURIComponent(value)\">Remote outauthor</a>)
- assert_dom_equal expected, link_to_remote("Remote outauthor", :url => { :action => "whatnot" }, :with => "id")
- assert_dom_equal expected, link_to_remote("Remote outauthor", :url => { :action => "whatnot" }, :with => "'id=' + encodeURIComponent(value)")
+ expected = %(<a href=\"#\" data-remote=\"true\" data-url=\"http://www.example.com/whatnot\" data-with=\"id=123\">Remote outauthor</a>)
+ assert_dom_equal expected, link_to_remote("Remote outauthor", :url => { :action => "whatnot" }, :with => "id=123")
+ end
+
+ test "link_to_remote using :condition expression" do
+ expected = %(<a href=\"#\" data-remote=\"true\" data-url=\"http://www.example.com/whatnot\" data-condition=\"$('foo').val() == true\">Remote outauthor</a>)
+ assert_dom_equal expected, link_to_remote("Remote outauthor", :url => { :action => "whatnot" }, :condition => '$(\'foo\').val() == true')
+ end
+
+ test "link_to_remote using :submit" do
+ expected = %(<a href=\"#\" data-remote=\"true\" data-url=\"http://www.example.com/whatnot\" data-submit=\"myForm\">Remote outauthor</a>)
+ assert_dom_equal expected, link_to_remote("Remote outauthor", :url => { :action => "whatnot" }, :submit => 'myForm')
end
test "link_to_remote with method delete" do
@@ -135,6 +144,11 @@ def setup
button_to_remote("Remote outpost", { :url => { :action => "whatnot" }, :confirm => "Are you sure?"}, { :class => "fine" })
end
+ test "button_to_remote with :submit" do
+ assert_dom_equal %(<input class=\"fine\" type=\"button\" value=\"Remote outpost\" data-remote=\"true\" data-url=\"http://www.example.com/whatnot\" data-submit="myForm" />),
+ button_to_remote("Remote outpost", { :url => { :action => "whatnot" }, :submit => "myForm"}, { :class => "fine" })
+ end
+
test "periodically_call_remote" do
assert_dom_equal %(<script data-url=\"http://www.example.com/mehr_bier\" data-observe=\"true\" data-update-success=\"schremser_bier\" type=\"application/json\" data-periodical=\"true\"></script>),
periodically_call_remote(:update => "schremser_bier", :url => { :action => "mehr_bier" })
@@ -258,9 +272,13 @@ def setup
end
test "observe_field using with option" do
- expected = %(<script type=\"text/javascript\" data-observe=\"true\" data-observed=\"glass\" data-frequency=\"300\" type=\"application/json\" data-url=\"http://www.example.com/check_value\" data-with=\"'id=' + encodeURIComponent(value)\"></script>)
- assert_dom_equal expected, observe_field("glass", :frequency => 5.minutes, :url => { :action => "check_value" }, :with => 'id')
- assert_dom_equal expected, observe_field("glass", :frequency => 5.minutes, :url => { :action => "check_value" }, :with => "'id=' + encodeURIComponent(value)")
+ expected = %(<script type=\"text/javascript\" data-observe=\"true\" data-observed=\"glass\" data-frequency=\"300\" type=\"application/json\" data-url=\"http://www.example.com/check_value\" data-with=\"id=123\"></script>)
+ assert_dom_equal expected, observe_field("glass", :frequency => 5.minutes, :url => { :action => "check_value" }, :with => 'id=123')
+ end
+
+ test "observe_field using condition option" do
+ expected = %(<script type=\"text/javascript\" data-observe=\"true\" data-observed=\"glass\" data-frequency=\"300\" type=\"application/json\" data-url=\"http://www.example.com/check_value\" data-condition=\"$('foo').val() == true\"></script>)
+ assert_dom_equal expected, observe_field("glass", :frequency => 5.minutes, :url => { :action => "check_value" }, :condition => '$(\'foo\').val() == true')
end
test "observe_field using json in with option" do

0 comments on commit 06dd23d

Please sign in to comment.