]> git.uio.no Git - usit-rt.git/blame - share/html/Elements/ShowLinksOfType
Merge branch 'master' of git.uio.no:usit-rt
[usit-rt.git] / share / html / Elements / ShowLinksOfType
CommitLineData
af59614d
MKG
1%# BEGIN BPS TAGGED BLOCK {{{
2%#
3%# COPYRIGHT:
4%#
320f0092 5%# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC
af59614d
MKG
6%# <sales@bestpractical.com>
7%#
8%# (Except where explicitly superseded by other copyright notices)
9%#
10%#
11%# LICENSE:
12%#
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
16%# from www.gnu.org.
17%#
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.
22%#
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.
28%#
29%#
30%# CONTRIBUTION SUBMISSION POLICY:
31%#
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.)
37%#
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.
46%#
47%# END BPS TAGGED BLOCK }}}
48<ul>
49% for my $link (@not_tickets, @active, @inactive) {
50<li><& ShowLink, URI => $link->$ModeURI &>
51<%perl>
52 next unless $Recurse;
53
54 my $ToObj = $link->$ModeObj;
55 next if $ToObj and $checked->{$ToObj->id};
56
57 if ($depth <= $MaxDepth) {
58</%perl>
59<& ShowLinksOfType, %ARGS, Object => $ToObj, depth => ($depth + 1), checked => $checked &>
60% }
61</li>
62% }
63</ul>
64<%INIT>
65return unless $Object;
66
67unless ($RT::Link::TYPEMAP{$Type}) {
68 RT->Logger->error("Unknown link Type '$ARGS{Type}'");
69 return;
70}
71
72unless ($Object->can($Type)) {
73 RT->Logger->error("Don't know how to fetch links of '$Type' for object '$Object'");
74 return;
75}
76
77my $links = $Object->$Type;
78return unless $links->Count;
79
80return if $checked->{$Object->id};
81
82$checked->{$Object->id} = 1;
83
84my $mode = $RT::Link::TYPEMAP{$Type}->{'Mode'};
85my $ModeURI = "${mode}URI";
86my $ModeObj = "${mode}Obj";
87
88# Filter and bucket
89my (@active, @inactive, @not_tickets);
90while (my $link = $links->Next) {
91 my $ToObj = $link->$ModeObj;
92 if ($ToObj and $ToObj->isa('RT::Ticket')) {
93 next if $Type eq "ReferredToBy"
94 and $ToObj->Type eq 'reminder';
95
96 if ( $ToObj->QueueObj->IsInactiveStatus( $ToObj->Status ) ) {
97 push @inactive, $link;
98 }
99 else {
100 push @active, $link;
101 }
102 }
103 else {
104 push @not_tickets, $link;
105 }
106}
107
108$m->callback(
109 CallbackName => "Init",
110 ARGSRef => \%ARGS,
111 Object => $Object,
112 $Type => $Type,
113 $Recurse => \$Recurse,
114 $MaxDepth => \$MaxDepth,
115 active => \@active,
116 inactive => \@inactive,
117 not_tickets => \@not_tickets,
118);
119</%INIT>
120<%ARGS>
121$Object => undef
122$Type
123$Recurse => 0
124$MaxDepth => 7
125$depth => 1
126$checked => {}
127</%ARGS>