Skip to content

Commit

Permalink
Cache buttons
Browse files Browse the repository at this point in the history
  • Loading branch information
Michel van der Steege committed Aug 17, 2018
1 parent 6108dc9 commit a69af4d
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 3 deletions.
4 changes: 4 additions & 0 deletions _config/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,7 @@ SilverStripe\CMS\Model\SiteTree:
SilverStripe\CMS\Controllers\ContentController:
extensions:
- TheWebmen\Staticpages\Extensions\StaticpagesControllerExtension

SilverStripe\CMS\Controllers\CMSPageEditController:
extensions:
- TheWebmen\Staticpages\Extensions\CMSPageEditControllerExtension
57 changes: 57 additions & 0 deletions src/Extensions/CMSPageEditControllerExtension.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<?php

namespace TheWebmen\Staticpages\Extensions;

use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Control\HTTPResponse;
use SilverStripe\Core\Extension;

class CMSPageEditControllerExtension extends Extension {

private static $allowed_actions = [
'RemovePageCache',
'RemovePageAndChildPagesCache'
];

public function RemovePageAndChildPagesCache(){

$pageID = $this->owner->getRequest()->postVar('ID');
$page = SiteTree::get()->byID($pageID);
if(!$page || !$page->exists()){
$this->owner->getResponse()->addHeader(
'X-Status',
'Something went wrong'
);
return $this->owner->getResponseNegotiator()->respond($this->owner->getRequest());
}

$page->RemoveStaticCacheRecursive();

$this->owner->getResponse()->addHeader(
'X-Status',
'Cache removed!'
);
return $this->owner->getResponseNegotiator()->respond($this->owner->getRequest());
}

public function RemovePageCache(){
$pageID = $this->owner->getRequest()->postVar('ID');
$page = SiteTree::get()->byID($pageID);
if(!$page || !$page->exists()){
$this->owner->getResponse()->addHeader(
'X-Status',
'Something went wrong'
);
return $this->owner->getResponseNegotiator()->respond($this->owner->getRequest());
}

$page->RemoveStaticCache();

$this->owner->getResponse()->addHeader(
'X-Status',
'Cache removed!'
);
return $this->owner->getResponseNegotiator()->respond($this->owner->getRequest());
}

}
27 changes: 24 additions & 3 deletions src/Extensions/StaticpagesExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,23 @@

namespace TheWebmen\Staticpages\Extensions;

use SilverStripe\CMS\Model\SiteTree;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\FormAction;
use SilverStripe\ORM\DataExtension;
use TheWebmen\Staticpages\Controllers\StaticpagesController;

class StaticpagesExtension extends DataExtension {

public function onAfterWrite()
{
parent::onAfterWrite();
public function RemoveStaticCacheRecursive(){
$this->RemoveStaticCache();
$children = SiteTree::get()->filter('ParentID', $this->owner->ID);
foreach($children as $child){
$child->RemoveStaticCacheRecursive();
}
}

public function RemoveStaticCache(){
$url = $this->owner->AbsoluteLink();
$controller = new StaticpagesController();
$controller->removeCacheForURL($url);
Expand All @@ -26,4 +35,16 @@ public function onAfterWrite()
}
}

public function onAfterWrite()
{
parent::onAfterWrite();
$this->RemoveStaticCache();
}

public function updateCMSActions(FieldList $actions)
{
$actions->addFieldToTab('ActionMenus.MoreOptions', FormAction::create('RemovePageCache', 'Remove page cache')->removeExtraClass('btn-primary')->addExtraClass('btn-secondary'));
$actions->addFieldToTab('ActionMenus.MoreOptions', FormAction::create('RemovePageAndChildPagesCache', 'Remove page and child pages cache')->removeExtraClass('btn-primary')->addExtraClass('btn-secondary'));
}

}

0 comments on commit a69af4d

Please sign in to comment.