1 require "manifest/list/base"
7 def self.manager manifest, my_manifests
8 my_manifests.each {|list_name, list_manifest|
9 self.new(manifest, list_name, list_manifest)
14 'public' => PublicList, 'private' => PrivateList, 'system_resource' => SystemResourceList,
15 'has_many' => HasManyList, 'has_many_through' => HasManyThroughList, 'filter' => FilterList,
16 'through_filter' => ThroughFilterList, 'element_filter' => ElementFilterList,
19 attr :list_name, :list_manifest,
20 :default_page_size, :max_page_size
21 def initialize manifest, list_name, list_manifest
23 @list_name = list_name
24 @list_manifest = list_manifest
27 @list_manifest.lists.each {|list_name, conf|
29 @lists[list_name] = @@types[type]
34 @list_manifest['lists'] ||= {}
35 @list_manifest['default_page_size'] ||= 25
36 @list_manifest['max_page_size'] ||= 100
40 @default_page_size = @list_manifest['default_page_size']
41 @max_page_size = @list_manifest['max_page_size']
43 @list_manifest['lists'].each {|list_name, list_manifest|
44 raise "undefined type for models > #{@model_name} > attributes > #{attribute_name}\n" unless attribute_manifest['type']
45 @lists[list_name] = List.new(self, list_name, list_manifest)
49 def open list_name, page, page_size, operators
50 raise "undefined list for #{@item_name}::#{list_name}\nconf:#{@list_conf}\n" unless @lists[list_name]
51 @lists[list_name].new page, page_size, operators, @item_name, list_name, @list_conf, @manifest
55 paginate = opt ? @list.paginate(opt) : @list.paginate
56 @filer ||= @manifest.filer_managers[@item_name].open(@item_name, @items, @operators, paginate)
59 def add_action action_name, list_name
60 @lists[list_name].add_action @item_name, action_name, list_name, @list_conf