engine/app/models/extensions/page/parts.rb

60 lines
1.6 KiB
Ruby
Raw Normal View History

# @DEPRECATED
# module Models
# module Extensions
# module Page
# module Parts
#
# extend ActiveSupport::Concern
#
# included do
# embeds_many :parts, :class_name => 'PagePart'
#
# before_validation do |p|
# if p.parts.empty?
# p.parts << PagePart.build_body_part(p.respond_to?(:body) ? p.body : nil)
# end
# end
# end
#
# module InstanceMethods
#
# def parts_attributes=(attributes)
# self.update_parts(attributes.values.map { |attrs| PagePart.new(attrs) })
# end
#
# def joined_parts
# self.parts.enabled.map(&:template).join('')
# end
#
# protected
#
# def update_parts(parts)
# performed = []
#
# # add / update
# parts.each do |part|
# if (existing = self.parts.detect { |p| p.id == part.id || p.slug == part.slug })
# existing.attributes = part.attributes.delete_if { |k, v| %w{_id slug}.include?(k) }
# else
# self.parts << (existing = part)
# end
# performed << existing unless existing.disabled?
# end
#
# # disable missing parts
# (self.parts.map(&:slug) - performed.map(&:slug)).each do |slug|
# self.parts.detect { |p| p.slug == slug }.disabled = true
# end
# end
#
# def update_parts!(new_parts)
# self.update_parts(new_parts)
# self.save
# end
#
# end
# end
# end
# end
# end