OSDN Git Service

fix filer
[pettanr/pettanr.git] / lib / manifest / filer / symbol / default / link / link.rb
1 module Manifest
2   module FilerModule
3     module SymbolModule
4       module DefaultModule
5         module LinkModule
6           class BaseLink
7             attr :symbol, :link_manifest, :type
8             
9             def initialize symbol, link_manifest
10               @symbol = symbol
11               @link_manifest = link_manifest
12               self.set_default
13               self.init
14             end
15             
16             def set_default
17               @link_manifest['args'] ||= {}
18             end
19             
20             def init
21               @type = @link_manifest['type']
22               @args = @link_manifest['args']
23             end
24             
25             def url
26               raise "undefined url\n"
27             end
28             
29           end
30           
31           class ActionLink < BaseLink
32             attr  :name
33             
34             def set_default
35               super
36               @link_manifest['args']['name'] ||= 'show'
37             end
38             
39             def init
40               super
41               @name = @args['name']
42             end
43             
44             def url
45               '/' + @name
46             end
47             
48           end
49           
50           class NoneLink < BaseLink
51             attr  :name
52             
53             def set_default
54               super
55             end
56             
57             def init
58               super
59             end
60             
61             def url
62               nil
63             end
64             
65           end
66           
67           class UrlColumnLink < BaseLink
68             attr  :name
69             
70             def set_default
71               super
72               @link_manifest['args']['name'] ||= 'url'
73             end
74             
75             def init
76               super
77               @name = @args['name']
78             end
79             
80             def url
81               @name
82             end
83             
84           end
85           
86         end
87       end
88     end
89   end
90 end