[Rt-commit] r5021 - in rtir/branches/1.9-EXPERIMENTAL: html/RTIR
html/RTIR/Elements lib/RT/Action lib/RT/Condition
ruz at bestpractical.com
ruz at bestpractical.com
Tue Apr 11 23:03:42 EDT 2006
Author: ruz
Date: Tue Apr 11 23:03:39 2006
New Revision: 5021
Modified:
rtir/branches/1.9-EXPERIMENTAL/ (props changed)
rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Elements/QueueTabs
rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Update.html
rtir/branches/1.9-EXPERIMENTAL/lib/RT/Action/RTIR_SetBlockState.pm
rtir/branches/1.9-EXPERIMENTAL/lib/RT/Condition/RTIR_RequireStateChange.pm
Log:
r1292 at cubic-pc: cubic | 2006-04-12 07:10:07 +0400
* Blocks workflow
** activate block only when requestor replies
** remove block when it's in 'pending removal' state and requestor replies
** 'Pending Removal' action tab
Modified: rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Elements/QueueTabs
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Elements/QueueTabs (original)
+++ rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Elements/QueueTabs Tue Apr 11 23:03:39 2006
@@ -224,6 +224,12 @@
};
}
}
+ if ( $Type eq 'Block' && $Ticket->FirstCustomFieldValue('_RTIR_State') eq 'active' ) {
+ $actions->{'Ab'} = {
+ path => "RTIR/Update.html?Action=Comment&DefaultStatus=stalled&id=$id",
+ title => loc('Pending Removal'),
+ };
+ }
}
if ( $can{'OwnTicket'} ) {
Modified: rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Update.html
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Update.html (original)
+++ rtir/branches/1.9-EXPERIMENTAL/html/RTIR/Update.html Tue Apr 11 23:03:39 2006
@@ -31,8 +31,10 @@
<form action="Update.html" name="TicketUpdate"
method="post" enctype="multipart/form-data">
<input type="hidden" name="QuoteTransaction" value="<% $ARGS{'QuoteTransaction'} || '' %>" />
-<input type="hidden" name="DefaultStatus" value="<% $DefaultStatus || '' %>" />
-<input type="hidden" name="Status" value="<% $DefaultStatus || '' %>" />
+% if ( $ARGS{'Status'} ) {
+<input type="hidden" name="DefaultStatus" value="<% $DefaultStatus %>" />
+<input type="hidden" name="Status" value="<% $DefaultStatus %>" />
+% }
<input type="hidden" name="Action" value="<% $Action || '' %>" />
<input type="hidden" name="TakeOrStealFirst" value="<% $ARGS{TakeOrStealFirst} || '' %>" />
% if ($Type eq 'Report' and $ARGS{'DefaultStatus'} eq 'rejected') {
@@ -115,7 +117,8 @@
$name = $Type;
}
-$DefaultStatus ||= $ARGS{'Status'} || $Ticket->Status;
+$DefaultStatus ||= $ARGS{'Status'} || '';
+$ARGS{'Status'} ||= $DefaultStatus; # XXX: we should get rid of the DefaultStatus
$DefaultStatus = 'open' if $DefaultStatus eq 'new';
if ( $DefaultStatus eq 'resolved' ) {
Modified: rtir/branches/1.9-EXPERIMENTAL/lib/RT/Action/RTIR_SetBlockState.pm
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/lib/RT/Action/RTIR_SetBlockState.pm (original)
+++ rtir/branches/1.9-EXPERIMENTAL/lib/RT/Action/RTIR_SetBlockState.pm Tue Apr 11 23:03:39 2006
@@ -59,12 +59,37 @@
my $self = shift;
my %state = (
new => 'pending activation',
- open => 'active',
+# open => 'active',
stalled => 'pending removal',
resolved => 'removed',
rejected => 'removed',
);
- return $state{ $self->TicketObj->Status } || '';
+ my $t = $self->TicketObj;
+ my $status = $t->Status;
+ return $state{ $status } if $state{ $status };
+
+ my $old_state = $t->FirstCustomFieldValue('_RTIR_State');
+
+ if ( $old_state eq 'pending activation' ) {
+ # switch to active state if it is reply from requestor(s)
+ my $txn = $self->TransactionObj;
+ return '' unless $txn->Type eq 'Correspond';
+ return '' unless $t->Requestors->HasMember( $txn->CreatorObj->PrincipalObj );
+ return 'active';
+ } elsif ( $old_state eq 'pending removal' ) {
+ # switch to removed state when requestor(s) replies
+ # but do it via changing status!
+ my $txn = $self->TransactionObj;
+ return '' unless $txn->Type eq 'Correspond';
+ return '' unless $t->Requestors->HasMember( $txn->CreatorObj->PrincipalObj );
+ my ($val, $msg) = $t->SetStatus( 'resolved' );
+ $RT::Logger->error("Couldn't change status: $msg") unless $val;
+ return '';
+ } elsif ( $status eq 'open' && $old_state eq 'removed' ) {
+ return 'active';
+ }
+
+ return '';
}
eval "require RT::Action::RTIR_SetBlockState_Vendor";
Modified: rtir/branches/1.9-EXPERIMENTAL/lib/RT/Condition/RTIR_RequireStateChange.pm
==============================================================================
--- rtir/branches/1.9-EXPERIMENTAL/lib/RT/Condition/RTIR_RequireStateChange.pm (original)
+++ rtir/branches/1.9-EXPERIMENTAL/lib/RT/Condition/RTIR_RequireStateChange.pm Tue Apr 11 23:03:39 2006
@@ -72,6 +72,8 @@
( $type =~ /^(Add|Delete)Link$/ and $field eq "MemberOf" ) or
( $type eq "Set" and $field eq "Queue" );
+ return 1 if $type eq 'Correspond' && $self->TicketObj->QueueObj->Name eq 'Blocks';
+
return 0;
}
More information about the Rt-commit
mailing list