StatusChangeWithDependents: Initial condition.
This commit is contained in:
parent
83243abf2c
commit
3f58ff316d
3 changed files with 69 additions and 1 deletions
28
etc/upgrade/0.3/content
Normal file
28
etc/upgrade/0.3/content
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/usr/bin/env perl
|
||||||
|
|
||||||
|
@ScripConditions = (
|
||||||
|
{ Name => 'On Close With Dependents',
|
||||||
|
Description => 'Whenever a ticket is closed and other tickets depend on it',
|
||||||
|
ApplicableTransTypes => 'Status',
|
||||||
|
ExecModule => 'StatusChangeWithDependents',
|
||||||
|
Argument => 'dependents > 0; old: initial, active; new: inactive',
|
||||||
|
},
|
||||||
|
{ Name => 'On Close Without Dependents',
|
||||||
|
Description => 'Whenever a ticket is closed and no other tickets depend on it',
|
||||||
|
ApplicableTransTypes => 'Status',
|
||||||
|
ExecModule => 'StatusChangeWithDependents',
|
||||||
|
Argument => 'dependents == 0; old: initial, active; new: inactive',
|
||||||
|
},
|
||||||
|
{ Name => 'On Approved With Dependents',
|
||||||
|
Description => 'Whenever a ticket is an approval and other tickets depend on it',
|
||||||
|
ApplicableTransTypes => 'Status',
|
||||||
|
ExecModule => 'StatusChangeWithDependents',
|
||||||
|
Argument => 'dependents > 0; new: approved',
|
||||||
|
},
|
||||||
|
{ Name => 'On Approved Without Dependents',
|
||||||
|
Description => 'Whenever a ticket is an approval and no other tickets depend on it',
|
||||||
|
ApplicableTransTypes => 'Status',
|
||||||
|
ExecModule => 'StatusChangeWithDependents',
|
||||||
|
Argument => 'dependents == 0; new: approved',
|
||||||
|
},
|
||||||
|
);
|
34
lib/RT/Condition/StatusChangeWithDependents.pm
Normal file
34
lib/RT/Condition/StatusChangeWithDependents.pm
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
package RT::Condition::StatusChangeWithDependents;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
use base qw(RT::Condition::StatusChange);
|
||||||
|
|
||||||
|
sub Argument {
|
||||||
|
# Take the dependents setting out of the argument, so StatusChange gets
|
||||||
|
# everything else.
|
||||||
|
my $self = shift;
|
||||||
|
$self->SUPER::Argument =~ s/^\s*dependents\s*(<|>|[=!<>]=)\s*(\d+)\s*;?//r;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub IsApplicable {
|
||||||
|
my $self = shift;
|
||||||
|
my $argument = $self->SUPER::Argument;
|
||||||
|
my ($op, $operand);
|
||||||
|
if ($argument =~ /^\s*dependents\s*(<|>|[=!<>]=)\s*(\d+)\s*;?/) {
|
||||||
|
$op = $1;
|
||||||
|
$operand = $2;
|
||||||
|
} else {
|
||||||
|
$RT::Logger->error("Argument '$argument' is incorrect");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 0 unless $self->SUPER::IsApplicable;
|
||||||
|
my $dep_count = $self->TicketObj->DependedOnBy->Count;
|
||||||
|
return 0 unless (eval "\$dep_count $op $operand;");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
RT::Base->_ImportOverlays();
|
||||||
|
|
||||||
|
1;
|
|
@ -2,7 +2,7 @@ use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
package RT::Extension::Conservancy;
|
package RT::Extension::Conservancy;
|
||||||
|
|
||||||
our $VERSION = '0.2';
|
our $VERSION = '0.3';
|
||||||
|
|
||||||
=pod
|
=pod
|
||||||
|
|
||||||
|
@ -18,6 +18,12 @@ A Scrip action that sends notice to the ticket owner if that's set, or queue
|
||||||
AdminCCs if not. Ticket AdminCCs always get the notice too, which is how
|
AdminCCs if not. Ticket AdminCCs always get the notice too, which is how
|
||||||
this is different from the built-in "Notify Owner or AdminCCs".
|
this is different from the built-in "Notify Owner or AdminCCs".
|
||||||
|
|
||||||
|
=head3 RT::Condition::StatusChangeWithDependents
|
||||||
|
|
||||||
|
A Scrip condition that extends RT::Condition::StatusChange. The affected
|
||||||
|
ticket must have a configured number of other tickets that Depend On it for
|
||||||
|
this condition to be true.
|
||||||
|
|
||||||
=head3 RT::Interface::Email::OneTicketPerRequestor
|
=head3 RT::Interface::Email::OneTicketPerRequestor
|
||||||
|
|
||||||
A mail plugin that examines incoming mail to see if it would create a new
|
A mail plugin that examines incoming mail to see if it would create a new
|
||||||
|
|
Loading…
Reference in a new issue