OSDN Git Service

rename model name
[pettanr/pettanr.git] / lib / manifest / controller / action / base.rb
1 module Manifest
2   module ControllerModule
3     module ActionModule
4       class Base < ManifestBase::TypeNameArgs
5         attr :param_id, :item_name, :action_name
6         
7         def set_default
8           super
9           @args['item_name'] ||= ::Manifest.manifest.singularize(@parent.name)
10           @args['param_id'] ||= 'prefix'
11         end
12         
13         def init
14           super
15           @action_name = @name
16           @item_name = @args['item_name']
17           @param_id = @args['param_id']
18         end
19         
20         def path_name
21           ::Manifest.manifest.pluralize(@item_name)
22         end
23         
24         def encode_query params
25           q = []
26           q.push('page=' + params['page'].to_s) if params['page']
27           q.push('page_size=' + params['page_size'].to_s) if params['page_size']
28           if q.length > 0
29             '?' + q.join('&')
30           else
31             ''
32           end
33         end
34         
35         def encode_url params = {}
36           controller_name = '/' + self.path_name
37           c = controller_name
38           a = if @name == 'index' or @name == 'show' or @name == 'destroy'
39             ''
40           else
41             '/' + @name
42           end
43           pf = params['format'] || params[:format]
44           # f = if params['format']   # json request? so bad. html request as get rest api
45           f = if pf == 'prof'
46             '.' + params['format'].to_s
47           else
48             ''
49           end
50           pid = params['id'] || params[:id]
51           i = if pid
52             '/' + params['id'].to_s
53           else
54             ''
55           end
56           q = self.encode_query(params)
57           case @param_id
58           when 'prefix'
59             c + i + a + f + q
60           when 'suffix'
61             c + a + i + f + q
62           else
63             c + a + f + q
64           end
65         end
66         
67         def url params
68           self.encode_url(params)
69         end
70         
71       end
72       
73     end
74   end
75 end