Compare commits

..

13 Commits

Author SHA1 Message Date
Simon Vieille 63b03ae11e release v1.4.0 2020-04-29 09:07:07 +02:00
Simon Vieille ec50328f78 Merge branch 'feature/issue-12' into develop 2020-04-29 09:03:11 +02:00
Simon Vieille 4146e9c2a1 fix #12: add an option to hide the opener and the panel when there is no application 2020-04-29 09:03:03 +02:00
Simon Vieille 76ecd6aeaa Merge branch 'develop' into feature/issue-12 2020-04-29 08:44:10 +02:00
Simon Vieille ef22990f4b release v1.3.4 2020-04-27 08:48:48 +02:00
Simon Vieille c84ce6a615 release v1.4.0 2020-04-26 23:46:38 +02:00
Simon Vieille 9b060d1a4b fix #13: add option to show only the opener 2020-04-26 23:45:33 +02:00
Simon Vieille 26e737e2d7 fix #13: add alternate hamburger icon 2020-04-26 23:32:30 +02:00
Simon Vieille 67f27e0ef4 fix #13: add alternate hamburger icon 2020-04-26 23:30:43 +02:00
Simon Vieille a392bb07c0 first tests to solve issue #12 2020-04-26 21:36:54 +02:00
Simon Vieille 58661508d4 indentation 2020-04-25 16:29:52 +02:00
Simon Vieille 5509b69908 fix #11 2020-04-25 16:04:54 +02:00
Simon Vieille 51eccde659 add gitignore 2020-04-25 16:03:51 +02:00
14 changed files with 113 additions and 34 deletions
+2
View File
@@ -0,0 +1,2 @@
/js
/node_modules
+1 -1
View File
@@ -39,7 +39,7 @@ $ unzip -d side_menu /path/to/side_menu_vX.Y.Z.zip
![](https://upload.deblan.org/u/2020-03/5e81b219.jpg)
![](https://upload.deblan.org/u/2020-04/5ea42d1a.png)
![](https://upload.deblan.org/u/2020-04/5ea92746.png)
How to contribute?
+4 -4
View File
@@ -8,12 +8,12 @@ This application is rather suitable for instances that activate a lot of applica
Comptatible with AppOrder.
You can report a bug or request a feature by opening an issue
You can report a bug or request a feature by opening an issue.
]]></description>
<licence>agpl</licence>
<author mail="dev+sidemenu@deblan.fr" homepage="https://www.deblan.io/">Simon Vieille</author>
<version>1.3.3</version>
<author mail="contact@deblan.fr" homepage="https://www.deblan.io/">Simon Vieille</author>
<version>1.4.0</version>
<namespace>SideMenu</namespace>
<category>customization</category>
<website>https://gitnet.fr/deblan/side_menu</website>
@@ -21,7 +21,7 @@ You can report a bug or request a feature by opening an issue
<repository type="git">https://gitnet.fr/deblan/side_menu</repository>
<screenshot>https://upload.deblan.org/u/2020-03/5e7fab2b.jpg</screenshot>
<screenshot>https://upload.deblan.org/u/2020-03/5e81b219.jpg</screenshot>
<screenshot>https://upload.deblan.org/u/2020-04/5ea42d1a.png</screenshot>
<screenshot>https://upload.deblan.org/u/2020-04/5ea92746.png</screenshot>
<dependencies>
<nextcloud min-version="18" max-version="18"/>
</dependencies>
+6 -1
View File
@@ -37,6 +37,10 @@
display: block;
}
#header .side-menu-opener {
margin-left: 5px;
}
.side-menu-opener {
background: var(--side-menu-opener, url('../img/side-menu-opener.svg'));
height: 40px;
@@ -45,7 +49,7 @@
border: 0;
}
#side-menu.hide-opener .side-menu-opener {
#side-menu.hide-opener .side-menu-opener, .side-menu-opener.hide {
display: none;
}
@@ -96,6 +100,7 @@
max-width: 250px;
position: fixed;
padding-top: 2px;
padding-left: 5px;
top: 0;
}
+6
View File
@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 10.583 10.583">
<rect overflow="visible" style="marker:none" width="4.806" height="1.256" x="2.888" y="2.787" rx="0" ry=".472" color="#000" fill="#fff" fill-opacity=".855" paint-order="stroke markers fill"/>
<rect overflow="visible" style="marker:none" width="4.806" height="1.256" x="2.888" y="4.655" rx="0" ry=".472" color="#000" fill="#fff" fill-opacity=".855" paint-order="stroke markers fill"/>
<rect overflow="visible" style="marker:none" width="4.806" height="1.256" x="2.888" y="6.54" rx="0" ry=".472" color="#000" fill="#fff" fill-opacity=".855" paint-order="stroke markers fill"/>
<path style="marker:none" d="M1.243.71A.469.469 0 0 0 .881.88a.469.469 0 0 0-.171.362V9.34c0 .146.067.275.171.362a.469.469 0 0 0 .362.171H9.34a.469.469 0 0 0 .362-.171.469.469 0 0 0 .171-.362V1.243a.469.469 0 0 0-.171-.362A.469.469 0 0 0 9.34.71zm.723 1.256h6.65v6.65h-6.65z" color="#000" overflow="visible" fill="#fff" fill-opacity=".855" paint-order="stroke markers fill"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

