%# BEGIN BPS TAGGED BLOCK {{{
%#
%# COPYRIGHT:
%#
%# This software is Copyright (c) 1996-2025 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 }}}
% $m->callback( %ARGS, CallbackName => 'BeforeWidget' );

<&| /Widgets/TitleBox, title => loc('Basics'), class => 'ticket-info-basics' &>
  <& /Ticket/Elements/EditBasics,
    InTable      => 1,
    QueueObj => $QueueObj,
    defaults => \%ARGS,
    fields   => [
        {
            name => 'Queue',
            comp => '/Elements/SelectQueue',
            labelfor => 'SelectRT::Queue',
            args => {
                Name           => 'Queue',
                Default        => $QueueObj->Id,
                ShowNullOption => 0,
                AutoSubmit     => 1,
                ShowAllQueues  => 0,
            },
        },
        {
            name => 'Status',
            comp => '/Ticket/Elements/SelectStatus',
            labelfor => "SelectStatus",
            args => {
                Name     => "Status",
                QueueObj => $QueueObj,
            },
        },
        {
            name => 'Owner',
            comp => '/Elements/SelectOwner',
            labelfor => 'Owner',
            args => {
                Name         => "Owner",
                Default      => $ARGS{Owner} || RT->Nobody->Id,
                DefaultValue => 0,
                QueueObj     => $QueueObj,
            },
        },

        { special => 'roles' },

        {
            name => 'Priority',
            comp => '/Elements/SelectPriority',
            labelfor => 'SelectInitialPriority',
            args => {
                Name     => "InitialPriority",
                Default  => $ARGS{InitialPriority} ? $ARGS{InitialPriority} : $QueueObj->DefaultValue('InitialPriority'),
                QueueObj => $QueueObj,
            },
        },
        {
            name => 'FinalPriority',
            comp => '/Elements/SelectPriority',
            labelfor => 'SelectFinalPriority',
            args => {
                Name     => "FinalPriority",
                Default  => $ARGS{FinalPriority} ? $ARGS{FinalPriority} : $QueueObj->DefaultValue('FinalPriority'),
                QueueObj => $QueueObj,
            },
        },
        $QueueObj->SLADisabled
        ? ()
        : (
            {
                name => 'SLA',
                comp => '/Elements/SelectSLA',
                labelfor => 'SLA',
                args => {
                    Name         => "SLA",
                    Default      => $ARGS{SLA} || RT::SLA->GetDefaultServiceLevel( Queue => $QueueObj ),
                    DefaultValue => RT::SLA->GetDefaultServiceLevel( Queue => $QueueObj ) ? 0 : 1,
                    QueueObj     => $QueueObj,
                },
            }
        ),
    ],
    HiddenRoles => \@HiddenRoles,
  &>

  <& /Elements/EditCustomFields,
      %ARGS,
      Object => RT::Ticket->new($session{CurrentUser}),
      CategoryObj => $QueueObj,
      CustomFields => $QueueObj->TicketCustomFields,
      Grouping => 'Basics',
      InTable => 1,
      ForCreation => 1,
  &>
  <& /Ticket/Elements/EditTransactionCustomFields, %ARGS, QueueObj => $QueueObj, InTable => 1 &>
</&>

% $m->callback( %ARGS, CallbackName => 'AfterWidget' );

<%ARGS>
$QueueObj
@HiddenRoles => ()
</%ARGS>
