migrate admin settings
This commit is contained in:
parent
8c5c43dafa
commit
f9c3f96919
25 changed files with 1028 additions and 112 deletions
|
|
@ -20,14 +20,17 @@
|
|||
namespace OCA\SideMenu\Controller;
|
||||
|
||||
use OCA\SideMenu\AppInfo\Application;
|
||||
use OCA\SideMenu\Service\ConfigProxy;
|
||||
use OCP\AppFramework\Controller;
|
||||
use OCP\AppFramework\Http\Attribute\FrontpageRoute;
|
||||
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
|
||||
use OCP\AppFramework\Http\DataDownloadResponse;
|
||||
use OCP\AppFramework\Http\JSONResponse;
|
||||
use OCP\AppFramework\Http\RedirectResponse;
|
||||
use OCP\IConfig;
|
||||
use OCP\IRequest;
|
||||
use OCP\IURLGenerator;
|
||||
use OCA\SideMenu\Service\Color;
|
||||
|
||||
class AdminSettingController extends Controller
|
||||
{
|
||||
|
|
@ -35,7 +38,9 @@ class AdminSettingController extends Controller
|
|||
$appName,
|
||||
IRequest $request,
|
||||
protected IConfig $config,
|
||||
protected IURLGenerator $urlGenerator
|
||||
protected ConfigProxy $configProxy,
|
||||
protected IURLGenerator $urlGenerator,
|
||||
protected Color $color,
|
||||
) {
|
||||
parent::__construct($appName, $request);
|
||||
}
|
||||
|
|
@ -76,4 +81,129 @@ class AdminSettingController extends Controller
|
|||
'text/json'
|
||||
);
|
||||
}
|
||||
|
||||
#[NoCSRFRequired]
|
||||
#[FrontpageRoute(verb: 'GET', url: '/admin/config')]
|
||||
public function configuration(): JSONResponse
|
||||
{
|
||||
$keys = $this->config->getAppKeys(Application::APP_ID);
|
||||
$booleans = [
|
||||
'opener-only',
|
||||
'opener-hover',
|
||||
'display-logo',
|
||||
'use-avatar',
|
||||
'add-logo-link',
|
||||
'show-settings',
|
||||
'loader-enabled',
|
||||
'top-menu-mouse-over-hidden-label',
|
||||
'always-displayed',
|
||||
'enabled',
|
||||
'force',
|
||||
'big-menu',
|
||||
'external-sites-in-top-menu',
|
||||
'force-light-icon',
|
||||
'side-with-categories',
|
||||
'default-enabled',
|
||||
];
|
||||
|
||||
$arrays = [
|
||||
'apps-categories-custom',
|
||||
'big-menu-hidden-apps',
|
||||
'apps-order',
|
||||
'categories-custom',
|
||||
'categories-order',
|
||||
'target-blank-apps',
|
||||
'top-menu-apps',
|
||||
'top-side-menu-apps',
|
||||
];
|
||||
|
||||
$integers = [
|
||||
'background-color-opacity',
|
||||
'dark-mode-background-color-opacity',
|
||||
'dark-mode-icon-invert-filter',
|
||||
'dark-mode-icon-opacity',
|
||||
'icon-invert-filter',
|
||||
'icon-opacity',
|
||||
'target-blank-mode',
|
||||
'top-menu-mouse-over-hidden-label',
|
||||
];
|
||||
|
||||
$defaults = [
|
||||
'opener-only' => '0',
|
||||
'opener-hover' => '0',
|
||||
'display-logo' => '1',
|
||||
'use-avatar' => '0',
|
||||
'add-logo-link' => '1',
|
||||
'show-settings' => '0',
|
||||
'loader-enabled' => '1',
|
||||
'top-menu-mouse-over-hidden-label' => '0',
|
||||
'always-displayed' => '0',
|
||||
'enabled' => '1',
|
||||
'force' => '0',
|
||||
'big-menu' => '0',
|
||||
'external-sites-in-top-menu' => '0',
|
||||
'force-light-icon' => '0',
|
||||
'side-with-categories' => '0',
|
||||
'cache' => '1',
|
||||
'default-enabled' => '1',
|
||||
|
||||
'apps-categories-custom' => '[]',
|
||||
'big-menu-hidden-apps' => '[]',
|
||||
'apps-order' => '[]',
|
||||
'categories-custom' => '[]',
|
||||
'categories-order' => '[]',
|
||||
'target-blank-apps' => '[]',
|
||||
'top-menu-apps' => '[]',
|
||||
'top-side-menu-apps' => '[]',
|
||||
'cache-categories' => '[]',
|
||||
|
||||
'background-color-opacity' => '100',
|
||||
'dark-mode-background-color-opacity' => '100',
|
||||
'dark-mode-icon-invert-filter' => '0',
|
||||
'dark-mode-icon-opacity' => '100',
|
||||
'icon-invert-filter' => '0',
|
||||
'icon-opacity' => '100',
|
||||
'top-menu-mouse-over-hidden-label' => '0',
|
||||
|
||||
'opener' => 'side-menu-opener',
|
||||
'dark-mode-opener' => 'side-menu-opener',
|
||||
'size-icon' => 'normal',
|
||||
'size-text' => 'normal',
|
||||
'opener-position' => 'before',
|
||||
|
||||
'background-color' => $this->color->getPrimaryColor(),
|
||||
'background-color-to' => $this->color->getLightenPrimaryColor(),
|
||||
'current-app-background-color' => $this->color->getDarkenPrimaryColor(),
|
||||
'text-color' => $this->color->getTextColorPrimary(),
|
||||
'loader-color' => $this->color->getLightenPrimaryColor(),
|
||||
|
||||
'dark-mode-background-color' => $this->color->getDarkenPrimaryColor(),
|
||||
'dark-mode-background-color-to' => $this->color->getDarkenPrimaryColor(),
|
||||
'dark-mode-current-app-background-color' => $this->color->getDarkenPrimaryColor2(),
|
||||
'dark-mode-text-color' => $this->color->getTextColorPrimary(),
|
||||
'dark-mode-loader-color' => $this->color->getLightenPrimaryColor(),
|
||||
|
||||
'categories-order-type' => 'default',
|
||||
];
|
||||
|
||||
$config = [];
|
||||
|
||||
foreach ($keys as $key) {
|
||||
if (!isset($defaults[$key])) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (in_array($key, $booleans)) {
|
||||
$config[$key] = $this->configProxy->getAppValueBool($key, $defaults[$key]);
|
||||
} elseif (in_array($key, $arrays)) {
|
||||
$config[$key] = $this->configProxy->getAppValueArray($key, $defaults[$key]);
|
||||
} elseif (in_array($key, $integers)) {
|
||||
$config[$key] = $this->configProxy->getAppValueInt($key, $defaults[$key]);
|
||||
} else {
|
||||
$config[$key] = $this->configProxy->getAppValue($key, $defaults[$key]);
|
||||
}
|
||||
}
|
||||
|
||||
return new JSONResponse($config);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue