module ActiveScaffold::Actions::FieldSearch

Public Class Methods

included(base) click to toggle source
# File lib/active_scaffold/actions/field_search.rb, line 4
def self.included(base)
  base.before_filter :search_authorized_filter, :only => :show_search
  base.before_filter :store_search_params_into_session, :only => [:index]
  base.before_filter :do_search, :only => [:index]
  base.helper_method :field_search_params
  base.helper_method :field_search_columns
end

Public Instance Methods

Protected Instance Methods

field_search_columns() click to toggle source
# File lib/active_scaffold/actions/field_search.rb, line 81
def field_search_columns
  active_scaffold_config.field_search.columns
end
field_search_formats() click to toggle source
# File lib/active_scaffold/actions/field_search.rb, line 77
def field_search_formats
  (default_formats + active_scaffold_config.formats + active_scaffold_config.field_search.formats).uniq
end
field_search_names() click to toggle source
# File lib/active_scaffold/actions/field_search.rb, line 85
def field_search_names
  field_search_columns.collect(&:name)
end
field_search_params() click to toggle source
# File lib/active_scaffold/actions/field_search.rb, line 33
def field_search_params
  search_params || {}
end
field_search_respond_to_html() click to toggle source
# File lib/active_scaffold/actions/field_search.rb, line 37
def field_search_respond_to_html
  render(:action => "field_search")
end
field_search_respond_to_js() click to toggle source
# File lib/active_scaffold/actions/field_search.rb, line 41
def field_search_respond_to_js
  render(:partial => "field_search")
end
prepare_search_conditions(params) click to toggle source
# File lib/active_scaffold/actions/field_search.rb, line 49
def prepare_search_conditions(params)
  unless params.nil?
    text_search = active_scaffold_config.field_search.text_search
    search_conditions = []
    human_condition_columns = [] if active_scaffold_config.field_search.human_conditions
    columns = field_search_columns
    params.each do |key, value|
      next unless columns.include? key
      search_condition = self.class.condition_for_column(active_scaffold_config.columns[key], value, text_search)
      unless search_condition.blank?
        search_conditions << search_condition
        human_condition_columns << active_scaffold_config.columns[key] unless human_condition_columns.nil?
      end
    end
    self.active_scaffold_conditions = merge_conditions(self.active_scaffold_conditions, *search_conditions)
    if search_conditions.blank?
      @filtered = false
    else
      @filtered = human_condition_columns.nil? ? true : human_condition_columns
    end

    includes_for_search_columns = columns.collect{ |column| column.includes}.flatten.uniq.compact
    self.active_scaffold_includes.concat includes_for_search_columns

    active_scaffold_config.list.user.page = nil
  end
end
set_field_search_default_params(default_params) click to toggle source
# File lib/active_scaffold/actions/field_search.rb, line 27
def set_field_search_default_params(default_params)
  if (params[:search].nil? && search_params.nil?) || (params[:search].is_a?(String) && params[:search].blank?)
    params[:search] = default_params.is_a?(Proc) ? self.instance_eval(&default_params) : default_params
  end
end
store_search_params_into_session() click to toggle source
# File lib/active_scaffold/actions/field_search.rb, line 21
def store_search_params_into_session
  set_field_search_default_params(active_scaffold_config.field_search.default_params) unless active_scaffold_config.field_search.default_params.nil?
  super
  active_scaffold_session_storage[:search] = nil if search_params.is_a?(String)
end

Private Instance Methods

search_authorized_filter() click to toggle source
# File lib/active_scaffold/actions/field_search.rb, line 91
def search_authorized_filter
  link = active_scaffold_config.field_search.link || active_scaffold_config.field_search.class.link
  raise ActiveScaffold::ActionNotAllowed unless self.send(link.security_method)
end