2 def initialize caption_conf
3 @caption_conf = caption_conf || {}
4 @link_conf = @caption_conf['link'] || {'type' => 'action', 'name' => 'show'}
5 @type_conf = @caption_conf['type'] || 'column'
6 @link_method_name = self.link_method_name
7 @tag_method_name = self.tag_method_name
11 case @link_conf['type']
13 case @link_conf['name']
41 def link_action_show view, item, operators
42 view.polymorphic_path(item)
45 def link_action_else view, item, operators
46 view.polymorphic_path(item, :action => @link_conf['name'])
49 def link_none view, item, operators
53 def link_url_column view, item, operators
54 item.__send__(@link_conf['name']).to_s
57 def link_else view, item, operators
61 def tag_column view, item, operators
62 item.attributes[@caption_conf['name']]
65 def tag_method view, item, operators
66 item.__send__(@caption_conf['name']).to_s
69 def tag_else view, item, operators
74 @tag_method_name != :tag_none
77 def render view, item, operators
78 link = self.__send__(@link_method_name, view, item, operators)
79 tag = self.__send__(@tag_method_name, view, item, operators)
80 tag = 'no caption' if tag.blank?
82 view.link_to_unless link.blank?, tag, link