diff --git a/apps/accessibility/lib/Controller/AccessibilityController.php b/apps/accessibility/lib/Controller/AccessibilityController.php index 4ee88b90a7..0a1d091d1c 100644 --- a/apps/accessibility/lib/Controller/AccessibilityController.php +++ b/apps/accessibility/lib/Controller/AccessibilityController.php @@ -70,6 +70,12 @@ class AccessibilityController extends Controller { /** @var IconsCacher */ protected $iconsCacher; + /** @var \OC_Defaults */ + private $defaults; + + /** @var null|string */ + private $injectedVariables; + /** * Account constructor. * @@ -82,6 +88,7 @@ class AccessibilityController extends Controller { * @param ITimeFactory $timeFactory * @param IUserSession $userSession * @param IAppManager $appManager + * @param \OC_Defaults $defaults */ public function __construct(string $appName, IRequest $request, @@ -92,7 +99,8 @@ class AccessibilityController extends Controller { ITimeFactory $timeFactory, IUserSession $userSession, IAppManager $appManager, - IconsCacher $iconsCacher) { + IconsCacher $iconsCacher, + \OC_Defaults $defaults) { parent::__construct($appName, $request); $this->appName = $appName; $this->config = $config; @@ -103,6 +111,7 @@ class AccessibilityController extends Controller { $this->userSession = $userSession; $this->appManager = $appManager; $this->iconsCacher = $iconsCacher; + $this->defaults = $defaults; $this->serverRoot = \OC::$SERVERROOT; $this->appRoot = $this->appManager->getAppPath($this->appName); @@ -141,6 +150,7 @@ class AccessibilityController extends Controller { $css .= $scss->compile( $imports . '@import "variables.scss";' . + $this->getInjectedVariables() . '@import "css-variables.scss";' ); } catch (ParserException $e) { @@ -220,4 +230,27 @@ class AccessibilityController extends Controller { private function invertSvgIconsColor(string $css) { return str_replace(['/000', '/fff', '/***'], ['/***', '/000', '/fff'], $css); } + + /** + * @return string SCSS code for variables from OC_Defaults + */ + private function getInjectedVariables(): string { + if ($this->injectedVariables !== null) { + return $this->injectedVariables; + } + $variables = ''; + foreach ($this->defaults->getScssVariables() as $key => $value) { + $variables .= '$' . $key . ': ' . $value . ';'; + } + + // check for valid variables / otherwise fall back to defaults + try { + $scss = new Compiler(); + $scss->compile($variables); + $this->injectedVariables = $variables; + } catch (ParserException $e) { + $this->logger->error($e, ['app' => 'core']); + } + return $variables; + } }