Class: Api::PagesController

Inherits:
BaseController
  • Object
show all
Defined in:
app/controllers/alchemy/api/pages_controller.rb

Instance Method Summary collapse

Instance Method Details

#indexObject

Returns all pages as json object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/controllers/alchemy/api/pages_controller.rb', line 10

def index
  # Fix for cancancan not able to merge multiple AR scopes for logged in users
  if can? :edit_content, Alchemy::Page
    @pages = Alchemy::Page.all
  else
    language = Alchemy::Language.find_by(id: params[:language_id]) || Alchemy::Language.current
    @pages = Alchemy::Page.accessible_by(current_ability, :index)
    @pages = @pages.where(language: language)
  end
  @pages = @pages.includes(*page_includes)
  @pages = @pages.ransack(params[:q]).result

  if params[:page]
    @pages = @pages.page(params[:page]).per(params[:per_page])
  end

  render json: @pages, adapter: :json, root: "pages", meta: 
end

#moveObject



54
55
56
57
58
59
60
# File 'app/controllers/alchemy/api/pages_controller.rb', line 54

def move
  @page = Page.find(params[:id])
  authorize! :update, @page
  target_parent_page = Page.find(params[:target_parent_id])
  @page.move_to_child_with_index(target_parent_page, params[:new_position])
  render json: @page, serializer: PageSerializer
end

#nestedObject

Returns all pages as nested json object for tree views

Pass a page_id param to only load tree for this page

Pass elements=true param to include elements for pages



35
36
37
38
39
40
41
42
43
# File 'app/controllers/alchemy/api/pages_controller.rb', line 35

def nested
  @page = Page.find_by(id: params[:page_id]) || Language.current_root_page

  render json: PageTreeSerializer.new(@page,
    ability: current_ability,
    user: current_alchemy_user,
    elements: params[:elements],
    full: true)
end

#showObject

Returns a json object for page

You can either load the page via id or its urlname



49
50
51
52
# File 'app/controllers/alchemy/api/pages_controller.rb', line 49

def show
  authorize! :show, @page
  respond_with @page
end