Sha256: 9b31dd68a39b6e8c65c763c8b7459659af28bb351979bd354d601bdcb7447fbf

Contents?: true

Size: 1.43 KB

Versions: 4

Compression:

Stored size: 1.43 KB

Contents

module AbAdmin
  module Models
    module Structure
      extend ActiveSupport::Concern

      included do
        include AbAdmin::Concerns::Headerable
        include AbAdmin::Concerns::NestedSet
        extend EnumField::EnumeratedAttribute

        enumerated_attribute :structure_type
        enumerated_attribute :position_type

        validates_numericality_of :position_type_id, only_integer: true
        validates_numericality_of :structure_type_id, only_integer: true

        has_one :static_page, dependent: :destroy
        has_many :visible_children, -> { where(is_visible: true) }, class_name: name, foreign_key: 'parent_id'

        scope :visible, lambda { where(is_visible: true) }
        scope :with_type, lambda { |structure_type| where(structure_type_id: structure_type.id) }
        scope :with_depth, lambda { |level| where(depth: level.to_i) }
        scope :with_position, lambda { |position_type| where(position_type_id: position_type.id).order('lft DESC') }

        scope :with_kind, lambda { |structure_type|
          ActiveSupport::Deprecation.warn('with_kind is deprecated, use with_type instead')
          with_type.call(structure_type)
        }
      end

      def redirect?
        structure_type_id == StructureType.redirect.id
      end

      def admin_title
        [title, structure_type.title, position_type.title, "#{self.class.han(:is_visible)}: #{is_visible ? '+' : '-'}"].join(' | ')
      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ab_admin-0.6.1 lib/ab_admin/models/structure.rb
ab_admin-0.6.0 lib/ab_admin/models/structure.rb
ab_admin-0.5.0 lib/ab_admin/models/structure.rb
ab_admin-0.4.0 lib/ab_admin/models/structure.rb