-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