AddAttachmentLinksToMail

From Request Tracker Wiki
Revision as of 07:10, 4 March 2019 by Phanousk (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

This code adds list of links to files which was attached to the transaction template runs on, this mean only attachments that was attached to the current transaction, Add code into Template.

<pre>
 { my $res;
   my $Attachments = $Transaction->Attachments;
   $Attachments->Limit( FIELD => 'Filename', OPERATOR => '!=', VALUE => '' );
   while (my $a = $Attachments->Next) {
     $res .= "New attachments:\n" unless ($res);
     $res .= "  ". $RT::WebURL ."/Ticket/Attachment/". $a->TransactionId ."/". $a->id ."/". $a->Filename;
   }
   #Workaround to prevent possible commit death
   delete($Transaction->{attachments});
   $res;
 }
 
 </pre>

Or for a more verbose version to match the other headers (Jerrad):

<pre>
 { my $res;
   my $Attachments = $Transaction->Attachments;
   $Attachments->Limit( FIELD => 'Filename', OPERATOR => '!=', VALUE => '' );
   while (my $a = $Attachments->Next) {
     $res .= $RT::WebURL ."/Ticket/Attachment/". $a->TransactionId ."/". $a->id ."/". $a->Filename;
     $res .= "\n              ";
   }
   #Workaround to prevent possible commit death
   delete($Transaction->{attachments});
   $res = length($res) ? ' Attachments: ' . $res : '';
 }
 
 </pre>

To add links to all ticket's attachments use next Template snippet (works only with RT-3.4 and greater):

<pre>
 { my $res;
   my $Attachments = RT::Attachments->new( $Transaction->CurrentUser );
   $Attachments->Columns( qw(id TransactionId Filename ContentType Created));
   my $transactions = $Attachments->NewAlias('Transactions');
   $Attachments->Join(
       ALIAS1 => 'main',
       FIELD1 => 'TransactionId',
       ALIAS2 => $transactions,
       FIELD2 => 'id'
   );
   my $tickets = $Attachments->NewAlias('Tickets');
   $Attachments->Join(
       ALIAS1 => $transactions,
       FIELD1 => 'ObjectId',
       ALIAS2 => $tickets,
       FIELD2 => 'id'
   );
   $Attachments->Limit(
       ALIAS => $transactions,
       FIELD => 'ObjectType',
       VALUE => 'RT::Ticket'
   );
   $Attachments->Limit(
       ALIAS => $tickets,
       FIELD => 'EffectiveId',
       VALUE => $Ticket->id
   );
   $Attachments->Limit( FIELD => 'Filename', OPERATOR => '!=', VALUE => '' );
   while (my $a = $Attachments->Next) {
     $res .= "Ticket's attachments:\n" unless ($res);
     $res .= "  ". $RT::WebURL ."/Ticket/Attachment/". $a->TransactionId ."/". $a->id ."/". $a->Filename;
   }
   $res;
 }
 </pre>