Forward port XML encoding for template based RSS feeds in the Gallery.

This commit is contained in:
Colin Kuskie 2009-08-05 22:16:38 +00:00
parent 55e0feb687
commit 3b577599f5
6 changed files with 29 additions and 24 deletions

View file

@ -27,6 +27,7 @@
- fixed #10721: Invalid/Missing Style TemplateIds in use - fixed #10721: Invalid/Missing Style TemplateIds in use
- fixed #10029: Account CSS rule scoping - fixed #10029: Account CSS rule scoping
- fixed #10641: Matrix Asset - Compare/Search buttons broken in Opera - fixed #10641: Matrix Asset - Compare/Search buttons broken in Opera
- fixed #10723: RSS Feed Error in Gallery
7.7.16 7.7.16
- fixed #10590: Session::DateTime->secondsToInterval doesn't allow 7 weeks - fixed #10590: Session::DateTime->secondsToInterval doesn't allow 7 weeks

View file

@ -18,6 +18,7 @@ use Tie::IxHash;
use WebGUI::International; use WebGUI::International;
use WebGUI::Utility; use WebGUI::Utility;
use XML::Simple; use XML::Simple;
use WebGUI::HTML;
=head1 NAME =head1 NAME
@ -1212,7 +1213,12 @@ sub www_listAlbumsRss {
for my $key ( qw( url ) ) { for my $key ( qw( url ) ) {
$assetVar->{ $key } = $self->session->url->getSiteURL . $assetVar->{ $key }; $assetVar->{ $key } = $self->session->url->getSiteURL . $assetVar->{ $key };
} }
# Encode XML entities
for my $key ( qw( title description synopsis gallery_title gallery_menuTitle ) ) {
$assetVar->{ $key } = WebGUI::HTML::filter($assetVar->{$key}, 'xml');
}
# Additional vars for RSS # Additional vars for RSS
$assetVar->{ rssDate } $assetVar->{ rssDate }
= $session->datetime->epochToMail( $assetVar->{ creationDate } ); = $session->datetime->epochToMail( $assetVar->{ creationDate } );

View file

@ -20,6 +20,7 @@ use File::Temp qw{ tempdir };
use Tie::IxHash; use Tie::IxHash;
use WebGUI::International; use WebGUI::International;
use WebGUI::Utility; use WebGUI::Utility;
use WebGUI::HTML;
use Archive::Any; use Archive::Any;
@ -1069,7 +1070,7 @@ sub www_addFileService {
# my $filePath = $storage->getPath( $storage->getFiles->[0] ); # my $filePath = $storage->getPath( $storage->getFiles->[0] );
# $self->setFile( $filePath ); # $self->setFile( $filePath );
# $storage->delete; # $storage->delete;
$session->log->warn('XX:'. $filename); #$session->log->warn('XX:'. $filename);
$file->requestAutoCommit; $file->requestAutoCommit;
@ -1413,18 +1414,27 @@ sub www_viewRss {
my $var = $self->getTemplateVars; my $var = $self->getTemplateVars;
$self->appendTemplateVarsFileLoop( $var, $self->getFileIds ); $self->appendTemplateVarsFileLoop( $var, $self->getFileIds );
# Fix URLs to be full URLs # Fix URLs to be full URLs
for my $key ( qw( url url_viewRss ) ) { for my $key ( qw( url url_viewRss ) ) {
$var->{ $key } = $self->session->url->getSiteURL . $var->{ $key }; $var->{ $key } = $self->session->url->getSiteURL . $var->{ $key };
} }
# Encode XML entities
for my $key ( qw( title description synopsis gallery_title gallery_menuTitle ) ) {
$var->{ $key } = WebGUI::HTML::filter($var->{$key}, 'xml');
}
# Process the file loop to add additional params # Process the file loop to add additional params
for my $file ( @{ $var->{file_loop} } ) { for my $file ( @{ $var->{file_loop} } ) {
# Fix URLs to be full URLs # Fix URLs to be full URLs
for my $key ( qw( url ) ) { for my $key ( qw( url ) ) {
$file->{ $key } = $self->session->url->getSiteURL . $file->{$key}; $file->{ $key } = $self->session->url->getSiteURL . $file->{$key};
} }
# Encode XML entities
for my $key ( qw( title description synopsis ) ) {
$file->{ $key } = WebGUI::HTML::filter($file->{$key}, 'xml');
}
$file->{ rssDate } $file->{ rssDate }
= $self->session->datetime->epochToMail( $file->{creationDate} ); = $self->session->datetime->epochToMail( $file->{creationDate} );

View file

@ -25,6 +25,7 @@ my $session = WebGUI::Test->session;
my $node = WebGUI::Asset->getImportNode($session); my $node = WebGUI::Asset->getImportNode($session);
my $versionTag = WebGUI::VersionTag->getWorking($session); my $versionTag = WebGUI::VersionTag->getWorking($session);
$versionTag->set({name=>"Gallery Test"}); $versionTag->set({name=>"Gallery Test"});
WebGUI::Test->tagsToRollback($versionTag);
my $maker = WebGUI::Test::Maker::Permission->new; my $maker = WebGUI::Test::Maker::Permission->new;
my $gallery; my $gallery;
@ -75,9 +76,3 @@ $maker->prepare(
plan tests => $maker->plan; plan tests => $maker->plan;
$maker->run; $maker->run;
#----------------------------------------------------------------------------
# Cleanup
END {
$versionTag->rollback;
}

View file

@ -20,6 +20,7 @@ use Test::More;
use WebGUI::Test; # Must use this before any other WebGUI modules use WebGUI::Test; # Must use this before any other WebGUI modules
use WebGUI::Session; use WebGUI::Session;
use Test::Deep; use Test::Deep;
plan skip_all => 'set WEBGUI_LIVE to enable this test' unless $ENV{WEBGUI_LIVE};
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# Init # Init
@ -58,6 +59,7 @@ my $gallery
} ); } );
$versionTags[-1]->commit; $versionTags[-1]->commit;
WebGUI::Test->tagsToRollback(@versionTags);
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# Tests # Tests
@ -110,14 +112,6 @@ $mech->content_contains(
my $album = WebGUI::Asset->newByDynamicClass( $session, $gallery->getAlbumIds->[0] ); my $album = WebGUI::Asset->newByDynamicClass( $session, $gallery->getAlbumIds->[0] );
cmp_deeply( $properties, subhashof( $album->get ), "Properties from edit form are set correctly" ); cmp_deeply( $properties, subhashof( $album->get ), "Properties from edit form are set correctly" );
#----------------------------------------------------------------------------
# Cleanup
END {
for my $tag ( @versionTags ) {
$tag->rollback;
}
}
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# getMechLogin( baseUrl, WebGUI::User, "identifier" ) # getMechLogin( baseUrl, WebGUI::User, "identifier" )
# Returns a Test::WWW::Mechanize session after logging in the given user using # Returns a Test::WWW::Mechanize session after logging in the given user using

View file

@ -20,6 +20,7 @@ use WebGUI::Session;
use Test::More; use Test::More;
use Test::Deep; use Test::Deep;
use XML::Simple; use XML::Simple;
plan skip_all => 'set WEBGUI_LIVE to enable this test' unless $ENV{WEBGUI_LIVE};
#---------------------------------------------------------------------------- #----------------------------------------------------------------------------
# Init # Init
@ -27,6 +28,7 @@ my $session = WebGUI::Test->session;
my $node = WebGUI::Asset->getImportNode($session); my $node = WebGUI::Asset->getImportNode($session);
my $versionTag = WebGUI::VersionTag->getWorking($session); my $versionTag = WebGUI::VersionTag->getWorking($session);
$versionTag->set({name=>"Album Test"}); $versionTag->set({name=>"Album Test"});
WebGUI::Test->tagsToRollback($versionTag);
my $gallery my $gallery
= $node->addChild({ = $node->addChild({
className => "WebGUI::Asset::Wobject::Gallery", className => "WebGUI::Asset::Wobject::Gallery",
@ -40,13 +42,16 @@ my $album
= $gallery->addChild({ = $gallery->addChild({
className => "WebGUI::Asset::Wobject::GalleryAlbum", className => "WebGUI::Asset::Wobject::GalleryAlbum",
ownerUserId => "3", # Admin ownerUserId => "3", # Admin
description => "An RSS Description", description => "An RSS Description with an extra  space",
title => "Title with extra  dash",
}, },
undef, undef,
undef, undef,
{ {
skipAutoCommitWorkflows => 1, skipAutoCommitWorkflows => 1,
}); });
diag $album->get('title');
diag $album->get('description');
my @photos; my @photos;
for my $i ( 0 .. 5 ) { for my $i ( 0 .. 5 ) {
$photos[ $i ] $photos[ $i ]
@ -114,9 +119,3 @@ cmp_deeply(
}, },
"RSS Datastructure is complete and correct", "RSS Datastructure is complete and correct",
); );
#----------------------------------------------------------------------------
# Cleanup
END {
$versionTag->rollback();
}