/[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

Diff of /trunk/vhost/webpac2.cgi

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1154 by dpavlin, Sat Apr 25 09:28:44 2009 UTC revision 1155 by dpavlin, Sat Apr 25 11:00:22 2009 UTC
# Line 99  my $db = $config->{databases}->{$databas Line 99  my $db = $config->{databases}->{$databas
99    
100  my @attr = keys %{ $estraier->{attr} }; # FIXME replace with real gnerated lookup  my @attr = keys %{ $estraier->{attr} }; # FIXME replace with real gnerated lookup
101    
102    # XXX pipe delimit list!
103    my $select_attr_operators = << '__ATTR_OPERATORS__';
104    Q*                      |       Bilo koja riječ
105    BW Q            |       Početak
106    BW Q EW         |       Točan oblik
107    __ATTR_OPERATORS__
108    
109    my $attr_operator;
110    
111    foreach ( split(/[\n\r]+/, $select_attr_operators ) ) {
112            my ( $operator,$label ) = split(/\s+\|\s+/,$_,2);
113            push @{ $attr_operator->{ '-values' } }, $operator;
114                    $attr_operator->{ '-labels' }->{$operator} = $label;
115    }
116    
117    warn "## attr_operator = ", dump( $attr_operator );
118    
119  print  print
120          start_html(          start_html(
121                  -title => $db->{name},                  -title => $db->{name},
# Line 113  print Line 130  print
130  #                       -linebreak => 0,  #                       -linebreak => 0,
131                  ),                  ),
132                  textfield( -name => 'search' ),                  textfield( -name => 'search' ),
133                  popup_menu( -name => 'attr_operator', -values => [ '', 'STRBW', 'STREQ' ],                  popup_menu( -name => 'attr_operator', %$attr_operator ),
                         -labels => {  
                                 '' => 'Bilo koja riječ',  
                                 'STRBW' => 'Početak',  
                                 'STREQ' => 'Točan oblik',  
                         },  
                 ),  
134                  submit,                  submit,
135                  hidden( -name => 'entries_per_page', -default => $entries_per_page ),                  hidden( -name => 'entries_per_page', -default => $entries_per_page ),
136                  hidden( -name => 'current_page', -default => 1 ),                  hidden( -name => 'current_page', -default => 1 ),
# Line 154  if ( my $search = param('search') ) { Line 165  if ( my $search = param('search') ) {
165    
166          dump_yaml( 'pager', $pager );          dump_yaml( 'pager', $pager );
167    
168          my @search = ( "xml=$search" );          my @search = ();
169    
170  #       if ( my $op = param('attr_operator') ) {          if ( $search =~ m{(=|"|AND|OR)} ) {
171  #               $cond->add_attr( param('attr') . " $op " . param('search') );                  push @search, $search;
172  #       }          } elsif ( my $op = param('attr_operator') ) {
173                    my $attr = param('attr');
174                    my $v = $search;
175                    $v =~ s/^\s+//;
176                    warn "-- v: $v\n";
177                    sub rewrite {
178                            my ( $whitespace, $v ) = @_;
179                            warn "## filter $op $whitespace $v\n";
180                            my $template = $op;
181                               $template =~ s{Q}{$v};
182                            $whitespace = " AND " if $whitespace;
183    
184                            return
185                                    $whitespace .
186                                    $attr . '="' . $template . '"';
187                                    ;
188                    };
189                    $v =~ s{(\s*)(\S+)}{rewrite($1,$2)}ge;
190    
191                    push @search, $v;
192            } else {
193                    push @search, "xml=$search";
194            }
195    
196          my @only_input = param('only_input');          my @only_input = param('only_input');
197    
198          push @search, '(' . join(') or (', @only_input) . ')' if @only_input;          push @search, '(' . join(') or (', @only_input) . ')' if @only_input;
199    
200          my $q = '(' . join(') and (', @search) . ')';          my $q = '(' . join(') and (', @search) . ')';
201            $q =~ s{\(\((.+)\)\)}{($1)};
202          warn "# query: $q\n";          warn "# query: $q\n";
203          my $swish_results = $swish->query( $q );          my $swish_results = $swish->query( $q );
         $swish->abort_last_error if $swish->Error;  
204    
205          dump_yaml( 'swish_results', $swish_results );          dump_yaml( 'swish_results', $swish_results );
206    
207          $pager->total_entries( $swish_results->hits );          $pager->total_entries( $swish_results->hits );
208    
209          if ( ! $pager->total_entries ) {          if ( ! $pager->total_entries ) {
210                  my $no_results = "No results for search '%s'";                  my $no_results = 'No results for search <b>%s</b>';
211                  printf qq|<div class="error">$no_results</div>\n\n|, $search;                  $no_results = $swish->error_string . '<br><b>%s</b>' if $swish->error;
212                    printf qq|<div class="error">$no_results</div>\n\n|, $q;
213          } else {          } else {
214    
215                  my $results = "<b>%d</b> results for search <b>%s</b> showing results %d - %d";                  my $results = "<b>%d</b> results for search <b>%s</b> showing results %d - %d";
216                  printf qq|<div class="message">$results</div>\n\n|, $pager->total_entries, $search, $pager->first, $pager->last;                  printf qq|<div class="message">$results</div>\n\n|, $pager->total_entries, $q, $pager->first, $pager->last;
217    
218                  my $pager_html = join("\n", show_pager( $pager ));                  my $pager_html = join("\n", show_pager( $pager ));
219    

Legend:
Removed from v.1154  
changed lines
  Added in v.1155

  ViewVC Help
Powered by ViewVC 1.1.26