--- trunk/lib/Frey/View/NoPager.pm 2008/12/09 20:31:25 763 +++ trunk/lib/Frey/View/NoPager.pm 2008/12/09 20:31:27 765 @@ -14,6 +14,18 @@ is => 'rw', isa => 'Str', required => 1, + default => '', +); + +has 'sort' => ( + is => 'rw', + isa => 'Str', +); + +has page => ( + is => 'rw', + isa => 'Int', + default => 1, ); our $v = { @@ -35,42 +47,29 @@ ''; } -sub sort_order { - my $out; - - my $sort = $q->param('sort'); - - $out .= ''; -} - -sub get_results { +sub results_as_markup { my $self = shift; my $p = {@_}; my ($search,$page) = ( $p->{search} , $p->{page} ); sub next_page { - return '
' . - join("\n", @_) . $self->json() . '
'; + my ($self) = @_; + return + qq|
| + . join("\n", @_) . $self->json() + . qq|
| + ; } if (! $search || $search =~ m/^\s*$/) { $v->{status} = 'Enter search query'; - return next_page(); + return $self->next_page; } if (! $page) { $v->{status} = 'Error: no page number?'; - return next_page(); + return $self->next_page; } $search = join(" AND ", split(/\s+/, $search)) unless ($search =~ m/(?:AND|OR|\[|\])/); @@ -78,7 +77,7 @@ $v->{page} = $page; - my $node = new Search::Estraier::Node(%{ $config->{estraier} }); + my $node = new Search::Estraier::Node(%{ $self->config->{estraier} }); my $on_page = 30; my $skip = ( $page - 1 ) * $on_page; @@ -89,7 +88,7 @@ $cond->set_skip( $skip ); $cond->set_order( $p->{sort} ) if ($p->{sort}); - my $nres = $node->search($cond, ( $config->{estraier}->{depth} || 0 ) ); + my $nres = $node->search($cond, ( $self->config->{estraier}->{depth} || 0 ) ); my $out; @@ -100,10 +99,10 @@ if ($v->{hits} == 0) { $v->{status} = qq{No results for your search.}; - return next_page(); + return $self->next_page; } elsif ($nres->doc_num == 0) { $v->{status} = qq{Error getting results for page $page.}; - return next_page('No results found.'); + return $self->next_page('No results found.'); } $v->{max_page} = int( ($nres->hits + $on_page - 1) / $on_page ); @@ -120,10 +119,13 @@ $out .= ' ... ' if ($out); my ($pre,$hit,$post) = split(/\n/,$s,3); $hit =~ s/\t.*$//; - $out .= - $q->escapeHTML( $pre || '' ) . '' . - $q->escapeHTML( $hit || '' ) . '' . - $q->escapeHTML( $post || ''); + $out + .= $self->html_escape( $pre ) + . '' + . $self->html_escape( $hit ) + . '' + . $self->html_escape( $post ) + ; } return $out; } @@ -133,7 +135,7 @@ my $text = $rdoc->attr( $attr ); return unless defined($text); - if (my $r = $config->{estraier}->{attr_regex}->{$attr} ) { + if (my $r = $self->config->{estraier}->{attr_regex}->{$attr} ) { my $do = '$text =~ ' . $r . ';'; eval $do; if ($@) { @@ -170,9 +172,9 @@ } if ($v->{page} == $v->{max_page}) { - $out .= next_page('
All results shown'); + $out .= $self->next_page('
All results shown'); } else { - $out .= next_page( + $out .= $self->next_page( '
Loading results...
', 'If you are using the scroll bar, release the mouse to see more results.' ); @@ -182,25 +184,9 @@ } -sub snippet_as_markup { - my ($self) = @_; - - $self->get_results( - search => $q->param('search') || '', - page => $q->param('page') || 0, - sort => $q->param('sort') || undef, - ); -}; - sub as_markup { my ($self) = @_; - my $get_results = $self->get_results( - search => $q->param('search') || '', - page => 1, - sort => $q->param('sort') || undef, - ); - $self->add_css('static/Frey/NoPager.css'); $self->add_css('static/Frey/NoPager.js'); @@ -214,11 +200,12 @@ }); |); - qq| + return qq|
- + + |, $self->sort, qq| @@ -228,7 +215,7 @@
- |, $get_results, qq| + |, $self->results_as_markup, qq|