5 def initialize page, page_size, operators, item_name, conf, manifest
9 @default_page_size = @conf['default_page_size'] || 25
10 @max_page_size = @conf['max_page_size'] || 100
11 @page = self.page_number(page)
12 @page_size = self.page_size page_size
13 @operators = operators
15 @model = @item_name.classify.constantize
16 @offset = (@page -1) * @page_size
19 def page_number prm = nil
27 page_size = @max_page_size if page_size > @max_page_size
28 page_size = @default_page_size if page_size < 1
37 @model.where(self.where()).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size)
41 @model.list_paginate(@page, @page_size)
47 def initialize page, page_size, operators, item_name, conf, manifest
49 @page_size = page_size
50 @operators = operators
51 @item_name = item_name
55 @model = @item_name.classify.constantize
59 case @model.owner_type
61 operator = @operators.author
63 operator = @operators.artist
65 [@model.plural + '.' + @model.owner_type.to_s + '_id = ?', operator.id]
69 @model.where(self.where()).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size)
73 @model.list_paginate(@page, @page_size)
79 def initialize page, page_size, operators, item_name, conf, manifest
81 @page_size = page_size
82 @operators = operators
83 @item_name = item_name
87 @model = @item_name.classify.constantize
88 @association_name = @conf['association_name']
89 @has_many_conf = @manifest.model(@item_name).associations['has_many'] || {}
90 @association_conf = @has_many_conf[@association_name] || {}
91 @association_model_name = @association_conf['model']
92 @association_model = @association_model_name.classify.constantize
93 @foreign_key = @association_conf['foreign_key']
98 w += ' and ' unless w.blank?
99 [w + @association_model_name + '.' + @foreign_key + ' = ?', parent_item.id]
102 def items parent_item
103 @model.where(self.where(parent_item)).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size)
107 @model.list_paginate(@page, @page_size)
113 def initialize page, page_size, operators, item_name, conf, manifest
115 @page_size = page_size
116 @operators = operators
117 @item_name = item_name
121 @model = @item_name.classify.constantize
122 @filter_key = @conf['filter_key']
125 def items filter_item
126 @model.filtered_list filter_item, @filter_key, @operators, @page, @page_size
129 def paginate filter_item
130 @model.list_paginate(filter_item, @filter_key, @operators, @page, @page_size)
135 @@types = {'public' => PublicList, 'private' => PrivateList, 'has_many' => HasManyList, 'filter' => FilterList}
136 def initialize list_manifest
137 @list_manifest = list_manifest
138 @item_name = @list_manifest.item_name
139 @manifest = @list_manifest.manifest
140 @list_conf = @list_manifest.conf
142 @list_manifest.lists.each {|list_name, conf|
144 @lists[list_name] = @@types[type]
148 def open list_name, page, page_size, operators
149 @lists[list_name].new page, page_size, operators, @item_name, @list_conf, @manifest