OSDN Git Service

fix Manifest lst
[pettanr/pettanr.git] / lib / manifest / model / list / play.rb
index a916a8c..9c519ad 100644 (file)
 module Manifest
-  module ListModule
-    class PlayList
-      attr :model, :list_name, :list_manifest
-      
-      def initialize model, list_name, list_manifest
-        @model = model
-        @list_name = list_name
-        @list_manifest = list_manifest
-        self.set_default
-        self.init
-      end
-      
-      def set_default
-        return
-        @default_page_size = @conf['default_page_size'] || 25
-        @max_page_size = @conf['max_page_size'] || 100
-        @params_offset = params_offset
-        @params_count = params_count
-        @list_list_conf = @manifest.list(@item_name).lists[list_name] || {}
-        @model_name = @list_list_conf['model']
-        @filter_key = @list_list_conf['filter_key']
-        @model = @model_name.classify.constantize
-        @table_name = @model.table_name
-        if @model.content?
-          @owner_model = @model.owner_model
-          @owner_table_name = @owner_model.table_name if @owner_model
+  module ModelModule
+    module ListModule
+      class PlayList
+        attr :model, :list_name, :list_manifest, :type, 
+          :default_page_size, :max_page_size
+        
+        def initialize model, list_name, list_manifest
+          @model = model
+          @list_name = list_name
+          @list_manifest = list_manifest
+          self.set_default
+          self.init
         end
-      end
-      
-      def init
-      end
-      
-      def list_name
-        @list.list_name
-      end
-      
-      def list_manifest
-        @list.list_manifest
-      end
-      
-      def offset cnt, prm = nil
-        offset = prm.to_i
-        offset = cnt - 1 if offset >= cnt
-        offset = cnt - offset.abs if offset < 0
-        offset = 0 if offset < 0
-        offset
-      end
-      
-      def limit prm
-        prm ||= @default_page_size
-        count = prm.to_i
-        count = @max_page_size if count > @max_page_size
-        count = @default_page_size if count < 1
-        count
-      end
-      
-      def count filter_item
-        @count ||= @model.count(:conditions => self.where(filter_item), :include => self.includes).to_i
-      end
-      
-      def where filter_item
-        w = @model.list_where
-        w += ' and ' unless w.blank?
-        [w + @table_name + '.' + @filter_key + ' = ?', filter_item.id] 
-      end
-      
-      def includes
-        {@owner_model.item_name => {}}
-      end
-      
-      def order
-        @table_name + '.t'
-      end
-      
-      def items filter_item
-        c  = @count || self.count(filter_item)
-        o  = self.offset c, @offset
-        l  = self.limit @count
-        @model.where(self.where(filter_item)).includes(self.includes).order(self.order).offset(o).limit(l)
-      end
-      
-      def prev_offset filter_item
-        c  = @count || self.count(filter_item)
-        o  = self.offset c, @offset
-        l  = self.limit @count
-        if o > 0
-          if o - l < 0
-            0
-          else
-            o - l
+        
+        def set_default
+          @list_manifest['args'] ||= {}
+          return
+          @default_page_size = @conf['default_page_size'] || 25
+          @max_page_size = @conf['max_page_size'] || 100
+          @params_offset = params_offset
+          @params_count = params_count
+          @list_list_conf = @manifest.list(@item_name).lists[list_name] || {}
+          @model_name = @list_list_conf['model']
+          @filter_key = @list_list_conf['filter_key']
+          @model = @model_name.classify.constantize
+          @table_name = @model.table_name
+          if @model.content?
+            @owner_model = @model.owner_model
+            @owner_table_name = @owner_model.table_name if @owner_model
           end
-        else
-          nil
         end
-      end
-      
-      def next_offset filter_item
-        c  = @count || self.count(filter_item)
-        o  = self.offset c, @offset
-        l  = self.limit @count
-        if o + l > c
-          nil
-        else
-          o + l
+        
+        def init
+          @type = @list_manifest['type']
+          @args = @list_manifest['args']
+        end
+        
+        def self.add_action item_name, action_name, list_name, list_conf
+          return
         end
       end
       
-      def self.add_action item_name, action_name, list_name, list_conf
-        return
-      end
     end
-    
   end
 end