[dw-free] convert interests.bml to TT
[commit: http://hg.dwscoalition.org/dw-free/rev/11ed0d63e6fd]
http://bugs.dwscoalition.org/show_bug.cgi?id=3110
Create alternative method for non-BML context.
Patch by
kareila.
Files modified:
http://bugs.dwscoalition.org/show_bug.cgi?id=3110
Create alternative method for non-BML context.
Patch by
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Files modified:
- cgi-bin/LJ/User.pm
- cgi-bin/weblib.pl
-------------------------------------------------------------------------------- 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} = [ @items[@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> --------------------------------------------------------------------------------