diff --git a/vendor/plugins/auto_complete/README b/vendor/plugins/auto_complete/README new file mode 100644 index 0000000..e08a815 --- /dev/null +++ b/vendor/plugins/auto_complete/README @@ -0,0 +1,23 @@ +Example: + + # Controller + class BlogController < ApplicationController + auto_complete_for :post, :title + end + + # View + <%= text_field_with_auto_complete :post, title %> + +By default, auto_complete_for limits the results to 10 entries, +and sorts by the given field. + +auto_complete_for takes a third parameter, an options hash to +the find method used to search for the records: + + auto_complete_for :post, :title, :limit => 15, :order => 'created_at DESC' + +For more examples, see script.aculo.us: +* http://script.aculo.us/demos/ajax/autocompleter +* http://script.aculo.us/demos/ajax/autocompleter_customized + +Copyright (c) 2007 David Heinemeier Hansson, released under the MIT license diff --git a/vendor/plugins/auto_complete/Rakefile b/vendor/plugins/auto_complete/Rakefile new file mode 100644 index 0000000..5af4e82 --- /dev/null +++ b/vendor/plugins/auto_complete/Rakefile @@ -0,0 +1,22 @@ +require 'rake' +require 'rake/testtask' +require 'rake/rdoctask' + +desc 'Default: run unit tests.' +task :default => :test + +desc 'Test auto_complete plugin.' +Rake::TestTask.new(:test) do |t| + t.libs << 'lib' + t.pattern = 'test/**/*_test.rb' + t.verbose = true +end + +desc 'Generate documentation for auto_complete plugin.' +Rake::RDocTask.new(:rdoc) do |rdoc| + rdoc.rdoc_dir = 'rdoc' + rdoc.title = 'Auto Complete' + rdoc.options << '--line-numbers' << '--inline-source' + rdoc.rdoc_files.include('README') + rdoc.rdoc_files.include('lib/**/*.rb') +end diff --git a/vendor/plugins/auto_complete/init.rb b/vendor/plugins/auto_complete/init.rb new file mode 100644 index 0000000..87bf027 --- /dev/null +++ b/vendor/plugins/auto_complete/init.rb @@ -0,0 +1,2 @@ +ActionController::Base.send :include, AutoComplete +ActionController::Base.helper AutoCompleteMacrosHelper \ No newline at end of file diff --git a/vendor/plugins/auto_complete/lib/auto_complete.rb b/vendor/plugins/auto_complete/lib/auto_complete.rb new file mode 100644 index 0000000..4afc7c2 --- /dev/null +++ b/vendor/plugins/auto_complete/lib/auto_complete.rb @@ -0,0 +1,47 @@ +module AutoComplete + + def self.included(base) + base.extend(ClassMethods) + end + + # + # Example: + # + # # Controller + # class BlogController < ApplicationController + # auto_complete_for :post, :title + # end + # + # # View + # <%= text_field_with_auto_complete :post, title %> + # + # By default, auto_complete_for limits the results to 10 entries, + # and sorts by the given field. + # + # auto_complete_for takes a third parameter, an options hash to + # the find method used to search for the records: + # + # auto_complete_for :post, :title, :limit => 15, :order => 'created_at DESC' + # + # For help on defining text input fields with autocompletion, + # see ActionView::Helpers::JavaScriptHelper. + # + # For more examples, see script.aculo.us: + # * http://script.aculo.us/demos/ajax/autocompleter + # * http://script.aculo.us/demos/ajax/autocompleter_customized + module ClassMethods + def auto_complete_for(object, method, options = {}) + define_method("auto_complete_for_#{object}_#{method}") do + find_options = { + :conditions => [ "LOWER(#{method}) LIKE ?", '%' + params[object][method].downcase + '%' ], + :order => "#{method} ASC", + :limit => 10 }.merge!(options) + + @items = object.to_s.camelize.constantize.find(:all, find_options) + + render :inline => "<%= auto_complete_result @items, '#{method}' %>" + end + end + end + +end \ No newline at end of file diff --git a/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb b/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb new file mode 100644 index 0000000..1d25ee4 --- /dev/null +++ b/vendor/plugins/auto_complete/lib/auto_complete_macros_helper.rb @@ -0,0 +1,143 @@ +module AutoCompleteMacrosHelper + # 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 an HTML