From ac4de6ad862fba7a9722f9482c29ac64d48ca4ad Mon Sep 17 00:00:00 2001 From: yasushiito Date: Thu, 30 Jan 2014 11:05:08 +0900 Subject: [PATCH] fix view --- app/controllers/application_controller.rb | 14 ++++--- config/environment.rb | 4 +- lib/manifest.rb | 1 + lib/manifest/list.rb | 2 +- lib/manifest/list/public.rb | 5 +++ lib/manifest/local/view.rb | 14 +++++++ lib/{view/filer => manifest/local/view}/filer.rb | 49 +++++++++++++++++----- lib/{ => manifest/local}/view/filer/caption.rb | 0 .../local}/view/filer/caption/face.rb | 0 .../local}/view/filer/caption/link.rb | 0 lib/{ => manifest/local}/view/filer/date.rb | 0 lib/{ => manifest/local}/view/filer/edit.rb | 0 lib/{ => manifest/local}/view/filer/icon.rb | 0 lib/{ => manifest/local}/view/filer/summary.rb | 0 lib/{ => manifest/local}/view/filer/symbol.rb | 0 lib/{ => manifest/local}/view/filer/symbol/face.rb | 0 lib/{ => manifest/local}/view/filer/symbol/link.rb | 0 lib/{ => manifest/local}/view/form/form.rb | 0 lib/{ => manifest/local}/view/list/list.rb | 0 lib/{ => manifest/local}/view/profiler/profiler.rb | 0 lib/manifest/manifest.rb | 6 +-- 21 files changed, 73 insertions(+), 22 deletions(-) create mode 100644 lib/manifest/local/view.rb rename lib/{view/filer => manifest/local/view}/filer.rb (76%) rename lib/{ => manifest/local}/view/filer/caption.rb (100%) rename lib/{ => manifest/local}/view/filer/caption/face.rb (100%) rename lib/{ => manifest/local}/view/filer/caption/link.rb (100%) rename lib/{ => manifest/local}/view/filer/date.rb (100%) rename lib/{ => manifest/local}/view/filer/edit.rb (100%) rename lib/{ => manifest/local}/view/filer/icon.rb (100%) rename lib/{ => manifest/local}/view/filer/summary.rb (100%) rename lib/{ => manifest/local}/view/filer/symbol.rb (100%) rename lib/{ => manifest/local}/view/filer/symbol/face.rb (100%) rename lib/{ => manifest/local}/view/filer/symbol/link.rb (100%) rename lib/{ => manifest/local}/view/form/form.rb (100%) rename lib/{ => manifest/local}/view/list/list.rb (100%) rename lib/{ => manifest/local}/view/profiler/profiler.rb (100%) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 28f9beb7..680b10e1 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -109,15 +109,17 @@ class ApplicationController < ActionController::Base end def public_list - c = Manifest.manifest.controllers[self.class.model.item_name] - a = c.actions[params[:action].to_s] - ml = Manifest.manifest.models[a.item_name].lists[a.list_name] - l = Manifest.manifest.lists[a.item_name][a.list_name] - r = l.open({:id => params}, @operators) + my_controller = Manifest.manifest.controllers[self.class.model.item_name] + my_action = my_controller.actions[params[:action].to_s] + my_model = Manifest.manifest.models[my_action.item_name] + my_model_list = my_model.lists[my_action.list_name] + my_list = Manifest.manifest.lists[my_action.item_name] + list = my_list[my_action.list_name] + r = list.open(@operators, {:id => params}) @items = r.items respond_to do |format| format.html { - @filer = @action.filer + @filer = Manifest.manifest.views[my_action.item_name].open items, operators, paginate render :template => 'system/filer', :locals => { :filer => @filer } diff --git a/config/environment.rb b/config/environment.rb index 25c8b0ac..eade9807 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -15,8 +15,8 @@ require 'owner' require 'content' require 'element' require 'element_part' -# require_dependency 'manifest' -require_dependency 'editor/editor' # Initialize the rails application Pettanr::Application.initialize! +require_dependency 'manifest' +require_dependency 'editor/editor' Manifest.manifest.init diff --git a/lib/manifest.rb b/lib/manifest.rb index a1975c55..64b54ea8 100644 --- a/lib/manifest.rb +++ b/lib/manifest.rb @@ -8,6 +8,7 @@ require_dependency "manifest/filer" require_dependency "manifest/form" require_dependency "manifest/list" require_dependency "manifest/system_resources" +require_dependency "manifest/local/view" Manifest::load JSON.parse(open(File.expand_path('../../public/manifest.json', __FILE__)).read) Manifest.manifest.init diff --git a/lib/manifest/list.rb b/lib/manifest/list.rb index 557a4dde..1d480221 100644 --- a/lib/manifest/list.rb +++ b/lib/manifest/list.rb @@ -26,7 +26,7 @@ module Manifest raise "undefined type for lists > #{item_name} > #{list_name}\n" unless type my_class = @@types[type] raise "undefined class for lists > #{item_name} > #{list_name} > #{type}\n" unless my_class - my_class.new(manifest, item_name, list_name, my_manifest) + lists[list_name] = my_class.new(manifest, item_name, list_name, my_manifest) } lists end diff --git a/lib/manifest/list/public.rb b/lib/manifest/list/public.rb index 767299c0..749f54a8 100644 --- a/lib/manifest/list/public.rb +++ b/lib/manifest/list/public.rb @@ -29,6 +29,11 @@ module Manifest def order @model.list_order end + + def items options, offset, page_size + @model.where(self.where()).includes(self.includes).order(self.order).offset(offset).limit(page_size) + end + end end diff --git a/lib/manifest/local/view.rb b/lib/manifest/local/view.rb new file mode 100644 index 00000000..aa1c7f18 --- /dev/null +++ b/lib/manifest/local/view.rb @@ -0,0 +1,14 @@ +require_dependency "manifest/local/view/filer" +module Manifest + class View + attr :manifest, + :filers, :caption, :summary, :icon, :date, :edit + def initialize manifest + @manifest = manifest + @filers = ViewModule::Filer.manager(@manifest.filers) + end + + end + +end + diff --git a/lib/view/filer/filer.rb b/lib/manifest/local/view/filer.rb similarity index 76% rename from lib/view/filer/filer.rb rename to lib/manifest/local/view/filer.rb index ccd856c5..044a3918 100644 --- a/lib/view/filer/filer.rb +++ b/lib/manifest/local/view/filer.rb @@ -1,7 +1,43 @@ - class FilerView +require_dependency "manifest/local/view/filer/symbol" +require_dependency "manifest/local/view/filer/caption" +require_dependency "manifest/local/view/filer/summary" +require_dependency "manifest/local/view/filer/icon" +require_dependency "manifest/local/view/filer/date" +require_dependency "manifest/local/view/filer/edit" +module Manifest + module ViewModule + class FilerManager + include FilerModule + def self.manager filers + filer_views = {} + filers.each {|item_name, filer_manifest| + filer_views[item_name] = self.new(filer_manifest) + } + filer_views + end + + attr :manifest, + :symbol, :caption, :summary, :icon, :date, :edit + def initialize filer_manifest + @filer_manifest = filer_manifest + @symbol = Symbol.new @filer_manifest.symbol + @caption = Caption.new @filer_manifest.caption + @summary = Summary.new @filer_manifest.summary + @icon = Icon.new @filer_manifest.icon + @date = Date.new @filer_manifest.date + @edit = Edit.new @filer_manifest.edit + end + + def open + Filer.new self, items + end + + end + end + class Filer attr :filer_manifest, :item_name, :manifest, :filer_conf, :symbol, :caption, :summary, :icon, :date, :edit - def initialize filer_manifest, items, operators, paginate + def initialize filer_manager, items @filer_manifest = filer_manifest @items = items @file_items = @items.map {|item| @@ -12,16 +48,9 @@ def render view end - def model_name - @item_name - end - - def model - model_name.classify.constantize - end - end +end class FileItemView attr :item, :operators def initialize item, operators, filer_manifest diff --git a/lib/view/filer/caption.rb b/lib/manifest/local/view/filer/caption.rb similarity index 100% rename from lib/view/filer/caption.rb rename to lib/manifest/local/view/filer/caption.rb diff --git a/lib/view/filer/caption/face.rb b/lib/manifest/local/view/filer/caption/face.rb similarity index 100% rename from lib/view/filer/caption/face.rb rename to lib/manifest/local/view/filer/caption/face.rb diff --git a/lib/view/filer/caption/link.rb b/lib/manifest/local/view/filer/caption/link.rb similarity index 100% rename from lib/view/filer/caption/link.rb rename to lib/manifest/local/view/filer/caption/link.rb diff --git a/lib/view/filer/date.rb b/lib/manifest/local/view/filer/date.rb similarity index 100% rename from lib/view/filer/date.rb rename to lib/manifest/local/view/filer/date.rb diff --git a/lib/view/filer/edit.rb b/lib/manifest/local/view/filer/edit.rb similarity index 100% rename from lib/view/filer/edit.rb rename to lib/manifest/local/view/filer/edit.rb diff --git a/lib/view/filer/icon.rb b/lib/manifest/local/view/filer/icon.rb similarity index 100% rename from lib/view/filer/icon.rb rename to lib/manifest/local/view/filer/icon.rb diff --git a/lib/view/filer/summary.rb b/lib/manifest/local/view/filer/summary.rb similarity index 100% rename from lib/view/filer/summary.rb rename to lib/manifest/local/view/filer/summary.rb diff --git a/lib/view/filer/symbol.rb b/lib/manifest/local/view/filer/symbol.rb similarity index 100% rename from lib/view/filer/symbol.rb rename to lib/manifest/local/view/filer/symbol.rb diff --git a/lib/view/filer/symbol/face.rb b/lib/manifest/local/view/filer/symbol/face.rb similarity index 100% rename from lib/view/filer/symbol/face.rb rename to lib/manifest/local/view/filer/symbol/face.rb diff --git a/lib/view/filer/symbol/link.rb b/lib/manifest/local/view/filer/symbol/link.rb similarity index 100% rename from lib/view/filer/symbol/link.rb rename to lib/manifest/local/view/filer/symbol/link.rb diff --git a/lib/view/form/form.rb b/lib/manifest/local/view/form/form.rb similarity index 100% rename from lib/view/form/form.rb rename to lib/manifest/local/view/form/form.rb diff --git a/lib/view/list/list.rb b/lib/manifest/local/view/list/list.rb similarity index 100% rename from lib/view/list/list.rb rename to lib/manifest/local/view/list/list.rb diff --git a/lib/view/profiler/profiler.rb b/lib/manifest/local/view/profiler/profiler.rb similarity index 100% rename from lib/view/profiler/profiler.rb rename to lib/manifest/local/view/profiler/profiler.rb diff --git a/lib/manifest/manifest.rb b/lib/manifest/manifest.rb index 984233a8..cc582332 100644 --- a/lib/manifest/manifest.rb +++ b/lib/manifest/manifest.rb @@ -2,7 +2,7 @@ module Manifest class Manifest cattr_accessor :manifest attr :system_resources, :magic_numbers, :select_items, - :controllers, :models, :lists, :profilers, :filers, :forms, :lists + :controllers, :models, :lists, :profilers, :filers, :forms, :lists, :views # call me before load routes.rb # routes.rb needs engine_resources manifest in system_resources # ex. it's adding license_groups routes @@ -13,9 +13,8 @@ module Manifest @select_items = @manifest['select_items'] 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']) @@ -25,6 +24,7 @@ module Manifest @forms = Form.base_manager(self, @locals['forms']) @forms.merge(Form.extend_manager(self, @locals['forms'])) @lists = List.manager(self, @locals['lists']) + @views = View.new self select_items_loader add_action end -- 2.11.0