Create alternative method for non-BML context.
Patch by kareila.
diffs (69 lines):
diff -r a6852c049c62 -r 11ed0d63e6fd cgi-bin/LJ/User.pm
--- a/cgi-bin/LJ/User.pm Fri Dec 17 01:53:39 2010 +0800
+++ b/cgi-bin/LJ/User.pm Fri Dec 17 01:58:35 2010 +0800
@@ -8259,7 +8259,7 @@ sub user_search_display {
}
if (defined $args{perpage}) {
- my %items = BML::paging(\...@display, $args{curpage}, $args{perpage});
+ my %items = LJ::paging( \...@display, $args{curpage}, $args{perpage} );
# Fancy paging bar
my $opts;
diff -r a6852c049c62 -r 11ed0d63e6fd cgi-bin/weblib.pl
--- a/cgi-bin/weblib.pl Fri Dec 17 01:53:39 2010 +0800
+++ b/cgi-bin/weblib.pl Fri Dec 17 01:58:35 2010 +0800
@@ -424,6 +424,53 @@ sub paging_bar
$navcrap = BML::fill_template("standout", { 'DATA' => $navcrap });
}
return $navcrap;
+}
+
+# drop-in replacement for BML::paging in non-BML context
+sub paging {
+ my ( $listref, $page, $pagesize ) = @_;
+ $page = 1 unless $page && $page == int $page;
+ return unless $pagesize; # let's not divide by zero
+ my @items = @{ $listref };
+ my %self;
+
+ my $newurl = sub {
+ # replaces BML::page_newurl
+ my $page = $_[0];
+ my $r = DW::Request->get;
+ my $args = $r->get_args;
+ my ( $url ) = split /\?/, $r->uri;
+ my @pair = ();
+
+ foreach ( sort grep { $_ ne "page" } keys %$args ) {
+ push @pair, ( LJ::eurl( $_ ) . "=" . LJ::eurl( $args->{$_} ) );
+ }
+ push @pair, "page=$page";
+ return $url . "?" . join( "&", @pair );
+ };
+
+ $self{itemcount} = scalar @items;
+
+ $self{pages} = $self{itemcount} / $pagesize;
+ $self{pages} = int( $self{pages} ) + 1
+ if $self{pages} != int( $self{pages} ); # round up any fraction
+
+ $page = 1 if $page < 1;
+ $page = $self{pages} if $page > $self{pages};
+ $self{page} = $page;
+
+ $self{itemfirst} = $pagesize * ( $page - 1 ) + 1;
+ $self{itemlast} = $pagesize * $page;
+ $self{itemlast} = $self{itemcount} if $self{pages} == $page;
+
+ my @range = ( $self{itemfirst} - 1 ) .. ( $self{itemlast} - 1 );
+ $self{items} = [ @ite...@range] ];
+
+ my ( $prev, $next ) = ( $newurl->( $page - 1 ), $newurl->( $page + 1 ) );
+ $self{backlink} = "<a href=\"$prev\"><<<</a>" unless $page == 1;
+ $self{nextlink} = "<a href=\"$next\">>>></a>" unless $page ==
$self{pages};
+
+ return %self;
}
# <LJFUNC>
_______________________________________________
dw-changelog mailing list
[email protected]
http://lists.dwscoalition.org/mailman/listinfo/dw-changelog