From c52079e882374ed5dff6305d0c1d4cfe69c2e54b Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Sat, 9 May 2020 15:53:25 +0200 Subject: [PATCH] fix #19: add option to keep external sites in the top menu --- css/sideMenu.css | 4 ---- lib/Controller/CssController.php | 1 + lib/Controller/JsController.php | 1 + lib/Settings/Admin.php | 1 + src/SideMenu.vue | 5 +++++ src/admin.js | 1 + templates/css/stylesheet.php | 10 ++++++++++ templates/js/script.php | 24 ++++++++++++++++++++++++ templates/settings/admin-form.php | 17 +++++++++++++++++ 9 files changed, 60 insertions(+), 4 deletions(-) diff --git a/css/sideMenu.css b/css/sideMenu.css index d8678c7..dbd6eb9 100644 --- a/css/sideMenu.css +++ b/css/sideMenu.css @@ -15,10 +15,6 @@ * along with this program. If not, see . */ -#appmenu, #appmenu + nav { - display: none; -} - #side-menu { position: fixed; top: 0; diff --git a/lib/Controller/CssController.php b/lib/Controller/CssController.php index 4f360a1..91ec475 100644 --- a/lib/Controller/CssController.php +++ b/lib/Controller/CssController.php @@ -64,6 +64,7 @@ class CssController extends Controller ], 'display-logo' => (bool) $this->config->getAppValue('side_menu', 'display-logo', 1), 'opener-only' => (bool) $this->config->getAppValue('side_menu', 'opener-only', 0), + 'external-sites-in-top-menu' => (bool) $this->config->getAppValue('side_menu', 'external-sites-in-top-menu', 0), 'size-icon' => $this->config->getAppValue('side_menu', 'size-icon', 'normal'), 'size-text' => $this->config->getAppValue('side_menu', 'size-text', 'normal'), ]; diff --git a/lib/Controller/JsController.php b/lib/Controller/JsController.php index 0f3dc92..9114522 100644 --- a/lib/Controller/JsController.php +++ b/lib/Controller/JsController.php @@ -54,6 +54,7 @@ class JsController extends Controller $parameters = [ 'opener-position' => $this->config->getAppValue('side_menu', 'opener-position', 'before'), 'opener-hover' => (bool) $this->config->getAppValue('side_menu', 'opener-hover', '0'), + 'external-sites-in-top-menu' => (bool) $this->config->getAppValue('side_menu', 'external-sites-in-top-menu', 0), 'force-light-icon' => (bool) $this->config->getAppValue('side_menu', 'force-light-icon', '0'), 'hide-when-no-apps' => (bool) $this->config->getAppValue('side_menu', 'hide-when-no-apps', '0'), ]; diff --git a/lib/Settings/Admin.php b/lib/Settings/Admin.php index 79222b5..3c3f59e 100644 --- a/lib/Settings/Admin.php +++ b/lib/Settings/Admin.php @@ -65,6 +65,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'), + 'external-sites-in-top-menu' => $this->config->getAppValue('side_menu', 'external-sites-in-top-menu', '0'), ]; return new TemplateResponse('side_menu', 'settings/admin-form', $parameters, ''); diff --git a/src/SideMenu.vue b/src/SideMenu.vue index 7c43443..2d7bcad 100644 --- a/src/SideMenu.vue +++ b/src/SideMenu.vue @@ -53,6 +53,10 @@ export default { for (let element of links) { let href = element.getAttribute('href') + if (this.ignoreExternalSites && element.parentNode.getAttribute('data-id').indexOf('external_index') !== -1) { + continue; + } + if (href !== '#') { let svg = element.querySelector('svg').outerHTML @@ -99,6 +103,7 @@ export default { this.retrieveApps() this.retrieveLogo() this.forceLightIcon = document.querySelector('#side-menu-container').getAttribute('data-forcelighticon') == 1; + this.ignoreExternalSites = document.querySelector('#side-menu-container').getAttribute('data-externalsitesintopmenu') == 1; const menu = document.querySelector('#appmenu') diff --git a/src/admin.js b/src/admin.js index 8cb9315..c0da4e8 100644 --- a/src/admin.js +++ b/src/admin.js @@ -30,6 +30,7 @@ const elements = [ 'side-menu-size-icon', 'side-menu-size-text', 'side-menu-cache', + 'side-menu-external-sites-in-top-menu', ]; const selector = '#side-menu-message'; diff --git a/templates/css/stylesheet.php b/templates/css/stylesheet.php index 35405c6..da86494 100644 --- a/templates/css/stylesheet.php +++ b/templates/css/stylesheet.php @@ -8,6 +8,16 @@ } + + #appmenu { + display: none; + } + + +#appmenu + nav { + display: none; +} + #nextcloud { display: none; diff --git a/templates/js/script.php b/templates/js/script.php index b902e92..284c1da 100644 --- a/templates/js/script.php +++ b/templates/js/script.php @@ -9,6 +9,30 @@ sideMenuContainer.attr('data-forcelighticon', '1') + + sideMenuContainer.attr('data-externalsitesintopmenu', '1') + + var externalSitesInTopMenu = function() { + var items = $('#appmenu').find('li') + + items.each(function(i, item) { + var dataId = item.getAttribute('data-id') + + if (dataId === null || dataId.indexOf('external_index') === -1) { + item.style.display = 'none' + item.classList.remove('hidden') + } else { + item.style.display = 'flex' + item.classList.add('hidden') + } + }) + } + + $(window).resize(externalSitesInTopMenu); + + setInterval(externalSitesInTopMenu, 500); + + body.on('side-menu.apps', function(e, apps) { sideMenu = $('#side-menu') diff --git a/templates/settings/admin-form.php b/templates/settings/admin-form.php index 1867d5f..c2e51bd 100644 --- a/templates/settings/admin-form.php +++ b/templates/settings/admin-form.php @@ -248,6 +248,23 @@ $choicesSizes = [ + +
+ +
+ +
+ +