OSDN Git Service

temp
[pettanr/pettanr.git] / lib / manifest / list.rb
index 1d41e0f..3ac0765 100644 (file)
@@ -6,7 +6,9 @@ module Pettanr
         @item_name = item_name
         @conf = conf
         @manifest = manifest
-        @page = self.page_number(page || @conf['default_page_size']) 
+        @default_page_size = @conf['default_page_size'] || 25
+        @max_page_size = @conf['max_page_size'] || 100
+        @page = self.page_number(page) 
         @page_size = self.page_size page_size
         @operators = operators
         
@@ -14,16 +16,16 @@ module Pettanr
         @offset = (@page -1) * @page_size
       end
       
-      def self.page_number prm = nil
+      def page_number prm = nil
         page = prm.to_i
         page = 1 if page < 1
         page
       end
       
-      def self.page_size prm
+      def page_size prm
         page_size = prm.to_i
-        page_size = self.max_page_size if page_size > self.max_page_size
-        page_size = self.default_page_size if page_size < 1
+        page_size = @max_page_size if page_size > @max_page_size
+        page_size = @default_page_size if page_size < 1
         page_size
       end
       
@@ -91,13 +93,14 @@ module Pettanr
         @foreign_key = @association_conf['foreign_key']
       end
       
-      def where
-        [@model.list_where + 'comics.author_id = ?', me.id] 
+      def where parent_item
+        w = @model.list_where
+        w += ' and ' unless w.blank?
+        [w + @association_model_name + '.' + @foreign_key + ' = ?', parent_item.id] 
       end
       
-      def items item
-        method_name = 'list_by_' + item.item_name
-        @association_model.__send__ @method_name, item.id, @operators, @page, @page_size
+      def items parent_item
+        @model.where(self.where(parent_item)).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size)
       end
       
       def paginate
@@ -136,7 +139,7 @@ module Pettanr
       @manifest = @list_manifest.manifest
       @list_conf = @list_manifest.conf
       @lists = {}
-      (@list_conf['lists'] || {}).each {|list_name, conf|
+      @list_manifest.lists.each {|list_name, conf|
         type = conf['type']
         @lists[list_name] = @@types[type]
       }