module SmarterListing::ControllerExtension

Public Class Methods

included(base) click to toggle source
# File lib/smarter_listing/controller_extension.rb, line 3
def self.included base
  base.helper_method :collection, :resource
  base.include SmarterListing::Helper
end

Public Instance Methods

collection() click to toggle source
# File lib/smarter_listing/controller_extension.rb, line 109
def collection
  instance_variable_get(collection_ivar) || load_collection
end
copy() click to toggle source
# File lib/smarter_listing/controller_extension.rb, line 29
def copy
  instance_variable_set resource_ivar, resource.respond_to?(:deep_clone) ? resource.deep_clone : resource.dup
  render 'smarter_listing/copy'
end
create() click to toggle source
# File lib/smarter_listing/controller_extension.rb, line 24
def create
  instance_variable_get(resource_ivar) || instance_variable_set(resource_ivar, model.create(_resource_params))
  render 'smarter_listing/create'
end
destroy() click to toggle source
# File lib/smarter_listing/controller_extension.rb, line 56
def destroy
  resource.destroy
  render 'smarter_listing/destroy'
end
edit() click to toggle source
# File lib/smarter_listing/controller_extension.rb, line 38
def edit
  respond_to do |format|
    format.html { load_collection; resource }
    format.js { resource }
  end
  render 'smarter_listing/edit'
end
filter_parameter() click to toggle source
# File lib/smarter_listing/controller_extension.rb, line 67
def filter_parameter
  self.class.instance_variable_get :@filter_parameter
end
filtered(model) click to toggle source
# File lib/smarter_listing/controller_extension.rb, line 71
def filtered(model)
  results = if params[:show_deleted] == "1" && model.instance_methods.include?(:deleted?)
              if model.column_names.include?("deleted_at")
                model.only_deleted
              else
                results.map(&:deleted?)
              end
            end
  results ||= model.all
  unless params[filter_parameter].blank?
    if model.respond_to?(:search)
      results = results.search { fulltext "#{params[filter_parameter]}" }.results
    elsif model.respond_to?(:search_columns)
      columns = model.search_columns.select{|column| model.column_names.include?(column.to_s)}
      filter = "%#{params[filter_parameter]}%"
      results = results.where columns.map{|column| "#{column} LIKE :query"}.join(" OR "), :query => filter
    elsif model.column_names.include?('name')
      results = results.where("name LIKE ?", "%#{params[filter_parameter]}%")
    end
  end
  results
end
index() click to toggle source
# File lib/smarter_listing/controller_extension.rb, line 8
def index
  collection
  respond_to do |format|
    format.html { render layout: self.class._layout }
    format.js { render action: 'index.js.erb' }
  end
end
load_collection() click to toggle source
# File lib/smarter_listing/controller_extension.rb, line 94
def load_collection
  instance_variable_set collection_ivar, smart_listing_create(model.name.tableize.sub('/','_'), filtered(model), partial: "#{current_engine}/#{table_name}/table_header")
end
load_resource() click to toggle source
# File lib/smarter_listing/controller_extension.rb, line 98
def load_resource
  res = model.find_by_id params[:id]
  res ||= model.new(_resource_params) if action_name == 'new'
  res ||= model.unscoped.find_by_id params[:id] if action_name == 'restore'
  instance_variable_set resource_ivar, res
end
multi_edit() click to toggle source
# File lib/smarter_listing/controller_extension.rb, line 46
def multi_edit
  @multi = true
  edit
end
new() click to toggle source
# File lib/smarter_listing/controller_extension.rb, line 16
def new
  respond_to do |format|
    format.html { load_collection; resource }
    format.js { resource }
  end
  render 'smarter_listing/new'
end
resource() click to toggle source
# File lib/smarter_listing/controller_extension.rb, line 105
def resource
  instance_variable_get(resource_ivar) || load_resource
end
restore() click to toggle source
# File lib/smarter_listing/controller_extension.rb, line 61
def restore
  resource.current_user = current_user if resource.respond_to?(:current_user=)
  resource.restore!
  index
end
show() click to toggle source
# File lib/smarter_listing/controller_extension.rb, line 34
def show
  edit
end
update() click to toggle source
# File lib/smarter_listing/controller_extension.rb, line 51
def update
  resource.update _resource_params
  render 'smarter_listing/update'
end