--- no_pager/index.cgi 2006/08/17 01:08:23 21 +++ no_pager/index.cgi 2006/08/18 09:41:35 28 @@ -88,7 +88,7 @@ my $cond = new Search::Estraier::Condition; $cond->set_phrase( $search ); - $cond->set_max( $on_page ); + $cond->set_max( $on_page * $page ); ## FIXME * $page is needed by hest 1.3.8 $cond->set_skip( $skip ); $cond->set_order( $p->{sort} ) if ($p->{sort}); @@ -97,8 +97,18 @@ my $out; if (defined($nres)) { + $v->{hits} = $nres->hits; $v->{time} = $nres->hint('TIME'); + + if ($v->{hits} == 0) { + $v->{status} = qq{No results for your search.}; + return next_page(); + } elsif ($nres->doc_num == 0) { + $v->{status} = qq{Error getting results for page $page.}; + return next_page('No results found.'); + } + $v->{max_page} = int( ($nres->hits + $on_page - 1) / $on_page ); $v->{status} = qq{ @@ -136,21 +146,26 @@ return $text; } + my @template; + open(my $t, 'result.html') || die "result.html: $!"; + while(<$t>) { + push @template, $_; + } + close($t); + # for each document in results for my $i ( 0 ... $nres->doc_num - 1 ) { my $rdoc = $nres->get_doc($i); - - $out .= '
' . - '

' . attr_regex( $rdoc, '@title' ) . '

' . - '

' . html_snippet( $rdoc->snippet ) . '

' . - '' . attr_regex( $rdoc, 'source' ) . '' . - ' [' . attr_regex( $rdoc, '@size' ) . ' bytes]
'; my $uri = attr_regex( $rdoc, '@uri' ); - $out .= - qq{$uri } . - attr_regex( $rdoc, '@mdate' ) . - ' [' . ( $skip + $i + 1 ) . ']'; + my $nr = $skip + $i + 1; + + map { + my $l = $_; + $l =~ s/<%(.+?)%>/eval "$1"/ge; + $out .= $l; + } @template; + } } else { @@ -158,10 +173,10 @@ } if ($v->{page} == $v->{max_page}) { - $out .= next_page('All results shown'); + $out .= next_page('
All results shown'); } else { $out .= next_page( - 'Loading results...
', + '
Loading results...
', 'If you are using the scroll bar, release the mouse to see more results.' ); } @@ -196,6 +211,6 @@ s/<%(.+?)%>/eval "$1"/ge; print; } - close($f); + close($s); }