diff options
Diffstat (limited to 'actionpack/lib/action_view/helpers/javascript_helper.rb')
-rw-r--r-- | actionpack/lib/action_view/helpers/javascript_helper.rb | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/actionpack/lib/action_view/helpers/javascript_helper.rb b/actionpack/lib/action_view/helpers/javascript_helper.rb index 3a120bf306..d3c2972b4f 100644 --- a/actionpack/lib/action_view/helpers/javascript_helper.rb +++ b/actionpack/lib/action_view/helpers/javascript_helper.rb @@ -344,79 +344,6 @@ module ActionView end end - - # Adds AJAX autocomplete functionality to the text input field with the - # DOM ID specified by +field_id+. - # - # This function expects that the called action returns a HTML <ul> list, - # or nothing if no entries should be displayed for autocompletion. - # - # You'll probably want to turn the browser's built-in autocompletion off, - # su be sure to include a autocomplete="off" attribute with your text - # input field. - # - # Required +options+ are: - # <tt>:url</tt>:: Specifies the DOM ID of the element whose - # innerHTML should be updated with the autocomplete - # entries returned by XMLHttpRequest. - # - # Addtional +options+ are: - # <tt>:update</tt>:: Specifies the DOM ID of the element whose - # innerHTML should be updated with the autocomplete - # entries returned by the AJAX request. - # Defaults to field_id + '_auto_complete' - # <tt>:with</tt>:: A JavaScript expression specifying the - # parameters for the XMLHttpRequest. This defaults - # to 'fieldname=value'. - # <tt>:indicator</tt>:: Specifies the DOM ID of an elment which will be - # displayed while autocomplete is running. - def auto_complete_field(field_id, options = {}) - function = "new Ajax.Autocompleter(" - function << "'#{field_id}', " - function << "'" + (options[:update] || "#{field_id}_auto_complete") + "', " - function << "'#{url_for(options[:url])}'" - - js_options = {} - js_options[:tokens] = array_or_string_for_javascript(options[:tokens]) if options[:tokens] - js_options[:callback] = "function(element, value) { return #{options[:with]} }" if options[:with] - js_options[:indicator] = "'#{options[:indicator]}'" if options[:indicator] - function << (', ' + options_for_javascript(js_options) + ')') - - javascript_tag(function) - end - - # Use this method in your view to generate a return for the AJAX automplete requests. - # - # Example action: - # - # def auto_complete_for_item_title - # @items = Item.find(:all, - # :conditions => [ 'LOWER(description) LIKE ?', - # '%' + request.raw_post.downcase + '%' ]) - # render :inline => '<%= auto_complete_result(@items, 'description') %>' - # end - # - # The auto_complete_result can of course also be called from a view belonging to the - # auto_complete action if you need to decorate it further. - def auto_complete_result(entries, field, phrase = nil) - return unless entries - items = entries.map { |entry| content_tag("li", phrase ? highlight(entry[field], phrase) : h(entry[field])) } - content_tag("ul", items.uniq) - end - - # Wrapper for text_field with added AJAX autocompletion functionality. - # - # In your controller, you'll need to define an action called - # auto_complete_for_object_method to respond the AJAX calls, - # - # See the RDoc on ActionController::AutoComplete to learn more about this. - def text_field_with_auto_complete(object, method, tag_options = {}, completion_options = {}) - (completion_options[:skip_style] ? "" : auto_complete_stylesheet) + - text_field(object, method, { :autocomplete => "off" }.merge!(tag_options)) + - content_tag("div", "", :id => "#{object}_#{method}_auto_complete", :class => "auto_complete") + - auto_complete_field("#{object}_#{method}", { :url => { :action => "auto_complete_for_#{object}_#{method}" } }.update(completion_options)) - end - # Returns a JavaScript snippet to be used on the AJAX callbacks for starting # visual effects. # |