--- trunk/WebPac.pm 2005/01/23 14:31:02 642 +++ trunk/WebPac.pm 2005/02/16 00:26:37 670 @@ -148,7 +148,7 @@ foreach my $p (@{$pager->pages_in_set()}) { - next if ($p < 0); + next if ($p <= 0); if($p == $pager->current_page()) { $pager_jump .= "$p "; } else { @@ -328,7 +328,7 @@ push @s_arr, $q->param("f$i")."_swish".$exact."=(".join(" or ",@swish_q).")"; } - my $tmpl = $self->load_tmpl(url_ex($q,'results.html'), global_vars => 1); + my $tmpl = $self->load_tmpl(url_ex($q,'results.html'), global_vars => 1, die_on_bad_params => 0); $tmpl->param('url_params',"?".join("&",@url_params)); @@ -345,6 +345,13 @@ push @persist_vars, "sort"; } + my $sortby = $q->param("sortby"); + if ($sortby) { + $sort = $sortby; + push @persist_vars, "sortby"; + } + $tmpl->param('url_params_paths',"?".join("&",@url_params).'&'.join("&",map { my $t = $_; $t =~ s/\#/%23/g; "path=$t"; } @path_arr)); + # construct swish query my $sw_q = join(" and ",@s_arr); if (@path_arr && $q->param('show_full')) { @@ -359,9 +366,11 @@ $tmpl->param('full',0); } + my $swish_msg = ' '; + # create new swish instance my $swish = SWISH::API->new($INDEX); - die $swish->ErrorString.": ".$swish->LastErrorMsg if $swish->Error; + $swish_msg .= $swish->ErrorString." ".$swish->LastErrorMsg if $swish->Error; # execute query and get number of results from SWISH-E my $search = $swish->New_Search_Object; @@ -369,12 +378,14 @@ $search->SetSort($sort); my $results = $search->Execute($sw_q); - die $swish->ErrorString.": ".$swish->LastErrorMsg if $swish->Error; + $swish_msg .= $swish->ErrorString." ".$swish->LastErrorMsg if $swish->Error; my $hits = $results->Hits; $tmpl->param('hits',$hits); - $tmpl->param('search',$sw_q); + my $search_msg = $sw_q; + $search_msg .= ''.$swish_msg.'' if ($swish_msg); + $tmpl->param('search', $search_msg); $tmpl->param('PAGER_offset',$q->param("PAGER_offset") || 0); $tmpl->param('last_PAGER_offset',$q->param("last_PAGER_offset") || 0); @@ -438,6 +449,8 @@ my $field = $q->param("f$i"); my $limit = $q->param("v$i"); + my $filter = $q->param("filter"); + my $html; my $index = new index_DBI( @@ -447,16 +460,16 @@ $cfg_global->val('global', 'dbi_passwd') || '' ); - my $total = $index->count($field,$limit); + my $total = $index->count($field,$limit,$filter); - if (! $total) { + if (! defined($total)) { my $tmpl = $self->load_tmpl(url_ex($q,'no_index.html')); $tmpl->param('field',$field); $html = $tmpl->output; return $html; } - my $tmpl = $self->load_tmpl(url_ex($q,'index_res.html'), global_vars => 1); + my $tmpl = $self->load_tmpl(url_ex($q,'index_res.html'), global_vars => 1, die_on_bad_params => 0); $tmpl->param('field',$field); $tmpl->param('limit',$limit); $tmpl->param('total',$total); @@ -482,7 +495,7 @@ make_pager($q, $tmpl, $pager); make_pager_vars($q, $tmpl, @persist_vars); - my @pager_data_list = $index->fetch($field,$limit, $pager->first - 1, $pager->entries_on_this_page); + my @pager_data_list = $index->fetch($field,$limit, $pager->first - 1, $pager->entries_on_this_page, $filter); $tmpl->param('PAGER_DATA_LIST', \@pager_data_list); return in_template($q,$tmpl->output);