From 8045055d127d32bfe5722cb92d8a85f37dfbe3d5 Mon Sep 17 00:00:00 2001 From: Drake Date: Fri, 1 Sep 2006 03:54:51 +0000 Subject: [PATCH] Fix: CS pagination not working for visitors due to caching error --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Asset/Wobject/Collaboration.pm | 23 +++++++++++++++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index f6f8ed873..bbcdd9009 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -35,6 +35,7 @@ - fix: project editing in project management systems not reading fields correctly - fix: JavaScript race condition in dashlet prefs form - fix: caching problem with overrides in dashlets + - fix: CS pagination does not work for visitors 7.0.6 - fix: Error in DateTime.pm diff --git a/lib/WebGUI/Asset/Wobject/Collaboration.pm b/lib/WebGUI/Asset/Wobject/Collaboration.pm index c4558ffbb..1699e0773 100644 --- a/lib/WebGUI/Asset/Wobject/Collaboration.pm +++ b/lib/WebGUI/Asset/Wobject/Collaboration.pm @@ -1101,10 +1101,23 @@ sub unsubscribe { #------------------------------------------------------------------- +sub _visitorCacheOk { + my $self = shift; + return ($self->session->user->userId eq '1' + && !$self->session->form->process('sortBy')); +} + +sub _visitorCacheKey { + my $self = shift; + my $pn = $self->session->form->process('pn'); + return "view_".$self->getId."?pn=".$pn; +} + sub view { my $self = shift; - if ($self->session->user->userId eq '1' && !$self->session->form->process("sortBy")) { - my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get; + if ($self->_visitorCacheOk) { + my $out = WebGUI::Cache->new($self->session,$self->_visitorCacheKey)->get; + $self->session->errorHandler->debug("HIT") if $out; return $out if $out; } my $scratchSortBy = $self->getId."_sortBy"; @@ -1163,8 +1176,10 @@ sub view { # is called through the api. $self->prepareView unless ($self->{_viewTemplate}); my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate}); - if ($self->session->user->userId eq '1' && !$self->session->form->process("sortBy")) { - WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->get("visitorCacheTimeout")); + if ($self->_visitorCacheOk) { + WebGUI::Cache->new($self->session,$self->_visitorCacheKey) + ->set($out,$self->get("visitorCacheTimeout")); + $self->session->errorHandler->debug("MISS"); } return $out; }