From d60e824ede364293992a29735fb9a1a225e89e67 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Fri, 2 Feb 2007 06:32:36 +0000 Subject: [PATCH] Bug fix for Wiki search pagination. The Paginator constructor docs were backwards for the formVar and pageNumber. Switched the order of the formVar and pageNumber variables in the Search call to the Paginator. --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Asset/Wobject/WikiMaster.pm | 10 ++++++++-- lib/WebGUI/Paginator.pm | 10 +++++----- lib/WebGUI/Search.pm | 2 +- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 16d37a664..357a820b5 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -53,6 +53,7 @@ error. - fix: RSS feeds should now process HTML characters properly for RSS 2.0 standard - fix: Corner case which could cause WeatherData.pm to fail has been fixed. + - fix: wiki pagination broken (perlDreamer Consulting, LLC) 7.3.8 - Fixed a template variable rewriting problem with HTML::Template::Expr diff --git a/lib/WebGUI/Asset/Wobject/WikiMaster.pm b/lib/WebGUI/Asset/Wobject/WikiMaster.pm index 8dc31798c..0fbf74e90 100644 --- a/lib/WebGUI/Asset/Wobject/WikiMaster.pm +++ b/lib/WebGUI/Asset/Wobject/WikiMaster.pm @@ -23,7 +23,7 @@ sub appendMostPopular { my $self = shift; my $var = shift; my $limit = shift || $self->get("mostPopularCount"); - while (my $asset = @{$self->getLineage(["children"],{returnObjects=>1, limit=>$limit, includeOnlyClasses=>["WebGUI::Asset::WikiPage"]})}) { + foreach my $asset (@{$self->getLineage(["children"],{returnObjects=>1, limit=>$limit, includeOnlyClasses=>["WebGUI::Asset::WikiPage"]})}) { if (defined $asset) { push(@{$var->{mostPopular}}, { title=>$asset->getTitle, @@ -421,13 +421,19 @@ sub www_search { addPageUrl=>$self->getUrl("func=add;class=WebGUI::Asset::WikiPage"), }; my $queryString = $self->session->form->process('query', 'text'); + if (defined $queryString) { + $self->session->scratch->set('wikiSearchQueryString', $queryString); + } + else { + $queryString = $self->session->scratch->get('wikiSearchQueryString'); + } $self->appendSearchBoxVars($var, $queryString); if (length $queryString) { my $search = WebGUI::Search->new($self->session); $search->search({ keywords => $queryString, lineage => [$self->get('lineage')], classes => ['WebGUI::Asset::WikiPage'] }); - my $rs = $search->getPaginatorResultSet; + my $rs = $search->getPaginatorResultSet($self->getUrl("func=search"),5); $rs->appendTemplateVars($var); my @results = (); foreach my $row (@{$rs->getPageData}) { diff --git a/lib/WebGUI/Paginator.pm b/lib/WebGUI/Paginator.pm index 0bb05a6ac..49a3a34ac 100644 --- a/lib/WebGUI/Paginator.pm +++ b/lib/WebGUI/Paginator.pm @@ -461,7 +461,7 @@ sub getRowCount { #------------------------------------------------------------------- -=head2 new ( session, currentURL [, paginateAfter, pageNumber, formVar ] ) +=head2 new ( session, currentURL [, paginateAfter, formVar, pageNumber ] ) Constructor. @@ -477,14 +477,14 @@ The URL of the current page including attributes. The page number will be append The number of rows to display per page. If left blank it defaults to 25. -=head3 pageNumber - -By default the page number will be determined by looking at $self->session->form->process("pn"). If that is empty the page number will be defaulted to "1". If you'd like to override the page number specify it here. - =head3 formVar Specify the form variable the paginator should use in it's links. Defaults to "pn". +=head3 pageNumber + +By default the page number will be determined by looking at $self->session->form->process("pn"). If that is empty the page number will be defaulted to "1". If you'd like to override the page number specify it here. + =cut sub new { diff --git a/lib/WebGUI/Search.pm b/lib/WebGUI/Search.pm index 9c47a1bbe..8e73ece7d 100644 --- a/lib/WebGUI/Search.pm +++ b/lib/WebGUI/Search.pm @@ -151,7 +151,7 @@ sub getPaginatorResultSet { if $self->{_columns}; my $query = $self->_getQuery(\@columns); - my $paginator = WebGUI::Paginator->new($self->session, $url, $paginate, $pageNumber, $formVar); + my $paginator = WebGUI::Paginator->new($self->session, $url, $paginate, $formVar, $pageNumber); $paginator->setDataByQuery($query, undef, undef, $self->{_params}); return $paginator; }