Index: test/unit/issue_relation_test.rb =================================================================== --- test/unit/issue_relation_test.rb (revision 8761) +++ test/unit/issue_relation_test.rb (working copy) @@ -104,4 +104,38 @@ assert !r.save assert_not_nil r.errors[:base] end + + def test_create_should_make_journal_entry + from = Issue.find(1) + to = Issue.find(2) + from_journals = from.journals.size + to_journals = to.journals.size + + relation = IssueRelation.new :issue_from => from, :issue_to => to, + :relation_type => IssueRelation::TYPE_PRECEDES + assert relation.save + from.reload + to.reload + relation.reload + + assert_equal from.journals.size, (from_journals + 1) + assert_equal to.journals.size, (to_journals + 1) + end + + def test_delete_should_make_journal_entry + relation = issue_relations(:issue_relation_001) + id = relation.id + from = relation.issue_from + to = relation.issue_to + from_journals = from.journals.size + to_journals = to.journals.size + + assert relation.destroy + + from.reload + to.reload + + assert_equal from.journals.size, (from_journals + 1) + assert_equal to.journals.size, (to_journals + 1) + end end Index: test/unit/issue_test.rb =================================================================== --- test/unit/issue_test.rb (revision 8761) +++ test/unit/issue_test.rb (working copy) @@ -641,7 +641,8 @@ should "not create a journal" do copy = @issue.copy(:project_id => 3, :tracker_id => 2, :assigned_to_id => 3) copy.save! - assert_equal 0, copy.reload.journals.size + prev_journal_count = copy.journals.size + assert_equal prev_journal_count, copy.reload.journals.size end should "allow assigned_to changes" do Index: app/helpers/issues_helper.rb =================================================================== --- app/helpers/issues_helper.rb (revision 8761) +++ app/helpers/issues_helper.rb (working copy) @@ -236,7 +236,16 @@ end when 'attachment' label = l(:label_attachment) + when 'relation' + if detail.value && !detail.old_value + value = link_to_issue(Issue.find(detail.value)) + label = l(detail.prop_key.to_sym) + elsif detail.old_value && !detail.value + old_value = link_to_issue(Issue.find(detail.old_value)) if detail.old_value + label = l(detail.prop_key.to_sym) + end end + call_hook(:helper_issues_show_detail_after_setting, {:detail => detail, :label => label, :value => value, :old_value => old_value }) @@ -277,6 +286,8 @@ end when 'attachment' l(:text_journal_added, :label => label, :value => value).html_safe + when 'relation' + l(:text_journal_added, :label => label, :value => value).html_safe end else l(:text_journal_deleted, :label => label, :old => old_value).html_safe Index: app/models/issue_relation.rb =================================================================== --- app/models/issue_relation.rb (revision 8761) +++ app/models/issue_relation.rb (working copy) @@ -45,7 +45,9 @@ attr_protected :issue_from_id, :issue_to_id - before_save :handle_issue_order + before_save :handle_issue_order + after_create :create_journal_after_create + after_destroy :create_journal_after_delete def visible?(user=User.current) (issue_from.nil? || issue_from.visible?(user)) && (issue_to.nil? || issue_to.visible?(user)) @@ -140,4 +142,46 @@ self.relation_type = TYPES[relation_type][:reverse] end end + + # property = 'relation' + # prop_key = Look keys of TYPES + # old_value = nil + # value = id-of-the-related-issue + def create_journal_after_create + journal = issue_from.init_journal(User.current) + journal.details << JournalDetail.new(:property => 'relation', + :prop_key => label_for(issue_from).to_s, + :value => issue_to.id + ) + journal.save + + # issue-to + journal = issue_to.init_journal(User.current) + journal.details << JournalDetail.new(:property => 'relation', + :prop_key => label_for(issue_to).to_s, + :value => issue_from.id + ) + journal.save + end + + # property = 'relation' + # prop_key = Look keys of TYPES + # old_value = id-of-the-related-issue + # value = nil + def create_journal_after_delete + journal = issue_from.init_journal(User.current) + journal.details << JournalDetail.new(:property => 'relation', + :prop_key => label_for(issue_from).to_s, + :old_value => issue_to.id + ) + journal.save + + # issue-to + journal = issue_to.init_journal(User.current) + journal.details << JournalDetail.new(:property => 'relation', + :prop_key => label_for(issue_to).to_s, + :old_value => issue_from.id + ) + journal.save + end end