OSDN Git Service

add peta model_manifest
[pettanr/pettanr.git] / app / models / panel.rb
index c2e0b60..4deb49f 100644 (file)
@@ -1,5 +1,5 @@
 #コマ
-class Panel < Peta::Content
+class Panel < Peta::Root
   load_manifest
   belongs_to :author
   has_many :scroll_panels
@@ -19,27 +19,6 @@ class Panel < Peta::Content
   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
@@ -91,8 +70,8 @@ class Panel < Peta::Content
     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
@@ -101,18 +80,14 @@ class Panel < Peta::Content
     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
@@ -211,13 +186,9 @@ class Panel < Peta::Content
   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
@@ -284,8 +255,8 @@ class Panel < Peta::Content
   
   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