Sha256: 8aabb6a11fff05d6943437b48f0b13225010d70564f906a712b7aded7c94c7d8

Contents?: true

Size: 1.85 KB

Versions: 42

Compression:

Stored size: 1.85 KB

Contents

module Locomotive
  module Concerns
    module ContentType
      module DefaultValues

        extend ActiveSupport::Concern

        included do
          before_save :set_order_by
          before_save :set_group_by
          before_save :set_label_field
          before_save :set_default_order_by_for_has_many_fields
        end

        protected

        def set_order_by
          unless self.order_by.blank? || %w(created_at updated_at _position).include?(self.order_by)
            if field = self.find_entries_custom_field(self.order_by)
              self.order_by = field._id
            end
          end

          self.order_by ||= 'created_at'
        end

        def set_group_by
          if @group_by
            if field = self.find_entries_custom_field(@group_by)
              self.group_by_field_id = field._id
            end
          end
        end

        def set_label_field
          if @new_label_field_name.present?
            self.label_field_id = self.entries_custom_fields.detect { |f| f.name == @new_label_field_name.underscore }.try(:_id)
          end

          # unknown label_field_name, get the first one instead
          if self.label_field_id.blank?
            self.label_field_id = self.entries_custom_fields.first._id
          end

          field = self.entries_custom_fields.find(self.label_field_id)

          # the label field should always be required
          field.required = true

          self.label_field_name = field.name
        end

        def set_default_order_by_for_has_many_fields
          self.entries_custom_fields.where(:type.in => %w(has_many many_to_many)).each do |field|
            if field.ui_enabled?
              field.order_by = nil
            else
              field.order_by = field.class_name_to_content_type.order_by_definition
            end
          end
        end

      end
    end
  end
end

Version data entries

42 entries across 42 versions & 1 rubygems

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