summaryrefslogtreecommitdiff
path: root/rt/share/html/Ticket/Elements/PreviewScrips
diff options
context:
space:
mode:
authorIvan Kohler <ivan@freeside.biz>2012-06-07 00:56:06 -0700
committerIvan Kohler <ivan@freeside.biz>2012-06-07 00:56:06 -0700
commit43a06151e47d2c59b833cbd8c26d97865ee850b6 (patch)
tree42c51d94e7fa265461b508d061562be204ccc2c1 /rt/share/html/Ticket/Elements/PreviewScrips
parent6587f6ba7d047ddc1686c080090afe7d53365bd4 (diff)
starting to work...
Diffstat (limited to 'rt/share/html/Ticket/Elements/PreviewScrips')
-rwxr-xr-xrt/share/html/Ticket/Elements/PreviewScrips268
1 files changed, 64 insertions, 204 deletions
diff --git a/rt/share/html/Ticket/Elements/PreviewScrips b/rt/share/html/Ticket/Elements/PreviewScrips
index dcf85a558..75fbc4563 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-2012 Best Practical Solutions, LLC
%# <sales@bestpractical.com>
%#
%# (Except where explicitly superseded by other copyright notices)
@@ -47,213 +47,73 @@
%# END BPS TAGGED BLOCK }}}
<%args>
$TicketObj => undef
-
</%args>
<%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;
</%init>
-<h2><&|/l&>This message will be sent to...</&></h2>
-
-% if ( $Object and $Object->Scrips ) {
-<i><&|/l&>(Check boxes to disable notifications to the listed recipients)</&></i><br />
-
-% foreach my $scrip (@{$Object->Scrips->Prepared}) {
-% next unless $scrip->ActionObj->Action->isa('RT::Action::SendEmail');
-<b><% $scrip->Description || loc('Scrip #[_1]',$scrip->id) %></b><br />
-<&|/l, loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)&>[_1] [_2] with template [_3]</&>
-<br />
-%foreach my $type (qw(To Cc Bcc)) {
-%my @addresses = $scrip->ActionObj->Action->$type();
-<ul>
-%foreach my $addr (@addresses) {
-<li>
- <b><%loc($type)%></b>: <input type="checkbox" class="checkbox" name="Ticket-<%$TicketObj->id%>-SquelchMailTo" value="<%$addr->address%>" /> <%$addr->address%>
-
-% $m->callback(CallbackName => 'AfterAddress', Ticket => $TicketObj, Address => $addr, Type => $type);
-</li>
-% }
-</ul>
-% }
-% if (RT->Config->Get('PreviewScripMessages')) {
-<textarea cols="80" rows="5">
-<%$scrip->ActionObj->TemplateObj->MIMEObj->as_string%>
-</textarea>
-% }
-% }
+<p>
+<&|/l, RT->Config->Get('WebPath')."/Ticket/ModifyPeople.html?id=".$TicketObj->Id,
+&>Uncheck boxes to disable notifications to the listed recipients <b>for this transaction only</b>; persistent squelching is managed on the <a href="[_1]">People page</a>.</&>
+</p>
+
+% 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) {
+ <b><% $scrip->Description || loc('Scrip #[_1]',$scrip->id) %></b><br />
+ <&|/l, loc($scrip->ConditionObj->Name), loc($scrip->ActionObj->Name), loc($scrip->TemplateObj->Name)&>[_1] [_2] with template [_3]</&>
+ <br />
+% for my $type (qw(To Cc Bcc)) {
+% my @addresses = $scrip->ActionObj->Action->$type();
+% next unless @addresses;
+ <ul>
+% for my $addr (@addresses) {
+ <li>
+% my $checked = 1;
+% $m->callback(CallbackName => 'BeforeAddress', Ticket => $TicketObj, Address => $addr, Type => $type, Checked => \$checked);
+% $recips{$addr->address}++;
+ <b><%loc($type)%></b>: <input type="checkbox" class="checkbox" name="TxnSendMailTo" <% $checked ? 'checked="checked"' : '' |n%> value="<%$addr->address%>" id="TxnSendMailTo-<% $addr->address %>-<% $recips{$addr->address} %>" />
+ <label for="TxnSendMailTo-<% $addr->address %>-<% $recips{$addr->address} %>"><& /Elements/ShowUser, Address => $addr &></label>
+% $m->callback(CallbackName => 'AfterAddress', Ticket => $TicketObj, Address => $addr, Type => $type);
+ </li>
+% }
+ </ul>
+% }
+% if (RT->Config->Get('PreviewScripMessages')) {
+ <textarea cols="80" rows="5"><%$scrip->ActionObj->TemplateObj->MIMEObj->as_string%></textarea>
+% }
+ <br />
+% }
% }
-% if ( $Object and $Object->Rules ) {
-% for my $rule (@{$Object->Rules}) {
-% next unless $rule->{hints} && $rule->{hints}{class} eq 'SendEmail';
-<b><% $rule->Describe %></b>
-% my $data = $rule->{hints}{recipients};
-% foreach my $type (qw(To Cc Bcc)) {
-<ul>
-% foreach my $address (@{$data->{$type}}) {
-<li>
- <b><%loc($type)%></b>: <input type="checkbox" class="checkbox" name="Ticket-<%$TicketObj->id%>-SquelchMailTo" value="<%$address%>" /> <%$address%>
-
-% $m->callback(CallbackName => 'AfterAddress', Ticket => $TicketObj, Address => Email::Address->parse($address), Type => $type);
-</li>
-% }
-</ul>
-
-% }
-% }
-% }
-<br />
-
-<h2><&|/l&>Messages about this ticket will not be sent to...</&></h2>
-<i><&|/l&>(Check boxes to enable notifications to the listed recipients)</&></i>
-<br />
-<ul>
-% foreach my $recipient (@non_recipients) {
-<li><input type="checkbox" class="checkbox" name="Ticket-<%$TicketObj->id%>-UnsquelchMailTo" value="<%$recipient->Content%>" />
-<% $recipient->Content %>
+% if ( $Object->Rules ) {
+% for my $rule (@{$Object->Rules}) {
+% next unless $rule->{hints} && $rule->{hints}{class} eq 'SendEmail';
+ <b><% $rule->Describe %></b>
+% my $data = $rule->{hints}{recipients};
+% for my $type (qw(To Cc Bcc)) {
+% next unless @{$data->{$type}};
+ <ul>
+% for my $address (@{$data->{$type}}) {
+ <li>
+% my $checked = 1;
+% $m->callback(CallbackName => 'BeforeAddress', Ticket => $TicketObj, Address => Email::Address->parse($address), Type => $type, Checked => \$checked);
+% $recips{$address}++;
+ <b><%loc($type)%></b>: <input type="checkbox" class="checkbox" name="TxnSendMailTo" <% $checked ? 'checked="checked"' : '' |n%> value="<%$address%>" id="TxnSendMailTo-<% $address %>-<% $recips{$address} %>" />
+ <label for="TxnSendMailTo-<% $address %>-<% $recips{$address} %>"><%$address%></label>
+% $m->callback(CallbackName => 'AfterAddress', Ticket => $TicketObj, Address => Email::Address->parse($address), Type => $type);
+ </li>
+% }
+ </ul>
+% }
+ <br />
+% }
% }
-</ul>
-<& /Elements/Submit, Name => 'UpdatePreview', Value => 'UpdatePreview', Label => loc('Save Changes')&>
-
-<%METHOD SquelchRecipients>
-<%ARGS>
-$TicketObj => undef
-</%ARGS>
-<%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]);
-</%INIT>
-</%METHOD>
-
-<%METHOD GetRecipients>
-<%ARGS>
-$TicketObj
-</%ARGS>
-<%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;
-</%INIT>
-</%METHOD>
-
-<%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');
- foreach my $type (qw(To Cc Bcc)) {
- push @recipients, $action->$type();
- }
-}
-return @recipients;
-</%INIT>
-</%METHOD>
+% $m->notes("DryRun-Recipients-".$TicketObj->Id, \%recips);