From bb584ec910b0a90070c50fff48ce185f76218e90 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Tue, 8 Feb 2011 19:11:32 -0800 Subject: [PATCH] Fix stories linking to keyword pages after export. Fixes bug #12035. --- docs/changelog/7.x.x.txt | 1 + lib/WebGUI/Asset/Story.pm | 16 +++++++++++++--- t/Asset/Story.t | 23 ++++++++++++++++++++++- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index eda521f4e..c9d3988e7 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -1,4 +1,5 @@ 7.10.10 + - fixed #12035: Story Manager - make keywords from Story view work 7.10.9 - fixed #12030: Calendar Feed Time Zone Issue diff --git a/lib/WebGUI/Asset/Story.pm b/lib/WebGUI/Asset/Story.pm index 78a7a19ef..8b1219b44 100644 --- a/lib/WebGUI/Asset/Story.pm +++ b/lib/WebGUI/Asset/Story.pm @@ -884,13 +884,23 @@ sub viewTemplateVariables { } } - my $key = WebGUI::Keyword->new($session); - my $keywords = $key->getKeywordsForAsset( { asArrayRef => 1, asset => $self }); + my $isExporting = $session->scratch->get('isExporting'); + my $key = WebGUI::Keyword->new($session); + my $keywords = $key->getKeywordsForAsset( { asArrayRef => 1, asset => $self }); $var->{keyword_loop} = []; + my $parent = $self->getParent; + my $upwards = $parent->isa('WebGUI::Asset::Wobject::StoryArchive') + ? '' #In parallel with the Keywords files + : '../' #Keywords files are one level up + ; foreach my $keyword (@{ $keywords }) { + my $keyword_url = $isExporting + ? $upwards . $archive->getKeywordFilename($keyword) + : $archive->getUrl("func=view;keyword=".$session->url->escape($keyword)) + ; push @{ $var->{keyword_loop} }, { keyword => $keyword, - url => $archive->getUrl("func=view;keyword=".$session->url->escape($keyword)), + url => $keyword_url, }; } $var->{updatedTime} = $self->formatDuration(); diff --git a/t/Asset/Story.t b/t/Asset/Story.t index 9acf123b8..122a464c1 100644 --- a/t/Asset/Story.t +++ b/t/Asset/Story.t @@ -84,7 +84,7 @@ WebGUI::Test->addToCleanup($storage1, $storage2); # ############################################################ -my $tests = 45; +my $tests = 46; plan tests => 1 + $tests + $canEditMaker->plan @@ -444,5 +444,26 @@ cmp_bag( '...asset package data has the storage locations in it' ); +############################################################ +# +# keyword variables in export mode +# +############################################################ + +$session->scratch->set('isExporting', 1); + +my $keyword_loop = $story->viewTemplateVariables->{keyword_loop}; +cmp_bag( + $keyword_loop, + [ + { keyword => "foxtrot", url => '../keyword_foxtrot.html', }, + { keyword => "tango", url => '../keyword_tango.html', }, + { keyword => "whiskey", url => '../keyword_whiskey.html', }, + ], + 'viewTemplateVariables: keywords_loop is okay' +) or diag Dumper( $keyword_loop ); +$session->scratch->delete('isExporting'); + + } #vim:ft=perl