--- 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|