OSDN Git Service

merge
authoryasushiito <yas@pen-chan.jp>
Thu, 6 Mar 2014 09:26:30 +0000 (18:26 +0900)
committeryasushiito <yas@pen-chan.jp>
Thu, 6 Mar 2014 09:26:30 +0000 (18:26 +0900)
lib/editor/editor.rb
lib/editor/pool.rb
lib/peta.rb
lib/peta/content.rb
lib/peta/editize.rb [new file with mode: 0644]
lib/peta/element.rb
lib/peta/item.rb

index 20cd2a9..5e2c4cb 100644 (file)
@@ -1,7 +1,6 @@
 require_dependency "editor/dock"
 require_dependency "editor/dock/dock"
 module Editor
-
   class Editor
     include EditorModule
     cattr_accessor :eid
index ace50c3..134a790 100644 (file)
@@ -12,26 +12,28 @@ module Editor
       
       # regist stored element
       def editize
-        self.register @root_item
-        @root_item.each_elements(self.name) do |element|
-          self.register element
-        end
+        @root_item.boost
+        self.register nil, @root_item
+        editize_element @root_item
       end
       
-      def register item
-        @item.editor = @editor
-        parent_model = item.parent_model(@editor.name)
-        if parent_model
-          item.parent = find
+      def editize_element parent
+        parent.child_element_names(@editor.name).each do |element_name|
+          e = parent.__send__ element_name
+          e = [e] unless e.respond_to? :each
+          e.each do |element|
+            element.boost
+            self.register parent, element
+            self.editize_element element
+          end
         end
+      end
+      
+      def register parent, item
+        item.extend Peta::Editize
+        item.editor = @editor
+        item.parent = parent if parent
         if item.new_record?
-          if parent_model
-            # element 
-            item.parent__send__ "build_#{parent_model.child_element_name(item.item_name)}"
-          else
-            # root 
-            
-          end
           item.pool_id = @index
           @index += 1
         else
index 2884294..cc11acc 100644 (file)
@@ -5,3 +5,4 @@ require_dependency 'peta/owner'
 require_dependency 'peta/content'
 require_dependency 'peta/element'
 require_dependency 'peta/element_part'
+require_dependency 'peta/editize'
index fbc9cf8..048012f 100644 (file)
@@ -37,20 +37,11 @@ module Peta
       define_singleton_method("owner_model") do 
         m
       end
-      define_singleton_method("parent_model") do |tree_name|
-        self.my_manifest.tree[tree_name].parent_model
-      end
       o = self._owner_column
       define_singleton_method("owner_column") do 
         o
       end
-      define_singleton_method("child_models") do  |tree_name|
-        self.my_manifest.child_models tree_name
-      end
       # Instance Methods
