add ability to show metadata values in head blocks.

This commit is contained in:
Chris Nehren 2008-08-21 18:51:16 +00:00
parent c15ba6147f
commit 36eb8db8fc
43 changed files with 96 additions and 49 deletions

View file

@ -28,6 +28,7 @@
- fixed: Thingy: default thing property hidden (Yung Han Khoe)
- fixed: Ad Space Description Text Keeps Repopulating
- fixed: Disabled Shipping methods still available
- added: ability to have metadata tags in head blocks
7.5.20
- fixed: DataForm acknowledgement screen shows incorrect value for Date/Time fields

View file

@ -2044,13 +2044,7 @@ sub processTemplate {
$template = WebGUI::Asset->new($self->session, $templateId,"WebGUI::Asset::Template") unless (defined $template);
if (defined $template) {
my $meta = {};
if ($self->session->setting->get("metaDataEnabled")) {
$meta = $self->getMetaDataFields();
}
foreach my $field (keys %$meta) {
$var->{$meta->{$field}{fieldName}} = $meta->{$field}{value};
}
$var = { %{ $var }, %{ $self->getMetaDataAsTemplateVariables } };
$var->{'controls'} = $self->getToolbar;
my %vars = (
%{$self->{_properties}},

View file

@ -1435,7 +1435,7 @@ sub prepareView {
}
my $template = WebGUI::Asset::Template->new($self->session,$templateId);
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -314,7 +314,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -601,7 +601,7 @@ sub prepareView {
my $template
= WebGUI::Asset::Template->new($self->session, $self->getGallery->get("templateIdViewFile"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -224,7 +224,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -145,7 +145,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -564,7 +564,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->getParent->get("threadTemplateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -99,7 +99,7 @@ sub www_view {
return '' unless $self->getParent->canView; # Go to parent for auth
my $parent = $self->getParent;
my $template = WebGUI::Asset::Template->new($self->session, $parent->get('rssCapableRssTemplateId'));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->session->http->setMimeType('text/xml');
my $var = {};

View file

@ -656,7 +656,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
my $shortcut = $self->getShortcut;
$shortcut->prepareView if defined $shortcut;

View file

@ -132,7 +132,7 @@ sub prepareView {
$self->SUPER::prepareView();
my $templateId = $self->get("templateId");
my $template = WebGUI::Asset::Template->new($self->session, $templateId);
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -211,7 +211,7 @@ sub prepareView {
$self->SUPER::prepareView();
my $templateId = $self->get("templateId");
my $template = WebGUI::Asset::Template->new($self->session, $templateId);
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -676,7 +676,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -445,7 +445,7 @@ sub prepareView {
$self->SUPER::prepareView();
my $templateId = $self->get("templateId");
my $template = WebGUI::Asset::Template->new($self->session, $templateId);
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -284,22 +284,27 @@ sub indexContent {
#-------------------------------------------------------------------
=head2 prepare ( )
=head2 prepare ( headerTemplateVariables )
This method sets the tags from the head block parameter of the template into the HTML head block in the style. You only need to call this method if you're using the HTML streaming features of WebGUI, like is done in the prepareView()/view()/www_view() methods of WebGUI assets.
=head3 headerTemplateVariables
A hash reference containing template variables to be processed for the head block. Typically obtained via $asset->getMetaDataAsTemplateVariables.
=cut
sub prepare {
my $self = shift;
my $vars = shift;
$self->{_prepared} = 1;
my $templateHeadersSent = $self->session->stow->get("templateHeadersSent") || [];
my @sent = @{$templateHeadersSent};
unless (isIn($self->getId, @sent)) { # don't send head block if we've already sent it for this template
if ($self->session->style->sent) {
$self->session->output->print($self->get("headBlock"));
$self->session->output->print($self->getParser($self->session, $self->get('parser'))->process($self->get('headBlock'), $vars));
} else {
$self->session->style->setRawHeadTags($self->get("headBlock"));
$self->session->style->setRawHeadTags($self->getParser($self->session, $self->get('parser'))->process($self->get('headBlock'), $vars));
}
}
push(@sent, $self->getId);

View file

@ -217,7 +217,7 @@ sub prepareView {
$templateId = $self->session->form->process("overrideTemplateId");
}
my $template = WebGUI::Asset::Template->new($self->session, $templateId);
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -930,7 +930,7 @@ sub prepareView {
#$self->session->errorHandler->warn("Prepare view ".$view." with template ".$self->get("templateId".$view));
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId".$view));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -1180,7 +1180,7 @@ sub prepareView {
if ($self->get('rssCapableRssEnabled')) {
$self->session->style->setLink($self->getRssUrl,{ rel=>'alternate', type=>'application/rss+xml', title=>$self->get('title') . ' RSS' });
}
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -334,7 +334,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -136,7 +136,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -961,7 +961,7 @@ sub prepareViewListAlbums {
my $self = shift;
my $template
= WebGUI::Asset::Template->new($self->session, $self->get("templateIdListAlbums"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -629,7 +629,7 @@ sub prepareView {
my $template
= WebGUI::Asset::Template->new($self->session, $templateId);
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -202,7 +202,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -153,7 +153,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->getValue("inOutTemplateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -192,7 +192,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -70,7 +70,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -92,7 +92,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -348,7 +348,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -330,7 +330,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -511,7 +511,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("projectDashboardTemplateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -437,7 +437,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -127,7 +127,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -251,7 +251,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -324,7 +324,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -573,7 +573,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -595,7 +595,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
my $i18n = WebGUI::International->new($self->session,'Asset_SyndicatedContent');
my $rssFeedSuffix=$i18n->get('RSS Feed Title Suffix');

View file

@ -946,7 +946,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
return undef;
}

View file

@ -91,7 +91,7 @@ sub prepareView {
#} else {
$template = WebGUI::Asset::Template->new($self->session, $self->get("userViewTemplateId"));
#}
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -322,7 +322,7 @@ sub prepareView {
$templateId = $self->session->form->process("overrideTemplateId");
}
my $template = WebGUI::Asset::Template->new($self->session, $templateId);
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
return undef;

View file

@ -227,7 +227,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -98,7 +98,7 @@ sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
$template->prepare;
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}

View file

@ -115,6 +115,28 @@ sub deleteMetaDataField {
}
#-------------------------------------------------------------------
=head2 getMetaDataAsTemplateVariables
Returns the metadata as template variables for use in the head block.
=cut
sub getMetaDataAsTemplateVariables {
my $self = shift;
my $var = {};
my $meta = {};
if ($self->session->setting->get("metaDataEnabled")) {
$meta = $self->getMetaDataFields();
}
foreach my $field (keys %$meta) {
$var->{$meta->{$field}{fieldName}} = $meta->{$field}{value};
}
return $var;
}
#-------------------------------------------------------------------
=head2 getMetaDataFields ( [fieldId] )

View file

@ -23,7 +23,7 @@ use WebGUI::VersionTag;
use Test::More; # increment this value for each test you create
use Test::Deep;
plan tests => 12;
plan tests => 13;
my $session = WebGUI::Test->session;
$session->user({userId => 3});
@ -189,6 +189,31 @@ cmp_deeply(
'Snippet does not have a value, yet'
);
####################################################
#
# getMetaDataAsTemplateVariables
#
####################################################
# add another field for comparison
$folder->addMetaDataField('new', 'book', '', 'Favorite book', 'radioList', "1984\nDune\nLord of the Rings\nFoundation Trilogy");
# set it; need to update $foMetaData and $byName.
$foMetaData = $folder->getMetaDataFields;
$byName = buildNameIndex($foMetaData);
$folder->updateMetaData( $byName->{'book'}, '1984' );
# check that they're equal
cmp_deeply(
$folder->getMetaDataAsTemplateVariables,
{
'book' => '1984',
'sport' => 'underwaterHockey',
'searchEngine' => undef,
},
'getMetaDataAsTemplateVariables returns proper values for folder'
);
sub buildNameIndex {
my ($fidStruct) = @_;
my $nameStruct;