Changeset 372


Ignore:
Timestamp:
Jun 10, 2004, 9:26:03 PM (18 years ago)
Author:
kake
Message:

Move find_within_distance stuff into OpenGuides.pm

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/OpenGuides.pm

    r371 r372  
    253253}
    254254
     255=item B<find_within_distance>
     256
     257  $guide->find_within_distance(
     258                                id => $node,
     259                                metres => $q->param("distance_in_metres")
     260                              );
     261
     262=cut
     263
     264sub find_within_distance {
     265    my ($self, %args) = @_;
     266    my $node = $args{node};
     267    my $metres = $args{metres};
     268    my $formatter = $self->wiki->formatter;
     269
     270    my @finds = $self->locator->find_within_distance(
     271                                                      node   => $node,
     272                                                      metres => $metres,
     273                                                    );
     274    my @nodes;
     275    foreach my $find ( @finds ) {
     276        my $distance = $self->locator->distance(
     277                                                 from_node => $node,
     278                                                 to_node   => $find,
     279                                                 unit      => "metres"
     280                                               );
     281        push @nodes, {
     282                       name     => $find,
     283                       param    => $formatter->node_name_to_node_param($find),
     284                       distance => $distance,
     285                     };
     286    }
     287    @nodes = sort { $a->{distance} <=> $b->{distance} } @nodes;
     288
     289    my %tt_vars = (
     290                    nodes        => \@nodes,
     291                    origin       => $node,
     292                    origin_param => $formatter->node_name_to_node_param($node),
     293                    limit        => "$metres metres",
     294                  );
     295
     296    $self->process_template(
     297                             id       => "index", # KLUDGE
     298                             template => "site_index.tt",
     299                             vars     => \%tt_vars,
     300                           );
     301}
     302
    255303sub process_template {
    256304    my ($self, %args) = @_;
  • trunk/wiki.cgi

    r371 r372  
    8080        exit 0;
    8181    } elsif ($action eq 'find_within_distance') {
    82         my $metres = $q->param("distance_in_metres");
    83         my @finds = $guide->locator->find_within_distance( node   => $node,
    84                                                            metres => $metres );
    85         my @nodes;
    86         foreach my $find ( @finds ) {
    87             my $distance = $guide->locator->distance( from_node => $node,
    88                                                       to_node   => $find,
    89                                                       unit      => "metres" );
    90             push @nodes, { name => $find,
    91                            param => $formatter->node_name_to_node_param($find),
    92                            distance => $distance };
    93         }
    94         @nodes = sort { $a->{distance} <=> $b->{distance} } @nodes;
    95         process_template("site_index.tt", "index",
    96                          { nodes  => \@nodes,
    97                            origin => $node,
    98                            origin_param => $formatter->node_name_to_node_param($node),
    99                            limit  => "$metres metres" } );
     82        $guide->find_within_distance(
     83                                      id => $node,
     84                                      metres => $q->param("distance_in_metres")
     85                                    );
    10086    } elsif ( $action eq 'delete'
    10187              and ( lc($config->{_}->{enable_page_deletion}) eq "y"
Note: See TracChangeset for help on using the changeset viewer.