diff --git a/whm/gniza-whm/logs.cgi b/whm/gniza-whm/logs.cgi
index a20acc6..47305fd 100755
--- a/whm/gniza-whm/logs.cgi
+++ b/whm/gniza-whm/logs.cgi
@@ -75,12 +75,24 @@ sub show_list {
return;
}
+ # Pagination
+ my $per_page = 25;
+ my $total = scalar @files;
+ my $page = int($form->{'page'} // 1);
+ $page = 1 if $page < 1;
+ my $total_pages = int(($total + $per_page - 1) / $per_page);
+ $page = $total_pages if $page > $total_pages;
+ my $start = ($page - 1) * $per_page;
+ my $end = $start + $per_page - 1;
+ $end = $#files if $end > $#files;
+ my @page_files = @files[$start .. $end];
+
print qq{
\n};
print qq{
\n};
print qq{| Filename | Type | Date | Size | |
\n};
print qq{\n};
- for my $f (@files) {
+ for my $f (@page_files) {
my $esc_name = GnizaWHM::UI::esc($f->{name});
my $badge = $f->{type} eq 'Cron' ? 'badge-neutral' : 'badge-info';
my $date = _format_time($f->{mtime});
@@ -97,6 +109,22 @@ sub show_list {
}
print qq{\n
\n
\n};
+
+ # Pagination controls
+ if ($total_pages > 1) {
+ print qq{\n};
+ if ($page > 1) {
+ my $prev = $page - 1;
+ print qq{ \n};
+ }
+ print qq{ Page $page of $total_pages ($total logs)\n};
+ if ($page < $total_pages) {
+ my $next = $page + 1;
+ print qq{ \n};
+ }
+ print qq{
\n};
+ }
+
print GnizaWHM::UI::page_footer();
}