# 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
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
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
#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
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
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