--- trunk/html/swish.cgi 2003/03/16 21:06:43 8
+++ trunk/html/swish.cgi 2003/03/18 20:24:57 22
@@ -8,39 +8,51 @@
use Lingua::Spelling::Alternative;
use Text::Iconv;
-# output charset
-my $CHARSET='ISO-8859-2';
-
Text::Iconv->raise_error(0); # Conversion errors raise exceptions
-my $from_utf8 = Text::Iconv->new('UTF8', $CHARSET);
-
my $config=XMLin(undef,
# keyattr => { label => "value" },
forcecontent => 0,
);
+my $from_utf8 = Text::Iconv->new('UTF8', $config->{charset});
+sub x {
+ return $from_utf8->convert($_[0]);
+}
+
use Data::Dumper;
#print Dumper($config);
my $spelling_alt;
# FIX: doesn't work very well
+if ($config->{findaffix}) {
+ $spelling_alt = new Lingua::Spelling::Alternative;
+ $spelling_alt->load_findaffix(x($config->{findaffix}));
+}
if ($config->{affix}) {
$spelling_alt = new Lingua::Spelling::Alternative;
- $spelling_alt->load_findaffix($config->{affix});
+ $spelling_alt->load_affix(x($config->{affix}));
}
my $hits=0;
-my $max_hits=$config->{max_hits};
+my $max_hits=x($config->{max_hits});
my %labels;
foreach (@{$config->{labels}->{label}}) {
- $labels{$_->{value}} = $from_utf8->convert($_->{content});
+ $labels{$_->{value}} = x($_->{content});
}
-print header(-charset=>$CHARSET),start_html(-title=>'Pretrazivanje',-lang=>'hr'),start_form;
-print "Potraži ",popup_menu(-name=>'max_hits',-values=>[ sort keys %labels ],-labels=>\%labels,-default=>$max_hits)," dokumenata sa riječima: ",textfield('search');
-print submit(-value=>'prikaži');
-print checkbox(-name=>'no_affix', -checked=>0, -label=>'ne koristi variranje oblika riječi');
+if ($config->{charset}) {
+ print header(-charset=>x($config->{charset}));
+} else {
+ print header;
+}
+print start_html(-title=>x($config->{title})),start_form;
+print x($config->{text}->{search});
+print popup_menu(-name=>'max_hits',-values=>[ sort keys %labels ],-labels=>\%labels,-default=>$max_hits);
+print x($config->{text}->{documents});
+print textfield('search');
+print submit(-value=> x($config->{text}->{submit}));
+print checkbox(-name=>'no_affix', -checked=>0, -label=>x($config->{text}->{no_spell})) if ($spelling_alt);
print end_form,hr;
if (param('search')) {
@@ -83,20 +95,33 @@
$s=~tr/šŠđĐčČćĆžŽ/sSdDcCcCzZ/;
$s=~s/\*\*+/*/g;
+ my %params; # optional parametars for swish
+
+ my @properties = split(/\s+/,x($config->{properties}));
+ $params{properties} = \@properties if (@properties);
+
my $sh = SWISH->connect('Fork',
- prog => $config->{prog},
- indexes => $config->{index},
-# properties => [qw/god br nr/],
+ prog => x($config->{prog}),
+ indexes => x($config->{index}),
results => sub {
my ($sh,$hit) = @_;
- print "swishdocpath,"\">",$hit->swishtitle," [",$hit->swishrank,"]
\n";
+ my $hit_fmt = x($config->{hit}) ||
+ "%s [%s]
\n";
+
+ if ($config->{url}) {
+ printf ($hit_fmt ,"http://".virtual_host().x($config->{url}).$hit->swishdocpath,$hit->swishtitle || 'untitled',$hit->swishrank);
+ } else {
+ printf ($hit_fmt ,$hit->swishdocpath,$hit->swishtitle || 'untitled',$hit->swishrank, map($hit->$_, @properties) );
+
+ }
# print $_[1]->as_string,"
\n";
# my @fields = $hit->field_names;
# print "Field '$_' = '", $hit->$_, "'
\n" for sort @fields;
},
maxhits => param('max_hits') || $max_hits,
+ \%params,
);
die $SWISH::errstr unless $sh;
@@ -105,10 +130,12 @@
$hits = $sh->query($s);
if ($hits > 0) {
- print p,hr,"Prikazujem $hits dokumenata (maks. ",param('max_hits') || $max_hits,")... ($s)";
+ print p,hr;
+ printf (x($config->{text}->{hits}),$hits,param('max_hits') || $max_hits,$s);
} else {
- print p,"Nije nađen niti jedan dokument... ($s, ",$sh->errstr,")";
+ print p;
+ printf (x($config->{text}->{no_hits}),$s,$sh->errstr);
}
} else {
- print p('Kod pretraživanja pretraživač pronalazi sve dokumente u kojima se pojavljuju sve upisanje riječi.',br,'Ako ispred riječi upišete minus (-) neće se prikazivati dokumenti koji imaju takvu riječ. Npr. +mreza -novak');
+ print p(x($config->{text}->{footer}));
}