
sunnavy at bestpractical
Mar 12, 2012, 12:35 PM
Views: 130
Permalink
|
|
rt branch, 4.0/email-action-avoid-hardcoded-resolved-status, created. rt-4.0.5-81-ga6d1f59
|
|
The branch, 4.0/email-action-avoid-hardcoded-resolved-status has been created at a6d1f5900ef00d22b353ad3baa14a4791f3673a1 (commit) - Log ----------------------------------------------------------------- commit a6d1f5900ef00d22b353ad3baa14a4791f3673a1 Author: sunnavy <sunnavy [at] bestpractical> Date: Tue Mar 13 03:04:44 2012 +0800 add RT::Ticket::FirstInactiveStatus to avoid hardcoded "resolved" status in email interface diff --git a/lib/RT/Interface/Email.pm b/lib/RT/Interface/Email.pm index 909a9f4..9fe3768 100644 --- a/lib/RT/Interface/Email.pm +++ b/lib/RT/Interface/Email.pm @@ -1684,17 +1684,20 @@ sub _RunUnsafeAction { return ( 0, "Ticket not taken" ); } } elsif ( $args{'Action'} =~ /^resolve$/i ) { - my ( $status, $msg ) = $args{'Ticket'}->SetStatus('resolved'); - unless ($status) { + my $new_status = $args{'Ticket'}->FirstInactiveStatus; + if ($new_status) { + my ( $status, $msg ) = $args{'Ticket'}->SetStatus($new_status); + unless ($status) { - #Warn the sender that we couldn't actually submit the comment. - MailError( - To => $args{'ErrorsTo'}, - Subject => "Ticket not resolved", - Explanation => $msg, - MIMEObj => $args{'Message'} - ); - return ( 0, "Ticket not resolved" ); + #Warn the sender that we couldn't actually submit the comment. + MailError( + To => $args{'ErrorsTo'}, + Subject => "Ticket not resolved", + Explanation => $msg, + MIMEObj => $args{'Message'} + ); + return ( 0, "Ticket not resolved" ); + } } } else { return ( 0, "Not supported unsafe action $args{'Action'}", $args{'Ticket'} ); diff --git a/lib/RT/Ticket.pm b/lib/RT/Ticket.pm index 3f2e94c..cbf81ca 100644 --- a/lib/RT/Ticket.pm +++ b/lib/RT/Ticket.pm @@ -1910,6 +1910,31 @@ sub FirstActiveStatus { return $next; } +=head2 FirstInactiveStatus + +Returns the first inactive status that the ticket could transition to, +according to its current Queue's lifecycle. May return undef if there +is no such possible status to transition to, or we are already in it. +This is used in resolve action in UnsafeEmailCommands, for instance. + +=cut + +sub FirstInactiveStatus { + my $self = shift; + + my $lifecycle = $self->QueueObj->Lifecycle; + my $status = $self->Status; + my @inactive = $lifecycle->Inactive; + # no change if no inactive statuses in the lifecycle + return undef unless @inactive; + + # no change if the ticket is already has first status from the list of inactive + return undef if lc $status eq lc $inactive[0]; + + my ($next) = grep $lifecycle->IsInactive($_), $lifecycle->Transitions($status); + return $next; +} + =head2 SetStarted Takes a date in ISO format or undef ----------------------------------------------------------------------- _______________________________________________ Rt-commit mailing list Rt-commit [at] lists http://lists.bestpractical.com/cgi-bin/mailman/listinfo/rt-commit
|