OSDN Git Service

Moves attachments parsing after textile parsing so that:
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 27 Dec 2009 10:52:02 +0000 (10:52 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 27 Dec 2009 10:52:02 +0000 (10:52 +0000)
* attachments parsing does not rely on textile syntax
* textile output can be cached (#4482)

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3253 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/application_helper.rb

index 0876127..c6f743d 100644 (file)
@@ -402,6 +402,8 @@ module ApplicationHelper
     end
     return '' if text.blank?
 
+    text = Redmine::WikiFormatting.to_html(Setting.text_formatting, text) { |macro, args| exec_macro(macro, obj, args) }
+    
     only_path = options.delete(:only_path) == false ? false : true
 
     # when using an image link, try to use an attachment, if possible
@@ -409,22 +411,23 @@ module ApplicationHelper
 
     if attachments
       attachments = attachments.sort_by(&:created_on).reverse
-      text = text.gsub(/!((\<|\=|\>)?(\([^\)]+\))?(\[[^\]]+\])?(\{[^\}]+\})?)(\S+\.(bmp|gif|jpg|jpeg|png))!/i) do |m|
-        style = $1
-        filename = $6.downcase
+      text.gsub!(/src="([^\/"]+\.(bmp|gif|jpg|jpeg|png))"(\s+alt="([^"]*)")?/i) do |m|
+        filename, ext, alt, alttext = $1.downcase, $2, $3, $4 
+        
         # search for the picture in attachments
         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}!"
+          desc = found.description.to_s.gsub('"', '')
+          if !desc.blank? && alttext.blank?
+            alt = " title=\"#{desc}\" alt=\"#{desc}\""
+          end
+          "src=\"#{image_url}\"#{alt}"
         else
           m
         end
       end
     end
 
-    text = Redmine::WikiFormatting.to_html(Setting.text_formatting, text) { |macro, args| exec_macro(macro, obj, args) }
 
     # different methods for formatting wiki links
     case options[:wiki_links]