diff --git a/css/sideMenu.css b/css/sideMenu.css index 4cac9e6..8fb0a6e 100644 --- a/css/sideMenu.css +++ b/css/sideMenu.css @@ -50,8 +50,8 @@ display: none; } -#side-menu.hide-opener .side-menu-opener, .side-menu-opener.hide { - display: none; +#side-menu.hide-opener .side-menu-opener, .side-menu-opener.hide, #side-menu.hide { + display: none !important; } .side-menu-apps-list { @@ -180,6 +180,54 @@ margin-top: -2px; } +.side-menu-always-displayed #header, +.side-menu-always-displayed body { + width: calc(100% - 50px) !important; +} + +.side-menu-always-displayed body { + position: absolute; + left: 50px; +} + +.side-menu-always-displayed #side-menu { + display: block; +} + +.side-menu-always-displayed .side-menu-apps-list { + top: 49px; +} + +.side-menu-always-displayed #side-menu, +.side-menu-always-displayed .side-menu-header, +.side-menu-always-displayed .side-menu-apps-list { + width: 50px; +} + +.side-menu-always-displayed #side-menu .side-menu-app-text, +.side-menu-always-displayed #header .side-menu-opener, +.side-menu-always-displayed .side-menu-logo { + display: none; +} + +.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, +.side-menu-always-displayed #side-menu:hover, +.side-menu-always-displayed #side-menu:hover .side-menu-apps-list, +.side-menu-always-displayed #side-menu:hover .side-menu-header { + width: 100%; +} + +.side-menu-always-displayed #side-menu.open .side-menu-app-text, +.side-menu-always-displayed #side-menu:hover .side-menu-app-text { + display: inline; +} + +.side-menu-always-displayed .app-navigation--close { + transform: translateX(calc(-100% + 50px)) !important; +} + @media screen and (max-width: 1024px) { #side-menu.side-menu-big { max-width: 290px; diff --git a/lib/Controller/CssController.php b/lib/Controller/CssController.php index 74b5895..bc1e6d8 100644 --- a/lib/Controller/CssController.php +++ b/lib/Controller/CssController.php @@ -82,6 +82,7 @@ class CssController extends Controller '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'), + '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, ]; diff --git a/lib/Controller/JsController.php b/lib/Controller/JsController.php index 71667b8..d7dce2c 100644 --- a/lib/Controller/JsController.php +++ b/lib/Controller/JsController.php @@ -70,6 +70,7 @@ class JsController extends Controller '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'), 'loader-enabled' => (bool) $this->config->getAppValue('side_menu', 'loader-enabled', '1'), + '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, ]; diff --git a/lib/Settings/Admin.php b/lib/Settings/Admin.php index 681bde2..3b8dbbd 100644 --- a/lib/Settings/Admin.php +++ b/lib/Settings/Admin.php @@ -74,6 +74,7 @@ class Admin implements ISettings 'text-color' => $this->config->getAppValue('side_menu', 'text-color', '#FFFFFF'), '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'), '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/src/l10n/fixtures/de.yaml b/src/l10n/fixtures/de.yaml index 361dc26..f1fb2b5 100644 --- a/src/l10n/fixtures/de.yaml +++ b/src/l10n/fixtures/de.yaml @@ -46,3 +46,7 @@ "Icons and texts": "Symbole und Texte" "Loader enabled": "Loader aktiviert" "Tips": "Tipps" +"Always displayed": "Wird immer angezeigt" +"The logo will be hidden when the menu is always displayed.": "Das Logo wird ausgeblendet, wenn das Menü immer angezeigt wird." +"This is the automatic behavior when the menu is always displayed.": "Dies ist das automatische Verhalten, wenn das Menü immer angezeigt wird." +"Not compatible with touch screens.": "Nicht kompatibel mit Touchscreens." diff --git a/src/l10n/fixtures/fr.yaml b/src/l10n/fixtures/fr.yaml index f2653a8..285b294 100644 --- a/src/l10n/fixtures/fr.yaml +++ b/src/l10n/fixtures/fr.yaml @@ -46,3 +46,7 @@ "Icons and texts": "Icônes et textes" "Loader enabled": "Activation de l'indicateur de chargement" "Tips": "Astuces" +"Always displayed": "Toujours affiché" +"The logo will be hidden when the menu is always displayed.": "Le logo sera masque si le menu est toujours affiché." +"This is the automatic behavior when the menu is always displayed.": "C'est le comportement automatique lorsque le menu est toujours affiché." +"Not compatible with touch screens.": "Incompatible avec les écrans tactiles." diff --git a/templates/css/stylesheet.php b/templates/css/stylesheet.php index 1f0ce32..2c3226a 100644 --- a/templates/css/stylesheet.php +++ b/templates/css/stylesheet.php @@ -22,13 +22,13 @@ } - + #nextcloud { display: none; } - + .side-menu-logo { display: none; } diff --git a/templates/js/_alwaysDisplayed.js b/templates/js/_alwaysDisplayed.js new file mode 100644 index 0000000..3ffbbc8 --- /dev/null +++ b/templates/js/_alwaysDisplayed.js @@ -0,0 +1,44 @@ +var alwaysDisplayed = function() { + var elements = document.querySelectorAll('*'); + var fixedElements = [] + + for (var i in elements) { + var element = elements[i] + + if (typeof element !== 'object') { + continue + } + + var position = window.getComputedStyle(element, null).getPropertyValue('position'); + + if (position !== 'fixed') { + continue + } + + var id = element.getAttribute('id') + + if (id === 'header' || id === 'side-menu' || id === 'side-menu-loader') { + continue + } + + if (element.classList.contains('oc-dialog')) { + continue + } + + if (jQuery(element).parents('#side-menu').length) { + continue + } + + fixedElements.push(element) + } + + for (var i in fixedElements) { + var element = fixedElements[i] + var value = window.getComputedStyle(element, null).getPropertyValue('left') + var intValue = parseInt(value.replace('px', '')) + + element.style.setProperty('transform', 'translateX(' + (intValue + 50) + 'px)') + } +} + +alwaysDisplayed() diff --git a/templates/js/_loaderEnabled.js b/templates/js/_loaderEnabled.js index 6d1a4e8..b391e4b 100644 --- a/templates/js/_loaderEnabled.js +++ b/templates/js/_loaderEnabled.js @@ -1,5 +1,5 @@ -var pageLoader = $('