%# 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 }}}
<%ARGS>
$TicketObj => undef
@fields => ()
$InTable => 0
%defaults => ()
</%ARGS>
<%INIT>
unless ( @fields ) {
    my $subject = $defaults{'Subject'} || $TicketObj->Subject;
    @fields = (
        {   name => 'Subject',
            html => '<input name="Subject" value="'.(defined($subject) ? $m->interp->apply_escapes( $subject, 'h' ) : '').'" />',
        },
        {   name => 'Status',
            comp => '/Ticket/Elements/SelectStatus',
            args => {
                Name => 'Status',
                Default => $defaults{Status},
                DefaultFromArgs => 0,
                TicketObj => $TicketObj,
            },
        },
        {   name => 'Queue',
            comp => '/Elements/SelectQueue',
            args => {
                Name => 'Queue',
                Default => $defaults{'Queue'} || $TicketObj->QueueObj->Id,
                ShowNullOption => 0,
            }
        },
        {   name => 'Owner',
            comp => '/Elements/SelectOwner',
            args => {
                Name => 'Owner',
                QueueObj => $TicketObj->QueueObj,
                TicketObj => $TicketObj,
                Default => $defaults{'Owner'} || $TicketObj->OwnerObj->Id,
                DefaultValue => 0,
            }
        },
        # Time Estimated, Worked, and Left
        (
            map {
                (my $field = $_) =~ s/ //g;
                {
                    name => $_,
                    comp => '/Elements/EditTimeValue',
                    args => {
                        Name => $field,
                        Default => $defaults{$field} || $TicketObj->$field,
                    }
                }
            } ('Time Estimated', 'Time Worked', 'Time Left')
        ),
        # Priority and Final Priority
        (
            map {
                (my $field = $_) =~ s/ //g;
                {
                    name => $_,
                    comp => '/Elements/SelectPriority',
                    args => {
                        Name => $field,
                        Default => $defaults{$field} || $TicketObj->$field,
                    }
                }
            } ('Priority', 'Final Priority')
        ),
    );
}

$m->callback( CallbackName => 'MassageFields', %ARGS, TicketObj => $TicketObj, Fields => \@fields );

# Process the field list, skipping if html is provided and running the
# components otherwise
for my $field (@fields) {
    next if defined $field->{'html'};
    if ( $field->{'comp'} ) {
        $field->{'html'} = $m->scomp($field->{'comp'}, %{$field->{'args'} || {}});
    }
}
</%INIT>

% unless ($InTable) {
<table>
% }
% for my $field (@fields) {
 <tr class="<% lc $field->{'name'} %>">\
<td class="label"><% loc($field->{'name'}) %>:</td>\
<td class="value"><% $field->{'html'} |n %></td>\
</tr>
% }
% $m->callback( CallbackName => 'EndOfList', TicketObj => $TicketObj, %ARGS, Fields => \@fields );
% unless ($InTable) {
</table>
% }

