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|
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
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
@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
@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
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