From d18fba4ffe9051a215073c5e1474fc377907375c Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Thu, 18 Feb 2010 18:53:30 +0000 Subject: [PATCH] Fixed: Pound (#) followed by number with leading zero (0) removes leading zero when rendered in wiki (#4872). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3451 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/helpers/application_helper.rb | 12 ++++++------ test/unit/helpers/application_helper_test.rb | 2 ++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index ac1153dda..e2887226a 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -511,17 +511,17 @@ module ApplicationHelper # Forum messages: # message#1218 -> Link to message with id 1218 text = text.gsub(%r{([\s\(,\-\>]|^)(!)?(attachment|document|version|commit|source|export|message|project)?((#|r)(\d+)|(:)([^"\s<>][^\s<>]*?|"[^"]+?"))(?=(?=[[:punct:]]\W)|,|\s|<|$)}) do |m| - leading, esc, prefix, sep, oid = $1, $2, $3, $5 || $7, $6 || $8 + leading, esc, prefix, sep, identifier = $1, $2, $3, $5 || $7, $6 || $8 link = nil if esc.nil? if prefix.nil? && sep == 'r' - if project && (changeset = project.changesets.find_by_revision(oid)) - link = link_to("r#{oid}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => oid}, + if project && (changeset = project.changesets.find_by_revision(identifier)) + link = link_to("r#{identifier}", {:only_path => only_path, :controller => 'repositories', :action => 'revision', :id => project, :rev => changeset.revision}, :class => 'changeset', :title => truncate_single_line(changeset.comments, :length => 100)) end elsif sep == '#' - oid = oid.to_i + oid = identifier.to_i case prefix when nil if issue = Issue.visible.find_by_id(oid, :include => :status) @@ -557,7 +557,7 @@ module ApplicationHelper end elsif sep == ':' # removes the double quotes if any - name = oid.gsub(%r{^"(.*)"$}, "\\1") + name = identifier.gsub(%r{^"(.*)"$}, "\\1") case prefix when 'document' if project && document = project.documents.find_by_title(name) @@ -599,7 +599,7 @@ module ApplicationHelper end end end - leading + (link || "#{prefix}#{sep}#{oid}") + leading + (link || "#{prefix}#{sep}#{identifier}") end text diff --git a/test/unit/helpers/application_helper_test.rb b/test/unit/helpers/application_helper_test.rb index 11abc473c..f5b0fb7d3 100644 --- a/test/unit/helpers/application_helper_test.rb +++ b/test/unit/helpers/application_helper_test.rb @@ -200,6 +200,8 @@ RAW '!version:1.0' => 'version:1.0', '!version:"1.0"' => 'version:"1.0"', '!source:/some/file' => 'source:/some/file', + # not found + '#0123456789' => '#0123456789', # invalid expressions 'source:' => 'source:', # url hash