%# BEGIN BPS TAGGED BLOCK {{{
%#
%# COPYRIGHT:
%#
%# This software is Copyright (c) 1996-2012 Best Practical Solutions, LLC
%#                                          <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
%#
%#
%# LICENSE:
%#
%# This work is made available to you under the terms of Version 2 of
%# the GNU General Public License. A copy of that license should have
%# been provided with this software, but in any event can be snarfed
%# from www.gnu.org.
%#
%# This work is distributed in the hope that it will be useful, but
%# WITHOUT ANY WARRANTY; without even the implied warranty of
%# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
%# General Public License for more details.
%#
%# You should have received a copy of the GNU General Public License
%# along with this program; if not, write to the Free Software
%# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
%# 02110-1301 or visit their web page on the internet at
%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
%#
%#
%# CONTRIBUTION SUBMISSION POLICY:
%#
%# (The following paragraph is not intended to limit the rights granted
%# to you to modify and distribute this software under the terms of
%# the GNU General Public License and is only of importance to you if
%# you choose to contribute your changes and enhancements to the
%# community by submitting them to Best Practical Solutions, LLC.)
%#
%# By intentionally submitting any modifications, corrections or
%# derivatives to this work, or any other work intended for use with
%# Request Tracker, to Best Practical Solutions, LLC, you confirm that
%# you are the copyright holder for those contributions and you grant
%# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
%# royalty-free, perpetual, license to use, copy, create derivative
%# works based on those contributions, and sublicense and distribute
%# those contributions and any derivatives thereof.
%#
%# END BPS TAGGED BLOCK }}}
<table>
  <tr>
    <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Depends on'), Relation => 'DependsOn' &>:\
% if ($can_create) {
        <span class="create">(<a href="<%$clone->{'DependsOn-new'}%>"><% loc('Create') %></a>)</span>
% }
    </td>
    <td class="value">
<%PERL>
my ( $depends_on, @active, @inactive, @not_tickets );
$depends_on = $Ticket->DependsOn;

while ( my $link = $depends_on->Next ) {
    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 );
    }
}
</%PERL>
<ul>
% for my $Link (@not_tickets, @active, @inactive) {
<li><& ShowLink, URI => $Link &></li>
% }
</ul>
    </td>
  </tr>
  <tr>
    <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Depended on by'), Relation => 'DependedOnBy' &>:\
% if ($can_create) {
        <span class="create">(<a href="<%$clone->{'new-DependsOn'}%>"><% loc('Create') %></a>)</span>
% }
    </td>
    <td class="value">
<ul>
% while (my $Link = $Ticket->DependedOnBy->Next) {
<li><& ShowLink, URI => $Link->BaseURI &></li>
% }
</ul>
    </td>
  </tr>
  <tr>
    <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Parents'), Relation => 'Parents' &>:\
% if ($can_create) {
        <span class="create">(<a href="<%$clone->{'MemberOf-new'}%>"><% loc('Create') %></a>)</span>
% }
    </td>
    <td class="value"><& /Ticket/Elements/ShowParents, Ticket => $Ticket &></td>
  </tr>
  <tr>
    <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Children'), Relation => 'Children' &>:\
% if ($can_create) {
        <span class="create">(<a href="<%$clone->{'new-MemberOf'}%>"><% loc('Create') %></a>)</span>
% }
    </td>
    <td class="value"><& /Ticket/Elements/ShowMembers, Ticket => $Ticket &></td>
  </tr>
  <tr>
    <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Refers to'), Relation => 'RefersTo' &>:\
% if ($can_create) {
        <span class="create">(<a href="<%$clone->{'RefersTo-new'}%>"><% loc('Create') %></a>)</span>
% }
    </td>
    <td class="value">
<ul>
% while (my $Link = $Ticket->RefersTo->Next) {
<li><& ShowLink, URI => $Link->TargetURI &></li>
% }
</ul>
    </td>
  </tr>
  <tr>
    <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Referred to by'), Relation => 'ReferredToBy' &>:\
% if ($can_create) {
        <span class="create">(<a href="<%$clone->{'new-RefersTo'}%>"><% loc('Create') %></a>)</span>
% }
    </td>
    <td class="value">
    <ul>
% while (my $Link = $Ticket->ReferredToBy->Next) {
% next if (UNIVERSAL::isa($Link->BaseObj, 'RT::Ticket')  && $Link->BaseObj->Type eq 'reminder');
<li><& ShowLink, URI => $Link->BaseURI &></li>
% }
</ul>
    </td>
  </tr>
% # Allow people to add more rows to the table
% $m->callback( %ARGS );
</table>
<%INIT>

my $id = $Ticket->id;

my $clone = {};
my $path
    = RT->Config->Get('WebPath')
    . '/Ticket/Create.html?Queue='
    . $Ticket->Queue
    . '&CloneTicket='
    . $id;
my $can_create = $Ticket->QueueObj->CurrentUserHasRight('CreateTicket');

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 );
}

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";
}

</%INIT>
<%ARGS>
$Ticket => undef
</%ARGS>
