From: yasushiito Date: Thu, 6 Mar 2014 09:26:30 +0000 (+0900) Subject: merge X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=e20f713fcc3d040eb1b599c8aaae50d51c5c3d56;hp=aa75d8fb5985a21652c5c9d191dc915a6ce784e4;p=pettanr%2Fpettanr.git merge --- diff --git a/lib/editor/editor.rb b/lib/editor/editor.rb index 20cd2a92..5e2c4cb3 100644 --- a/lib/editor/editor.rb +++ b/lib/editor/editor.rb @@ -1,7 +1,6 @@ require_dependency "editor/dock" require_dependency "editor/dock/dock" module Editor - class Editor include EditorModule cattr_accessor :eid diff --git a/lib/editor/pool.rb b/lib/editor/pool.rb index ace50c38..134a7902 100644 --- a/lib/editor/pool.rb +++ b/lib/editor/pool.rb @@ -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 diff --git a/lib/peta.rb b/lib/peta.rb index 28842948..cc11acc6 100644 --- a/lib/peta.rb +++ b/lib/peta.rb @@ -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' diff --git a/lib/peta/content.rb b/lib/peta/content.rb index fbc9cf81..048012f5 100644 --- a/lib/peta/content.rb +++ b/lib/peta/content.rb @@ -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 index 00000000..6c401140 --- /dev/null +++ b/lib/peta/editize.rb @@ -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 + diff --git a/lib/peta/element.rb b/lib/peta/element.rb index 91092a2b..3587186c 100644 --- a/lib/peta/element.rb +++ b/lib/peta/element.rb @@ -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 diff --git a/lib/peta/item.rb b/lib/peta/item.rb index e4683748..2d9604ba 100644 --- a/lib/peta/item.rb +++ b/lib/peta/item.rb @@ -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