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:
parent
5fbc7f8f1f
commit
7509dda1ff
@ -53,12 +53,15 @@ class Journal < ActiveRecord::Base
|
|||||||
(details.empty? && notes.blank?) ? false : super
|
(details.empty? && notes.blank?) ? false : super
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Returns journal details that are visible to user
|
||||||
def visible_details(user=User.current)
|
def visible_details(user=User.current)
|
||||||
details.select do |detail|
|
details.select do |detail|
|
||||||
if detail.property == 'cf'
|
if detail.property == 'cf'
|
||||||
field_id = detail.prop_key
|
field_id = detail.prop_key
|
||||||
field = CustomField.find_by_id(field_id)
|
field = CustomField.find_by_id(field_id)
|
||||||
field && field.visible_by?(project, user)
|
field && field.visible_by?(project, user)
|
||||||
|
elsif detail.property == 'relation'
|
||||||
|
Issue.find_by_id(detail.value || detail.old_value).try(:visible?, user)
|
||||||
else
|
else
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
|
@ -175,4 +175,23 @@ class JournalTest < ActiveSupport::TestCase
|
|||||||
assert_equal '0', j.old_value
|
assert_equal '0', j.old_value
|
||||||
assert_equal '0', j.value
|
assert_equal '0', j.value
|
||||||
end
|
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
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user