Defect #12981 ยป 12981.diff
| app/helpers/application_helper.rb | ||
|---|---|---|
| 630 | 630 |
anchor = sanitize_anchor_name(anchor) if anchor.present? |
| 631 | 631 |
# check if page exists |
| 632 | 632 |
wiki_page = link_project.wiki.find_page(page) |
| 633 |
url = if anchor.present? && wiki_page.present? && (obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version)) && obj.page == wiki_page |
|
| 634 |
"##{anchor}"
|
|
| 635 |
else |
|
| 636 |
case options[:wiki_links] |
|
| 637 |
when :local; "#{page.present? ? Wiki.titleize(page) : ''}.html" + (anchor.present? ? "##{anchor}" : '')
|
|
| 638 |
when :anchor; "##{page.present? ? Wiki.titleize(page) : title}" + (anchor.present? ? "_#{anchor}" : '') # used for single-file wiki export
|
|
| 633 |
wiki_links = options[:wiki_links] |
|
| 634 |
url = case |
|
| 635 |
when wiki_links != :full && anchor.present? && wiki_page.present? && |
|
| 636 |
(obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version)) && obj.page == wiki_page |
|
| 637 |
"##{anchor}"
|
|
| 638 |
when wiki_links == :local |
|
| 639 |
"#{page.present? ? Wiki.titleize(page) : ''}.html" + (anchor.present? ? "##{anchor}" : '')
|
|
| 640 |
when wiki_links == :anchor |
|
| 641 |
"##{page.present? ? Wiki.titleize(page) : title}" + (anchor.present? ? "_#{anchor}" : '') # used for single-file wiki export
|
|
| 639 | 642 |
else |
| 640 | 643 |
wiki_page_id = page.present? ? Wiki.titleize(page) : nil |
| 641 | 644 |
parent = wiki_page.nil? && obj.is_a?(WikiContent) && obj.page && project == link_project ? obj.page.title : nil |
| 642 | 645 |
url_for(:only_path => only_path, :controller => 'wiki', :action => 'show', :project_id => link_project, |
| 643 | 646 |
:id => wiki_page_id, :version => nil, :anchor => anchor, :parent => parent) |
| 644 |
end |
|
| 645 | 647 |
end |
| 646 | 648 |
link_to(title.present? ? title.html_safe : h(page), url, :class => ('wiki-page' + (wiki_page ? '' : ' new')))
|
| 647 | 649 |
else |
| app/views/common/_preview.html.erb | ||
|---|---|---|
| 1 | 1 |
<fieldset class="preview"><legend><%= l(:label_preview) %></legend> |
| 2 |
<%= textilizable @text, :attachments => @attachments, :object => @previewed %> |
|
| 2 |
<%= textilizable @text, :attachments => @attachments, :object => @previewed, :wiki_links => :full %>
|
|
| 3 | 3 |
</fieldset> |
| test/unit/helpers/application_helper_test.rb | ||
|---|---|---|
| 678 | 678 |
to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(WikiContent.new( :text => text, :page => page ), :text) }
|
| 679 | 679 |
end |
| 680 | 680 | |
| 681 |
def test_wiki_links_within_wiki_page_context_with_wiki_links_full_param |
|
| 682 | ||
| 683 |
page = WikiPage.find_by_title('Another_page' )
|
|
| 684 | ||
| 685 |
to_test = {
|
|
| 686 |
# link to another page |
|
| 687 |
'[[CookBook documentation]]' => '<a href="/projects/ecookbook/wiki/CookBook_documentation" class="wiki-page">CookBook documentation</a>', |
|
| 688 |
'[[CookBook documentation|documentation]]' => '<a href="/projects/ecookbook/wiki/CookBook_documentation" class="wiki-page">documentation</a>', |
|
| 689 |
'[[CookBook documentation#One-section]]' => '<a href="/projects/ecookbook/wiki/CookBook_documentation#One-section" class="wiki-page">CookBook documentation</a>', |
|
| 690 |
'[[CookBook documentation#One-section|documentation]]' => '<a href="/projects/ecookbook/wiki/CookBook_documentation#One-section" class="wiki-page">documentation</a>', |
|
| 691 |
# link to the current page |
|
| 692 |
'[[Another page]]' => '<a href="/projects/ecookbook/wiki/Another_page" class="wiki-page">Another page</a>', |
|
| 693 |
'[[Another page|Page]]' => '<a href="/projects/ecookbook/wiki/Another_page" class="wiki-page">Page</a>', |
|
| 694 |
'[[Another page#anchor]]' => '<a href="/projects/ecookbook/wiki/Another_page#anchor" class="wiki-page">Another page</a>', |
|
| 695 |
'[[Another page#anchor|Page]]' => '<a href="/projects/ecookbook/wiki/Another_page#anchor" class="wiki-page">Page</a>', |
|
| 696 |
# page that doesn't exist |
|
| 697 |
'[[Unknown page]]' => '<a href="/projects/ecookbook/wiki/Unknown_page?parent=Another_page" class="wiki-page new">Unknown page</a>', |
|
| 698 |
'[[Unknown page|404]]' => '<a href="/projects/ecookbook/wiki/Unknown_page?parent=Another_page" class="wiki-page new">404</a>', |
|
| 699 |
'[[Unknown page#anchor]]' => '<a href="/projects/ecookbook/wiki/Unknown_page?parent=Another_page#anchor" class="wiki-page new">Unknown page</a>', |
|
| 700 |
'[[Unknown page#anchor|404]]' => '<a href="/projects/ecookbook/wiki/Unknown_page?parent=Another_page#anchor" class="wiki-page new">404</a>', |
|
| 701 |
} |
|
| 702 | ||
| 703 |
@project = Project.find(1) |
|
| 704 | ||
| 705 |
to_test.each { |text, result|
|
|
| 706 |
assert_equal "<p>#{result}</p>", textilizable(WikiContent.new( :text => text, :page => page ), :text, :wiki_links=> :full )
|
|
| 707 |
} |
|
| 708 |
end |
|
| 709 | ||
| 681 | 710 |
def test_wiki_links_anchor_option_should_prepend_page_title_to_href |
| 682 | 711 | |
| 683 | 712 |
to_test = {
|