%# BEGIN BPS TAGGED BLOCK {{{
%# 
%# COPYRIGHT:
%# 
%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC
%#                                          <jesse@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"><&|/l&>Depends on</&>: (<a href="<%$clone->{'DependsOn-new'}%>"><% loc('Create') %></a>)</td>
    <td class="value">

<%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 );
    }
}
</%PERL>


<ul>
% for my $Link (@not_tickets, @active, @inactive) {
<li><& ShowLink, URI => $Link &></li>
% }
</ul>
    </td>
  </tr>
  <tr>
    <td class="labeltop"><&|/l&>Depended on by</&>: (<a href="<%$clone->{'new-DependsOn'}%>"><% loc('Create') %></a>)</td>
    <td class="value">
<ul>
% while (my $Link = $Ticket->DependedOnBy->Next) {
<li><& ShowLink, URI => $Link->BaseURI &></li>
% }
</ul>
    </td>
  </tr>
  <tr>
    <td class="labeltop"><&|/l&>Parents</&>: (<a href="<%$clone->{'MemberOf-new'}%>"><% loc('Create') %></a>)</td>
    <td class="value"><& /Ticket/Elements/ShowParents, Ticket => $Ticket &></td>
  </tr>
  <tr>
    <td class="labeltop"><&|/l&>Children</&>: (<a href="<%$clone->{'new-MemberOf'}%>"><% loc('Create') %></a>)</td>
    <td class="value"><& /Ticket/Elements/ShowMembers, Ticket => $Ticket &></td>
  </tr>
  <tr>
    <td class="labeltop"><&|/l&>Refers to</&>: (<a href="<%$clone->{'RefersTo-new'}%>"><% loc('Create') %></a>)</td>
    <td class="value">
<ul>
% while (my $Link = $Ticket->RefersTo->Next) {
<li><& ShowLink, URI => $Link->TargetURI &></li>
% }
</ul>
    </td>
  </tr>
  <tr>
    <td class="labeltop"><&|/l&>Referred to by</&>: (<a href="<%$clone->{'new-RefersTo'}%>"><% loc('Create') %></a>)</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 $clone = {};
my $path
    = RT->Config->Get('WebPath')
    . '/Ticket/Create.html?Queue='
    . $Ticket->Queue
    . '&CloneTicket='
    . $Ticket->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 } ),
        $Ticket->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=". $Ticket->id ;
}

</%INIT>

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