[Rt-commit] rt branch, 4.0/autoload-fixes, updated. rt-4.0.0-284-g9e4693a
Shawn Moore
sartak at bestpractical.com
Mon May 16 17:41:03 EDT 2011
The branch, 4.0/autoload-fixes has been updated
via 9e4693afea569c1edacc4890cbd84f27be6b17cb (commit)
from b37a527e7e4d780f18c0a7a227c2719154b4b635 (commit)
Summary of changes:
share/html/Elements/ShowLink | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)
- Log -----------------------------------------------------------------
commit 9e4693afea569c1edacc4890cbd84f27be6b17cb
Author: Shawn M Moore <sartak at bestpractical.com>
Date: Mon May 16 17:38:37 2011 -0400
Whether a ticket ->can($field) depends if the method has been called already
Since SearchBuilder uses AUTOLOAD to dynamically create methods,
$ticket->can($field) can return false, yet $ticket->$field could
succeed. Thus, look at ->_Accessible to determine if such a method
_will_ exist if we call it. This avoids heisenbugs where only examining
an article more deeply will display the name in links tables.
http://issues.bestpractical.com/Ticket/Display.html?id=17421
diff --git a/share/html/Elements/ShowLink b/share/html/Elements/ShowLink
index 0ae3c17..a7ef961 100644
--- a/share/html/Elements/ShowLink
+++ b/share/html/Elements/ShowLink
@@ -48,6 +48,7 @@
<a href="<%$URI->Resolver->HREF%>">
% if ($URI->IsLocal) {
% my $member = $URI->Object;
+% my $has_name = UNIVERSAL::can($member, 'Name') || (UNIVERSAL::can($member, '_Accessible') && $member->_Accessible('Name', 'read'));
% if (UNIVERSAL::isa($member, "RT::Ticket")) {
% my $inactive = $member->QueueObj->IsInactiveStatus($member->Status);
@@ -56,7 +57,7 @@
<%$member->Id%>: (<& /Elements/ShowUser, User => $member->OwnerObj &>) <%$member->Subject || ''%> [<% loc($member->Status) %>]
</span>
-% } elsif ( UNIVERSAL::can($member, 'Name')) {
+% } elsif ($has_name) {
<%$URI->Resolver->AsString%>: <%$member->Name%>
% } else {
<%$URI->Resolver->AsString%>
-----------------------------------------------------------------------
More information about the Rt-commit
mailing list