[Rt-commit] rt branch, 4.6/reverse-transaction-order, created. rt-5.0.0alpha1-27-g3795befe1

Michel Rodriguez michel at bestpractical.com
Fri Mar 13 08:06:43 EDT 2020


The branch, 4.6/reverse-transaction-order has been created
        at  3795befe1f21b2c0622b63212fbfb7acc96ca969 (commit)

- Log -----------------------------------------------------------------
commit 3795befe1f21b2c0622b63212fbfb7acc96ca969
Author: michel <michel at bestpractical.com>
Date:   Fri Mar 13 13:03:06 2020 +0100

    Add a control to reverse the time order on the current ticket.
    
    Add the option in the template.
    Pass the new parameter through the various layers of templates.
    Add an option to SortedTransactions to change the original order.
    When the option is clicked, calls the same page, with the same parameters
    except for changing the ReverseTransactionOrder value.

diff --git a/lib/RT/Record.pm b/lib/RT/Record.pm
index 5b2b8d2d3..1da32d090 100644
--- a/lib/RT/Record.pm
+++ b/lib/RT/Record.pm
@@ -1729,13 +1729,19 @@ sub Transactions {
 Returns the result of L</Transactions> ordered per the
 I<OldestTransactionsFirst> preference/option.
 
+The second argument reverses the order if true, to 
+provide the "Reverse Transaction Order" feature.
+
 =cut
 
 sub SortedTransactions {
     my $self  = shift;
+    my $reverse_order = shift || 0;
+
     my $txns  = $self->Transactions;
-    my $order = RT->Config->Get("OldestTransactionsFirst", $self->CurrentUser)
-        ? 'ASC' : 'DESC';
+    # parens required because the priority of 'xor' is lower than the one of '='
+    my $order_param = ( RT->Config->Get("OldestTransactionsFirst", $self->CurrentUser) xor $reverse_order );
+    my $order = $order_param ? 'ASC' : 'DESC';
     $txns->OrderByCols(
         { FIELD => 'Created',   ORDER => $order },
         { FIELD => 'id',        ORDER => $order },
diff --git a/share/html/Elements/ShowHistory b/share/html/Elements/ShowHistory
index 562264996..b157e3c8d 100644
--- a/share/html/Elements/ShowHistory
+++ b/share/html/Elements/ShowHistory
@@ -58,7 +58,8 @@
 </div>
 <%ARGS>
 $Object
-$Transactions      => $Object->SortedTransactions
+$ReverseTransactionOrder => 0
+$Transactions      => $Object->SortedTransactions( $ReverseTransactionOrder )
 $Attachments       => $Object->Attachments( WithHeaders => 1 )
 $AttachmentContent => $Object->TextAttachments
 
diff --git a/share/html/Elements/ShowHistoryHeader b/share/html/Elements/ShowHistoryHeader
index c12fce532..f43f970ed 100644
--- a/share/html/Elements/ShowHistoryHeader
+++ b/share/html/Elements/ShowHistoryHeader
@@ -48,6 +48,7 @@
 <%ARGS>
 $Object
 $ShowHeaders       => 0
+$ReverseTransactionOrder  => 0
 $ShowTitle         => 1
 $ShowDisplayModes  => 1
 $ScrollShowHistory => 0
@@ -94,6 +95,17 @@ if ( $ShowDisplayModes or $ShowTitle or $ScrollShowHistory ) {
         }
     }
 
+    my @TransactionHeaders= ( loc( 'Oldest transaction first' ), loc( 'Newest transaction first' ) );
+    my $Order = ( RT->Config->Get( "OldestTransactionsFirst", $Object->CurrentUser ) xor $ReverseTransactionOrder );
+    my $TransactionHeader= $TransactionHeaders[$Order];
+
+    my $switched_order = 1 - $ReverseTransactionOrder;
+    $ShowHeaders //= 0; # by default $ShowHeaders should be 0, but it is not
+    push( @elements, qq{<a href="?ReverseTransactionOrder=$switched_order;ForceShowHistory=1;ShowHeaders=$ShowHeaders;id=} .
+                     $Object->id.qq{#$histid">} .
+                     $TransactionHeader .
+                     qq{</a>} );
+
     # build the new link
     my $alt = loc('Edit');
     my $titleright = qq{<div class="btn-group dropdown"><a id="history-dropdown" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="fas fa-cog icon-bordered fa-2x" alt="$alt" data-toggle="tooltip" data-placement="top" data-original-title="$alt"></span></a><ul class="dropdown-menu dropdown-menu-right">};
diff --git a/share/html/Elements/ShowHistoryPage b/share/html/Elements/ShowHistoryPage
index 51237de14..89a353a0a 100644
--- a/share/html/Elements/ShowHistoryPage
+++ b/share/html/Elements/ShowHistoryPage
@@ -47,7 +47,8 @@
 %# END BPS TAGGED BLOCK }}}
 <%ARGS>
 $Object
-$Transactions      => $Object->SortedTransactions
+$ReverseTransactionOrder => 0
+$Transactions      => $Object->SortedTransactions( $ReverseTransactionOrder )
 $Attachments       => $Object->Attachments( WithHeaders => 1 )
 $AttachmentContent => $Object->TextAttachments
 
diff --git a/share/html/Helpers/TicketHistory b/share/html/Helpers/TicketHistory
index 075598be1..6b3731c2d 100644
--- a/share/html/Helpers/TicketHistory
+++ b/share/html/Helpers/TicketHistory
@@ -47,6 +47,7 @@
 %# END BPS TAGGED BLOCK }}}
 <%ARGS>
 $id
+$ReverseTransactionOrder => 0
 </%ARGS>
 <%INIT>
 my $TicketObj = RT::Ticket->new($session{'CurrentUser'});
@@ -60,6 +61,7 @@ $m->callback( CallbackName => 'ExtraShowHistoryArguments', Ticket => $TicketObj,
 <& /Elements/ShowHistory,
     Object => $TicketObj,
     ShowHeaders => $ARGS{'ShowHeaders'},
+    ReverseTransactionOrder => $ReverseTransactionOrder,
     Attachments => $attachments,
     AttachmentContent => $attachment_content,
     %extra_args,
diff --git a/share/html/Helpers/TicketHistoryPage b/share/html/Helpers/TicketHistoryPage
index 41b0a70cb..6e4e48a36 100644
--- a/share/html/Helpers/TicketHistoryPage
+++ b/share/html/Helpers/TicketHistoryPage
@@ -91,6 +91,7 @@ if ($focusTransactionId) { # make sure we load enough if we need to focus a tran
 <& /Elements/ShowHistoryPage,
     Object => $TicketObj,
     ShowHeaders => $ARGS{'ShowHeaders'},
+    ReverseTransactionOrder => $ARGS{'ReverseTransactionOrder'},
     Transactions => $transactions,
     %extra_args,
     &>
diff --git a/share/html/Ticket/Display.html b/share/html/Ticket/Display.html
index 1ad1d1c68..eafa632fc 100644
--- a/share/html/Ticket/Display.html
+++ b/share/html/Ticket/Display.html
@@ -93,22 +93,26 @@ my $titleright = qq{
     <& /Ticket/Elements/ScrollShowHistory,
         Ticket => $TicketObj,
         ShowHeaders => $ARGS{'ShowHeaders'},
+        ReverseTransactionOrder => $ReverseTransactionOrder,
     &>
 % } elsif ($ShowHistory eq "delay") {
     <& /Ticket/Elements/DelayShowHistory,
         Ticket => $TicketObj,
         ShowHeaders => $ARGS{'ShowHeaders'},
+        ReverseTransactionOrder => $ReverseTransactionOrder,
     &>
 % } elsif (not $ForceShowHistory and $ShowHistory eq "click") {
     <& /Ticket/Elements/ClickToShowHistory,
         Ticket => $TicketObj,
         ShowHeaders => $ARGS{'ShowHeaders'},
+        ReverseTransactionOrder => $ReverseTransactionOrder,
     &>
 % } else {
     <& /Elements/ShowHistory ,
           Object => $TicketObj,
           Transactions => $transactions,
           ShowHeaders => $ARGS{'ShowHeaders'},
+          ReverseTransactionOrder => $ReverseTransactionOrder,
           Attachments => $attachments,
           AttachmentContent => $attachment_content
     &>
@@ -124,6 +128,7 @@ my $titleright = qq{
 <%ARGS>
 $TicketObj => undef
 $ShowHeaders => 0
+$ReverseTransactionOrder => 0
 $HideUnsetFields => RT->Config->Get('HideUnsetFieldsOnDisplay', $session{CurrentUser})
 $ForceShowHistory => 0
 $InlineEdit => RT->Config->Get('InlineEdit', $session{CurrentUser})
@@ -267,7 +272,7 @@ MaybeRedirectForResults(
     Arguments => { id => $TicketObj->id },
 );
 
-my $transactions = $TicketObj->SortedTransactions;
+my $transactions = $TicketObj->SortedTransactions( $ReverseTransactionOrder );
 my $attachments = $TicketObj->Attachments;
 my $attachment_content = $TicketObj->TextAttachments;
 
diff --git a/share/html/Ticket/Elements/ScrollShowHistory b/share/html/Ticket/Elements/ScrollShowHistory
index d2aca08a8..6905a4f63 100644
--- a/share/html/Ticket/Elements/ScrollShowHistory
+++ b/share/html/Ticket/Elements/ScrollShowHistory
@@ -47,6 +47,7 @@
 %# END BPS TAGGED BLOCK }}}
 <%ARGS>
 $Ticket
+$ReverseTransactionOrder => 0
 </%ARGS>
 
 <%INIT>
@@ -58,11 +59,12 @@ my $url = RT->Config->Get('WebPath') . "/Helpers/TicketHistoryPage?" .
 
 my %extra_args = map { $_ => $ARGS{$_} // 1 } qw/ShowDisplayModes ShowTitle ScrollShowHistory/;
 $extra_args{ShowHeaders} = $ARGS{ShowHeaders};
+$extra_args{ReverseTransactionOrder} = $ReverseTransactionOrder;
 
 $m->callback( CallbackName => 'ExtraShowHistoryArguments', Ticket => $Ticket, ExtraArgs => \%extra_args );
 
-
-my $oldestTransactionsFirst = RT->Config->Get("OldestTransactionsFirst", $session{CurrentUser});
+# parens on the right side are required because 'xor' has a lower priority than '='
+my $oldestTransactionsFirst = ( RT->Config->Get( "OldestTransactionsFirst", $session{CurrentUser} ) xor $ReverseTransactionOrder );
 </%INIT>
 
 <& /Elements/ShowHistoryHeader,

-----------------------------------------------------------------------


More information about the rt-commit mailing list