OSDN Git Service

element
[pettanr/pettanr.git] / lib / peta / element.rb
index 8346bff..4f345eb 100644 (file)
 module Peta
-  module Element
-    def self.included(base)
-      base.extend(ClassMethods)
-      base.__send__ :include, InstanceMethods
+  class Element < Content
+    self.abstract_class = true
+    
+    # Dynamic ClassMethods
+    
+    
+    def self.list_opt_for_panel
+      {}
+    end
+    
+    def self.show_opt_for_panel
+      {}
+    end
+    
+    def self.json_opt_for_panel
+      {}
+    end
+    
+    def has_picture?
+      false
+    end
+    
+    def has_part?
+      false
+    end
+    
+    def parts
+      @parts ||= []
+    end
+    
+    def extend_column
+      nil
+    end
+    
+    def extend_element_name
+      self.extend_column ? self.attributes[extend_column] : self.element_name
+    end
+    
+    def parent
+      @parent
+    end
+    
+    def parent= content
+      @parent = content
     end
     
-    module ClassMethods
-      def colum_structures
-        raise
-      end
-      
-      def list_opt_for_panel
-        {}
-      end
-      
-      def show_opt_for_panel
-        {}
-      end
-      
-      def json_opt_for_panel
-        {}
-      end
-      
-      def path_name with_engine = false
-        self.to_s.tableize
-      end
-      
+    def scenario_template with_engine = false
+      self.path_name(with_engine) + '/scenario'
     end
     
-    module InstanceMethods
-      private
-      
-      public
-      
-      def has_picture?
-        false
-      end
-      
-      def has_part?
-        false
-      end
-      
-      def parts
-        @parts ||= []
-      end
-      
-      def has_helper? column_name
-        self.class.colum_structures[column_name] and self.class.colum_structures[column_name][:helper]
-      end
-      
-      def element_name
-        self.class.to_s.underscore
-      end
-      
-      def extend_column
-        nil
-      end
-      
-      def extend_element_name
-        self.extend_column ? self.attributes[extend_column] : self.element_name
-      end
-      
-      def find_configurations hash, key
-         if hash[key].is_a? String
-           self.find_configurations hash, hash[key]
-         else
-           return hash[key]
-         end
-      end
-      
-      def element_index
-        @element_index ||= self.t
-      end
-      
-      def parent
-        @parent ||= self.panel
-      end
-      
-      def parent= content
-        @parent = content
-      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
-      
-      def form_template with_engine = false
-        self.path_name(with_engine) + '/form'
-      end
-      
-      def scenario_template with_engine = false
-        self.path_name(with_engine) + '/scenario'
-      end
-      
-      def element_face_template with_engine = false
-        self.path_name(with_engine) + '/element_face'
-      end
-      
-      def form_helper_template(colum_name)
-        self.class.colum_structures[colum_name][:helper]
-      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 select_tag_attributes(selected, column, no_attr)
-        [
-          :last, :first, 
-          {:html => {:selected => selected}}, 
-          self.field_tag_attributes(column, no_attr)
-        ]
-      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
-      
+    def element_face_template with_engine = false
+      self.path_name(with_engine) + '/element_face'
     end
+    
+    def tag_attributes column = nil, opt = {}
+      r = super
+      r.merge({'data-parent_dom_id' => self.parent.dom_item_id}) if self.editor
+      r
+    end
+    
   end
 end