[Rt-commit] rt branch, 4.2/custom-ticket-forward, created. rt-4.0.6-336-g60627db
? sunnavy
sunnavy at bestpractical.com
Wed Jul 4 12:46:53 EDT 2012
The branch, 4.2/custom-ticket-forward has been created
at 60627dbbd937ddf2ee4039af467271b40b523c5d (commit)
- Log -----------------------------------------------------------------
commit 053de934ee19a396f31942dbb363cbd3c30409a5
Author: sunnavy <sunnavy at bestpractical.com>
Date: Wed Jul 4 04:50:31 2012 +0800
customize forward message in ticket forward page
to archive this, we added a textarea filled with default forward message which
is extracted from the corresponding template.
diff --git a/lib/RT/Interface/Email.pm b/lib/RT/Interface/Email.pm
index 86d0abd..6579023 100644
--- a/lib/RT/Interface/Email.pm
+++ b/lib/RT/Interface/Email.pm
@@ -625,7 +625,14 @@ Forwards transaction with all attachments as 'message/rfc822'.
sub ForwardTransaction {
my $txn = shift;
- my %args = ( To => '', Cc => '', Bcc => '', @_ );
+ my %args = (
+ Content => undef,
+ ContentType => 'text/plain',
+ To => '',
+ Cc => '',
+ Bcc => '',
+ @_
+ );
my $entity = $txn->ContentAsMIME;
@@ -652,7 +659,14 @@ Forwards a ticket's Create and Correspond Transactions and their Attachments as
sub ForwardTicket {
my $ticket = shift;
- my %args = ( To => '', Cc => '', Bcc => '', @_ );
+ my %args = (
+ Content => undef,
+ ContentType => 'text/plain',
+ To => '',
+ Cc => '',
+ Bcc => '',
+ @_
+ );
my $txns = $ticket->Transactions;
$txns->Limit(
@@ -698,11 +712,15 @@ Forwards an Entity representing Ticket or Transaction as 'message/rfc822'. Entit
sub SendForward {
my (%args) = (
- Entity => undef,
- Ticket => undef,
+ Content => undef,
+ ContentType => 'text/plain',
+ Entity => undef,
+ Ticket => undef,
Transaction => undef,
- Template => 'Forward',
- To => '', Cc => '', Bcc => '',
+ Template => 'Forward',
+ To => '',
+ Cc => '',
+ Bcc => '',
@_
);
@@ -717,7 +735,8 @@ sub SendForward {
return (0, $ticket->loc("Couldn't send email"));
}
- my ($template, $msg) = PrepareEmailUsingTemplate(
+ my $mail;
+ my ( $template, $msg ) = PrepareEmailUsingTemplate(
Template => $args{'Template'},
Arguments => {
Ticket => $ticket,
@@ -725,26 +744,48 @@ sub SendForward {
},
);
- my $mail;
- if ( $template ) {
+ if ($template) {
$mail = $template->MIMEObj;
- } else {
+ }
+ else {
$RT::Logger->warning($msg);
}
- unless ( $mail ) {
- $RT::Logger->warning("Couldn't generate email using template '$args{Template}'");
- my $description;
- unless ( $args{'Transaction'} ) {
- $description = 'This is forward of ticket #'. $ticket->id;
- } else {
- $description = 'This is forward of transaction #'
- . $txn->id ." of a ticket #". $txn->ObjectId;
+ if ( $args{'Content'} ) {
+ if ($mail) {
+ my $io = $mail->bodyhandle->open("w");
+ $io->print( $args{'Content'} );
+ $io->close;
+ $mail->head->set( 'Content-Type' => $args{'ContentType'} );
+ }
+ else {
+ $mail = MIME::Entity->build(
+ Type => $args{'ContentType'},
+ Data => $args{'Content'},
+ );
+ }
+ }
+ else {
+ unless ($mail) {
+ $RT::Logger->warning(
+ "Couldn't generate email using template '$args{Template}'");
+
+ my $description;
+ unless ( $args{'Transaction'} ) {
+ $description = 'This is forward of ticket #' . $ticket->id;
+ }
+ else {
+ $description =
+ 'This is forward of transaction #'
+ . $txn->id
+ . " of a ticket #"
+ . $txn->ObjectId;
+ }
+ $mail = MIME::Entity->build(
+ Type => 'text/plain',
+ Data => $description,
+ );
}
- $mail = MIME::Entity->build(
- Type => 'text/plain',
- Data => $description,
- );
}
$mail->head->set( $_ => EncodeToMIME( String => $args{$_} ) )
@@ -801,6 +842,44 @@ sub GetForwardFrom {
}
}
+=head2 GetForwardDefaultContent Ticket => undef, Transaction => undef
+
+Resolve the Content to use in forward mail
+
+=cut
+
+sub GetDefaultForwardContent {
+ my %args = ( Ticket => undef, Transaction => undef, @_ );
+ my $txn = $args{Transaction};
+ my $ticket = $args{Ticket} || $txn->Object;
+
+ my ( $template, $msg ) = PrepareEmailUsingTemplate(
+ Template => $txn ? 'Forward' : 'Forward Ticket',
+ Arguments => {
+ Ticket => $ticket,
+ Transaction => $txn,
+ },
+ );
+
+ if ($template) {
+ return $template->MIMEObj->stringify_body();
+ }
+ else {
+ $RT::Logger->warning($msg);
+
+ if ($txn) {
+ return 'This is forward of ticket #' . $ticket->id;
+ }
+ else {
+ return
+ 'This is forward of transaction #'
+ . $txn->id
+ . " of a ticket #"
+ . $txn->ObjectId;
+ }
+ }
+}
+
=head2 SignEncrypt Entity => undef, Sign => 0, Encrypt => 0
Signs and encrypts message using L<RT::Crypt::GnuPG>, but as well
diff --git a/share/html/Ticket/Forward.html b/share/html/Ticket/Forward.html
index 8aa75c7..63f7d02 100644
--- a/share/html/Ticket/Forward.html
+++ b/share/html/Ticket/Forward.html
@@ -72,6 +72,13 @@
<tr><td align="right"><&|/l&>Bcc</&>:</td>
<td><input name="Bcc" size="60" value="<% $ARGS{'Bcc'} || '' %>" /></td></tr>
+<tr>
+<td><&|/l&>Content</&>:</td>
+<td>
+<& /Elements/MessageBox, Default => $ARGS{Content}, IncludeSignature => 0 &>
+</td>
+</tr>
+
</table>
<& /Elements/Submit, Label => loc('Forward Message and Return'), Name => 'ForwardAndReturn' &>
@@ -119,6 +126,11 @@ my $subject = $TicketObj->Subject;
$subject = RT::Interface::Email::AddSubjectTag( $subject, $TicketObj )
unless RT->Config->Get('ForwardFromUser');
+$ARGS{Content} ||= RT::Interface::Email::GetDefaultForwardContent(
+ Ticket => $TicketObj,
+ $txn ? ( Transaction => $txn ) : (),
+);
+
</%INIT>
<%ARGS>
commit 60627dbbd937ddf2ee4039af467271b40b523c5d
Author: sunnavy <sunnavy at bestpractical.com>
Date: Thu Jul 5 00:20:38 2012 +0800
list attachments to be forward
diff --git a/lib/RT/Interface/Email.pm b/lib/RT/Interface/Email.pm
index 6579023..8bc68e6 100644
--- a/lib/RT/Interface/Email.pm
+++ b/lib/RT/Interface/Email.pm
@@ -880,6 +880,36 @@ sub GetDefaultForwardContent {
}
}
+=head2 GetForwardAttachments Ticket => undef, Transaction => undef
+
+Resolve the Attachments to forward
+
+=cut
+
+sub GetForwardAttachments {
+ my %args = ( Ticket => undef, Transaction => undef, @_ );
+ my $txn = $args{Transaction};
+ my $ticket = $args{Ticket} || $txn->Object;
+
+ my $attachments = RT::Attachments->new( $ticket->CurrentUser );
+ if ($txn) {
+ $attachments->Limit( FIELD => 'TransactionId', VALUE => $txn->id );
+ }
+ else {
+ my $txns = $ticket->Transactions;
+ $txns->Limit(
+ FIELD => 'Type',
+ VALUE => $_,
+ ) for qw(Create Correspond);
+
+ while ( my $txn = $txns->Next ) {
+ $attachments->Limit( FIELD => 'TransactionId', VALUE => $txn->id );
+ }
+ }
+ return $attachments;
+}
+
+
=head2 SignEncrypt Entity => undef, Sign => 0, Encrypt => 0
Signs and encrypts message using L<RT::Crypt::GnuPG>, but as well
diff --git a/share/html/Ticket/Forward.html b/share/html/Ticket/Forward.html
index 63f7d02..f337bfb 100644
--- a/share/html/Ticket/Forward.html
+++ b/share/html/Ticket/Forward.html
@@ -81,6 +81,8 @@
</table>
+<& /Ticket/Elements/ShowAttachments, Attachments => $attachments &>
+
<& /Elements/Submit, Label => loc('Forward Message and Return'), Name => 'ForwardAndReturn' &>
<& /Elements/Submit, Label => loc('Forward Message'), Name => 'Forward' &>
</form>
@@ -131,6 +133,11 @@ $ARGS{Content} ||= RT::Interface::Email::GetDefaultForwardContent(
$txn ? ( Transaction => $txn ) : (),
);
+my $attachments = RT::Interface::Email::GetForwardAttachments(
+ Ticket => $TicketObj,
+ $txn ? ( Transaction => $txn ) : (),
+);
+
</%INIT>
<%ARGS>
-----------------------------------------------------------------------
More information about the Rt-commit
mailing list