Sha256: b907ad640c2f08517479f473badc29c2ca03cfc6558f0ba807cd9dfb07d8f6db

Contents?: true

Size: 1.78 KB

Versions: 1

Compression:

Stored size: 1.78 KB

Contents

module Locomotive
  module Wagon

    class ContentTypeDecorator < SimpleDelegator

      include ToHashConcern

      def initialize(entity, existing_fields = [])
        @existing_fields = existing_fields
        super(entity)
      end

      def __attributes__
        %i(name slug description label_field_name fields
          order_by order_direction group_by
          public_submission_enabled public_submission_accounts
          raw_item_template display_settings)
      end

      def fields
        return @fields if @fields

        @fields = __getobj__.fields.no_associations.map { |f| ContentTypeFieldDecorator.new(f, @existing_fields.include?(f.name)) }

        @existing_fields.each do |name|
          # the field exists remotely but does not exist locally, delete it
          if __getobj__.fields.by_name(name).nil?
            @fields.insert(0, { name: name, _destroy: true })
          end
        end

        @fields
      end

      def description
        self[:description]
      end

      def order_by
        self[:order_by]
      end

      def group_by
        self[:group_by]
      end

      def public_submission_enabled
        self[:public_submission_enabled]
      end

      def public_submission_accounts
        self[:public_submission_accounts]
      end

      def raw_item_template
        self[:raw_item_template]
      end

      def display_settings
        self[:display_settings]
      end

      def with_relationships?
        __getobj__.fields.associations.count > 0
      end

    end

    class ContentTypeWithOnlyRelationshipsDecorator < ContentTypeDecorator

      def __attributes__
        %i(name slug fields)
      end

      def fields
        @fields ||= __getobj__.fields.associations.map { |f| ContentTypeFieldDecorator.new(f) }
      end

    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
locomotivecms_wagon-2.0.0.pre.beta.1 lib/locomotive/wagon/decorators/content_type_decorator.rb