[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