Class: Spina::Blocks::Admin::PageBlocksController

Inherits:
Admin::AdminController
  • Object
show all
Defined in:
app/controllers/spina/blocks/admin/page_blocks_controller.rb

Instance Method Summary collapse

Instance Method Details

#createObject



20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/controllers/spina/blocks/admin/page_blocks_controller.rb', line 20

def create
  @page_block = @page.page_blocks.build(page_block_params)
  @page_block.position = @page.page_blocks.maximum(:position).to_i + 1

  if @page_block.save
    flash[:success] = I18n.t("spina.page_blocks.added")
  else
    flash[:error] = I18n.t("spina.page_blocks.couldnt_be_added")
  end

  redirect_to(spina.blocks_admin_page_page_blocks_url(page_id: @page.id))
end

#destroyObject



33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'app/controllers/spina/blocks/admin/page_blocks_controller.rb', line 33

def destroy
  @page_block = @page.page_blocks.find(params[:id])

  unless @page_block.block.deletable?
    flash[:error] = I18n.t("spina.page_blocks.cannot_remove_layout_block")
    redirect_to(spina.blocks_admin_page_page_blocks_url(page_id: @page.id))
    return
  end

  @page_block.destroy
  flash[:info] = I18n.t("spina.page_blocks.removed")
  redirect_to(spina.blocks_admin_page_page_blocks_url(page_id: @page.id))
end

#indexObject



11
12
13
14
15
16
17
18
# File 'app/controllers/spina/blocks/admin/page_blocks_controller.rb', line 11

def index
  add_breadcrumb(I18n.t("spina.website.pages"), spina.admin_pages_path, class: "text-gray-400")
  add_breadcrumb(@page.title, spina.edit_admin_page_path(@page), class: "text-gray-400")
  add_breadcrumb(I18n.t("spina.page_blocks.title"))

  @page_blocks = @page.page_blocks.sorted.includes(:block)
  @available_blocks = Spina::Blocks::Block.active.sorted.where.not(id: @page.block_ids)
end

#sortObject



47
48
49
50
51
52
53
54
# File 'app/controllers/spina/blocks/admin/page_blocks_controller.rb', line 47

def sort
  params[:ids].each.with_index do |id, index|
    @page.page_blocks.where(id: id).update_all(position: index + 1)
  end

  flash.now[:info] = I18n.t("spina.page_blocks.sorting_saved")
  render_flash
end