@@ -572,13 +572,17 module ApplicationHelper | |||||
572 | end |
|
572 | end | |
573 | # check if page exists |
|
573 | # check if page exists | |
574 | wiki_page = link_project.wiki.find_page(page) |
|
574 | wiki_page = link_project.wiki.find_page(page) | |
575 | url = case options[:wiki_links] |
|
575 | url = if anchor.present? && wiki_page.present? && (obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version)) && obj.page == wiki_page | |
|
576 | "##{anchor}" | |||
|
577 | else | |||
|
578 | case options[:wiki_links] | |||
576 | when :local; "#{title}.html" |
|
579 | when :local; "#{title}.html" | |
577 | when :anchor; "##{title}" # used for single-file wiki export |
|
580 | when :anchor; "##{title}" # used for single-file wiki export | |
578 | else |
|
581 | else | |
579 | wiki_page_id = page.present? ? Wiki.titleize(page) : nil |
|
582 | wiki_page_id = page.present? ? Wiki.titleize(page) : nil | |
580 | url_for(:only_path => only_path, :controller => 'wiki', :action => 'show', :project_id => link_project, :id => wiki_page_id, :anchor => anchor) |
|
583 | url_for(:only_path => only_path, :controller => 'wiki', :action => 'show', :project_id => link_project, :id => wiki_page_id, :anchor => anchor) | |
581 | end |
|
584 | end | |
|
585 | end | |||
582 | link_to(h(title || page), url, :class => ('wiki-page' + (wiki_page ? '' : ' new'))) |
|
586 | link_to(h(title || page), url, :class => ('wiki-page' + (wiki_page ? '' : ' new'))) | |
583 | else |
|
587 | else | |
584 | # project or wiki doesn't exist |
|
588 | # project or wiki doesn't exist |
@@ -533,6 +533,33 EXPECTED | |||||
533 | assert_equal expected, textilizable(raw) |
|
533 | assert_equal expected, textilizable(raw) | |
534 | end |
|
534 | end | |
535 |
|
535 | |||
|
536 | def test_wiki_links_within_wiki_page_context | |||
|
537 | ||||
|
538 | page = WikiPage.find_by_title('Another_page' ) | |||
|
539 | ||||
|
540 | to_test = { | |||
|
541 | # link to another page | |||
|
542 | '[[CookBook documentation]]' => '<a href="/projects/ecookbook/wiki/CookBook_documentation" class="wiki-page">CookBook documentation</a>', | |||
|
543 | '[[CookBook documentation|documentation]]' => '<a href="/projects/ecookbook/wiki/CookBook_documentation" class="wiki-page">documentation</a>', | |||
|
544 | '[[CookBook documentation#One-section]]' => '<a href="/projects/ecookbook/wiki/CookBook_documentation#One-section" class="wiki-page">CookBook documentation</a>', | |||
|
545 | '[[CookBook documentation#One-section|documentation]]' => '<a href="/projects/ecookbook/wiki/CookBook_documentation#One-section" class="wiki-page">documentation</a>', | |||
|
546 | # link to the current page | |||
|
547 | '[[Another page]]' => '<a href="/projects/ecookbook/wiki/Another_page" class="wiki-page">Another page</a>', | |||
|
548 | '[[Another page|Page]]' => '<a href="/projects/ecookbook/wiki/Another_page" class="wiki-page">Page</a>', | |||
|
549 | '[[Another page#anchor]]' => '<a href="#anchor" class="wiki-page">Another page</a>', | |||
|
550 | '[[Another page#anchor|Page]]' => '<a href="#anchor" class="wiki-page">Page</a>', | |||
|
551 | # page that doesn't exist | |||
|
552 | '[[Unknown page]]' => '<a href="/projects/ecookbook/wiki/Unknown_page" class="wiki-page new">Unknown page</a>', | |||
|
553 | '[[Unknown page|404]]' => '<a href="/projects/ecookbook/wiki/Unknown_page" class="wiki-page new">404</a>', | |||
|
554 | '[[Unknown page#anchor]]' => '<a href="/projects/ecookbook/wiki/Unknown_page#anchor" class="wiki-page new">Unknown page</a>', | |||
|
555 | '[[Unknown page#anchor|404]]' => '<a href="/projects/ecookbook/wiki/Unknown_page#anchor" class="wiki-page new">404</a>', | |||
|
556 | } | |||
|
557 | ||||
|
558 | @project = Project.find(1) | |||
|
559 | ||||
|
560 | to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(WikiContent.generate!( :text => text, :page => page ), :text) } | |||
|
561 | end | |||
|
562 | ||||
536 | def test_table_of_content |
|
563 | def test_table_of_content | |
537 | raw = <<-RAW |
|
564 | raw = <<-RAW | |
538 | {{toc}} |
|
565 | {{toc}} |
General Comments 0
You need to be logged in to leave comments.
Login now