OSDN Git Service

v07
[pettanr/pettanr.git] / app / assets / javascripts / manifest / controller / action / base.js.coffee
1 class Manifest.ControllerModule.ActionModule.Base extends ManifestBase.TypeNameArgs\r
2   \r
3   set_default: () ->\r
4     super()\r
5     @args.item_name ||= Manifest.manifest().singularize(@parent.name)\r
6     @args.param_id ||= 'prefix'\r
7     \r
8   init: () ->\r
9     super()\r
10     @action_name = @name\r
11     @alias = @args.alias\r
12     @item_name = @args.item_name\r
13     @param_id = @args.param_id\r
14     # source manifest of alias manifest\r
15     @original = @args.original\r
16   \r
17   a_arg_names: () ->\r
18     []\r
19   \r
20   b_arg_names: () ->\r
21     ['item_name', 'param_id']\r
22   \r
23   controller: () ->\r
24     @parent\r
25   \r
26   alias_action: () ->\r
27     s = @alias.split('.')\r
28     c = Manifest.manifest().controllers[s[0]]\r
29     c.actions[s[1]]\r
30   \r
31   path_name: () ->\r
32     @parent.name\r
33     #Manifest.manifest().pluralize(@item_name)\r
34   \r
35   encode_query: (params) ->\r
36     q = []\r
37     q.push('page=' + Pettanr.to_s(params['page'])) if params['page']\r
38     q.push('page_size=' + Pettanr.to_s(params['page_size'])) if params['page_size']\r
39     q.push('path=' + params['path']) if params['path']\r
40     if q.length > 0\r
41       '?' + q.join('&')\r
42     else\r
43       ''\r
44   \r
45   encode_url: (action_name, params) ->\r
46     controller_name = @path_name()\r
47     c = controller_name\r
48     a = if action_name == 'index' or action_name == 'show' # or action_name == 'destroy' # router does not detect delete method action\r
49       ''\r
50     else\r
51       '/' + action_name\r
52     # f = if params['format']   # json request? so bad. html request as get rest api\r
53     f = if params['format'] == 'prof'\r
54       '.' + params['format']\r
55     else\r
56       ''\r
57     i = if params['id']\r
58       '/' + Pettanr.to_s(params['id'])\r
59     else\r
60       ''\r
61     q = @encode_query(params)\r
62     switch @param_id\r
63       when 'prefix'\r
64         c + i + a + f + q\r
65       when 'suffix'\r
66         c + a + i + f + q\r
67       else\r
68         c + a + f + q\r
69   \r
70   url: (params) ->\r
71     @encode_url(@name, params)\r
72   \r