Sha256: 72b835d2284f7dfeb44e1f73ea4cc860bc73d2bec01832506ca9b08611d59489
Contents?: true
Size: 1.54 KB
Versions: 3
Compression:
Stored size: 1.54 KB
Contents
module Locomotive class EditableElement include Locomotive::Mongoid::Document ## fields ## field :slug field :block field :content, localize: true field :hint field :priority, type: Integer, default: 0 field :fixed, type: Boolean, default: false field :disabled, type: Boolean, default: false, localize: true field :from_parent, type: Boolean, default: false field :locales, type: Array, default: [] ## associations ## embedded_in :page, class_name: 'Locomotive::Page', inverse_of: :editable_elements ## validations ## validates_presence_of :slug ## callbacks ## ## scopes ## scope :by_priority, -> { order_by(priority: :desc) } scope :by_block_and_slug, ->(block, slug) { where(block: block, slug: slug) } ## non-persisted attributes ## attr_accessor :block_name, :block_priority ## methods ## def label self.slug end def block_label (@block_name || self.block).humanize end def disabled? !!self.disabled # the original method does not work quite well with the localization end def _type nil end def page_id self._parent.try(:_id) end # Make sure the current locale is added to the list # of locales for the current element so that we know # in which languages the element was translated. # def add_current_locale locale = ::Mongoid::Fields::I18n.locale.to_s self.locales << locale unless self.locales.include?(locale) end end end
Version data entries
3 entries across 3 versions & 1 rubygems