fix bse.paged validation of page numbers
authorTony Cook <tony@develop-help.com>
Wed, 20 Aug 2014 01:11:13 +0000 (11:11 +1000)
committerTony Cook <tony@develop-help.com>
Wed, 20 Aug 2014 01:11:13 +0000 (11:11 +1000)
site/cgi-bin/modules/BSE/Variables.pm
t/060-generate/040-preload.t

index ba206caa1b61200d542e14fcda44408adb99a29e..4c1c0ee2991fa4f3455be6e887c429451846c4e6 100644 (file)
@@ -4,7 +4,7 @@ use Scalar::Util qw(blessed);
 use BSE::TB::Site;
 use BSE::Util::HTML;
 
-our $VERSION = "1.018";
+our $VERSION = "1.019";
 
 sub _base_variables {
   my ($self, %opts) = @_;
@@ -121,7 +121,7 @@ sub _paged {
   my $pp = $cgi->param($ppname) || $opts->{pp} || 20;
   my $pname = $opts->{pname} || "p";
   my $p = $cgi->param($pname) || 1;
-  $p =~ /\A[0-9]\z/ or $p = 1;
+  $p =~ /\A[0-9]+\z/ or $p = 1;
 
   my $pcount = @$list ? int((@$list + $pp - 1) / $pp) : 1;
 
index 39f325e0d1001144dc275e71ff292c069625938e..b2c7083a5066c90fee68db836745421d24535970 100644 (file)
@@ -19,11 +19,10 @@ bse_init(".");
 
 my $cfg = bse_cfg();
 
+my %params;
 my $r = BSE::Request::Test->new
   (
-   params =>
-   {
-   },
+   params => \%params,
   );
 
 my $t = BSE::Template->templater($cfg);
@@ -35,18 +34,21 @@ my $vars =
    ),
   };
 
+$params{p} = 11;
 template_test(<<'IN', <<'EXPECT', "page_list");
 <:.set items = [ 1 .. 200 ] -:>
 <:.set p = bse.paged(items, { pp: 5 }) -:>
+<:= p.items.join(" ") :>
 <:.call "page_list", base:"/", pages: p :>
 IN
+51 52 53 54 55
 
 <div class="pagelist">
-Page 1 of 40
-<span>&lt&lt</span>
-<span>&lt</span>
+Page 11 of 40
+<a href="/?p=1&amp;pp=5">&lt;&lt</a>
+<a href="/?p=10&amp;pp=5">&lt;</a>
 
-<span>1</span>
+<a href="/?p=1&amp;pp=5">1</a>
 
 <a href="/?p=2&amp;pp=5">2</a>
 
@@ -66,7 +68,7 @@ Page 1 of 40
 
 <a href="/?p=10&amp;pp=5">10</a>
 
-<a href="/?p=11&amp;pp=5">11</a>
+<span>11</span>
 
 <a href="/?p=12&amp;pp=5">12</a>
 
@@ -88,7 +90,7 @@ Page 1 of 40
 
 <a href="/?p=40&amp;pp=5">40</a>
 
-<a href="/?p=2&amp;pp=5">&gt;</a>
+<a href="/?p=12&amp;pp=5">&gt;</a>
 <a href="/?p=40&amp;pp=5">&gt;&gt</a>
 </div>
 EXPECT