Make sure to always load the latest icons-vars.css file
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
parent
76a46191c8
commit
72ab9edb8d
|
@ -24,6 +24,7 @@ declare (strict_types = 1);
|
|||
|
||||
namespace OC\Template;
|
||||
|
||||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
use OCP\Files\IAppData;
|
||||
use OCP\Files\NotFoundException;
|
||||
use OCP\Files\SimpleFS\ISimpleFolder;
|
||||
|
@ -46,6 +47,9 @@ class IconsCacher {
|
|||
/** @var IURLGenerator */
|
||||
protected $urlGenerator;
|
||||
|
||||
/** @var ITimeFactory */
|
||||
protected $timeFactory;
|
||||
|
||||
/** @var string */
|
||||
private $iconVarRE = '/--(icon-[a-zA-Z0-9-]+):\s?url\(["\']([a-zA-Z0-9-_\~\/\.\?\=]+)[^;]+;/m';
|
||||
|
||||
|
@ -56,13 +60,17 @@ class IconsCacher {
|
|||
* @param ILogger $logger
|
||||
* @param Factory $appDataFactory
|
||||
* @param IURLGenerator $urlGenerator
|
||||
* @param ITimeFactory $timeFactory
|
||||
* @throws \OCP\Files\NotPermittedException
|
||||
*/
|
||||
public function __construct(ILogger $logger,
|
||||
Factory $appDataFactory,
|
||||
IURLGenerator $urlGenerator) {
|
||||
IURLGenerator $urlGenerator,
|
||||
ITimeFactory $timeFactory) {
|
||||
$this->logger = $logger;
|
||||
$this->appData = $appDataFactory->get('css');
|
||||
$this->urlGenerator = $urlGenerator;
|
||||
$this->timeFactory = $timeFactory;
|
||||
|
||||
try {
|
||||
$this->folder = $this->appData->getFolder('icons');
|
||||
|
@ -131,6 +139,11 @@ class IconsCacher {
|
|||
}
|
||||
|
||||
public function injectCss() {
|
||||
$mtime = $this->timeFactory->getTime();
|
||||
$file = $this->getCachedCSS();
|
||||
if ($file) {
|
||||
$mtime = $file->getMTime();
|
||||
}
|
||||
// Only inject once
|
||||
foreach (\OC_Util::$headers as $header) {
|
||||
if (
|
||||
|
@ -140,7 +153,7 @@ class IconsCacher {
|
|||
return;
|
||||
}
|
||||
}
|
||||
$linkToCSS = $this->urlGenerator->linkToRoute('core.Css.getCss', ['appName' => 'icons', 'fileName' => $this->fileName]);
|
||||
$linkToCSS = $this->urlGenerator->linkToRoute('core.Css.getCss', ['appName' => 'icons', 'fileName' => $this->fileName, 'v' => $mtime]);
|
||||
\OC_Util::addHeader('link', ['rel' => 'stylesheet', 'href' => $linkToCSS], null, true);
|
||||
}
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ use OC\Files\AppData\AppData;
|
|||
use OC\Files\AppData\Factory;
|
||||
use OC\Template\IconsCacher;
|
||||
use OCA\Theming\ThemingDefaults;
|
||||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
use OCP\Files\IAppData;
|
||||
use OCP\Files\NotFoundException;
|
||||
use OCP\Files\SimpleFS\ISimpleFile;
|
||||
|
@ -46,10 +47,13 @@ class IconsCacherTest extends \Test\TestCase {
|
|||
protected $appData;
|
||||
/** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */
|
||||
protected $urlGenerator;
|
||||
/** @var ITimeFactory|\PHPUnit_Framework_MockObject_MockObject */
|
||||
private $timeFactory;
|
||||
|
||||
protected function setUp() {
|
||||
$this->logger = $this->createMock(ILogger::class);
|
||||
$this->appData = $this->createMock(AppData::class);
|
||||
$this->timeFactory = $this->createMock(ITimeFactory::class);
|
||||
|
||||
/** @var Factory|\PHPUnit_Framework_MockObject_MockObject $factory */
|
||||
$factory = $this->createMock(Factory::class);
|
||||
|
@ -63,7 +67,8 @@ class IconsCacherTest extends \Test\TestCase {
|
|||
$this->iconsCacher = new IconsCacher(
|
||||
$this->logger,
|
||||
$factory,
|
||||
$this->urlGenerator
|
||||
$this->urlGenerator,
|
||||
$this->timeFactory
|
||||
);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue