--- lib/Grep/Action/Search.pm 2007/02/20 16:26:56 43 +++ lib/Grep/Action/Search.pm 2007/03/14 18:46:37 109 @@ -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,14 +42,17 @@ 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'); + + return $self->result->error("Need search query") unless ($q); - $self->SUPER::take_action( @_ ); + my $search = Grep::Search->new(); - my $coll = $self->result->content('search'); + my $coll = $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; @@ -37,6 +62,8 @@ $self->result->error('No local results, try remote feeds...'); } + $self->result->content( search => $coll ); + return $coll; }