+1
View File
@@ -63,6 +63,7 @@ class CssController extends Controller
'opener' => $this->config->getAppValue('side_menu', 'opener', 'side-menu-opener'),
],
'display-logo' => (bool) $this->config->getAppValue('side_menu', 'display-logo', 1),
'opener-only' => (bool) $this->config->getAppValue('side_menu', 'opener-only', 0),
'size-icon' => $this->config->getAppValue('side_menu', 'size-icon', 'normal'),
'size-text' => $this->config->getAppValue('side_menu', 'size-text', 'normal'),
];
+1
View File
@@ -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'),
'hide-when-no-apps' => (bool) $this->config->getAppValue('side_menu', 'hide-when-no-apps', '0'),
];
$response = new TemplateResponse('side_menu', 'js/script', $parameters, 'blank');
+2
View File
@@ -60,6 +60,8 @@ class Admin implements ISettings
'display-logo' => $this->config->getAppValue('side_menu', 'display-logo', '1'),
'opener-position' => $this->config->getAppValue('side_menu', 'opener-position', 'before'),
'opener-hover' => $this->config->getAppValue('side_menu', 'opener-hover', '0'),
'opener-only' => $this->config->getAppValue('side_menu', 'opener-only', '0'),
'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'),
];
+1
View File
@@ -30,6 +30,7 @@ const mountSideMenuComponent = () => {
if (sideMenuContainer) {
sideMenu.$mount('#side-menu')
$('body').trigger('side-menu.ready')
} else {
window.setTimeout(mountSideMenuComponent, 50)
+26 -17
View File
@@ -46,16 +46,16 @@ export default {
},
methods: {
retrieveApps() {
this.apps = [];
const links = document.querySelectorAll('#appmenu a');
this.apps = []
const links = document.querySelectorAll('#appmenu a')
for (let element of links) {
let href = element.getAttribute('href')
if (href !== '#') {
let svg = element.querySelector('svg').outerHTML
let svg = element.querySelector('svg').outerHTML
svg = svg.replace(/(height|width)="20"/, '')
svg = svg.replace(/(height|width)="20"/, '')
this.apps.push({
href: href,
@@ -65,20 +65,26 @@ export default {
});
}
}
(function(apps) {
window.setTimeout(function() {
jQuery('body').trigger('side-menu.apps', [apps])
}, 1000)
})(this.apps)
},
retrieveLogo() {
const ncLogo = document.querySelector('#nextcloud .logo')
const ncLogo = document.querySelector('#nextcloud .logo')
if (ncLogo) {
const url = window.getComputedStyle(ncLogo, null)
.getPropertyValue('background-image')
.replace('url("', '')
.replace('")', '')
if (ncLogo) {
const url = window.getComputedStyle(ncLogo, null)
.getPropertyValue('background-image')
.replace('url("', '')
.replace('")', '')
if (url && url !== 'none') {
this.logo = url
}
}
if (url && url !== 'none') {
this.logo = url
}
}
},
},
created() {
@@ -86,9 +92,12 @@ export default {
this.retrieveLogo();
const menu = document.querySelector('#appmenu')
const config = {attributes: true, childList: true, subtree: true};
const observer = new MutationObserver(this.retrieveApps);
observer.observe(menu, config);
if (menu) {
const config = {attributes: true, childList: true, subtree: true};
const observer = new MutationObserver(this.retrieveApps);
observer.observe(menu, config);
}
}
}
</script>
+2
View File
@@ -23,7 +23,9 @@ const elements = [
'side-menu-opener',
'side-menu-opener-position',
'side-menu-opener-hover',
'side-menu-opener-only',
'side-menu-display-logo',
'side-menu-hide-when-no-apps',
'side-menu-size-icon',
'side-menu-size-text',
'side-menu-cache',
+6
View File
@@ -8,6 +8,12 @@
<?php endforeach; ?>
}
<?php if ($_['opener-only'] === true): ?>
#nextcloud {
display: none;
}
<?php endif; ?>
<?php if ($_['display-logo'] === false): ?>
.side-menu-logo {
display: none;
+22 -11
View File
@@ -3,19 +3,21 @@
var sideMenuOpener = $('<button class="side-menu-opener"></button>')
var sideMenu = $('<div id="side-menu">')
var body = $('body')
body.append(sideMenuContainer)
sideMenuContainer.append(sideMenu)
<?php if ($_['opener-position'] === 'before'): ?>
sideMenuOpener.insertBefore('#nextcloud')
<?php else: ?>
sideMenuOpener.insertAfter('#nextcloud')
<?php endif; ?>
var isTouchDevice = window.matchMedia("(pointer: coarse)").matches
body.on('side-menu.apps', function(e, apps) {
<?php if ($_['hide-when-no-apps']): ?>
sideMenu = $('#side-menu')
if (apps.length === 0) {
sideMenu.removeClass('open')
sideMenuOpener.addClass('hide')
} else {
sideMenuOpener.removeClass('hide')
}
<?php endif; ?>
})
body.on('side-menu.ready', function() {
sideMenu = $('#side-menu')
@@ -54,4 +56,13 @@
sideMenu.removeClass('open');
})
})
body.append(sideMenuContainer)
sideMenuContainer.append(sideMenu)
<?php if ($_['opener-position'] === 'before'): ?>
sideMenuOpener.insertBefore('#nextcloud')
<?php else: ?>
sideMenuOpener.insertAfter('#nextcloud')
<?php endif; ?>
})();
+33
View File
@@ -93,6 +93,7 @@ $choicesSizes = [
$choices = [
'Default' => 'side-menu-opener',
'Hamburger' => 'side-menu-opener-hamburger',
'Hamburger 2' => 'side-menu-opener-hamburger-2',
];
?>
@@ -134,6 +135,38 @@ $choicesSizes = [
<?php endforeach; ?>
</select>
</div>
<div>
<label for="side-menu-opener-only" class="settings-hint">
<?php p($l->t('Show only the opener (hidden logo)')); ?>
</label>
</div>
<div>
<select id="side-menu-opener-only" name="opener-only">
<?php foreach ($choicesYesNo as $label => $value): ?>
<option value="<?php echo $value ?>" <?php if ($value === $_['opener-only']): ?>selected<?php endif; ?>>
<?php echo $l->t($label); ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div>
<label for="side-menu-hide-when-no-apps" class="settings-hint">
<?php p($l->t('Do not display the side menu and the opener if there is no application (eg: public pages).')); ?>
</label>
</div>
<div>
<select id="side-menu-hide-when-no-apps" name="hide-when-no-apps">
<?php foreach ($choicesYesNo as $label => $value): ?>
<option value="<?php echo $value ?>" <?php if ($value === $_['hide-when-no-apps']): ?>selected<?php endif; ?>>
<?php echo $l->t($label); ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="section">