Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a2b615752b | |||
| aec89ce9fa | |||
| 02e526d717 | |||
| ebb485ffba | |||
| 80221c3ea2 | |||
| f8aebf94d2 | |||
| 97da542bd8 | |||
| 612a94fd06 | |||
| a7bcc7da0f | |||
| 3da1830f58 | |||
| 8a9c68c702 | |||
| e55419eb8b | |||
| 2f0e47dcec | |||
| 361ad9211c |
@@ -13,7 +13,7 @@ release: npm-build translations
|
|||||||
|
|
||||||
test -d releases/$$VERSION && rm -fr releases/$$VERSION
|
test -d releases/$$VERSION && rm -fr releases/$$VERSION
|
||||||
mkdir -p releases/$$VERSION/side_menu
|
mkdir -p releases/$$VERSION/side_menu
|
||||||
cp -r README.md appinfo css lib img l10n js src templates releases/$$VERSION/side_menu
|
cp -r README.md appinfo css lib img l10n js src templates screenshots releases/$$VERSION/side_menu
|
||||||
cd releases/$$VERSION
|
cd releases/$$VERSION
|
||||||
zip -r side_menu_v$$VERSION.zip side_menu
|
zip -r side_menu_v$$VERSION.zip side_menu
|
||||||
tar cvzf side_menu_v$$VERSION.tar.gz side_menu
|
tar cvzf side_menu_v$$VERSION.tar.gz side_menu
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ Comptatible with AppOrder.
|
|||||||
|
|
||||||
* [Installation and upgrade](#installation-and-upgrade)
|
* [Installation and upgrade](#installation-and-upgrade)
|
||||||
* [How to contribute?](#how-to-contribute)
|
* [How to contribute?](#how-to-contribute)
|
||||||
* [Preview](#preview)
|
* [Screenshots](https://gitnet.fr/deblan/side_menu/src/branch/master/screenshots/)
|
||||||
|
|
||||||
Installation and upgrade
|
Installation and upgrade
|
||||||
------------------------
|
------------------------
|
||||||
@@ -43,18 +43,3 @@ If you are a developer:
|
|||||||
Build javascripts using `make npm-build` (or `make npm-watch` to build them in real time).
|
Build javascripts using `make npm-build` (or `make npm-watch` to build them in real time).
|
||||||
|
|
||||||
Then commit and create a pull request.
|
Then commit and create a pull request.
|
||||||
|
|
||||||
Previews
|
|
||||||
--------
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||

|
|
||||||
|
|||||||
+18
-13
@@ -17,25 +17,30 @@ You can report a bug or request a feature by opening an issue.
|
|||||||
]]></description>
|
]]></description>
|
||||||
<licence>agpl</licence>
|
<licence>agpl</licence>
|
||||||
<author mail="contact@deblan.fr" homepage="https://www.deblan.io/">Simon Vieille</author>
|
<author mail="contact@deblan.fr" homepage="https://www.deblan.io/">Simon Vieille</author>
|
||||||
<version>1.8.6</version>
|
<version>1.9.2</version>
|
||||||
<namespace>SideMenu</namespace>
|
<namespace>SideMenu</namespace>
|
||||||
<category>customization</category>
|
<category>customization</category>
|
||||||
<website>https://gitnet.fr/deblan/side_menu</website>
|
<website>https://gitnet.fr/deblan/side_menu</website>
|
||||||
|
<discussion>https://deblan.cloud/index.php/call/fffxkc7h</discussion>
|
||||||
<bugs>https://gitnet.fr/deblan/side_menu/issues</bugs>
|
<bugs>https://gitnet.fr/deblan/side_menu/issues</bugs>
|
||||||
<repository type="git">https://gitnet.fr/deblan/side_menu</repository>
|
<repository type="git">https://gitnet.fr/deblan/side_menu</repository>
|
||||||
<screenshot>https://upload.deblan.org/u/2020-03/5e81b219.jpg</screenshot>
|
<screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc19_default_menu.png</screenshot>
|
||||||
<screenshot>https://upload.deblan.org/u/2020-03/5e7fab2b.jpg</screenshot>
|
<screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/admin_settings.png</screenshot>
|
||||||
<screenshot>https://upload.deblan.org/u/2020-08/5f3551d1.png</screenshot>
|
<screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/n19_big_menu.png</screenshot>
|
||||||
<screenshot>https://upload.deblan.org/u/2020-08/5f3551f0.png</screenshot>
|
<screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc18_menu_always_displayed.png</screenshot>
|
||||||
<screenshot>https://upload.deblan.org/u/2020-08/5f35aae1.png</screenshot>
|
<screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc20_big_menu_responsive.png</screenshot>
|
||||||
<screenshot>https://upload.deblan.org/u/2020-08/5f35ab0f.png</screenshot>
|
<screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/personal_settings.png</screenshot>
|
||||||
|
<documentation>
|
||||||
|
<admin>https://gitnet.fr/deblan/side_menu/src/branch/master/README.md</admin>
|
||||||
|
<developer>https://gitnet.fr/deblan/side_menu/src/branch/master/README.md</developer>
|
||||||
|
</documentation>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<nextcloud min-version="18" max-version="20"/>
|
<nextcloud min-version="18" max-version="20"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<settings>
|
<settings>
|
||||||
<admin>OCA\SideMenu\Settings\Admin</admin>
|
<admin>OCA\SideMenu\Settings\Admin</admin>
|
||||||
<admin-section>OCA\SideMenu\Settings\AdminSection</admin-section>
|
<admin-section>OCA\SideMenu\Settings\AdminSection</admin-section>
|
||||||
<personal>OCA\SideMenu\Settings\Personal</personal>
|
<personal>OCA\SideMenu\Settings\Personal</personal>
|
||||||
<personal-section>OCA\SideMenu\Settings\PersonalSection</personal-section>
|
<personal-section>OCA\SideMenu\Settings\PersonalSection</personal-section>
|
||||||
</settings>
|
</settings>
|
||||||
</info>
|
</info>
|
||||||
|
|||||||
+50
-2
@@ -50,8 +50,8 @@
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
#side-menu.hide-opener .side-menu-opener, .side-menu-opener.hide {
|
#side-menu.hide-opener .side-menu-opener, .side-menu-opener.hide, #side-menu.hide {
|
||||||
display: none;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.side-menu-apps-list {
|
.side-menu-apps-list {
|
||||||
@@ -180,6 +180,54 @@
|
|||||||
margin-top: -2px;
|
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) {
|
@media screen and (max-width: 1024px) {
|
||||||
#side-menu.side-menu-big {
|
#side-menu.side-menu-big {
|
||||||
max-width: 290px;
|
max-width: 290px;
|
||||||
|
|||||||
@@ -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),
|
'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-icon' => $this->config->getAppValue('side_menu', 'size-icon', 'normal'),
|
||||||
'size-text' => $this->config->getAppValue('side_menu', 'size-text', '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'),
|
'big-menu' => (bool) $this->config->getAppValue('side_menu', 'big-menu', '0'),
|
||||||
'top-menu-apps' => $topMenuApps,
|
'top-menu-apps' => $topMenuApps,
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ class JsController extends Controller
|
|||||||
'force-light-icon' => (bool) $this->config->getAppValue('side_menu', 'force-light-icon', '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'),
|
'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'),
|
'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'),
|
'big-menu' => (bool) $this->config->getAppValue('side_menu', 'big-menu', '0'),
|
||||||
'top-menu-apps' => $topMenuApps,
|
'top-menu-apps' => $topMenuApps,
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ class Admin implements ISettings
|
|||||||
'text-color' => $this->config->getAppValue('side_menu', 'text-color', '#FFFFFF'),
|
'text-color' => $this->config->getAppValue('side_menu', 'text-color', '#FFFFFF'),
|
||||||
'cache' => $this->config->getAppValue('side_menu', 'cache', '0'),
|
'cache' => $this->config->getAppValue('side_menu', 'cache', '0'),
|
||||||
'opener' => $this->config->getAppValue('side_menu', 'opener', 'side-menu-opener'),
|
'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'),
|
'big-menu' => $this->config->getAppValue('side_menu', 'big-menu', '0'),
|
||||||
'display-logo' => $this->config->getAppValue('side_menu', 'display-logo', '1'),
|
'display-logo' => $this->config->getAppValue('side_menu', 'display-logo', '1'),
|
||||||
'opener-position' => $this->config->getAppValue('side_menu', 'opener-position', 'before'),
|
'opener-position' => $this->config->getAppValue('side_menu', 'opener-position', 'before'),
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 149 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 44 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 82 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 55 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 485 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 60 KiB |
@@ -46,3 +46,7 @@
|
|||||||
"Icons and texts": "Symbole und Texte"
|
"Icons and texts": "Symbole und Texte"
|
||||||
"Loader enabled": "Loader aktiviert"
|
"Loader enabled": "Loader aktiviert"
|
||||||
"Tips": "Tipps"
|
"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."
|
||||||
|
|||||||
@@ -46,3 +46,7 @@
|
|||||||
"Icons and texts": "Icônes et textes"
|
"Icons and texts": "Icônes et textes"
|
||||||
"Loader enabled": "Activation de l'indicateur de chargement"
|
"Loader enabled": "Activation de l'indicateur de chargement"
|
||||||
"Tips": "Astuces"
|
"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."
|
||||||
|
|||||||
@@ -22,13 +22,13 @@
|
|||||||
}
|
}
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
<?php if ($_['opener-only'] === true): ?>
|
<?php if ($_['opener-only']): ?>
|
||||||
#nextcloud {
|
#nextcloud {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
<?php if ($_['display-logo'] === false): ?>
|
<?php if ($_['display-logo']): ?>
|
||||||
.side-menu-logo {
|
.side-menu-logo {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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()
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
var pageLoader = $('<div id="side-menu-loader">')
|
var pageLoader = jQuery('<div id="side-menu-loader">')
|
||||||
var pageLoaderBar = $('<div id="side-menu-loader-bar">')
|
var pageLoaderBar = jQuery('<div id="side-menu-loader-bar">')
|
||||||
|
|
||||||
body.append(pageLoader)
|
body.append(pageLoader)
|
||||||
pageLoader.append(pageLoaderBar)
|
pageLoader.append(pageLoaderBar)
|
||||||
|
|||||||
@@ -2,16 +2,16 @@ var menuCache = null
|
|||||||
|
|
||||||
var updateTopMenu = function() {
|
var updateTopMenu = function() {
|
||||||
var breakpointMobileWidth = 1024
|
var breakpointMobileWidth = 1024
|
||||||
var menu = $('#appmenu')
|
var menu = jQuery('#appmenu')
|
||||||
var apps = menu.find('li')
|
var apps = menu.find('li')
|
||||||
var minAppsDesktop = 8
|
var minAppsDesktop = 8
|
||||||
var usePercentualAppMenuLimit = 0.8
|
var usePercentualAppMenuLimit = 0.8
|
||||||
var isMobile = $(window).width() < breakpointMobileWidth
|
var isMobile = jQuery(window).width() < breakpointMobileWidth
|
||||||
var lastShownApp = null
|
var lastShownApp = null
|
||||||
var appShown = []
|
var appShown = []
|
||||||
var moreApps = $('#more-apps')
|
var moreApps = jQuery('#more-apps')
|
||||||
var navigation = $('#navigation')
|
var navigation = jQuery('#navigation')
|
||||||
var navigationApps = $('#apps ul')
|
var navigationApps = jQuery('#apps ul')
|
||||||
var appCount = null
|
var appCount = null
|
||||||
|
|
||||||
var currentMenuCache = menu.html() + menu.next().html()
|
var currentMenuCache = menu.html() + menu.next().html()
|
||||||
@@ -40,17 +40,17 @@ var updateTopMenu = function() {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
var rightHeaderWidth = $('.header-right').outerWidth()
|
var rightHeaderWidth = jQuery('.header-right').outerWidth()
|
||||||
var headerWidth = $('header').outerWidth()
|
var headerWidth = jQuery('header').outerWidth()
|
||||||
var availableWidth = headerWidth - $('#nextcloud').outerWidth()
|
var availableWidth = headerWidth - jQuery('#nextcloud').outerWidth()
|
||||||
- $('#header .side-menu-opener').outerWidth()
|
- jQuery('#header .side-menu-opener').outerWidth()
|
||||||
- (rightHeaderWidth > 230 ? rightHeaderWidth : 230)
|
- (rightHeaderWidth > 230 ? rightHeaderWidth : 230)
|
||||||
|
|
||||||
if (!isMobile) {
|
if (!isMobile) {
|
||||||
availableWidth = availableWidth * usePercentualAppMenuLimit
|
availableWidth = availableWidth * usePercentualAppMenuLimit
|
||||||
}
|
}
|
||||||
|
|
||||||
appCount = Math.floor(availableWidth / $('#appmenu li').width())
|
appCount = Math.floor(availableWidth / jQuery('#appmenu li').width())
|
||||||
|
|
||||||
if (isMobile && appCount > minAppsDesktop) {
|
if (isMobile && appCount > minAppsDesktop) {
|
||||||
appCount = minAppsDesktop
|
appCount = minAppsDesktop
|
||||||
@@ -75,27 +75,27 @@ var updateTopMenu = function() {
|
|||||||
var notInHeader = 0
|
var notInHeader = 0
|
||||||
var name
|
var name
|
||||||
|
|
||||||
$(appShown).each(function(i, app) {
|
jQuery(appShown).each(function(i, app) {
|
||||||
app = $(app)
|
app = jQuery(app)
|
||||||
name = app.data('id')
|
name = app.data('id')
|
||||||
|
|
||||||
if (k < appCount && appCount > 0) {
|
if (k < appCount && appCount > 0) {
|
||||||
app.removeClass('hidden')
|
app.removeClass('hidden')
|
||||||
lastShownApp = app
|
lastShownApp = app
|
||||||
|
|
||||||
$('#apps li[data-id=' + name + '].app-external-site').addClass('in-header')
|
jQuery('#apps li[data-id=' + name + '].app-external-site').addClass('in-header')
|
||||||
} else {
|
} else {
|
||||||
app.addClass('hidden')
|
app.addClass('hidden')
|
||||||
notInHeader++
|
notInHeader++
|
||||||
|
|
||||||
$('#apps li[data-id=' + name + '].app-external-site').removeClass('in-header')
|
jQuery('#apps li[data-id=' + name + '].app-external-site').removeClass('in-header')
|
||||||
|
|
||||||
if (appCount > 0 && app.children('a').hasClass('active')) {
|
if (appCount > 0 && app.children('a').hasClass('active')) {
|
||||||
lastShownApp.addClass('hidden')
|
lastShownApp.addClass('hidden')
|
||||||
app.removeClass('hidden')
|
app.removeClass('hidden')
|
||||||
notInHeader++
|
notInHeader++
|
||||||
|
|
||||||
$('#apps li[data-id=' + name + '].app-external-site')
|
jQuery('#apps li[data-id=' + name + '].app-external-site')
|
||||||
.removeClass('in-header')
|
.removeClass('in-header')
|
||||||
.addClass('in-header')
|
.addClass('in-header')
|
||||||
}
|
}
|
||||||
@@ -104,8 +104,8 @@ var updateTopMenu = function() {
|
|||||||
k++
|
k++
|
||||||
})
|
})
|
||||||
|
|
||||||
$('#apps li.app-external-site').each(function(i, app) {
|
jQuery('#apps li.app-external-site').each(function(i, app) {
|
||||||
app = $(app)
|
app = jQuery(app)
|
||||||
var appId = app.attr('data-id')
|
var appId = app.attr('data-id')
|
||||||
|
|
||||||
if (app.hasClass('in-header')) {
|
if (app.hasClass('in-header')) {
|
||||||
|
|||||||
+41
-12
@@ -1,8 +1,9 @@
|
|||||||
(function() {
|
(function() {
|
||||||
var sideMenuContainer = $('<div id="side-menu-container">')
|
var sideMenuContainer = jQuery('<div id="side-menu-container">')
|
||||||
var sideMenuOpener = $('<button class="side-menu-opener"></button>')
|
var sideMenuOpener = jQuery('<button class="side-menu-opener"></button>')
|
||||||
var sideMenu = $('<div id="side-menu">')
|
var sideMenu = jQuery('<div id="side-menu">')
|
||||||
var body = $('body')
|
var body = jQuery('body')
|
||||||
|
var html = jQuery('html')
|
||||||
var isTouchDevice = window.matchMedia("(pointer: coarse)").matches
|
var isTouchDevice = window.matchMedia("(pointer: coarse)").matches
|
||||||
|
|
||||||
<?php if ($_['big-menu']): ?>
|
<?php if ($_['big-menu']): ?>
|
||||||
@@ -15,22 +16,40 @@
|
|||||||
|
|
||||||
body.on('side-menu.apps', function(e, apps) {
|
body.on('side-menu.apps', function(e, apps) {
|
||||||
<?php if ($_['hide-when-no-apps']): ?>
|
<?php if ($_['hide-when-no-apps']): ?>
|
||||||
sideMenu = $('#side-menu')
|
sideMenu = jQuery('#side-menu')
|
||||||
|
|
||||||
if (apps.length === 0) {
|
if (apps.length === 0) {
|
||||||
sideMenu.removeClass('open')
|
sideMenu.removeClass('open')
|
||||||
|
sideMenu.addClass('hide')
|
||||||
sideMenuOpener.addClass('hide')
|
sideMenuOpener.addClass('hide')
|
||||||
} else {
|
} else {
|
||||||
|
sideMenu.removeClass('hide')
|
||||||
sideMenuOpener.removeClass('hide')
|
sideMenuOpener.removeClass('hide')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
<?php if ($_['always-displayed'] && !$_['big-menu']): ?>
|
||||||
|
if (apps.length === 0) {
|
||||||
|
html.removeClass('side-menu-always-displayed');
|
||||||
|
} else {
|
||||||
|
html.addClass('side-menu-always-displayed');
|
||||||
|
}
|
||||||
|
<?php endif; ?>
|
||||||
|
<?php else: ?>
|
||||||
|
<?php if ($_['always-displayed'] && !$_['big-menu']): ?>
|
||||||
|
if (apps.length === 0) {
|
||||||
|
html.removeClass('side-menu-always-displayed');
|
||||||
|
} else {
|
||||||
|
html.addClass('side-menu-always-displayed');
|
||||||
|
}
|
||||||
|
<?php endif; ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
})
|
})
|
||||||
|
|
||||||
body.on('side-menu.ready', function() {
|
body.on('side-menu.ready', function() {
|
||||||
sideMenu = $('#side-menu')
|
sideMenu = jQuery('#side-menu')
|
||||||
|
|
||||||
var headerMenuOpener = $('#header .side-menu-opener')
|
var headerMenuOpener = jQuery('#header .side-menu-opener')
|
||||||
var sideMenuOpener = $('#side-menu .side-menu-opener')
|
var sideMenuOpener = jQuery('#side-menu .side-menu-opener')
|
||||||
|
|
||||||
sideMenuFocus = function() {
|
sideMenuFocus = function() {
|
||||||
var a = sideMenu.find('.side-menu-app.active a')
|
var a = sideMenu.find('.side-menu-app.active a')
|
||||||
@@ -75,11 +94,17 @@
|
|||||||
sideMenu.find('.side-menu-app.active a').focus()
|
sideMenu.find('.side-menu-app.active a').focus()
|
||||||
})
|
})
|
||||||
|
|
||||||
sideMenuOpener.on('click', function() {
|
<?php if ($_['always-displayed'] && !$_['big-menu']): ?>
|
||||||
sideMenu.removeClass('open')
|
sideMenuOpener.on('click', function() {
|
||||||
})
|
sideMenu.toggleClass('open')
|
||||||
|
})
|
||||||
|
<?php else: ?>
|
||||||
|
sideMenuOpener.on('click', function() {
|
||||||
|
sideMenu.removeClass('open')
|
||||||
|
})
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
$(document).keydown(function(e) {
|
jQuery(document).keydown(function(e) {
|
||||||
var key = e.key || e.keyCode
|
var key = e.key || e.keyCode
|
||||||
|
|
||||||
if ((key === 'o' || key === 79) && e.ctrlKey === true) {
|
if ((key === 'o' || key === 79) && e.ctrlKey === true) {
|
||||||
@@ -109,4 +134,8 @@
|
|||||||
|
|
||||||
<?php require_once __DIR__.'/_topMenuApps.js'; ?>
|
<?php require_once __DIR__.'/_topMenuApps.js'; ?>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<?php if ($_['always-displayed'] && !$_['big-menu']): ?>
|
||||||
|
<?php require_once __DIR__.'/_alwaysDisplayed.js'; ?>
|
||||||
|
<?php endif; ?>
|
||||||
})();
|
})();
|
||||||
|
|||||||
@@ -245,9 +245,7 @@ $choicesSizes = [
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p><em><?php p($l->t('This is the automatic behavior when the menu is always displayed.')); ?></em></p>
|
||||||
<em><?php echo $l->t('Use the shortcut <span class="keyboard-key">Ctrl</span>+<span class="keyboard-key">o</span> to open and to hide the side menu. Use <span class="keyboard-key">tab</span> to navigate.'); ?></em>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<select id="side-menu-opener-hover" name="opener-hover" class="side-menu-setting">
|
<select id="side-menu-opener-hover" name="opener-hover" class="side-menu-setting">
|
||||||
@@ -261,12 +259,31 @@ $choicesSizes = [
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
<label for="side-menu-big-menu">
|
<label for="side-menu-big-menu">
|
||||||
<?php p($l->t('Display the big menu')); ?>
|
<?php p($l->t('Always displayed')); ?>
|
||||||
|
|
||||||
<small><span class="warning"><?php p($l->t('Experimental')); ?></span></small>
|
<small><span class="warning"><?php p($l->t('Experimental')); ?></span></small>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<p><em><?php p($l->t('This feature is not compatible with the <code>big menu</code> display.')); ?></em></p>
|
||||||
|
<p><em><?php p($l->t('Not compatible with touch screens.')); ?></em></p>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<select id="side-menu-always-displayed" name="always-displayed" class="side-menu-setting">
|
||||||
|
<?php foreach ($choicesYesNo as $label => $value): ?>
|
||||||
|
<option value="<?php echo $value ?>" <?php if ($value === $_['always-displayed']): ?>selected<?php endif; ?>>
|
||||||
|
<?php echo $l->t($label); ?>
|
||||||
|
</option>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label for="side-menu-big-menu">
|
||||||
|
<?php p($l->t('Display the big menu')); ?>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
<p><em><?php p($l->t('The big menu is not compatible with AppOrder.')); ?></em></p>
|
<p><em><?php p($l->t('The big menu is not compatible with AppOrder.')); ?></em></p>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
@@ -286,6 +303,7 @@ $choicesSizes = [
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p><em><?php p($l->t('This feature is not compatible with the <code>big menu</code> display.')); ?></em></p>
|
<p><em><?php p($l->t('This feature is not compatible with the <code>big menu</code> display.')); ?></em></p>
|
||||||
|
<p><em><?php p($l->t('The logo will be hidden when the menu is always displayed.')); ?></em></p>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<select id="side-menu-display-logo" name="display-logo" class="side-menu-setting">
|
<select id="side-menu-display-logo" name="display-logo" class="side-menu-setting">
|
||||||
@@ -345,7 +363,6 @@ $choicesSizes = [
|
|||||||
<div>
|
<div>
|
||||||
<label for="side-menu-top-menu-apps">
|
<label for="side-menu-top-menu-apps">
|
||||||
<?php p($l->t('Apps that not must be moved in the side menu')); ?>
|
<?php p($l->t('Apps that not must be moved in the side menu')); ?>
|
||||||
<small><span class="warning">Experimental</span></small>
|
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -61,7 +61,6 @@ $choicesYesNo = [
|
|||||||
<div>
|
<div>
|
||||||
<label for="side-menu-top-menu-apps">
|
<label for="side-menu-top-menu-apps">
|
||||||
<?php p($l->t('Apps that not must be moved in the side menu')); ?>
|
<?php p($l->t('Apps that not must be moved in the side menu')); ?>
|
||||||
<small><span class="warning"><?php p($l->t('Experimental')); ?></span></small>
|
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user