/[webpac2]/trunk/vhost/webpac2.cgi
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/vhost/webpac2.cgi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1135 - (hide annotations)
Tue Apr 21 23:17:21 2009 UTC (15 years ago) by dpavlin
File size: 1987 byte(s)
 r1776@llin:  dpavlin | 2009-04-22 00:31:55 +0200
 somewhat better design of results

1 dpavlin 1132 #!/usr/bin/perl
2    
3     use warnings;
4     use strict;
5    
6     use CGI qw/:standard/;
7     use CGI::Carp qw/fatalsToBrowser/;
8     use File::Slurp;
9     use YAML;
10     use Search::Estraier;
11    
12     print header;
13    
14     sub dump_yaml {
15 dpavlin 1135 my $name = shift;
16     print qq|<pre># $name\n|, YAML::Dump( @_ ), qq|</pre>|;
17 dpavlin 1132 }
18    
19     my $path = $ENV{PATH_INFO};
20     my $dir = $0;
21     $dir =~ s{/[^/]+.cgi}{};
22    
23     my $config = YAML::LoadFile( "$dir/$path/config.yml" );
24    
25     my $database = (keys %{ $config->{databases} })[0];
26     die "$database not in $path" unless $path =~ m{\Q$database\E};
27    
28     my $estraier = YAML::LoadFile( "$dir/../var/estraier/$database.yaml" );
29    
30     my $db = $config->{databases}->{$database};
31    
32     my @attr = keys %{ $estraier->{attr} }; # FIXME replace with real gnerated lookup
33    
34     print
35     start_html(
36     -title => $db->{name},
37     -style => '../../style.css',
38     ),
39     h1( $db->{name} ),
40     qq|<div id=description>|, $db->{description}, qq|</div>|,
41     start_form,
42     radio_group(
43     -name => 'attr',
44 dpavlin 1133 -values => [ @attr ],
45 dpavlin 1132 # -linebreak => 0,
46     ),
47     textfield( -name => 'search' ),
48     submit
49     ;
50    
51     print end_form;
52    
53     if ( my $search = param('search') ) {
54    
55 dpavlin 1135 print qq|<div id="results">|;
56 dpavlin 1132
57     my $node = Search::Estraier::Node->new(
58     url => $config->{hyperestraier}->{masterurl} . '/node/' . $database,
59     croak_on_error => 1,
60     );
61    
62     my $cond = Search::Estraier::Condition->new;
63     $cond->set_phrase( $search );
64     my $nres = $node->search( $cond, 0 );
65    
66     if ( ! $nres ) {
67     my $no_results = "No results for search '%s'";
68 dpavlin 1135 printf qq|<div class="error">$no_results</div>|, $search;
69 dpavlin 1132 } else {
70 dpavlin 1135 my $results = "Got %d results for search '%s'";
71     printf qq|<div class="message">$results</div>|, $nres->hits, $search;
72    
73     print qq|<ol>|;
74    
75 dpavlin 1132 foreach my $i ( 1 .. $nres->doc_num ) {
76     my $rdoc = $nres->get_doc( $i - 1 );
77     print qq|<li>|;
78     print qq|<div><label>$_</label><span class=$_>|, $rdoc->attr( $_ ), qq|</span></div>|
79     foreach @attr;
80     print qq|</li>\n|;
81     }
82 dpavlin 1135 print qq|</ol>|;
83 dpavlin 1132 }
84     print qq|</div>|;
85     }
86    
87 dpavlin 1135 dump_yaml( 'estraier', $estraier );
88     dump_yaml( 'db', $db );
89 dpavlin 1132
90     print end_html;

Properties

Name Value
svn:executable *

  ViewVC Help
Powered by ViewVC 1.1.26