%# $Header: /raid/cvsroot/rt/webrt/SelfService/Display.html,v 1.2 2001/11/06 23:07:02 jesse Exp $
%# Copyright 1996-2001 Jesse Vincent <jesse@fsck.com>

<& /SelfService/Elements/Header, Title => 'Display ticket #'.$Ticket->id &>


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

<TABLE>
    <TR>
	<TD VALIGN=TOP WIDTH="20%" ALIGN=RIGHT>
	Ticket Id
	</TD>
      <TD>
	<%$Ticket->Id%>
	</TD>
      </TR>
    <TR>	
      <TD VALIGN=TOP WIDTH="20%" ALIGN=RIGHT>
	Requestors
	</TD>
      <TD>
	<%$Ticket->RequestorsAsString%>
      </TD>
      </TR>
    <TR>	
      <TD VALIGN=TOP WIDTH="20%" ALIGN=RIGHT>
	Cc
	</TD>
      <TD>
	<%$Ticket->CcAsString%>
      </TD>
    </TR>

  <TR>	
      <TD VALIGN=TOP WIDTH="20%" ALIGN=RIGHT>
	Status
	</TD>
      <TD>
	<%$Ticket->Status%>
      </TD>
    </TR>

    <TR>	
      <TD VALIGN=TOP WIDTH="20%" ALIGN=RIGHT>
	Queue
	</TD>
      <TD>
	<%$Ticket->QueueObj->Name%> (<%$Ticket->QueueObj->Description%>)
      </TD>
    </TR>
    <TR>	
      <TD VALIGN=TOP WIDTH="20%" ALIGN=RIGHT>
	Priority
      </TD>
      <TD>
	<%$Ticket->Priority %>
      </TD>
    </TR>
 
%  if ($Ticket->TimeWorked) {
   <TR>	
      <TD VALIGN=TOP WIDTH="20%" ALIGN=RIGHT>
	Worked
      </TD>
      <TD>
	<%$Ticket->TimeWorked %> minutes
      </TD>
    </TR>
% }
    
% my $selects = $Ticket->QueueObj->KeywordSelects;
% while (my $select = $selects->Next) {
    <TR>
      <TD VALIGN=TOP WIDTH="20%" ALIGN=RIGHT>
	<%$select->Name%>
      </TD>
      <TD>
% my $object_keywords = $Ticket->KeywordsObj($select->id);	
% while (my $keyword = $object_keywords->Next) {
	<%$keyword->KeywordObj->RelativePath($select->KeywordObj)%>
% }
%}
	</TD>
      </TR>




	</TABLE>
<TABLE BORDER=0 CELLSPACING=0>
% my ($i);
%while (my $Transaction = $Transactions->Next) {
% $i++;
%	if ($Transactions->IsLast) {
	<a name="lasttrans">
% 	}
	<& /Ticket/Elements/ShowTransaction, Transaction => $Transaction, 
					     RowNum => $i,
					     Ticket => $Ticket &>

%}
</TABLE>


<%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') {
    # {{{ Create a new ticket
    
    my $Queue = new RT::Queue($session{'CurrentUser'});	
    unless ($Queue->Load($ARGS{'Queue'})) {
	$m->comp('Error.html', Why => 'Queue not found');
	$m->abort;
    }
    
    unless ($Queue->CurrentUserHasRight('CreateTicket')) {
	$m->comp('Error.html', Why => 'You have no permission to create tickets in that queue.');
  	$m->abort; 
    }
    
    my @Requestors = split(/,/,$ARGS{'Requestors'});
    my @Cc = split(/,/,$ARGS{'Cc'});
    

    my $MIMEObj = MakeMIMEEntity ( Subject => $ARGS{'Subject'},
				   From => $ARGS{'From'},
				   Cc => $ARGS{'Cc'},
				   Body => $ARGS{'Content'},
				   AttachmentFieldName => 'Attach');

    #TODO in Create_Details.html: priorities and due-date      
    my ($id, $Trans, $ErrMsg)= $Ticket->Create(Queue=>$ARGS{Queue},
					       Requestor=> \@Requestors,
					       Cc => \@Cc,
					       Subject=>$ARGS{Subject},
					       MIMEObj => $MIMEObj	  
					      );         
    unless ($id && $Trans) {
	$m->comp('Error.html', Why => $ErrMsg);
   	$m->abort(); 
    }

    push(@results, $ErrMsg);

    # }}}
}
else {
    unless ($Ticket->Load($id[0])) {
	$m->comp('Error.html', Why =>"Couldn't load ticket '$id'");
	$m->abort();
    }
}
# }}}

unless ($session{'CurrentUser'}->HasQueueRight ( TicketObj => $Ticket,
						 Right => 'ShowTicket')) {
    $m->comp('Error.html', Why => "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";
}

ProcessUpdateMessage(ARGSRef=>\%ARGS, Actions=>\@results, TicketObj=>$Ticket);

my $Transactions = $Ticket->Transactions;

</%INIT>


<%ARGS>
$id => undef
</%ARGS>
