& /Elements/Header, Title => $title &> <& /Elements/Tabs &> <& /Elements/ListActions, actions => \@results &>
<%INIT> my @results; my $QueueObj = RT::Queue->new($session{'CurrentUser'}); $QueueObj->Load($id) || Abort(loc("Couldn't load queue", $id)); my $title = loc('Automatic Assignment for queue [_1]', $QueueObj->Name); my @filters = RT->Config->Get('AutomaticAssignmentFilters'); my @choosers = RT->Config->Get('AutomaticAssignmentChoosers'); if ($Update) { my %queue_config; for my $filter_prefix (split /,/, $Filters) { my @config_keys = grep { s/^\Q$filter_prefix\E_// ? $_ : () } keys %ARGS; my %args = map { $_ => $ARGS{"${filter_prefix}_$_"} } @config_keys; my $name = delete $args{ClassName}; next unless grep { $_ eq $name } RT->Config->Get('AutomaticAssignmentFilters'); my $class = "RT::Extension::AutomaticAssignment::Filter::$name"; unless ($class->require) { RT->Logger->error("Couldn't load class '$class': $@"); $m->abort; } my $config = $class->CanonicalizeConfig(\%args); $config->{_name} = $name; push @{ $queue_config{filters} }, $config; } { my @config_keys = grep { s/^\Q$Chooser\E_// ? $_ : () } keys %ARGS; my %args = map { $_ => $ARGS{"${Chooser}_$_"} } @config_keys; my $name = delete $args{ClassName}; next unless grep { $_ eq $name } RT->Config->Get('AutomaticAssignmentChoosers'); my $class = "RT::Extension::AutomaticAssignment::Chooser::$name"; unless ($class->require) { RT->Logger->error("Couldn't load class '$class': $@"); $m->abort; } my $config = $class->CanonicalizeConfig(\%args); $config->{_name} = $name; $queue_config{chooser} = $config; } my ($ok, $msg) = $QueueObj->SetAttribute( Name => 'AutomaticAssignment', Content => \%queue_config, ); if ($ok) { push @results, 'Automatic assignment updated'; } else { push @results, $msg; } } my $attr = $QueueObj->FirstAttribute('AutomaticAssignment'); my $config = $attr ? $attr->Content : { filters => [], chooser => { _name => $choosers[0] }, }; my $scrips = RT::Scrips->new($session{'CurrentUser'}); $scrips->LimitToQueue($id); $scrips->LimitToGlobal; my $scripactions = $scrips->Join( ALIAS1 => 'main', FIELD1 => 'ScripAction', TABLE2 => 'ScripActions', FIELD2 => 'id', ); $scrips->Limit( ALIAS => $scripactions, FIELD => 'ExecModule', OPERATOR => 'IN', VALUE => ['AutomaticAssignment', 'AutomaticReassignment'],, ); if ($scrips->Count == 0) { push @results, "No scrips for automatic assignment are applied to this queue. Please see the AutomaticAssignment documentation for setup instructions."; } %INIT> <%ARGS> $id => undef $Update => undef $Filters => undef $Chooser => undef %ARGS>