Sha256: 0ab4f2d65ed6021d2f1ebb7b690d550e3f6e4bc7cf80cf84809e99b4f6a23f0b

Contents?: true

Size: 1.52 KB

Versions: 61

Compression:

Stored size: 1.52 KB

Contents

# frozen_string_literal: true

module Alchemy
  class Api::ContentsController < Api::BaseController
    # Returns all contents as json object
    #
    # You can either load all or only these for :element_id param
    #
    def index
      # Fix for cancancan not able to merge multiple AR scopes for logged in users
      if can? :manage, Alchemy::Content
        @contents = Content.all
      else
        @contents = Content.accessible_by(current_ability, :index)
      end
      if params[:element_id].present?
        @contents = @contents.where(element_id: params[:element_id])
      end
      @contents = @contents.includes(*content_includes)

      render json: @contents, adapter: :json, root: "contents"
    end

    # Returns a json object for content
    #
    # You can either load it from :id param
    # or even more useful via passing the element id and the name of the content
    #
    #   $ bin/rake routes
    #
    # for more infos on how the url looks like.
    #
    def show
      if params[:id]
        @content = Content.where(id: params[:id]).includes(:essence).first
      elsif params[:element_id] && params[:name]
        @content = Content.where(
          element_id: params[:element_id],
          name: params[:name],
        ).includes(*content_includes).first || raise(ActiveRecord::RecordNotFound)
      end
      authorize! :show, @content
      respond_with @content
    end

    private

    def content_includes
      [
        {
          essence: :ingredient_association,
        },
      ]
    end
  end
end

Version data entries

61 entries across 61 versions & 1 rubygems

Version Path
alchemy_cms-5.3.8 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-5.3.7 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-5.3.6 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-5.3.5 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-5.3.4 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-6.0.0.pre.rc7 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-5.3.3 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-5.3.2 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-5.3.1 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-5.3.0 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-6.0.0.pre.rc6 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-5.2.7 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-5.2.6 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-5.1.10 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-5.0.10 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-6.0.0.pre.rc5 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-6.0.0.pre.rc4 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-6.0.0.pre.rc3 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-5.2.5 app/controllers/alchemy/api/contents_controller.rb
alchemy_cms-5.1.9 app/controllers/alchemy/api/contents_controller.rb