OSDN Git Service

change page status for offset
[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           q.push('offset=' + params['offset'].to_s) if params['offset']
29           q.push('count=' + params['count'].to_s) if params['count']
30           if q.length > 0
31             '?' + q.join('&')
32           else
33             ''
34           end
35         end
36         
37         def encode_url params = {}
38           controller_name = '/' + self.path_name
39           c = controller_name
40           a = if @name == 'index' or @name == 'show' or @name == 'destroy'
41             ''
42           else
43             '/' + @name
44           end
45           pf = params['format'] || params[:format]
46           # f = if params['format']   # json request? so bad. html request as get rest api
47           f = if pf == 'prof'
48             '.' + params['format'].to_s
49           else
50             ''
51           end
52           pid = params['id'] || params[:id]
53           i = if pid
54             '/' + params['id'].to_s
55           else
56             ''
57           end
58           q = self.encode_query(params)
59           case @param_id
60           when 'prefix'
61             c + i + a + f + q
62           when 'suffix'
63             c + a + i + f + q
64           else
65             c + a + f + q
66           end
67         end
68         
69         def url params
70           self.encode_url(params)
71         end
72         
73       end
74       
75     end
76   end
77 end