diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 92aba61..164ca6a 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -169,6 +169,11 @@ class ApplicationController < ActionController::Base fallback_find_by_contents(asset, scope, query, paginate_options, options) end + def find_suggestions(asset, query, options={}) + plugins.dispatch_first(:find_suggestions, asset, query, options) || + fallback_find_suggestions(asset, query, options) + end + private def fallback_find_by_contents(asset, scope, query, paginate_options, options) @@ -177,4 +182,7 @@ class ApplicationController < ActionController::Base {:results => scope.paginate(paginate_options)} end + def fallback_find_suggestions(asset, query, options) + #TODO Implement fallback suggestions solution + end end diff --git a/app/controllers/public/search_controller.rb b/app/controllers/public/search_controller.rb index eae18f7..c4ab956 100644 --- a/app/controllers/public/search_controller.rb +++ b/app/controllers/public/search_controller.rb @@ -4,11 +4,11 @@ class SearchController < PublicController include SearchHelper include ActionView::Helpers::NumberHelper - before_filter :redirect_asset_param, :except => :assets - before_filter :load_category - before_filter :load_search_assets - before_filter :load_query - before_filter :load_filter + before_filter :redirect_asset_param, :except => [:assets, :suggestions] + before_filter :load_category, :except => :suggestions + before_filter :load_search_assets, :except => :suggestions + before_filter :load_query, :except => :suggestions + before_filter :load_filter, :except => :suggestions # Backwards compatibility with old URLs def redirect_asset_param @@ -143,6 +143,10 @@ class SearchController < PublicController render :partial => 'events/events' end + def suggestions + render :text => find_suggestions(params[:term], environment, params[:asset]).to_json + end + ####################################################### protected diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 9524548..604277c 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1402,4 +1402,8 @@ module ApplicationHelper content_tag('ul', article.versions.map {|v| link_to("r#{v.version}", @page.url.merge(:version => v.version))}) end + def search_input_with_suggestions(name, asset, default, options = {}) + text_field_tag name, default, options.merge({:id => 'search-input', 'data-asset' => asset}) + end + end diff --git a/app/views/search/_search_form.html.erb b/app/views/search/_search_form.html.erb index 07cc38b..d044381 100644 --- a/app/views/search/_search_form.html.erb +++ b/app/views/search/_search_form.html.erb @@ -8,7 +8,7 @@