Class: MerbAdmin::Main

Inherits:
Application show all
Includes:
Merb::MerbAdmin::MainHelper
Defined in:
app/controllers/main.rb

Instance Method Summary collapse

Methods included from Merb::MerbAdmin::MainHelper

#object_property, #object_title, #paginate

Instance Method Details

#createObject



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'app/controllers/main.rb', line 52

def create
  object = params[@abstract_model.singular_name] || {}
  # Delete fields that are blank
  object.each do |key, value|
    object[key] = nil if value.blank?
  end
  has_one_associations = @abstract_model.has_one_associations.map{|association| [association, (params[:associations] || {}).delete(association[:name])]}
  has_many_associations = @abstract_model.has_many_associations.map{|association| [association, (params[:associations] || {}).delete(association[:name])]}
  @object = @abstract_model.new(object)
  if @object.save && has_one_associations.each{|association, id| update_has_one_association(association, id)} && has_many_associations.each{|association, ids| update_has_many_association(association, ids)}
    if params[:_continue]
      redirect(url(:admin_edit, :model_name => @abstract_model.singular_name, :id => @object.id), :message => {:notice => "#{@abstract_model.pretty_name} was successfully created"})
    elsif params[:_add_another]
      redirect(url(:admin_new, :model_name => @abstract_model.singular_name), :message => {:notice => "#{@abstract_model.pretty_name} was successfully created"})
    else
      redirect(url(:admin_list, :model_name => @abstract_model.singular_name), :message => {:notice => "#{@abstract_model.pretty_name} was successfully created"})
    end
  else
    message[:error] = "#{@abstract_model.pretty_name} failed to be created"
    render(:new, :layout => 'form')
  end
end

#deleteObject



97
98
99
# File 'app/controllers/main.rb', line 97

def delete
  render(:layout => 'form')
end

#destroyObject



101
102
103
104
105
106
107
# File 'app/controllers/main.rb', line 101

def destroy
  if @object.destroy
    redirect(url(:admin_list, :model_name => @abstract_model.singular_name), :message => {:notice => "#{@abstract_model.pretty_name} was successfully destroyed"})
  else
    raise BadRequest
  end
end

#editObject



48
49
50
# File 'app/controllers/main.rb', line 48

def edit
  render(:layout => 'form')
end

#indexObject



10
11
12
# File 'app/controllers/main.rb', line 10

def index
  render(:layout => 'dashboard')
end

#listObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/controllers/main.rb', line 14

def list
  options = {}
  merge_query!(options)
  merge_filter!(options)
  merge_sort!(options)
  merge_sort_reverse!(options)

  if params[:all]
    options = {
      :limit => MerbAdmin[:per_page] * 2,
    }.merge(options)
    @objects = @abstract_model.all(options).reverse
  else
    @current_page = (params[:page] || 1).to_i
    options = {
      :page => @current_page,
      :per_page => MerbAdmin[:per_page],
    }.merge(options)
    @page_count, @objects = @abstract_model.paginated(options)
    options.delete(:page)
    options.delete(:per_page)
    options.delete(:offset)
    options.delete(:limit)
  end

  @record_count = @abstract_model.count(options)
  render(:layout => 'list')
end

#newObject



43
44
45
46
# File 'app/controllers/main.rb', line 43

def new
  @object = @abstract_model.new
  render(:layout => 'form')
end

#updateObject



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'app/controllers/main.rb', line 75

def update
  object = params[@abstract_model.singular_name] || {}
  # Delete fields that are blank
  object.each do |key, value|
    object[key] = nil if value.blank?
  end
  has_one_associations = @abstract_model.has_one_associations.map{|association| [association, (params[:associations] || {}).delete(association[:name])]}
  has_many_associations = @abstract_model.has_many_associations.map{|association| [association, (params[:associations] || {}).delete(association[:name])]}
  if @object.update_attributes(object) && has_one_associations.each{|association, id| update_has_one_association(association, id)} && has_many_associations.each{|association, ids| update_has_many_association(association, ids)} 
    if params[:_continue]
      redirect(url(:admin_edit, :model_name => @abstract_model.singular_name, :id => @object.id), :message => {:notice => "#{@abstract_model.pretty_name} was successfully updated"})
    elsif params[:_add_another]
      redirect(url(:admin_new, :model_name => @abstract_model.singular_name), :message => {:notice => "#{@abstract_model.pretty_name} was successfully updated"})
    else
      redirect(url(:admin_list, :model_name => @abstract_model.singular_name), :message => {:notice => "#{@abstract_model.pretty_name} was successfully updated"})
    end
  else
    message[:error] = "#{@abstract_model.pretty_name} failed to be updated"
    render(:edit, :layout => 'form')
  end
end