-%# BEGIN LICENSE BLOCK
+%# BEGIN BPS TAGGED BLOCK {{{
%#
-%# Copyright (c) 1996-2003 Jesse Vincent <jesse@bestpractical.com>
+%# COPYRIGHT:
+%#
+%# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC
+%# <jesse@bestpractical.com>
%#
-%# (Except where explictly superceded by other copyright notices)
+%# (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
%# 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.
+%# 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:
%#
-%# END LICENSE BLOCK
+%# (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 }}}
+<%doc>
+# This is (ab)used in Admin/(Users|Groups)/History.html and should probably
+# be generalized at some point.
+</%doc>
<%perl>
- if ($ShowDisplayModes or $ShowTitle) {
-my $title;
-my $titleright;
-if ($ShowTitle) {
- $title = loc('History');
-}
-else {
- $title = ' ';
-}
-$titleright = loc('Display mode') . ":";
-if ($ShowHeaders && $ShowHeaders == $Ticket->Id ) {
- $titleright .= "[<A HREF=\"" . $URIFile . "?id="
- . $Ticket->id . "\">"
- . loc("Brief headers")
- . "</a>] <b>["
- . loc("Full headers") . "]</b>";
-}
-else {
- $titleright .= "<b>["
- . loc("Brief headers")
- . "]</b> [<A HREF=\""
- . $URIFile
- . "?ShowHeaders="
- . $Ticket->Id . "&id="
- . $Ticket->id . "\">"
- . loc("Full headers") . "</a>]";
-}
+if ($ShowDisplayModes or $ShowTitle) {
+ my $title = $ShowTitle
+ ? loc('History')
+ : ' ';
+
+ my $titleright;
+
+ if ($ShowDisplayModes) {
+ $titleright = q[<span style="color: black">] . loc('Display mode') . ':</span> ';
+
+ if ($ShowHeaders) {
+ $titleright .= qq{<a href="$URIFile?id=} .
+ $Ticket->id.qq{">} .
+ loc("Brief headers") .
+ qq{</a> — };
+ $titleright .= q[<span class="selected">] . loc("Full headers") . "</span>";
+ }
+ else {
+ $titleright .= q[<span class="selected">] . loc("Brief headers") . "</span> — ";
+ $titleright .= qq{<a href="$URIFile?ShowHeaders=1;id=} .
+ $Ticket->id.qq{">} .
+ loc("Full headers") .
+ qq{</a>};
+ }
+ }
</%perl>
-<& /Elements/TitleBoxStart, title => $title, titleright => $titleright, bodyclass=> ''&>
+<& /Widgets/TitleBoxStart, title => $title, titleright => $titleright &>
% }
-<TABLE WIDTH=100% CELLSPACING=0 CELLPADDING=2 BORDER=0>
+<div id="ticket-history">
<%perl>
my @attachments = @{$Attachments->ItemsArrayRef()};
my @attachment_content = @{$AttachmentContent->ItemsArrayRef()};
-
-
-
-
while ( my $Transaction = $Transactions->Next ) {
my $skip = 0;
$m->comp( '/Elements/Callback',
next if $skip;
$i++;
- $m->out('<a name="lasttrans"></a>') if ( $Transactions->IsLast );
-
my @trans_attachments = grep { $_->TransactionId == $Transaction->Id } @attachments;
my $trans_content = {};
$m->comp( 'ShowTransaction',
%ARGS,
- AttachPath => $AttachPath,
- UpdatePath => $UpdatePath,
+ AttachPath => $AttachPath,
+ UpdatePath => $UpdatePath,
Ticket => $Ticket,
Transaction => $Transaction,
ShowHeaders => $ShowHeaders,
RowNum => $i,
ShowTitleBarCommands => $ShowTitleBarCommands,
Attachments => \@trans_attachments,
- AttachmentContent => $trans_content
+ AttachmentContent => $trans_content,
+ LastTransaction => $Transactions->IsLast
);
+
+# manually flush the content buffer after each txn, so the user sees
+# some update
+$m->flush_buffer();
}
</%perl>
-</TABLE>
+</div>
% if ($ShowDisplayModes or $ShowTitle) {
-<& /Elements/TitleBoxEnd &>
+<& /Widgets/TitleBoxEnd &>
% }
<%INIT>
+my $Transactions = new RT::Transactions($session{'CurrentUser'});
+if ($Tickets) {
+ while (my $t = $Tickets->Next) {
+ $Transactions->LimitToTicket($t->id);
+ }
+} else {
+ $Transactions = $Ticket->Transactions;
+}
-my $Transactions = $Ticket->Transactions;
-my $i;
+my $OldestFirst = $RT::OldestTransactionsFirst? 'ASC': 'DESC';
+$Transactions->OrderByCols( { FIELD => 'Created',
+ ORDER => $OldestFirst },
+ { FIELD => 'id',
+ ORDER => $OldestFirst },
+ );
-$Attachments ||= $m->comp('/Ticket/Elements/FindAttachments', Ticket => $Ticket);
+my $i;
+$Attachments ||= $m->comp('/Ticket/Elements/FindAttachments', Ticket => $Ticket, Tickets => $Tickets || undef);
$AttachmentContent ||= $m->comp('/Ticket/Elements/LoadTextAttachments', Ticket => $Ticket);
-
-
</%INIT>
<%ARGS>
$URIFile => $RT::WebPath."/Ticket/Display.html"
$Ticket => undef
+$Tickets => undef
$Attachments => undef
$AttachmentContent => undef
$ShowHeaders => undef
$ShowTitleBarCommands => 1
$AttachPath => $RT::WebPath."/Ticket/Attachment"
$UpdatePath => $RT::WebPath."/Ticket/Update.html"
-
</%ARGS>