%# 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
<TR class="<% $RowNum%2 ? 'oddline' : 'evenline'%>" >
<TD bgcolor="<%$bgcolor%>"><A NAME="txn-<%$Transaction->Id%>" href="#txn-<%$Transaction->Id%>">#</A>&nbsp;</TD>
<TD>&nbsp&nbsp;</TD>
<TD><font size=-2><% $transdate|n %></font>&nbsp;</TD>
% my $desc = $Transaction->BriefDescription;
% $m->comp('/Elements/Callback', _CallbackName => 'ModifyDisplay', text => \$desc, Transaction => $Transaction, %ARGS);
<TD ALIGN="LEFT"><b><%$Transaction->CreatorObj->Name%> - <%$TicketString%> <%$desc%>

</b></TD>
<TD><%$TimeTaken%>&nbsp;</TD>
<TD ALIGN="RIGHT"><font size=-1><%$titlebar_commands|n%></font></TD>
</TR>
<%PERL>

unless ($Collapsed) {
 foreach my $message (@$Attachments) { 

  my ($headers, $quoted);
      if ($ShowHeaders && ($ShowHeaders == $Ticket->Id)) {
	  $headers = $message->Headers;
      } else {
	  $headers = $message->NiceHeaders;
      }
      chomp $headers;
      if ($headers) {
	   # localize the common headers (like 'Subject:'), too.
	   eval {$headers =~ s/^([^:]+)(?=:)/loc($1)/em; } # we eval here to catch errors when 5.6 panics
      }
     

     my $MAX_INLINE_BODY = $RT::MaxInlineBody || 13456;
    if (    $message->ContentType =~ m{^(text/plain|message|text$)}i
         && $message->ContentLength < $MAX_INLINE_BODY ) {

        my $content;
        # If we've preloaded all the content, let's pull from there
        # if we haven't, load it now
        if ($AttachmentContent->{$message->id}) {
            $content = $AttachmentContent->{$message->id}->Content;
        } else {
            $content = $message->Content;
        } 



        eval {
            require Text::Quoted;
            $quoted = Text::Quoted::extract( $content );
        };
        if ($@) {
            $quoted = $content;
        }
    }
        
</%PERL>
<TR class="<% $RowNum%2 ? 'oddline' : 'evenline'%>" >                                
      <TD BGCOLOR="<%$bgcolor%>">&nbsp;&nbsp;</TD>
      <TD>&nbsp;&nbsp;</TD>
      <TD COLSPAN=3 VALIGN=TOP>
<span class="message">
	<PRE>
<& ShowMessageHeaders, Headers => $headers, Transaction => $Transaction &>
</PRE>
% if ($message->ContentLength && !length($quoted) && $message->ContentType =~ m#^text/#) {
<blockquote><i><&|/l&>Message body not shown because it is too large or is not plain text.</&><br>
<&|/l&>You can access it with the Download button on the right.</&></i></blockquote>
% } else {
<& ShowMessageStanza, Depth => 0, Message => $quoted, Transaction => $Transaction &>
% }
</span>
      </TD>
      <TD VALIGN=TOP ALIGN=RIGHT>
	
% if ($message->Parent == 0  ) {
<BR>
% }
<%PERL>
my $size = $message->ContentLength or next;

if ($size) {
    if ($size > 1024) {
	$size = loc("[_1]k", int($size/102.4)/10);
    }
    else {
	$size = loc("[_1]b", $size);
    }
</%PERL>
<font size=-1><A HREF="<%$AttachPath%>/<%$Transaction->Id%>/<%$message->Id%>/<%$message->Filename | u%>"><&|/l&>Download</&> <% $message->Filename|| loc('(untitled)') %></a> <% $size %></font>
% }
</TD>
</TR>
% }
% }



<%ARGS>
$Ticket => undef
$Transaction => undef
$ShowHeaders => 0
$Collapsed => undef
$ShowTitleBarCommands => 1
$RowNum => 1
$AttachPath => $RT::WebPath."/Ticket/Attachment"
$UpdatePath => $RT::WebPath."/Ticket/Update.html"
$Attachments => undef
$AttachmentContent => undef
</%ARGS>

<%INIT>


my ($TimeTaken, $TicketString, $bgcolor);

my $transdate = $Transaction->CreatedAsString();
$transdate =~ s/\s/&nbsp;/g;

if ($Transaction->Type =~ /^(Create|Correspond|Comment$)/) {
		$bgcolor="#336699";
} elsif (($Transaction->Field =~ /^Owner$/) or 
	 ($Transaction->Type =~ /^(AddWatcher|DelWatcher)$/)) {
	$bgcolor="#333399";

} elsif ($Transaction->Type =~ /^(AddLink|DeleteLink)$/) {
	$bgcolor="#336633";
} elsif ($Transaction->Type =~ /^(Status|Set|Told)$/) {
	if ($Transaction->Field =~ /^(Told|Starts|Started|Due)$/) {
		$bgcolor="#663366";	
	}
	else {
		$bgcolor="#993333";
	}
}
else {
	$bgcolor="#cccccc";
}

if ($Ticket->Id != $Transaction->Ticket) {
	$TicketString = "Ticket ".$Transaction->Ticket .": ";
}

if ($Transaction->TimeTaken != 0) {
	$TimeTaken = $Transaction->TimeTaken." min"
}

unless ($Attachments) { 
    my $attachments = $Transaction->Attachments;
    $attachments->Columns( qw( Id Filename ContentType Headers Subject Parent ContentEncoding ContentType TransactionId) );
    $Attachments = $attachments->ItemsArrayRef();
}


my $titlebar_commands='&nbsp;';

# If the transaction has anything attached to it at all
if ($Attachments->[0] && $ShowTitleBarCommands) {
	if ($Ticket->CurrentUserHasRight('ReplyToTicket')) {
		$titlebar_commands .= 
	  	  "[<a href=\"".$UpdatePath."?id=".
		  $Transaction->Ticket . "&QuoteTransaction=".$Transaction->Id.
		  "&Action=Respond\">". loc('Reply') ."</a>]&nbsp;";
	}
	if ($Ticket->CurrentUserHasRight('CommentOnTicket')) {
	     $titlebar_commands .= 
	     "[<a href=\"".$UpdatePath."?id=".$Transaction->Ticket. 
	     "&QuoteTransaction=".$Transaction->Id.
	     "&Action=Comment\">". loc('Comment') ."</a>]";
	}
}

</%INIT>
