CheckTransactionFlags: New Condition.
This commit is contained in:
parent
8514ae62d5
commit
8216ff4071
3 changed files with 64 additions and 1 deletions
28
etc/upgrade/0.6/content
Normal file
28
etc/upgrade/0.6/content
Normal file
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env perl
|
||||
|
||||
@ScripConditions = (
|
||||
{ Name => 'On Create Inbound',
|
||||
Description => 'When a ticket is created by its requestor',
|
||||
ApplicableTransTypes => 'Create',
|
||||
ExecModule => 'CheckTransactionFlags',
|
||||
Argument => 'IsInbound',
|
||||
},
|
||||
{ Name => 'On Create Not Inbound',
|
||||
Description => 'When a ticket is created for the requestor by someone else',
|
||||
ApplicableTransTypes => 'Create',
|
||||
ExecModule => 'CheckTransactionFlags',
|
||||
Argument => '!IsInbound',
|
||||
},
|
||||
{ Name => 'On Create Not Inbound With Content',
|
||||
Description => 'When a ticket with content is created for the requestor by someone else',
|
||||
ApplicableTransTypes => 'Create',
|
||||
ExecModule => 'CheckTransactionFlags',
|
||||
Argument => '!IsInbound HasContent',
|
||||
},
|
||||
{ Name => 'On Create Not Inbound Without Content',
|
||||
Description => 'When an empty ticket is created for the requestor by someone else',
|
||||
ApplicableTransTypes => 'Create',
|
||||
ExecModule => 'CheckTransactionFlags',
|
||||
Argument => '!IsInbound !HasContent',
|
||||
},
|
||||
);
|
29
lib/RT/Condition/CheckTransactionFlags.pm
Normal file
29
lib/RT/Condition/CheckTransactionFlags.pm
Normal file
|
@ -0,0 +1,29 @@
|
|||
package RT::Condition::CheckTransactionFlags;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use base qw(RT::Condition);
|
||||
|
||||
sub IsApplicable {
|
||||
my $self = shift;
|
||||
my $txn = $self->TransactionObj;
|
||||
my @flags = split(" ", $self->Argument || "");
|
||||
foreach my $flag (@flags) {
|
||||
unless ($flag =~ /^(!?)(\w+)$/) {
|
||||
$RT::Logger->Error("Argument '$flag' is malformed");
|
||||
return 0;
|
||||
}
|
||||
my $method = $txn->can($2);
|
||||
unless (defined($method)) {
|
||||
$RT::Logger->Error("Argument '$flag' refers to nonexistent transaction method");
|
||||
return 0;
|
||||
}
|
||||
return 0 unless (!!$txn->$method == !$1);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
RT::Base->_ImportOverlays();
|
||||
|
||||
1;
|
|
@ -2,7 +2,7 @@ use strict;
|
|||
use warnings;
|
||||
package RT::Extension::Conservancy;
|
||||
|
||||
our $VERSION = '0.5';
|
||||
our $VERSION = '0.6';
|
||||
|
||||
=pod
|
||||
|
||||
|
@ -22,6 +22,12 @@ this is different from the built-in "Notify Owner or AdminCCs".
|
|||
|
||||
A variant of the above to send notice from the comment address.
|
||||
|
||||
=head3 RT::Condition::CheckTransactionFlags
|
||||
|
||||
A Scrip condition that calls configured boolean methods on the transaction
|
||||
object and passes or fails depending on whether they match the configured
|
||||
state.
|
||||
|
||||
=head3 RT::Condition::StatusChangeWithDependents
|
||||
|
||||
A Scrip condition that extends RT::Condition::StatusChange. The affected
|
||||
|
|
Loading…
Reference in a new issue