OSDN Git Service

fix:element remove func failed
[pettanr/pettanr.git] / app / assets / javascripts / pettanr / action_filter.js.coffee
1 class Pettanr.ActionFilter\r
2   \r
3   # access block\r
4   # return sign in form if invalid url\r
5   # return null if url is valid\r
6   @test: (params) ->\r
7     return @guest_url() if @is_deny('reader', params) or @is_deny('resource_reader', params) or @is_deny('user', params)\r
8     return @new_author_url() if @is_deny('author', params)\r
9     return @new_artist_url() if @is_deny('artist', params)\r
10     null\r
11   \r
12   @filters: () ->\r
13     if Pettanr.is_sns()\r
14       @sns_filters()\r
15     else\r
16       @blog_filters()\r
17   \r
18   @my_filters: (role, params) ->\r
19     f = @filters()\r
20     c = f[params['controller']] || {}\r
21     r = c[role]\r
22     r\r
23   \r
24   @before_filter: (action_name, filter_action_names) ->\r
25     _.contains(filter_action_names, action_name)\r
26   \r
27   # return false if allow\r
28   # return true if deny\r
29   @is_deny: (role, params) ->\r
30     n = 'is_' + role\r
31     if not Pettanr.cache.operators[n]()  # ex: operators.is_user()\r
32       filter = @my_filters(role, params)\r
33       if @before_filter(params['action'], filter)\r
34         return true\r
35     false\r
36   \r
37   @guest_url: () ->\r
38     'user_seeeions/new'\r
39   \r
40   @new_author_url: () ->\r
41     'authors/new'\r
42   \r
43   @new_artist_url: () ->\r
44     'artists/new'\r
45   \r
46   @suply_default: (reader, resource_reader, user, author, artist) ->\r
47     author_filter = if _.isFunction(author)\r
48       author()\r
49     else\r
50       _.union(@default_author_filters, author)\r
51     artist_filter = if _.isFunction(artist)\r
52       artist()\r
53     else\r
54       _.union(@default_artist_filters, artist)\r
55     {\r
56       reader: _.union(@default_reader_filters, reader),\r
57       resource_reader: _.union(@default_resource_reader_filters, resource_reader),\r
58       user: _.union(@default_user_filters, user),\r
59       author: author_filter,\r
60       artist: artist_filter\r
61     }\r
62   \r
63   @default_reader_filters = ['index', 'show']\r
64   @default_resource_reader_filters = []\r
65   @default_user_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
66   @default_author_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
67   @default_artist_filters = []\r
68   \r
69   @sns_filters: () ->\r
70     {\r
71       folders: @suply_default(\r
72         ['root', 'watch'], \r
73         [], \r
74         [], \r
75         [], \r
76         []\r
77       ),\r
78       scrolls: @suply_default(\r
79         ['play', 'by_panel', 'by_author'], \r
80         [], \r
81         [], \r
82         [], \r
83         []\r
84       ),\r
85       scroll_panels: @suply_default(\r
86         ['by_panel', 'by_scroll', 'by_author'], \r
87         [], \r
88         [], \r
89         [], \r
90         []\r
91       ),\r
92       comics: @suply_default(\r
93         ['play', 'by_story', 'by_author'], \r
94         [], \r
95         [], \r
96         [], \r
97         []\r
98       ),\r
99       comic_stories: @suply_default(\r
100         ['by_story', 'by_comic', 'by_author'], \r
101         [], \r
102         [], \r
103         [], \r
104         []\r
105       ),\r
106       stories: @suply_default(\r
107         ['play', 'by_comic', 'by_sheet', 'by_author'], \r
108         [], \r
109         [], \r
110         [], \r
111         []\r
112       ),\r
113       story_sheets: @suply_default(\r
114         ['by_story', 'by_sheet', 'by_author'], \r
115         [], \r
116         [], \r
117         [], \r
118         []\r
119       ),\r
120       sheets: @suply_default(\r
121         ['play', 'by_story', 'by_panel', 'by_author'], \r
122         [], \r
123         [], \r
124         [], \r
125         []\r
126       ),\r
127       sheet_panels: @suply_default(\r
128         ['by_panel', 'by_sheet', 'by_author'], \r
129         [], \r
130         [], \r
131         [], \r
132         []\r
133       ),\r
134       panels: @suply_default(\r
135         ['by_scroll', 'by_sheet', 'by_author', 'by_speech_balloon_template'], \r
136         [], \r
137         [], \r
138         [], \r
139         []\r
140       ),\r
141       panel_pictures: @suply_default(\r
142         ['by_panel', 'by_author'], \r
143         [], \r
144         [], \r
145         [], \r
146         []\r
147       ),\r
148       speech_balloons: @suply_default(\r
149         ['by_panel', 'by_author', 'by_speech_balloon_template'], \r
150         [], \r
151         [], \r
152         [], \r
153         []\r
154       ),\r
155       speeches: @suply_default(\r
156         ['by_author', 'by_speech_balloon', 'by_speech_balloon_template', 'by_writing_format'], \r
157         [], \r
158         [], \r
159         [], \r
160         []\r
161       ),\r
162       balloons: @suply_default(\r
163         [], \r
164         [], \r
165         [], \r
166         [], \r
167         []\r
168       ),\r
169       ground_pictures: @suply_default(\r
170         ['by_panel', 'by_author'], \r
171         [], \r
172         [], \r
173         [], \r
174         []\r
175       ),\r
176       ground_colors: @suply_default(\r
177         ['by_panel', 'by_author'], \r
178         [], \r
179         [], \r
180         [], \r
181         []\r
182       ),\r
183       original_pictures: @suply_default(\r
184         ['history'], \r
185         [], \r
186         [], \r
187         () ->\r
188           []\r
189         , \r
190         ['index', 'new', 'create', 'edit', 'update', 'destroy']\r
191       ),\r
192       pictures: @suply_default(\r
193         ['credit', 'search'], \r
194         [], \r
195         [], \r
196         [], \r
197         []\r
198       ),\r
199       resource_pictures: @suply_default(\r
200         ['credit', 'by_original_picture', 'by_license_group', 'by_license', 'by_artist'], \r
201         [], \r
202         [], \r
203         [], \r
204         ['new', 'create', 'edit', 'update', 'destroy']\r
205       ),\r
206       speech_balloon_templates: @suply_default(\r
207         ['by_panel', 'by_system_picture'], \r
208         [], \r
209         [], \r
210         [], \r
211         []\r
212       ),\r
213       writing_formats: @suply_default(\r
214         ['by_system_picture'], \r
215         [], \r
216         [], \r
217         [], \r
218         []\r
219       ),\r
220       license_groups: @suply_default(\r
221         ['by_resource_picture'], \r
222         [], \r
223         [], \r
224         [], \r
225         []\r
226       ),\r
227       licenses: @suply_default(\r
228         ['by_license_group', 'by_system_picture'], \r
229         [], \r
230         [], \r
231         [], \r
232         []\r
233       ),\r
234       authors: @suply_default(\r
235         [], \r
236         [], \r
237         [], \r
238         () ->\r
239           ['edit', 'update', 'destroy']\r
240         , \r
241         () ->\r
242           []\r
243         , \r
244       ),\r
245       artists: @suply_default(\r
246         [], \r
247         [], \r
248         [], \r
249         () ->\r
250           []\r
251         , \r
252         () ->\r
253           ['edit', 'update', 'destroy']\r
254       ),\r
255       system_pictures: @suply_default(\r
256         [], \r
257         [], \r
258         [], \r
259         [], \r
260         []\r
261       ),\r
262       home: @suply_default(\r
263         [\r
264           'profile', 'configure', 'create_token', 'delete_token', \r
265           'scrolls', 'scroll_panels', 'comics', 'comic_stories', 'stories', 'story_sheets', 'sheets', 'sheet_panels', \r
266           'panels', 'panel_pictures', 'speech_balloons', 'balloons', 'speeches', 'ground_pictures', 'ground_colors'\r
267         ], \r
268         [\r
269           'scrolls', 'scroll_panels', 'comics', 'comic_stories', 'stories', 'story_sheets', 'sheets', 'sheet_panels', \r
270           'panels', 'panel_pictures', 'speech_balloons', 'balloons', 'speeches', 'ground_pictures', 'ground_colors'\r
271         ], \r
272         [], \r
273         [], \r
274         []\r
275       ),\r
276     }\r
277   \r
278   @blog_filters: () ->\r
279     default_reader_filters = []\r
280     default_user_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
281     default_author_filters = ['new', 'create', 'edit', 'update', 'destroy']\r
282     {\r
283       'folders': {\r
284         reader: _.union(default_reader_filters, []),\r
285         resource_reader: _.union(default_resource_reader_filters, []),\r
286         user: _.union(default_user_filters, []),\r
287         author: _.union(default_author_filters, [])\r
288       },\r
289       'scrolls': {\r
290         user: _.union(default_user_filters, []),\r
291         author: _.union(default_author_filters, [])\r
292       },\r
293     }\r
294   \r