Commit 4816c3f19826b7b3aede0716652c6719cc3026f5

Authored by Antonio Terceiro
1 parent cac61e3d

Make the whole thing more robust

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 &lt; 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 &lt; 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 &lt; 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
... ...