diff --git a/lib/Controller/JsController.php b/lib/Controller/JsController.php index 135b1ab..c873826 100644 --- a/lib/Controller/JsController.php +++ b/lib/Controller/JsController.php @@ -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(), diff --git a/lib/Controller/PersonalSettingController.php b/lib/Controller/PersonalSettingController.php index 90fb758..bdc9fca 100644 --- a/lib/Controller/PersonalSettingController.php +++ b/lib/Controller/PersonalSettingController.php @@ -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); diff --git a/lib/Settings/Admin.php b/lib/Settings/Admin.php index 0f6e390..d0a532b 100644 --- a/lib/Settings/Admin.php +++ b/lib/Settings/Admin.php @@ -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', '[]'), diff --git a/lib/Settings/Personal.php b/lib/Settings/Personal.php index 2b34bb2..9ac24c7 100644 --- a/lib/Settings/Personal.php +++ b/lib/Settings/Personal.php @@ -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(), diff --git a/src/admin.js b/src/admin.js index 8753d8e..0c8c156 100644 --- a/src/admin.js +++ b/src/admin.js @@ -131,9 +131,12 @@ const updateAppsCategoriesCustom = () => { } document.addEventListener('DOMContentLoaded', () => { - const View = Vue.extend(AdminCategoriesCustom) - const adminCategoriesCustom = new View({}) - adminCategoriesCustom.$mount('#side-menu-categories-custom') + 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) { diff --git a/src/l10n/fixtures/cs.yaml b/src/l10n/fixtures/cs.yaml index d0b65ab..11fc4b1 100644 --- a/src/l10n/fixtures/cs.yaml +++ b/src/l10n/fixtures/cs.yaml @@ -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" diff --git a/src/l10n/fixtures/de.yaml b/src/l10n/fixtures/de.yaml index 520e6d8..eb30f55 100644 --- a/src/l10n/fixtures/de.yaml +++ b/src/l10n/fixtures/de.yaml @@ -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" diff --git a/src/l10n/fixtures/fr.yaml b/src/l10n/fixtures/fr.yaml index 9cb2792..9b6a6c0 100644 --- a/src/l10n/fixtures/fr.yaml +++ b/src/l10n/fixtures/fr.yaml @@ -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" diff --git a/src/l10n/fixtures/zh_CN.yaml b/src/l10n/fixtures/zh_CN.yaml index 5282c9f..294157a 100644 --- a/src/l10n/fixtures/zh_CN.yaml +++ b/src/l10n/fixtures/zh_CN.yaml @@ -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": "顶部和侧边菜单中可见的应用程序" diff --git a/templates/js/_topMenuApps.js b/templates/js/_topMenuApps.js index 043eb58..85ed332 100644 --- a/templates/js/_topMenuApps.js +++ b/templates/js/_topMenuApps.js @@ -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 { diff --git a/templates/js/script.php b/templates/js/script.php index 8f22477..e133d10 100644 --- a/templates/js/script.php +++ b/templates/js/script.php @@ -186,8 +186,9 @@ if ($_['always-displayed']) { nextcloud.parentNode.insertBefore(sideMenuOpener, nextcloud.nextSibling) - - const topMenuApps = + + const topMenuApps = + const topSideMenuApps = diff --git a/templates/settings/admin-form.php b/templates/settings/admin-form.php index e75fc2b..9de1424 100644 --- a/templates/settings/admin-form.php +++ b/templates/settings/admin-form.php @@ -730,7 +730,7 @@ $choicesSizes = [
- t('Apps that not must be moved in the side menu')); ?> + t('Apps only visible in the top menu')); ?>
+ +
+
+
+ t('Apps visible in the top and side menus')); ?> +
+
+ + 🖱️ t('Show and hide the list of applications')); ?> + + + +
+
+
diff --git a/templates/settings/personal-form.php b/templates/settings/personal-form.php index 69cd7dd..2af925f 100644 --- a/templates/settings/personal-form.php +++ b/templates/settings/personal-form.php @@ -43,69 +43,73 @@ $choicesYesNo = [ t('Menu')); ?> -
- -
-

t('Use the shortcut Ctrl+o to open and to hide the side menu. Use tab to navigate.'); ?>

-
- -
- -
- -
- -
- '1', - 'Use my selection' => '2', - ]; ?> - - -
- -

- - 🖱️ t('Show and hide the list of applications')); ?> - -

- -