From: Etienne Massip Date: Wed, 14 Dec 2011 20:31:34 +0000 (+0000) Subject: Save an @Issue#save@. X-Git-Tag: 1.4.0~1074 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=7d2298f39c609ec79dd16f27ef69885a7c390d00;p=redmine.git Save an @Issue#save@. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8212 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/controllers/issue_moves_controller.rb b/app/controllers/issue_moves_controller.rb index 06997183e..234d4d72e 100644 --- a/app/controllers/issue_moves_controller.rb +++ b/app/controllers/issue_moves_controller.rb @@ -36,10 +36,8 @@ class IssueMovesController < ApplicationController moved_issues = [] @issues.each do |issue| issue.reload - issue.init_journal(User.current) - issue.current_journal.notes = @notes if @notes.present? call_hook(:controller_issues_move_before_save, { :params => params, :issue => issue, :target_project => @target_project, :copy => !!@copy }) - if r = issue.move_to_project(@target_project, new_tracker, {:copy => @copy, :attributes => extract_changed_attributes_for_move(params)}) + if r = issue.move_to_project(@target_project, new_tracker, {:copy => @copy, :attributes => extract_changed_attributes_for_move(params), :notes => @notes}) moved_issues << r else unsaved_issue_ids << issue.id diff --git a/app/models/issue.rb b/app/models/issue.rb index 5ccd40ee9..dcafade15 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -152,7 +152,13 @@ class Issue < ActiveRecord::Base def move_to_project_without_transaction(new_project, new_tracker = nil, options = {}) options ||= {} - issue = options[:copy] ? self.class.new.copy_from(self) : self + + if options[:copy] + issue = self.class.new.copy_from(self) + else + issue = self + issue.init_journal(User.current, options[:notes]) + end if new_project && issue.project_id != new_project.id # delete issue relations @@ -190,14 +196,12 @@ class Issue < ActiveRecord::Base if options[:attributes] issue.attributes = options[:attributes] end + if options[:copy] && options[:notes].present? + issue.init_journal(User.current, options[:notes]) + issue.current_journal.notify = false + end if issue.save - if options[:copy] - if current_journal && current_journal.notes.present? - issue.init_journal(current_journal.user, current_journal.notes) - issue.current_journal.notify = false - issue.save - end - else + unless options[:copy] # Manually update project_id on related time entries TimeEntry.update_all("project_id = #{new_project.id}", {:issue_id => id}) diff --git a/test/unit/issue_test.rb b/test/unit/issue_test.rb index f973d32ce..524fb45b1 100644 --- a/test/unit/issue_test.rb +++ b/test/unit/issue_test.rb @@ -634,12 +634,10 @@ class IssueTest < ActiveSupport::TestCase assert_equal User.current, @copy.author end - should "keep journal notes" do + should "create a journal with notes" do date = Date.today notes = "Notes added when copying" - User.current = User.find(9) - @issue.init_journal(User.current, notes) - @copy = @issue.move_to_project(Project.find(3), Tracker.find(2), {:copy => true, :attributes => {:start_date => date}}) + @copy = @issue.move_to_project(Project.find(3), Tracker.find(2), {:copy => true, :notes => notes, :attributes => {:start_date => date}}) assert_equal 1, @copy.journals.size journal = @copy.journals.first