diff --git a/css/admin.css b/css/admin.css index aa40b92..a118556 100644 --- a/css/admin.css +++ b/css/admin.css @@ -64,3 +64,7 @@ font-size: 11px; font-weight: normal; } + +.side-menu-toggler { + cursor: pointer; +} diff --git a/lib/Controller/JsController.php b/lib/Controller/JsController.php index ecc193f..1bfba35 100644 --- a/lib/Controller/JsController.php +++ b/lib/Controller/JsController.php @@ -54,7 +54,7 @@ class JsController extends Controller { $user = OC::$server[IUserSession::class]->getUser(); $topMenuApps = (array) json_decode($this->config->getAppValue('side_menu', 'top-menu-apps', '[]'), true); - $targetBlank = (bool) $this->config->getAppValue('side_menu', 'target-blank', '0'); + $targetBlankApps = (array) json_decode($this->config->getAppValue('side_menu', 'target-blank-apps', '[]'), true); if ($user) { $userTopMenuApps = (array) json_decode($this->config->getUserValue($user->getUid(), 'side_menu', 'top-menu-apps', '[]'), true); @@ -63,10 +63,11 @@ class JsController extends Controller $topMenuApps = $userTopMenuApps; } - $userTargetBlank = (int) $this->config->getUserValue($user->getUid(), 'side_menu', 'target-blank', '-1'); + $userTargetBlankMode = (int) $this->config->getUserValue($user->getUid(), 'side_menu', 'target-blank-mode', '1'); + $userTargetBlankApps = (array) json_decode($this->config->getUserValue($user->getUid(), 'side_menu', 'target-blank-apps', '[]'), true); - if ($userTargetBlank !== -1) { - $targetBlank = (bool) $userTargetBlank; + if ($userTargetBlankMode === 2) { + $targetBlankApps = $userTargetBlankApps; } } @@ -81,7 +82,7 @@ class JsController extends Controller 'always-displayed' => (bool) $this->config->getAppValue('side_menu', 'always-displayed', '0'), 'big-menu' => (bool) $this->config->getAppValue('side_menu', 'big-menu', '0'), 'top-menu-apps' => $topMenuApps, - 'target-blank' => $targetBlank, + 'target-blank-apps' => $targetBlankApps, ]; $response = new TemplateResponse('side_menu', 'js/script', $parameters, 'blank'); diff --git a/lib/Controller/PersonalSettingController.php b/lib/Controller/PersonalSettingController.php index fa86a91..b907d69 100644 --- a/lib/Controller/PersonalSettingController.php +++ b/lib/Controller/PersonalSettingController.php @@ -65,11 +65,26 @@ class PersonalSettingController extends Controller } } - if ('target-blank' === $name) { + if ('target-blank-mode' === $name) { $doSave = true; - if (!in_array($value, ['-1', '0', '1'])) { - $value = '-1'; + if (!in_array($value, ['1', '2'])) { + $value = '1'; + } + } + + if ('target-blank-apps' === $name) { + $doSave = true; + $data = json_decode($value, true); + + if (!is_array($data)) { + $doSave = false; + } else { + foreach ($data as $v) { + if (!is_string($v)) { + $doSave = false; + } + } } } diff --git a/lib/Settings/Admin.php b/lib/Settings/Admin.php index cc039fd..9a901e4 100644 --- a/lib/Settings/Admin.php +++ b/lib/Settings/Admin.php @@ -75,7 +75,6 @@ class Admin implements ISettings 'cache' => $this->config->getAppValue('side_menu', 'cache', '0'), 'opener' => $this->config->getAppValue('side_menu', 'opener', 'side-menu-opener'), 'always-displayed' => $this->config->getAppValue('side_menu', 'always-displayed', '0'), - 'target-blank' => $this->config->getAppValue('side_menu', 'target-blank', '0'), 'big-menu' => $this->config->getAppValue('side_menu', 'big-menu', '0'), 'display-logo' => $this->config->getAppValue('side_menu', 'display-logo', '1'), 'opener-position' => $this->config->getAppValue('side_menu', 'opener-position', 'before'), @@ -84,6 +83,7 @@ class Admin implements ISettings 'hide-when-no-apps' => $this->config->getAppValue('side_menu', 'hide-when-no-apps', '0'), 'size-icon' => $this->config->getAppValue('side_menu', 'size-icon', 'normal'), 'size-text' => $this->config->getAppValue('side_menu', 'size-text', 'normal'), + 'target-blank-apps' => (array) json_decode($this->config->getAppValue('side_menu', 'target-blank-apps', '[]'), true), 'top-menu-apps' => (array) json_decode($this->config->getAppValue('side_menu', 'top-menu-apps', '[]'), true), 'apps' => $this->appRepository->getVisibleApps(), ]; diff --git a/lib/Settings/Personal.php b/lib/Settings/Personal.php index a115261..3de5063 100644 --- a/lib/Settings/Personal.php +++ b/lib/Settings/Personal.php @@ -72,7 +72,8 @@ class Personal implements ISettings $parameters = [ 'enabled' => $this->config->getUserValue($user->getUid(), 'side_menu', 'enabled', '1'), 'top-menu-apps' => (array) json_decode($this->config->getUserValue($user->getUid(), 'side_menu', 'top-menu-apps', '[]'), true), - 'target-blank' => $this->config->getUserValue($user->getUid(), 'side_menu', 'target-blank', '-1'), + 'target-blank-mode' => $this->config->getUserValue($user->getUid(), 'side_menu', 'target-blank-mode', '1'), + 'target-blank-apps' => (array) json_decode($this->config->getUserValue($user->getUid(), 'side_menu', 'target-blank-apps', '[]'), true), 'apps' => $this->appRepository->getVisibleApps(), ]; diff --git a/src/SideMenu.vue b/src/SideMenu.vue index 0ac61bf..5917e78 100644 --- a/src/SideMenu.vue +++ b/src/SideMenu.vue @@ -26,7 +26,7 @@ along with this program. If not, see .