From 9ae4d7ee48683db8f5d35302e75f685750a88685 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Fri, 11 Sep 2020 13:03:37 +0200 Subject: [PATCH 1/4] add new option: open apps in new tab --- lib/Controller/PersonalSettingController.php | 8 +++++++ lib/Settings/Admin.php | 1 + lib/Settings/Personal.php | 1 + templates/settings/admin-form.php | 16 ++++++++++++++ templates/settings/personal-form.php | 22 ++++++++++++++++++++ 5 files changed, 48 insertions(+) diff --git a/lib/Controller/PersonalSettingController.php b/lib/Controller/PersonalSettingController.php index 5674175..fa86a91 100644 --- a/lib/Controller/PersonalSettingController.php +++ b/lib/Controller/PersonalSettingController.php @@ -65,6 +65,14 @@ class PersonalSettingController extends Controller } } + if ('target-blank' === $name) { + $doSave = true; + + if (!in_array($value, ['-1', '0', '1'])) { + $value = '-1'; + } + } + if ('top-menu-apps' === $name) { $doSave = true; $data = json_decode($value, true); diff --git a/lib/Settings/Admin.php b/lib/Settings/Admin.php index 3b8dbbd..cc039fd 100644 --- a/lib/Settings/Admin.php +++ b/lib/Settings/Admin.php @@ -75,6 +75,7 @@ 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'), diff --git a/lib/Settings/Personal.php b/lib/Settings/Personal.php index 4a80bfb..a115261 100644 --- a/lib/Settings/Personal.php +++ b/lib/Settings/Personal.php @@ -72,6 +72,7 @@ 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'), 'apps' => $this->appRepository->getVisibleApps(), ]; diff --git a/templates/settings/admin-form.php b/templates/settings/admin-form.php index 8ad4264..dc7a5d1 100644 --- a/templates/settings/admin-form.php +++ b/templates/settings/admin-form.php @@ -366,6 +366,22 @@ $choicesSizes = [ +
+ +
+ +
+ +
+
+ +
+ +
+ +
+ '-1', + 'No' => '0', + 'Yes' => '1', + ]; ?> + + +
From e287e2737517019f2ab74663372eaccffe886b4b Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Fri, 11 Sep 2020 13:06:43 +0200 Subject: [PATCH 2/4] add translations --- src/l10n/fixtures/de.yaml | 2 ++ src/l10n/fixtures/fr.yaml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/l10n/fixtures/de.yaml b/src/l10n/fixtures/de.yaml index c89ecaf..9361345 100644 --- a/src/l10n/fixtures/de.yaml +++ b/src/l10n/fixtures/de.yaml @@ -52,3 +52,5 @@ "Not compatible with touch screens.": "Nicht kompatibel mit Touchscreens." "Big menu": "Große Speisekarte" "Live preview": "Live Vorschau" +"Open apps in new tab": "Öffnen Sie Apps in einem neuen Tab" +"Use the global setting": "Verwenden Sie die globale Einstellung" diff --git a/src/l10n/fixtures/fr.yaml b/src/l10n/fixtures/fr.yaml index 6459a14..6f99a9b 100644 --- a/src/l10n/fixtures/fr.yaml +++ b/src/l10n/fixtures/fr.yaml @@ -52,3 +52,5 @@ "Not compatible with touch screens.": "Incompatible avec les écrans tactiles." "Big menu": "Menu large" "Live preview": "Aperçu en direct" +"Open apps in new tab": "Ouvrir les applications dans un nouvel onglet" +"Use the global setting": "Utiliser la configuration globale" From f13393288489422071c017ffde7d87df9e01102d Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Fri, 11 Sep 2020 13:23:40 +0200 Subject: [PATCH 3/4] add target _blank when the option is enabled --- lib/Controller/JsController.php | 9 +++++++++ src/SideMenu.vue | 4 +++- src/SideMenuBig.vue | 5 ++++- templates/js/script.php | 4 ++++ 4 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/Controller/JsController.php b/lib/Controller/JsController.php index d7dce2c..ecc193f 100644 --- a/lib/Controller/JsController.php +++ b/lib/Controller/JsController.php @@ -54,6 +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'); if ($user) { $userTopMenuApps = (array) json_decode($this->config->getUserValue($user->getUid(), 'side_menu', 'top-menu-apps', '[]'), true); @@ -61,8 +62,15 @@ class JsController extends Controller if (!empty($userTopMenuApps)) { $topMenuApps = $userTopMenuApps; } + + $userTargetBlank = (int) $this->config->getUserValue($user->getUid(), 'side_menu', 'target-blank', '-1'); + + if ($userTargetBlank !== -1) { + $targetBlank = (bool) $userTargetBlank; + } } + $parameters = [ 'opener-position' => $this->config->getAppValue('side_menu', 'opener-position', 'before'), 'opener-hover' => (bool) $this->config->getAppValue('side_menu', 'opener-hover', '0'), @@ -73,6 +81,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, ]; $response = new TemplateResponse('side_menu', 'js/script', $parameters, 'blank'); diff --git a/src/SideMenu.vue b/src/SideMenu.vue index 5fc2f2e..0ac61bf 100644 --- a/src/SideMenu.vue +++ b/src/SideMenu.vue @@ -26,7 +26,7 @@ along with this program. If not, see .
  • - + @@ -45,6 +45,7 @@ export default { apps: [], logo: null, forceLightIcon: false, + targetBlank: false, } }, methods: { @@ -119,6 +120,7 @@ export default { this.retrieveApps() this.retrieveLogo() this.forceLightIcon = document.querySelector('#side-menu-container').getAttribute('data-forcelighticon') == 1; + this.targetBlank = document.querySelector('#side-menu-container').getAttribute('data-targetblank') == 1; const menu = document.querySelector('#appmenu') diff --git a/src/SideMenuBig.vue b/src/SideMenuBig.vue index 89be0b8..05ce9f9 100644 --- a/src/SideMenuBig.vue +++ b/src/SideMenuBig.vue @@ -28,7 +28,7 @@ along with this program. If not, see .
    • - + @@ -50,6 +50,7 @@ export default { return { items: [], activeApp: null, + targetBlank: false, } }, methods: { @@ -79,6 +80,8 @@ export default { }, }, mounted() { + this.targetBlank = document.querySelector('#side-menu-container').getAttribute('data-targetblank') == 1; + this.retrieveApps() this.retrieveActiveApp() } diff --git a/templates/js/script.php b/templates/js/script.php index 696dfbe..690416e 100644 --- a/templates/js/script.php +++ b/templates/js/script.php @@ -14,6 +14,10 @@ sideMenuContainer.attr('data-forcelighticon', '1') + + sideMenuContainer.attr('data-targetblank', '1') + + body.on('side-menu.apps', function(e, apps) { sideMenu = jQuery('#side-menu') From e10a5f1f62df90c80515d2439270619960f79f94 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Fri, 11 Sep 2020 13:23:52 +0200 Subject: [PATCH 4/4] fix issue with side menu header --- css/sideMenu.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/css/sideMenu.css b/css/sideMenu.css index fdb1790..78b62ac 100644 --- a/css/sideMenu.css +++ b/css/sideMenu.css @@ -211,6 +211,10 @@ display: none; } +.side-menu-always-displayed #side-menu .side-menu-header { + height: 49px; +} + .side-menu-always-displayed #side-menu.open, .side-menu-always-displayed #side-menu.open .side-menu-apps-list, .side-menu-always-displayed #side-menu.open .side-menu-header,