@@ -6,38 +6,33 @@ class DocumentsController < ApplicationController
6
6
def index
7
7
sort = if params [ 'sort' ]
8
8
case params [ 'sort' ]
9
- when 'name' then 'data IS NULL DESC, name'
9
+ when 'name' then 'folder DESC, name'
10
10
when 'created_at' then 'created_at'
11
- when 'name_reverse' then 'data IS NULL , name DESC'
11
+ when 'name_reverse' then 'folder , name DESC'
12
12
when 'created_at_reverse' then 'created_at DESC'
13
13
end
14
14
else
15
- 'data IS NULL DESC, name'
15
+ 'folder DESC, name'
16
16
end
17
17
sort = Arel . sql ( sort ) # this is okay as we don't use user params directly
18
18
@documents = Document . where ( parent : @document ) . page ( params [ :page ] ) . per ( @per_page ) . order ( sort )
19
19
end
20
20
21
21
def new
22
22
@document = Document . new parent_id : params [ :document_id ]
23
- @document . mime = '' unless params [ :type ] == 'folder'
23
+ @document . folder = params [ :type ] == 'folder'
24
24
end
25
25
26
26
def create
27
27
@document = Document . new name : params [ :document ] [ :name ]
28
28
@document . parent = Document . find_by_id ( params [ :document ] [ :parent_id ] )
29
- data = params [ :document ] [ :data ]
30
- if data
31
- @document . data = data . read
32
- @document . mime = FileMagic . new ( FileMagic ::MAGIC_MIME ) . buffer ( @document . data )
33
- raise t ( '.not_allowed_mime' , mime : @document . mime ) unless allowed_mime? @document . mime
34
-
35
- if @document . name . empty?
36
- name = File . basename ( data . original_filename )
37
- @document . name = name . gsub ( /[^\w .-]/ , '_' )
38
- end
29
+ @document . attachment = params [ :document ] [ :attachment ]
30
+ if !@document . attachment . nil? and @document . name . empty?
31
+ name = File . basename ( @document . attachment . filename . to_s )
32
+ @document . name = name . gsub ( /[^\w .-]/ , '_' )
39
33
end
40
34
@document . created_by = current_user
35
+ @document . folder = !params [ :document ] . key? ( :attachment )
41
36
@document . save!
42
37
redirect_to @document . parent || documents_path , notice : t ( '.notice' )
43
38
rescue StandardError => e
@@ -55,6 +50,7 @@ def update
55
50
def destroy
56
51
@document = Document . find ( params [ :id ] )
57
52
if @document . created_by == current_user or current_user . role_admin?
53
+ @document . delete_attachment
58
54
@document . destroy
59
55
redirect_to documents_path , notice : t ( '.notice' )
60
56
else
@@ -67,7 +63,7 @@ def destroy
67
63
def show
68
64
@document = Document . find ( params [ :id ] )
69
65
if @document . file?
70
- send_data ( @document . data , filename : @document . filename , type : @document . mime )
66
+ send_data ( @document . attachment . download , filename : @document . name , type : @document . attachment . blob . content_type )
71
67
else
72
68
index
73
69
render :index
@@ -77,12 +73,4 @@ def show
77
73
def move
78
74
@document = Document . find ( params [ :document_id ] )
79
75
end
80
-
81
- def allowed_mime? ( mime )
82
- whitelist = FoodsoftConfig [ :documents_allowed_extension ] . split
83
- MIME ::Types . type_for ( whitelist ) . each do |type |
84
- return true if type . like? mime
85
- end
86
- false
87
- end
88
76
end
0 commit comments