From 7bb6dca83f4e300eaedc11f5e442756149b8b8c6 Mon Sep 17 00:00:00 2001 From: shuki Date: Wed, 4 Mar 2026 05:55:43 +0200 Subject: [PATCH] Add pagination to logs table (25 per page) Co-Authored-By: Claude Opus 4.6 --- whm/gniza-whm/logs.cgi | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) 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{\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
FilenameTypeDateSize
\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(); }