Adds support for wiki links with anchor (#1647).
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1706 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
2dbc3d2943
commit
198a8c602d
|
@ -246,12 +246,12 @@ module ApplicationHelper
|
||||||
case options[:wiki_links]
|
case options[:wiki_links]
|
||||||
when :local
|
when :local
|
||||||
# used for local links to html files
|
# used for local links to html files
|
||||||
format_wiki_link = Proc.new {|project, title| "#{title}.html" }
|
format_wiki_link = Proc.new {|project, title, anchor| "#{title}.html" }
|
||||||
when :anchor
|
when :anchor
|
||||||
# used for single-file wiki export
|
# used for single-file wiki export
|
||||||
format_wiki_link = Proc.new {|project, title| "##{title}" }
|
format_wiki_link = Proc.new {|project, title, anchor| "##{title}" }
|
||||||
else
|
else
|
||||||
format_wiki_link = Proc.new {|project, title| url_for(:only_path => only_path, :controller => 'wiki', :action => 'index', :id => project, :page => title) }
|
format_wiki_link = Proc.new {|project, title, anchor| url_for(:only_path => only_path, :controller => 'wiki', :action => 'index', :id => project, :page => title, :anchor => anchor) }
|
||||||
end
|
end
|
||||||
|
|
||||||
project = options[:project] || @project || (obj && obj.respond_to?(:project) ? obj.project : nil)
|
project = options[:project] || @project || (obj && obj.respond_to?(:project) ? obj.project : nil)
|
||||||
|
@ -277,9 +277,14 @@ module ApplicationHelper
|
||||||
end
|
end
|
||||||
|
|
||||||
if link_project && link_project.wiki
|
if link_project && link_project.wiki
|
||||||
|
# extract anchor
|
||||||
|
anchor = nil
|
||||||
|
if page =~ /^(.+?)\#(.+)$/
|
||||||
|
page, anchor = $1, $2
|
||||||
|
end
|
||||||
# check if page exists
|
# check if page exists
|
||||||
wiki_page = link_project.wiki.find_page(page)
|
wiki_page = link_project.wiki.find_page(page)
|
||||||
link_to((title || page), format_wiki_link.call(link_project, Wiki.titleize(page)),
|
link_to((title || page), format_wiki_link.call(link_project, Wiki.titleize(page), anchor),
|
||||||
:class => ('wiki-page' + (wiki_page ? '' : ' new')))
|
:class => ('wiki-page' + (wiki_page ? '' : ' new')))
|
||||||
else
|
else
|
||||||
# project or wiki doesn't exist
|
# project or wiki doesn't exist
|
||||||
|
|
|
@ -133,6 +133,9 @@ class ApplicationHelperTest < HelperTestCase
|
||||||
to_test = {
|
to_test = {
|
||||||
'[[CookBook documentation]]' => '<a href="/wiki/ecookbook/CookBook_documentation" class="wiki-page">CookBook documentation</a>',
|
'[[CookBook documentation]]' => '<a href="/wiki/ecookbook/CookBook_documentation" class="wiki-page">CookBook documentation</a>',
|
||||||
'[[Another page|Page]]' => '<a href="/wiki/ecookbook/Another_page" class="wiki-page">Page</a>',
|
'[[Another page|Page]]' => '<a href="/wiki/ecookbook/Another_page" class="wiki-page">Page</a>',
|
||||||
|
# link with anchor
|
||||||
|
'[[CookBook documentation#One-section]]' => '<a href="/wiki/ecookbook/CookBook_documentation#One-section" class="wiki-page">CookBook documentation</a>',
|
||||||
|
'[[Another page#anchor|Page]]' => '<a href="/wiki/ecookbook/Another_page#anchor" class="wiki-page">Page</a>',
|
||||||
# page that doesn't exist
|
# page that doesn't exist
|
||||||
'[[Unknown page]]' => '<a href="/wiki/ecookbook/Unknown_page" class="wiki-page new">Unknown page</a>',
|
'[[Unknown page]]' => '<a href="/wiki/ecookbook/Unknown_page" class="wiki-page new">Unknown page</a>',
|
||||||
'[[Unknown page|404]]' => '<a href="/wiki/ecookbook/Unknown_page" class="wiki-page new">404</a>',
|
'[[Unknown page|404]]' => '<a href="/wiki/ecookbook/Unknown_page" class="wiki-page new">404</a>',
|
||||||
|
|
Loading…
Reference in New Issue