[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