Fix accessibility
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
This commit is contained in:
parent
2b2626566c
commit
836e7305d0
|
@ -35,7 +35,12 @@ return [
|
||||||
[
|
[
|
||||||
'name' => 'Config#setConfig',
|
'name' => 'Config#setConfig',
|
||||||
'url' => '/api/v1/config/{key}',
|
'url' => '/api/v1/config/{key}',
|
||||||
'verb' => 'POST',
|
'verb' => 'PUT',
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'Config#deleteConfig',
|
||||||
|
'url' => '/api/v1/config/{key}',
|
||||||
|
'verb' => 'DELETE',
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -102,16 +102,8 @@ class ConfigController extends OCSController {
|
||||||
public function setConfig(string $key, $value): DataResponse {
|
public function setConfig(string $key, $value): DataResponse {
|
||||||
if ($key === 'theme' || $key === 'font' || $key === 'highcontrast') {
|
if ($key === 'theme' || $key === 'font' || $key === 'highcontrast') {
|
||||||
|
|
||||||
if ($value === false) {
|
if ($value === false || $value === '') {
|
||||||
$this->config->deleteUserValue($this->userId, $this->appName, $key);
|
throw new OCSBadRequestException('Invalid value: ' . $value);
|
||||||
$userValues = $this->config->getUserKeys($this->userId, $this->appName);
|
|
||||||
|
|
||||||
// remove hash if no settings selected
|
|
||||||
if (count($userValues) === 1 && $userValues[0] === 'icons-css') {
|
|
||||||
$this->config->deleteUserValue($this->userId, $this->appName, 'icons-css');
|
|
||||||
}
|
|
||||||
|
|
||||||
return new DataResponse();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$themes = $this->accessibilityProvider->getThemes();
|
$themes = $this->accessibilityProvider->getThemes();
|
||||||
|
@ -133,4 +125,30 @@ class ConfigController extends OCSController {
|
||||||
throw new OCSBadRequestException('Invalid key: ' . $key);
|
throw new OCSBadRequestException('Invalid key: ' . $key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @NoAdminRequired
|
||||||
|
*
|
||||||
|
* Unset theme or font config
|
||||||
|
*
|
||||||
|
* @param string $key theme or font
|
||||||
|
* @return DataResponse
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public function deleteConfig(string $key): DataResponse {
|
||||||
|
if ($key === 'theme' || $key === 'font' || $key === 'highcontrast') {
|
||||||
|
|
||||||
|
$this->config->deleteUserValue($this->userId, $this->appName, $key);
|
||||||
|
$userValues = $this->config->getUserKeys($this->userId, $this->appName);
|
||||||
|
|
||||||
|
// remove hash if no settings selected
|
||||||
|
if (count($userValues) === 1 && $userValues[0] === 'icons-css') {
|
||||||
|
$this->config->deleteUserValue($this->userId, $this->appName, 'icons-css');
|
||||||
|
}
|
||||||
|
|
||||||
|
return new DataResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new OCSBadRequestException('Invalid key: ' . $key);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,10 +27,12 @@ namespace OCA\Accessibility\Settings;
|
||||||
use OCA\Accessibility\AccessibilityProvider;
|
use OCA\Accessibility\AccessibilityProvider;
|
||||||
use OCP\AppFramework\Http\TemplateResponse;
|
use OCP\AppFramework\Http\TemplateResponse;
|
||||||
use OCP\IConfig;
|
use OCP\IConfig;
|
||||||
|
use OCP\IInitialStateService;
|
||||||
use OCP\IL10N;
|
use OCP\IL10N;
|
||||||
use OCP\IURLGenerator;
|
use OCP\IURLGenerator;
|
||||||
use OCP\IUserSession;
|
use OCP\IUserSession;
|
||||||
use OCP\Settings\ISettings;
|
use OCP\Settings\ISettings;
|
||||||
|
use OCP\Util;
|
||||||
|
|
||||||
class Personal implements ISettings {
|
class Personal implements ISettings {
|
||||||
|
|
||||||
|
@ -52,6 +54,9 @@ class Personal implements ISettings {
|
||||||
/** @var AccessibilityProvider */
|
/** @var AccessibilityProvider */
|
||||||
private $accessibilityProvider;
|
private $accessibilityProvider;
|
||||||
|
|
||||||
|
/** @var IInitialStateService */
|
||||||
|
private $initialStateService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Settings constructor.
|
* Settings constructor.
|
||||||
*
|
*
|
||||||
|
@ -67,13 +72,15 @@ class Personal implements ISettings {
|
||||||
IUserSession $userSession,
|
IUserSession $userSession,
|
||||||
IL10N $l,
|
IL10N $l,
|
||||||
IURLGenerator $urlGenerator,
|
IURLGenerator $urlGenerator,
|
||||||
AccessibilityProvider $accessibilityProvider) {
|
AccessibilityProvider $accessibilityProvider,
|
||||||
|
IInitialStateService $initialStateService) {
|
||||||
$this->appName = $appName;
|
$this->appName = $appName;
|
||||||
$this->config = $config;
|
$this->config = $config;
|
||||||
$this->userSession = $userSession;
|
$this->userSession = $userSession;
|
||||||
$this->l = $l;
|
$this->l = $l;
|
||||||
$this->urlGenerator = $urlGenerator;
|
$this->urlGenerator = $urlGenerator;
|
||||||
$this->accessibilityProvider = $accessibilityProvider;
|
$this->accessibilityProvider = $accessibilityProvider;
|
||||||
|
$this->initialStateService = $initialStateService;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -81,19 +88,25 @@ class Personal implements ISettings {
|
||||||
* @since 9.1
|
* @since 9.1
|
||||||
*/
|
*/
|
||||||
public function getForm() {
|
public function getForm() {
|
||||||
|
Util::addScript('accessibility', 'accessibility');
|
||||||
|
Util::addStyle('accessibility', 'style');
|
||||||
|
|
||||||
$serverData = [
|
$availableConfig = [
|
||||||
'themes' => $this->accessibilityProvider->getThemes(),
|
'themes' => $this->accessibilityProvider->getThemes(),
|
||||||
'fonts' => $this->accessibilityProvider->getFonts(),
|
'fonts' => $this->accessibilityProvider->getFonts(),
|
||||||
'highcontrast' => $this->accessibilityProvider->getHighContrast(),
|
'highcontrast' => $this->accessibilityProvider->getHighContrast()
|
||||||
'selected' => [
|
];
|
||||||
|
|
||||||
|
$userConfig = [
|
||||||
'highcontrast' => $this->config->getUserValue($this->userSession->getUser()->getUID(), $this->appName, 'highcontrast', false),
|
'highcontrast' => $this->config->getUserValue($this->userSession->getUser()->getUID(), $this->appName, 'highcontrast', false),
|
||||||
'theme' => $this->config->getUserValue($this->userSession->getUser()->getUID(), $this->appName, 'theme', false),
|
'theme' => $this->config->getUserValue($this->userSession->getUser()->getUID(), $this->appName, 'theme', false),
|
||||||
'font' => $this->config->getUserValue($this->userSession->getUser()->getUID(), $this->appName, 'font', false)
|
'font' => $this->config->getUserValue($this->userSession->getUser()->getUID(), $this->appName, 'font', false)
|
||||||
]
|
|
||||||
];
|
];
|
||||||
|
|
||||||
return new TemplateResponse($this->appName, 'settings-personal', ['serverData' => $serverData]);
|
$this->initialStateService->provideInitialState($this->appName, 'available-config', $availableConfig);
|
||||||
|
$this->initialStateService->provideInitialState($this->appName, 'user-config', $userConfig);
|
||||||
|
|
||||||
|
return new TemplateResponse($this->appName, 'settings-personal');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -118,9 +118,10 @@ export default {
|
||||||
*/
|
*/
|
||||||
async selectItem(type, id) {
|
async selectItem(type, id) {
|
||||||
try {
|
try {
|
||||||
|
const isDelete = id === ''
|
||||||
await axios({
|
await axios({
|
||||||
url: generateOcsUrl('apps/accessibility/api/v1/config', 2) + type,
|
url: generateOcsUrl('apps/accessibility/api/v1/config', 2) + type,
|
||||||
method: id === '' ? 'DELETE' : 'POST',
|
method: isDelete ? 'DELETE' : 'PUT',
|
||||||
data: {
|
data: {
|
||||||
value: id
|
value: id
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,9 +21,6 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
script('accessibility', 'accessibility');
|
|
||||||
style('accessibility', 'style');
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<span id="serverData" data-server="<?php p(json_encode($_['serverData']));?>"></span>
|
|
||||||
<span id="accessibility"></span>
|
<span id="accessibility"></span>
|
Loading…
Reference in New Issue