changeset 547:ccba16f72354

Added pagination
author xi
date Fri, 30 Jun 2006 22:38:00 +1000
parents 82f9cc69709e
children 79b94f047b30
files contrib/web/perl-admin/htdocs/subscribers.cgi contrib/web/perl-admin/templates/subscribers.html
diffstat 2 files changed, 32 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/contrib/web/perl-admin/htdocs/subscribers.cgi	Fri Jun 30 19:50:52 2006 +1000
+++ b/contrib/web/perl-admin/htdocs/subscribers.cgi	Fri Jun 30 22:38:00 2006 +1000
@@ -134,8 +134,32 @@
 
 $subscribers = get_subscribers();
 
+my $paginator = '';
+my $page = $q->param('page');
+$page = 0 unless $page =~ /^\d+$/;
+if (keys %$subscribers > 50) {
+	$paginator = 'Pages: ';
+	my $pages = (keys %$subscribers) / 50;
+	$page = 0 unless ($page >= 0 && $page < $pages);
+	my $searchstr = defined $search ? '&search='.uri_escape($search) : '';
+
+	for (my $i = 0; $ i < $pages; ++$i) {
+		if ($page == $i) {
+			$paginator .= ($i + 1)."&nbsp;";
+		} else {
+			$paginator .= "<a href=\"?list=".uri_escape($list)."&page=$i$searchstr\">".($i + 1)."</a>&nbsp;";
+		}
+	}
+}
+
 my $i = 0;
-for my $address (sort {lc $a cmp lc $b} keys %$subscribers) {
+my @addresses = sort {lc $a cmp lc $b} keys %$subscribers;
+if ($paginator ne '') {
+	@addresses = @addresses[$page * 50 .. ($page + 1) * 50 - 1];
+	pop @addresses until defined $addresses[@addresses - 1];
+}
+
+for my $address (@addresses) {
 	$tpl->assign(EMAIL => $address,
 				 ID => $i++,
 				 SCHECKED => $subscribers->{$address}->{subscriber} ? 'checked' : '',
@@ -148,8 +172,10 @@
 }
 
 $tpl->assign(LIST => encode_entities($list),
-			 MAXID => scalar(keys %$subscribers),
-			 SEARCH => defined $search ? $search : '');
+			 MAXID => scalar(@addresses),
+			 SEARCH => defined $search ? $search : '',
+			 PAGINATOR => $paginator,
+			 PAGE => $page);
 
 print "Content-type: text/html\n\n";
 
--- a/contrib/web/perl-admin/templates/subscribers.html	Fri Jun 30 19:50:52 2006 +1000
+++ b/contrib/web/perl-admin/templates/subscribers.html	Fri Jun 30 22:38:00 2006 +1000
@@ -9,6 +9,7 @@
 <form action="subscribers.cgi" method="post">
 <input type="hidden" name="list" value="$LIST">
 <input type="hidden" name="maxid" value="$MAXID">
+<input type="hidden" name="page" value="$PAGE">
 <table><tr><td rowspan="5" valign="top">Add subscriber:&nbsp;&nbsp;</td>
 <td>Email address: <input type="text" name="email"></td></tr>
 <tr><td>Normal subscriber: <input type="checkbox" name="subscriber" value="1" checked></td></tr>
@@ -21,10 +22,12 @@
 <tr><td><input type="submit" name="searchsubmit" value="Search"></td></tr>
 </table>
 <hr>
+$PAGINATOR
 <table border="1">
 <tr><th>Email address</th><th>Normal subscriber</th><th>Digest subscriber</th><th>No-mail subscriber</th></tr>
 $ROWS
 </table>
+$PAGINATOR
 <p><input type="submit" name="update" value="Update subscriptions"></p>
 </form>
 </body></html>