diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2009-10-25 10:30:39 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2009-10-25 10:30:39 +0000 |
commit | a9fb11c0f570336ffe39abddfec1241d052ea76d (patch) | |
tree | 0872276b9c1b6cd2b47feef9be37d03b943d42fa /app/models/project.rb | |
parent | eecec44ed298afdf3e254b1143f209a477a23bd2 (diff) | |
download | redmine-a9fb11c0f570336ffe39abddfec1241d052ea76d.tar.gz redmine-a9fb11c0f570336ffe39abddfec1241d052ea76d.zip |
Fixes project wiki copy.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2969 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/project.rb')
-rw-r--r-- | app/models/project.rb | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/app/models/project.rb b/app/models/project.rb index 70ec85dda..7438e5ff9 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -412,11 +412,14 @@ class Project < ActiveRecord::Base to_be_copied = to_be_copied & options[:only].to_a unless options[:only].nil? Project.transaction do - to_be_copied.each do |name| - send "copy_#{name}", project + if save + reload + to_be_copied.each do |name| + send "copy_#{name}", project + end + Redmine::Hook.call_hook(:model_project_copy_before_save, :source_project => project, :destination_project => self) + save end - Redmine::Hook.call_hook(:model_project_copy_before_save, :source_project => project, :destination_project => self) - self.save end end @@ -447,12 +450,16 @@ class Project < ActiveRecord::Base # Copies wiki from +project+ def copy_wiki(project) - self.wiki = Wiki.new(project.wiki.attributes.dup.except("project_id")) - project.wiki.pages.each do |page| - new_wiki_content = WikiContent.new(page.content.attributes.dup.except("page_id")) - new_wiki_page = WikiPage.new(page.attributes.dup.except("wiki_id")) - new_wiki_page.content = new_wiki_content - self.wiki.pages << new_wiki_page + # Check that the source project has a wiki first + unless project.wiki.nil? + self.wiki ||= Wiki.new + wiki.attributes = project.wiki.attributes.dup.except("project_id") + project.wiki.pages.each do |page| + new_wiki_content = WikiContent.new(page.content.attributes.dup.except("page_id")) + new_wiki_page = WikiPage.new(page.attributes.dup.except("wiki_id")) + new_wiki_page.content = new_wiki_content + wiki.pages << new_wiki_page + end end end |