summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorEtienne Massip <etienne.massip@gmail.com>2011-10-02 17:25:29 +0000
committerEtienne Massip <etienne.massip@gmail.com>2011-10-02 17:25:29 +0000
commit65b533a8ec1f4d53a082cdc76324f65147d6f6b1 (patch)
tree11168c96153e966c313d9e7ac10a72c70c677efe /app
parent8bb90f87fb73e2f21a45ba213c59f31a93311b78 (diff)
downloadredmine-65b533a8ec1f4d53a082cdc76324f65147d6f6b1.tar.gz
redmine-65b533a8ec1f4d53a082cdc76324f65147d6f6b1.zip
Make sure that anchor names generated for headings fully match wiki links (#7215).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@7563 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r--app/helpers/application_helper.rb7
1 files changed, 6 insertions, 1 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index eb29829b2..25592c46f 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -570,6 +570,7 @@ module ApplicationHelper
if page =~ /^(.+?)\#(.+)$/
page, anchor = $1, $2
end
+ anchor = sanitize_anchor_name(anchor) if anchor.present?
# check if page exists
wiki_page = link_project.wiki.find_page(page)
url = if anchor.present? && wiki_page.present? && (obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version)) && obj.page == wiki_page
@@ -727,7 +728,7 @@ module ApplicationHelper
text.gsub!(HEADING_RE) do
level, attrs, content = $1.to_i, $2, $3
item = strip_tags(content).strip
- anchor = item.gsub(%r{[^\w\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-')
+ anchor = sanitize_anchor_name(item)
# used for single-file wiki export
anchor = "#{obj.page.title}_#{anchor}" if options[:wiki_links] == :anchor && (obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version))
@parsed_headings << [level, anchor, item]
@@ -919,6 +920,10 @@ module ApplicationHelper
end
end
+ def sanitize_anchor_name(anchor)
+ anchor.gsub(%r{[^\w\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-')
+ end
+
# Returns the javascript tags that are included in the html layout head
def javascript_heads
tags = javascript_include_tag(:defaults)