60 lines
1.6 KiB
Ruby
60 lines
1.6 KiB
Ruby
# @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
|