OSDN Git Service

t#:
[pettanr/pettanr.git] / lib / peta / element.rb
index d666e71..7f24d98 100644 (file)
@@ -7,10 +7,9 @@ module Peta
     def self.load_manifest
       super
       # Class Methods
-      self.my_manifest.associations.each_parent_model do |parent_model|
-        define_singleton_method("parent_model") do 
-          parent_model
-        end
+      pm = Manifest.manifest.models[self.my_peta.parent_model_name].classify
+      define_singleton_method("parent_model") do 
+        pm
       end
       # Instance Methods
     end
@@ -21,12 +20,36 @@ module Peta
     
     def self.root_model
       if self.parent_model
-        self.parent_model.root_model
+        if self.parent_model.element?
+          self.parent_model.root_model
+        else
+          self.parent_model
+        end
       else
         self
       end
     end
     
+    # Instance Methods
+    
+    def root
+      pm = self.__send__ self.class.parent_model.item_name
+      if pm.class.element?
+        pm.root
+      else
+        pm
+      end
+    end
+    
+    def own? operators
+      self.root.own? operators
+    end
+    
+    def visible? operators
+      return false unless self.user_visible? operators
+      self.root.visible? operators
+    end
+    
     def self.list_opt_for_panel
       {}
     end