OSDN Git Service

fix boost template
[pettanr/pettanr.git] / lib / peta / item.rb
index 11d63a2..829c15b 100644 (file)
@@ -5,23 +5,32 @@ module Peta
     
     # Dynamic ClassMethods
     
-    def self._valid_encode_columns
-      self.my_manifest.valid_encode_columns
+    def self._dev?
+      Rails.env == "development"
+    end
+    
+    def self._skip_load?
+      if self._dev?
+        return true unless self.my_manifest
+        return true unless Manifest.manifest.items
+        return true unless Manifest.manifest.models
+      end
+      false
     end
     
     def self.load_manifest
-      return nil unless self.my_manifest
-      r = self._valid_encode_columns
+      return nil if self._skip_load?
+      vc = self.my_manifest.valid_encode_columns
       define_singleton_method("valid_encode_columns") do 
-        r
+        vc
       end
-      r = self.my_manifest.child_models
+      cm = self.my_manifest.child_models
       define_singleton_method("child_models") do
-        r
+        cm
       end
-      r = self.my_manifest.child_element_names
+      cen = self.my_manifest.child_element_names
       define_singleton_method("child_element_names") do
-        r
+        cen
       end
       # Instance Methods
     end
@@ -33,10 +42,12 @@ module Peta
     before_validation :valid_encode
     
     def self.my_peta
+      return nil unless Manifest.manifest.items
       Manifest.manifest.items[self.item_name]
     end
     
     def self.my_manifest
+      return nil unless Manifest.manifest.models
       Manifest.manifest.models[self.item_name]
     end
     
@@ -76,12 +87,12 @@ module Peta
       self.plural.underscore
     end
     
-    def self.extend_column? column_name
-      self.my_peta.extend_column? column_name
+    def self.find_boost_name column_name
+      self.my_peta.find_boost_name column_name
     end
     
-    def self.visible_count_options
-      nil
+    def self.extend_column? column_name
+      self.my_peta.extend_column? column_name
     end
     
     def self.list_where
@@ -89,7 +100,7 @@ module Peta
     end
     
     def self.list_order
-      ''
+      self.table_name + '.updated_at desc'
     end
     
     def self.list_opt
@@ -105,7 +116,7 @@ module Peta
       opt.merge!(self.show_opt)
       item = self.find(item_id, opt)
       item.boosts 'read'
-      raise ActiveRecord::Forbidden unless item.visible?(operators)
+      raise ActiveRecord::Forbidden if item.visible?(operators) == false
       item
     end
     
@@ -117,16 +128,13 @@ module Peta
       {}
     end
     
-    def self.fold_extend_settings params
+    def self.fold_extend_settings attr
       self.my_peta.boost.each do |name, manifest|
-        my_settings = params[self.item_name][manifest.settings_column_name]
+        my_settings = attr[manifest.settings_column_name]
         if my_settings.is_a?(Hash)
-          params[self.item_name][manifest.settings_column_name] = my_settings.to_json
+          attr[manifest.settings_column_name] = my_settings.to_json
         end
       end
-      self.child_models.each do |child_model|
-        child_model.fold_extend_settings params
-      end
     end
     
     #InstanceMethods
@@ -158,7 +166,7 @@ module Peta
     def valid_encode
       self.class.valid_encode_columns.each do |a|
         next if attributes[a] == nil
-        raise Pettanr::BadRequest unless attributes[a].valid_encoding?
+        raise Pettanr::BadRequest unless self.attributes[a].valid_encoding?
       end
     end
     
@@ -171,7 +179,11 @@ module Peta
     
     def boost boost_manifest
       @boosters ||= {}
-      @boosters[boost_manifest.name] = Locmare::Booster.new(boost_manifest, self)
+      @boosters[boost_manifest.name] ||= Locmare::Booster.new(boost_manifest, self)
+    end
+    
+    def boosters
+      @boosters ||= {}
     end
     
     def extend_column? column_name
@@ -179,13 +191,18 @@ module Peta
     end
     
     def supply_default
-      self.class.my_peta.supply_defaults self
+      self.boosters.each do |boost_name, booster|
+        booster.supply_default
+      end
     end
     
     def overwrite 
+      self.boosters.each do |boost_name, booster|
+        booster.overwrite
+      end
     end
     
-    def visible? operators
+    def user_visible? operators
       if Manifest.manifest.magic_numbers['run_mode'] == 0
         return false unless operators.guest?
       else
@@ -194,6 +211,11 @@ module Peta
       true
     end
     
+    def visible? operators
+      return false unless self.user_visible? operators
+      true
+    end
+    
     def editize?
       self.respond_to? :editor
     end