X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=rt%2Fshare%2Fhtml%2FTicket%2FElements%2FPreviewScrips;h=bb51ef3eb9d59619c570ed59fcebca7031141ff9;hp=dcf85a558ad697621ad21cc736fa5d9d82503a15;hb=919e930aa9279b3c5cd12b593889cd6de79d67bf;hpb=24548f7cf666bac02335d0bc74f81251c7b4ab50 diff --git a/rt/share/html/Ticket/Elements/PreviewScrips b/rt/share/html/Ticket/Elements/PreviewScrips index dcf85a558..bb51ef3eb 100755 --- a/rt/share/html/Ticket/Elements/PreviewScrips +++ b/rt/share/html/Ticket/Elements/PreviewScrips @@ -2,7 +2,7 @@ %# %# COPYRIGHT: %# -%# This software is Copyright (c) 1996-2011 Best Practical Solutions, LLC +%# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC %# %# %# (Except where explicitly superseded by other copyright notices) @@ -47,213 +47,77 @@ %# END BPS TAGGED BLOCK }}} <%args> $TicketObj => undef - <%init> -my %squelch = $m->comp('SELF:SquelchRecipients', %ARGS); -my $Object = $squelch{'Object'}; -my @non_recipients = @{ $squelch{'EmailAddresses'} }; +my $Object = $m->notes("DryRun-".$TicketObj->Id) || $TicketObj->DryRun(%ARGS); +my %recips = %{ $m->notes("DryRun-Recipients-".$TicketObj->Id) || {} }; +return unless $Object; +my %squelched = ProcessTransactionSquelching( \%ARGS ); -

<&|/l&>This message will be sent to...

- -% if ( $Object and $Object->Scrips ) { -<&|/l&>(Check boxes to disable notifications to the listed recipients)
- -% foreach my $scrip (@{$Object->Scrips->Prepared}) { -% next unless $scrip->ActionObj->Action->isa('RT::Action::SendEmail'); -<% $scrip->Description || loc('Scrip #[_1]',$scrip->id) %>
-<&|/l, loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)&>[_1] [_2] with template [_3] -
-%foreach my $type (qw(To Cc Bcc)) { -%my @addresses = $scrip->ActionObj->Action->$type(); - +

+<&|/l, RT->Config->Get('WebPath')."/Ticket/ModifyPeople.html?id=".$TicketObj->Id, +&>Uncheck boxes to disable notifications to the listed recipients for this transaction only; persistent squelching is managed on the People page. +

+ +% if ( $Object->Scrips ) { +% # Sort scrips with recipients before those without +% my @scrips = map { $_->[0] } +% sort { ($b->[1]?1:0) <=> ($a->[1]?1:0) } +% map { [$_, $_->ActionObj->Action->To + $_->ActionObj->Action->Cc + $_->ActionObj->Action->Bcc] } +% grep {$_->ActionObj->Action->isa('RT::Action::SendEmail')} +% @{$Object->Scrips->Prepared}; +% for my $scrip (@scrips) { + <% $scrip->Description || loc('Scrip #[_1]',$scrip->id) %>
+ <&|/l, loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)&>[_1] [_2] with template [_3] +
+% for my $type (qw(To Cc Bcc)) { +% my @addresses = $scrip->ActionObj->Action->$type(); +% next unless @addresses; + +% } +% if (RT->Config->Get('PreviewScripMessages')) { + +% } +
+% } % } -% if (RT->Config->Get('PreviewScripMessages')) { - -% } -% } -% } - -% if ( $Object and $Object->Rules ) { -% for my $rule (@{$Object->Rules}) { -% next unless $rule->{hints} && $rule->{hints}{class} eq 'SendEmail'; -<% $rule->Describe %> -% my $data = $rule->{hints}{recipients}; -% foreach my $type (qw(To Cc Bcc)) { - - -% } -% } -% } -
- -

<&|/l&>Messages about this ticket will not be sent to...

