Feature #22483 » 0001-Don-t-force-download-of-PDFs-but-show-in-browser-pre.patch
| app/controllers/attachments_controller.rb | ||
|---|---|---|
| 59 | 59 |
# images are sent inline |
| 60 | 60 |
send_file @attachment.diskfile, :filename => filename_for_content_disposition(@attachment.filename), |
| 61 | 61 |
:type => detect_content_type(@attachment), |
| 62 |
:disposition => (@attachment.image? ? 'inline' : 'attachment')
|
|
| 62 |
:disposition => disposition(@attachment)
|
|
| 63 | 63 |
end |
| 64 | 64 |
end |
| 65 | 65 | |
| ... | ... | |
| 191 | 191 |
end |
| 192 | 192 |
content_type.to_s |
| 193 | 193 |
end |
| 194 | ||
| 195 |
def disposition(attachment) |
|
| 196 |
if attachment.is_image? || attachment.is_pdf? |
|
| 197 |
'inline' |
|
| 198 |
else |
|
| 199 |
'attachment' |
|
| 200 |
end |
|
| 201 |
end |
|
| 194 | 202 |
end |
| app/controllers/repositories_controller.rb | ||
|---|---|---|
| 173 | 173 |
send_opt = { :filename => filename_for_content_disposition(@path.split('/').last) }
|
| 174 | 174 |
send_type = Redmine::MimeType.of(@path) |
| 175 | 175 |
send_opt[:type] = send_type.to_s if send_type |
| 176 |
send_opt[:disposition] = (Redmine::MimeType.is_type?('image', @path) ? 'inline' : 'attachment')
|
|
| 176 |
send_opt[:disposition] = disposition(@path)
|
|
| 177 | 177 |
send_data @repository.cat(@path, @rev), send_opt |
| 178 | 178 |
else |
| 179 | 179 |
if !@entry.size || @entry.size <= Setting.file_max_size_displayed.to_i.kilobyte |
| ... | ... | |
| 441 | 441 |
) |
| 442 | 442 |
graph.burn |
| 443 | 443 |
end |
| 444 | ||
| 445 |
def disposition(path) |
|
| 446 |
if Redmine::MimeType.is_type?('image', @path) || Redmine::MimeType.of(@path) == "application/pdf"
|
|
| 447 |
'inline' |
|
| 448 |
else |
|
| 449 |
'attachment' |
|
| 450 |
end |
|
| 451 |
end |
|
| 444 | 452 |
end |
| app/models/attachment.rb | ||
|---|---|---|
| 245 | 245 |
self.filename =~ /\.(patch|diff)$/i |
| 246 | 246 |
end |
| 247 | 247 | |
| 248 |
def is_pdf? |
|
| 249 |
Redmine::MimeType.of(filename) == "application/pdf" |
|
| 250 |
end |
|
| 251 | ||
| 248 | 252 |
# Returns true if the file is readable |
| 249 | 253 |
def readable? |
| 250 | 254 |
File.readable?(diskfile) |