Compare commits

..

27 Commits

Author SHA1 Message Date
Simon Vieille fa15824dad Merge pull request 'release v3.3.2' (#175) from develop into master
Reviewed-on: https://gitnet.fr/deblan/side_menu/pulls/175
2022-11-10 13:08:27 +01:00
Simon Vieille 474387ff43 release v3.3.2 2022-11-10 13:07:35 +01:00
Simon Vieille 45ae1b3579 Merge pull request 'reduce the height of categories list (fix #173)' (#174) from feature/issue173 into develop
Reviewed-on: https://gitnet.fr/deblan/side_menu/pulls/174
2022-11-09 13:04:12 +01:00
Simon Vieille c10d0e8442 reduce the height of categories list (fix #173) 2022-11-09 12:51:56 +01:00
Simon Vieille f5cabe9708 Merge pull request 'release v3.3.1' (#171) from develop into master
Reviewed-on: https://gitnet.fr/deblan/side_menu/pulls/171
2022-11-06 17:01:43 +01:00
Simon Vieille 00e8a56e15 release v3.3.1 2022-11-06 16:55:23 +01:00
Simon Vieille 0ea7fe04bf Merge branch 'feature/issue162' into develop 2022-11-06 16:54:25 +01:00
Simon Vieille 0ac55b7ba4 fix #162: top and side app is broken 2022-11-05 15:40:52 +01:00
Simon Vieille 1794997ca0 Merge pull request 'Translated using Weblate (French)' (#169) from translations into develop
Reviewed-on: https://gitnet.fr/deblan/side_menu/pulls/169
2022-11-05 12:25:05 +01:00
deblan 3c7cd2812f Translated using Weblate (French)
Currently translated at 100.0% (91 of 91 strings)

Translation: Custom menu/Application
Translate-URL: https://translate.codeberg.org/projects/custom-menu/application/fr/
2022-11-05 11:04:27 +00:00
Simon Vieille 2c75ebb3f7 Merge pull request 'translations' (#168) from translations into develop
Reviewed-on: https://gitnet.fr/deblan/side_menu/pulls/168
2022-11-05 12:02:29 +01:00
Anonymous 8bf7c7a8ce Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (91 of 91 strings)

Translation: Custom menu/Application
Translate-URL: https://translate.codeberg.org/projects/custom-menu/application/zh_Hans/
2022-11-05 10:49:52 +00:00
Anonymous 5ed9e1e449 Translated using Weblate (French)
Currently translated at 100.0% (91 of 91 strings)

Translation: Custom menu/Application
Translate-URL: https://translate.codeberg.org/projects/custom-menu/application/fr/
2022-11-05 10:49:52 +00:00
Anonymous 2b4feb908e Translated using Weblate (German)
Currently translated at 100.0% (91 of 91 strings)

Translation: Custom menu/Application
Translate-URL: https://translate.codeberg.org/projects/custom-menu/application/de/
2022-11-05 10:49:51 +00:00
Anonymous 572f05ed52 Translated using Weblate (Czech)
Currently translated at 100.0% (91 of 91 strings)

Translation: Custom menu/Application
Translate-URL: https://translate.codeberg.org/projects/custom-menu/application/cs/
2022-11-05 10:49:51 +00:00
Simon Vieille dbf1c4316a Merge pull request 'release v3.3.0' (#167) from develop into master
Reviewed-on: https://gitnet.fr/deblan/side_menu/pulls/167
2022-11-04 22:43:18 +01:00
Simon Vieille e9fb46b7b7 release v3.3.0 2022-11-04 22:36:54 +01:00
Simon Vieille 1357571104 update screenshots 2022-11-04 22:26:20 +01:00
Simon Vieille 0cec77154a Merge pull request 'fix #164: open apps in new tab does not work' (#166) from feature/issue164 into develop
Reviewed-on: https://gitnet.fr/deblan/side_menu/pulls/166
2022-11-04 22:17:48 +01:00
Simon Vieille 6d7543f381 fix #164: open apps in new tab does not work 2022-11-04 22:14:28 +01:00
Simon Vieille 1d06c1b212 fix issue with top and side apps (#162 #159) 2022-11-04 21:43:18 +01:00
Simon Vieille 712777470c Merge pull request 'Sort menu on user level' (#165) from feature/issue160 into develop
Reviewed-on: https://gitnet.fr/deblan/side_menu/pulls/165
2022-11-04 21:12:16 +01:00
Simon Vieille 52d88771d9 add apps sorter is user side (fix #160) 2022-11-04 21:07:44 +01:00
Simon Vieille c8ac0b5922 Merge pull request 'feature/doc' (#163) from feature/doc into develop
Reviewed-on: https://gitnet.fr/deblan/side_menu/pulls/163
2022-11-04 19:32:40 +01:00
Simon Vieille 78162f9a1e add translations 2022-11-04 18:53:47 +01:00
Simon Vieille 81f5dfcf2d add compatibility badges for each options 2022-11-04 18:50:45 +01:00
Simon Vieille 7f6f606d75 fix changelog 2022-10-29 11:41:48 +02:00
20 changed files with 353 additions and 196 deletions
+18 -2
View File
@@ -1,9 +1,25 @@
## [Unreleased] ## [Unreleased]
## 3.3.2
### Fixed
* fix #173: reduce the height of categories list
## 3.3.1
### Fixed
* fix #162: top and side apps does work correctly
## 3.3.0
### Added
* add documentation in admin page
* add app sorter in user config side (#160)
### Fixed
* fix #164: open apps in new tab does not work
* fix #162 #159: top and side apps does work correctly
## 3.2.1 ## 3.2.1
### Fixed ### Fixed
* fix #150: Active app is not visible has active in menu (except in default menu) * fix #150: active app is not visible has active in menu (except in default menu)
* fix #150: opener position * fix #151: opener position
## 3.2.0 ## 3.2.0
### Added ### Added
+1 -1
View File
@@ -32,7 +32,7 @@ Notice
Because I believe in a free and decentralized Internet, [Gitnet](https://gitnet.fr) is **self-hosted at home**. Because I believe in a free and decentralized Internet, [Gitnet](https://gitnet.fr) is **self-hosted at home**.
In case of downtime, you can download **Custom Menu** from [here](https://kim.deblan.fr/~side_menu/). In case of downtime, you can download **Custom Menu** from [here](https://kim.deblan.fr/~side_menu/).
]]></description> ]]></description>
<version>3.2.1</version> <version>3.3.2</version>
<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>
<namespace>SideMenu</namespace> <namespace>SideMenu</namespace>
+40 -1
View File
@@ -73,7 +73,7 @@
.side-menu-setting-list { .side-menu-setting-list {
margin: 10px 4px 4px 0px; margin: 10px 4px 4px 0px;
border: 1px solid var(--color-border-dark); border: 2px solid var(--color-border-dark);
border-radius: 15px; border-radius: 15px;
} }
@@ -175,3 +175,42 @@
.btn-reset--progress { .btn-reset--progress {
transform: rotate(-359deg); transform: rotate(-359deg);
} }
.badges {
margin-bottom: 14px;
margin-top: 4px;
}
.badge {
border-size: 1px;
padding: 2px 8px;
margin-right: 2px;
margin-bottom: 5px;
display: inline-block;
border-radius: 4px;
font-size: 13px;
}
.badge-1 {
background: #d4ce14;
border-color: #cad413;
color: #373a05;
}
.badge-2 {
background: #96d47f;
border-color: #7ed49b;
color: #333;
}
.badge-3 {
background: #d4540a;
border-color: #d4700c;
color: #fff;
}
.badge-4 {
background: #9d81d4;
border-color: #c681d4;
color: #fff;
}
+1 -1
View File
@@ -198,7 +198,7 @@
} }
.side-menu-categories { .side-menu-categories {
max-height: calc(100vh - 5px); max-height: calc(100vh - 55px);
overflow: auto; overflow: auto;
position: relative; position: relative;
top: 5px; top: 5px;
+7 -1
View File
@@ -100,10 +100,12 @@ class JsController extends Controller
$useAvatar = $this->config->getAppValueBool('use-avatar', '0'); $useAvatar = $this->config->getAppValueBool('use-avatar', '0');
$isForced = $this->config->getAppValueBool('force', '0'); $isForced = $this->config->getAppValueBool('force', '0');
$addLogoLink = $this->config->getAppValueBool('add-logo-link', '1'); $addLogoLink = $this->config->getAppValueBool('add-logo-link', '1');
$appsOrder = $this->config->getAppValueArray('apps-order', '[]');
$avatar = null; $avatar = null;
$settings = null; $settings = null;
if ($this->user) { if ($this->user) {
$userAppsOrder = $this->config->getUserValueArray($this->user, 'apps-order', '[]');
$userTopMenuApps = $this->config->getUserValueArray($this->user, 'top-menu-apps', '[]'); $userTopMenuApps = $this->config->getUserValueArray($this->user, 'top-menu-apps', '[]');
$userTopSideMenuApps = $this->config->getUserValueArray($this->user, 'top-side-menu-apps', '[]'); $userTopSideMenuApps = $this->config->getUserValueArray($this->user, 'top-side-menu-apps', '[]');
@@ -115,6 +117,10 @@ class JsController extends Controller
$topSideMenuApps = $userTopSideMenuApps; $topSideMenuApps = $userTopSideMenuApps;
} }
if (!empty($userAppsOrder) && !$isForced) {
$appsOrder = $userAppsOrder;
}
$userTargetBlankMode = $this->config->getUserValueInt($this->user, 'target-blank-mode', '1'); $userTargetBlankMode = $this->config->getUserValueInt($this->user, 'target-blank-mode', '1');
$userTargetBlankApps = $this->config->getUserValueArray($this->user, 'target-blank-apps', '[]'); $userTargetBlankApps = $this->config->getUserValueArray($this->user, 'target-blank-apps', '[]');
@@ -162,7 +168,7 @@ class JsController extends Controller
'side-with-categories' => $this->config->getAppValueBool('side-with-categories', '0'), 'side-with-categories' => $this->config->getAppValueBool('side-with-categories', '0'),
'big-menu' => $this->config->getAppValueBool('big-menu', '0'), 'big-menu' => $this->config->getAppValueBool('big-menu', '0'),
'big-menu-hidden-apps' => $this->config->getAppValueArray('big-menu-hidden-apps', '[]'), 'big-menu-hidden-apps' => $this->config->getAppValueArray('big-menu-hidden-apps', '[]'),
'apps-order' => $this->config->getAppValueArray('apps-order', '[]'), 'apps-order' => $appsOrder,
'avatar' => $avatar, 'avatar' => $avatar,
'top-menu-apps' => $topMenuApps, 'top-menu-apps' => $topMenuApps,
'top-side-menu-apps' => $topSideMenuApps, 'top-side-menu-apps' => $topSideMenuApps,
+11 -5
View File
@@ -93,11 +93,13 @@ class NavController extends Controller
]); ]);
} }
$apps = $this->appRepository->getOrderedApps(); $apps = $this->appRepository->getOrderedApps($user);
$categoriesLabels = $this->categoryRepository->getOrderedCategories(); $categoriesLabels = $this->categoryRepository->getOrderedCategories();
$hiddenApps = $this->config->getAppValueArray('big-menu-hidden-apps', '[]'); $hiddenApps = $this->config->getAppValueArray('big-menu-hidden-apps', '[]');
$isForced = $this->config->getAppValueBool('force', '0'); $isForced = $this->config->getAppValueBool('force', '0');
$topMenuApps = $this->config->getAppValueArray('top-menu-apps', '[]'); $topMenuApps = $this->config->getAppValueArray('top-menu-apps', '[]');
$topSideMenuApps = $this->config->getAppValueArray('top-side-menu-apps', '[]');
$userTopSideMenuApps = $this->config->getUserValueArray($user, 'top-side-menu-apps', '[]');
$userTopMenuApps = $this->config->getUserValueArray($user, 'top-menu-apps', '[]'); $userTopMenuApps = $this->config->getUserValueArray($user, 'top-menu-apps', '[]');
$appsCategories = []; $appsCategories = [];
$categoriesAppsCount = []; $categoriesAppsCount = [];
@@ -106,12 +108,16 @@ class NavController extends Controller
$topMenuApps = $userTopMenuApps; $topMenuApps = $userTopMenuApps;
} }
foreach ($apps as $app) { if (!$isForced && !empty($userTopSideMenuApps)) {
if (in_array($app['id'], $topMenuApps)) { $topSideMenuApps = $userTopSideMenuApps;
continue;
} }
if (in_array($app['id'], $hiddenApps)) { foreach ($apps as $app) {
$inTopMenuApps = in_array($app['id'], $topMenuApps);
$inTopSideMenuApps = in_array($app['id'], $topSideMenuApps);
$inHiddenApps = in_array($app['id'], $hiddenApps);
if (($inTopMenuApps && !$inTopSideMenuApps) || $inHiddenApps) {
continue; continue;
} }
+1 -1
View File
@@ -97,7 +97,7 @@ class PersonalSettingController extends Controller
} }
} }
if (in_array($name, ['top-menu-apps', 'top-side-menu-apps'])) { if (in_array($name, ['top-menu-apps', 'top-side-menu-apps', 'apps-order'])) {
$doSave = true; $doSave = true;
$data = json_decode($value, true); $data = json_decode($value, true);
+10 -1
View File
@@ -2,6 +2,7 @@
namespace OCA\SideMenu\Service; namespace OCA\SideMenu\Service;
use OC\User\User;
use OCP\L10N\IFactory; use OCP\L10N\IFactory;
/** /**
@@ -110,11 +111,19 @@ class AppRepository
); );
} }
public function getOrderedApps() public function getOrderedApps(?User $user = null)
{ {
$apps = $this->getVisibleApps(); $apps = $this->getVisibleApps();
$orders = $this->config->getAppValueArray('apps-order', '[]'); $orders = $this->config->getAppValueArray('apps-order', '[]');
if (null !== $user && !$this->config->getAppValueBool('force', '0')) {
$userOrders = $this->config->getUserValueArray($user, 'apps-order', '[]');
if (!empty($userOrders)) {
$orders = $userOrders;
}
}
usort($apps, function ($a, $b) use ($orders) { usort($apps, function ($a, $b) use ($orders) {
$ak = array_keys($orders, $a['id'])[0] ?? null; $ak = array_keys($orders, $a['id'])[0] ?? null;
$bk = array_keys($orders, $b['id'])[0] ?? null; $bk = array_keys($orders, $b['id'])[0] ?? null;
+2
View File
@@ -81,7 +81,9 @@ class Personal implements ISettings
'top-side-menu-apps' => $this->config->getUserValueArray($user, 'top-side-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-mode' => $this->config->getUserValue($user, 'target-blank-mode', '1'),
'target-blank-apps' => $this->config->getUserValueArray($user, 'target-blank-apps', '[]'), 'target-blank-apps' => $this->config->getUserValueArray($user, 'target-blank-apps', '[]'),
'apps-order' => $this->config->getUserValueArray($user, 'apps-order', '[]'),
'apps' => $this->appRepository->getVisibleApps(), 'apps' => $this->appRepository->getVisibleApps(),
'ordered-apps' => $this->appRepository->getOrderedApps($user),
]; ];
return new TemplateResponse(Application::APP_ID, 'settings/personal-form', $parameters, ''); return new TemplateResponse(Application::APP_ID, 'settings/personal-form', $parameters, '');
Binary file not shown.

Before

Width:  |  Height:  |  Size: 321 KiB

After

Width:  |  Height:  |  Size: 380 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 79 KiB

+3
View File
@@ -33,6 +33,7 @@
<a :href="app.href" <a :href="app.href"
:class="{ 'has-unread': app.unread > 0 }" :class="{ 'has-unread': app.unread > 0 }"
:aria-label="appLabel(app)" :aria-label="appLabel(app)"
:target="targetBlankApps.indexOf(app.id) !== -1 ? '_blank' : undefined"
:aria-current="app.active ? 'page' : false"> :aria-current="app.active ? 'page' : false">
<img :src="app.icon" alt=""> <img :src="app.icon" alt="">
<div class="app-menu-entry--label"> <div class="app-menu-entry--label">
@@ -75,6 +76,7 @@ export default {
apps: null, apps: null,
appLimit: 0, appLimit: 0,
observer: null, observer: null,
targetBlankApps: [],
} }
}, },
mounted() { mounted() {
@@ -93,6 +95,7 @@ export default {
} }
}) })
this.targetBlankApps = window.targetBlankApps
this.observer = new ResizeObserver(this.resize) this.observer = new ResizeObserver(this.resize)
this.observer.observe(this.$el) this.observer.observe(this.$el)
this.resize() this.resize()
+5 -6
View File
@@ -53,14 +53,10 @@
\ obrazovky)" \ obrazovky)"
"Display the big menu": "Zobrazit velkou nabídku" "Display the big menu": "Zobrazit velkou nabídku"
"Display the logo": "Zobrazit logo" "Display the logo": "Zobrazit logo"
"This feature is not compatible with the <code>big menu</code> display.": "Tato funkce\
\ není kompatibilní se zobrazením <code>velké nabídky</code>."
"Icons and texts": "Ikony a texty" "Icons and texts": "Ikony a texty"
"Loader enabled": "Načítání zapnuto" "Loader enabled": "Načítání zapnuto"
"Tips": "Tipy" "Tips": "Tipy"
"Always displayed": "Vždy zobrazeno" "Always displayed": "Vždy zobrazeno"
"The logo will be hidden when the menu is always displayed.": "Pokud je nabídka zobrazena\
\ trvale, logo bude skryto."
"This is the automatic behavior when the menu is always displayed.": "Toto je automatické\ "This is the automatic behavior when the menu is always displayed.": "Toto je automatické\
\ chování, kdy je nabídka vždy zobrazena." \ chování, kdy je nabídka vždy zobrazena."
"Not compatible with touch screens.": "Nekompatibilní s dotykovými obrazovkami." "Not compatible with touch screens.": "Nekompatibilní s dotykovými obrazovkami."
@@ -97,8 +93,6 @@
"With categories": "S kategoriemi" "With categories": "S kategoriemi"
"Custom categories": "Vlastní kategorie" "Custom categories": "Vlastní kategorie"
"Customize application categories": "Přizpůsobte kategorie aplikací" "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"
"Reset to default": "Vrátit zpět na výchozí hodnoty" "Reset to default": "Vrátit zpět na výchozí hodnoty"
"Hidden icon": "Skrytá ikona" "Hidden icon": "Skrytá ikona"
"Small icon": "Malá ikona" "Small icon": "Malá ikona"
@@ -109,3 +103,8 @@
"Normal text": "Normální text" "Normal text": "Normální text"
"Big text": "Velký text" "Big text": "Velký text"
"Applications": "Applications" "Applications": "Applications"
"Applications kept in the top menu": "Applications kept in the top menu"
"Applications kept in the top menu but also shown in side menu": "Applications kept\
\ in the top menu but also shown in side menu"
"These applications must be selected in the previous option.": "These applications\
\ must be selected in the previous option."
+5 -6
View File
@@ -53,14 +53,10 @@
\ deaktiviert)" \ deaktiviert)"
"Display the big menu": "Großes Menü anzeigen" "Display the big menu": "Großes Menü anzeigen"
"Display the logo": "Logo anzeigen" "Display the logo": "Logo anzeigen"
"This feature is not compatible with the <code>big menu</code> display.": "Diese Funktion\
\ ist nicht mit dem <code>großen Menü</code> kompatibel."
"Icons and texts": "Symbole und Texte" "Icons and texts": "Symbole und Texte"
"Loader enabled": "Ladestandanzeige aktiviert" "Loader enabled": "Ladestandanzeige aktiviert"
"Tips": "Tipps" "Tips": "Tipps"
"Always displayed": "Immer anzeigen" "Always displayed": "Immer anzeigen"
"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\ "This is the automatic behavior when the menu is always displayed.": "Dies ist das\
\ automatische Verhalten, wenn das Menü immer angezeigt wird." \ automatische Verhalten, wenn das Menü immer angezeigt wird."
"Not compatible with touch screens.": "Nicht kompatibel mit Touchscreens." "Not compatible with touch screens.": "Nicht kompatibel mit Touchscreens."
@@ -100,8 +96,6 @@
"With categories": "Mit Kategorien" "With categories": "Mit Kategorien"
"Custom categories": "Benutzerdefinierte Kategorien" "Custom categories": "Benutzerdefinierte Kategorien"
"Customize application categories": "Anwendungskategorien anpassen" "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"
"Reset to default": "Auf Standard zurücksetzen" "Reset to default": "Auf Standard zurücksetzen"
"Hidden icon": "Verstecktes Symbol" "Hidden icon": "Verstecktes Symbol"
"Small icon": "Kleines Symbol" "Small icon": "Kleines Symbol"
@@ -112,3 +106,8 @@
"Normal text": "Normaler Text" "Normal text": "Normaler Text"
"Big text": "Großer Text" "Big text": "Großer Text"
"Applications": "Applications" "Applications": "Applications"
"Applications kept in the top menu": "Applications kept in the top menu"
"Applications kept in the top menu but also shown in side menu": "Applications kept\
\ in the top menu but also shown in side menu"
"These applications must be selected in the previous option.": "These applications\
\ must be selected in the previous option."
+18 -42
View File
@@ -3,21 +3,14 @@
"No": "Non" "No": "Non"
"Yes": "Oui" "Yes": "Oui"
"Menu": "Menu" "Menu": "Menu"
? 'Use the shortcut <span class="keyboard-key">Ctrl</span>+<span class="keyboard-key">o</span> ? '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.'
to open and to hide the side menu. Use <span class="keyboard-key">tab</span> to : 'Utiliser le raccourcis clavier <span class="keyboard-key">Ctrl</span>+<span class="keyboard-key">o</span> pour ouvrir et fermer le menu latéral. Utiliser <span class="keyboard-key">tab</span> pour naviguer.'
navigate.'
: 'Utiliser le raccourcis clavier <span class="keyboard-key">Ctrl</span>+<span class="keyboard-key">o</span>
pour ouvrir et fermer le menu latéral. Utiliser <span class="keyboard-key">tab</span>
pour naviguer.'
"Top menu": "Menu supérieur" "Top menu": "Menu supérieur"
"Apps that not must be moved in the side menu": "Les applications qui ne doivent pas\ "Apps that not must be moved in the side menu": "Les applications qui ne doivent pas être affichées dans le menu latéral"
\ être affichées dans le menu latéral" "If there is no selection then the global configuration is applied.": "Si il n'y a aucune sélection alors la configuration globale sera appliquée."
"If there is no selection then the global configuration is applied.": "Si il n'y a\
\ aucune sélection alors la configuration globale sera appliquée."
"Experimental": "Expérimental" "Experimental": "Expérimental"
"Save": "Sauvegarder" "Save": "Sauvegarder"
"You like this app and you want to support me?": "Vous aimer cette application et\ "You like this app and you want to support me?": "Vous aimer cette application et vous souhaitez m'aider ?"
\ vous souhaitez m'aider ?"
"Buy me a coffee ☕": "Offrez moi un café ☕" "Buy me a coffee ☕": "Offrez moi un café ☕"
"Hidden": "Caché" "Hidden": "Caché"
"Small": "Petit" "Small": "Petit"
@@ -51,26 +44,17 @@
"Before the logo": "Avant le logo" "Before the logo": "Avant le logo"
"After the logo": "Après le logo" "After the logo": "Après le logo"
"Position": "Position" "Position": "Position"
"Show only the opener (hidden logo)": "Afficher uniquement le bouton d'ouverture (masquer\ "Show only the opener (hidden logo)": "Afficher uniquement le bouton d'ouverture (masquer le logo)"
\ le logo)" "Do not display the side menu and the opener if there is no application (eg: public pages).": "Ne pas afficher le menu latéral et le bouton d'ouverture s'il n'y a aucune application (exemple : page publiques)."
"Do not display the side menu and the opener if there is no application (eg: public pages).": "Ne\
\ pas afficher le menu latéral et le bouton d'ouverture s'il n'y a aucune application\
\ (exemple : page publiques)."
"Panel": "Panneau" "Panel": "Panneau"
"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "Ouvrir\ "Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "Ouvrir le menu au passage de la souris (automatiquement désactivé sur les écrans tactiles)"
\ le menu au passage de la souris (automatiquement désactivé sur les écrans tactiles)"
"Display the big menu": "Afficher le menu large" "Display the big menu": "Afficher le menu large"
"Display the logo": "Afficher le logo" "Display the logo": "Afficher le logo"
"This feature is not compatible with the <code>big menu</code> display.": "Cette fonctionnalité\
\ n'est pas compatible avec l'affichage <code>Menu large</code>."
"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é" "Always displayed": "Toujours affiché"
"The logo will be hidden when the menu is always displayed.": "Le logo sera masque\ "This is the automatic behavior when the menu is always displayed.": "C'est le comportement automatique lorsque le menu est toujours affiché."
\ 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." "Not compatible with touch screens.": "Incompatible avec les écrans tactiles."
"Big menu": "Menu large" "Big menu": "Menu large"
"Live preview": "Aperçu en direct" "Live preview": "Aperçu en direct"
@@ -79,21 +63,16 @@
"Use my selection": "Utiliser ma sélection" "Use my selection": "Utiliser ma sélection"
"Show and hide the list of applications": "Afficher et masquer la liste des applications" "Show and hide the list of applications": "Afficher et masquer la liste des applications"
"Use the avatar instead of the logo": "Utiliser l'avatar à la place du logo" "Use the avatar instead of the logo": "Utiliser l'avatar à la place du logo"
"You do not have permission to change the settings.": "Vous n'avez pas la permission\ "You do not have permission to change the settings.": "Vous n'avez pas la permission de changer les paramètres."
\ de changer les paramètres."
"Force this configuration to users": "Forcer cette configuration aux utilisateurs" "Force this configuration to users": "Forcer cette configuration aux utilisateurs"
"Export the configuration": "Exporter la configuration" "Export the configuration": "Exporter la configuration"
"Purge the cache": "Purger le cache" "Purge the cache": "Purger le cache"
"Show the link to settings": "Afficher le lien vers les paramètres" "Show the link to settings": "Afficher le lien vers les paramètres"
"The menu is enabled by default for users": "Le menu est activé par défaut pour les\ "The menu is enabled by default for users": "Le menu est activé par défaut pour les utilisateurs"
\ utilisateurs"
"Except when the configuration is forced.": "Sauf lorsque la configuration est forcée." "Except when the configuration is forced.": "Sauf lorsque la configuration est forcée."
"Apps that should not be displayed in the menu": "Applications qui ne doivent pas\ "Apps that should not be displayed in the menu": "Applications qui ne doivent pas être affichées dans le menu"
\ être affichées dans le menu" "This feature is only compatible with the <code>big menu</code> display.": "Compatible avec l'affichage <code>Menu large</code>."
"This feature is only compatible with the <code>big menu</code> display.": "Compatible\ "The logo is a link to the default app": "Le logo est un lien vers l'application par défaut"
\ avec l'affichage <code>Menu large</code>."
"The logo is a link to the default app": "Le logo est un lien vers l'application par\
\ défaut"
"Others": "Autres" "Others": "Autres"
"Categories": "Catégories" "Categories": "Catégories"
"Customize sorting": "Personnaliser le tri" "Customize sorting": "Personnaliser le tri"
@@ -101,16 +80,13 @@
"Name": "Nom" "Name": "Nom"
"Customed": "Personnalisé" "Customed": "Personnalisé"
"Show and hide the list of categories": "Afficher et masquer la liste des catégories" "Show and hide the list of categories": "Afficher et masquer la liste des catégories"
"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "Ces\ "This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "Ces paramètres sont utilisés lorsque le thème sombre ou le thème Breeze Dark sont activés."
\ paramètres sont utilisés lorsque le thème sombre ou le thème Breeze Dark sont\
\ activés."
"Dark mode colors": "Couleurs du mode sombre" "Dark mode colors": "Couleurs du mode sombre"
"With categories": "Avec les catégories" "With categories": "Avec les catégories"
"Custom categories": "Catégories personnalisées" "Custom categories": "Catégories personnalisées"
"Customize application categories": "Personnaliser les catégories des applications" "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"
"Reset to default": "Restaurer les valeurs par défaut" "Reset to default": "Restaurer les valeurs par défaut"
"Applications": "Applications" "Applications": "Applications"
"Applications kept in the top menu": "Applications conservées dans le menu supérieur"
"Applications kept in the top menu but also shown in side menu": "Applications conservées dans le menu supérieur mais également affichées dans le menu latéral"
"These applications must be selected in the previous option.": "Ces applications doivent également être sélectionnées dans l'option précédente."
+3 -4
View File
@@ -52,12 +52,10 @@
"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "" "Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": ""
"Display the big menu": "" "Display the big menu": ""
"Display the logo": "" "Display the logo": ""
"This feature is not compatible with the <code>big menu</code> display.": ""
"Icons and texts": "" "Icons and texts": ""
"Loader enabled": "" "Loader enabled": ""
"Tips": "" "Tips": ""
"Always displayed": "" "Always displayed": ""
"The logo will be hidden when the menu is always displayed.": ""
"This is the automatic behavior when the menu is always displayed.": "" "This is the automatic behavior when the menu is always displayed.": ""
"Not compatible with touch screens.": "" "Not compatible with touch screens.": ""
"Big menu": "" "Big menu": ""
@@ -89,7 +87,8 @@
"With categories": "" "With categories": ""
"Custom categories": "" "Custom categories": ""
"Customize application categories": "" "Customize application categories": ""
"Apps only visible in the top menu": ""
"Apps visible in the top and side menus": ""
"Reset to default": "" "Reset to default": ""
"Applications": "" "Applications": ""
"Applications kept in the top menu": ""
"Applications kept in the top menu but also shown in side menu": ""
"These applications must be selected in the previous option.": ""
+15 -8
View File
@@ -3,7 +3,11 @@
"No": "取消" "No": "取消"
"Yes": "确定" "Yes": "确定"
"Menu": "菜单" "Menu": "菜单"
"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.": "使用快捷键 <span class=\"keyboard-key\">Ctrl<\/span>+<span class=\"keyboard-key\">o<\/span> 打开或隐藏侧边栏菜单。使用<span class=\"keyboard-key\">tab<\/span> 来导航。" ? "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."
: "使用快捷键 <span class=\"keyboard-key\">Ctrl</span>+<span class=\"keyboard-key\">o</span>\
\ 打开或隐藏侧边栏菜单。使用<span class=\"keyboard-key\">tab</span> 来导航。"
"Top menu": "顶部菜单" "Top menu": "顶部菜单"
"Apps that not must be moved in the side menu": "禁止在侧边栏菜单移动的应用" "Apps that not must be moved in the side menu": "禁止在侧边栏菜单移动的应用"
"If there is no selection then the global configuration is applied.": "如不选择,将应用全局设定。" "If there is no selection then the global configuration is applied.": "如不选择,将应用全局设定。"
@@ -36,17 +40,17 @@
"After the logo": "在logo后" "After the logo": "在logo后"
"Position": "位置" "Position": "位置"
"Show only the opener (hidden logo)": "只显示容器 (隐藏logo)" "Show only the opener (hidden logo)": "只显示容器 (隐藏logo)"
"Do not display the side menu and the opener if there is no application (eg: public pages).": "N如果没有应用,不显示侧边栏菜单和容器 (例如 : 公共页面)。" "Do not display the side menu and the opener if there is no application (eg: public pages).": "N如果没有应用,不显示侧边栏菜单和容器\
\ (例如 : 公共页面)。"
"Panel": "面板" "Panel": "面板"
"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "鼠标悬停时打开菜单 (触摸屏时将自动禁用)" "Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "鼠标悬停时打开菜单\
\ (触摸屏时将自动禁用)"
"Display the big menu": "显示大型菜单" "Display the big menu": "显示大型菜单"
"Display the logo": "显示logo" "Display the logo": "显示logo"
"This feature is not compatible with the <code>big menu<\/code> display.": "此功能与显示<code>大型菜单<\/code>不兼容。"
"Icons and texts": "图标与文字" "Icons and texts": "图标与文字"
"Loader enabled": "菜单指示器已激活" "Loader enabled": "菜单指示器已激活"
"Tips": "技巧" "Tips": "技巧"
"Always displayed": "一直显示" "Always displayed": "一直显示"
"The logo will be hidden when the menu is always displayed.": "一直显示菜单时logo将被隐藏。"
"This is the automatic behavior when the menu is always displayed.": "一直显示菜单时的自动动作。" "This is the automatic behavior when the menu is always displayed.": "一直显示菜单时的自动动作。"
"Not compatible with touch screens.": "与触屏不兼容。" "Not compatible with touch screens.": "与触屏不兼容。"
"Big menu": "大型菜单" "Big menu": "大型菜单"
@@ -64,7 +68,7 @@
"The menu is enabled by default for users": "用户的默认菜单已激活" "The menu is enabled by default for users": "用户的默认菜单已激活"
"Except when the configuration is forced.": "除非设置被强制使用。" "Except when the configuration is forced.": "除非设置被强制使用。"
"Apps that should not be displayed in the menu": "禁止在菜单中显示的应用" "Apps that should not be displayed in the menu": "禁止在菜单中显示的应用"
"This feature is only compatible with the <code>big menu<\/code> display.": "此功能只和<code>大型菜单<\/code>兼容。" "This feature is only compatible with the <code>big menu</code> display.": "此功能只和<code>大型菜单</code>兼容。"
"The logo is a link to the default app": "logo链接到默认应用" "The logo is a link to the default app": "logo链接到默认应用"
"Others": "其他" "Others": "其他"
"Categories": "类别" "Categories": "类别"
@@ -78,8 +82,6 @@
"With categories": "有类别" "With categories": "有类别"
"Custom categories": "自定义类别" "Custom categories": "自定义类别"
"Customize application categories": "自定义应用程序类别" "Customize application categories": "自定义应用程序类别"
"Apps only visible in the top menu": "应用程序仅在顶部菜单中可见"
"Apps visible in the top and side menus": "顶部和侧边菜单中可见的应用程序"
"Reset to default": "重置为默认设置" "Reset to default": "重置为默认设置"
"Hidden icon": "隐藏图标" "Hidden icon": "隐藏图标"
"Small icon": "小图标" "Small icon": "小图标"
@@ -90,3 +92,8 @@
"Normal text": "普通文本" "Normal text": "普通文本"
"Big text": "大文本" "Big text": "大文本"
"Applications": "Applications" "Applications": "Applications"
"Applications kept in the top menu": "Applications kept in the top menu"
"Applications kept in the top menu but also shown in side menu": "Applications kept\
\ in the top menu but also shown in side menu"
"These applications must be selected in the previous option.": "These applications\
\ must be selected in the previous option."
+2 -2
View File
@@ -22,10 +22,10 @@ if ($_['always-displayed']) {
const nextcloud = document.querySelector('#nextcloud') const nextcloud = document.querySelector('#nextcloud')
const isTouchDevice = window.matchMedia("(pointer: coarse)").matches const isTouchDevice = window.matchMedia("(pointer: coarse)").matches
const targetBlankApps = <?php echo json_encode($_['target-blank-apps']) ?>
window.targetBlankApps = <?php echo json_encode($_['target-blank-apps']), "\n" ?>
window.topMenuApps = <?php echo json_encode($_['top-menu-apps']), "\n"; ?> window.topMenuApps = <?php echo json_encode($_['top-menu-apps']), "\n"; ?>
window.topSideMenuApps = <?php echo json_encode($_['top-side-menu-apps'])."\n"; ?> window.topSideMenuApps = <?php echo json_encode($_['top-side-menu-apps']), "\n"; ?>
window.menuAppsOrder = <?php echo json_encode($_['apps-order']), "\n"; ?> window.menuAppsOrder = <?php echo json_encode($_['apps-order']), "\n"; ?>
<?php if ($display === 'big-menu'): ?> <?php if ($display === 'big-menu'): ?>
+168 -108
View File
@@ -41,8 +41,104 @@ $choicesSizes = [
$labelShowHideApps = 'Show and hide the list of applications'; $labelShowHideApps = 'Show and hide the list of applications';
$labelReset = 'Reset to default'; $labelReset = 'Reset to default';
?> ?>
<div id="side-menu-section"> <div id="side-menu-section">
<div class="section">
<h2>
<?php p($l->t('Panel')); ?>
</h2>
<?php
$displays = [
'default' => !$_['always-displayed'] && !$_['big-menu'] && !$_['side-with-categories'],
'always-displayed' => $_['always-displayed'] && !$_['big-menu'] && !$_['side-with-categories'],
'side-with-categories' => $_['side-with-categories'] && !$_['always-displayed'] && !$_['big-menu'],
'big-menu' => $_['big-menu'] && !$_['always-displayed'] && !$_['side-with-categories'],
];
?>
<div>
<label>
<?php p($l->t('Default')); ?>
</label>
</div>
<p>
<img
class="side-menu-display <?php echo $displays['default'] ? 'is-active' : '' ?>"
data-alwaysdiplayed="0"
data-bigmenu="0"
data-sidewithcategories="0"
src="<?php print_unescaped(image_path('side_menu', 'admin/layout-default.svg')); ?>" alt="<?php p($l->t('Default')); ?>">
</p>
<div>
<label>
<?php p($l->t('With categories')); ?>
</label>
</div>
<p>
<img
class="side-menu-display <?php echo $displays['side-with-categories'] ? 'is-active' : '' ?>"
data-alwaysdiplayed="0"
data-bigmenu="0"
data-sidewithcategories="1"
src="<?php print_unescaped(image_path('side_menu', 'admin/layout-side-with-categories.svg')); ?>" alt="<?php p($l->t('With categories')); ?>">
</p>
<div>
<label for="side-menu-opener">
<?php p($l->t('Big menu')); ?>
</label>
</div>
<p>
<img
class="side-menu-display <?php echo $displays['big-menu'] ? 'is-active' : '' ?>"
data-alwaysdiplayed="0"
data-bigmenu="1"
data-sidewithcategories="0"
src="<?php print_unescaped(image_path('side_menu', 'admin/layout-big-menu.svg')); ?>" alt="<?php p($l->t('Big menu')); ?>">
</p>
<div>
<label for="side-menu-opener">
<?php p($l->t('Always displayed')); ?>
</label>
</div>
<p><em><?php p($l->t('Not compatible with touch screens.')); ?></em></p>
<p>
<img
class="side-menu-display <?php echo $displays['always-displayed'] ? 'is-active' : '' ?>"
data-alwaysdiplayed="1"
data-bigmenu="0"
data-sidewithcategories="0"
src="<?php print_unescaped(image_path('side_menu', 'admin/layout-always-displayed.svg')); ?>" alt="<?php p($l->t('Always displayed')); ?>">
</p>
<input
type="hidden"
class="side-menu-setting"
name="always-displayed"
id="side-menu-always-displayed"
value="<?php echo (int) $_['always-displayed'] ?>"
>
<input
type="hidden"
class="side-menu-setting"
name="big-menu"
id="side-menu-big-menu"
value="<?php echo (int) $_['big-menu'] ?>"
>
<input
type="hidden"
class="side-menu-setting"
name="side-with-categories"
id="side-menu-side-with-categories"
value="<?php echo (int) $_['side-with-categories'] ?>"
>
</div>
<div class="section"> <div class="section">
<h2> <h2>
<?php p($l->t('Colors')); ?> <?php p($l->t('Colors')); ?>
@@ -50,6 +146,13 @@ $labelReset = 'Reset to default';
<small><span class="info"><?php p($l->t('Live preview')); ?></span></small> <small><span class="info"><?php p($l->t('Live preview')); ?></span></small>
</h2> </h2>
<div class="badges">
<span class="badge badge-1"><?php p($l->t('Default')); ?></span>
<span class="badge badge-2"><?php p($l->t('With categories')); ?></span>
<span class="badge badge-3"><?php p($l->t('Big menu')); ?></span>
<span class="badge badge-4"><?php p($l->t('Always displayed')); ?></span>
</div>
<div class="side-menu-setting-table"> <div class="side-menu-setting-table">
<div class="side-menu-setting-row"> <div class="side-menu-setting-row">
<div class="side-menu-setting-label side-menu-setting-label-short"> <div class="side-menu-setting-label side-menu-setting-label-short">
@@ -234,6 +337,13 @@ $labelReset = 'Reset to default';
<?php p($l->t('Dark mode colors')); ?> <?php p($l->t('Dark mode colors')); ?>
</h2> </h2>
<div class="badges">
<span class="badge badge-1"><?php p($l->t('Default')); ?></span>
<span class="badge badge-2"><?php p($l->t('With categories')); ?></span>
<span class="badge badge-3"><?php p($l->t('Big menu')); ?></span>
<span class="badge badge-4"><?php p($l->t('Always displayed')); ?></span>
</div>
<p> <p>
<?php echo $l->t('This parameters are used when Dark theme or Breeze Dark Theme are enabled.'); ?> <?php echo $l->t('This parameters are used when Dark theme or Breeze Dark Theme are enabled.'); ?>
</p> </p>
@@ -422,6 +532,13 @@ $labelReset = 'Reset to default';
<?php p($l->t('Opener')); ?> <?php p($l->t('Opener')); ?>
</h2> </h2>
<div class="badges">
<span class="badge badge-1"><?php p($l->t('Default')); ?></span>
<span class="badge badge-2"><?php p($l->t('With categories')); ?></span>
<span class="badge badge-3"><?php p($l->t('Big menu')); ?></span>
<span class="badge badge-4"><?php p($l->t('Always displayed')); ?></span>
</div>
<div class="side-menu-setting-table"> <div class="side-menu-setting-table">
<div class="side-menu-setting-row"> <div class="side-menu-setting-row">
<?php <?php
@@ -473,105 +590,7 @@ $labelReset = 'Reset to default';
</select> </select>
</div> </div>
</div> </div>
</div>
</div>
<div class="section">
<h2>
<?php p($l->t('Panel')); ?>
</h2>
<?php
$displays = [
'default' => !$_['always-displayed'] && !$_['big-menu'] && !$_['side-with-categories'],
'always-displayed' => $_['always-displayed'] && !$_['big-menu'] && !$_['side-with-categories'],
'side-with-categories' => $_['side-with-categories'] && !$_['always-displayed'] && !$_['big-menu'],
'big-menu' => $_['big-menu'] && !$_['always-displayed'] && !$_['side-with-categories'],
];
?>
<div>
<label>
<?php p($l->t('Default')); ?>
</label>
</div>
<p>
<img
class="side-menu-display <?php echo $displays['default'] ? 'is-active' : '' ?>"
data-alwaysdiplayed="0"
data-bigmenu="0"
data-sidewithcategories="0"
src="<?php print_unescaped(image_path('side_menu', 'admin/layout-default.svg')); ?>" alt="<?php p($l->t('Default')); ?>">
</p>
<div>
<label>
<?php p($l->t('With categories')); ?>
</label>
</div>
<p>
<img
class="side-menu-display <?php echo $displays['side-with-categories'] ? 'is-active' : '' ?>"
data-alwaysdiplayed="0"
data-bigmenu="0"
data-sidewithcategories="1"
src="<?php print_unescaped(image_path('side_menu', 'admin/layout-side-with-categories.svg')); ?>" alt="<?php p($l->t('With categories')); ?>">
</p>
<div>
<label for="side-menu-opener">
<?php p($l->t('Big menu')); ?>
</label>
</div>
<p>
<img
class="side-menu-display <?php echo $displays['big-menu'] ? 'is-active' : '' ?>"
data-alwaysdiplayed="0"
data-bigmenu="1"
data-sidewithcategories="0"
src="<?php print_unescaped(image_path('side_menu', 'admin/layout-big-menu.svg')); ?>" alt="<?php p($l->t('Big menu')); ?>">
</p>
<div>
<label for="side-menu-opener">
<?php p($l->t('Always displayed')); ?>
</label>
</div>
<p><em><?php p($l->t('Not compatible with touch screens.')); ?></em></p>
<p>
<img
class="side-menu-display <?php echo $displays['always-displayed'] ? 'is-active' : '' ?>"
data-alwaysdiplayed="1"
data-bigmenu="0"
data-sidewithcategories="0"
src="<?php print_unescaped(image_path('side_menu', 'admin/layout-always-displayed.svg')); ?>" alt="<?php p($l->t('Always displayed')); ?>">
</p>
<input
type="hidden"
class="side-menu-setting"
name="always-displayed"
id="side-menu-always-displayed"
value="<?php echo (int) $_['always-displayed'] ?>"
>
<input
type="hidden"
class="side-menu-setting"
name="big-menu"
id="side-menu-big-menu"
value="<?php echo (int) $_['big-menu'] ?>"
>
<input
type="hidden"
class="side-menu-setting"
name="side-with-categories"
id="side-menu-side-with-categories"
value="<?php echo (int) $_['side-with-categories'] ?>"
>
<br>
<div class="side-menu-setting-table">
<div class="side-menu-setting-row"> <div class="side-menu-setting-row">
<div class="side-menu-setting-label"> <div class="side-menu-setting-label">
<?php p($l->t('Open the menu when the mouse is hover the opener (automatically disabled on touch screens)')); ?> <?php p($l->t('Open the menu when the mouse is hover the opener (automatically disabled on touch screens)')); ?>
@@ -589,16 +608,18 @@ $labelReset = 'Reset to default';
</select> </select>
</div> </div>
</div> </div>
</div>
</div>
<div class="section">
<div class="side-menu-setting-table">
<div class="side-menu-setting-row"> <div class="side-menu-setting-row">
<div class="side-menu-setting-label"> <div class="side-menu-setting-label">
<?php p($l->t('Display the logo')); ?> <?php p($l->t('Display the logo')); ?>
<br>
<em> <div class="badges">
<?php echo $l->t('This feature is not compatible with the <code>big menu</code> display.'); ?> <span class="badge badge-1"><?php p($l->t('Default')); ?></span>
<br> </div>
<?php p($l->t('The logo will be hidden when the menu is always displayed.')); ?>
</em>
</div> </div>
<div class="side-menu-setting-form"> <div class="side-menu-setting-form">
<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">
@@ -614,6 +635,10 @@ $labelReset = 'Reset to default';
<div class="side-menu-setting-row"> <div class="side-menu-setting-row">
<div class="side-menu-setting-label"> <div class="side-menu-setting-label">
<?php p($l->t('Use the avatar instead of the logo')); ?> <?php p($l->t('Use the avatar instead of the logo')); ?>
<div class="badges">
<span class="badge badge-1"><?php p($l->t('Default')); ?></span>
</div>
</div> </div>
<div class="side-menu-setting-form"> <div class="side-menu-setting-form">
<select id="side-menu-use-avatar" name="use-avatar" class="side-menu-setting"> <select id="side-menu-use-avatar" name="use-avatar" class="side-menu-setting">
@@ -629,6 +654,10 @@ $labelReset = 'Reset to default';
<div class="side-menu-setting-row"> <div class="side-menu-setting-row">
<div class="side-menu-setting-label"> <div class="side-menu-setting-label">
<?php p($l->t('The logo is a link to the default app')); ?> <?php p($l->t('The logo is a link to the default app')); ?>
<div class="badges">
<span class="badge badge-1"><?php p($l->t('Default')); ?></span>
</div>
</div> </div>
<div class="side-menu-setting-form"> <div class="side-menu-setting-form">
<select id="side-menu-add-logo-link" name="add-logo-link" class="side-menu-setting"> <select id="side-menu-add-logo-link" name="add-logo-link" class="side-menu-setting">
@@ -644,8 +673,11 @@ $labelReset = 'Reset to default';
<div class="side-menu-setting-row"> <div class="side-menu-setting-row">
<div class="side-menu-setting-label"> <div class="side-menu-setting-label">
<?php p($l->t('Apps that should not be displayed in the menu')); ?> <?php p($l->t('Apps that should not be displayed in the menu')); ?>
<br>
<em><?php echo $l->t('This feature is only compatible with the <code>big menu</code> display.'); ?></em> <div class="badges">
<span class="badge badge-2"><?php p($l->t('With categories')); ?></span>
<span class="badge badge-3"><?php p($l->t('Big menu')); ?></span>
</div>
</div> </div>
<div class="side-menu-setting-form"> <div class="side-menu-setting-form">
<a class="side-menu-toggler" data-target="#big-menu-hidden-apps" href="#_"> <a class="side-menu-toggler" data-target="#big-menu-hidden-apps" href="#_">
@@ -765,10 +797,17 @@ $labelReset = 'Reset to default';
<?php p($l->t('Top menu')); ?> <?php p($l->t('Top menu')); ?>
</h2> </h2>
<div class="badges">
<span class="badge badge-1"><?php p($l->t('Default')); ?></span>
<span class="badge badge-2"><?php p($l->t('With categories')); ?></span>
<span class="badge badge-3"><?php p($l->t('Big menu')); ?></span>
<span class="badge badge-4"><?php p($l->t('Always displayed')); ?></span>
</div>
<div class="side-menu-setting-table"> <div class="side-menu-setting-table">
<div class="side-menu-setting-row"> <div class="side-menu-setting-row">
<div class="side-menu-setting-label"> <div class="side-menu-setting-label">
<?php p($l->t('Apps only visible in the top menu')); ?> <?php p($l->t('Applications kept in the top menu')); ?>
</div> </div>
<div class="side-menu-setting-form"> <div class="side-menu-setting-form">
<a class="side-menu-toggler" data-target="#top-menu-apps" href="#_"> <a class="side-menu-toggler" data-target="#top-menu-apps" href="#_">
@@ -799,7 +838,9 @@ $labelReset = 'Reset to default';
<div class="side-menu-setting-row"> <div class="side-menu-setting-row">
<div class="side-menu-setting-label"> <div class="side-menu-setting-label">
<?php p($l->t('Apps visible in the top and side menus')); ?> <?php p($l->t('Applications kept in the top menu but also shown in side menu')); ?>
<br>
<em><?php p($l->t('These applications must be selected in the previous option.')); ?></em>
</div> </div>
<div class="side-menu-setting-form"> <div class="side-menu-setting-form">
<a class="side-menu-toggler" data-target="#top-side-menu-apps" href="#_"> <a class="side-menu-toggler" data-target="#top-side-menu-apps" href="#_">
@@ -835,6 +876,13 @@ $labelReset = 'Reset to default';
<?php p($l->t('Applications')); ?> <?php p($l->t('Applications')); ?>
</h2> </h2>
<div class="badges">
<span class="badge badge-1"><?php p($l->t('Default')); ?></span>
<span class="badge badge-2"><?php p($l->t('With categories')); ?></span>
<span class="badge badge-3"><?php p($l->t('Big menu')); ?></span>
<span class="badge badge-4"><?php p($l->t('Always displayed')); ?></span>
</div>
<div class="side-menu-setting-table"> <div class="side-menu-setting-table">
<div class="side-menu-setting-row"> <div class="side-menu-setting-row">
<div class="side-menu-setting-label"> <div class="side-menu-setting-label">
@@ -875,6 +923,11 @@ $labelReset = 'Reset to default';
<?php p($l->t('Categories')); ?> <?php p($l->t('Categories')); ?>
</h2> </h2>
<div class="badges">
<span class="badge badge-2"><?php p($l->t('With categories')); ?></span>
<span class="badge badge-3"><?php p($l->t('Big menu')); ?></span>
</div>
<div class="side-menu-setting-table"> <div class="side-menu-setting-table">
<div class="side-menu-setting-row"> <div class="side-menu-setting-row">
<?php <?php
@@ -985,6 +1038,13 @@ $labelReset = 'Reset to default';
<?php p($l->t('Tips')); ?> <?php p($l->t('Tips')); ?>
</h2> </h2>
<div class="badges">
<span class="badge badge-1"><?php p($l->t('Default')); ?></span>
<span class="badge badge-2"><?php p($l->t('With categories')); ?></span>
<span class="badge badge-3"><?php p($l->t('Big menu')); ?></span>
<span class="badge badge-4"><?php p($l->t('Always displayed')); ?></span>
</div>
<p> <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> <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> </p>
+42 -6
View File
@@ -27,6 +27,7 @@ $choicesYesNo = [
$labelShowHideApps = 'Show and hide the list of applications'; $labelShowHideApps = 'Show and hide the list of applications';
$labelReset = 'Reset to default';
?> ?>
<div id="side-menu-section"> <div id="side-menu-section">
<?php if ($_['force']): ?> <?php if ($_['force']): ?>
@@ -41,10 +42,6 @@ $labelShowHideApps = 'Show and hide the list of applications';
</div> </div>
<?php else: ?> <?php else: ?>
<div class="section"> <div class="section">
<h2>
<?php p($l->t('Menu')); ?>
</h2>
<p> <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> <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> </p>
@@ -123,7 +120,7 @@ $labelShowHideApps = 'Show and hide the list of applications';
<div class="side-menu-setting-table"> <div class="side-menu-setting-table">
<div class="side-menu-setting-row"> <div class="side-menu-setting-row">
<div class="side-menu-setting-label"> <div class="side-menu-setting-label">
<?php p($l->t('Apps only visible in the top menu')); ?> <?php p($l->t('Applications kept in the top menu')); ?>
<p> <p>
<em> <em>
<?php p($l->t('If there is no selection then the global configuration is applied.')); ?> <?php p($l->t('If there is no selection then the global configuration is applied.')); ?>
@@ -163,9 +160,10 @@ $labelShowHideApps = 'Show and hide the list of applications';
<div class="side-menu-setting-table"> <div class="side-menu-setting-table">
<div class="side-menu-setting-row"> <div class="side-menu-setting-row">
<div class="side-menu-setting-label"> <div class="side-menu-setting-label">
<?php p($l->t('Apps visible in the top and side menus')); ?> <?php p($l->t('Applications kept in the top menu but also shown in side menu')); ?>
<p> <p>
<em> <em>
<?php p($l->t('These applications must be selected in the previous option.')); ?><br>
<?php p($l->t('If there is no selection then the global configuration is applied.')); ?> <?php p($l->t('If there is no selection then the global configuration is applied.')); ?>
</em> </em>
</p> </p>
@@ -200,6 +198,44 @@ $labelShowHideApps = 'Show and hide the list of applications';
</div> </div>
</div> </div>
</div> </div>
<div class="section">
<h2>
<?php p($l->t('Applications')); ?>
</h2>
<div class="side-menu-setting-table">
<div class="side-menu-setting-row">
<div class="side-menu-setting-label">
<?php p($l->t('Customize sorting')); ?>
</div>
<div class="side-menu-setting-form">
<a class="side-menu-toggler" data-target="#apps-order-list" href="#_">
🖱️ <?php p($l->t($labelShowHideApps)); ?>
</a>
<div class="theme-undo icon icon-history btn-reset btn-reset--down" data-toggle="tooltip" data-original-title="<?php echo p($l->t($labelReset)); ?>" data-reset="<?php echo htmlentities(json_encode([
'side-menu-apps-order' => '[]',
])) ?>"></div>
<div id="apps-order-list" style="display: none">
<ul class="side-menu-setting-list">
<?php foreach ($_['ordered-apps'] as $key => $app): ?>
<li data-id="<?php echo $app['id']; ?>" class="side-menu-setting-list-item">
<span class="arrow">
⇅
</span>
<?php echo p($l->t($app['name'])); ?>
</li>
<?php endforeach; ?>
</ul>
</div>
<input type="hidden" value='<?php echo json_encode($_['apps-order']) ?>' name="apps-order" class="side-menu-setting" id="side-menu-apps-order" data-personal>
</div>
</div>
</div>
</div>
<?php endif ?> <?php endif ?>
<div class="section"> <div class="section">