X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FElements%2FShowLinks;h=d0105c628d15c92ff6a09084861513ae6593243b;hb=187086c479a09629b7d180eec513fb7657f4e291;hp=d674fea72a7a8913705379a827732818b70c736c;hpb=fc6209f398899f0211cfcedeb81a3cd65e04a941;p=freeside.git diff --git a/rt/share/html/Elements/ShowLinks b/rt/share/html/Elements/ShowLinks index d674fea72..d0105c628 100755 --- a/rt/share/html/Elements/ShowLinks +++ b/rt/share/html/Elements/ShowLinks @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2018 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) @@ -46,115 +46,63 @@ %# %# END BPS TAGGED BLOCK }}} +% for my $type (@display) { - - - - - - - - - - - - - - - - - - - - - - - % # Allow people to add more rows to the table % $m->callback( %ARGS ); - + <& /Elements/ShowCustomFields, Object => $Object, Grouping => 'Links', Table => 0 &>
<& ShowRelationLabel, id => $id, Label => loc('Depends on'), Relation => 'DependsOn' &>: (<% loc('Create') %>) - -<%PERL> -my ( @active, @inactive, @not_tickets ); -for my $link ( @{ $Ticket->DependsOn->ItemsArrayRef } ) { - my $target = $link->TargetObj; - if ( $target && $target->isa('RT::Ticket') ) { - if ( $target->QueueObj->IsInactiveStatus( $target->Status ) ) { - push( @inactive, $link->TargetURI ); - } - else { - push( @active, $link->TargetURI ); - } - } - else { - push( @not_tickets, $link->TargetURI ); - } -} - - - -
    -% for my $Link (@not_tickets, @active, @inactive) { -
  • <& ShowLink, URI => $Link &>
  • -% } -
+
+ <& ShowRelationLabel, Object => $Object, Label => $labels{$type}.':', Relation => $type &> +% if ($clone{$type}) { + (<% loc('Create') %>) +% }
<& ShowRelationLabel, id => $id, Label => loc('Depended on by'), Relation => 'DependedOnBy' &>: (<% loc('Create') %>) -
    -% while (my $Link = $Ticket->DependedOnBy->Next) { -
  • <& ShowLink, URI => $Link->BaseURI &>
  • -% } -
+ <& ShowLinksOfType, Object => $Object, Type => $type, Recurse => ($type eq 'Members') &>
<& ShowRelationLabel, id => $id, Label => loc('Parents'), Relation => 'Parents' &>: (<% loc('Create') %>)<& /Ticket/Elements/ShowParents, Ticket => $Ticket &>
<& ShowRelationLabel, id => $id, Label => loc('Children'), Relation => 'Children' &>: (<% loc('Create') %>)<& /Ticket/Elements/ShowMembers, Ticket => $Ticket &>
<& ShowRelationLabel, id => $id, Label => loc('Refers to'), Relation => 'RefersTo' &>: (<% loc('Create') %>) -
    -% while (my $Link = $Ticket->RefersTo->Next) { -
  • <& ShowLink, URI => $Link->TargetURI &>
  • % } -
-
<& ShowRelationLabel, id => $id, Label => loc('Referred to by'), Relation => 'ReferredToBy' &>: (<% loc('Create') %>) -
    -% while (my $Link = $Ticket->ReferredToBy->Next) { -% next if (UNIVERSAL::isa($Link->BaseObj, 'RT::Ticket') && $Link->BaseObj->Type eq 'reminder'); -
  • <& ShowLink, URI => $Link->BaseURI &>
  • -% } -
-
- <%INIT> +my @display = qw(DependsOn DependedOnBy MemberOf Members RefersTo ReferredToBy); +$m->callback( %ARGS, CallbackName => 'ChangeDisplay', display => \@display ); +my %labels = ( + DependsOn => loc('Depends on'), + DependedOnBy => loc('Depended on by'), + MemberOf => loc('Parents'), + Members => loc('Children'), + RefersTo => loc('Refers to'), + ReferredToBy => loc('Referred to by'), +); +my %clone; -my $id = $Ticket->id; +if ( $Object->isa("RT::Ticket") + and $Object->QueueObj->CurrentUserHasRight('CreateTicket')) +{ + my $id = $Object->id; + my $path + = RT->Config->Get('WebPath') + . '/Ticket/Create.html?Queue=' + . $Object->Queue + . '&CloneTicket=' + . $id; -my $clone = {}; -my $path - = RT->Config->Get('WebPath') - . '/Ticket/Create.html?Queue=' - . $Ticket->Queue - . '&CloneTicket=' - . $id; + for my $relation (@display) { + my $mode = $RT::Link::TYPEMAP{$relation}->{Mode}; + my $type = $RT::Link::TYPEMAP{$relation}->{Type}; + my $field = $mode eq 'Base' ? 'new-' . $type : $type . '-new'; + my @copy = ($id); -for my $relation ( - qw(RefersTo ReferredToBy)) { - my $mode = $RT::Ticket::LINKTYPEMAP{$relation}->{Mode}; - my $type = $RT::Ticket::LINKTYPEMAP{$relation}->{Type}; - my $other = "Local" . $mode; - my $field = $mode eq 'Base' ? 'new-' . $type : $type . '-new'; - $clone->{$field} - = $path . "&$field=" - . join( '%20', - ( map { $_->$other() } @{ $Ticket->$relation->ItemsArrayRef } ), $id ); -} + # Canonicalized type captures both directions + if ($type eq "RefersTo") { + my $other = "Local" . $mode; + push @copy, map { $_->$other() } @{ $Object->$relation->ItemsArrayRef }; + } -for my $relation ( qw(MemberOf Members DependsOn DependedOnBy)) { - my $mode = $RT::Ticket::LINKTYPEMAP{$relation}->{Mode}; - my $type = $RT::Ticket::LINKTYPEMAP{$relation}->{Type}; - my $field = $mode eq 'Base' ? 'new-' . $type : $type . '-new'; - $clone->{$field} = $path . "&$field=$id"; + $clone{$relation} = "$path&$field=" . join('%20', grep { $_ } @copy); + } } - - <%ARGS> -$Ticket => undef +$Object