+sub show_pager {
+ my ($pager) = @_;
+
+ my @show_pages;
+ my $after_current = 0;
+
+ if ( $pager->current_page <= $range_around + 2 ) {
+ @show_pages = ( $pager->first_page .. $pager->current_page );
+ $after_current = $range_around - $pager->current_page;
+ } else {
+ @show_pages = ( $pager->first_page, '', $pager->current_page - $range_around .. $pager->current_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 );
+ }
+
+# dump_yaml( 'show_pages', \@show_pages );
+
+ return '' unless $#show_pages;
+
+ my ( $prev, $next ) = ( '<<', '>>' );
+
+ sub li_a_href {
+ my ( $page, $label, $attr ) = @_;
+ param( 'current_page', $page );
+ my $url = self_url( -query => 1 );
+ $attr ||= '';
+ $label ||= $page;
+ qq|<li$attr><a href="$url" title="$page">$label</a></li>|;
+ }
+
+ return
+ $pager->previous_page ? li_a_href( $pager->previous_page, $prev ) : qq|<li class=skip>$prev</li>|
+ , ( map {
+ if ( $_ eq $pager->current_page ) {
+ qq|<li class=current_page>$_</li>|;
+ } elsif ( $_ eq '' ) {
+ qq|<li class=skip>...</li>|;
+ } else {
+ li_a_href( $_ );
+ }
+ } @show_pages )
+ , $pager->next_page ? li_a_href( $pager->next_page, $next ) : qq|<li class=skip>$next</li>|
+ ;
+
+}
+
+my $path = $ENV{PATH_INFO} || 'ecas';
+$path =~ s{^/+}{};
+$path =~ s{/+$}{};