Project

General

Profile

Patches against version 0.1.6 » redmine_issues_group-journal.patch

Fix problem where duplicate journal details appear - Brian Wells, 2009-11-06 06:08

View differences:

redmine_issues_group/init.rb 2009-11-05 22:07:28.000000000 -0500
27 27
Dispatcher.to_prepare do
28 28
	IssuesHelper.send(:include, IssuesHelperPatch)
29 29
	Issue.send(:include, IssueRelationPatch)
30
	Issue.send(:include, IssueJournalPatch)
30 31
	CollectiveIdea::Acts::NestedSet::InstanceMethods.send(:include, AwesomeNestedSetIssuesPatch)
31 32
end
redmine_issues_group/lib/issue_journal_patch.rb 2009-11-05 22:09:29.000000000 -0500
1

  
2
require 'issue'
3

  
4
module IssueJournalPatch
5
  def self.included(base) # :nodoc:
6
    base.class_eval do
7

  
8
      # Saves the changes in a Journal
9
      # Called after_save
10
      def create_journal
11
        if @current_journal
12
          # attributes changes
13
          (Issue.column_names - %w(id description lock_version created_on updated_on)).each {|c|
14
            @current_journal.details << JournalDetail.new(:property => 'attr',
15
                                                          :prop_key => c,
16
                                                          :old_value => @issue_before_change.send(c),
17
                                                          :value => send(c)) unless send(c)==@issue_before_change.send(c) ||
18
                         @current_journal.details.exists?(:property => 'attr',
19
                                                          :prop_key => c,
20
                                                          :old_value => @issue_before_change.send(c),
21
                                                          :value => send(c))
22
          }
23
          # custom fields changes
24
          custom_values.each {|c|
25
            next if (@custom_values_before_change[c.custom_field_id]==c.value ||
26
                      (@custom_values_before_change[c.custom_field_id].blank? && c.value.blank?)) ||
27
                         @current_journal.details.exists?(:property => 'cf', 
28
                                                          :prop_key => c.custom_field_id,
29
                                                          :old_value => @custom_values_before_change[c.custom_field_id],
30
                                                          :value => c.value)
31
            @current_journal.details << JournalDetail.new(:property => 'cf', 
32
                                                          :prop_key => c.custom_field_id,
33
                                                          :old_value => @custom_values_before_change[c.custom_field_id],
34
                                                          :value => c.value)
35
          }      
36
          @current_journal.save
37
        end
38
      end
39

  
40
    end
41
  end
42
end
(2-2/4)