Adding navigation caching and implementing the nested set model.
This commit is contained in:
parent
bd7ccaf29d
commit
83b93e22e8
7 changed files with 1150 additions and 344 deletions
|
|
@ -29,6 +29,7 @@ use WebGUI::SQL;
|
|||
use WebGUI::URL;
|
||||
use WebGUI::Utility;
|
||||
use WebGUI::TabForm;
|
||||
use WebGUI::Cache;
|
||||
|
||||
our @ISA = qw(Exporter);
|
||||
our @EXPORT = qw(&www_listNavigation &www_editNavigation &www_editNavigationSave &www_copyNavigation
|
||||
|
|
@ -90,6 +91,9 @@ sub www_deleteNavigationConfirm {
|
|||
return WebGUI::Privilege::vitalComponent();
|
||||
}
|
||||
WebGUI::SQL->write("delete from Navigation where navigationId = $session{form}{navigationId}");
|
||||
|
||||
# Also delete cache
|
||||
WebGUI::Cache->new("", "Navigation-".$session{config}{configFile})->deleteByRegex("m/^$session{form}{navigationId}-/");
|
||||
return www_listNavigation();
|
||||
}
|
||||
|
||||
|
|
@ -270,6 +274,9 @@ sub www_editNavigationSave {
|
|||
identifier = ".quote($session{form}{identifier}).",
|
||||
reverse = ".quote($session{form}{'reverse'})."
|
||||
where navigationId = $session{form}{navigationId}");
|
||||
# Delete from cache
|
||||
WebGUI::Cache->new("", "Navigation-".$session{config}{configFile})->deleteByRegex("m/^$session{form}{navigationId}-/");
|
||||
|
||||
return www_listNavigation();
|
||||
}
|
||||
|
||||
|
|
@ -336,6 +343,10 @@ sub www_previewNavigation {
|
|||
</font>
|
||||
</td><td class="tableData" valign="top">
|
||||
) . $nav->build . qq(</td></tr></table>);
|
||||
|
||||
# Because of the way the system is set up, the preview is cached. So let's remove it again...
|
||||
WebGUI::Cache->new($nav->{_identifier}."$session{page}{pageId}", "Navigation-".$session{config}{configFile})->delete;
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -81,8 +81,8 @@ sub _recursivelyChangeProperties {
|
|||
|
||||
_changeWobjectPrivileges($page->get("pageId")) unless $session{form}{wobjectPrivileges};
|
||||
|
||||
$page->walk_down({
|
||||
callback => sub {
|
||||
$page->traversePreOrder(
|
||||
sub {
|
||||
$currentPage = shift;
|
||||
if (WebGUI::Page::canEdit($currentPage->get('pageId'))) {
|
||||
$currentPage->setWithoutRecache({
|
||||
|
|
@ -99,9 +99,9 @@ sub _recursivelyChangeProperties {
|
|||
}
|
||||
return 1;
|
||||
}
|
||||
});
|
||||
);
|
||||
|
||||
WebGUI::Page->recachePageTree;
|
||||
WebGUI::Page->recacheNavigation;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
|
@ -194,10 +194,10 @@ sub _traversePageTree {
|
|||
|
||||
tie %wobject, 'Tie::CPHash';
|
||||
$spacer = '<img src="'.$session{config}{extrasURL}.'/spacer.gif" width=12>';
|
||||
|
||||
$page = WebGUI::Page->getPage($top);
|
||||
$page->walk_down({
|
||||
callback => sub {
|
||||
|
||||
$page->traversePreOrder(
|
||||
sub {
|
||||
($currentPage, $options) = @_;
|
||||
$currentPageId = $currentPage->get('pageId');
|
||||
$currentUrlizedTitle = $currentPage->get('urlizedTitle');
|
||||
|
|
@ -221,9 +221,8 @@ sub _traversePageTree {
|
|||
}
|
||||
$wobjects->finish;
|
||||
}
|
||||
},
|
||||
_depth => $initialDepth || 0
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
|
@ -614,7 +613,8 @@ Moves page down in the context of it's sisters.
|
|||
=cut
|
||||
sub www_movePageDown {
|
||||
if (WebGUI::Page::canEdit($session{page}{pageId})) {
|
||||
WebGUI::Page->moveDown($session{page}{pageId});
|
||||
my $page = WebGUI::Page->getPage;
|
||||
$page->moveRight;
|
||||
return "";
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
|
|
@ -631,7 +631,8 @@ Moves page up in the context of it's sisters.
|
|||
=cut
|
||||
sub www_movePageUp {
|
||||
if (WebGUI::Page::canEdit($session{page}{pageId})) {
|
||||
WebGUI::Page->moveUp($session{page}{pageId});
|
||||
my $page = WebGUI::Page->getPage;
|
||||
$page->moveLeft;
|
||||
return "";
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
|
|
@ -647,8 +648,8 @@ Same as www_movePageUp wit this difference that this module returns the www_view
|
|||
|
||||
=cut
|
||||
sub www_moveTreePageUp {
|
||||
if (WebGUI::Page::canEdit($session{page}{pageId})) {
|
||||
WebGUI::Page->moveUp($session{page}{pageId});
|
||||
if (WebGUI::Page::canEdit($session{form}{pageId})) {
|
||||
WebGUI::Page->getPage($session{form}{pageId})->moveLeft;
|
||||
return www_viewPageTree();
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
|
|
@ -664,8 +665,8 @@ Same as www_movePageDown with this difference that this module returns the www_v
|
|||
|
||||
=cut
|
||||
sub www_moveTreePageDown {
|
||||
if (WebGUI::Page::canEdit($session{page}{pageId})) {
|
||||
WebGUI::Page->moveDown($session{page}{pageId});
|
||||
if (WebGUI::Page::canEdit($session{form}{pageId})) {
|
||||
WebGUI::Page->getPage($session{form}{pageId})->moveRight;
|
||||
return www_viewPageTree();
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
|
|
@ -682,8 +683,8 @@ Another way to look at is that the mother of the current page becomes the elder
|
|||
|
||||
=cut
|
||||
sub www_moveTreePageLeft {
|
||||
if (WebGUI::Page::canEdit($session{page}{pageId})) {
|
||||
WebGUI::Page->moveLeft($session{page}{pageId});
|
||||
if (WebGUI::Page::canEdit($session{form}{pageId})) {
|
||||
WebGUI::Page->getPage($session{form}{pageId})->moveUp;
|
||||
return www_viewPageTree();
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
|
|
@ -692,8 +693,8 @@ sub www_moveTreePageLeft {
|
|||
|
||||
#-------------------------------------------------------------------
|
||||
sub www_moveTreePageRight {
|
||||
if (WebGUI::Page::canEdit($session{page}{pageId})) {
|
||||
WebGUI::Page->moveRight($session{page}{pageId});
|
||||
if (WebGUI::Page::canEdit($session{form}{pageId})) {
|
||||
WebGUI::Page->getPage($session{form}{pageId})->moveDown;
|
||||
return www_viewPageTree();
|
||||
} else {
|
||||
return WebGUI::Privilege::insufficient();
|
||||
|
|
|
|||
|
|
@ -53,11 +53,11 @@ sub _purgeUserTrash {
|
|||
|
||||
# Delete pages and all subpages
|
||||
$page = WebGUI::Page->getPage(3);
|
||||
foreach $currentPage ($page->daughters) {
|
||||
print "page: ".$currentPage->get('menuTitle')." - UID: ".$currentPage->get('bufferUserId')."\n\n\n<br>";
|
||||
foreach ($page->daughters) {
|
||||
$currentPage = WebGUI::Page->new($_);
|
||||
if ($currentPage->get('bufferUserId') == $userId) {
|
||||
foreach $currentWobjectPage ($currentPage->self_and_descendants) {
|
||||
_purgeWobjects($currentWobjectPage->get('pageId'));
|
||||
_purgeWobjects($currentWobjectPage->{'pageId'});
|
||||
}
|
||||
$currentPage->purge;
|
||||
}
|
||||
|
|
@ -209,7 +209,7 @@ sub www_deleteTrashItemConfirm {
|
|||
}
|
||||
|
||||
foreach my $currentPage ($page->self_and_descendants) {
|
||||
_purgeWobjects($currentPage->get("pageId"));
|
||||
_purgeWobjects($currentPage->{"pageId"});
|
||||
}
|
||||
|
||||
$page->purge;
|
||||
|
|
@ -254,11 +254,12 @@ sub www_emptyTrashConfirm {
|
|||
}
|
||||
if ($allUsers eq "1") {
|
||||
$page = WebGUI::Page->getPage(3);
|
||||
foreach $currentPage ($page->daughters) {
|
||||
foreach ($page->daughters) {
|
||||
$currentPage = WebGUI::Page->new($_);
|
||||
foreach $currentWobjectPage ($currentPage->self_and_descendants) {
|
||||
_purgeWobjects($currentPage->get("pageId"));
|
||||
_purgeWobjects($currentWobjectPage->{"pageId"});
|
||||
}
|
||||
$page->purge;
|
||||
$currentPage->purge;
|
||||
}
|
||||
_purgeWobjects(3);
|
||||
WebGUI::ErrorHandler::audit("emptied system trash");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue