diff options
author | Ivan Kohler <ivan@freeside.biz> | 2012-06-07 00:56:06 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2012-06-07 00:56:06 -0700 |
commit | 43a06151e47d2c59b833cbd8c26d97865ee850b6 (patch) | |
tree | 42c51d94e7fa265461b508d061562be204ccc2c1 /rt/share/html/Ticket/Elements/PreviewScrips | |
parent | 6587f6ba7d047ddc1686c080090afe7d53365bd4 (diff) |
starting to work...
Diffstat (limited to 'rt/share/html/Ticket/Elements/PreviewScrips')
-rwxr-xr-x | rt/share/html/Ticket/Elements/PreviewScrips | 268 |
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); |