OSDN Git Service

fix:element remove func failed
[pettanr/pettanr.git] / lib / manifest / system_resource.rb
1 require_dependency "manifest/system_resource/template"
2 module Manifest
3   class SystemResource
4     include SystemResourceModule
5     def self.set_default system_resource_manifest
6       system_resource_manifest['templates'] ||= {}
7       system_resource_manifest['select_items'] ||= {}
8       #oh my ...
9       #JSON.stringify couldn't print 1.0 
10       # 1 == 1.0 ?
11       #change class
12       system_resource_manifest['select_items']['speech_font_size_items'] ||= {}
13       system_resource_manifest['select_items']['speech_font_size_items'].each {|conf|
14         conf[1] = conf[1].to_f 
15       }
16       system_resource_manifest
17     end
18     
19     attr :templates, :select_items
20     def initialize manifest, system_resource_manifest
21       @manifest = manifest
22       @system_resource_manifest = system_resource_manifest
23       @templates = Template.manager(self, @system_resource_manifest['templates'])
24       @select_items = system_resource_manifest['select_items']
25     end
26     
27     # call after load app
28     def init
29       self.select_items_loader
30     end
31     
32     def select_items_loader
33       @manifest.models.each {|model_name, model_manifest|
34         model_manifest.attributes.each {|attribute_name, attribute_manifest|
35           source_manifest = attribute_manifest.source
36           next unless source_manifest
37           next unless source_manifest.type == 'model'
38           resource_item_name = source_manifest.resource_item_name
39           resource_action_name = source_manifest.resource_action_name
40           caption = source_manifest.caption_name
41           resource_controller_name = ::Manifest.manifest.pluralize(resource_item_name)
42           begin
43             list = Locmare::ListGroup.list(
44               resource_controller_name, 
45               resource_action_name, 
46               nil, 
47               {:page_size => -1}  # set no limit options
48             )
49             @select_items[source_manifest.select_item_name] = 
50               list.items.map {|item| [item.attributes[caption], item.id]}
51           rescue
52             puts 'skip store select_items:' + resource_item_name + '.' + resource_action_name
53           end
54         }
55       }
56     end
57     
58   end
59 end
60