Change how the view template variables work. It no longer appends, viewTemplateVars

makes them all.
This commit is contained in:
Colin Kuskie 2009-03-05 20:43:57 +00:00
parent 338433e78d
commit 17b124c39f
2 changed files with 15 additions and 24 deletions

View file

@ -258,31 +258,21 @@ sub view {
my $session = $self->session; my $session = $self->session;
#This automatically creates template variables for all of your wobject's properties. #This automatically creates template variables for all of your wobject's properties.
my $var = $self->get; my $var = $self->viewTemplateVariables();
$self->viewTemplateVariables($var);
#This is an example of debugging code to help you diagnose problems.
#WebGUI::ErrorHandler::warn($self->get("templateId"));
#use Data::Dumper;
#$session->log->warn(Dumper $var);
return $self->processTemplate($var, undef, $self->{_viewTemplate}); return $self->processTemplate($var, undef, $self->{_viewTemplate});
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------
=head2 viewTemplateVars ( $var ) =head2 viewTemplateVars ( )
Add template variables to the existing template variables. Make template variables for the view template.
=head3 $var
Template variables will be added onto this hash ref.
=cut =cut
sub viewTemplateVariables { sub viewTemplateVariables {
my ($self, $var) = @_; my ($self) = @_;
my $session = $self->session; my $session = $self->session;
##Only return assetIds, we'll build data for the things that are actually displayed. ##Only return assetIds, we'll build data for the things that are actually displayed.
my $storySql = $self->getLineageSql(['descendants'],{ my $storySql = $self->getLineageSql(['descendants'],{
@ -292,8 +282,9 @@ sub viewTemplateVariables {
my $p = WebGUI::Paginator->new($session, $self->getUrl, $self->get('storiesPerPage')); my $p = WebGUI::Paginator->new($session, $self->getUrl, $self->get('storiesPerPage'));
$p->setDataByQuery($storySql); $p->setDataByQuery($storySql);
my $storyIds = $p->getPageData(); my $storyIds = $p->getPageData();
$var->{date_loop} = []; my $var = $self->get;
$p->appendTemplateVars($var); $p->appendTemplateVars($var);
$var->{date_loop} = [];
my $lastStoryDate = ''; my $lastStoryDate = '';
my $datePointer = undef; my $datePointer = undef;
##Only build objects for the assets that we need ##Only build objects for the assets that we need
@ -319,7 +310,7 @@ sub viewTemplateVariables {
$var->{addStoryUrl} = $self->getUrl('func=add;class=WebGUI::Asset::Story'); $var->{addStoryUrl} = $self->getUrl('func=add;class=WebGUI::Asset::Story');
$var->{canPostStories} = $self->canPostStories; $var->{canPostStories} = $self->canPostStories;
return 1; return $var;
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------

View file

@ -24,6 +24,7 @@ use WebGUI::Test; # Must use this before any other WebGUI modules
use WebGUI::Test::Maker::Permission; use WebGUI::Test::Maker::Permission;
use WebGUI::Session; use WebGUI::Session;
use WebGUI::Text; use WebGUI::Text;
use WebGUI::Utility;
use WebGUI::DateTime; use WebGUI::DateTime;
use DateTime; use DateTime;
@ -173,10 +174,9 @@ $story = $newFolder->addChild({ className => 'WebGUI::Asset::Story', title => "T
$session->db->write("update asset set creationDate=$tomorrow where assetId=?",[$story->getId]); $session->db->write("update asset set creationDate=$tomorrow where assetId=?",[$story->getId]);
my $templateVars; my $templateVars;
$templateVars = {}; $templateVars = $archive->viewTemplateVariables();
$archive->viewTemplateVariables($templateVars);
KEY: foreach my $key (keys %{ $templateVars }) { KEY: foreach my $key (keys %{ $templateVars }) {
next KEY unless $key =~ /pagination\./; next KEY if isIn($key, qw/canPostStories addStoryUrl date_loop/);
delete $templateVars->{$key}; delete $templateVars->{$key};
} }
@ -220,16 +220,16 @@ $folder->addChild({ className => 'WebGUI::Asset::Story', title => 'Story 3'});
$folder->addChild({ className => 'WebGUI::Asset::Story', title => 'Story 4'}); $folder->addChild({ className => 'WebGUI::Asset::Story', title => 'Story 4'});
$archive->update({storiesPerPage => 3}); $archive->update({storiesPerPage => 3});
##Don't assume that Admin and Visitor have the same timezone.
$session->user({userId => 3}); $session->user({userId => 3});
($wgBdayMorn,undef) = $session->datetime->dayStartEnd($wgBday);
$templateVars = {}; $templateVars = $archive->viewTemplateVariables();
$archive->viewTemplateVariables($templateVars);
KEY: foreach my $key (keys %{ $templateVars }) { KEY: foreach my $key (keys %{ $templateVars }) {
next KEY unless $key =~ /pagination\./; next KEY if isIn($key, qw/canPostStories addStoryUrl date_loop/);
delete $templateVars->{$key}; delete $templateVars->{$key};
} }
cmp_deeply( cmp_deeply(
$templateVars, $templateVars,
{ {