OSDN Git Service

add lib/manifest/local/view/filer
[pettanr/pettanr.git] / lib / manifest / local / view / filer.rb
index 044a391..2d727e7 100644 (file)
-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"
+require_dependency "manifest/local/view/filer/header"
+require_dependency "manifest/local/view/filer/body"
+require_dependency "manifest/local/view/filer/footer"
 module Manifest
-  module ViewModule
-    class FilerManager
+  module View
+    class Filer
       include FilerModule
-      def self.manager filers
-        filer_views = {}
-        filers.each {|item_name, filer_manifest|
-          filer_views[item_name] = self.new(filer_manifest)
-        }
-        filer_views
+      attr :manifest, :item_name, :items, :paginate, :operators, :template_dir, 
+        :header, :body, :footer
+      def initialize item_name, items, paginate, operators
+        @item_name = item_name
+        @items = items
+        @paginate = paginate
+        @operators = operators
+        @manifest = Manifest.manifest.filers[@item_name]
+        @template_dir = 'templates/r/filer/'
+        @header = Header.new self
+        @body = Body.new self
+        @footer = Footer.new self
       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
+      def model
+        ::Manifest::item_name_to_model @item_name
       end
       
-      def open
-        Filer.new self, items
+      def template_file_name
+        "filer"
       end
       
-    end
-  end
-  class Filer
-    attr :filer_manifest, :item_name, :manifest, :filer_conf, 
-      :symbol, :caption, :summary, :icon, :date, :edit
-    def initialize filer_manager, items
-      @filer_manifest = filer_manifest
-      @items = items
-      @file_items = @items.map {|item| 
-        FileItem.new self, @filer_manifest
-      }
-    end
-    
-    def render view
-    end
-    
-  end
-  
-end
-  class FileItemView
-    attr :item, :operators
-    def initialize item, operators, filer_manifest
-      @item = item
-      @operators = operators
-      @filer_manifest = filer_manifest
-      @symbol = SymbolView self, @filer_manifest.symbol.symbol_manifest
-    end
-    
-    def caption view
-      @caption.render view, @item, @operators
-    end
-    
-    def summary view
-      @summary.render view, @item, @operators
-    end
-    
-    def icon view
-      @icon.render view, @item, @operators
-    end
-    
-    def date view
-      @date.render view, @item, @operators
-    end
-    
-    def edit view
-      @edit.render view, @item, @operators
-    end
-    
-    def render view
-    end
-    
-  end
-  
-  class SymbolView
-    def initialize file_item, symbol_manifest
-      @symbol_manifest = symbol_manifest
-    end
-    
-    def render view
-     if @tag_method_name == :tag_template
-       view.render item.path_name + '/' + @symbol_conf['name'], :item => item
-     else
-       link = self.__send__(@link_method_name, view, item, operators)
-       tag = self.__send__(@tag_method_name, view, item, operators)
-       unless tag.blank?
-         view.link_to_unless link.blank?, tag, link
-       end
-     end
-    end
-
-  end
-  
-module Manifest
-  module SymbolModule
-    class Symbol 
-      def initialize symbol_conf
-        @symbol_conf = symbol_conf || {}
-        @link_conf = @symbol_conf['link'] || {'type' => 'action', 'name' => 'show'}
-        @type_conf = @symbol_conf['type'] || 'image'
-        @link_method_name = self.link_method_name
-        @tag_method_name = self.tag_method_name
-      end
-      
-      def link_method_name
-        case @link_conf['type']
-        when 'action'
-          case @link_conf['name']
-          when 'show'
-            :link_action_show
-          else
-            :link_action_else
-          end
-        when 'none'
-          :link_none
-        when 'url_column'
-          :link_url_column
-        else
-          :link_else
-        end
-      end
-      
-      def link_action_show view, item, operators
-        view.polymorphic_path(item)
-      end
-      
-      def link_action_else view, item, operators
-        view.polymorphic_path(item, :action => @link_conf['name'])
-      end
-      
-      def link_none view, item, operators
-        ''
-      end
-      
-      def link_url_column view, item, operators
-        item.__send__(@link_conf['name']).to_s
-      end
-      
-      def link_else view, item, operators
-        ''
-      end
-      
-      def tag_image view, item, operators
-        view.tag(:img, :src => @symbol_conf['name'], :width => 64, :height => 64)
-      end
-      
-      def tag_picture view, item, operators
-        view.tag(:img, item.__send__(@symbol_conf['name']))
-      end
-      
-      def tag_template view, item, operators
-        view.render item.path_name + '/' + @symbol_conf['name'], :item => item
-        nil
-      end
-      
-      def tag_else view, item, operators
-        'no.png'
-      end
-      
-      def visible?
-        self.link_method_name != :link_none
-      end
-      
-      def render view, item, operators
-        if @tag_method_name == :tag_template
-          view.render item.path_name + '/' + @symbol_conf['name'], :item => item
-        else
-          link = self.__send__(@link_method_name, view, item, operators)
-          tag = self.__send__(@tag_method_name, view, item, operators)
-          unless tag.blank?
-            view.link_to_unless link.blank?, tag, link
-          end
-        end
+      def template_name
+        self.template_dir + self.template_file_name
       end
       
     end
-    
   end
 end