Sha256: a30690ffa34d5f710e255486e23bea6278c71378b9a4c4b8b8074fa374f978ca

Contents?: true

Size: 1.26 KB

Versions: 12

Compression:

Stored size: 1.26 KB

Contents

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
  #         - visible: false
  #
  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

12 entries across 12 versions & 1 rubygems

Version Path
alchemy_cms-3.6.7 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-3.6.6 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-3.6.5 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-3.6.4 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-3.6.3 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-3.6.2 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-3.6.1 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-4.0.0.beta app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-3.6.0 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-3.5.0 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-3.5.0.rc2 app/models/alchemy/page/fixed_attributes.rb
alchemy_cms-3.5.0.rc1 app/models/alchemy/page/fixed_attributes.rb