Fixed that relations to issues that are not visible are displayed in the issue history (#1005).

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12014 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2013-07-13 09:56:58 +00:00
parent 5fbc7f8f1f
commit 7509dda1ff
2 changed files with 22 additions and 0 deletions

View File

@ -53,12 +53,15 @@ class Journal < ActiveRecord::Base
(details.empty? && notes.blank?) ? false : super
end
# Returns journal details that are visible to user
def visible_details(user=User.current)
details.select do |detail|
if detail.property == 'cf'
field_id = detail.prop_key
field = CustomField.find_by_id(field_id)
field && field.visible_by?(project, user)
elsif detail.property == 'relation'
Issue.find_by_id(detail.value || detail.old_value).try(:visible?, user)
else
true
end

View File

@ -175,4 +175,23 @@ class JournalTest < ActiveSupport::TestCase
assert_equal '0', j.old_value
assert_equal '0', j.value
end
def test_visible_details_should_include_relations_to_visible_issues_only
issue = Issue.generate!
visible_issue = Issue.generate!
IssueRelation.create!(:issue_from => issue, :issue_to => visible_issue, :relation_type => 'relates')
hidden_issue = Issue.generate!(:is_private => true)
IssueRelation.create!(:issue_from => issue, :issue_to => hidden_issue, :relation_type => 'relates')
issue.reload
assert_equal 1, issue.journals.size
journal = issue.journals.first
assert_equal 2, journal.details.size
visible_details = journal.visible_details(User.anonymous)
assert_equal 1, visible_details.size
assert_equal visible_issue.id.to_s, visible_details.first.value
visible_details = journal.visible_details(User.find(2))
assert_equal 2, visible_details.size
end
end