[Rt-commit] rt 02/03: Implement queue level filtering of ticket history

craig kaiser craig at bestpractical.com
Mon Jul 12 11:27:37 EDT 2021


This is an automated email from the git hooks/post-receive script.

craig pushed a commit to branch 5.0/core-history-filter
in repository rt.

commit 901b71cb876f60cfc4b2eff735dabf78bfe5369e
Author: craig kaiser <craig at bestpractical.com>
AuthorDate: Mon Jul 12 11:26:54 2021 -0400

    Implement queue level filtering of ticket history
---
 share/html/Admin/Elements/EditHistoryFilter | 40 +++++++++++++++++++++++++++++
 share/html/Admin/Queues/Modify.html         |  6 +++++
 share/html/Elements/ShowHistoryHeader       |  7 +++++
 share/html/Elements/ShowHistoryPage         |  6 +++++
 4 files changed, 59 insertions(+)

diff --git a/share/html/Admin/Elements/EditHistoryFilter b/share/html/Admin/Elements/EditHistoryFilter
new file mode 100644
index 0000000000..cd1eded216
--- /dev/null
+++ b/share/html/Admin/Elements/EditHistoryFilter
@@ -0,0 +1,40 @@
+<div class="form-row">
+  <div class="label col-3">
+    History Filter:
+  </div>
+  <div class="value col-9">
+    <select name="HistoryFilter" class="selectpicker form-control" multiple>
+%     foreach my $type ( @options ) {
+%         my $selected = '';
+%         $selected = 'selected="selected"' if grep {$_ eq $type} @{$default};
+
+          <option <% $selected |n %> value="<% $type %>"><% $type %></option>
+%     }
+    </select>
+  </div>
+</div>
+
+<%INIT>
+return unless $QueueObj;
+
+my $queue_attribute = $QueueObj->FirstAttribute( 'HistoryFilter' );
+my $default = $queue_attribute ? $queue_attribute->Content : [];
+
+my @options = RT->Config->Get( 'HistoryFilterTypes' );
+
+# See if we need to update
+if ( $HistoryFilter ) {
+    unless ( ref $HistoryFilter ) {
+        $HistoryFilter = [ $HistoryFilter ];
+    }
+    my ($ret, $msg) = $QueueObj->SetAttribute( Name => 'HistoryFilter', Content => $HistoryFilter );
+    RT::Logger->eror( "Could not set History Filter queue attribute: $msg" ) unless $ret;
+
+    $default = $HistoryFilter if $ret;
+}
+</%INIT>
+
+<%ARGS>
+$QueueObj      => undef
+$HistoryFilter => undef
+</%ARGS>
diff --git a/share/html/Admin/Queues/Modify.html b/share/html/Admin/Queues/Modify.html
index e9e859632e..6b15d067e2 100644
--- a/share/html/Admin/Queues/Modify.html
+++ b/share/html/Admin/Queues/Modify.html
@@ -239,6 +239,12 @@
   </div>
 % }
 
+  <div class="form-row">
+    <div class="col-12"> <% # colspan=4 %>
+      <& /Admin/Elements/EditHistoryFilter, QueueObj => $QueueObj, %ARGS &>
+    </div>
+  </div>
+
 </&>
   <div class="form-row">
     <div class="col-12">
diff --git a/share/html/Elements/ShowHistoryHeader b/share/html/Elements/ShowHistoryHeader
index 1fc930f342..ddfd1e7a17 100644
--- a/share/html/Elements/ShowHistoryHeader
+++ b/share/html/Elements/ShowHistoryHeader
@@ -126,6 +126,13 @@ if ( $ShowDisplayModes or $ShowTitle or $ScrollShowHistory ) {
         }
 
         $titleright .= q{</ul></div>};
+        $titleright .= q{<div class="ml-2 btn-group dropdown"><a id="history-dropdown" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><span class="fas fa-filter icon-bordered fa-2x" alt="Filter History" data-toggle="tooltip" data-placement="top" data-original-title="Filter History"></span></a><ul class="dropdown-menu dropdown-menu-right">};
+
+        my @types = RT->Config->Get( 'HistoryFilterTypes' );
+        foreach my $element ( @types ) {
+            $titleright .= qq{<li class="dropdown-item">$element</li>};
+        }
+        $titleright .= q{</ul></div>};
     }
 
 </%perl>
diff --git a/share/html/Elements/ShowHistoryPage b/share/html/Elements/ShowHistoryPage
index 1c01345bdf..8184dbbd7b 100644
--- a/share/html/Elements/ShowHistoryPage
+++ b/share/html/Elements/ShowHistoryPage
@@ -128,6 +128,12 @@ while ( my $Transaction = $Transactions->Next ) {
         and RT::Config->Get('SelfServiceCorrespondenceOnly')
         and ($Transaction->Type ne "Correspond" && $Transaction->Type ne "Create");
 
+    if ( $Object->isa('RT::Ticket') && $Object->QueueObj->FirstAttribute( 'HistoryFilter' ) ) {
+        my $filter_types = $Object->QueueObj->FirstAttribute( 'HistoryFilter' )->Content;
+
+        $skip = 1 if not grep {$_ eq $Transaction->Type} @{$filter_types};
+    }
+
     $m->callback(
         %ARGS,
         Transaction   => $Transaction,

-- 
To stop receiving notification emails like this one, please contact
sysadmin at bestpractical.com.


More information about the rt-commit mailing list