-<&|/l&>(Check boxes to enable notifications to the listed recipients) -
- -<& /Elements/Submit, Name => 'UpdatePreview', Value => 'UpdatePreview', Label => loc('Save Changes')&> - -<%METHOD SquelchRecipients> -<%ARGS> -$TicketObj => undef - -<%INIT> -my $arg = 'Ticket-'.$TicketObj->Id.'-SquelchMailTo'; -my @squelchto = ref($ARGS{$arg}) eq 'ARRAY' ? @{$ARGS{$arg}} : ($ARGS{$arg}); - -foreach my $address (@squelchto) { - $TicketObj->SquelchMailTo($address) if ($address); -} - - -$arg = 'Ticket-'.$TicketObj->Id.'-UnsquelchMailTo'; -my @unsquelchto = ref($ARGS{$arg}) eq 'ARRAY' ? @{$ARGS{$arg}} : ($ARGS{$arg}); - -foreach my $address (@unsquelchto) { - $TicketObj->UnsquelchMailTo($address) if ($address); -} - - -my $action; - -if (($ARGS{'UpdateType'} && $ARGS{'UpdateType'} eq 'response' ) || ($ARGS{'Action'} && $ARGS{'Action'} eq 'Respond' )) { - $action = 'Correspond'; -} -else { - $action = 'Comment'; -} - -my $Message = MakeMIMEEntity( - Subject => $ARGS{'UpdateSubject'}, - Body => $ARGS{'UpdateContent'}, -); - -my ( $Transaction, $Description, $Object ) = $TicketObj->$action( - CcMessageTo => $ARGS{'UpdateCc'}, - BccMessageTo => $ARGS{'UpdateBcc'}, - MIMEObj => $Message, - TimeTaken => $ARGS{'UpdateTimeWorked'}, - DryRun => 1 -); -unless ( $Transaction ) { - $RT::Logger->error("Coulfn't fire '$action' action: $Description"); -} - - -return (Object => $Object, EmailAddresses => [$TicketObj->SquelchMailTo]); - - - -<%METHOD GetRecipients> -<%ARGS> -$TicketObj - -<%INIT> -my $action; -if ( ( $ARGS{'UpdateType'} && $ARGS{'UpdateType'} eq 'response' ) - || ( $ARGS{'Action'} && $ARGS{'Action'} eq 'Respond' ) ) -{ - $action = 'Correspond'; -} -else { - $action = 'Comment'; -} - -my $Message = MakeMIMEEntity( - Subject => $ARGS{'UpdateSubject'}, - Body => $ARGS{'UpdateContent'}, -); - -my ( $id, $msg, $txn ) = $TicketObj->$action( - CcMessageTo => $ARGS{'UpdateCc'}, - BccMessageTo => $ARGS{'UpdateBcc'}, - MIMEObj => $Message, - TimeTaken => $ARGS{'UpdateTimeWorked'}, - DryRun => 1 -); -unless ( $id && $txn ) { - $RT::Logger->error("Couldn't fire '$action' action: $msg"); - return (); -} - -my @recipients; -foreach my $scrip ( @{ $txn->Scrips->Prepared } ) { - my $action = $scrip->ActionObj->Action; - next unless $action->isa('RT::Action::SendEmail'); - - foreach my $type (qw(To Cc Bcc)) { - push @recipients, $action->$type(); - } -} -return @recipients; - - - -<%METHOD GetRecipientsOnCreate> -<%INIT> -my $action; -my $Message = MakeMIMEEntity( - Subject => $ARGS{'Subject'}, - Cc => $ARGS{'Cc'}, - Body => $ARGS{'Content'}, -); - -my $TicketObj = RT::Ticket->new( $session{'CurrentUser'} ); -my ( $id, $txn, $msg ) = $TicketObj->Create( - Type => $ARGS{'Type'} || 'ticket', - Queue => $ARGS{'Queue'}, - Owner => $ARGS{'Owner'}, - Requestor => $ARGS{'Requestors'}, - Cc => $ARGS{'Cc'}, - AdminCc => $ARGS{'AdminCc'}, - InitialPriority => $ARGS{'InitialPriority'}, - FinalPriority => $ARGS{'FinalPriority'}, - TimeLeft => $ARGS{'TimeLeft'}, - TimeEstimated => $ARGS{'TimeEstimated'}, - TimeWorked => $ARGS{'TimeWorked'}, - Subject => $ARGS{'Subject'}, - Status => $ARGS{'Status'}, - MIMEObj => $Message, - DryRun => 1 -); -unless ( $id && $txn ) { - $RT::Logger->error("Couldn't fire '$action' action: $msg"); - return (); -} -my @recipients; -foreach my $scrip ( @{ $txn->Scrips->Prepared } ) { - my $action = $scrip->ActionObj->Action; - next unless $action->isa('RT::Action::SendEmail'); +% $m->callback( CallbackName => 'AfterRecipients', TicketObj => $TicketObj ); - foreach my $type (qw(To Cc Bcc)) { - push @recipients, $action->$type(); - } -} -return @recipients; - - +% $m->notes("DryRun-Recipients-".$TicketObj->Id, \%recips);