mirror of
https://github.com/silverstripe/silverstripe-cms
synced 2024-10-22 08:05:56 +02:00
BUG Cache page icons (#2493)
This commit is contained in:
parent
84bea03cc2
commit
7045082a06
@ -12,4 +12,7 @@ SilverStripe\Core\Injector\Injector:
|
|||||||
factory: SilverStripe\Core\Cache\CacheFactory
|
factory: SilverStripe\Core\Cache\CacheFactory
|
||||||
constructor:
|
constructor:
|
||||||
namespace: "SiteTree_CreatableChildren"
|
namespace: "SiteTree_CreatableChildren"
|
||||||
|
Psr\SimpleCache\CacheInterface.SiteTree_PageIcons:
|
||||||
|
factory: SilverStripe\Core\Cache\CacheFactory
|
||||||
|
constructor:
|
||||||
|
namespace: "SiteTree_PageIcons"
|
@ -2,32 +2,59 @@
|
|||||||
|
|
||||||
namespace SilverStripe\CMS\Controllers;
|
namespace SilverStripe\CMS\Controllers;
|
||||||
|
|
||||||
|
use Psr\SimpleCache\CacheInterface;
|
||||||
|
use Psr\SimpleCache\InvalidArgumentException;
|
||||||
|
use ReflectionException;
|
||||||
use SilverStripe\CMS\Model\SiteTree;
|
use SilverStripe\CMS\Model\SiteTree;
|
||||||
use SilverStripe\Core\ClassInfo;
|
use SilverStripe\Core\ClassInfo;
|
||||||
use SilverStripe\Core\Config\Config;
|
use SilverStripe\Core\Config\Config;
|
||||||
use SilverStripe\Core\Convert;
|
use SilverStripe\Core\Convert;
|
||||||
use SilverStripe\Core\Extension;
|
use SilverStripe\Core\Extension;
|
||||||
|
use SilverStripe\Core\Flushable;
|
||||||
|
use SilverStripe\Core\Injector\Injector;
|
||||||
use SilverStripe\View\Requirements;
|
use SilverStripe\View\Requirements;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extension to include custom page icons
|
* Extension to include custom page icons
|
||||||
*/
|
*/
|
||||||
class LeftAndMainPageIconsExtension extends Extension
|
class LeftAndMainPageIconsExtension extends Extension implements Flushable
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
* @throws ReflectionException
|
||||||
|
*/
|
||||||
public function init()
|
public function init()
|
||||||
{
|
{
|
||||||
Requirements::customCSS($this->generatePageIconsCss(), CMSMain::PAGE_ICONS_ID);
|
Requirements::customCSS($this->generatePageIconsCss(), CMSMain::PAGE_ICONS_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Just broadly clears the cache on flush
|
||||||
|
*/
|
||||||
|
public static function flush()
|
||||||
|
{
|
||||||
|
Injector::inst()->get(CacheInterface::class . '.SiteTree_PageIcons')->clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Include CSS for page icons. We're not using the JSTree 'types' option
|
* Include CSS for page icons. We're not using the JSTree 'types' option
|
||||||
* because it causes too much performance overhead just to add some icons.
|
* because it causes too much performance overhead just to add some icons.
|
||||||
*
|
*
|
||||||
* @return string CSS
|
* @return string CSS
|
||||||
|
* @throws InvalidArgumentException
|
||||||
|
* @throws ReflectionException
|
||||||
*/
|
*/
|
||||||
public function generatePageIconsCss()
|
public function generatePageIconsCss()
|
||||||
{
|
{
|
||||||
|
/** @var CacheInterface $cache */
|
||||||
|
$cache = Injector::inst()->get(CacheInterface::class . '.SiteTree_PageIcons');
|
||||||
|
|
||||||
|
if ($cache->has('css')) {
|
||||||
|
return $cache->get('css');
|
||||||
|
}
|
||||||
|
|
||||||
$css = '';
|
$css = '';
|
||||||
$classes = ClassInfo::subclassesFor(SiteTree::class);
|
$classes = ClassInfo::subclassesFor(SiteTree::class);
|
||||||
foreach ($classes as $class) {
|
foreach ($classes as $class) {
|
||||||
@ -41,6 +68,9 @@ class LeftAndMainPageIconsExtension extends Extension
|
|||||||
$css .= sprintf('%s { background: transparent url(\'%s\') 0 0 no-repeat; }', $selector, $iconURL);
|
$css .= sprintf('%s { background: transparent url(\'%s\') 0 0 no-repeat; }', $selector, $iconURL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$cache->set('css', $css);
|
||||||
|
|
||||||
return $css;
|
return $css;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user