aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_view/helpers
diff options
context:
space:
mode:
authorBob Remeika <bob.remeika@gmail.com>2009-09-25 01:27:20 -0700
committerStefan Penner <stefan.penner@gmail.com>2010-01-27 12:44:30 -0600
commit5316e77db1c34dca15f83dd6a10e78e847c356c3 (patch)
tree942b64970f69dc958a0e710cb7e4f8ad138924e2 /actionpack/lib/action_view/helpers
parentb225de9711e012a8ade32cc4fc947f41cbb184a1 (diff)
downloadrails-5316e77db1c34dca15f83dd6a10e78e847c356c3.tar.gz
rails-5316e77db1c34dca15f83dd6a10e78e847c356c3.tar.bz2
rails-5316e77db1c34dca15f83dd6a10e78e847c356c3.zip
Took first stab at reimplementing form_remote_tag helpers
Diffstat (limited to 'actionpack/lib/action_view/helpers')
-rw-r--r--actionpack/lib/action_view/helpers/ajax_helper.rb122
1 files changed, 26 insertions, 96 deletions
diff --git a/actionpack/lib/action_view/helpers/ajax_helper.rb b/actionpack/lib/action_view/helpers/ajax_helper.rb
index 18b4c4991f..92e1d916c9 100644
--- a/actionpack/lib/action_view/helpers/ajax_helper.rb
+++ b/actionpack/lib/action_view/helpers/ajax_helper.rb
@@ -3,33 +3,31 @@ module ActionView
module AjaxHelper
include UrlHelper
- def extract_remote_attributes!(options)
- attributes = options.delete(:html) || {}
-
- attributes.merge!(extract_update_attributes!(options))
- attributes.merge!(extract_request_attributes!(options))
- attributes["data-js-type"] = options.delete(:js_type) || "remote"
-
- attributes
- end
-
- def remote_form_for(record_or_name_or_array, *args, &proc)
- options = args.extract_options!
- object_name = extract_object_name_for_form!(args, options, record_or_name_or_array)
-
- concat(form_remote_tag(options))
- fields_for(object_name, *(args << options), &proc)
- concat('</form>'.html_safe!)
- end
- alias_method :form_remote_for, :remote_form_for
-
def form_remote_tag(options = {}, &block)
attributes = {}
attributes.merge!(extract_remote_attributes!(options))
attributes.merge!(options)
- url = attributes.delete("data-url")
- form_tag(attributes.delete(:action) || url, attributes, &block)
+ url = attributes.delete(:url)
+ form_tag(attributes.delete(:action) || url_for(url), attributes, &block)
+ end
+
+ def extract_remote_attributes!(options)
+ attributes = options.delete(:html) || {}
+
+ update = options.delete(:update)
+ if update.is_a?(Hash)
+ attributes["data-update-success"] = update[:success]
+ attributes["data-update-failure"] = update[:failure]
+ else
+ attributes["data-update-success"] = update
+ end
+
+ attributes["data-update-position"] = options.delete(:position)
+ attributes["data-method"] = options.delete(:method)
+ attributes["data-remote"] = true
+
+ attributes
end
def link_to_remote(name, url, options = {})
@@ -37,12 +35,6 @@ module ActionView
attributes.merge!(extract_remote_attributes!(options))
attributes.merge!(options)
- html["data-update-position"] = options.delete(:position)
- html["data-method"] = options.delete(:method)
- html["data-remote"] = "true"
-
- html.merge!(options)
-
url = url_for(url) if url.is_a?(Hash)
link_to(name, url, attributes)
end
@@ -118,17 +110,6 @@ module ActionView
SCRIPT
end
- # TODO: Move to javascript helpers - BR
- class JSFunction
- def initialize(statements, *arguments)
- @statements, @arguments = statements, arguments
- end
-
- def as_json(options = nil)
- "function(#{@arguments.join(", ")}) {#{@statements}}"
- end
- end
-
module Rails2Compatibility
def set_callbacks(options, html)
[:complete, :failure, :success, :interactive, :loaded, :loading].each do |type|
@@ -159,66 +140,15 @@ module ActionView
private
- def extract_request_attributes!(options)
- attributes = {}
- attributes["data-method"] = options.delete(:method)
-
- url = options.delete(:url)
- attributes["data-url"] = url.is_a?(Hash) ? url_for(url) : url
-
- #TODO: Remove all references to prototype - BR
- if options.delete(:form)
- attributes["data-parameters"] = 'Form.serialize(this)'
- elsif submit = options.delete(:submit)
- attributes["data-parameters"] = "Form.serialize('#{submit}')"
- elsif with = options.delete(:with)
- if with !~ /[\{=(.]/
- attributes["data-with"] = "'#{with}=' + encodeURIComponent(value)"
- else
- attributes["data-with"] = with
- end
- end
-
- purge_unused_attributes!(attributes)
- end
-
- def extract_update_attributes!(options)
- attributes = {}
- update = options.delete(:update)
- if update.is_a?(Hash)
- attributes["data-update-success"] = update[:success]
- attributes["data-update-failure"] = update[:failure]
- else
- attributes["data-update-success"] = update
+ # TODO: Move to javascript helpers - BR
+ class JSFunction
+ def initialize(statements, *arguments)
+ @statements, @arguments = statements, arguments
end
- attributes["data-update-position"] = options.delete(:position)
- purge_unused_attributes!(attributes)
- end
-
- def extract_observer_attributes!(options)
- attributes = extract_remote_attributes!(options)
- attributes["data-observed"] = options.delete(:observed)
-
- callback = options.delete(:function)
- frequency = options.delete(:frequency)
- if callback
- attributes["data-observer-code"] = create_js_function(callback, "element", "value")
- end
- if frequency && frequency != 0
- attributes["data-frequency"] = frequency.to_i
+ def as_json(options = nil)
+ "function(#{@arguments.join(", ")}) {#{@statements}}"
end
-
- purge_unused_attributes!(attributes)
- end
-
- def purge_unused_attributes!(attributes)
- attributes.delete_if {|key, value| value.nil? }
- attributes
- end
-
- def create_js_function(statements, *arguments)
- "function(#{arguments.join(", ")}) {#{statements}}"
end
end