Sha256: 7cccf803370b665a61e8a1edecc9fa4f21d1d20d68c036bf231e62fdcb712ce4

Contents?: true

Size: 1.33 KB

Versions: 9

Compression:

Stored size: 1.33 KB

Contents

module Locomotive::Steam

  class ContentType

    include Locomotive::Steam::Models::Entity
    extend Forwardable

    def_delegator :fields, :associations, :association_fields
    def_delegator :fields, :selects, :select_fields

    def initialize(attributes = {})
      super({
        order_by:         '_position',
        order_direction:  'asc'
      }.merge(attributes))
    end

    def fields
      # Note: this returns an instance of the ContentTypeFieldRepository class
      self.entries_custom_fields
    end

    def fields_by_name
      @fields_by_name ||= (fields.all.inject({}) do |memo, field|
        memo[field.name] = field
        memo
      end).with_indifferent_access
    end

    def localized_names
      fields.localized_names + select_fields.map(&:name)
    end

    def persisted_field_names
      [].tap do |names|
        fields_by_name.each do |name, field|
          _name = field.persisted_name
          names << _name if _name
        end
      end
    end

    def label_field_name
      (self[:label_field_name] || fields.first.name).to_sym
    end

    def order_by
      name = self[:order_by] == 'manually' ? '_position' : self[:order_by]

      # check if name is an id of field
      if field = fields.find(name)
        name = field.name
      end

      { name.to_sym => self.order_direction.to_s }
    end

  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
locomotivecms_steam-1.0.0 lib/locomotive/steam/entities/content_type.rb
locomotivecms_steam-1.0.0.rc10 lib/locomotive/steam/entities/content_type.rb
locomotivecms_steam-1.0.0.rc9 lib/locomotive/steam/entities/content_type.rb
locomotivecms_steam-1.0.0.rc8 lib/locomotive/steam/entities/content_type.rb
locomotivecms_steam-1.0.0.rc6 lib/locomotive/steam/entities/content_type.rb
locomotivecms_steam-1.0.0.rc4 lib/locomotive/steam/entities/content_type.rb
locomotivecms_steam-1.0.0.rc3 lib/locomotive/steam/entities/content_type.rb
locomotivecms_steam-1.0.0.rc2 lib/locomotive/steam/entities/content_type.rb
locomotivecms_steam-1.0.0.rc1 lib/locomotive/steam/entities/content_type.rb