OSDN Git Service

manifest view profiler
[pettanr/pettanr.git] / lib / manifest / model / list / filter.rb
1 module Manifest
2   module ModelModule
3     module ListModule
4       class FilterList < Base
5         attr :filter_key, :filter_item_name
6         
7         def set_default
8           super
9           @list_manifest['args']['filter_item_name'] ||= @list_name.gsub(/^by_/, '')
10           @list_manifest['args']['filter_key'] ||= @list_manifest['args']['filter_item_name'] + '_id'
11         end
12         
13         def init
14           super
15           @filter_item_name = @args['filter_item_name']
16           @filter_key = @args['filter_key']
17         end
18         
19         def self._add_action item_name, action_name, list_name, list_conf
20           return
21           model = item_name.classify.constantize
22           controller_name = model.plural + 'Controller'
23           controller = controller_name.constantize
24           list_list_conf = Pettanr::Application::manifest.list(item_name).lists[list_name] || {}
25           from = list_list_conf['from']
26           filter_model = from.classify.constantize
27           filter_key = list_list_conf['filter_key']
28           return if controller.method_defined?(action_name)
29           controller.define_method(action_name) do 
30             filter_list filter_model, params
31           end
32         end
33         
34       end
35       
36     end
37   end
38 end