--- lib/Grep/Action/Search.pm 2007/02/19 18:25:12 29 +++ lib/Grep/Action/Search.pm 2007/02/21 19:11:06 59 @@ -8,11 +8,33 @@ =cut package Grep::Action::Search; -use base qw/Grep::Action::SearchItem/; + +use Grep::Search; use Data::Dump qw/dump/; use Time::HiRes qw/time/; +use Jifty::Param::Schema; +use Jifty::Action schema { + + param q => + type is 'text', + label is 'Search for', + hint is 'enter few words to search for'; + + param item_fragment => + label is 'Display format', + render as 'select', + available are qw/long short title/; + + param max => + label is 'Number or results', + render as 'select', + available are qw/10 20 50 100/; + default is '20'; + +}; + =head2 take_action =cut @@ -20,38 +42,26 @@ sub take_action { my $self = shift; - my $q = $self->argument_value('content_contains') || warn "can't find content_contains"; + my $q = $self->argument_value('q'); - $self->SUPER::take_action( @_ ); + return $self->result->error("Need search query") unless ($q); - my $coll = $self->result->content('search'); + my $coll = Grep::Search->collection( $q ) || + return $self->result->error("No results"); - Jifty->log->error('result not collection but ', dump( $coll )) - unless ( $coll->isa('Jifty::Collection') ); + $self->log->fatal('result not collection but ', dump( $coll )) + if ( !$coll || !$coll->isa('Jifty::Collection') ); my $results = $coll->count; if ($results > 0) { - $self->result->message( "Found $results results" ); - - warn "### about to fork!"; - - if (fork) { - my $t = $results; - warn "### sleeping $t s..."; - sleep $t; - warn "### pushing results for $q after $t s"; - - Jifty->log->error('result not collection but ', dump( $coll )) - unless ( $coll->isa('Jifty::Collection') ); - Grep::Event::Result->new({ q => $q, coll => $coll, item_fragment => 'long' })->publish; - exit 0; - } - + $self->result->message( "Found $results results for '$q'" ); } else { - $self->result->error('No local results found, wait for remote results to arrive...'); + $self->result->error('No local results, try remote feeds...'); } + $self->result->content( search => $coll ); + return $coll; }