提交 06dd23d6 编写于 作者: E Erik St. Martin 提交者: Stefan Penner

removing Prototype inline js for attributes for :with and :condition, it now...

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
上级 d9af0dfa
......@@ -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
......
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册