Sha256: c78cd805210b76f5a5e530f93e4dbec6a2ca7426f4a767cd0ca6e85fa87da590

Contents?: true

Size: 1.65 KB

Versions: 32

Compression:

Stored size: 1.65 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 :label, :block_name, :block_priority

    ## methods ##

    def label
      @label || self.slug.humanize
    end

    def block_label
      (@block_name || self.block).try(:humanize)
    end

    def path
      [block, slug].compact.join('--').gsub('/', '--')
    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

32 entries across 32 versions & 1 rubygems

Version Path
locomotivecms-4.2.0.alpha2 app/models/locomotive/editable_element.rb
locomotivecms-4.2.0.alpha1 app/models/locomotive/editable_element.rb
locomotivecms-4.1.1 app/models/locomotive/editable_element.rb
locomotivecms-4.1.0 app/models/locomotive/editable_element.rb
locomotivecms-4.1.0.rc1 app/models/locomotive/editable_element.rb
locomotivecms-4.0.3 app/models/locomotive/editable_element.rb
locomotivecms-4.0.2 app/models/locomotive/editable_element.rb
locomotivecms-4.0.1 app/models/locomotive/editable_element.rb
locomotivecms-4.0.0 app/models/locomotive/editable_element.rb
locomotivecms-4.0.0.rc0 app/models/locomotive/editable_element.rb
locomotivecms-4.0.0.alpha3 app/models/locomotive/editable_element.rb
locomotivecms-3.4.1 app/models/locomotive/editable_element.rb
locomotivecms-4.0.0.alpha2 app/models/locomotive/editable_element.rb
locomotivecms-4.0.0.alpha1 app/models/locomotive/editable_element.rb
locomotivecms-3.4.0 app/models/locomotive/editable_element.rb
locomotivecms-3.3.0 app/models/locomotive/editable_element.rb
locomotivecms-3.3.0.rc3 app/models/locomotive/editable_element.rb
locomotivecms-3.3.0.rc2 app/models/locomotive/editable_element.rb
locomotivecms-3.1.2 app/models/locomotive/editable_element.rb
locomotivecms-3.2.1 app/models/locomotive/editable_element.rb