diff options
Diffstat (limited to 'rt/share/html/Elements/ShowLinksOfType')
-rw-r--r-- | rt/share/html/Elements/ShowLinksOfType | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/rt/share/html/Elements/ShowLinksOfType b/rt/share/html/Elements/ShowLinksOfType new file mode 100644 index 0000000..1bb485e --- /dev/null +++ b/rt/share/html/Elements/ShowLinksOfType @@ -0,0 +1,127 @@ +%# BEGIN BPS TAGGED BLOCK {{{ +%# +%# COPYRIGHT: +%# +%# This software is Copyright (c) 1996-2015 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 }}} +<ul> +% for my $link (@not_tickets, @active, @inactive) { +<li><& ShowLink, URI => $link->$ModeURI &> +<%perl> + next unless $Recurse; + + my $ToObj = $link->$ModeObj; + next if $ToObj and $checked->{$ToObj->id}; + + if ($depth <= $MaxDepth) { +</%perl> +<& ShowLinksOfType, %ARGS, Object => $ToObj, depth => ($depth + 1), checked => $checked &> +% } +</li> +% } +</ul> +<%INIT> +return unless $Object; + +unless ($RT::Link::TYPEMAP{$Type}) { + RT->Logger->error("Unknown link Type '$ARGS{Type}'"); + return; +} + +unless ($Object->can($Type)) { + RT->Logger->error("Don't know how to fetch links of '$Type' for object '$Object'"); + return; +} + +my $links = $Object->$Type; +return unless $links->Count; + +return if $checked->{$Object->id}; + +$checked->{$Object->id} = 1; + +my $mode = $RT::Link::TYPEMAP{$Type}->{'Mode'}; +my $ModeURI = "${mode}URI"; +my $ModeObj = "${mode}Obj"; + +# Filter and bucket +my (@active, @inactive, @not_tickets); +while (my $link = $links->Next) { + my $ToObj = $link->$ModeObj; + if ($ToObj and $ToObj->isa('RT::Ticket')) { + next if $Type eq "ReferredToBy" + and $ToObj->Type eq 'reminder'; + + if ( $ToObj->QueueObj->IsInactiveStatus( $ToObj->Status ) ) { + push @inactive, $link; + } + else { + push @active, $link; + } + } + else { + push @not_tickets, $link; + } +} + +$m->callback( + CallbackName => "Init", + ARGSRef => \%ARGS, + Object => $Object, + $Type => $Type, + $Recurse => \$Recurse, + $MaxDepth => \$MaxDepth, + active => \@active, + inactive => \@inactive, + not_tickets => \@not_tickets, +); +</%INIT> +<%ARGS> +$Object => undef +$Type +$Recurse => 0 +$MaxDepth => 7 +$depth => 1 +$checked => {} +</%ARGS> |