1 %# BEGIN BPS TAGGED BLOCK {{{
5 %# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
6 %# <sales@bestpractical.com>
8 %# (Except where explicitly superseded by other copyright notices)
13 %# This work is made available to you under the terms of Version 2 of
14 %# the GNU General Public License. A copy of that license should have
15 %# been provided with this software, but in any event can be snarfed
18 %# This work is distributed in the hope that it will be useful, but
19 %# WITHOUT ANY WARRANTY; without even the implied warranty of
20 %# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 %# General Public License for more details.
23 %# You should have received a copy of the GNU General Public License
24 %# along with this program; if not, write to the Free Software
25 %# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
26 %# 02110-1301 or visit their web page on the internet at
27 %# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
30 %# CONTRIBUTION SUBMISSION POLICY:
32 %# (The following paragraph is not intended to limit the rights granted
33 %# to you to modify and distribute this software under the terms of
34 %# the GNU General Public License and is only of importance to you if
35 %# you choose to contribute your changes and enhancements to the
36 %# community by submitting them to Best Practical Solutions, LLC.)
38 %# By intentionally submitting any modifications, corrections or
39 %# derivatives to this work, or any other work intended for use with
40 %# Request Tracker, to Best Practical Solutions, LLC, you confirm that
41 %# you are the copyright holder for those contributions and you grant
42 %# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable,
43 %# royalty-free, perpetual, license to use, copy, create derivative
44 %# works based on those contributions, and sublicense and distribute
45 %# those contributions and any derivatives thereof.
47 %# END BPS TAGGED BLOCK }}}
50 <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Depends on'), Relation => 'DependsOn' &>:\
52 <span class="create">(<a href="<%$clone->{'DependsOn-new'}%>"><% loc('Create') %></a>)</span>
57 my ( $depends_on, @active, @inactive, @not_tickets );
58 $depends_on = $Ticket->DependsOn;
60 while ( my $link = $depends_on->Next ) {
61 my $target = $link->TargetObj;
62 if ( $target && $target->isa('RT::Ticket') ) {
63 if ( $target->QueueObj->IsInactiveStatus( $target->Status ) ) {
64 push( @inactive, $link->TargetURI );
67 push( @active, $link->TargetURI );
71 push( @not_tickets, $link->TargetURI );
76 % for my $Link (@not_tickets, @active, @inactive) {
77 <li><& ShowLink, URI => $Link &></li>
83 <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Depended on by'), Relation => 'DependedOnBy' &>:\
85 <span class="create">(<a href="<%$clone->{'new-DependsOn'}%>"><% loc('Create') %></a>)</span>
90 % while (my $Link = $Ticket->DependedOnBy->Next) {
91 <li><& ShowLink, URI => $Link->BaseURI &></li>
97 <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Parents'), Relation => 'Parents' &>:\
99 <span class="create">(<a href="<%$clone->{'MemberOf-new'}%>"><% loc('Create') %></a>)</span>
102 <td class="value"><& /Ticket/Elements/ShowParents, Ticket => $Ticket &></td>
105 <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Children'), Relation => 'Children' &>:\
107 <span class="create">(<a href="<%$clone->{'new-MemberOf'}%>"><% loc('Create') %></a>)</span>
110 <td class="value"><& /Ticket/Elements/ShowMembers, Ticket => $Ticket &></td>
113 <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Refers to'), Relation => 'RefersTo' &>:\
115 <span class="create">(<a href="<%$clone->{'RefersTo-new'}%>"><% loc('Create') %></a>)</span>
120 % while (my $Link = $Ticket->RefersTo->Next) {
121 <li><& ShowLink, URI => $Link->TargetURI &></li>
127 <td class="labeltop"><& ShowRelationLabel, id => $id, Label => loc('Referred to by'), Relation => 'ReferredToBy' &>:\
129 <span class="create">(<a href="<%$clone->{'new-RefersTo'}%>"><% loc('Create') %></a>)</span>
134 % while (my $Link = $Ticket->ReferredToBy->Next) {
135 % next if (UNIVERSAL::isa($Link->BaseObj, 'RT::Ticket') && $Link->BaseObj->Type eq 'reminder');
136 <li><& ShowLink, URI => $Link->BaseURI &></li>
141 % # Allow people to add more rows to the table
142 % $m->callback( %ARGS );
146 my $id = $Ticket->id;
150 = RT->Config->Get('WebPath')
151 . '/Ticket/Create.html?Queue='
155 my $can_create = $Ticket->QueueObj->CurrentUserHasRight('CreateTicket');
158 qw(RefersTo ReferredToBy)) {
159 my $mode = $RT::Ticket::LINKTYPEMAP{$relation}->{Mode};
160 my $type = $RT::Ticket::LINKTYPEMAP{$relation}->{Type};
161 my $other = "Local" . $mode;
162 my $field = $mode eq 'Base' ? 'new-' . $type : $type . '-new';
166 ( map { $_->$other() } @{ $Ticket->$relation->ItemsArrayRef } ), $id );
169 for my $relation ( qw(MemberOf Members DependsOn DependedOnBy)) {
170 my $mode = $RT::Ticket::LINKTYPEMAP{$relation}->{Mode};
171 my $type = $RT::Ticket::LINKTYPEMAP{$relation}->{Type};
172 my $field = $mode eq 'Base' ? 'new-' . $type : $type . '-new';
173 $clone->{$field} = $path . "&$field=$id";