Wikia

Request Tracker Wiki

ForwardWithMessage

Comments0
852pages on
this wiki

You can't forward a ticket or transaction with a message for the recipient. To change that:

  • Insert a textarea for the message on Forward-Page:
Copy /html/Ticket/Forward.html to /local/html/Ticket/Forward.html
Open /local/html/Ticket/Forward.html and insert after
<td><input name="Bcc" size="60" value="<% $ARGS{'Bcc'} || '' %>" /></td></tr>
a new table-row with a textarea for the message:
<tr><td align="right"><&|/l&>Message</&>:</td>
<td>
    <textarea name="Message" cols="51"><% $ARGS{'Message'} || '' %></textarea>
</td>
</tr>
  • Send message per Mail and store it in the Forward-Transaction:
Create /local/lib/RT/Interface/Email_Local.pm and add following content. (Differences to Email.pm are bold)
use strict;
no warnings qw(redefine);

package RT::Interface::Email;


use Email::Address;
use MIME::Entity;
use RT::EmailParser;
use File::Temp;
use UNIVERSAL::require;
use Mail::Mailer ();
use Text::ParseWords qw/shellwords/;

sub ForwardTransaction {
    my $txn = shift;
    my %args = ( To => , Cc => , Bcc => , Message => , @_ );

    my $entity = MIME::Entity->build(
        Type        => 'multipart/mixed',
        Description => 'forwarded transaction',
    );
   
    my $mimeMessage = MIME::Entity->build(
        Type        => 'text/plain; charset="utf-8"',
        Data        => $args{Message}
    );
   
    $entity->add_part($mimeMessage);
   
    $entity->add_part($txn->ContentAsMIME);

    my ( $ret, $msg ) = SendForward( %args, Entity => $entity, Transaction => $txn );
    if ($ret) {
        my $ticket = $txn->TicketObj;
        my ( $ret, $msg, $createdTrans ) = $ticket->_NewTransaction(
            Type  => 'Forward Transaction',
            Field => $txn->id,
            Data  => join ', ', grep { length } $args{To}, $args{Cc}, $args{Bcc},
        );
       
        #Attach message for Recipients to Transaction
        $createdTrans->_Attach(
                MIME::Entity->build(
                        Type => 'text/plain',
                        Data => $args{Message})
        );
       
        unless ($ret) {
            $RT::Logger->error("Failed to create transaction: $msg");
        }
    }
    return ( $ret, $msg );
}

sub ForwardTicket {
    my $ticket = shift;
    my %args = ( To => , Cc => , Bcc => , Message=>, @_ );

    my $txns = $ticket->Transactions;
    $txns->Limit(
        FIELD    => 'Type',
        VALUE    => $_,
    ) for qw(Create Correspond);

    my $entity = MIME::Entity->build(
        Type        => 'multipart/mixed',
        Description => 'forwarded ticket',
    );
    
    my $mimeMessage = MIME::Entity->build(
        Type        => 'text/plain; charset="utf-8"',
        Data        => $args{Message}
    );
   
    $entity->add_part($mimeMessage);
   
    $entity->add_part( $_ ) foreach
        map $_->ContentAsMIME,
        @{ $txns->ItemsArrayRef };

    my ( $ret, $msg ) = SendForward(
        %args,
        Entity   => $entity,
        Ticket   => $ticket,
        Template => 'Forward Ticket',
    );

    if ($ret) {
        my ( $ret, $msg, $createdTrans ) = $ticket->_NewTransaction(
            Type  => 'Forward Ticket',
            Field => $ticket->id,
            Data  => join ', ', grep { length } $args{To}, $args{Cc}, $args{Bcc}
        );
       
        #Attach message for Recipients to Transaction
        $createdTrans->_Attach($mimeMessage);
               
        unless ($ret) {
            $RT::Logger->error("Failed to create transaction: $msg");
        }
    }

    return ( $ret, $msg );

}

1;

That's it. Hopefully it helps someone.

Around Wikia's network

Random Wiki