From 30cbd137e8c32c32920292e285c06466392e89f9 Mon Sep 17 00:00:00 2001 From: Alexey Pyltsyn Date: Tue, 16 Oct 2018 21:42:06 +0300 Subject: [PATCH] Fix illegible text color in columns Size and Modified on dark theme: rework after review Signed-off-by: Alexey Pyltsyn --- apps/accessibility/appinfo/app.php | 3 ++- apps/accessibility/appinfo/routes.php | 5 +++-- .../accessibility/lib/AppInfo/Application.php | 18 ++++++++++++++++++ .../Controller/AccessibilityController.php | 19 +++++++++++++++++++ apps/files/js/filelist.js | 4 ++-- lib/private/Template/JSConfigHelper.php | 1 - 6 files changed, 44 insertions(+), 6 deletions(-) diff --git a/apps/accessibility/appinfo/app.php b/apps/accessibility/appinfo/app.php index 7f8e3c3262..96621a1682 100644 --- a/apps/accessibility/appinfo/app.php +++ b/apps/accessibility/appinfo/app.php @@ -27,4 +27,5 @@ $app = new \OCA\Accessibility\AppInfo\Application(); // Separate from the constructor since the route are not initialized before that // 1. create the app // 2. generate css route and inject -$app->injectCss(); \ No newline at end of file +$app->injectCss(); +$app->injectJavascript(); \ No newline at end of file diff --git a/apps/accessibility/appinfo/routes.php b/apps/accessibility/appinfo/routes.php index ebb845e06a..52e7491821 100644 --- a/apps/accessibility/appinfo/routes.php +++ b/apps/accessibility/appinfo/routes.php @@ -22,8 +22,9 @@ */ return [ - 'routes' => [ - ['name' => 'accessibility#getCss', 'url' => '/css/user-{md5}.css', 'verb' => 'GET'], + 'routes' => [ + ['name' => 'accessibility#getCss', 'url' => '/css/user-{md5}.css', 'verb' => 'GET'], + ['name' => 'accessibility#getJavascript', 'url' => '/js/accessibility', 'verb' => 'GET'], ], 'ocs' => [ [ diff --git a/apps/accessibility/lib/AppInfo/Application.php b/apps/accessibility/lib/AppInfo/Application.php index 068fcc27b7..6e3dc789d9 100644 --- a/apps/accessibility/lib/AppInfo/Application.php +++ b/apps/accessibility/lib/AppInfo/Application.php @@ -60,4 +60,22 @@ class Application extends App { } } } + + public function injectJavascript() { + $linkToJs = $this->urlGenerator->linkToRoute( + $this->appName . '.accessibility.getJavascript', + [ + 'v' => \OC::$server->getConfig()->getAppValue('accessibility', 'cachebuster', '0'), + ] + ); + + \OCP\Util::addHeader( + 'script', + [ + 'src' => $linkToJs, + 'nonce' => \OC::$server->getContentSecurityPolicyNonceManager()->getNonce() + ], + '' + ); + } } diff --git a/apps/accessibility/lib/Controller/AccessibilityController.php b/apps/accessibility/lib/Controller/AccessibilityController.php index 8f1ffa452a..cdc9e00440 100644 --- a/apps/accessibility/lib/Controller/AccessibilityController.php +++ b/apps/accessibility/lib/Controller/AccessibilityController.php @@ -28,6 +28,7 @@ use Leafo\ScssPhp\Formatter\Crunched; use OCP\AppFramework\Controller; use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataDisplayResponse; +use OCP\AppFramework\Http\DataDownloadResponse; use OCP\AppFramework\Utility\ITimeFactory; use OCP\App\IAppManager; use OCP\IConfig; @@ -184,6 +185,24 @@ class AccessibilityController extends Controller { return $response; } + /** + * @NoCSRFRequired + * @PublicPage + * + * @return DataDownloadResponse + */ + public function getJavascript(): DataDownloadResponse { + $responseJS = '(function() { + OCA.Accessibility = { + theme: ' . json_encode($this->config->getUserValue($this->userSession->getUser()->getUID(), $this->appName, 'theme', false)) . ', + + }; +})();'; + $response = new DataDownloadResponse($responseJS, 'javascript', 'text/javascript'); + $response->cacheFor(3600); + return $response; + } + /** * Return an array with the user theme & font settings * diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index d835847bec..2089361b6e 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -1385,7 +1385,7 @@ // min. color contrast for normal text on white background according to WCAG AA sizeColor = Math.round(118-Math.pow((fileData.size/(1024*1024)),2)); - if (oc_defaults.themeName === 'themedark') { + if (OCA.Accessibility && OCA.Accessibility.theme === 'themedark') { sizeColor = Math.abs(sizeColor); } } else { @@ -1407,7 +1407,7 @@ if (modifiedColor >= '118') { modifiedColor = 118; } - if (oc_defaults.themeName === 'themedark') { + if (OCA.Accessibility && OCA.Accessibility.theme === 'themedark') { modifiedColor = Math.abs(modifiedColor); // ensure that the dimmest color is still readable diff --git a/lib/private/Template/JSConfigHelper.php b/lib/private/Template/JSConfigHelper.php index c0dbe3a07f..b691a8a64c 100644 --- a/lib/private/Template/JSConfigHelper.php +++ b/lib/private/Template/JSConfigHelper.php @@ -260,7 +260,6 @@ class JSConfigHelper { 'shortFooter' => $this->defaults->getShortFooter(), 'longFooter' => $this->defaults->getLongFooter(), 'folder' => \OC_Util::getTheme(), - 'themeName' => $this->config->getUserValue($uid, 'accessibility', 'theme', false), ]), "oc_capabilities" => json_encode($capabilities), ];