Changeset 586


Ignore:
Timestamp:
Dec 14, 2004, 5:34:02 PM (17 years ago)
Author:
kake
Message:

Fixed distance search paging bug.

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Changes

    r585 r586  
    66         to node names - see README.CSS for details.
    77        Fix bug with diff display on nodes containing macros.
     8        Fixed distance search paging bug.
    89       
    9100.45    1 December 2004
  • trunk/lib/OpenGuides/SuperSearch.pm

    r585 r586  
    154154         && defined $self->{x} && defined $self->{y} ) {
    155155        $doing_search = 1;
    156         $tt_vars{dist} = $self->{distance_in_metres};
    157         foreach my $param ( qw( os_x os_y osie_x osie_y latitude longitude )) {
    158             $tt_vars{$param} = $self->{$param};
    159         }
     156        # Make sure to pass the criteria to the template.                   
     157        $tt_vars{dist} = $self->{distance_in_metres};
     158        if ( $self->config->{_}{geo_handler} eq 1 ) {
     159            $tt_vars{coord_field_1_value} = $self->{os_x};
     160            $tt_vars{coord_field_2_value} = $self->{os_y};
     161        } elsif ( $self->config->{_}{geo_handler} eq 2 ) {
     162            $tt_vars{coord_field_1_value} = $self->{osie_x};
     163            $tt_vars{coord_field_2_value} = $self->{osie_y};
     164        } elsif ( $self->config->{_}{geo_handler} eq 3 ) {
     165            $tt_vars{coord_field_1_value} = $self->{latitude};
     166            $tt_vars{coord_field_2_value} = $self->{longitude};
     167        }                                               
    160168        $self->run_distance_search;
    161169    }
  • trunk/t/34_supersearch_paging.t

    r585 r586  
    1616}
    1717
    18 eval { require Geography::NationalGrid::GB; };
    19 if ( $@ ) {
    20     plan skip_all => "Geography::NationalGrid::GB not installed";
    21 }
    22 
    23 plan tests => 1;
     18plan tests => 9;
    2419
    2520# Clear out the database from any previous runs.
    2621unlink "t/node.db";
    2722unlink <t/indexes/*>;
     23CGI::Wiki::Setup::SQLite::setup( { dbname => "t/node.db" } );
    2824
    29 CGI::Wiki::Setup::SQLite::setup( { dbname => "t/node.db" } );
    3025my $config = OpenGuides::Test->make_basic_config;
    3126$config->{_}{use_plucene} = 1;
    32 $config->{_}{script_name} = "wiki.cgi";
    33 $config->{_}{script_url} = "http://example.com/";
    34 
    3527my $search = OpenGuides::SuperSearch->new( config => $config );
    3628my $guide = OpenGuides->new( config => $config );
    3729
    38 foreach my $i ( 1 .. 30 ) {
    39     OpenGuides::Test->write_data(
    40                                   guide      => $guide,
    41                                   node       => "Crabtree Tavern $i",
    42                                   os_x       => 523465,
    43                                   os_y       => 177490,
    44                                   categories => "Pubs",
    45                                 );
     30# Test with OS co-ords.
     31eval { require Geography::NationalGrid::GB; };
     32SKIP: {
     33    skip "Geography::NationalGrid::GB not installed", 1 if $@;
     34    $config->{_}{geo_handler} = 1;
     35
     36    foreach my $i ( 1 .. 30 ) {
     37        OpenGuides::Test->write_data(
     38                                      guide      => $guide,
     39                                      node       => "Crabtree Tavern $i",
     40                                      os_x       => 523465,
     41                                      os_y       => 177490,
     42                                      categories => "Pubs",
     43                                    );
     44    }
     45   
     46    my $output = $search->run(
     47                               return_output => 1,
     48                               vars          => {
     49                                                  os_dist => 1500,
     50                                                  os_x => 523500,
     51                                                  os_y => 177500,
     52                                                },
     53                             );
     54    like( $output, qr/supersearch.cgi\?.*os_x=523500.*Next.*results/s,
     55          "os_x retained in next page link" );
     56    like( $output, qr/supersearch.cgi\?.*os_y=177500.*Next.*results/s,
     57          "os_y retained in next page link" );
     58    like( $output, qr/supersearch.cgi\?.*os_dist=1500.*Next.*results/s,
     59          "os_dist retained in next page link" );
    4660}
    4761
    48 my $output = $search->run(
    49                            return_output => 1,
    50                            vars          => {
    51                                               os_dist => 1500,
    52                                               os_x => 523500,
    53                                               os_y => 177500,
    54                                             },
    55                          );
    56 like( $output, qr/supersearch.cgi\?.*os_x=523500.*Next.*results/s,
    57       "os_x retained in next page link" );
     62# Test with OSIE co-ords.
     63eval { require Geography::NationalGrid::IE; };
     64SKIP: {
     65    skip "Geography::NationalGrid::IE not installed", 1 if $@;
     66
     67    # We must create a new search object after changing the geo_handler
     68    # in order to force it to create a fresh locator.
     69    $config->{_}{geo_handler} = 2;
     70    my $search = OpenGuides::SuperSearch->new( config => $config );
     71
     72    foreach my $i ( 1 .. 30 ) {
     73        OpenGuides::Test->write_data(
     74                                      guide      => $guide,
     75                                      node       => "I Made This Place Up $i",
     76                                      osie_x     => 100005,
     77                                      osie_y     => 200005,
     78                                    );
     79    }
     80   
     81    my $output = $search->run(
     82                               return_output => 1,
     83                               vars          => {
     84                                                  osie_dist => 1500,
     85                                                  osie_x => 100000,
     86                                                  osie_y => 200000,
     87                                                },
     88                             );
     89    like( $output, qr/supersearch.cgi\?.*osie_x=100000.*Next.*results/s,
     90          "osie_x retained in next page link" );
     91    like( $output, qr/supersearch.cgi\?.*osie_y=200000.*Next.*results/s,
     92          "osie_y retained in next page link" );
     93    like( $output, qr/supersearch.cgi\?.*osie_dist=1500.*Next.*results/s,
     94          "osie_dist retained in next page link" );
     95}
     96
     97# Test with UTM.
     98eval { require Geo::Coordinates::UTM; };
     99SKIP: {
     100    skip "Geo::Coordinates::UTM not installed", 1 if $@;
     101
     102    # We must create a new search object after changing the geo_handler
     103    # in order to force it to create a fresh locator.
     104    $config->{_}{geo_handler} = 3;
     105    $config->{_}{ellipsoid} = "International";
     106    my $search = OpenGuides::SuperSearch->new( config => $config );
     107
     108    foreach my $i ( 1 .. 30 ) {
     109        OpenGuides::Test->write_data(
     110                                      guide      => $guide,
     111                                      node       => "London Aquarium $i",
     112                                      latitude   => 51.502,
     113                                      longitude  => -0.118,
     114                                    );
     115    }
     116   
     117    my $output = $search->run(
     118                               return_output => 1,
     119                               vars          => {
     120                                                  latlong_dist => 1500,
     121                                                  latitude     => 51.5,
     122                                                  longitude    => -0.12,
     123                                                },
     124                             );
     125    like( $output, qr/supersearch.cgi\?.*latitude=51.5.*Next.*results/s,
     126          "latitude retained in next page link" );
     127    like( $output, qr/supersearch.cgi\?.*longitude=-0.12.*Next.*results/s,
     128          "longitude retained in next page link" );
     129    like( $output, qr/supersearch.cgi\?.*latlong_dist=1500.*Next.*results/s,
     130          "latlong_dist retained in next page link" );
     131}
  • trunk/templates/supersearch.tt

    r585 r586  
    9292      [% END %]
    9393      [% IF next_page_startpos %]
    94         <a href="supersearch.cgi?search=[% search_terms %];distance_in_metres=[% dist %];os_x=[% os_x %];os_y=[% os_y %];next=[% next_page_startpos %]">Next
     94        <a href="supersearch.cgi?search=[% search_terms %];[% dist_field %]=[% dist %];[% coord_field_1 %]=[% coord_field_1_value %];[% coord_field_2 %]=[% coord_field_2_value %];next=[% next_page_startpos %]">Next
    9595        [% IF ((total_num - last_num >= 20)) %]
    9696          20
Note: See TracChangeset for help on using the changeset viewer.