<& /Admin/Elements/Header, Title => $title &> <& /Elements/Tabs &> <& /Elements/ListActions, actions => \@results &>
% for my $Other (@lifecycles) { % my $FromMapping = $Other->MoveMap($LifecycleObj); % my $ToMapping = $LifecycleObj->MoveMap($Other); % my @OtherStatuses = $Other->Valid; <&| /Widgets/TitleBox, title => $Other->Name &>

<&|/l, $Other->Name, $LifecycleObj->Name &>Changing from [_1] to [_2]:

% for my $OtherStatus (@OtherStatuses) { % }
<% $OtherStatus %>: <& /Elements/SelectStatus, Statuses => \@MyStatuses, Default => $FromMapping->{$OtherStatus}, Name => 'map-' . $Other->Name . '-' . $OtherStatus . '--' . $LifecycleObj->Name&>

<&|/l, $LifecycleObj->Name, $Other->Name &>Changing from [_1] to [_2]:

% for my $MyStatus (@MyStatuses) { % }
<% $MyStatus %>: <& /Elements/SelectStatus, Statuses => \@OtherStatuses, Default => $ToMapping->{$MyStatus}, Name => 'map-' . $LifecycleObj->Name . '-' . $MyStatus . '--' . $Other->Name &>
% } <& /Elements/Submit, Name => 'Update', Label => loc('Save Changes') &>
<%INIT> my ($title, @results); my $LifecycleObj = RT::Lifecycle->new(); $LifecycleObj->Load(Name => $Name, Type => $Type); Abort("Invalid lifecycle") unless $LifecycleObj->Name && $LifecycleObj->{data}{type} eq $Type; my @MyStatuses = $LifecycleObj->Valid; $title = loc("Lifecycle [_1] Mappings", $LifecycleObj->Name); # This code does automatic redirection if any updates happen. MaybeRedirectForResults( Actions => \@results, Arguments => { Name => $LifecycleObj->Name, Type => $LifecycleObj->Type }, ); my @lifecycle_names = grep { $_ ne 'approvals' } RT::Lifecycle->ListAll($Type); if ($Update) { my %maps; my $lifecycle_re = join '|', map { quotemeta($_) } @lifecycle_names; for my $key (keys %ARGS) { my ($from_lifecycle, $from_status, $to_lifecycle) = $key =~ /^map-($lifecycle_re)-(.*)--($lifecycle_re)$/ or next; if (my $to_status = $ARGS{$key}) { $maps{"$from_lifecycle -> $to_lifecycle"}{$from_status} = $to_status; } } my ($ok, $msg) = RT::Extension::LifecycleUI->UpdateMaps( CurrentUser => $session{CurrentUser}, Maps => \%maps, ); push @results, $msg; } my @lifecycles = map { RT::Lifecycle->Load(Name => $_, Type => $Type) } sort { loc($a) cmp loc($b) } grep { $_ ne $Name } @lifecycle_names; <%ARGS> $Name => undef $Type => undef $Update => undef