OSDN Git Service

fix license picture
[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.model_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.model_attribute_manifest.source.type == 'model'
24               ::Manifest.manifest.system_resources.select_items[self.select_item_name]
25             else
26               resource_model_name = self.model_attribute_manifest.source.resource_model_name
27               resource_list_name = self.model_attribute_manifest.source.resource_list_name
28               filter_column_name = self.model_attribute_manifest.source.filter_column_name
29               filter_id = self.form.item.attributes[filter_column_name]
30               list = Locmare::ListGroup.list resource_model_name, resource_list_name
31               list.items(nil, {:id => filter_id}, 
32                 0, -1 # no limit
33               ).map {|i| [i.caption, i.id] }
34             end
35           end
36           
37           def source_by_model?
38             case self.model_attribute_manifest.source.type
39             when 'model', 'filter'
40               true
41             when 'magic_number'
42               false
43             else
44               nil
45             end
46           end
47           
48         end
49         
50       end
51     end
52   end
53 end