%# BEGIN BPS TAGGED BLOCK {{{
%# 
%# COPYRIGHT:
%#  
%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC 
%#                                          <jesse@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/copyleft/gpl.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 }}}
<div class="ticket-transaction<% $type_class && " $type_class" %><% $RowNum % 2 ? ' odd' : ' even' %>">
<table width="100%" cellspacing="0" cellpadding="2" border="0">
  <tr>
    <td rowspan="2" valign="top" class="type">
      <a name="txn-<%$Transaction->Id%>" href="<% $DisplayPath %>#txn-<%$Transaction->Id%>">#</a>
      <% $LastTransaction ? '<a name="lasttrans">&nbsp;</a>' : '&nbsp;' |n %>
    </td>
    <td class="date"><% $transdate|n %></td>
% my $desc = $Transaction->BriefDescription;
% $m->comp('/Elements/Callback', _CallbackName => 'ModifyDisplay', text => \$desc, Transaction => $Transaction, %ARGS);
    <td class="description">
      <%$Creator%> - <%$TicketString%> <%$desc%>
    </td>
    <td class="time-taken"><%$TimeTaken%></td>
    <td class="actions"><%$titlebar_commands|n%></td>
  </tr>

  <tr>
    <td colspan="4" class="content">
% if ($Transaction->CustomFieldValues->Count) {
      <& /Elements/ShowCustomFields, Object => $Transaction &>
% }
% $m->comp('ShowTransactionAttachments', %ARGS, Parent => 0) unless ($Collapsed ||!$ShowBody);
    </td>
  </tr>
</table>
</div>

<%ARGS>
$Ticket => undef
$Transaction => undef
$ShowHeaders => 0
$Collapsed => undef
$ShowTitleBarCommands => 1
$RowNum => 1
$DisplayPath => $RT::WebPath."/Ticket/Display.html?id=".$Ticket->id
$AttachPath => $RT::WebPath."/Ticket/Attachment"
$UpdatePath => $RT::WebPath."/Ticket/Update.html"
$EmailRecordPath => $RT::WebPath."/Ticket/ShowEmailRecord.html"
$Attachments => undef
$AttachmentContent => undef
$ShowBody => 1
$LastTransaction => 0
</%ARGS>

<%INIT>

my $Creator = $Transaction->CreatorObj->Name;
$Creator =~ s/@/[...]/g;

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

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

if ( $Transaction->Type =~ /^(Create|Correspond|Comment$)/ ) {
    if ( $Transaction->IsInbound ) {
        $type_class = 'message';
    }
    else {
        $type_class = 'message';
    }
}
elsif (    ( $Transaction->Field =~ /^Owner$/ )
        or ( $Transaction->Type =~ /^(AddWatcher|DelWatcher)$/ ) ) {
    $type_class = 'people';

}
elsif ( $Transaction->Type =~ /^(AddLink|DeleteLink)$/ ) {
    $type_class = 'links';
}
elsif ( $Transaction->Type =~ /^(Status|Set|Told)$/ ) {
    if ( $Transaction->Field =~ /^(Told|Starts|Started|Due)$/ ) {
        $type_class = 'dates';
    }
    else {
        $type_class = 'basics';
    }
}
else {
    $type_class = 'other';
}

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

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

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;';

my @DisplayHeaders=qw ( _all);

if ( $Transaction->Type =~ /EmailRecord$/ ) {
    @DisplayHeaders = qw(To Cc Bcc);

    $titlebar_commands .=
        "[<a target=\"_blank\" href=\"$EmailRecordPath?id="
      . $Transaction->Ticket
      . "&Transaction="
      . $Transaction->Id
      . "&Attachment="
      . (    $Transaction->Attachments->First
          && $Transaction->Attachments->First->Id )

      . '">' . loc('Show') . "</a>]&nbsp;";
    $ShowBody = 0;
}


# If the transaction has anything attached to it at all
else {

    unless ( $ShowHeaders ) {
        @DisplayHeaders = qw(To From RT-Send-Cc Cc Bcc Date Subject);
    }

    if ( $Attachments->[0] && $ShowTitleBarCommands ) {
        if ( $Transaction->TicketObj->CurrentUserHasRight('ReplyToTicket')
             or $Transaction->TicketObj->CurrentUserHasRight('ModifyTicket')) {
            $titlebar_commands .=
                "[<a href=\"".$UpdatePath."?id="
              . $Transaction->Ticket
              . "&QuoteTransaction="
              . $Transaction->Id
              . "&Action=Respond\">"
              . loc('Reply')
              . "</a>]&nbsp;";
        }
        if ( $Transaction->TicketObj->CurrentUserHasRight('CommentOnTicket')
             or $Transaction->TicketObj->CurrentUserHasRight('ModifyTicket')) {
            $titlebar_commands .=
                "[<a href=\"".$UpdatePath."?id="
              . $Transaction->Ticket
              . "&QuoteTransaction="
              . $Transaction->Id
              . "&Action=Comment\">"
              . loc('Comment') . "</a>]";
        }
    }
}
</%INIT>
