Store scss variables under a different prefix for each theming config version
The main issue with using the general theming- prefix is that with APCu caching the cache is not shared between processes, so when trying to reset the cache through the CLI, e.g. when updating the theming config the old cache is never invalidated. Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
parent
6916240d98
commit
7d57b2c317
|
@ -290,13 +290,14 @@ class ThemingDefaults extends \OC_Defaults {
|
||||||
* @return array scss variables to overwrite
|
* @return array scss variables to overwrite
|
||||||
*/
|
*/
|
||||||
public function getScssVariables() {
|
public function getScssVariables() {
|
||||||
$cache = $this->cacheFactory->createDistributed('theming-' . $this->urlGenerator->getBaseUrl());
|
$cacheBuster = $this->config->getAppValue('theming', 'cachebuster', '0');
|
||||||
|
$cache = $this->cacheFactory->createDistributed('theming-' . $cacheBuster . '-' . $this->urlGenerator->getBaseUrl());
|
||||||
if ($value = $cache->get('getScssVariables')) {
|
if ($value = $cache->get('getScssVariables')) {
|
||||||
return $value;
|
return $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
$variables = [
|
$variables = [
|
||||||
'theming-cachebuster' => "'" . $this->config->getAppValue('theming', 'cachebuster', '0') . "'",
|
'theming-cachebuster' => "'" . $cacheBuster . "'",
|
||||||
'theming-logo-mime' => "'" . $this->config->getAppValue('theming', 'logoMime') . "'",
|
'theming-logo-mime' => "'" . $this->config->getAppValue('theming', 'logoMime') . "'",
|
||||||
'theming-background-mime' => "'" . $this->config->getAppValue('theming', 'backgroundMime') . "'",
|
'theming-background-mime' => "'" . $this->config->getAppValue('theming', 'backgroundMime') . "'",
|
||||||
'theming-logoheader-mime' => "'" . $this->config->getAppValue('theming', 'logoheaderMime') . "'",
|
'theming-logoheader-mime' => "'" . $this->config->getAppValue('theming', 'logoheaderMime') . "'",
|
||||||
|
|
|
@ -634,9 +634,10 @@ class ThemingDefaultsTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGetScssVariablesCached() {
|
public function testGetScssVariablesCached() {
|
||||||
|
$this->config->expects($this->any())->method('getAppValue')->with('theming', 'cachebuster', '0')->willReturn('1');
|
||||||
$this->cacheFactory->expects($this->once())
|
$this->cacheFactory->expects($this->once())
|
||||||
->method('createDistributed')
|
->method('createDistributed')
|
||||||
->with('theming-')
|
->with('theming-1-')
|
||||||
->willReturn($this->cache);
|
->willReturn($this->cache);
|
||||||
$this->cache->expects($this->once())->method('get')->with('getScssVariables')->willReturn(['foo'=>'bar']);
|
$this->cache->expects($this->once())->method('get')->with('getScssVariables')->willReturn(['foo'=>'bar']);
|
||||||
$this->assertEquals(['foo'=>'bar'], $this->template->getScssVariables());
|
$this->assertEquals(['foo'=>'bar'], $this->template->getScssVariables());
|
||||||
|
@ -658,7 +659,7 @@ class ThemingDefaultsTest extends TestCase {
|
||||||
$this->util->expects($this->any())->method('elementColor')->with($this->defaults->getColorPrimary())->willReturn('#aaaaaa');
|
$this->util->expects($this->any())->method('elementColor')->with($this->defaults->getColorPrimary())->willReturn('#aaaaaa');
|
||||||
$this->cacheFactory->expects($this->once())
|
$this->cacheFactory->expects($this->once())
|
||||||
->method('createDistributed')
|
->method('createDistributed')
|
||||||
->with('theming-')
|
->with('theming-0-')
|
||||||
->willReturn($this->cache);
|
->willReturn($this->cache);
|
||||||
$this->cache->expects($this->once())->method('get')->with('getScssVariables')->willReturn(null);
|
$this->cache->expects($this->once())->method('get')->with('getScssVariables')->willReturn(null);
|
||||||
$this->imageManager->expects($this->at(0))->method('getImageUrl')->with('logo')->willReturn('custom-logo?v=0');
|
$this->imageManager->expects($this->at(0))->method('getImageUrl')->with('logo')->willReturn('custom-logo?v=0');
|
||||||
|
|
Loading…
Reference in New Issue