From a7c426aa5cce521b44c24d245b816f60e7806c53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Molakvo=C3=A6=20=28skjnldsv=29?= Date: Wed, 15 Aug 2018 07:25:31 +0200 Subject: [PATCH] Add default theming into accessibility compiler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: John Molakvoæ (skjnldsv) --- .../Controller/AccessibilityController.php | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/apps/accessibility/lib/Controller/AccessibilityController.php b/apps/accessibility/lib/Controller/AccessibilityController.php index 4ee88b90a7a2c..0a1d091d1c50f 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 @@ public function __construct(string $appName, 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 @@ public function __construct(string $appName, $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 @@ public function getCss(): DataDisplayResponse { $css .= $scss->compile( $imports . '@import "variables.scss";' . + $this->getInjectedVariables() . '@import "css-variables.scss";' ); } catch (ParserException $e) { @@ -220,4 +230,27 @@ private function rebaseUrls(string $css, string $webDir): string { 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; + } }