Sha256: 2dff866724ce083a3bedc99a2bdfc8efc41480b3f90a66d23a885b731b38ca49

Contents?: true

Size: 1.59 KB

Versions: 5

Compression:

Stored size: 1.59 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_delegator :fields, :files, :file_fields
    def_delegator :fields, :default, :fields_with_default

    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
      # FIXME: select_fields ALWAYS returns I18nField even if the site is not localized
      fields.localized_names + select_fields.map(&:name)
    end

    def localized?
      !fields.localized_names.blank?
    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

5 entries across 5 versions & 1 rubygems

Version Path
locomotivecms_steam-1.2.1 lib/locomotive/steam/entities/content_type.rb
locomotivecms_steam-1.2.0 lib/locomotive/steam/entities/content_type.rb
locomotivecms_steam-1.2.0.rc3 lib/locomotive/steam/entities/content_type.rb
locomotivecms_steam-1.2.0.rc2 lib/locomotive/steam/entities/content_type.rb
locomotivecms_steam-1.2.0.rc1 lib/locomotive/steam/entities/content_type.rb