Class: Admin::PagesController

Inherits:
AdminController show all
Defined in:
app/controllers/admin/pages_controller.rb

Instance Method Summary collapse

Methods inherited from SlicesController

should_raise_exceptions?

Instance Method Details

#createObject



19
20
21
22
23
24
25
26
27
# File 'app/controllers/admin/pages_controller.rb', line 19

def create
  page_attrs = params[:page].merge(author: current_admin)
  @page = new_page_class.make(page_attrs)
  @layouts = [['Default', 'default']]

  respond_with(:admin, @page) do |format|
    format.html { redirect_to admin_page_path(@page) }
  end
end

#destroyObject



66
67
68
69
70
71
72
73
# File 'app/controllers/admin/pages_controller.rb', line 66

def destroy
  @page = Page.find_by_id!(params[:id])
  @page.destroy
  respond_to do |format|
    format.html { redirect_to admin_site_maps_path }
    format.json { head :no_content }
  end
end

#newObject



11
12
13
14
15
16
17
# File 'app/controllers/admin/pages_controller.rb', line 11

def new
  @page = Page.new(parent_id: params[:parent_id]) # TODO: change parent_id to path
  @layouts = Layout.all
  respond_with(:admin, @page) do |format|
    format.html { render layout: !request.xhr? }
  end
end

#showObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'app/controllers/admin/pages_controller.rb', line 29

def show
  page = Page.find_by_id!(params[:id])
  @page = presenter_class(page.class).new(page)
  @layout = Layout.new(page.layout)

  respond_with(:admin, @page) do |format|
    format.json do
      render json: as_json_for_page(page)
    end
    format.hbs do
      hbs_path = if params[:slice]
                   File.join(params[:slice], 'templates', params[:template])
                 else
                   params[:template]
                 end
      render hbs_path
    end
  end
rescue Page::NotFound
  redirect_to admin_site_maps_path
end

#updateObject



51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'app/controllers/admin/pages_controller.rb', line 51

def update
  @page = Page.find_by_id!(params[:id])
  if entry_page?
    params[:page][:set_slices] = params[:page].delete(:slices)
  end

  @page.update_attributes(params[:page])

  if @page.valid?
    render json: as_json_for_page(@page)
  else
    render json: @page.errors.as_json, status: 422
  end
end