%# 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 }}}
<%INIT>
my $queue = $ARGS{QueueObj};
return unless RT::IR->OurQueue($queue) && !$TicketObj;

my @fields;
my $url = RT::Interface::Web::RequestENV('HTTP_HX_CURRENT_URL') || RT::Interface::Web::RequestENV('REQUEST_URI');
if ( $url =~ m{/RTIR/c/([^/]+)/} ) {
    push @fields, {
        name => 'Constituency',
        html => $1,
    };
}

$defaults{Incident}
    = [ grep $_, @{ ref $defaults{Incident} eq 'ARRAY' ? $defaults{Incident} : [ $defaults{Incident} || () ] } ];

my $SplitObj;
if ( $defaults{Split} ) {
    $SplitObj = RT::Ticket->new( $session{CurrentUser} );
    $SplitObj->Load( $defaults{Split} );
    if ( $SplitObj->Id ) {
        push @fields,
            {   name => 'Split from',
                html => q{<a href="}
                . RT::IR->HREFTo( 'Display.html?id=' . $SplitObj->id ) . q{">}
                . loc( "[_1] #[_2]: [_3]", RT::IR::TicketType( Ticket => $SplitObj ),
                    $SplitObj->Id, $SplitObj->Subject )
                . q{</a>},
            };

        unless ( @{ $defaults{Incident} } ) {
            my @incidents = map $_->id, @{ RT::IR->Incidents($SplitObj)->ItemsArrayRef || [] };
            $defaults{Incident} = \@incidents;
        }
    }
}

if ( $defaults{Child} ) {
    my $ticket = RT::Ticket->new( $session{CurrentUser} );
    $ticket->Load( $defaults{Child} );
    if ( $ticket->Id ) {
        @$Fields = grep { ( $_->{name} // '' ) ne 'Owner' } @$Fields;
        push @fields,
            {   name => 'Link with',
                html => q{<a href="}
                . RT::IR->HREFTo( 'Display.html?id=' . $ticket->id ) . q{">}
                . loc(
                    "[_1] #[_2]: [_3]", RT::IR::TicketType( Ticket => $ticket ),
                    $ticket->Id,        $ticket->Subject
                )
                . q{</a>},
            }
    }
}


my $select_incident = $defaults{SelectIncident} // 1;

if ( $select_incident && !RT::IR->IsIncidentQueue($queue) ) {
    my $type   = RT::IR::TicketType( Queue => $queue );
    my $config = RT->Config->Get('RTIR_IncidentChildren')->{$type};


    if ( @{$defaults{Incident}} > 1 && !$config->{'Multiple'} ) {
        $defaults{Incident} = $defaults{Incident}[-1];
    }
    $DECODED_ARGS->{Incident} = $defaults{Incident};

    push @fields,
        {   name => 'Incident',
            hint => join( '. ',
                loc('Id of an Incident to link a new ticket to'),
                $config->{'Required'} ? loc('Required') : loc('Optional'),
                '' ),
            comp => '/RTIR/Elements/SelectIncident',
            args => {
                Type     => $type,
                Default  => $defaults{Incident},
                SplitObj => $SplitObj,
            },
            labelfor => 'SelectIncident',
        };
}

unshift @$Fields, @fields;
</%INIT>
<%ARGS>
$Fields
$TicketObj
%defaults => ()
</%ARGS>
