OSDN Git Service

rename model name
[pettanr/pettanr.git] / lib / locmare / form / field / tag / select.rb
1 module Locmare
2   module FormModule
3     module FieldModule
4       module TagModule
5         class SelectTag < Base
6           def template_file_name
7             'select'
8           end
9           
10           def model_manifest
11             ::Manifest.manifest.models[@field.field_manifest.item_name]
12           end
13           
14           def model_attribute_manifest
15             self.model_manifest.attributes[@field.field_manifest.column_name]
16           end
17           
18           def select_item_name
19             self.model_attribute_manifest.source.select_item_name
20           end
21           
22           def items
23             if self.source_by_filter?
24               resource_item_name = self.model_attribute_manifest.source.resource_item_name
25               resource_action_name = self.model_attribute_manifest.source.resource_action_name
26               filter_column_name = self.model_attribute_manifest.source.filter_column_name
27               filter_id = self.form.item.attributes[filter_column_name]
28               resource_controller_name = ::Manifest.manifest.models[resource_item_name].classify.tables
29               list = Locmare::ListGroup.list(
30                 resource_controller_name, 
31                 resource_action_name, 
32                 self.form.operators, 
33                 {:id => filter_id}
34               )
35               list.items(nil, 
36                 0, -1 # no limit
37               ).map {|i| [i.caption, i.id] }
38             else
39               ::Manifest.manifest.system_resources.select_items[self.select_item_name]
40             end
41           end
42           
43           def source_by_filter?
44             case self.model_attribute_manifest.source.type
45             when 'filter'
46               true
47             when 'model', 'magic_number'
48               false
49             else
50               nil
51             end
52           end
53           
54         end
55         
56       end
57     end
58   end
59 end