<%args>
$Ticket
@ExcludeCustomFields => ()
</%args>
<%init>
my ($core, $cfs, $roles) = RT::Extension::MandatoryOnTransition->RequiredFields(
    Ticket  => $Ticket,
    To      => $ARGS{'Status'} || $ARGS{'DefaultStatus'},
);

my %exclude_cfs = map { $_ => 1 } @ExcludeCustomFields;
@$cfs = grep { !$exclude_cfs{$_} } @$cfs;

return unless @$cfs or @$roles;

my $comp = '/Elements/EditCustomFields';
my %obj_args = ( Object => $Ticket );

# Handle location in 4.0 and 4.2
if (!$m->comp_exists('/Elements/EditCustomFields')) {
    $comp = '/Ticket/Elements/EditCustomFields';
    %obj_args = ( TicketObj => $Ticket );
}

my @roles;
foreach my $role (@{$roles}) {
    next if $role eq 'Owner';

    if ( $role =~ s/^CustomRole\.//i ) {
        my $role_object = RT::CustomRole->new($session{CurrentUser});
        my ($ret, $msg) = $role_object->Load($role);
        unless ( $ret ) {
            RT::Logger->error("Unable to load custom role $role: $msg");
            next;
        }

        # Update page already contains single member role groups
        next if $role_object->SingleValue;

        push @roles, $role_object;
    } else {
        # Handle core roles like Requestor, Cc, AdminCc
        my $role_group = RT::Group->new($session{CurrentUser});
        my ($ret, $msg) = $role_group->LoadRoleGroup(Object => $Ticket, Name => $role);
        if ( $ret ) {
            push @roles, $role_group;
        }
        else {
            RT::Logger->error("Unable to load role $role: $msg");
        }
    }
}
</%init>
%# 'Named' is handled by this extension in the MassageCustomFields callback
% if ( @$cfs ) {
    <& $comp,
        %ARGS,
        %obj_args,
        InTable     => 1,
        Named       => $cfs,
        &>
% }
% if ( @$roles ) {
%     foreach my $role (@roles) {
%       my $input = 'Add' . ( $role->isa('RT::Group') ? $role->Name : $role->GroupType );
        <tr>
            <td class="label"><&|/l, loc($role->Name) &>Add [_1]</&>:</td>
            <td class="entry">
                <& /Elements/EmailInput,
                    Name               => $input,
                    Autocomplete       => 1,
                    AutocompleteNobody => 0,
                    AutocompleteReturn => "Email",
                    Size               => 20,
                    Default            => $ARGS{$input},
                &>
            </td>
        </tr>
%     }
% }
