summaryrefslogtreecommitdiffstats
path: root/app/models/issue_relation.rb
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2014-11-02 15:38:11 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2014-11-02 15:38:11 +0000
commit32b79b6fd4e3a523ee393d7a3e2bb60dbeed77c3 (patch)
tree5050ce8fcb138d88180d9c3d61e34c05dc03a4d8 /app/models/issue_relation.rb
parent43f6914f520f9a79220414cdd5d54d6fa2cc0720 (diff)
downloadredmine-32b79b6fd4e3a523ee393d7a3e2bb60dbeed77c3.tar.gz
redmine-32b79b6fd4e3a523ee393d7a3e2bb60dbeed77c3.zip
Fixed that IssueRelation should not be responsible for calling Issue#init_journal (#18237).
git-svn-id: http://svn.redmine.org/redmine/trunk@13534 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/issue_relation.rb')
-rw-r--r--app/models/issue_relation.rb47
1 files changed, 21 insertions, 26 deletions
diff --git a/app/models/issue_relation.rb b/app/models/issue_relation.rb
index 2659bb2e7..7248a8868 100644
--- a/app/models/issue_relation.rb
+++ b/app/models/issue_relation.rb
@@ -72,8 +72,8 @@ class IssueRelation < ActiveRecord::Base
attr_protected :issue_from_id, :issue_to_id
before_save :handle_issue_order
- after_create :create_journal_after_create
- after_destroy :create_journal_after_delete
+ after_create :call_issues_relation_added_callback
+ after_destroy :call_issues_relation_removed_callback
def visible?(user=User.current)
(issue_from.nil? || issue_from.visible?(user)) && (issue_to.nil? || issue_to.visible?(user))
@@ -168,6 +168,11 @@ class IssueRelation < ActiveRecord::Base
r == 0 ? id <=> relation.id : r
end
+ def init_journals(user)
+ issue_from.init_journal(user) if issue_from
+ issue_to.init_journal(user) if issue_to
+ end
+
private
# Reverses the relation if needed so that it gets stored in the proper way
@@ -182,29 +187,19 @@ class IssueRelation < ActiveRecord::Base
end
end
- def create_journal_after_create
- journal = issue_from.init_journal(User.current)
- journal.details << JournalDetail.new(:property => 'relation',
- :prop_key => relation_type_for(issue_from),
- :value => issue_to.id)
- journal.save
- journal = issue_to.init_journal(User.current)
- journal.details << JournalDetail.new(:property => 'relation',
- :prop_key => relation_type_for(issue_to),
- :value => issue_from.id)
- journal.save
- end
-
- def create_journal_after_delete
- journal = issue_from.init_journal(User.current)
- journal.details << JournalDetail.new(:property => 'relation',
- :prop_key => relation_type_for(issue_from),
- :old_value => issue_to.id)
- journal.save
- journal = issue_to.init_journal(User.current)
- journal.details << JournalDetail.new(:property => 'relation',
- :prop_key => relation_type_for(issue_to),
- :old_value => issue_from.id)
- journal.save
+ def call_issues_relation_added_callback
+ call_issues_callback :relation_added
+ end
+
+ def call_issues_relation_removed_callback
+ call_issues_callback :relation_removed
+ end
+
+ def call_issues_callback(name)
+ [issue_from, issue_to].each do |issue|
+ if issue
+ issue.send name, self
+ end
+ end
end
end