From 39b44504c36b556e52312aea458ee8edfc891bf6 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Tue, 4 May 2010 15:04:27 -0700 Subject: [PATCH] Finish wiki sub-category API code, with upgrade sub and tests. --- docs/upgrades/upgrade_7.9.3-7.9.4.pl | 10 +++++++--- lib/WebGUI/Asset/Wobject/WikiMaster.pm | 7 ++++--- t/Asset/Wobject/WikiMaster.t | 24 ++++++++++++------------ 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/docs/upgrades/upgrade_7.9.3-7.9.4.pl b/docs/upgrades/upgrade_7.9.3-7.9.4.pl index 921592ed3..18d7d96fd 100644 --- a/docs/upgrades/upgrade_7.9.3-7.9.4.pl +++ b/docs/upgrades/upgrade_7.9.3-7.9.4.pl @@ -96,9 +96,13 @@ sub addWikiSubKeywords { # and here's our code $session->db->write(<session->db->buildArrayRef('delete from WikiMasterKeywords where assetId=? and keyword=?', [$self->getId, $keyword]); + return $self->session->db->write('delete from WikiMasterKeywords where assetId=? and keyword=?', [$self->getId, $keyword]); } #------------------------------------------------------------------- @@ -545,7 +545,7 @@ sub getKeywordHierarchy { KEYWORD: foreach my $keyword (sort @{ $keywords }) { my $datum = { title => $keyword, ##Note, same as keyword - url => $self->getUrl('?func=byKeyword;keyword='.$keyword), + url => $self->getUrl('func=byKeyword;keyword='.$keyword), }; ##Prevent recursion if seen again if (! $seen->{$keyword}++) { @@ -768,11 +768,12 @@ The new set of keywords. sub setSubKeywords { my ( $self, $keyword, @subKeywords ) = @_; $self->deleteSubKeywords($keyword); - my $stuffIt = $self->session->db->prepare('insert into WikiMasterKeyword (assetId, keyword, subKeyword) values (?,?,?))'); + my $stuffIt = $self->session->db->prepare('insert into WikiMasterKeywords (assetId, keyword, subKeyword) values (?,?,?)'); KEYWORD: foreach my $subKeyword (@subKeywords) { next unless $keyword; $stuffIt->execute([$self->getId, $keyword, $subKeyword]); } + $stuffIt->finish; return 1; } diff --git a/t/Asset/Wobject/WikiMaster.t b/t/Asset/Wobject/WikiMaster.t index 5c60959c9..6b6dd5e56 100644 --- a/t/Asset/Wobject/WikiMaster.t +++ b/t/Asset/Wobject/WikiMaster.t @@ -86,7 +86,7 @@ cmp_deeply( $hierarchy->[0], { title => 'criminals', - url => '/testwiki/criminals', + url => '/testwiki?func=byKeyword;keyword=criminals', }, "getKeywordVariables, does not alter the original hierarchy passed in", ); @@ -96,19 +96,19 @@ cmp_deeply( [ { title => 'criminals', - url => '/testwiki/criminals', + url => '/testwiki?func=byKeyword;keyword=criminals', level => 0, indent_loop => [], }, { title => 'inmates', - url => '/testwiki/inmates', + url => '/testwiki?func=byKeyword;keyword=inmates', level => 0, indent_loop => [], }, { title => 'staff', - url => '/testwiki/staff', + url => '/testwiki?func=byKeyword;keyword=staff', level => 0, indent_loop => [], }, @@ -133,9 +133,9 @@ cmp_deeply( ); $wiki->update({topLevelKeywords => 'criminals,inmates,staff'}); -$page_set{criminals}->update({keywords => 'red,andy'}); -$page_set{inmates}->update({keywords => 'brooks,heywood'}); -$page_set{staff}->update({keywords => 'norton,hadley'}); +$wiki->setSubKeywords('criminals', 'red', 'andy'); +$wiki->setSubKeywords('inmates', 'brooks', 'heywood'); +$wiki->setSubKeywords('staff', 'norton', 'hadley'); foreach my $title (qw/red andy brooks heywood norton hadley/) { $page_set{$title} = $wiki->addChild({ @@ -152,21 +152,21 @@ cmp_bag( $wiki->getKeywordHierarchy(), [ { - title => 'criminals', url => '/testwiki/criminals', + title => 'criminals', url => '/testwiki?func=byKeyword;keyword=criminals', children => bag( superhashof({ title => 'red', }), superhashof({ title => 'andy', }), ), }, { - title => 'inmates', url => '/testwiki/inmates', + title => 'inmates', url => '/testwiki?func=byKeyword;keyword=inmates', children => bag( superhashof({ title => 'heywood', }), superhashof({ title => 'brooks', }), ), }, { - title => 'staff', url => '/testwiki/staff', + title => 'staff', url => '/testwiki?func=byKeyword;keyword=staff', children => bag( superhashof({ title => 'norton', }), superhashof({ title => 'hadley', }), @@ -177,8 +177,8 @@ cmp_bag( ); ##Check depth-first display, and try to make a keyword loop -$page_set{andy}->update({keywords => 'criminals,inmates'}); -$page_set{brooks}->update({keywords => 'criminals'}); +$wiki->setSubKeywords('andy', 'criminals', 'inmates'); +$wiki->setSubKeywords('brooks', 'criminals'); my $tag_set3 = WebGUI::VersionTag->getWorking($session); $tag_set3->commit;