Module: SmarterListing::ControllerExtension

Defined in:
lib/smarter_listing/controller_extension.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



3
4
5
6
# File 'lib/smarter_listing/controller_extension.rb', line 3

def self.included base
  base.helper_method :collection, :resource
  base.include SmarterListing::Helper
end

Instance Method Details

#collectionObject



109
110
111
# File 'lib/smarter_listing/controller_extension.rb', line 109

def collection
  instance_variable_get(collection_ivar) || load_collection
end

#copyObject



29
30
31
32
# 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

#createObject



24
25
26
27
# 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

#destroyObject



56
57
58
59
# File 'lib/smarter_listing/controller_extension.rb', line 56

def destroy
  resource.destroy
  render 'smarter_listing/destroy'
end

#editObject



38
39
40
41
42
43
44
# 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_parameterObject



67
68
69
# File 'lib/smarter_listing/controller_extension.rb', line 67

def filter_parameter
  self.class.instance_variable_get :@filter_parameter
end

#filtered(model) ⇒ Object



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# 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

#indexObject



8
9
10
11
12
13
14
# 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_collectionObject



94
95
96
# 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_resourceObject



98
99
100
101
102
103
# 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_editObject



46
47
48
49
# File 'lib/smarter_listing/controller_extension.rb', line 46

def multi_edit
  @multi = true
  edit
end

#newObject



16
17
18
19
20
21
22
# 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

#resourceObject



105
106
107
# File 'lib/smarter_listing/controller_extension.rb', line 105

def resource
  instance_variable_get(resource_ivar) || load_resource
end

#restoreObject



61
62
63
64
65
# 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

#showObject



34
35
36
# File 'lib/smarter_listing/controller_extension.rb', line 34

def show
  edit
end

#updateObject



51
52
53
54
# File 'lib/smarter_listing/controller_extension.rb', line 51

def update
  resource.update _resource_params
  render 'smarter_listing/update'
end