summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/helpers/application_helper.rb7
-rw-r--r--app/views/wiki/export_multiple.html.erb6
-rw-r--r--test/helpers/application_helper_test.rb32
3 files changed, 39 insertions, 6 deletions
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 832c22b13..09df2656b 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -371,7 +371,12 @@ module ApplicationHelper
content << "<ul class=\"pages-hierarchy\">\n"
pages[node].each do |page|
content << "<li>"
- content << link_to(h(page.pretty_title), {:controller => 'wiki', :action => 'show', :project_id => page.project, :id => page.title, :version => nil},
+ if controller.controller_name == 'wiki' && controller.action_name == 'export'
+ href = "##{page.title}"
+ else
+ href = {:controller => 'wiki', :action => 'show', :project_id => page.project, :id => page.title, :version => nil}
+ end
+ content << link_to(h(page.pretty_title), href,
:title => (options[:timestamp] && page.updated_on ? l(:label_updated_time, distance_of_time_in_words(Time.now, page.updated_on)) : nil))
content << "\n" + render_page_hierarchy(pages, page.id, options) if pages[page.id]
content << "</li>\n"
diff --git a/app/views/wiki/export_multiple.html.erb b/app/views/wiki/export_multiple.html.erb
index 421ea4f29..6a9cf0f31 100644
--- a/app/views/wiki/export_multiple.html.erb
+++ b/app/views/wiki/export_multiple.html.erb
@@ -18,11 +18,7 @@ h1:hover a.wiki-anchor, h2:hover a.wiki-anchor, h3:hover a.wiki-anchor { display
<body>
<strong><%= l(:label_index_by_title) %></strong>
-<ul>
-<% @pages.each do |page| %>
- <li><a href="#<%= page.title %>"><%= page.pretty_title %></a></li>
-<% end %>
-</ul>
+<%= render_page_hierarchy(@pages.group_by(&:parent_id), nil, :timestamp => true) %>
<% @pages.each do |page| %>
<hr />
diff --git a/test/helpers/application_helper_test.rb b/test/helpers/application_helper_test.rb
index b91012b58..41ed07bc1 100644
--- a/test/helpers/application_helper_test.rb
+++ b/test/helpers/application_helper_test.rb
@@ -1463,6 +1463,38 @@ RAW
end
end
+ def test_render_page_hierarchy
+ parent_page = WikiPage.find(1)
+ child_page = WikiPage.find_by(parent_id: parent_page.id)
+ pages_by_parent_id = { nil => [parent_page], parent_page.id => [child_page] }
+ result = render_page_hierarchy(pages_by_parent_id, nil)
+ assert_select_in result, 'ul.pages-hierarchy li a[href=?]', project_wiki_page_path(project_id: parent_page.project, id: parent_page.title, version: nil )
+ assert_select_in result, 'ul.pages-hierarchy li ul.pages-hierarchy a[href=?]', project_wiki_page_path(project_id: child_page.project, id: child_page.title, version: nil )
+ end
+
+ def test_render_page_hierarchy_with_timestamp
+ parent_page = WikiPage.find(1)
+ child_page = WikiPage.find_by(parent_id: parent_page.id)
+ pages_by_parent_id = { nil => [parent_page], parent_page.id => [child_page] }
+ result = render_page_hierarchy(pages_by_parent_id, nil, :timestamp => true)
+ assert_select_in result, 'ul.pages-hierarchy li a[title=?]', l(:label_updated_time, distance_of_time_in_words(Time.now, parent_page.updated_on))
+ assert_select_in result, 'ul.pages-hierarchy li ul.pages-hierarchy a[title=?]', l(:label_updated_time, distance_of_time_in_words(Time.now, child_page.updated_on))
+ end
+
+ def test_render_page_hierarchy_when_action_is_export
+ parent_page = WikiPage.find(1)
+ child_page = WikiPage.find_by(parent_id: parent_page.id)
+ pages_by_parent_id = { nil => [parent_page], parent_page.id => [child_page] }
+
+ # Change controller and action using stub
+ controller.stubs(:controller_name).returns('wiki')
+ controller.stubs(:action_name).returns("export")
+
+ result = render_page_hierarchy(pages_by_parent_id, nil)
+ assert_select_in result, 'ul.pages-hierarchy li a[href=?]', "##{parent_page.title}"
+ assert_select_in result, 'ul.pages-hierarchy li ul.pages-hierarchy a[href=?]', "##{child_page.title}"
+ end
+
def test_avatar_with_user
with_settings :gravatar_enabled => '1' do
assert_include Digest::MD5.hexdigest('jsmith@somenet.foo'), avatar(User.find_by_mail('jsmith@somenet.foo'))