%# BEGIN BPS TAGGED BLOCK {{{
%#
%# COPYRIGHT:
%#
%# This software is Copyright (c) 1996-2026 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 }}}
<&| /Widgets/TitleBox,
    title => loc($display_lifecycle) .': '. $q,
    class => 'tickets-list-'. lc(RT::IR::TicketType( Lifecycle => $Lifecycle )),
    titleright_raw => $box_actions,
    title_class => 'inverse',
&>
% if ( $lookup_cf_not_applies ) {
<i><% loc("Custom field '[_1]' doesn't apply to this queue", loc($LookupType) ) %></i>
% } else {
<& /RTIR/Search/Elements/ShowResults,
    BaseQuery     => RT::IR->Query( Lifecycle => $Lifecycle ),
    Query         => $Query,
    Format        => $Format,
    AllowSorting  => 0,
    EmptyLabel    => loc("(no $display_lifecycle)"),
&>
% }
</&>
<%INIT>

my $display_lifecycle = RT::IR::FriendlyLifecycle($Lifecycle);

my $lookup_cf_not_applies = 0;
if ( $LookupType && RT::IR->CustomFields( Field => $LookupType )
    && !RT::IR->CustomFields( Field => $LookupType, Lifecycle => $Lifecycle )
) {
    $lookup_cf_not_applies = 1;
}

my $Format = RT->Config->Get('RTIRSearchResultFormats')->{'LookupTool'};
if ( $TicketObj ) {

    my @show;
    push @show, 'link' if ($Lifecycle eq RT::IR->lifecycle_incident && !RT::IR->IsIncidentQueue($TicketObj->QueueObj))
        || ($Lifecycle ne RT::IR->lifecycle_incident && RT::IR->IsIncidentQueue($TicketObj->QueueObj));
    push @show, 'merge' if $Lifecycle eq $TicketObj->QueueObj->Lifecycle;

    my $column = $Lifecycle eq RT::IR->lifecycle_incident ? 'Incident' : 'Children';
    $Format .= ", '__LookupTool${column}Actions.{". join(',', $TicketObj->id, @show ) ."}__'";
}

my @box_actions;
push @box_actions,
    {   title => loc('Search'),
        path  => "/Search/Build.html?"
        . $m->comp(
            '/Elements/QueryString',
            ShortenSearchQuery(
                ExtraQueryParams => 'RTIR',
                RTIR             => 1,
                Query            => join( ' AND ', RT::IR->Query( Lifecycle => $Lifecycle ), "( $Query )" )
            ),
        ),
    };

if ( $TicketObj && RT::IR->IsIncidentQueue($TicketObj->QueueObj) 
    && $Lifecycle ne RT::IR->lifecycle_incident
) {
    push @box_actions, {
        title => loc('Link'),
        path => RT::IR->HREFTo("Link/ToIncident/?". $m->comp('/Elements/QueryString', 
            id => $TicketObj->id,
            Lifecycle => $Lifecycle,
            Query => $Query,
        )),
    };
    if ($Lifecycle eq RT::IR->lifecycle_investigation && $LookupType eq 'email') {
        push @box_actions, {
            title => loc('Launch'),
            class => 'create_child' . ($Lifecycle ? '_'.$Lifecycle : ''),
            path => RT::IR->HREFTo("Create.html?". $m->comp('/Elements/QueryString',
                Incident => $TicketObj->id,
                Lifecycle => $Lifecycle,
                Requestors => $q,
            )),
        };
    } elsif ( $Lifecycle eq RT::IR->lifecycle_countermeasure && $LookupType eq 'ip' && !RT->Config->Get('RTIR_DisableCountermeasures') ) {
        push @box_actions, {
            title => loc('Create'),
            class => 'create_child' . ($Lifecycle ? '_'.$Lifecycle : ''),
            path => RT::IR->HREFTo("Create.html?". $m->comp('/Elements/QueryString',
                Incident => $TicketObj->id,
                Lifecycle => $Lifecycle,
                'IP-Value' => $q,
            )),
        };
    }
}
elsif ( $TicketObj && !RT::IR->IsIncidentQueue($TicketObj->QueueObj) 
    && $Lifecycle eq RT::IR->lifecycle_incident
) {
    push @box_actions, {
        title => loc('Create'),
        class => 'create_child' . ($Lifecycle ? '_'.$Lifecycle : ''),
        path => RT::IR->HREFTo("Create.html?". $m->comp('/Elements/QueryString',
            Child => $TicketObj->id,
            Lifecycle => $Lifecycle
        )),
    };
}
my $box_actions = join '&nbsp;'x3,
    map qq{<a href="} . $_->{'path'} . q{"} . ( $_->{'class'} ? q{ class="} . $_->{'class'} . q{"} : '' ) . '>'
        . $m->interp->apply_escapes( $_->{title}, 'h' ) . q{</a>},
    @box_actions;

</%INIT>

<%ARGS>
$Query => undef
$Lifecycle => undef
$TicketObj => undef

$q => undef
$LookupType => undef
</%ARGS>
