Commit 541d830d authored by Jean-Philippe Lang's avatar Jean-Philippe Lang

Fixed: Project copy loses wiki pages hierarchy (#4797).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3412 e93f8b46-1217-0410-a6f0-8f06a7374b81
parent d2baf5f2
...@@ -512,11 +512,23 @@ class Project < ActiveRecord::Base ...@@ -512,11 +512,23 @@ class Project < ActiveRecord::Base
unless project.wiki.nil? unless project.wiki.nil?
self.wiki ||= Wiki.new self.wiki ||= Wiki.new
wiki.attributes = project.wiki.attributes.dup.except("id", "project_id") wiki.attributes = project.wiki.attributes.dup.except("id", "project_id")
wiki_pages_map = {}
project.wiki.pages.each do |page| project.wiki.pages.each do |page|
# Skip pages without content
next if page.content.nil?
new_wiki_content = WikiContent.new(page.content.attributes.dup.except("id", "page_id", "updated_on")) new_wiki_content = WikiContent.new(page.content.attributes.dup.except("id", "page_id", "updated_on"))
new_wiki_page = WikiPage.new(page.attributes.dup.except("id", "wiki_id", "created_on", "parent_id")) new_wiki_page = WikiPage.new(page.attributes.dup.except("id", "wiki_id", "created_on", "parent_id"))
new_wiki_page.content = new_wiki_content new_wiki_page.content = new_wiki_content
wiki.pages << new_wiki_page wiki.pages << new_wiki_page
wiki_pages_map[page.id] = new_wiki_page
end
wiki.save
# Reproduce page hierarchy
project.wiki.pages.each do |page|
if page.parent_id && wiki_pages_map[page.id]
wiki_pages_map[page.id].parent = wiki_pages_map[page.parent_id]
wiki_pages_map[page.id].save
end
end end
end end
end end
......
...@@ -71,4 +71,28 @@ wiki_contents_006: ...@@ -71,4 +71,28 @@ wiki_contents_006:
version: 1 version: 1
author_id: 1 author_id: 1
comments: comments:
wiki_contents_007:
text: This is a child page
updated_on: 2007-03-08 00:18:07 +01:00
page_id: 7
id: 7
version: 1
author_id: 1
comments:
wiki_contents_008:
text: This is a parent page
updated_on: 2007-03-08 00:18:07 +01:00
page_id: 8
id: 8
version: 1
author_id: 1
comments:
wiki_contents_009:
text: This is a child page
updated_on: 2007-03-08 00:18:07 +01:00
page_id: 9
id: 9
version: 1
author_id: 1
comments:
\ No newline at end of file
...@@ -41,4 +41,25 @@ wiki_pages_006: ...@@ -41,4 +41,25 @@ wiki_pages_006:
wiki_id: 1 wiki_id: 1
protected: false protected: false
parent_id: 2 parent_id: 2
wiki_pages_007:
created_on: 2007-03-08 00:18:07 +01:00
title: Child_page_1
id: 7
wiki_id: 2
protected: false
parent_id: 8
wiki_pages_008:
created_on: 2007-03-08 00:18:07 +01:00
title: Parent_page
id: 8
wiki_id: 2
protected: false
parent_id:
wiki_pages_009:
created_on: 2007-03-08 00:18:07 +01:00
title: Child_page_2
id: 9
wiki_id: 2
protected: false
parent_id: 8
\ No newline at end of file
...@@ -723,16 +723,24 @@ class ProjectTest < ActiveSupport::TestCase ...@@ -723,16 +723,24 @@ class ProjectTest < ActiveSupport::TestCase
assert_equal "Start page", @project.wiki.start_page assert_equal "Start page", @project.wiki.start_page
end end
should "copy wiki pages and content" do should "copy wiki pages and content with hierarchy" do
assert @project.copy(@source_project) assert_difference 'WikiPage.count', @source_project.wiki.pages.size do
assert @project.copy(@source_project)
end
assert @project.wiki assert @project.wiki
assert_equal 1, @project.wiki.pages.length assert_equal @source_project.wiki.pages.size, @project.wiki.pages.size
@project.wiki.pages.each do |wiki_page| @project.wiki.pages.each do |wiki_page|
assert wiki_page.content assert wiki_page.content
assert !@source_project.wiki.pages.include?(wiki_page) assert !@source_project.wiki.pages.include?(wiki_page)
end end
parent = @project.wiki.find_page('Parent_page')
child1 = @project.wiki.find_page('Child_page_1')
child2 = @project.wiki.find_page('Child_page_2')
assert_equal parent, child1.parent
assert_equal parent, child2.parent
end end
should "copy issue categories" do should "copy issue categories" do
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment