%# It is the business of the future to be dangerous. %# -- Hawkwind <& /Edit/Elements/PopHeader, Title => loc('Edit Subgroups') &>
<& /Edit/Elements/ListButtons &>
<&|/l&>Current Groups:
  <&|/l&>Create Subgroup:
<& /Edit/Elements/PopFooter &> <%INIT> my $List = $session{MemberList}; my $OffList = $session{MemberOffList}; my $Object = RT::Group->new($session{'CurrentUser'}); $Object->Load($Group); if (!$Continuation) { my %seen; my $Members = $Object->MembersObj || $RT::Nothing; $Members->LimitToGroups; $List = [ map { $_->MemberObj->Object } @{$Members->ItemsArrayRef} ] || []; $seen{$_->Id}++ for @$List; $OffList = []; my $Groups = RT::Groups->new($session{'CurrentUser'}); $Groups->LimitToUserDefinedGroups(); while (my $Group = $Groups->Next) { next if $Group->Description; next if $seen{$Group->Id}; next if $Group->Id eq $Object->Id; next if $Group->HasMemberRecursively($Object->PrincipalObj); push @$OffList, $Group; } } elsif ($Action eq 'Add') { @$OffList = grep { my $id = $_->Id; my $ok = (grep { $_ == $id } @Off); push @$List, $_ if $ok; !$ok; } @$OffList; } elsif ($Action eq 'AddAll') { push @$List, @$OffList; @$OffList = (); } elsif ($Action eq 'Delete') { @$List = grep { my $id = $_->Id; my $ok = (grep { $_ == $id } @On); push @$OffList, $_ if $ok; !$ok; } @$List; } elsif ($Action eq 'DeleteAll') { push @$OffList, @$List; @$List = (); } elsif ($Action eq 'Commit') { $Member ||= 0; foreach my $item (@$OffList) { $Object->DeleteMember( $item->PrincipalId ); } foreach my $item (@$List) { $Object->AddMember( $item->PrincipalId ); } $m->print(""); $m->abort; } @$OffList = ( map { $_->[0] } sort { $a->[1] cmp $b->[1] } map { [ $_ => $_->Name ] } @$OffList ); @$List = ( map { $_->[0] } sort { $a->[1] cmp $b->[1] } map { [ $_ => $_->Name ] } grep { $_->Name } @$List ); $session{MemberList} = $List; $session{MemberOffList} = $OffList; <%ARGS> $SubJob => '' $Show => '' $Queue => 0 $Group => 0 $Member => '' $Action => '' $Begin => 0 $ReadOnly => 0 $Continuation => 0 $Fixed => 0 @On => () @Off => ()