OSDN Git Service

temp
authoryasushiito <yas@pen-chan.jp>
Wed, 4 Dec 2013 23:54:02 +0000 (08:54 +0900)
committeryasushiito <yas@pen-chan.jp>
Wed, 4 Dec 2013 23:54:02 +0000 (08:54 +0900)
app/assets/javascripts/configurations.js.coffee.erb
app/controllers/comics_controller.rb
lib/content.rb
lib/item.rb
lib/manifest/list.rb
lib/manifest/manifest.rb

index dc15ed0..994351d 100644 (file)
   },\r
   lists: {\r
     scroll: {\r
+      default_page_size: 20, \r
       public_list: {\r
         type: 'public',\r
       },\r
index aa826f0..95a97ae 100644 (file)
@@ -11,11 +11,10 @@ class ComicsController < ApplicationController
   before_filter :authenticate_admin!, :only => [:list, :browse]
 
   @@model = Comic
-  @@list_manager = Pettanr.manifest.list_managers[@@model.item_name]
-  @@filer_manager = Pettanr.manifest.list_managers[@@model.item_name]
-  @@profiler_manager = Pettanr.manifest.list_managers[@@model.item_name]
+  @@list_manager = Pettanr::Application::manifest.list_managers[@@model.item_name]
+  @@filer_manager = Pettanr::Application::manifest.list_managers[@@model.item_name]
+  @@profiler_manager = Pettanr::Application::manifest.list_managers[@@model.item_name]
   def index
-    set_filer
     @list = @@list_manager.open('public', @page, @page_size, @operators)
     @items = @list.items
     respond_to do |format|
index fe4966e..6d6b71f 100644 (file)
@@ -2,6 +2,10 @@ class Pettanr::Content < Pettanr::Item
   self.abstract_class = true
   # ClassMethods
   
+  def self.owner_type
+    :author
+  end
+  
   def self.mylist_where me
     ''
   end
index cd06ee7..765480d 100644 (file)
@@ -23,19 +23,6 @@ class Pettanr::Item < ActiveRecord::Base
     self.plural.underscore
   end
   
-  def self.page_number prm = nil
-    page = prm.to_i
-    page = 1 if page < 1
-    page
-  end
-  
-  def self.page_size prm = self.default_page_size
-    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
-  end
-  
   def public_list
   end
   
index 41cf269..047f9ca 100644 (file)
@@ -3,18 +3,36 @@ module Pettanr
   class ListManager
     class PublicList
       def initialize page, page_size, operators, item_name, conf, manifest
-        @page = page
-        @page_size = page_size
-        @operators = operators
         @item_name = item_name
         @conf = conf
         @manifest = manifest
+        @page = self.page_number(page || @conf['default_page_size']) 
+        @page_size = self.page_size page_size
+        @operators = operators
         
         @model = @item_name.classify.constantize
+        @offset = (@page -1) * @page_size
+      end
+      
+      def self.page_number prm = nil
+        page = prm.to_i
+        page = 1 if page < 1
+        page
+      end
+      
+      def self.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
+      end
+      
+      def where
+        @model.list_where
       end
       
       def items
-        @model.public_list @page, @page_size
+        @model.where(self.where()).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size)
       end
       
       def paginate
@@ -35,8 +53,18 @@ module Pettanr
         @model = @item_name.classify.constantize
       end
       
+      def where 
+        case @model.owner_type
+        when :author
+          operator = @operators.author
+        when :artist
+          operator = @operators.artist
+        end
+        [@model.plural + '.' + @model.owner_type.to_s + '_id = ?', operator.id]
+      end
+      
       def items
-        @model.private_list @operators, @page, @page_size
+        @model.where(self.where()).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size)
       end
       
       def paginate
@@ -63,6 +91,10 @@ module Pettanr
         @foreign_key = @association_conf['foreign_key']
       end
       
+      def where
+        [@model.list_where + 'comics.author_id = ?', me.id] 
+      end
+      
       def items item
         method_name = 'list_by_' + item.item_name
         @association_model.__send__ @method_name, item.id, @operators, @page, @page_size
index b15e428..32b644a 100644 (file)
@@ -20,11 +20,12 @@ module Pettanr
     end
     
     class List
-      attr :item_name, :conf, :manifest
+      attr :item_name, :conf, :manifest, :default_page_size
       def initialize item_name, conf, manifest
         @item_name = item_name
         @conf = conf || {}
         @manifest = manifest
+        @default_page_size = @conf['default_page_size'] || 20
       end
       
     end