diff --git a/app/models/highlights_block.rb b/app/models/highlights_block.rb index a8d455f..9ee66b7 100644 --- a/app/models/highlights_block.rb +++ b/app/models/highlights_block.rb @@ -12,7 +12,9 @@ class HighlightsBlock < Block block.images.each do |i| i[:image_id] = i[:image_id].to_i i[:position] = i[:position].to_i - i[:address] = Noosfero.root + i[:address] unless Noosfero.root.nil? + if !Noosfero.root.nil? and !i[:address].start_with?(Noosfero.root + '/') + i[:address] = Noosfero.root + i[:address] + end begin file = UploadedFile.find(i[:image_id]) i[:image_src] = file.public_filename diff --git a/test/unit/highlights_block_test.rb b/test/unit/highlights_block_test.rb index 533ec7d..1968eb2 100644 --- a/test/unit/highlights_block_test.rb +++ b/test/unit/highlights_block_test.rb @@ -132,6 +132,19 @@ class HighlightsBlockTest < ActiveSupport::TestCase assert_equal block.images.first[:address], "/social/address" end + should 'not duplicate sub-dir address before save' do + Noosfero.stubs(:root).returns("/social") + f1 = mock() + f1.expects(:public_filename).returns('address') + UploadedFile.expects(:find).with(1).returns(f1) + block = HighlightsBlock.new + i1 = {:image_id => 1, :address => '/social/address', :position => 3, :title => 'address'} + block.images = [i1] + block.save! + block.reload + assert_equal block.images.first[:address], "/social/address" + end + should 'display images with subdir src' do Noosfero.stubs(:root).returns("/social") f1 = mock() -- libgit2 0.21.2