@_TOP_@
[search-region][on-match][tmp meta_header][calcn] return unless $Values->{more_link}; (my $more_page = $Session->{last_url}) =~ s|^/.*/([^\..]+)(?:\.html)?|$1|; if ($more_page =~ /^(Next|Prev)/) { $Tag->tag({ op => 'header' }, qq{Cache-control: no-cache\nCache-control: no-store\nPragma: no-cache\nExpires: 0\nContent-type: text/html}); } ## $mc set above. my $ml = $Values->{mv_matchlimit} || ''; my $fm = $Values->{mv_first_match} || ''; my ($canon, $rel_prev, $rel_next); #Debug("more_page=$more_page, ml=$ml, fm=$fm, mc=$mc"); my ($prev, $next); REL: { last REL if $mc < $ml; if ($fm == 0 || $fm == 1) { # first page $rel_next = $Values->{more_link} . '/2'; } elsif (($mc - $fm - $ml) <= 0) { # last page $prev = sprintf("%.0f", (($fm+$ml) / $ml) - 1); $rel_prev = $Values->{more_link} . '/' . ($prev ? $prev : '1'); } else { # page 2 to second-to-last $prev = sprintf("%.0f", ($fm / $ml)); $next = $prev + 2; $rel_prev = $Values->{more_link} . "/$prev"; $rel_next = $Values->{more_link} . "/$next"; } } CANON: { last CANON if $more_page !~ /^1|(Next|Prev)/; if ($more_page eq '1') { $canon = ''; } else { $canon = sprintf("%.0f", ($fm+$ml) / $ml); $canon = '' if $canon == 1; } $canon = $Values->{more_link} . ($canon ? "/$canon" : ''); } my @out; my $url = ($Variable->{SAMPLEURL} . $Variable->{CGI_URL}) || ''; my $ext = $Scratch->{mv_add_dot_html} ? '.html' : ''; $url !~ /\/$/ and $url .= '/'; push @out, qq{} if $rel_prev; push @out, qq{} if $rel_next; $Tag->tmp('rel_next', 1) if $rel_next; push @out, qq{} if $canon; if ($prev || $next) { $Scratch->{page_title} = $Scratch->{page_title} . ' - Page ' . (($prev || $next)+1) }; return "\t" . join "\n\t", @out; [/calcn][/tmp][/on-match][tmp bw_more][more-list][first-anchor][/first-anchor][last-anchor][/last-anchor][link-template]
  • $ANCHOR$
  • [/link-template] [/more-list][/tmp][calc] my $more = $Scratch->{bw_more}; $more and $more =~ s,,
  • ,; $more and $more =~ s, *,
  • ,g; $Scratch->{bw_more} = $more; return $Values->{more_link} ? $more : undef; [/calc][search-list]
    [item-description]
    [item-price]
    [/search-list][no-match]
    [comment] Don't show the search string if it was empty, since it looks weird and the user will see the error below anyway. [/comment][tmp matchstring][value-extended name=mv_searchspec joiner=" | " filter=encode_entities][/tmp][if scratch matchstring] [msg arg.0="[scratch matchstring]"]Sorry, no matches for %s.[/msg] [/if][if value mv_search_error] [L]Errors[/L]:
    [value-extended name=mv_search_error joiner="
    " filter=encode_entities]
    [/if]
    [/no-match][if value more_link][scratch bw_more][else][more-list]
    [msg arg.0="[matches]" arg.1="[match-count]"]Matches %s of %s found.[/msg] [link-template]$ANCHOR$[/link-template]
    [more]
    [/more-list] [/else] [/if][/search-region]
    __BOTTOM__