#コマ
-class Panel < Peta::Content
+class Panel < Peta::Root
load_manifest
belongs_to :author
has_many :scroll_panels
validates :author_id, :presence => true, :numericality => true, :existence => {:both => false}
validates :publish, :presence => true, :numericality => true
- def self.each_element_class_names
- Manifest.manifest.system_resources.elements.each do |k, n|
- yield k
- end
- end
-
- def self.class_name_to_class k
- Object.const_get k
- end
-
- def self.each_element_classes
- self.each_element_class_names do |k|
- e = self.class_name_to_class k
- yield e
- end
- end
-
- def elements_by_class_name class_name
- self.__send__ class_name.tableize
- end
-
def supply_default
self.border = 2
self.publish = 0
r = {
:author => {}
}
- self.each_element_classes do |e|
- r.merge!(e.list_opt_for_panel)
+ self.child_models.each do |child_model|
+ r.merge!(child_model.list_opt_for_panel)
end
r
end
r = {
:author => {}
}
- self.each_element_classes do |e|
- r.merge!(e.show_opt_for_panel)
+ self.child_models('panel').each do |child_model|
+ r.merge!(child_model.show_opt_for_panel)
end
{:include => r}
end
def parts_element
- r = []
- self.class.each_element_class_names do |k|
- r += (self.elements_by_class_name(k) || [])
- end
- r
+ self.elements_items
end
def zorderd_elements
end
def validate_serial_list
- l = []
- self.class.each_element_class_names do |k|
- l << self.elements_by_class_name(k)
- end
[
- {:elements => l, :name => :t, :offset => 0},
- {:elements => l, :name => :z, :offset => 1}
+ {:elements => self.elements_items, :name => :t, :offset => 0},
+ {:elements => self.elements_items, :name => :z, :offset => 1}
]
end
def validate_child
def copy
attr = self.copy_attributes
- Panel.each_element_class_names do |n|
- attr.merge! Panel.class_name_to_class(n).panelize(self.elements_by_class_name(n).map {|elm| elm.copy_attributes})
+ self.class.child_models('panel') do |child_model|
+ attr.merge! child_model.panelize(self.element_items(child_model).map {|elm| elm.copy_attributes})
end
attr
end