diff --git a/docs/upgrades/templates-7.3.0/default-wiki-recent-changes.tmpl b/docs/upgrades/templates-7.3.0/default-wiki-recent-changes.tmpl
index 44480b014..00b98043d 100644
--- a/docs/upgrades/templates-7.3.0/default-wiki-recent-changes.tmpl
+++ b/docs/upgrades/templates-7.3.0/default-wiki-recent-changes.tmpl
@@ -7,7 +7,7 @@
diff --git a/docs/upgrades/upgrade_7.2.3-7.3.0.pl b/docs/upgrades/upgrade_7.2.3-7.3.0.pl
index 7b487bfd1..ee8e54c17 100644
--- a/docs/upgrades/upgrade_7.2.3-7.3.0.pl
+++ b/docs/upgrades/upgrade_7.2.3-7.3.0.pl
@@ -92,14 +92,6 @@ EOT
actionTakenBy varchar(22) binary not null,
PRIMARY KEY (`assetId`, `revisionDate`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-EOT
- <<'EOT',
- CREATE TABLE `WikiMaster_titleIndex` (
- `assetId` varchar(22) character set utf8 collate utf8_bin NOT NULL,
- `pageId` varchar(22) character set utf8 collate utf8_bin NOT NULL,
- `title` varchar(255) NOT NULL,
- PRIMARY KEY (`assetId`, `pageId`)
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
EOT
);
diff --git a/lib/WebGUI/Asset/WikiPage.pm b/lib/WebGUI/Asset/WikiPage.pm
index c2eecc09a..3e24a7566 100644
--- a/lib/WebGUI/Asset/WikiPage.pm
+++ b/lib/WebGUI/Asset/WikiPage.pm
@@ -255,7 +255,6 @@ sub processPropertiesFromFormPost {
if ($self->canAdminister) {
$self->update({isProtected => $self->session->form("isProtected")});
}
- $self->getWiki->updateTitleIndex([$self], from => 'edit');
delete $self->{_storageLocation};
my $size = 0;
my $storage = $self->getStorageLocation;
@@ -290,19 +289,10 @@ sub processPropertiesFromFormPost {
#-------------------------------------------------------------------
sub purge {
my $self = shift;
- $self->getWiki->updateTitleIndex([$self], from => 'purge');
- $self->session->db->write("DELETE FROM WikiPage_protected WHERE assetId = ?", [$self->getId]);
- $self->session->db->write("DELETE FROM WikiPage_extraHistory WHERE assetId = ?", [$self->getId]);
+ $self->session->db->write("DELETE FROM WikiMaster_titleIndex WHERE assetId = ?", [$self->getId]);
return $self->SUPER::purge;
}
-#-------------------------------------------------------------------
-sub purgeRevision {
- my $self = shift;
- $self->getWiki->updateTitleIndex([$self], from => 'purgeRevision');
- return $self->SUPER::purgeRevision;
-}
-
#-------------------------------------------------------------------
sub view {
my $self = shift;
@@ -313,6 +303,7 @@ sub view {
historyLabel => $i18n->get("historyLabel"),
wikiHomeLabel=>$i18n->get("wikiHomeLabel", "Asset_WikiMaster"),
searchLabel=>$i18n->get("searchLabel", "Asset_WikiMaster"),
+ searchUrl=>$self->getParent->getUrl("func=search"),
recentChangesUrl=>$self->getParent->getUrl("func=recentChanges"),
recentChangesLabel=>$i18n->get("recentChangesLabel", "Asset_WikiMaster"),
mostPopularUrl=>$self->getParent->getUrl("func=mostPopular"),
diff --git a/lib/WebGUI/Asset/Wobject/WikiMaster.pm b/lib/WebGUI/Asset/Wobject/WikiMaster.pm
index d70068861..2425e3a32 100644
--- a/lib/WebGUI/Asset/Wobject/WikiMaster.pm
+++ b/lib/WebGUI/Asset/Wobject/WikiMaster.pm
@@ -213,11 +213,11 @@ sub appendMostPopular {
my $self = shift;
my $var = shift;
my $limit = shift || $self->get("mostPopularCount");
- my $rs = $self->session->db->read("select asset.assetId, assetData.revisionDate from assetData left join asset on assetData.assetId=asset.assetId
- left join WikiPage on WikiPage.assetId=assetData.assetId and WikiPage.revisionDate=assetData.revisionDate
- where lineage like ? and lineage<>? order by views limit ?", [$self->get("lineage").'%', $self->get("lineage"), $limit]);
- while (my ($id, $version) = $rs->array) {
- my $asset = WebGUI::Asset->new($self->session, $id, "WebGUI::Asset::WikiPage", $version);
+ my $rs = $self->session->db->read("select distinct(asset.assetId) from asset left join WikiPage on WikiPage.assetId=asset.assetId
+ where lineage like ? and lineage<>? and revisionDate = (select max(revisionDate) from WikiPage where assetId = asset.assetId)
+ order by views desc limit ?", [$self->get("lineage").'%', $self->get("lineage"), $limit]);
+ while (my ($id) = $rs->array) {
+ my $asset = WebGUI::Asset->new($self->session, $id, "WebGUI::Asset::WikiPage");
push(@{$var->{mostPopular}}, {
title=>$asset->getTitle,
url=>$asset->getUrl,
@@ -231,14 +231,14 @@ sub appendRecentChanges {
my $var = shift;
my $limit = shift || $self->get("recentChangesCount");
my $rs = $self->session->db->read("select asset.assetId, revisionDate from assetData left join asset on assetData.assetId=asset.assetId where
- lineage like ? and lineage<>? order by revisionDate limit ?", [$self->get("lineage").'%', $self->get("lineage"), $self->get("recentChangesCount")]);
+ lineage like ? and lineage<>? order by revisionDate desc limit ?", [$self->get("lineage").'%', $self->get("lineage"), $self->get("recentChangesCount")]);
while (my ($id, $version) = $rs->array) {
my $asset = WebGUI::Asset->new($self->session, $id, "WebGUI::Asset::WikiPage", $version);
my $user = WebGUI::User->new($self->session, $asset->get("actionTakenBy"));
push(@{$var->{recentChanges}}, {
title=>$asset->getTitle,
url=>$asset->getUrl,
- actionTaken=>$asset->get("lastAction"),
+ actionTaken=>$asset->get("actionTaken"),
username=>$user->username,
date=>$self->session->datetime->epochToHuman($asset->get("revisionDate"))
});
@@ -249,18 +249,14 @@ sub appendRecentChanges {
sub autolinkHtml {
my $self = shift;
my $html = shift;
-
# TODO: ignore caching for now, but maybe do it later.
- my %mapping = $self->session->db->buildHash("SELECT LOWER(i.title), d.url FROM WikiMaster_titleIndex AS i INNER JOIN assetData AS d ON i.pageId = d.assetId WHERE i.assetId = ?", [$self->getId]);
+ my %mapping = $self->session->db->buildHash("SELECT LOWER(d.title), d.url FROM asset AS i INNER JOIN assetData AS d ON i.assetId = d.assetId WHERE i.parentId = ? and className='WebGUI::Asset::WikiPage'", [$self->getId]);
return $html unless %mapping;
-
foreach my $key (keys %mapping) {
$mapping{$key} = WebGUI::HTML::format('/'.$mapping{$key}, 'text');
}
-
my $matchString = join('|', map{quotemeta} keys %mapping);
my $regexp = qr/\b($matchString)\b/i;
-
my @acc = ();
my $in_a = 0;
my $p = HTML::Parser->new;
@@ -285,7 +281,6 @@ sub autolinkHtml {
$p->parse($html);
$p->eof;
undef $p; # Just in case there might be reference loops.
-
return join '', @acc;
}
@@ -477,19 +472,6 @@ sub purge {
return $self->SUPER::purge;
}
-#-------------------------------------------------------------------
-sub updateTitleIndex {
- my $self = shift;
- my @pages = @{+shift};
- my %opts = @_;
- return unless @pages;
- $self->session->db->write("DELETE FROM WikiMaster_titleIndex WHERE assetId = ? AND pageId IN (".join(', ', ('?') x @pages).")", [$self->getId, map{$_->getId} @pages]);
- foreach my $page (@pages) {
- my ($pageId, $title) = ($page->getId, $page->get('title'));
- $self->session->db->write("INSERT INTO WikiMaster_titleIndex (assetId, pageId, title) VALUES (?, ?, ?)", [$self->getId, $pageId, $title]);
- }
-}
-
#-------------------------------------------------------------------
sub view {
my $self = shift;
@@ -516,17 +498,16 @@ sub www_mostPopular {
my $self = shift;
my $i18n = WebGUI::International->new($self->session, "Asset_WikiMaster");
my $var = {
- resultsLabel=>$i18n->get("resultsLabel"),
- title => WebGUI::International->new($self->session, 'Asset_WikiMaster')->get('recentChanges title'),
+ title => $i18n->get('mostPopularLabel'),
+ recentChangesUrl=>$self->getUrl("func=recentChanges"),
+ recentChangesLabel=>$i18n->get("recentChangesLabel"),
wikiHomeLabel=>$i18n->get("wikiHomeLabel"),
searchLabel=>$i18n->get("searchLabel"),
searchUrl=>$self->getUrl("func=search"),
- recentChangesUrl=>$self->getUrl("func=recentChanges"),
- recentChangesLabel=>$i18n->get("recentChangesLabel"),
wikiHomeUrl=>$self->getUrl,
};
$self->appendMostPopular($var);
- return $self->processStyle($self->processTemplate($var, $self->get('recentChangesTemplateId')));
+ return $self->processStyle($self->processTemplate($var, $self->get('mostPopularTemplateId')));
}
#-------------------------------------------------------------------
@@ -534,8 +515,7 @@ sub www_recentChanges {
my $self = shift;
my $i18n = WebGUI::International->new($self->session, "Asset_WikiMaster");
my $var = {
- resultsLabel=>$i18n->get("resultsLabel"),
- title => WebGUI::International->new($self->session, 'Asset_WikiMaster')->get('recentChanges title'),
+ title => $i18n->get('recentChangesLabel'),
wikiHomeLabel=>$i18n->get("wikiHomeLabel"),
searchLabel=>$i18n->get("searchLabel"),
searchUrl=>$self->getUrl("func=search"),