[Rt-commit] rt branch, 4.2-trunk, updated. rt-4.2.13-65-gc977492
Shawn Moore
shawn at bestpractical.com
Wed Sep 21 11:50:51 EDT 2016
The branch, 4.2-trunk has been updated
via c9774928c6da3757b266e305a2794f0b4122ac47 (commit)
via 99c08c1141c9a38cb727073d70d95d92243df1ef (commit)
from 18cc75db4638cb9b7e6117217f5ee9d4a945fdf9 (commit)
Summary of changes:
etc/RT_Config.pm.in | 17 +++++++++++++
lib/RT/Interface/Email.pm | 13 +++++++++-
t/mail/precedence-outgoing.t | 59 ++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 88 insertions(+), 1 deletion(-)
create mode 100644 t/mail/precedence-outgoing.t
- Log -----------------------------------------------------------------
commit 99c08c1141c9a38cb727073d70d95d92243df1ef
Author: Christian Loos <cloos at netcologne.de>
Date: Fri Aug 26 11:00:43 2016 +0200
Add a new $OverrideMailPrecedence config option
While you can set a specific Precedence header with a queue template, as
described in $DefaultMailPrecedence, you can't suppress the Precedence header
this way.
Testing shows that when sending an mail with an empty Precedence header,
automatic responders don't send out-of-office autoreplies.
diff --git a/etc/RT_Config.pm.in b/etc/RT_Config.pm.in
index 6a711d4..fd5a866 100644
--- a/etc/RT_Config.pm.in
+++ b/etc/RT_Config.pm.in
@@ -598,6 +598,23 @@ Precedence header, it will be preserved.
Set($DefaultMailPrecedence, "bulk");
+=item C<$OverrideMailPrecedence>
+
+C<$OverrideMailPrecedence> is used for overwriting the C<$DefaultMailPrecedence>
+value for a queue.
+
+The option is a hash reference of queue id/name to precedence. If you set the
+precedence to C<undef>, a Precedence header will not be added to the mail.
+
+This option only works if C<$DefaultMailPrecedence> is enabled.
+
+=cut
+
+Set($OverrideMailPrecedence, {
+# 'Queue 1' => "list",
+# 'Queue 2' => undef,
+});
+
=item C<$DefaultErrorMailPrecedence>
C<$DefaultErrorMailPrecedence> is used to control the default
diff --git a/lib/RT/Interface/Email.pm b/lib/RT/Interface/Email.pm
index a82c7fb..1d5f3bb 100644
--- a/lib/RT/Interface/Email.pm
+++ b/lib/RT/Interface/Email.pm
@@ -415,7 +415,18 @@ sub SendEmail {
if (my $precedence = RT->Config->Get('DefaultMailPrecedence')
and !$args{'Entity'}->head->get("Precedence")
) {
- $args{'Entity'}->head->replace( 'Precedence', Encode::encode("UTF-8",$precedence) );
+ if ($TicketObj) {
+ my $Overrides = RT->Config->Get('OverrideMailPrecedence') || {};
+ my $Queue = $TicketObj->QueueObj;
+
+ $precedence = $Overrides->{$Queue->id}
+ if exists $Overrides->{$Queue->id};
+ $precedence = $Overrides->{$Queue->Name}
+ if exists $Overrides->{$Queue->Name};
+ }
+
+ $args{'Entity'}->head->replace( 'Precedence', Encode::encode("UTF-8",$precedence) )
+ if $precedence;
}
if ( $TransactionObj && !$TicketObj
diff --git a/t/mail/precedence-outgoing.t b/t/mail/precedence-outgoing.t
new file mode 100644
index 0000000..322d018
--- /dev/null
+++ b/t/mail/precedence-outgoing.t
@@ -0,0 +1,59 @@
+use strict;
+use warnings;
+
+use RT::Test tests => undef;
+use RT::Test::Email;
+use Test::Warn;
+
+RT->Config->Set( DefaultMailPrecedence => "bulk" );
+RT->Config->Set( OverrideMailPrecedence => {
+ "test_list" => "list",
+ "test_undef" => undef,
+});
+
+{
+ my $queue = RT::Test->load_or_create_queue( Name => 'General' );
+ ok $queue && $queue->id, 'loaded or created queue General';
+
+ my $ticket = RT::Ticket->new( RT::CurrentUser->new( RT->SystemUser ) );
+ mail_ok {
+ my ($status, undef, $msg) = $ticket->Create(
+ Queue => $queue->id,
+ Subject => 'test bulk',
+ Requestor => 'root at localhost',
+ );
+ ok $status, "created ticket 'test bulk'";
+ } { Precedence => "bulk" };
+}
+
+{
+ my $queue = RT::Test->load_or_create_queue( Name => "test_list" );
+ ok $queue && $queue->id, 'loaded or created queue test_list';
+
+ my $ticket = RT::Ticket->new( RT::CurrentUser->new( RT->SystemUser ) );
+ mail_ok {
+ my ($status, undef, $msg) = $ticket->Create(
+ Queue => $queue->id,
+ Subject => 'test list',
+ Requestor => 'root at localhost',
+ );
+ ok $status, "created ticket 'test list'";
+ } { Precedence => "list" };
+}
+
+{
+ my $queue = RT::Test->load_or_create_queue( Name => "test_undef" );
+ ok $queue && $queue->id, 'loaded or created queue test_undef';
+
+ my $ticket = RT::Ticket->new( RT::CurrentUser->new( RT->SystemUser ) );
+ mail_ok {
+ my ($status, undef, $msg) = $ticket->Create(
+ Queue => $queue->id,
+ Subject => 'test undef',
+ Requestor => 'root at localhost',
+ );
+ ok $status, "created ticket 'test undef'";
+ } { Precedence => "" };
+}
+
+done_testing;
commit c9774928c6da3757b266e305a2794f0b4122ac47
Merge: 18cc75d 99c08c1
Author: Shawn M Moore <shawn at bestpractical.com>
Date: Wed Sep 21 15:51:29 2016 +0000
Merge branch '4.2/precedence-override' into 4.2-trunk
-----------------------------------------------------------------------
More information about the rt-commit
mailing list