forked from deblan/side_menu
add option to keep an app in the top and side menu
This commit is contained in:
parent
50c65811a6
commit
d34b41ba94
|
@ -94,6 +94,7 @@ class JsController extends Controller
|
|||
protected function getConfig(): array
|
||||
{
|
||||
$topMenuApps = $this->config->getAppValueArray('top-menu-apps', '[]');
|
||||
$topSideMenuApps = $this->config->getAppValueArray('top-side-menu-apps', '[]');
|
||||
$targetBlankApps = $this->config->getAppValueArray('target-blank-apps', '[]');
|
||||
$useAvatar = $this->config->getAppValueBool('use-avatar', '0');
|
||||
$isForced = $this->config->getAppValueBool('force', '0');
|
||||
|
@ -103,11 +104,16 @@ class JsController extends Controller
|
|||
|
||||
if ($this->user) {
|
||||
$userTopMenuApps = $this->config->getUserValueArray($this->user, 'top-menu-apps', '[]');
|
||||
$userTopSideMenuApps = $this->config->getUserValueArray($this->user, 'top-side-menu-apps', '[]');
|
||||
|
||||
if (!empty($userTopMenuApps) && !$isForced) {
|
||||
$topMenuApps = $userTopMenuApps;
|
||||
}
|
||||
|
||||
if (!empty($userTopSideMenuApps) && !$isForced) {
|
||||
$topSideMenuApps = $userTopSideMenuApps;
|
||||
}
|
||||
|
||||
$userTargetBlankMode = $this->config->getUserValueInt($this->user, 'target-blank-mode', '1');
|
||||
$userTargetBlankApps = $this->config->getUserValueArray($this->user, 'target-blank-apps', '[]');
|
||||
|
||||
|
@ -157,6 +163,7 @@ class JsController extends Controller
|
|||
'big-menu-hidden-apps' => $this->config->getAppValueArray('big-menu-hidden-apps', '[]'),
|
||||
'avatar' => $avatar,
|
||||
'top-menu-apps' => $topMenuApps,
|
||||
'top-side-menu-apps' => $topSideMenuApps,
|
||||
'target-blank-apps' => $targetBlankApps,
|
||||
'settings' => $settings,
|
||||
'logo' => $this->themingDefaults->getLogo(),
|
||||
|
|
|
@ -97,7 +97,7 @@ class PersonalSettingController extends Controller
|
|||
}
|
||||
}
|
||||
|
||||
if ('top-menu-apps' === $name) {
|
||||
if (in_array($name, ['top-menu-apps', 'top-side-menu-apps'])) {
|
||||
$doSave = true;
|
||||
$data = json_decode($value, true);
|
||||
|
||||
|
|
|
@ -147,6 +147,7 @@ class Admin implements ISettings
|
|||
'force' => $this->config->getAppValue('force', '0'),
|
||||
'target-blank-apps' => $this->config->getAppValueArray('target-blank-apps', '[]'),
|
||||
'top-menu-apps' => $this->config->getAppValueArray('top-menu-apps', '[]'),
|
||||
'top-side-menu-apps' => $this->config->getAppValueArray('top-side-menu-apps', '[]'),
|
||||
'default-enabled' => $this->config->getAppValue('default-enabled', '1'),
|
||||
'apps' => $this->appRepository->getVisibleApps(),
|
||||
'apps-categories-custom' => $this->config->getAppValueArray('apps-categories-custom', '[]'),
|
||||
|
|
|
@ -78,6 +78,7 @@ class Personal implements ISettings
|
|||
$this->config->getAppValue('default-enabled', '1')
|
||||
),
|
||||
'top-menu-apps' => $this->config->getUserValueArray($user, 'top-menu-apps', '[]'),
|
||||
'top-side-menu-apps' => $this->config->getUserValueArray($user, 'top-side-menu-apps', '[]'),
|
||||
'target-blank-mode' => $this->config->getUserValue($user, 'target-blank-mode', '1'),
|
||||
'target-blank-apps' => $this->config->getUserValueArray($user, 'target-blank-apps', '[]'),
|
||||
'apps' => $this->appRepository->getVisibleApps(),
|
||||
|
|
|
@ -131,9 +131,12 @@ const updateAppsCategoriesCustom = () => {
|
|||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
id (document.querySelector('#side-menu-categories-custom')) {
|
||||
const View = Vue.extend(AdminCategoriesCustom)
|
||||
const adminCategoriesCustom = new View({})
|
||||
|
||||
adminCategoriesCustom.$mount('#side-menu-categories-custom')
|
||||
}
|
||||
|
||||
elements = document.querySelectorAll('.side-menu-setting')
|
||||
|
||||
|
@ -232,8 +235,6 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||
value.push(item.getAttribute('data-id'))
|
||||
}
|
||||
|
||||
console.log(value)
|
||||
|
||||
document.querySelector('input[name="categories-order"]').value = JSON.stringify(value)
|
||||
})
|
||||
} catch (e) {
|
||||
|
|
|
@ -80,3 +80,5 @@
|
|||
"Custom categories": "Vlastní kategorie"
|
||||
"Customize application categories": "Personnaliser les catégories des applications"
|
||||
"Customize application categories": "Přizpůsobte kategorie aplikací"
|
||||
"Apps only visible in the top menu": "Aplikace jsou viditelné pouze v horní nabídce "
|
||||
"Apps visible in the top and side menus": "Aplikace viditelné v horní a boční nabídce"
|
||||
|
|
|
@ -79,3 +79,5 @@
|
|||
"With categories": "Mit Kategorien"
|
||||
"Custom categories": "Benutzerdefinierte Kategorien"
|
||||
"Customize application categories": "Anwendungskategorien anpassen"
|
||||
"Apps only visible in the top menu": "Apps nur im oberen Menü sichtbar "
|
||||
"Apps visible in the top and side menus": "Apps im oberen und seitlichen Menü sichtbar"
|
||||
|
|
|
@ -79,3 +79,5 @@
|
|||
"With categories": "Avec les catégories"
|
||||
"Custom categories": "Catégories personnalisées"
|
||||
"Customize application categories": "Personnaliser les catégories des applications"
|
||||
"Apps only visible in the top menu": "Applications visibles uniquement dans le menu supérieur"
|
||||
"Apps visible in the top and side menus": "Applications visibles dans le menus supérieur et latéral"
|
||||
|
|
|
@ -79,3 +79,5 @@
|
|||
"With categories": "有类别"
|
||||
"Custom categories": "自定义类别"
|
||||
"Customize application categories": "自定义应用程序类别"
|
||||
"Apps only visible in the top menu": "应用程序仅在顶部菜单中可见"
|
||||
"Apps visible in the top and side menus": "顶部和侧边菜单中可见的应用程序"
|
||||
|
|
|
@ -52,7 +52,7 @@ const updateTopMenu = function() {
|
|||
continue
|
||||
}
|
||||
|
||||
if (topMenuApps.indexOf(dataId) === -1) {
|
||||
if (topMenuApps.indexOf(dataId) === -1 && topSideMenuApps.indexOf(dataId) === -1) {
|
||||
app.classList.add('hidden')
|
||||
app.classList.add('app-hidden')
|
||||
} else {
|
||||
|
|
|
@ -186,8 +186,9 @@ if ($_['always-displayed']) {
|
|||
nextcloud.parentNode.insertBefore(sideMenuOpener, nextcloud.nextSibling)
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (!empty($_['top-menu-apps'])): ?>
|
||||
const topMenuApps = <?php echo json_encode($_['top-menu-apps']); ?>
|
||||
<?php if (!empty($_['top-menu-apps']) || !empty($_['top-side-menu-apps'])): ?>
|
||||
const topMenuApps = <?php echo json_encode($_['top-menu-apps']), "\n"; ?>
|
||||
const topSideMenuApps = <?php echo json_encode($_['top-side-menu-apps']); ?>
|
||||
|
||||
<?php require_once __DIR__.'/_topMenuApps.js'; ?>
|
||||
<?php endif; ?>
|
||||
|
|
|
@ -730,7 +730,7 @@ $choicesSizes = [
|
|||
<div class="side-menu-setting-table">
|
||||
<div class="side-menu-setting-row">
|
||||
<div class="side-menu-setting-label">
|
||||
<?php p($l->t('Apps that not must be moved in the side menu')); ?>
|
||||
<?php p($l->t('Apps only visible in the top menu')); ?>
|
||||
</div>
|
||||
<div class="side-menu-setting-form">
|
||||
<a class="side-menu-toggler" data-target="#top-menu-apps" href="#_">
|
||||
|
@ -759,6 +759,39 @@ $choicesSizes = [
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="side-menu-setting-table">
|
||||
<div class="side-menu-setting-row">
|
||||
<div class="side-menu-setting-label">
|
||||
<?php p($l->t('Apps visible in the top and side menus')); ?>
|
||||
</div>
|
||||
<div class="side-menu-setting-form">
|
||||
<a class="side-menu-toggler" data-target="#top-side-menu-apps" href="#_">
|
||||
🖱️ <?php p($l->t('Show and hide the list of applications')); ?>
|
||||
</a>
|
||||
|
||||
<div class="side-menu-setting" data-name="top-side-menu-apps" id="top-side-menu-apps" data-checkbox style="display: none">
|
||||
<ul class="side-menu-setting-list">
|
||||
<?php foreach ($_['apps'] as $app): ?>
|
||||
<li class="side-menu-setting-list-item">
|
||||
<input
|
||||
type="checkbox"
|
||||
name="top-side-menu-apps[]"
|
||||
value="<?php echo $app['id'] ?>"
|
||||
id="top-side-menu-app-<?php echo $app['id'] ?>"
|
||||
<?php if (in_array($app['id'], $_['top-side-menu-apps'])): ?>checked<?php endif; ?>
|
||||
/>
|
||||
|
||||
<label for="top-side-menu-apps-<?php echo $app['id'] ?>">
|
||||
<?php echo p($l->t($app['name'])); ?>
|
||||
</label>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
|
|
@ -43,17 +43,16 @@ $choicesYesNo = [
|
|||
<?php p($l->t('Menu')); ?>
|
||||
</h2>
|
||||
|
||||
<div>
|
||||
<label for="side-menu-enabled">
|
||||
<?php p($l->t('Enable the custom menu')); ?>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<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 class="side-menu-setting-table">
|
||||
<div class="side-menu-setting-row">
|
||||
<div class="side-menu-setting-label">
|
||||
<?php p($l->t('Enable the custom menu')); ?>
|
||||
</div>
|
||||
<div class="side-menu-setting-form">
|
||||
<select id="side-menu-enabled" name="enabled" class="side-menu-setting" data-personal>
|
||||
<?php foreach ($choicesYesNo as $label => $value): ?>
|
||||
<option value="<?php echo $value ?>" <?php if ($value === $_['enabled']): ?>selected<?php endif; ?>>
|
||||
|
@ -62,14 +61,15 @@ $choicesYesNo = [
|
|||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="side-menu-target-blank">
|
||||
<?php p($l->t('Open apps in new tab')); ?>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="side-menu-setting-table">
|
||||
<div class="side-menu-setting-row">
|
||||
<div class="side-menu-setting-label">
|
||||
<?php p($l->t('Open apps in new tab')); ?>
|
||||
</div>
|
||||
<div class="side-menu-setting-form">
|
||||
<?php $choices = [
|
||||
'Use the global setting' => '1',
|
||||
'Use my selection' => '2',
|
||||
|
@ -82,7 +82,6 @@ $choicesYesNo = [
|
|||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
<a class="side-menu-toggler" data-target="#target-blank-apps" href="#_">
|
||||
|
@ -91,8 +90,9 @@ $choicesYesNo = [
|
|||
</p>
|
||||
|
||||
<div class="side-menu-setting" data-name="target-blank-apps" id="target-blank-apps" data-personal data-checkbox style="display: none">
|
||||
<ul class="side-menu-setting-list">
|
||||
<?php foreach ($_['apps'] as $app): ?>
|
||||
<div>
|
||||
<li class="side-menu-setting-list-item">
|
||||
<input
|
||||
type="checkbox"
|
||||
name="target-blank-apps[]"
|
||||
|
@ -104,8 +104,12 @@ $choicesYesNo = [
|
|||
<label for="target-blank-app-<?php echo $app['id'] ?>">
|
||||
<?php echo p($l->t($app['name'])); ?>
|
||||
</label>
|
||||
</div>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -113,18 +117,18 @@ $choicesYesNo = [
|
|||
<h2>
|
||||
<?php p($l->t('Top menu')); ?>
|
||||
</h2>
|
||||
<div>
|
||||
<label for="side-menu-top-menu-apps">
|
||||
<?php p($l->t('Apps that not must be moved in the side menu')); ?>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="side-menu-setting-table">
|
||||
<div class="side-menu-setting-row">
|
||||
<div class="side-menu-setting-label">
|
||||
<?php p($l->t('Apps only visible in the top menu')); ?>
|
||||
<p>
|
||||
<em>
|
||||
<?php p($l->t('If there is no selection then the global configuration is applied.')); ?>
|
||||
</em>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
<div class="side-menu-setting-form">
|
||||
<p>
|
||||
<a class="side-menu-toggler" data-target="#top-menu-apps" href="#_">
|
||||
🖱️ <?php p($l->t('Show and hide the list of applications')); ?>
|
||||
|
@ -132,8 +136,9 @@ $choicesYesNo = [
|
|||
</p>
|
||||
|
||||
<div class="side-menu-setting" data-name="top-menu-apps" data-checkbox data-personal id="top-menu-apps" style="display: none">
|
||||
<ul class="side-menu-setting-list">
|
||||
<?php foreach ($_['apps'] as $app): ?>
|
||||
<div>
|
||||
<li class="side-menu-setting-list-item">
|
||||
<input
|
||||
type="checkbox"
|
||||
name="top-menu-apps[]"
|
||||
|
@ -145,8 +150,52 @@ $choicesYesNo = [
|
|||
<label for="top-menu-app-<?php echo $app['id'] ?>">
|
||||
<?php echo $app['name'] ?>
|
||||
</label>
|
||||
</div>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="side-menu-setting-table">
|
||||
<div class="side-menu-setting-row">
|
||||
<div class="side-menu-setting-label">
|
||||
<?php p($l->t('Apps visible in the top and side menus')); ?>
|
||||
<p>
|
||||
<em>
|
||||
<?php p($l->t('If there is no selection then the global configuration is applied.')); ?>
|
||||
</em>
|
||||
</p>
|
||||
</div>
|
||||
<div class="side-menu-setting-form">
|
||||
<p>
|
||||
<a class="side-menu-toggler" data-target="#top-side-menu-apps" href="#_">
|
||||
🖱️ <?php p($l->t('Show and hide the list of applications')); ?>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<div class="side-menu-setting" data-name="top-side-menu-apps" data-checkbox data-personal id="top-side-menu-apps" style="display: none">
|
||||
<ul class="side-menu-setting-list">
|
||||
<?php foreach ($_['apps'] as $app): ?>
|
||||
<li class="side-menu-setting-list-item">
|
||||
<input
|
||||
type="checkbox"
|
||||
name="top-side-menu-apps[]"
|
||||
value="<?php echo $app['id'] ?>"
|
||||
id="top-side-menu-app-<?php echo $app['id'] ?>"
|
||||
<?php if (in_array($app['id'], $_['top-side-menu-apps'])): ?>checked<?php endif; ?>
|
||||
/>
|
||||
|
||||
<label for="top-side-menu-app-<?php echo $app['id'] ?>">
|
||||
<?php echo $app['name'] ?>
|
||||
</label>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
|
Loading…
Reference in a new issue