OSDN Git Service

change page status
[pettanr/pettanr.git] / lib / locmare / list_group.rb
1 require_dependency "locmare/list_group/list/base"
2 require_dependency "locmare/list_group/list/public"
3 require_dependency "locmare/list_group/list/private"
4 require_dependency "locmare/list_group/list/system_resource"
5 require_dependency "locmare/list_group/list/filter"
6 require_dependency "locmare/list_group/list/through_filter"
7 require_dependency "locmare/list_group/list/foreign_filter"
8 require_dependency "locmare/list_group/list/play"
9 require_dependency "locmare/list_group/lib"
10 module Locmare
11   class ListGroup
12     include ListGroupModule
13     include LibModule
14     
15     def self.types
16       {
17         'public' => PublicList, 'private' => PrivateList, 'system_resource' => SystemResourceList,
18         'filter' => FilterList, 'through_filter' => ThroughFilterList, 'foreign_filter' => ForeignFilterList, 
19         'play' => PlayList
20       }
21     end
22     
23     def self.list controller_name, action_name, operators, options = {}
24       controller_manifest = Manifest.manifest.controllers[controller_name]
25       action_manifest = controller_manifest.actions[action_name]
26       if action_manifest.alias
27         options['order'] ||= action_manifest.order
28         options['direction'] ||= action_manifest.direction
29         alias_action = action_manifest.alias_action
30         ::Locmare::ListGroup.list alias_action.path_name, alias_action.name, operators, options
31       else
32         list_group_manifest = LocalManifest.manifest.list_groups[controller_name]
33         list_manifest = list_group_manifest.lists[action_name]
34         self.types[list_manifest.type].new controller_name, action_name, operators, options
35       end
36     end
37     
38   end
39 end
40