Sha256: 2d921aa8218ad6f2ed84babedca035ec5137c2fdf72ac691c27251e2bcf67a2a

Contents?: true

Size: 1.26 KB

Versions: 48

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true

module Alchemy
  # = Fixed page attributes
  #
  # Fixed page attributes are not allowed to be changed by the user.
  #
  # Define fixed page attributes on the page layout definition of a page.
  #
  # == Example
  #
  #     # page_layout.yml
  #     - name: Index
  #       unique: true
  #       fixed_attributes:
  #         - public_on: nil
  #         - public_until: nil
  #
  class Page::FixedAttributes
    attr_reader :page

    def initialize(page)
      @page = page
    end

    # All fixed attributes defined on page
    #
    # Aliased as +#all+
    #
    # @return Hash
    #
    def attributes
      @_attributes ||= page.definition.fetch("fixed_attributes", {}).symbolize_keys
    end
    alias_method :all, :attributes

    # True if fixed attributes are defined on page
    #
    # Aliased as +#present?+
    #
    # @return Boolean
    #
    def any?
      attributes.present?
    end
    alias_method :present?, :any?

    # True if given attribute name is defined on page
    #
    # @return Boolean
    #
    def fixed?(name)
      return false if name.nil?

      attributes.key?(name.to_sym)
    end

    # Returns the attribute by key
    #
    def [](name)
      return nil if name.nil?

      attributes[name.to_sym]
    end
  end
end

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
alchemy_cms-5.3.8 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.3.7 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.3.6 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.3.5 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.3.4 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.3.3 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.3.2 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.3.1 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.3.0 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.2.7 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.2.6 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.1.10 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.0.10 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.2.5 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.1.9 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.0.9 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.2.4 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.1.8 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.0.8 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-5.0.7 app/models/alchemy/page/fixed_attributes.rb