--- trunk/vhost/webpac2.cgi 2009/04/22 10:14:56 1138 +++ trunk/vhost/webpac2.cgi 2009/04/22 12:51:23 1139 @@ -21,7 +21,7 @@ print qq|
# $name\n|, YAML::Dump( @_ ), qq||; } -sub show_pages { +sub show_pager { my ($pager,$coderef) = @_; my @show_pages; @@ -34,23 +34,32 @@ @show_pages = ( $pager->first_page, '', $pager->current_page - $range_around .. $pager->current_page ); } - if ( $pager->current_page + $range_around + 1 >= $pager->last_page ) { + if ( $pager->current_page + $after_current + $range_around + 1 >= $pager->last_page ) { push @show_pages, ( $pager->current_page + 1 .. $pager->last_page ); } else { push @show_pages, ( $pager->current_page + 1 .. $pager->current_page + $after_current + $range_around, '', $pager->last_page ); } - warn "## show_pages = ",dump( @show_pages ); + dump_yaml( 'show_pages', \@show_pages ); - return join( ' ', map { - if ( $_ == $pager->current_page ) { - qq|$_|; - } elsif ( $_ eq '' ) { - qq|...|; - } else { - $coderef->( $_ ); - } - } @show_pages ); + return '' unless $#show_pages; + + my ( $prev, $next ) = ( '<<', '>>' ); + + return + $pager->previous_page ? $coderef->( $pager->previous_page, $prev ) : $prev + , join( ' ', map { + if ( $_ == $pager->current_page ) { + qq|$_|; + } elsif ( $_ eq '' ) { + qq|...|; + } else { + $coderef->( $_ ); + } + } @show_pages ) + , $pager->next_page ? $coderef->( $pager->next_page, $next ) : $next + ; + } my $path = $ENV{PATH_INFO} || 'ecas'; @@ -84,7 +93,7 @@ ), h1( $db->{name} ), qq|