OSDN Git Service

fix Manifest
[pettanr/pettanr.git] / lib / manifest / controller / action / list.rb
diff --git a/lib/manifest/controller/action/list.rb b/lib/manifest/controller/action/list.rb
new file mode 100644 (file)
index 0000000..3cc2dce
--- /dev/null
@@ -0,0 +1,63 @@
+module Manifest
+  module ActionModule
+    class ActionList
+      attr :controller, :action_name, :action_manifest, 
+        :item_name, :list_name
+      def initialize controller, action_name, action_manifest
+        @controller = controller
+        @action_name = action_name
+        @action_manifest = action_manifest
+        self.set_default
+        self.init
+      end
+      
+      def set_default
+        @action_manifest['args'] ||= {}
+        @action_manifest['args']['item_name'] ||= self.controller.item_name
+      end
+      
+      def init
+        @args = @action_manifest['args']
+        @item_name = @args['item_name']
+        raise "undefined list_name for controllers > #{self.controller_name} > actions > #{@action_name} > args\n" unless @args['list_name']
+        @list_name = @args['list_name']
+      end
+      
+      def controller_name
+        @controller.controller_name
+      end
+      
+      def controller_manifest
+        @controller.controller_manifest
+      end
+      
+      def list params, operators
+        Manifest.list_managers[@item_name].open(@list_name)
+      end
+      
+      def ready params, operators
+        @items = self.list.items params, operators
+      end
+      
+      def exec
+      end
+      
+      def render
+        format.html {
+          @filer = self.list.filer
+          render :template => 'system/filer', :locals => {
+            :filer => @filer
+          }
+        }
+      end
+      
+      def cook params, operators
+        self.ready params, operators
+        self.exec
+        self.render
+      end
+      
+    end
+    
+  end
+end