OSDN Git Service

fix:error dlg
[pettanr/pettanr.git] / lib / manifest / item / boost.rb
index 1c3e7fa..b75adc5 100644 (file)
@@ -1,94 +1,44 @@
 module Manifest
   module ItemModule
     class Boost < ManifestBase::NameValues
-      attr :level, :extend_column_name, :settings_column_name, 
-        :foreign_key, :setter_method_name, :getter_method_name
+      attr :level, :template_name,
+        :column_name_for_template_module, :settings_column_name, 
+        :foreign_key, :extend_model_class_name, :item_name_for_extend_model, 
+        :setter_method_name, :getter_method_name, 
+        :extend_module_name
       
       def set_default
         super
         @values['level'] ||= 'post'
-        @values['extend_column_name'] ||= @name + '_classname'
+        @values['template_name'] ||= @name
+        @values['column_name_for_template_module'] ||= @values['template_name'] + '_module_name'
         @values['settings_column_name'] ||= @name + '_settings'
-        @values['foreign_key'] ||= @name + '_id'
-        @values['setter_method_name'] ||= @name + '_extend='
-        @values['getter_method_name'] ||= @name + '_extend'
+        @values['foreign_key'] ||= @values['template_name'] + '_id'
       end
       
       def init
         super
         @level = @values['level']
-        @extend_column_name = @values['extend_column_name']
+        @template_name = @values['template_name']
+        @column_name_for_template_module = @values['column_name_for_template_module']
         @settings_column_name = @values['settings_column_name']
         @foreign_key = @values['foreign_key']
+        
+        @values['item_name_for_extend_model'] ||= @template_name
+        @values['setter_method_name'] ||= @values['item_name_for_extend_model'] + '_extend='
+        @values['getter_method_name'] ||= @values['item_name_for_extend_model'] + '_extend'
+        @extend_model_class_name = @values['extend_model_class_name']
+        @item_name_for_extend_model = @values['item_name_for_extend_model']
         @setter_method_name = @values['setter_method_name']
         @getter_method_name = @values['getter_method_name']
-      end
-      
-      def extend_model_name
-        @parent.model.singular
-      end
-      
-      def extend_module_name
-        @parent.model.singular + 'Module'
-      end
-      
-      class ItemBooster
-        def initialize manifest, item
-          @manifest = manifest
-          @item = item
-        end
-        
-        # get engine's name
-        def class_name
-          @item.attributes[@manifest.extend_column_name]
-        end
-        
-        def settings
-          @item.attributes[@manifest.settings_column_name]
-        end
-        
-        # name space for engine
-        def engine_module
-          Object.const_get self.class_name(@item)
-        end
-        
-        # extend module in engine
-        # ex) CircleSpeechBalloon::SpeechBalloonModule
-        def engine_extend_module
-          self.engine_module.const_get @manifest.extend_module_name
-        end
-        
-        # extend settings data model in engine
-        def engine_extend_model
-          self.engine_module.const_get @manifest.extend_module_name
-        end
-        
-        # get system resource instance
-        def resource
-          r = @item.__send__ @manifest.name
-          raise 'resource not found' unless r
-          r
-        end
-        
-        def parsed_settings
-          if self.settings.blank?
-            {}
+        @extend_module_name = @values['extend_module_name']
+        unless @extend_module_name
+          if @extend_model_class_name
+            @extend_module_name = @extend_model_class_name + 'Module'
           else
-            JSON.parse(self.settings)
+            ManifestBase.alert_undefined_message 'extend_module_name',  self.module_message
           end
         end
-        
-        def boost
-          # no check
-          # return false unless self.resource.enable?
-          @item.extend self.engine_extend_module
-          @item.__send__ @manifest.setter_method_name, self.parsed_settings
-        end
-        
-      end
-      
-      def supply_default item
-        self.engine_model(item).engine_extend_module.supply_default item, self
       end
       
     end