# no check
# return false unless self.resource.enable?
if self.extendable?
- @item.extend self.engine_extend_module
- @item.__send__ @manifest.setter_method_name, self.parsed_settings
+ @item.extend self.extend_module
+ @item.__send__ @manifest.setter_method_name, self.parsed_settings if self.has_extend_model?
end
end
- def engine_resource_name
- @manifest.engine_resource_name || self.resource.table_name
+ # get template from system resource manifest
+ def template_path_name
+ self.template_manifest.template_items[self.template_module_name]
end
- # get engine resource from system resource manifest
- def my_engine_resource
- Manifest.manifest.system_resources.engine_resources[self.engine_resource_name]
+ # get template manifest from system resource manifest
+ def template_manifest
+ Manifest.manifest.system_resources.templates[@manifest.template_name]
end
- def engine_classname
- @item.attributes[@manifest.extend_column_name]
- end
-
- # get snake_case engine name
- # ex) circle_speech_balloon
- # use to url, model_name generating
- def engine_name
- self.my_engine_resource.resource_items[self.engine_classname]
- end
-
- def model_name
- self.engine_name + '_' + @manifest.extend_item_name
+ def item_name
+ self.template_path_name + '_' + @manifest.item_name_for_extend_model
end
def enable?
- self.my_engine_resource.resource_items.include? self.class_name
+ self.template_manifest.template_items.include? self.template_module_name
end
- # get engine's module name
- def class_name
- @item.attributes[@manifest.extend_column_name]
+ # get template module name
+ # ex) attributes[hoge_module_name] -> 'Hoge'
+ def template_module_name
+ @item.attributes[@manifest.column_name_for_template_module]
end
def settings
@item.attributes[@manifest.settings_column_name]
end
- # name space for engine
- def engine_module
- Object.const_get self.class_name
+ # name space for template
+ # ex) 'Hoge' -> Hoge
+ def template_module
+ Object.const_get self.template_module_name
end
def extendable?
- self.engine_module.constants.include? @manifest.extend_module_name.to_sym
+ self.template_module.constants.include? @manifest.extend_module_name.to_sym
end
# extend module in engine
- # ex) CircleSpeechBalloon::SpeechBalloonModule
- def engine_extend_module
- self.engine_module.const_get @manifest.extend_module_name
+ # ex) 'SpeechBalloonModule' -> CircleSpeechBalloon::SpeechBalloonModule
+ def extend_module
+ self.template_module.const_get @manifest.extend_module_name
+ end
+
+ def has_extend_model?
+ !@manifest.extend_model_class_name.blank?
end
# extend settings data model in engine
# ex) CircleSpeechBalloon::SpeechBalloon
- def engine_extend_model
- self.engine_module.const_get @manifest.extend_model_name
+ def extend_model
+ if self.has_extend_model?
+ self.template_module.const_get @manifest.extend_model_class_name
+ else
+ nil
+ end
end
- def check_resource
+ def check_template
@item.attributes[@manifest.foreign_key].blank? == false
end
- # get system resource instance
- def resource
- Manifest.manifest.models[@manifest.resource_name].classify
+ # get template model
+ def template_model
+ Manifest.manifest.models[@manifest.template_name].classify
end
# get extend instance
def extend_item
- @item.__send__ @manifest.getter_method_name
+ if self.extend_model
+ @item.__send__ @manifest.getter_method_name
+ else
+ nil
+ end
end
def parsed_settings
end
end
+ def update_settings new_settings
+ @item.__send__ @manifest.setter_method_name, new_settings
+ end
+
+ def supply_default
+ self.extend_item.supply_default @item
+ end
+
+ def overwrite
+ self.extend_item.overwrite @item
+ end
+
end
end