From: Michael Radziej <mir@noris.de>
Subject: [PATCH] Append the Ticket Number in the Subject, not Prepend

Make the ticket number go behind the normal subject in e-mails, not before.


---
 Kernel/System/Ticket.pm |   32 +++++++++++++++++++-------------
 1 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/Kernel/System/Ticket.pm b/Kernel/System/Ticket.pm
index 88ec3a9..37161c6 100644
--- a/Kernel/System/Ticket.pm
+++ b/Kernel/System/Ticket.pm
@@ -696,12 +696,20 @@ sub TicketSubjectBuild {
     my $TicketHook        = $Self->{ConfigObject}->Get('Ticket::Hook');
     my $TicketHookDivider = $Self->{ConfigObject}->Get('Ticket::HookDivider');
     my $TicketSubjectRe   = $Self->{ConfigObject}->Get('Ticket::SubjectRe');
+    my $TicketSubjectSize = $Self->{ConfigObject}->Get('Ticket::SubjectSize') || 120;
+    my $SubjectAndNumber = "$Subject [$TicketHook$TicketHookDivider$Param{TicketNumber}]";
+    
+    if (length($SubjectAndNumber) + length($TicketSubjectRe) + 20 > $TicketSubjectSize) {
+        # this might create a subject line too long. Put ticket number first
+        # such that it is not cut away by vanilla otrs instances that might reside on
+        # the remote side
+        $SubjectAndNumber = "[$TicketHook$TicketHookDivider$Param{TicketNumber}] $Subject";
+    }
     if ( $Param{Type} && $Param{Type} eq 'New' ) {
-        $Subject = "[$TicketHook$TicketHookDivider$Param{TicketNumber}] " . $Subject;
+        $Subject = $SubjectAndNumber;
     }
     else {
-        $Subject
-            = "$TicketSubjectRe: [$TicketHook$TicketHookDivider$Param{TicketNumber}] " . $Subject;
+        $Subject = "$TicketSubjectRe: $SubjectAndNumber";
     }
     return $Subject;
 }
@@ -733,23 +741,21 @@ sub TicketSubjectClean {
     # get ticket data
     my $TicketHook        = $Self->{ConfigObject}->Get('Ticket::Hook');
     my $TicketHookDivider = $Self->{ConfigObject}->Get('Ticket::HookDivider');
-    my $TicketSubjectSize = $Self->{ConfigObject}->Get('Ticket::SubjectSize') || 120;
     my $TicketSubjectRe   = $Self->{ConfigObject}->Get('Ticket::SubjectRe');
-    $Subject =~ s/\[$TicketHook: $Param{TicketNumber}\] //g;
-    $Subject =~ s/\[$TicketHook:$Param{TicketNumber}\] //g;
-    $Subject =~ s/\[$TicketHook$TicketHookDivider$Param{TicketNumber}\] //g;
+    $Subject =~ s/ *\[$TicketHook: $Param{TicketNumber}\]//g;
+    $Subject =~ s/ *\[$TicketHook:$Param{TicketNumber}\]//g;
+    $Subject =~ s/ *\[$TicketHook$TicketHookDivider$Param{TicketNumber}\]//g;
     if ( $Self->{ConfigObject}->Get('Ticket::SubjectCleanAllNumbers') ) {
-        $Subject =~ s/\[$TicketHook$TicketHookDivider\d+?\] //g;
+        $Subject =~ s/\[$TicketHook$TicketHookDivider\d+?\] *//g;
     }
-    $Subject =~ s/$TicketHook: $Param{TicketNumber} //g;
-    $Subject =~ s/$TicketHook:$Param{TicketNumber} //g;
-    $Subject =~ s/$TicketHook$TicketHookDivider$Param{TicketNumber} //g;
+    $Subject =~ s/ *$TicketHook: $Param{TicketNumber}//g;
+    $Subject =~ s/ *$TicketHook:$Param{TicketNumber}//g;
+    $Subject =~ s/ *$TicketHook$TicketHookDivider$Param{TicketNumber}//g;
     if ( $Self->{ConfigObject}->Get('Ticket::SubjectCleanAllNumbers') ) {
-        $Subject =~ s/$TicketHook$TicketHookDivider\d+? //g;
+        $Subject =~ s/$TicketHook$TicketHookDivider\d+? *//g;
     }
     $Subject =~ s/^(..(\[\d+\])?: )+//;
     $Subject =~ s/^($TicketSubjectRe(\[\d+\])?: )+//;
-    $Subject =~ s/^(.{$TicketSubjectSize}).*$/$1 [...]/;
     return $Subject;
 }
 
-- 
tg: (aa19c95..) t/ticket-after-subject (depends on: patchbase)
