From c31eb3cb40e081cf695a64e4759c210097486a8c Mon Sep 17 00:00:00 2001 From: yasushiito Date: Thu, 5 Dec 2013 08:54:02 +0900 Subject: [PATCH] temp --- .../javascripts/configurations.js.coffee.erb | 1 + app/controllers/comics_controller.rb | 7 ++-- lib/content.rb | 4 +++ lib/item.rb | 13 ------- lib/manifest/list.rb | 42 +++++++++++++++++++--- lib/manifest/manifest.rb | 3 +- 6 files changed, 47 insertions(+), 23 deletions(-) diff --git a/app/assets/javascripts/configurations.js.coffee.erb b/app/assets/javascripts/configurations.js.coffee.erb index dc15ed0b..994351de 100644 --- a/app/assets/javascripts/configurations.js.coffee.erb +++ b/app/assets/javascripts/configurations.js.coffee.erb @@ -2055,6 +2055,7 @@ }, lists: { scroll: { + default_page_size: 20, public_list: { type: 'public', }, diff --git a/app/controllers/comics_controller.rb b/app/controllers/comics_controller.rb index aa826f0f..95a97aee 100644 --- a/app/controllers/comics_controller.rb +++ b/app/controllers/comics_controller.rb @@ -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| diff --git a/lib/content.rb b/lib/content.rb index fe4966e9..6d6b71f1 100644 --- a/lib/content.rb +++ b/lib/content.rb @@ -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 diff --git a/lib/item.rb b/lib/item.rb index cd06ee78..765480d6 100644 --- a/lib/item.rb +++ b/lib/item.rb @@ -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 diff --git a/lib/manifest/list.rb b/lib/manifest/list.rb index 41cf2692..047f9cac 100644 --- a/lib/manifest/list.rb +++ b/lib/manifest/list.rb @@ -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 diff --git a/lib/manifest/manifest.rb b/lib/manifest/manifest.rb index b15e428a..32b644a9 100644 --- a/lib/manifest/manifest.rb +++ b/lib/manifest/manifest.rb @@ -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 -- 2.11.0