--- trunk/WebPac.pm 2003/01/22 20:24:32 11
+++ trunk/WebPac.pm 2003/02/22 21:21:35 16
@@ -6,21 +6,25 @@
use HTML::Pager;
use HTML::FillInForm;
use SWISH;
-use Unicode::MapUTF8 qw(to_utf8 from_utf8 utf8_supported_charset);
+use Text::Iconv;
use DBI;
use lib '..';
use index_DBI;
+use back2html;
# configuration options
# FIX: they really should go in configuration file!
my $TEMPLATE_PATH = '/data/webpac/template_html';
my $CHARSET = 'ISO-8859-2';
-my $SWISH = '/usr/local/bin/swish-e';
+my $SWISH = '/usr/bin/swish-e';
my $INDEX = '/data/webpac/index/isis.index';
my $MAX_HITS = 500;
my $ON_PAGE = 10;
+Text::Iconv->raise_error(1); # Conversion errors raise exceptions
+
+my $from_utf8 = Text::Iconv->new('UTF8', $CHARSET);
sub setup {
my $self = shift;
@@ -87,6 +91,7 @@
$s.="$_* ";
}
}
+ $s =~ s/\*+/*/g;
push @s_arr,$q->param("f$i")."_swish=($s)";
}
@@ -97,18 +102,17 @@
my $sh = SWISH->connect('Fork',
prog => $SWISH,
indexes => $INDEX,
- #properties => [qw/god br nr/],
+ properties => [qw/swishdocpath swishrank swishtitle headline html/],
results => sub {
my ($sh,$hit) = @_;
push @swish_results, {
nr => ($#swish_results + 2),
path => $hit->swishdocpath,
- title => to_utf8({ -string => $hit->swishtitle, -charset => $CHARSET }),
+ headline => $from_utf8->convert($hit->headline),
+ html => back2html($from_utf8->convert($hit->html)),
rank => $hit->swishrank };
-# my @fields = $hit->field_names;
-# print "Field '$_' = '", $hit->$_, "'
\n" for sort @fields;
},
#startnum => 0,
maxhits => $MAX_HITS,
@@ -171,28 +175,48 @@
my $field = $q->param("f$i");
my $limit = $q->param("v$i");
-
my $html;
my $index = new index_DBI();
- if (! $index->check($field)) {
+ my $total = $index->check($field);
+ if (! $total) {
my $tmpl = $self->load_tmpl('no_index.html');
$tmpl->param('field',$field);
$html = $tmpl->output;
return $html;
}
- my @index_arr = $index->fetch($field,'item',$limit);
+ my $tmpl = $self->load_tmpl('index_res.html');
+ $tmpl->param('field',$field);
+ $tmpl->param('limit',$limit);
+ $tmpl->param('total',$total);
+
+# FIX: I should set offset and leave out limit from fetch!!
+# if (! $q->param("PAGER_offset") {
+# $q->param("Pager_offet)
+# }
- $html .= "show index of $field";
- $html .= " for $limit" if ($limit);
+ my $pager = HTML::Pager->new(
+ query => $q,
+ get_data_callback => sub {
+ my ($offset, $rows) = @_;
- while (my $row = shift @index_arr) {
- $html .= "
".$row->{item}."\n";
- }
+ my @result = $index->fetch($field,'item',$limit, $offset, $rows);
+ return \@result;
+ },
+ rows => $total,
+ page_size => $ON_PAGE,
+ persist_vars => [
+ 'rm',
+ "f$i", "v$i", "f".$i."_index",
+ 'offset',
+ ],
+ debug => 1,
+ template => $tmpl,
+ );
- return $html;
+ return $pager->output;
}
1;