diff options
author | Julius Härtl <jus@bitgrid.net> | 2018-11-12 11:00:56 +0100 |
---|---|---|
committer | Julius Härtl <jus@bitgrid.net> | 2018-11-12 11:00:56 +0100 |
commit | 26b160cc439d0d3396fe54ee7222a0642bfbd022 (patch) | |
tree | ebc7693536646e8d30b845f29eda3c4afd4a01f1 | |
parent | d6de8ebeb272d677a4bf1930c6eb42c1bf57b844 (diff) | |
download | nextcloud-server-26b160cc439d0d3396fe54ee7222a0642bfbd022.tar.gz nextcloud-server-26b160cc439d0d3396fe54ee7222a0642bfbd022.zip |
Make sure to always load the latest icons-vars.css file
Signed-off-by: Julius Härtl <jus@bitgrid.net>
-rw-r--r-- | lib/private/Template/IconsCacher.php | 18 | ||||
-rw-r--r-- | tests/lib/Template/IconsCacherTest.php | 7 |
2 files changed, 21 insertions, 4 deletions
diff --git a/lib/private/Template/IconsCacher.php b/lib/private/Template/IconsCacher.php index c91bf13ad53..1020cd24dcd 100644 --- a/lib/private/Template/IconsCacher.php +++ b/lib/private/Template/IconsCacher.php @@ -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'; @@ -58,14 +62,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'); @@ -216,6 +223,11 @@ class IconsCacher { } public function injectCss() { + $mtime = $this->timeFactory->getTime(); + $file = $this->getCachedList(); + if ($file) { + $mtime = $file->getMTime(); + } // Only inject once foreach (\OC_Util::$headers as $header) { if ( @@ -225,8 +237,8 @@ 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); } -}
\ No newline at end of file +} diff --git a/tests/lib/Template/IconsCacherTest.php b/tests/lib/Template/IconsCacherTest.php index c537323e0eb..cc6224f3228 100644 --- a/tests/lib/Template/IconsCacherTest.php +++ b/tests/lib/Template/IconsCacherTest.php @@ -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 ); } |