%# BEGIN LICENSE BLOCK
%# 
%# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
%# 
%# (Except where explictly superceded by other copyright notices)
%# 
%# 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.
%# 
%# Unless otherwise specified, all modifications, corrections or
%# extensions to this work which alter its source code become the
%# property of Best Practical Solutions, LLC when submitted for
%# inclusion in the work.
%# 
%# 
%# END LICENSE BLOCK
<& /SelfService/Elements/Header, Title => loc('#[_1]: [_2]', $Ticket->id, $Ticket->Subject) &>

<& /Elements/ListActions, actions => \@results &>

  <TABLE WIDTH="100%" class="ticketsummary" >
      <TR>
        <TD VALIGN=TOP WIDTH="50%">
          <& /Elements/TitleBoxStart, title => loc('The Basics'), 
                title_class=> 'inverse',  
                color => "#993333" &>
                <& /Ticket/Elements/ShowBasics, Ticket => $Ticket &>
          <& /Elements/TitleBoxEnd &>
%         if ($Ticket->QueueObj->CustomFields()->First) {
           <& /Elements/TitleBoxStart, title => loc('Additional Fields'),
                 title_class=> 'inverse',
                 color => "#993333" &>
                 <& /Ticket/Elements/ShowCustomFields, Ticket => $Ticket &>
           <& /Elements/TitleBoxEnd &>
% }
</TD>
        <TD VALIGN=TOP WIDTH="50%">
          <& /Elements/TitleBoxStart, title => loc("Dates"),
                title_class=> 'inverse',
                 color => "#663366" &>
          <& /Ticket/Elements/ShowDates, Ticket => $Ticket, UpdatedLink => 0 &>
          <& /Elements/TitleBoxEnd &>
</TD>
</TR>
</TABLE>



<%ARGS>
$id => undef
$Create => undef
$ShowHeaders => undef
$Collapsed => undef
</%ARGS>

<%INIT>

my ( $field, @results );


# {{{ Load the ticket
#If we get handed two ids, mason will make them an array. bleck.
# We want teh first one. Just because there's no other sensible way
# to deal
my @id = ( ref $id eq 'ARRAY' ) ? @{$id} : ($id);
my $Ticket = new RT::Ticket( $session{'CurrentUser'} );

if ( $id[0] eq 'new' ) {

    my $Queue = new RT::Queue( $session{'CurrentUser'} );
    unless ( $Queue->Load( $ARGS{'Queue'} ) ) {
        $m->comp( 'Error.html', Why => loc('Queue not found') );
        $m->abort;
    }

    unless ( $Queue->CurrentUserHasRight('CreateTicket') ) {
        $m->comp( 'Error.html',
             Why =>
               loc('You have no permission to create tickets in that queue.') );
        $m->abort;
    }

    ($Ticket) = CreateTicket(Attachments => $session{'Attachments'}, %ARGS);
      delete $session{'Attachments'};
      unless ($Ticket->CurrentUserHasRight('ShowTicket')) {
         Abort("No permission to view newly created ticket #".$Ticket->id.".");
                }
}
else {
    unless ( $Ticket->Load( $id[0] ) ) {
        $m->comp( 'Error.html',
                  Why => loc( "Couldn't load ticket '[_1]'", $id ) );
        $m->abort();
    }
}

unless ( $Ticket->CurrentUserHasRight('ShowTicket') ) {
    $m->comp( 'Error.html',
              Why => loc("No permission to display that ticket") );
    $m->abort();
}

my ( $code, $msg );

#Update the status
if (     ( defined $ARGS{'Status'} )
     and ( $ARGS{'Status'} ne $Ticket->Status ) ) {
    ( $code, $msg ) = $Ticket->SetStatus( $ARGS{'Status'} );
    push @results, "$msg";
}

# {{{ store the uploaded attachment in session
if ($ARGS{'Attach'}) {                  # attachment?
    $session{'Attachments'} = {} unless defined $session{'Attachments'};

    my $subject = "$ARGS{'Attach'}";
 
    Encode::_utf8_on($subject);
    # strip leading directories
    $subject =~ s#^.*[\\/]##;

    my $attachment = MakeMIMEEntity(
        Subject             => $subject,
        Body                => "",
        AttachmentFieldName => 'Attach'
    );

    $session{'Attachments'} = { %{$session{'Attachments'} || {}},
                                $ARGS{'Attach'} => $attachment };
}
# }}}

my $Transactions = $Ticket->Transactions;

</%INIT>