[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