diff options
Diffstat (limited to 'actionpack/lib/action_view/helpers/javascript_helper.rb')
-rw-r--r-- | actionpack/lib/action_view/helpers/javascript_helper.rb | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/actionpack/lib/action_view/helpers/javascript_helper.rb b/actionpack/lib/action_view/helpers/javascript_helper.rb index 8f64acf102..ee6481b86d 100644 --- a/actionpack/lib/action_view/helpers/javascript_helper.rb +++ b/actionpack/lib/action_view/helpers/javascript_helper.rb @@ -39,7 +39,7 @@ module ActionView JAVASCRIPT_PATH = File.join(File.dirname(__FILE__), 'javascripts') end - include PrototypeHelper + include AjaxHelperCompat # Returns a link of the given +name+ that will trigger a JavaScript +function+ using the # onclick handler and return false after the fact. @@ -188,6 +188,48 @@ module ActionView end protected + def convert_options_to_javascript!(html_options, url = '') + confirm, popup = html_options.delete("confirm"), html_options.delete("popup") + + method, href = html_options.delete("method"), html_options['href'] + + if popup && method + raise ActionView::ActionViewError, "You can't use :popup and :method in the same link" + elsif confirm && popup + add_confirm_to_attributes!(html_options, confirm) + html_options["data-popup"] = popup_attributes(popup) + elsif confirm && method + add_confirm_to_attributes!(html_options, confirm) + add_method_to_attributes!(html_options, method, url) + elsif confirm + add_confirm_to_attributes!(html_options, confirm) + elsif method + add_method_to_attributes!(html_options, method, url) + elsif popup + html_options["data-popup"] = popup_attributes(popup) + end + end + + def add_confirm_to_attributes!(html_options, confirm) + html_options["data-confirm"] = confirm if confirm + end + + def add_method_to_attributes!(html_options, method, url = nil) + html_options["rel"] = "nofollow" if method.to_s.downcase == "delete" + html_options["data-method"] = method + if url.size > 0 + html_options["data-url"] = url + end + end + + def add_disable_with_to_attributes!(html_options, disable_with) + html_options["data-disable-with"] = disable_with if disable_with + end + + def popup_attributes(popup) + popup.is_a?(Array) ? "{title: '#{popup.first}', options: '#{popup.last}'}" : "true" + end + def options_for_javascript(options) if options.empty? '{}' |