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
This commit is contained in:
parent
d2baf5f2a7
commit
541d830d2a
|
@ -512,11 +512,23 @@ class Project < ActiveRecord::Base
|
|||
unless project.wiki.nil?
|
||||
self.wiki ||= Wiki.new
|
||||
wiki.attributes = project.wiki.attributes.dup.except("id", "project_id")
|
||||
wiki_pages_map = {}
|
||||
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_page = WikiPage.new(page.attributes.dup.except("id", "wiki_id", "created_on", "parent_id"))
|
||||
new_wiki_page.content = new_wiki_content
|
||||
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
|
||||
|
|
|
@ -71,4 +71,28 @@ wiki_contents_006:
|
|||
version: 1
|
||||
author_id: 1
|
||||
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:
|
||||
|
|
@ -41,4 +41,25 @@ wiki_pages_006:
|
|||
wiki_id: 1
|
||||
protected: false
|
||||
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
|
||||
|
|
@ -723,16 +723,24 @@ class ProjectTest < ActiveSupport::TestCase
|
|||
assert_equal "Start page", @project.wiki.start_page
|
||||
end
|
||||
|
||||
should "copy wiki pages and content" do
|
||||
assert @project.copy(@source_project)
|
||||
|
||||
should "copy wiki pages and content with hierarchy" do
|
||||
assert_difference 'WikiPage.count', @source_project.wiki.pages.size do
|
||||
assert @project.copy(@source_project)
|
||||
end
|
||||
|
||||
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|
|
||||
assert wiki_page.content
|
||||
assert !@source_project.wiki.pages.include?(wiki_page)
|
||||
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
|
||||
|
||||
should "copy issue categories" do
|
||||
|
|
Loading…
Reference in New Issue