@@ -4,33 +4,34 @@ class ResourceItemsController < ApplicationController
4
4
before_action :find_project_by_project_id
5
5
before_action :authorize
6
6
7
- menu_item :resource_items
8
7
9
8
def index
10
- @resource_items = @project . resource_items
11
- . joins ( :category )
12
- . order ( "#{ ResourceCategory . table_name } .name ASC, #{ ResourceItem . table_name } ASC" )
9
+ @resource_items = resource_class . where ( project_id : @project . id )
10
+ . includes ( :category ) . references ( :category )
11
+ . order ( "#{ ResourceCategory . table_name } .name ASC, #{ ResourceItem . table_name } .name ASC" )
13
12
end
14
13
15
14
def edit
16
15
@resource_item = find_resource_item
17
16
end
18
17
19
18
def new
20
- @resource_item = ResourceItem . new resource_item_params
19
+ @resource_item = resource_class . new resource_item_params
21
20
end
22
21
23
22
def create
24
23
r = RedmineResourceManager ::SaveResourceItem . (
25
- resource_item_params , project : @project
24
+ resource_item_params , project : @project , resource_class : resource_class
26
25
)
27
26
if r . item_saved?
28
- redirect_to params [ :continue ] ?
29
- new_project_resource_item_path (
27
+ if params [ :continue ]
28
+ redirect_to new_project_resource_item_path (
30
29
@project ,
31
30
resource_item : { category_id : r . item . category_id }
32
- ) :
33
- project_resource_items_path ( @project )
31
+ )
32
+ else
33
+ redirect_to_index
34
+ end
34
35
else
35
36
@resource_item = r . item
36
37
render 'new'
@@ -43,37 +44,46 @@ def update
43
44
resource_item_params , item : @resource_item , project : @project
44
45
)
45
46
if r . item_saved?
46
- redirect_to project_resource_items_path @project
47
+ redirect_to_index
47
48
else
48
49
render 'edit'
49
50
end
50
51
end
51
52
52
53
def destroy
53
54
find_resource_item . destroy
54
- redirect_to project_resource_items_path @project
55
+ redirect_to_index
55
56
end
56
57
57
58
def autocomplete
58
59
query = RedmineResourceManager ::ResourceItemsQuery . new (
60
+ resource_class : resource_class ,
59
61
project : @project ,
60
62
category_id : params [ :category_id ] ,
61
63
query : params [ :q ] ,
62
- issue_id : params [ :issue_id ]
64
+ issue_id : params [ :issue_id ] ,
63
65
)
64
66
@resource_items = query . scope
65
67
@total = query . total
66
- render layout : false
68
+ render 'resource_items/autocomplete' , layout : false
67
69
end
68
70
69
71
private
70
72
73
+ def resource_class
74
+ if type = %w( Asset Human ) . detect { |t |t == params [ :type ] }
75
+ type . constantize
76
+ end
77
+ end
78
+
71
79
def resource_item_params
72
- params [ :resource_item ] . permit :name , :category_id if params [ :resource_item ]
80
+ if parameters = params [ :human ] || params [ :asset ]
81
+ parameters . permit :name , :category_id
82
+ end
73
83
end
74
84
75
85
def find_resource_item
76
- @project . resource_items . find params [ :id ]
86
+ resource_class . where ( project_id : @project . id ) . find params [ :id ]
77
87
end
78
88
79
89
end
0 commit comments