5 def initialize manifest, item
9 # return false unless self.resource.enable?
11 @item.extend self.extend_module
12 @item.__send__ @manifest.setter_method_name, self.parsed_settings if self.has_extend_model?
16 # get template from system resource manifest
17 def template_path_name
18 self.template_manifest.template_items[self.template_module_name]
21 # get template manifest from system resource manifest
23 Manifest.manifest.system_resources.templates[@manifest.template_name]
27 self.template_path_name + '_' + @manifest.item_name_for_extend_model
31 self.template_manifest.template_items.include? self.template_module_name
34 # get template module name
35 # ex) attributes[hoge_module_name] -> 'Hoge'
36 def template_module_name
37 @item.attributes[@manifest.column_name_for_template_module]
41 @item.attributes[@manifest.settings_column_name]
44 # name space for template
47 Object.const_get self.template_module_name
51 self.template_module.constants.include? @manifest.extend_module_name.to_sym
54 # extend module in engine
55 # ex) 'SpeechBalloonModule' -> CircleSpeechBalloon::SpeechBalloonModule
57 self.template_module.const_get @manifest.extend_module_name
61 !@manifest.extend_model_class_name.blank?
64 # extend settings data model in engine
65 # ex) CircleSpeechBalloon::SpeechBalloon
67 if self.has_extend_model?
68 self.template_module.const_get @manifest.extend_model_class_name
75 @item.attributes[@manifest.foreign_key].blank? == false
80 Manifest.manifest.models[@manifest.template_name].classify
86 @item.__send__ @manifest.getter_method_name
93 if self.settings.blank?
96 JSON.parse(self.settings)
100 def update_settings new_settings
101 @item.__send__ @manifest.setter_method_name, new_settings
105 self.extend_item.supply_default @item
109 self.extend_item.overwrite @item