Sha256: 8f94bd3164817ac4c2740b1646f23770b4961a776492fdac6936f45e70d65752

Contents?: true

Size: 1.06 KB

Versions: 1

Compression:

Stored size: 1.06 KB

Contents

module Locomotive
  module Extensions
    module Page
      module Layout

        extend ActiveSupport::Concern

        included do

          ## fields ##
          field :is_layout,     type: Boolean, default: false
          field :allow_layout,  type: Boolean, default: ->{ new_record? }

          ## associations ##
          belongs_to  :layout, class_name: 'Locomotive::Page', inverse_of: :layout_children, validate: false
          has_many    :layout_children, class_name: 'Locomotive::Page', inverse_of: :layout

          ## callbacks ##
          before_validation :set_default_raw_template_if_layout

          ## scopes ##
          scope :layouts, where(is_layout: true)

        end

        private

        def set_default_raw_template_if_layout
          return true unless self.allow_layout?

          if self.layout
            self.raw_template = %({% extends "#{self.layout.fullpath}" %})
          elsif self.layout_id_was
            # use case: layout -> no layout
            self.raw_template = nil
          end
        end

      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
locomotive_cms-2.5.7 app/models/locomotive/extensions/page/layout.rb