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