|
|
@@ -30,6 +30,8 @@ class IssueRelation < ActiveRecord::Base |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
include Redmine::SafeAttributes |
|
|
|
|
|
|
|
belongs_to :issue_from, :class_name => 'Issue' |
|
|
|
belongs_to :issue_to, :class_name => 'Issue' |
|
|
|
|
|
|
@@ -75,6 +77,24 @@ class IssueRelation < ActiveRecord::Base |
|
|
|
after_create :call_issues_relation_added_callback |
|
|
|
after_destroy :call_issues_relation_removed_callback |
|
|
|
|
|
|
|
safe_attributes 'relation_type', |
|
|
|
'delay', |
|
|
|
'issue_to_id' |
|
|
|
|
|
|
|
def safe_attributes=(attrs, user=User.current) |
|
|
|
return unless attrs.is_a?(Hash) |
|
|
|
attrs = attrs.deep_dup |
|
|
|
|
|
|
|
if issue_id = attrs.delete('issue_to_id') |
|
|
|
if issue_id.to_s.strip.match(/\A#?(\d+)\z/) |
|
|
|
issue_id = $1.to_i |
|
|
|
self.issue_to = Issue.visible(user).find_by_id(issue_id) |
|
|
|
end |
|
|
|
end |
|
|
|
|
|
|
|
super(attrs) |
|
|
|
end |
|
|
|
|
|
|
|
def visible?(user=User.current) |
|
|
|
(issue_from.nil? || issue_from.visible?(user)) && (issue_to.nil? || issue_to.visible?(user)) |
|
|
|
end |