Use CollectionPage's per-item action methods. Also make sure the actions report all failures.
Signed-off-by: Francois Gouget fgouget@codeweavers.com --- testbot/web/admin/UsersList.pl | 37 +++++++++++----------------------- 1 file changed, 12 insertions(+), 25 deletions(-)
diff --git a/testbot/web/admin/UsersList.pl b/testbot/web/admin/UsersList.pl index 2799070413..3621702a4b 100644 --- a/testbot/web/admin/UsersList.pl +++ b/testbot/web/admin/UsersList.pl @@ -102,43 +102,30 @@ sub GenerateDataCell($$$$$) } }
-sub GetActions($$) +sub GetItemActions($$) { my ($self, $CollectionBlock) = @_;
- if (defined($LDAPServer)) - { - # LDAP accounts cannot be deleted - return []; - } - - return $self->SUPER::GetActions($CollectionBlock); + # LDAP accounts cannot be deleted + return defined $LDAPServer ? [] : ["Delete"]; }
-sub OnAction($$$) +sub OnItemAction($$$$) { - my ($self, $CollectionBlock, $Action) = @_; + my ($self, $CollectionBlock, $Item, $Action) = @_;
if ($Action eq "Delete") { - foreach my $UserName (@{$self->{Collection}->GetKeys()}) - { - next if (!defined $self->GetParam($CollectionBlock->SelName($UserName))); - my $User = $self->{Collection}->GetItem($UserName); - $User->Status('deleted'); - my ($ErrProperty, $ErrMessage) = $User->Save(); - if (defined $ErrMessage) - { - $self->{ErrMessage} = $ErrMessage; - return !1; - } - # Forcefully log out that user by deleting his web sessions - DeleteSessions($User); - } + $Item->Status('deleted'); + (my $ErrProperty, $self->{ErrMessage}) = $Item->Save(); + return 0 if (defined $self->{ErrMessage}); + + # Forcefully log out that user by deleting the web sessions + DeleteSessions($Item); return 1; }
- return $self->SUPER::OnAction($CollectionBlock, $Action); + return $self->SUPER::OnItemAction($CollectionBlock, $Item, $Action); }