Commit 4816c3f19826b7b3aede0716652c6719cc3026f5
1 parent
cac61e3d
Exists in
master
and in
28 other branches
Make the whole thing more robust
Showing
3 changed files
with
13 additions
and
5 deletions
Show diff stats
app/controllers/my_profile/cms_controller.rb
| ... | ... | @@ -343,7 +343,7 @@ class CmsController < MyProfileController |
| 343 | 343 | def media_upload |
| 344 | 344 | files_uploaded = [] |
| 345 | 345 | parent = check_parent(params[:parent_id]) |
| 346 | - files = [:file1,:file2, :file3].map { |f| params[f] } | |
| 346 | + files = [:file1,:file2, :file3].map { |f| params[f] }.compact | |
| 347 | 347 | if request.post? |
| 348 | 348 | files.each do |file| |
| 349 | 349 | files_uploaded << UploadedFile.create(:uploaded_data => file, :profile => profile, :parent => parent) unless file == '' |
| ... | ... | @@ -401,7 +401,7 @@ class CmsController < MyProfileController |
| 401 | 401 | list.map do |item| |
| 402 | 402 | { |
| 403 | 403 | 'title' => item.title, |
| 404 | - 'url' => url_for(item.url), | |
| 404 | + 'url' => item.image? ? item.public_filename(:uploaded) : url_for(item.url), | |
| 405 | 405 | :icon => icon_for_article(item), |
| 406 | 406 | :content_type => item.mime_type |
| 407 | 407 | } | ... | ... |
lib/delayed_attachment_fu.rb
| ... | ... | @@ -38,7 +38,11 @@ module DelayedAttachmentFu |
| 38 | 38 | end |
| 39 | 39 | |
| 40 | 40 | def public_filename(size=nil) |
| 41 | - if !self.thumbnailable? || self.thumbnails_processed | |
| 41 | + force = (size == :uploaded) | |
| 42 | + if force | |
| 43 | + size = nil | |
| 44 | + end | |
| 45 | + if !self.thumbnailable? || self.thumbnails_processed || force | |
| 42 | 46 | super(size) |
| 43 | 47 | else |
| 44 | 48 | size ||= 'thumb' | ... | ... |
test/functional/cms_controller_test.rb
| ... | ... | @@ -1632,7 +1632,7 @@ class CmsControllerTest < Test::Unit::TestCase |
| 1632 | 1632 | end |
| 1633 | 1633 | |
| 1634 | 1634 | should 'upload media by AJAX' do |
| 1635 | - post :media_upload, :profile => profile.identifier, :uploaded_files => [fixture_file_upload('/files/test.txt', 'text/plain'), fixture_file_upload('/files/rails.png', 'image/png')] | |
| 1635 | + post :media_upload, :profile => profile.identifier, :file1 => fixture_file_upload('/files/test.txt', 'text/plain'), :file2 => fixture_file_upload('/files/rails.png', 'image/png'), :file3 => '' | |
| 1636 | 1636 | assert_match 'test.txt', @response.body |
| 1637 | 1637 | assert_equal 'application/json', @response.content_type |
| 1638 | 1638 | |
| ... | ... | @@ -1644,10 +1644,14 @@ class CmsControllerTest < Test::Unit::TestCase |
| 1644 | 1644 | assert_match /text/, data[0]['content_type'] |
| 1645 | 1645 | |
| 1646 | 1646 | assert_equal 'rails.png', data[1]['title'] |
| 1647 | - assert_match /\/testinguser\/rails.png$/, data[1]['url'] | |
| 1647 | + assert_no_match /\/public\/articles\/.*\/rails.png$/, data[1]['url'] | |
| 1648 | 1648 | assert_match /png$/, data[1]['icon'] |
| 1649 | 1649 | assert_match /image/, data[1]['content_type'] |
| 1650 | 1650 | |
| 1651 | 1651 | end |
| 1652 | 1652 | |
| 1653 | + should 'not when media upload via AJAX contains empty files' do | |
| 1654 | + post :media_upload, :profile => @profile.identifier | |
| 1655 | + end | |
| 1656 | + | |
| 1653 | 1657 | end | ... | ... |