4 attr_accessor :list_group_name, :list_name, :operators, :options, :item_name,
5 :controller_manifest, :action_manifest, :list_manifest, :model, :table_name,
6 :page_status, :item_wheres, :list_wheres
8 def initialize list_group_name, list_name, operators, options = {}
9 @list_group_name = list_group_name
10 @list_name = list_name
11 @operators = operators
14 @list_group_manifest = LocalManifest.manifest.list_groups[@list_group_name]
15 @list_manifest = @list_group_manifest.lists[@list_name]
16 @wheres = @list_manifest.wheres
17 @includes = @list_manifest.includes
19 @controller_name = @list_group_name
20 @action_name = @list_name
21 @controller_manifest = ::Manifest.manifest.controllers[@controller_name]
22 @action_manifest = @controller_manifest.actions[@action_name]
23 @item_name = @action_manifest.item_name
24 @model = ::Manifest.item_name_to_model @item_name
25 @table_name = @model.table_name
33 @page_status ||= LibModule::PageStatus.load(self, self.total, @options)
41 self.max_page_size > 0
49 @action_manifest.default_page_size
53 @action_manifest.max_page_size
57 order = @options['order'] || @options[:order] || @action_manifest.order
58 order = 'updated_at' unless ::Manifest.manifest.models[@item_name].attributes[order]
59 @table_name + '.' + order
63 direction = @options['direction'] || @options[:direction] || @action_manifest.direction
74 @options['id'] || @options[:id]
78 self.order + ' ' + self.direction
88 n = key + '_list_where'
89 r = r.where(@model.respond_to?(n) ? @model.__send__(n, self) : self.__send__(n))
97 self.total # get total
98 return [] unless self.page_status #.pager
99 @items ||= self.arel.order(
101 ).offset(self.page_status.offset).limit(self.page_status.limit)
107 @total ||= self.arel.count
111 @model.my_peta.boost.select do |boost_name, boost_manifest|
112 boost_manifest.level == 'show'
117 manifests = self.boost_manifests
118 @items.each do |item|
119 manifests.each do |boost_manifest|
120 item.boost_manifest # ?
125 def private_list_where
126 owner_model = if @model.element?
131 case owner_model.owner_type
133 operator = @operators.author
135 operator = @operators.artist
137 [owner_model.table_name + '.' + owner_model.owner_type.to_s + '_id = ?', operator.id]