Finish wiki sub-category API code, with upgrade sub and tests.
This commit is contained in:
parent
984003123c
commit
39b44504c3
3 changed files with 23 additions and 18 deletions
|
|
@ -96,9 +96,13 @@ sub addWikiSubKeywords {
|
||||||
# and here's our code
|
# and here's our code
|
||||||
$session->db->write(<<EOSQL);
|
$session->db->write(<<EOSQL);
|
||||||
CREATE TABLE IF NOT EXISTS WikiMasterKeywords (
|
CREATE TABLE IF NOT EXISTS WikiMasterKeywords (
|
||||||
assetId CHAR(22) binary not null primary key,
|
assetId CHAR(22) binary not null,
|
||||||
keyword CHAR(64),
|
keyword CHAR(64) not null,
|
||||||
subkeyword CHAR(64)
|
subKeyword CHAR(64),
|
||||||
|
PRIMARY KEY (`assetId`,`keyword`, `subKeyword`),
|
||||||
|
KEY `assetId` (`assetId`),
|
||||||
|
KEY `keyword` (`keyword`),
|
||||||
|
KEY `subKeyword` (`subKeyword`)
|
||||||
)
|
)
|
||||||
EOSQL
|
EOSQL
|
||||||
print "DONE!\n" unless $quiet;
|
print "DONE!\n" unless $quiet;
|
||||||
|
|
|
||||||
|
|
@ -481,7 +481,7 @@ The main keyword to key off of.
|
||||||
|
|
||||||
sub deleteSubKeywords {
|
sub deleteSubKeywords {
|
||||||
my ( $self, $keyword ) = @_;
|
my ( $self, $keyword ) = @_;
|
||||||
return $self->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 }) {
|
KEYWORD: foreach my $keyword (sort @{ $keywords }) {
|
||||||
my $datum = {
|
my $datum = {
|
||||||
title => $keyword, ##Note, same as keyword
|
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
|
##Prevent recursion if seen again
|
||||||
if (! $seen->{$keyword}++) {
|
if (! $seen->{$keyword}++) {
|
||||||
|
|
@ -768,11 +768,12 @@ The new set of keywords.
|
||||||
sub setSubKeywords {
|
sub setSubKeywords {
|
||||||
my ( $self, $keyword, @subKeywords ) = @_;
|
my ( $self, $keyword, @subKeywords ) = @_;
|
||||||
$self->deleteSubKeywords($keyword);
|
$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) {
|
KEYWORD: foreach my $subKeyword (@subKeywords) {
|
||||||
next unless $keyword;
|
next unless $keyword;
|
||||||
$stuffIt->execute([$self->getId, $keyword, $subKeyword]);
|
$stuffIt->execute([$self->getId, $keyword, $subKeyword]);
|
||||||
}
|
}
|
||||||
|
$stuffIt->finish;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ cmp_deeply(
|
||||||
$hierarchy->[0],
|
$hierarchy->[0],
|
||||||
{
|
{
|
||||||
title => 'criminals',
|
title => 'criminals',
|
||||||
url => '/testwiki/criminals',
|
url => '/testwiki?func=byKeyword;keyword=criminals',
|
||||||
},
|
},
|
||||||
"getKeywordVariables, does not alter the original hierarchy passed in",
|
"getKeywordVariables, does not alter the original hierarchy passed in",
|
||||||
);
|
);
|
||||||
|
|
@ -96,19 +96,19 @@ cmp_deeply(
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
title => 'criminals',
|
title => 'criminals',
|
||||||
url => '/testwiki/criminals',
|
url => '/testwiki?func=byKeyword;keyword=criminals',
|
||||||
level => 0,
|
level => 0,
|
||||||
indent_loop => [],
|
indent_loop => [],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title => 'inmates',
|
title => 'inmates',
|
||||||
url => '/testwiki/inmates',
|
url => '/testwiki?func=byKeyword;keyword=inmates',
|
||||||
level => 0,
|
level => 0,
|
||||||
indent_loop => [],
|
indent_loop => [],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title => 'staff',
|
title => 'staff',
|
||||||
url => '/testwiki/staff',
|
url => '/testwiki?func=byKeyword;keyword=staff',
|
||||||
level => 0,
|
level => 0,
|
||||||
indent_loop => [],
|
indent_loop => [],
|
||||||
},
|
},
|
||||||
|
|
@ -133,9 +133,9 @@ cmp_deeply(
|
||||||
);
|
);
|
||||||
|
|
||||||
$wiki->update({topLevelKeywords => 'criminals,inmates,staff'});
|
$wiki->update({topLevelKeywords => 'criminals,inmates,staff'});
|
||||||
$page_set{criminals}->update({keywords => 'red,andy'});
|
$wiki->setSubKeywords('criminals', 'red', 'andy');
|
||||||
$page_set{inmates}->update({keywords => 'brooks,heywood'});
|
$wiki->setSubKeywords('inmates', 'brooks', 'heywood');
|
||||||
$page_set{staff}->update({keywords => 'norton,hadley'});
|
$wiki->setSubKeywords('staff', 'norton', 'hadley');
|
||||||
|
|
||||||
foreach my $title (qw/red andy brooks heywood norton hadley/) {
|
foreach my $title (qw/red andy brooks heywood norton hadley/) {
|
||||||
$page_set{$title} = $wiki->addChild({
|
$page_set{$title} = $wiki->addChild({
|
||||||
|
|
@ -152,21 +152,21 @@ cmp_bag(
|
||||||
$wiki->getKeywordHierarchy(),
|
$wiki->getKeywordHierarchy(),
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
title => 'criminals', url => '/testwiki/criminals',
|
title => 'criminals', url => '/testwiki?func=byKeyword;keyword=criminals',
|
||||||
children => bag(
|
children => bag(
|
||||||
superhashof({ title => 'red', }),
|
superhashof({ title => 'red', }),
|
||||||
superhashof({ title => 'andy', }),
|
superhashof({ title => 'andy', }),
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title => 'inmates', url => '/testwiki/inmates',
|
title => 'inmates', url => '/testwiki?func=byKeyword;keyword=inmates',
|
||||||
children => bag(
|
children => bag(
|
||||||
superhashof({ title => 'heywood', }),
|
superhashof({ title => 'heywood', }),
|
||||||
superhashof({ title => 'brooks', }),
|
superhashof({ title => 'brooks', }),
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title => 'staff', url => '/testwiki/staff',
|
title => 'staff', url => '/testwiki?func=byKeyword;keyword=staff',
|
||||||
children => bag(
|
children => bag(
|
||||||
superhashof({ title => 'norton', }),
|
superhashof({ title => 'norton', }),
|
||||||
superhashof({ title => 'hadley', }),
|
superhashof({ title => 'hadley', }),
|
||||||
|
|
@ -177,8 +177,8 @@ cmp_bag(
|
||||||
);
|
);
|
||||||
|
|
||||||
##Check depth-first display, and try to make a keyword loop
|
##Check depth-first display, and try to make a keyword loop
|
||||||
$page_set{andy}->update({keywords => 'criminals,inmates'});
|
$wiki->setSubKeywords('andy', 'criminals', 'inmates');
|
||||||
$page_set{brooks}->update({keywords => 'criminals'});
|
$wiki->setSubKeywords('brooks', 'criminals');
|
||||||
|
|
||||||
my $tag_set3 = WebGUI::VersionTag->getWorking($session);
|
my $tag_set3 = WebGUI::VersionTag->getWorking($session);
|
||||||
$tag_set3->commit;
|
$tag_set3->commit;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue