From a9fb11c0f570336ffe39abddfec1241d052ea76d Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 25 Oct 2009 10:30:39 +0000 Subject: [PATCH] Fixes project wiki copy. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2969 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/models/enabled_module.rb | 3 ++- app/models/project.rb | 27 +++++++++++++++++---------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/app/models/enabled_module.rb b/app/models/enabled_module.rb index e18ac3f2..01a9c5bb 100644 --- a/app/models/enabled_module.rb +++ b/app/models/enabled_module.rb @@ -31,7 +31,8 @@ class EnabledModule < ActiveRecord::Base when 'wiki' # Create a wiki with a default start page if project && project.wiki.nil? - #Wiki.create(:project => project, :start_page => 'Wiki') + logger.debug("after_create module_enabled") + Wiki.create(:project => project, :start_page => 'Wiki') end end end diff --git a/app/models/project.rb b/app/models/project.rb index 70ec85dd..7438e5ff 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 -- 2.11.0