[Rt-commit] rt branch, 4.6/reverse-transaction-order, created. rt-4.4.4-75-gd2b093fc2

Michel Rodriguez michel at bestpractical.com
Thu May 23 10:32:32 EDT 2019


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

- Log -----------------------------------------------------------------
commit 4087b3a62b7466abe7b236a89467650d3cdcebb7
Author: michel <michel at bestpractical.com>
Date:   Thu May 23 14:51:32 2019 +0200

    Fixed templates so that ShowHeaders is passed as an argument, instead
    of getting it sometimes from %ARGS

diff --git a/share/html/Elements/ShowHistoryHeader b/share/html/Elements/ShowHistoryHeader
index bf490b468..ba96fdfc5 100644
--- a/share/html/Elements/ShowHistoryHeader
+++ b/share/html/Elements/ShowHistoryHeader
@@ -58,6 +58,8 @@ my $histid      = "\L$record_type\E-" . $Object->id . "-history";
 </%INIT>
 <div class="history <% lc $record_type %>" id="<% $histid %>">
 <%perl>
+$ShowHeaders   //= 0;
+
 if ( $ShowDisplayModes or $ShowTitle or $ScrollShowHistory ) {
     my $title = $ShowTitle
                     ? loc('History')
diff --git a/share/html/Helpers/TicketHistory b/share/html/Helpers/TicketHistory
index 075598be1..56897f1e2 100644
--- a/share/html/Helpers/TicketHistory
+++ b/share/html/Helpers/TicketHistory
@@ -47,6 +47,7 @@
 %# END BPS TAGGED BLOCK }}}
 <%ARGS>
 $id
+$ShowHeaders => 0
 </%ARGS>
 <%INIT>
 my $TicketObj = RT::Ticket->new($session{'CurrentUser'});
diff --git a/share/html/Ticket/Display.html b/share/html/Ticket/Display.html
index 2681a3831..d8832405a 100644
--- a/share/html/Ticket/Display.html
+++ b/share/html/Ticket/Display.html
@@ -114,6 +114,7 @@ my $titleright = qq{<a href="$url_html" data-show-label="$show_label" data-hide-
 <%ARGS>
 $TicketObj => undef
 $ShowHeaders => 0
+$ReverseTransactionOrder => 0
 $HideUnsetFields => RT->Config->Get('HideUnsetFieldsOnDisplay', $session{CurrentUser})
 $ForceShowHistory => 0
 </%ARGS>
diff --git a/share/html/Ticket/Elements/ScrollShowHistory b/share/html/Ticket/Elements/ScrollShowHistory
index d2aca08a8..757c172ef 100644
--- a/share/html/Ticket/Elements/ScrollShowHistory
+++ b/share/html/Ticket/Elements/ScrollShowHistory
@@ -47,6 +47,7 @@
 %# END BPS TAGGED BLOCK }}}
 <%ARGS>
 $Ticket
+$ShowHeaders => 0
 </%ARGS>
 
 <%INIT>
@@ -57,7 +58,7 @@ my $url = RT->Config->Get('WebPath') . "/Helpers/TicketHistoryPage?" .
         $m->comp('/Elements/QueryString', %params, id => $Ticket->id );
 
 my %extra_args = map { $_ => $ARGS{$_} // 1 } qw/ShowDisplayModes ShowTitle ScrollShowHistory/;
-$extra_args{ShowHeaders} = $ARGS{ShowHeaders};
+$extra_args{ShowHeaders} = $ShowHeaders;
 
 $m->callback( CallbackName => 'ExtraShowHistoryArguments', Ticket => $Ticket, ExtraArgs => \%extra_args );
 

commit d2b093fc27e4f91b3e8ffc918046464c7d8f5a88
Author: michel <michel at bestpractical.com>
Date:   Thu May 23 16:06:34 2019 +0200

    Add a control to reverse the time order on the current ticket
    
        Added the option in the template.
        Passed the new parameter through the variousi layers of templates.
        Added an option to SortedTransactions to change the original order

diff --git a/lib/RT/Record.pm b/lib/RT/Record.pm
index 0cc188463..73d011860 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 ba96fdfc5..5a44bebe0 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
@@ -59,7 +60,7 @@ my $histid      = "\L$record_type\E-" . $Object->id . "-history";
 <div class="history <% lc $record_type %>" id="<% $histid %>">
 <%perl>
 $ShowHeaders   //= 0;
-
+$ReverseTransactionOrder //= 0;
 if ( $ShowDisplayModes or $ShowTitle or $ScrollShowHistory ) {
     my $title = $ShowTitle
                     ? loc('History')
@@ -96,6 +97,17 @@ if ( $ShowDisplayModes or $ShowTitle or $ScrollShowHistory ) {
                            loc("Show full headers") .
                            qq{</a>};
         }
+
+        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;
+        $titleright .= '—' if $titleright;
+        $titleright .= qq{<a href="?ReverseTransactionOrder=$switched_order;ForceShowHistory=1;ShowHeaders=$ShowHeaders;id=} .
+                           $Object->id.qq{#$histid">} .
+                           $TransactionHeader .
+                           qq{</a>};
     }
 
 </%perl>
diff --git a/share/html/Elements/ShowHistoryPage b/share/html/Elements/ShowHistoryPage
index 7f519e6fe..25d648a77 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 56897f1e2..84b4ce656 100644
--- a/share/html/Helpers/TicketHistory
+++ b/share/html/Helpers/TicketHistory
@@ -48,6 +48,7 @@
 <%ARGS>
 $id
 $ShowHeaders => 0
+$ReverseTransactionOrder => 0
 </%ARGS>
 <%INIT>
 my $TicketObj = RT::Ticket->new($session{'CurrentUser'});
@@ -60,7 +61,8 @@ $m->callback( CallbackName => 'ExtraShowHistoryArguments', Ticket => $TicketObj,
 </%INIT>
 <& /Elements/ShowHistory,
     Object => $TicketObj,
-    ShowHeaders => $ARGS{'ShowHeaders'},
+    ShowHeaders => $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 d8832405a..25afdb351 100644
--- a/share/html/Ticket/Display.html
+++ b/share/html/Ticket/Display.html
@@ -82,23 +82,27 @@ my $titleright = qq{<a href="$url_html" data-show-label="$show_label" data-hide-
 % if ($ShowHistory eq "scroll") {
     <& /Ticket/Elements/ScrollShowHistory,
         Ticket => $TicketObj,
-        ShowHeaders => $ARGS{'ShowHeaders'},
+        ShowHeaders => $ShowHeaders,
+        ReverseTransactionOrder => $ReverseTransactionOrder,
     &>
 % } elsif ($ShowHistory eq "delay") {
     <& /Ticket/Elements/DelayShowHistory,
         Ticket => $TicketObj,
-        ShowHeaders => $ARGS{'ShowHeaders'},
+        ShowHeaders => $ShowHeaders,
+        ReverseTransactionOrder => $ReverseTransactionOrder,
     &>
 % } elsif (not $ForceShowHistory and $ShowHistory eq "click") {
     <& /Ticket/Elements/ClickToShowHistory,
         Ticket => $TicketObj,
-        ShowHeaders => $ARGS{'ShowHeaders'},
+        ShowHeaders => $ShowHeaders,
+        ReverseTransactionOrder => $ReverseTransactionOrder,
     &>
 % } else {
     <& /Elements/ShowHistory ,
           Object => $TicketObj,
           Transactions => $transactions,
-          ShowHeaders => $ARGS{'ShowHeaders'},
+          ReverseTransactionOrder => $ReverseTransactionOrder,
+          ShowHeaders => $ShowHeaders,
           Attachments => $attachments,
           AttachmentContent => $attachment_content
     &>
@@ -236,7 +240,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 757c172ef..24eac4674 100644
--- a/share/html/Ticket/Elements/ScrollShowHistory
+++ b/share/html/Ticket/Elements/ScrollShowHistory
@@ -48,6 +48,7 @@
 <%ARGS>
 $Ticket
 $ShowHeaders => 0
+$ReverseTransactionOrder => 0
 </%ARGS>
 
 <%INIT>
@@ -59,11 +60,12 @@ my $url = RT->Config->Get('WebPath') . "/Helpers/TicketHistoryPage?" .
 
 my %extra_args = map { $_ => $ARGS{$_} // 1 } qw/ShowDisplayModes ShowTitle ScrollShowHistory/;
 $extra_args{ShowHeaders} = $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