fixed #12029: issue with keywords

This commit is contained in:
Paul Driver 2011-01-24 09:42:39 -06:00
parent 48c834eb75
commit 48bbec5c6f
3 changed files with 28 additions and 9 deletions

View file

@ -1,5 +1,6 @@
7.10.8
- rfe #12016 for the top story as well
- fixed #12029: issue with keywords
- fixed #11965: Friend Manager only shows 15 people
- fixed #12023: International URLs of aattachments & files in folder
- fixed #12024: Copied Collaboration System re-sends subscription mail

View file

@ -211,11 +211,20 @@ sub generateCloud {
[ $options->{startAsset}->get("lineage").'%', @extraPlaceholders, $maxKeywords ]);
my $cloud = HTML::TagCloud->new(levels=>$options->{cloudLevels} || 24);
while (my ($count, $keyword) = $sth->array) {
my $url
= $urlCallback ? $display->$urlCallback($keyword)
: $options->{displayFunc} ? $display->getUrl("func=".$options->{displayFunc}.";keyword=".$keyword)
: $display->getUrl("keyword=".$keyword)
;
my $url;
if ($urlCallback) {
$url = $display->$urlCallback($keyword);
}
else {
my %q = ( keyword => $keyword );
my $e = $self->session->url;
if (my $func = $options->{displayFunc}) {
$q{displayFunc} = $func;
}
$url = $display->getUrl(
join(';', map { join '=', $_, $e->escape($q{$_}) } keys %q)
);
}
$cloud->add($keyword, $url, $count);
}
return $cloud->html_and_css($maxKeywords);

View file

@ -17,7 +17,7 @@ use WebGUI::Keyword;
use WebGUI::Asset;
# load your modules here
use Test::More tests => 16; # increment this value for each test you create
use Test::More tests => 17; # increment this value for each test you create
use Test::Deep;
use Data::Dumper;
@ -30,12 +30,12 @@ isa_ok($home, "WebGUI::Asset");
my $keyword = WebGUI::Keyword->new($session);
isa_ok($keyword, "WebGUI::Keyword");
$keyword->setKeywordsForAsset({ asset=>$home, keywords=>"test key, word, foo bar"});
$keyword->setKeywordsForAsset({ asset=>$home, keywords=>"test key, word, foo & bar"});
my ($count) = $session->db->quickArray("select count(*) from assetKeyword where assetId=?", [$home->getId]);
is($count, 3, "setKeywordsForAsset() create");
cmp_bag(
$keyword->getKeywordsForAsset({ asset => $home, asArrayRef => 1}),
['test key', 'word', 'foo bar'],
['test key', 'word', 'foo & bar'],
'... check correct keywords set, returns array ref'
);
@ -43,10 +43,19 @@ my $keywords = $keyword->getKeywordsForAsset({ asset => $home, });
my @keywords = split ',\s*', $keywords;
cmp_bag(
\@keywords,
['test key', 'word', 'foo bar'],
['test key', 'word', 'foo & bar'],
'... check correct keywords set, returns string'
);
my $cloud = $keyword->generateCloud(
{
startAsset => $home,
displayFunc => 'view',
}
);
my $url = $session->url->escape('foo & bar');
like($cloud, qr/\Q$url\E/, 'escaped urls in generateCloud');
$keyword->setKeywordsForAsset({ asset=>$home, keywords=>"webgui, rules"});
my ($count) = $session->db->quickArray("select count(*) from assetKeyword where assetId=?", [$home->getId]);
is($count, 2, "setKeywordsForAsset() update");