Sha256: 17d3a99a8270f3da83ffcd3dccb22d790607b74b195eabef6fe6ab9489e46921

Contents?: true

Size: 1.49 KB

Versions: 58

Compression:

Stored size: 1.49 KB

Contents

# frozen_string_literal: true

module Alchemy
  class Api::NodesController < Api::BaseController
    before_action :load_node, except: :index
    before_action :authorize_access, only: [:move, :toggle_folded]

    def index
      @nodes = Node.all
      @nodes = @nodes.includes(:parent)
      @nodes = @nodes.ransack(params[:filter]).result

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

      render json: @nodes, adapter: :json, root: "data", meta: meta_data, include: params[:include]
    end

    def move
      target_parent_node = Node.find(params[:target_parent_id])
      @node.move_to_child_with_index(target_parent_node, params[:new_position])
      render json: @node, serializer: NodeSerializer
    end

    def toggle_folded
      @node.update(folded: !@node.folded)
      render json: @node, serializer: NodeSerializer
    end

    private

    def load_node
      @node = Node.find(params[:id])
    end

    def authorize_access
      authorize! :update, @node
    end

    def meta_data
      {
        total_count: total_count_value,
        per_page: per_page_value,
        page: page_value,
      }
    end

    def total_count_value
      params[:page] ? @nodes.total_count : @nodes.size
    end

    def per_page_value
      if params[:page]
        (params[:per_page] || Kaminari.config.default_per_page).to_i
      else
        @nodes.size
      end
    end

    def page_value
      params[:page] ? params[:page].to_i : 1
    end
  end
end

Version data entries

58 entries across 58 versions & 1 rubygems

Version Path
alchemy_cms-6.0.0 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-5.3.4 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-6.0.0.pre.rc7 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-5.3.3 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-5.3.2 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-5.3.1 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-5.3.0 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-6.0.0.pre.rc6 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-5.2.7 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-5.2.6 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-5.1.10 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-5.0.10 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-6.0.0.pre.rc5 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-6.0.0.pre.rc4 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-6.0.0.pre.rc3 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-5.2.5 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-5.1.9 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-5.0.9 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-5.2.4 app/controllers/alchemy/api/nodes_controller.rb
alchemy_cms-5.1.8 app/controllers/alchemy/api/nodes_controller.rb