[Rt-commit] rt branch, 4.4/admin-group-members-paging, created. rt-4.4.4-448-g48d10b0803
? sunnavy
sunnavy at bestpractical.com
Tue May 18 18:18:48 EDT 2021
The branch, 4.4/admin-group-members-paging has been created
at 48d10b0803a8e7cf645565c0a470755d8c3f928e (commit)
- Log -----------------------------------------------------------------
commit 48d10b0803a8e7cf645565c0a470755d8c3f928e
Author: sunnavy <sunnavy at bestpractical.com>
Date: Fri Feb 5 05:12:07 2021 +0800
Add paging support for group Members page
To support paging efficiently, we need to sort users/groups at database
level, thus the special "Format" order of users is dropped.
diff --git a/share/html/Admin/Groups/Members.html b/share/html/Admin/Groups/Members.html
index 806eee1a48..53e3358f30 100644
--- a/share/html/Admin/Groups/Members.html
+++ b/share/html/Admin/Groups/Members.html
@@ -54,6 +54,8 @@
<form action="<% RT->Config->Get('WebPath') %>/Admin/Groups/Members.html" method="post">
<input type="hidden" class="hidden" name="id" value="<%$Group->Id%>" />
+<input type="hidden" class="hidden" name="Rows" value="<% $Rows %>" />
+<input type="hidden" class="hidden" name="Page" value="<% $Page %>" />
% $m->callback(CallbackName => 'BeforeEditMembership', %ARGS, Actions => \@results, ARGSRef => \%ARGS, Group => $Group);
@@ -77,14 +79,10 @@
% } else {
<&|/l&>Users</&>
% my $Users = $Group->UserMembersObj( Recursively => 0 );
-<%perl>
-my @users = map {$_->[1]}
- sort { lc($a->[0]) cmp lc($b->[0]) }
- map { [$_->Format, $_] }
- @{ $Users->ItemsArrayRef };
-</%perl>
+% $Users->RowsPerPage($Rows);
+% $Users->GotoPage($Page - 1);
<ul>
-% for my $user (@users) {
+% while ( my $user = $Users->Next ) {
% $UsersSeen{ $user->id } = 1 if $SkipSeenUsers;
<li><input type="checkbox" class="checkbox" name="DeleteMember-<% $user->PrincipalObj->Id %>" value="1" />
<& /Elements/ShowUser, User => $user &></li>
@@ -92,12 +90,13 @@ my @users = map {$_->[1]}
</ul>
<&|/l&>Groups</&>
<ul>
-% my $GroupMembers = $Group->MembersObj;
-% $GroupMembers->LimitToGroups();
-% while ( my $member = $GroupMembers->Next ) {
-% $GroupsSeen{ $member->MemberId } = 1 if $SkipSeenGroups;
-<li><input type="checkbox" class="checkbox" name="DeleteMember-<% $member->MemberId %>" value="1" />
-<a href="<% RT->Config->Get('WebPath') %>/Admin/Groups/Modify.html?id=<% $member->MemberObj->Object->id %>"><% $member->MemberObj->Object->Name %></a>
+% my $Groups = $Group->GroupMembersObj( Recursively => 0 );
+% $Groups->RowsPerPage($Rows);
+% $Groups->GotoPage($Page - 1);
+% while ( my $group = $Groups->Next ) {
+% $GroupsSeen{ $group->id } = 1 if $SkipSeenGroups;
+<li><input type="checkbox" class="checkbox" name="DeleteMember-<% $group->id %>" value="1" />
+<a href="<% RT->Config->Get('WebPath') %>/Admin/Groups/Modify.html?id=<% $group->id %>"><% $group->Name %></a>
% }
</ul>
% }
@@ -108,6 +107,18 @@ my @users = map {$_->[1]}
</td>
</tr>
</table>
+
+% if ( $Pages ) {
+ <& /Elements/CollectionListPaging,
+ BaseURL => '?',
+ Rows => $Rows,
+ TotalFound => $TotalFound,
+ CurrentPage => $Page,
+ Pages => $Pages,
+ URLParams => { map { $_ => $ARGS{$_} } qw/id Rows Page/ },
+ &>
+% }
+
</&>
<em><&|/l&>(Check box to delete)</&></em>
<& /Elements/Submit, Label => loc('Modify Members'), Reset => 1 &>
@@ -189,6 +200,23 @@ foreach my $member (grep $_, @AddMembersGroups) {
my ($val, $msg) = $Group->AddMember($principal->PrincipalId);
push (@results, $msg);
}
+
+$Rows ||= 50;
+$Page ||= 1;
+my $TotalFound = $Group->UserMembersObj( Recursively => 0 )->Count;
+if ( my $group_count = $Group->GroupMembersObj( Recursively => 0 )->Count ) {
+ $TotalFound = $group_count if $TotalFound < $group_count;
+}
+
+my $Pages;
+if ( $TotalFound && $TotalFound > $Rows ) {
+ $Pages = int( $TotalFound / $Rows ) + ( $TotalFound % $Rows ? 1 : 0 );
+ # This could happen if admin deletes records on the last page.
+ $Page = $Pages if $Page > $Pages;
+}
+else {
+ $Page = 1;
+}
</%INIT>
<%ARGS>
@@ -197,4 +225,6 @@ foreach my $member (grep $_, @AddMembersGroups) {
$id => undef
$SkipSeenUsers => 1
$SkipSeenGroups => 1
+$Rows => RT->Config->Get('AdminSearchResultRows')->{Users}
+$Page => 1
</%ARGS>
-----------------------------------------------------------------------
More information about the rt-commit
mailing list