-      define_method("parent_model") do |tree_name|
-        self.__send__ self.class.parent_model(tree_name).item_name
-      end
       define_method("elements") do |tree_name|
         self.my_manifest.child_element_names(tree_name).map {|element_name|
           self.__send__ element_name
diff --git a/lib/peta/editize.rb b/lib/peta/editize.rb
new file mode 100644 (file)
index 0000000..6c40114
--- /dev/null
@@ -0,0 +1,44 @@
+module Peta
+  module Editize
+     def editor
+      @editor
+    end
+    
+    def editor=(e)
+      @editor = e
+    end
+    
+    def pool_id
+      @pool_id
+    end
+    
+    def pool_id=(i)
+      @pool_id = i
+    end
+    
+    def dom_id
+       self.pool_id.to_s
+    end
+    
+    def self.build attr
+      pm = self.parent_model(@editor.name)
+      if pm
+        r = pm.__send__ "build_#{pm.child_element_name(item.item_name)}", attr
+      end
+      r
+    end
+    
+    def dom_item_id name = nil
+      r = [self.editor.eid, self.dom_pool_type, self.item_name, self.dom_id]
+      r += name.to_s if column_name
+      r.join '-'
+    end
+    
+    def tag_attributes name = nil, opt = {}
+      super.merge!({'id' => self.dom_item_id(name)})
+    end
+    
+  end
+  
+end
+
index 91092a2..3587186 100644 (file)
@@ -37,14 +37,6 @@ module Peta
       self.extend_column ? self.attributes[extend_column] : self.element_name
     end
     
-    def parent
-      @parent
-    end
-    
-    def parent= content
-      @parent = content
-    end
-    
     def scenario_template with_engine = false
       self.path_name(with_engine) + '/scenario'
     end
index e468374..2d9604b 100644 (file)
@@ -18,6 +18,16 @@ module Peta
       define_singleton_method("valid_encode_columns") do 
         r
       end
+      define_singleton_method("parent_model") do |tree_name|
+        self.my_manifest.tree[tree_name].parent_model
+      end
+      define_singleton_method("child_models") do  |tree_name|
+        self.my_manifest.child_models tree_name
+      end
+      define_singleton_method("child_element_names") do  |tree_name|
+        self.my_manifest.child_element_names tree_name
+      end
+      # Instance Methods
       n = self._extend_column_name
       define_singleton_method("extend_column_name") do 
         n
@@ -96,40 +106,6 @@ module Peta
     
     #InstanceMethods
     
-    def self.fold_extend_settings params
-      speech_balloon_settings = params[:speech_balloon][:settings]
-      if speech_balloon_settings.is_a?(Hash)
-        params[:speech_balloon][:settings] = speech_balloon_settings.to_json
-      end
-      balloon_settings = params[:speech_balloon][:balloon_attributes][:settings]
-      if balloon_settings.is_a?(Hash)
-        params[:speech_balloon][:balloon_attributes][:settings] = balloon_settings.to_json
-      end
-      speech_settings = params[:speech_balloon][:speech_attributes][:settings]
-      if speech_settings.is_a?(Hash)
-        params[:speech_balloon][:speech_attributes][:settings] = speech_settings.to_json
-      end
-    end
-    
-    def engine
-      Object.const_get self.attributes[self.extend_column_name]
-    end
-    
-    def my_engine_resource
-      Manifest.manifest.system_resources.engine_resources[self.table_name]
-    end
-    
-    def engine?
-      self.my_engine_resource.resource_items.include? self.extend_column_name
-    end
-    
-    def extend_engine_module
-      self.extend self.engine.extend_module
-      self.elements.each do |element|
-        element.extend_item
-      end
-    end
-    
     def item_name
       self.class.item_name
     end
@@ -165,6 +141,39 @@ module Peta
       end
     end
     
+    def self.fold_extend_settings params
+      speech_balloon_settings = params[:speech_balloon][:settings]
+      if speech_balloon_settings.is_a?(Hash)
+        params[:speech_balloon][:settings] = speech_balloon_settings.to_json
+      end
+      balloon_settings = params[:speech_balloon][:balloon_attributes][:settings]
+      if balloon_settings.is_a?(Hash)
+        params[:speech_balloon][:balloon_attributes][:settings] = balloon_settings.to_json
+      end
+      speech_settings = params[:speech_balloon][:speech_attributes][:settings]
+      if speech_settings.is_a?(Hash)
+        params[:speech_balloon][:speech_attributes][:settings] = speech_settings.to_json
+      end
+    end
+    
+    def engine
+      Object.const_get self.attributes[self.extend_column_name]
+    end
+    
+    def my_engine_resource
+      Manifest.manifest.system_resources.engine_resources[self.table_name]
+    end
+    
+    def engine?
+      self.my_engine_resource.resource_items.include? self.attributes[self.extend_column_name]
+    end
+    
+    def boost
+      return false unless self.engine?
+      self.engine.boost self
+      true
+    end
+    
     def supply_default
     end
     
@@ -180,42 +189,24 @@ module Peta
       true
     end
     
-    def editor
-      @editor
-    end
-    
-    def editor=(e)
-      @editor = e
-    end
-    
-    def pool_id
-      @pool_id || self.id
-    end
-    
-    def pool_id=(i)
-      @pool_id = i
+    def editize?
+      self.respond_to? :editor
     end
     
     def dom_id
-      self.pool_id.to_s
+      self.id.to_s
     end
     
     def dom_pool_type
       self.new_record? ? 'stored' : 'new'
     end
     
-    def dom_item_id name = nil
-      r = [self.editor.eid, self.dom_pool_type, self.item_name, self.dom_id]
-      r += name.to_s if column_name
-      r.join '-'
-    end
-    
     def tag_attributes name = nil, opt = {}
       r = {
         'data-pool_type' => self.dom_pool_type, 'data-id' => self.dom_id, 
         'data-item_name' => self.item_name
       }
-      r.merge!({'id' => self.dom_item_id(name)}) if self.editor
+      r.merge!({'id' => self.dom_item_id(name)}) if self.editize?
       r.merge!(opt)
       r
     end