OSDN Git Service

t#31896:refact elm
[pettanr/pettanr.git] / lib / element.rb
index b332e00..4f7a4ec 100644 (file)
@@ -32,6 +32,58 @@ module Element
       false
     end
     
+    def has_part?
+      false
+    end
+    
+    def parts
+      @parts ||= []
+    end
+    
+    def new_index
+      @new_index
+    end
+    
+    def new_index= v
+      @new_index = v
+    end
+    
+    def new_panel
+      @new_panel
+    end
+    
+    def new_panel= v
+      @new_panel = v
+    end
+    
+    def get_panel
+      self.panel || @new_panel
+    end
+    
+    def tag_id c = nil
+      'panel' + self.tag_panel_id + self.tag_element_type + self.tag_element_id + c.to_s
+    end
+    
+    def field_tag_id f
+      self.tag_id + f.to_s
+    end
+    
+    def tag_panel_id
+      self.get_panel.new_record? ? '0' : self.get_panel.id.to_s
+    end
+    
+    def tag_element_id
+      self.new_record? ? '0' : self.id.to_s
+    end
+    
+    def tag_element_type
+      raise
+    end
+    
+    def tag_new_index
+      self.new_index.to_s
+    end
+    
     def path_name with_engine = false
       self.class.path_name(with_engine)
     end
@@ -48,6 +100,40 @@ module Element
       self.path_name(with_engine) + '/element_face'
     end
     
+    def tag_attributes column = nil, opt = {}
+      {
+        :id => self.field_tag_id(column), :panel_id => self.tag_panel_id, 
+        :element_id => self.tag_element_id, :element_type => self.tag_element_type
+      }.merge(opt)
+    end
+    
+    def field_tag_attributes column, no_attr, opt = {}
+      self.tag_attributes(column).merge(
+        {:column => column, :new_index => self.tag_new_index, :no_attr => no_attr}
+      ).merge(opt)
+    end
+    
+    #render element by body
+    def any_tag_attributes name = nil, opt = {}
+      r = self.tag_attributes(name)
+      r.merge!(
+        {:new_index => self.tag_new_index}
+      ) if self.new_index
+      r.merge(opt)
+    end
+    
+    def tag_attr column = nil, opt = {}
+      self.tag_attributes(column, opt).to_attr
+    end
+    
+    def field_tag_attr column, no_attr, opt = {}
+      self.field_tag_attributes(column, no_attr, opt).to_attr
+    end
+    
+    def any_tag_attr name = nil, opt = {}
+      self.any_tag_attributes(name, opt).to_attr
+    end
+    
   end
 end