]> source.dussan.org Git - redmine.git/commitdiff
Fixed: inline attached image should not match partial filename (#2683).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 5 Feb 2009 20:25:01 +0000 (20:25 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 5 Feb 2009 20:25:01 +0000 (20:25 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2363 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/application_helper.rb
test/unit/helpers/application_helper_test.rb

index 27930ac948dca50ddc37548ed1701f9265ceb563..552a4cde10c69ab8dd18e7499e74612c5445da89 100644 (file)
@@ -357,16 +357,15 @@ module ApplicationHelper
       attachments = attachments.sort_by(&:created_on).reverse
       text = text.gsub(/!((\<|\=|\>)?(\([^\)]+\))?(\[[^\]]+\])?(\{[^\}]+\})?)(\S+\.(bmp|gif|jpg|jpeg|png))!/i) do |m|
         style = $1
-        filename = $6
-        rf = Regexp.new(Regexp.escape(filename),  Regexp::IGNORECASE)
+        filename = $6.downcase
         # search for the picture in attachments
-        if found = attachments.detect { |att| att.filename =~ rf }
+        if found = attachments.detect { |att| att.filename.downcase == filename }
           image_url = url_for :only_path => only_path, :controller => 'attachments', :action => 'download', :id => found
           desc = found.description.to_s.gsub(/^([^\(\)]*).*$/, "\\1")
           alt = desc.blank? ? nil : "(#{desc})"
           "!#{style}#{image_url}#{alt}!"
         else
-          "!#{style}#{filename}!"
+          m
         end
       end
     end
index 26ecf50b1dd431db9985ce08464f3642fbff4400..cafa92ef4d3c1750cdcd63f8e1852c45a126ea8f 100644 (file)
@@ -89,7 +89,9 @@ class ApplicationHelperTest < HelperTestCase
   def test_attached_images
     to_test = {
       'Inline image: !logo.gif!' => 'Inline image: <img src="/attachments/download/3" title="This is a logo" alt="This is a logo" />',
-      'Inline image: !logo.GIF!' => 'Inline image: <img src="/attachments/download/3" title="This is a logo" alt="This is a logo" />'
+      'Inline image: !logo.GIF!' => 'Inline image: <img src="/attachments/download/3" title="This is a logo" alt="This is a logo" />',
+      'No match: !ogo.gif!' => 'No match: <img src="ogo.gif" alt="" />',
+      'No match: !ogo.GIF!' => 'No match: <img src="ogo.GIF" alt="" />'
     }
     attachments = Attachment.find(:all)
     to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text, :attachments => attachments) }