X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=lib%2Fmanifest%2Fmanifest.rb;h=17a9680926ca3a15485dd7594e1b3765d0040929;hb=560060866d96d7253a57f75055a583f2d9fb8d19;hp=af17b4cae51289e71240b122691ef60c5c7bfc9d;hpb=20fb6f190eab77eb3b8059bdd6b5839989dfb682;p=pettanr%2Fpettanr.git diff --git a/lib/manifest/manifest.rb b/lib/manifest/manifest.rb index af17b4ca..17a96809 100644 --- a/lib/manifest/manifest.rb +++ b/lib/manifest/manifest.rb @@ -1,62 +1,31 @@ module Manifest class Manifest cattr_accessor :manifest - attr :system_resources, :magic_numbers, :select_items, - :controllers, :models, :lists, :profilers, :filers, :forms, :lists + attr :system_resources, :magic_numbers, + :controllers, :models # call me before load routes.rb # routes.rb needs engine_resources manifest in system_resources # ex. it's adding license_groups routes - def initialize manifest - @manifest = manifest || {} - @system_resources = SystemResources.new(self, SystemResources.set_default(@manifest['system_resources'])) - @magic_numbers = @manifest['magic_numbers'] - @select_items = @manifest['select_items'] + def initialize global_json + @global_json = global_json || {} + @system_resources = SystemResource.new(self, SystemResource.set_default(@global_json['system_resources'])) + @magic_numbers = @global_json['magic_numbers'] end - # managers can't initialize at application.rb - # call me after configured Rails Application def init + # managers can't initialize before load application.rb return unless defined? ::Pettanr - @controllers = Controller.manager(self, @manifest['controllers']) - @models = Model.manager(self, @manifest['models']) - @locals = @manifest['locals'] - @filers = Filer.manager(self, @locals['filers']) - @profilers = Profiler.manager(self, @locals['profilers']) - @forms = Form.base_manager(self, @locals['forms']) - @forms.merge(Form.extend_manager(self, @locals['forms'])) - @lists = List.manager(self, @locals['lists']) - select_items_loader - add_action + @controllers = Controller.manager(self, @global_json['controllers'] || {}) + @models = Model.manager(self, @global_json['models'] || {}) end - # call after load app - def select_items_loader - @system_resources.select_items['model_loader'].each {|name, conf| - raise "undefined model_name for select_items > model_loader > #{name}\n" unless conf['model_name'] - model_name = conf['model_name'] - list_name = conf['list_name'] || 'select_items' - caption = conf['caption_name'] || 'caption' - list_group = @lists[model_name] - raise "undefined list for select_items > model_loader > #{name} > model_name > #{model_name} \n" unless list_group - list = list_group[list_name] - raise "undefined list for select_items > model_loader > #{name} > list_name > #{list_name} \n" unless list - @select_items['model'] ||= {} - r = list.open operators, options - @select_items['model'][name] = r.items.map {|item| [item.attributes[caption], item.id]} - } + def system_resources_init + @system_resources.init end - def add_action - return - @controllers.each do |controller_name, controller| - model_name = controller.model_name - next if model_name.blank? - controller.actions.each do |action_name, conf| - next unless conf['type'] == 'list' - list_name = conf['list']['list_name'] - list = Pettanr::Application::manifest.list_managers[model_name] - list.add_action action_name, list_name - end + def load_models_manifest + @models.each do |model_name, model| + model.classify.load_manifest end end @@ -67,14 +36,22 @@ module Manifest Manifest.manifest end - def load json - Manifest.manifest = Manifest.new json + def load global_json + Manifest.manifest = Manifest.new global_json end def item_name_to_model item_name item_name.classify.constantize end + def singularize name + name.singularize + end + + def pluralize name + name.pluralize + end + end extend ModuleMethods