Compare commits

..

36 Commits

Author SHA1 Message Date
Simon Vieille 0acb576995 Merge pull request 'release v3.2.0' (#149) from develop into master
Reviewed-on: https://gitnet.fr/deblan/side_menu/pulls/149
2022-10-27 22:07:47 +02:00
Simon Vieille 131c4b643a release v3.2.0 2022-10-27 22:01:35 +02:00
Simon Vieille c0b187e55e update SideMenu with apps order and changelog 2022-10-27 21:58:21 +02:00
Simon Vieille f09eda85a6 Merge branch 'feature/issue147' into develop 2022-10-27 21:52:34 +02:00
Simon Vieille 1971c6f500 add ordered apps for all displays (#147) 2022-10-27 21:52:29 +02:00
Simon Vieille 07c7221ca2 rename 'top-menu-apps-order' with 'apps-order' 2022-10-27 21:51:58 +02:00
Simon Vieille d42593d203 removed unused translations 2022-10-27 21:50:13 +02:00
Simon Vieille 90fb46fb0e add effect of reset button 2022-10-27 21:49:55 +02:00
Simon Vieille 4b3bb0c5d8 update changelog 2022-10-27 20:32:13 +02:00
Simon Vieille 6533acdd60 use custom app names using 'app.navigation.name' (fix #148) 2022-10-27 20:30:14 +02:00
Simon Vieille 2cdb5d93a2 Merge pull request 'develop' (#146) from develop into master
Reviewed-on: https://gitnet.fr/deblan/side_menu/pulls/146
2022-10-22 17:22:13 +02:00
Simon Vieille f20dc7282e add selfhosted notice 2022-10-21 23:59:27 +02:00
Simon Vieille 4dc07ed8fc add selfhosted notice 2022-10-21 23:58:36 +02:00
Simon Vieille e48d8d1114 Merge pull request 'update readme' (#145) from develop into master
Reviewed-on: https://gitnet.fr/deblan/side_menu/pulls/145
2022-10-21 21:29:25 +02:00
Simon Vieille 36c8cb59bb update readme 2022-10-21 21:29:10 +02:00
Simon Vieille bc6ac9c7d3 Merge pull request 'develop' (#144) from develop into master
Reviewed-on: https://gitnet.fr/deblan/side_menu/pulls/144
2022-10-21 21:27:27 +02:00
Simon Vieille fbe1b4f0bc update readme 2022-10-21 21:17:02 +02:00
Simon Vieille 8d9b12683a add translation badge 2022-10-21 21:16:24 +02:00
Simon Vieille c7bcc4a844 Merge pull request 'add template for translations' (#143) from develop into master
Reviewed-on: https://gitnet.fr/deblan/side_menu/pulls/143
2022-10-21 20:25:49 +02:00
Simon Vieille 07ad842911 add template for translations 2022-10-21 20:25:35 +02:00
Simon Vieille 874332abf1 Merge pull request 'develop' (#142) from develop into master
Reviewed-on: https://gitnet.fr/deblan/side_menu/pulls/142
2022-10-21 20:24:04 +02:00
Simon Vieille 5208b5d574 add template for translations 2022-10-21 20:20:23 +02:00
Simon Vieille fcd082cc0a update translations using translate.codeberg.org 2022-10-21 20:12:04 +02:00
Simon Vieille 7472e4050a Merge pull request 'release v3.1.0' (#141) from develop into master
Reviewed-on: https://gitnet.fr/deblan/side_menu/pulls/141
2022-10-21 19:43:38 +02:00
Simon Vieille be0731f2d5 release v3.1.0 2022-10-21 19:36:55 +02:00
Simon Vieille 6a6792401e add base for translations 2022-10-21 19:34:48 +02:00
Simon Vieille a0c0cc0aa5 add custom apps sorting (fix SideMenu and admin ui) 2022-10-21 19:33:43 +02:00
Simon Vieille 1eb5e18d5c update changelog 2022-10-21 18:01:49 +02:00
Simon Vieille 84c620637e add custom apps sorting 2022-10-21 17:59:41 +02:00
Simon Vieille 7d82c78581 Merge branch 'feature/ui' into develop 2022-10-21 17:08:02 +02:00
Simon Vieille 83c2ccb5b4 update changelog 2022-10-21 17:08:00 +02:00
Simon Vieille 62e4a7df5b fix admin modale 2022-10-21 17:07:43 +02:00
Simon Vieille 16b8326fae update changelog 2022-10-21 16:50:39 +02:00
Simon Vieille 57f3a0d252 Merge branch 'feature/ui' into develop 2022-10-21 16:49:02 +02:00
Simon Vieille 5fac655856 remove unused translation keys 2022-10-21 16:48:59 +02:00
Simon Vieille 8a92b2d803 fix admin list 2022-10-21 16:48:36 +02:00
19 changed files with 427 additions and 92 deletions
+11
View File
@@ -1,5 +1,16 @@
## [Unreleased] ## [Unreleased]
## 3.2.0
### Added
* use custom app names using 'app.navigation.name' (#148)
* app sorting with all displays (#147)
## 3.1.0
### Added
* add global custom app sorting for the top menu
### Fixed
* fix admin list/modal look
## 3.0.1 ## 3.0.1
### Fixed ### Fixed
* Remove the gap between the window's top and menu categories (large menu) * Remove the gap between the window's top and menu categories (large menu)
+15 -3
View File
@@ -1,6 +1,9 @@
🤙 Nextcloud app / Custom menu 🎨 🤙 Nextcloud app / Custom menu 🎨
=============================== ===============================
[![Build Status](https://ci.gitnet.fr/api/badges/deblan/side_menu/status.svg)](https://ci.gitnet.fr/deblan/side_menu)
[![Translations](https://translate.codeberg.org/widgets/custom-menu/-/application/svg-badge.svg)](https://translate.codeberg.org/engage/custom-menu/)
Allows you to modify the position of the main menu by creating a panel on the left of the interface or with a big menu on the top. Allows you to modify the position of the main menu by creating a panel on the left of the interface or with a big menu on the top.
You can also add and sort custom categories, define apps that must be displayed in the top menu, etc. Fully customisable. You can also add and sort custom categories, define apps that must be displayed in the top menu, etc. Fully customisable.
@@ -15,8 +18,6 @@ You can customize colors depending of the theme (Dark theme and Breeze Dark).
You like this app and you want to support me? ☕ [Buy me a coffee](https://www.buymeacoffee.com/deblan) or [Donate with liberapay](https://liberapay.com/deblan) You like this app and you want to support me? ☕ [Buy me a coffee](https://www.buymeacoffee.com/deblan) or [Donate with liberapay](https://liberapay.com/deblan)
[![Build Status](https://ci.gitnet.fr/api/badges/deblan/side_menu/status.svg)](https://ci.gitnet.fr/deblan/side_menu)
Requirements Requirements
------------ ------------
@@ -51,7 +52,11 @@ How to contribute?
You can report a bug or request a feature by opening an issue: https://gitnet.fr/deblan/side_menu/issues You can report a bug or request a feature by opening an issue: https://gitnet.fr/deblan/side_menu/issues
If you are a developer: ### You are a translator
Translations are managed from [translate.codeberg.org](https://translate.codeberg.org/projects/custom-menu/application/).
### You are a developer
* fork the repository * fork the repository
* install an instance of Nextcloud * install an instance of Nextcloud
@@ -66,3 +71,10 @@ Support
------- -------
You can join the official room on Matrix: [#custommenu:neutralnetwork.org](https://matrix.to/#/#custommenu:neutralnetwork.org). You can join the official room on Matrix: [#custommenu:neutralnetwork.org](https://matrix.to/#/#custommenu:neutralnetwork.org).
Notice
------
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/).
+7 -1
View File
@@ -25,8 +25,14 @@ If you like this application and if you want to support the development:
* [Buy me a coffee](https://www.buymeacoffee.com/deblan) * [Buy me a coffee](https://www.buymeacoffee.com/deblan)
* [Donate with liberapay](https://liberapay.com/deblan) * [Donate with liberapay](https://liberapay.com/deblan)
* [Leave a comment](https://apps.nextcloud.com/apps/side_menu#comments) * [Leave a comment](https://apps.nextcloud.com/apps/side_menu#comments)
Notice
------
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/).
]]></description> ]]></description>
<version>3.0.1</version> <version>3.2.0</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>
+36 -4
View File
@@ -18,6 +18,8 @@
#side-menu-section input[type="color"] { #side-menu-section input[type="color"] {
width: 100px; width: 100px;
margin: 10px 0 10px 0; margin: 10px 0 10px 0;
padding: 0;
border-radius: 0;
} }
#-dropside-menu-section input[type="checkbox"] { #-dropside-menu-section input[type="checkbox"] {
@@ -71,14 +73,21 @@
.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-radius: 15px;
} }
.side-menu-setting-list-item { .side-menu-setting-list-item {
padding: 5px 10px; padding: 5px 10px;
border: 1px solid var(--color-border-dark); border-bottom: 1px solid var(--color-border-dark);
max-width: 300px; max-width: 300px;
margin: -1px 0 0 0; margin: -1px 0 0 0;
cursor: pointer; cursor: pointer;
line-height: 32px;
}
.side-menu-setting-list-item:last-child {
border-bottom: 0;
} }
.side-menu-setting-list-drop { .side-menu-setting-list-drop {
@@ -93,8 +102,9 @@
} }
.side-menu-setting-list-item input { .side-menu-setting-list-item input {
min-height: auto; margin-top: 0;
margin-top: -1px; height: 21px !important;
min-height: auto !important;
} }
#apps-categories-custom-list select { #apps-categories-custom-list select {
@@ -108,11 +118,22 @@
.side-menu-setting-row { .side-menu-setting-row {
display: table; display: table;
margin-bottom: 10px;
}
.side-menu-setting-row code {
margin-left: 2px;
margin-bottom: 1px;
padding: 3px 10px;
border-radius: 5px;
display: inline-block;
right: 2px;
border: 1px solid var(--color-border-dark);
} }
.side-menu-setting-label { .side-menu-setting-label {
display: table-cell; display: table-cell;
width: 400px; width: 430px;
padding-right: 20px; padding-right: 20px;
} }
@@ -142,4 +163,15 @@
position: relative; position: relative;
top: -8px; top: -8px;
left: 5px; left: 5px;
transition-duration: 0.8s;
transition-property: transform;
transform: rotate(360deg);
}
.btn-reset--down {
top: 2px;
}
.btn-reset--progress {
transform: rotate(-359deg);
} }
+2
View File
@@ -95,6 +95,7 @@ class JsController extends Controller
{ {
$topMenuApps = $this->config->getAppValueArray('top-menu-apps', '[]'); $topMenuApps = $this->config->getAppValueArray('top-menu-apps', '[]');
$topSideMenuApps = $this->config->getAppValueArray('top-side-menu-apps', '[]'); $topSideMenuApps = $this->config->getAppValueArray('top-side-menu-apps', '[]');
$topMenuAppsOrder = $this->config->getAppValueArray('top-menu-apps-order', '[]');
$targetBlankApps = $this->config->getAppValueArray('target-blank-apps', '[]'); $targetBlankApps = $this->config->getAppValueArray('target-blank-apps', '[]');
$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');
@@ -161,6 +162,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', '[]'),
'avatar' => $avatar, 'avatar' => $avatar,
'top-menu-apps' => $topMenuApps, 'top-menu-apps' => $topMenuApps,
'top-side-menu-apps' => $topSideMenuApps, 'top-side-menu-apps' => $topSideMenuApps,
+1 -5
View File
@@ -93,7 +93,7 @@ class NavController extends Controller
]); ]);
} }
$apps = $this->appRepository->getVisibleApps(); $apps = $this->appRepository->getOrderedApps();
$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');
@@ -178,10 +178,6 @@ class NavController extends Controller
foreach ($items as $category => $value) { foreach ($items as $category => $value) {
if (empty($items[$category]['apps'])) { if (empty($items[$category]['apps'])) {
unset($items[$category]); unset($items[$category]);
} else {
uasort($items[$category]['apps'], function ($a, $b) {
return ($a['name'] < $b['name']) ? -1 : 1;
});
} }
} }
+32 -9
View File
@@ -36,8 +36,7 @@ class AppRepository
IFactory $l10nFactory, IFactory $l10nFactory,
ConfigProxy $config, ConfigProxy $config,
CategoryRepository $categoryRepository CategoryRepository $categoryRepository
) ) {
{
$this->ocApp = $ocApp; $this->ocApp = $ocApp;
$this->l10nFactory = $l10nFactory; $this->l10nFactory = $l10nFactory;
$this->config = $config; $this->config = $config;
@@ -62,7 +61,7 @@ class AppRepository
foreach ([$app['id'], $app['id'].'_index'] as $id) { foreach ([$app['id'], $app['id'].'_index'] as $id) {
if (isset($navigation[$id])) { if (isset($navigation[$id])) {
$app['name'] = $this->l10nFactory->get($id)->t($app['name']); $app['name'] = $this->getAppName($app);
$app['href'] = $navigation[$id]['href']; $app['href'] = $navigation[$id]['href'];
$app['icon'] = $navigation[$id]['icon']; $app['icon'] = $navigation[$id]['icon'];
@@ -75,7 +74,7 @@ class AppRepository
if ('external_index' === substr($app['id'], 0, 14)) { if ('external_index' === substr($app['id'], 0, 14)) {
$visibleApps[$app['id']] = [ $visibleApps[$app['id']] = [
'id' => $app['id'], 'id' => $app['id'],
'name' => $this->l10nFactory->get($app['id'])->t($app['name']), 'name' => $this->getAppName($app),
'href' => $app['href'], 'href' => $app['href'],
'icon' => $app['icon'], 'icon' => $app['icon'],
'category' => [ 'category' => [
@@ -85,7 +84,7 @@ class AppRepository
} elseif ('files' === $app['id']) { } elseif ('files' === $app['id']) {
$visibleApps[$app['id']] = [ $visibleApps[$app['id']] = [
'id' => $app['id'], 'id' => $app['id'],
'name' => $this->l10nFactory->get($app['id'])->t($app['name']), 'name' => $this->getAppName($app),
'href' => $app['href'], 'href' => $app['href'],
'icon' => $app['icon'], 'icon' => $app['icon'],
'category' => [], 'category' => [],
@@ -99,10 +98,34 @@ class AppRepository
} }
} }
usort($visibleApps, function ($a, $b) {
return ($a['name'] < $b['name']) ? -1 : 1;
});
return $visibleApps; return $visibleApps;
} }
public function getAppName($app)
{
return $this->config->getAppValue(
'app.navigation.name',
$this->l10nFactory->get($app['id'])->t($app['name']),
$app['id']
);
}
public function getOrderedApps()
{
$apps = $this->getVisibleApps();
$orders = $this->config->getAppValueArray('apps-order', '[]');
usort($apps, function ($a, $b) use ($orders) {
$ak = array_keys($orders, $a['id'])[0] ?? null;
$bk = array_keys($orders, $b['id'])[0] ?? null;
if (null === $ak || null === $bk) {
return ($a['name'] < $b['name']) ? -1 : 1;
}
return $ak < $bk ? -1 : 1;
});
return $apps;
}
} }
+2
View File
@@ -159,6 +159,8 @@ class Admin implements ISettings
'force' => $this->config->getAppValue('force', '0'), 'force' => $this->config->getAppValue('force', '0'),
'target-blank-apps' => $this->config->getAppValueArray('target-blank-apps', '[]'), 'target-blank-apps' => $this->config->getAppValueArray('target-blank-apps', '[]'),
'top-menu-apps' => $this->config->getAppValueArray('top-menu-apps', '[]'), 'top-menu-apps' => $this->config->getAppValueArray('top-menu-apps', '[]'),
'apps-order' => $this->config->getAppValueArray('apps-order', '[]'),
'ordered-apps' => $this->appRepository->getOrderedApps(),
'top-side-menu-apps' => $this->config->getAppValueArray('top-side-menu-apps', '[]'), 'top-side-menu-apps' => $this->config->getAppValueArray('top-side-menu-apps', '[]'),
'default-enabled' => $this->config->getAppValue('default-enabled', '1'), 'default-enabled' => $this->config->getAppValue('default-enabled', '1'),
'apps' => $this->appRepository->getVisibleApps(), 'apps' => $this->appRepository->getVisibleApps(),
+3 -10
View File
@@ -30,7 +30,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<div class="modal__content"> <div class="modal__content">
<div v-for="lang in langs"> <div v-for="lang in langs">
<span class="lang" v-text="lang"></span> <span class="lang" v-text="lang"></span>
<input type="text" v-model="newValue[lang]" required> <input type="text" v-model="newValue[lang]" required style="width: calc(100% - 100px)">
</div> </div>
<NcActions> <NcActions>
@@ -43,7 +43,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<div class="modal__content"> <div class="modal__content">
<div v-for="lang in langs"> <div v-for="lang in langs">
<span class="lang" v-text="lang"></span> <span class="lang" v-text="lang"></span>
<input type="text" v-model="editValue[lang]" required> <input type="text" v-model="editValue[lang]" required style="width: calc(100% - 100px)">
</div> </div>
<div class="pull-right"> <div class="pull-right">
@@ -60,9 +60,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
</div> </div>
</template> </template>
<style scoped> <style>
.modal__content { .modal__content {
width: 200px;
padding: 10px; padding: 10px;
} }
@@ -73,12 +72,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
box-sizing: border-box; box-sizing: border-box;
} }
.modal__content input[type=text] {
width: calc(100% - 85px);
display: inline-block;
margin: 0;
}
.pull-right { .pull-right {
float: right; float: right;
} }
+14 -1
View File
@@ -27,7 +27,9 @@
:key="app.id" :key="app.id"
:data-app-id="app.id" :data-app-id="app.id"
class="app-menu-entry" class="app-menu-entry"
:class="{ 'app-menu-entry__active': app.active }"> :class="{ 'app-menu-entry__active': app.active }"
:style="makeStyle(app)"
>
<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)"
@@ -78,10 +80,16 @@ export default {
mounted() { mounted() {
const ncApps = loadState('core', 'apps', {}) const ncApps = loadState('core', 'apps', {})
this.apps = {} this.apps = {}
let orders = {}
window.menuAppsOrder.forEach((app, order) => {
orders[app] = order + 1
})
Array.from(window.topMenuApps).forEach((id) => { Array.from(window.topMenuApps).forEach((id) => {
if (ncApps.hasOwnProperty(id)) { if (ncApps.hasOwnProperty(id)) {
this.apps[id] = ncApps[id] this.apps[id] = ncApps[id]
this.apps[id].order = orders[id] || null
} }
}) })
@@ -122,6 +130,11 @@ export default {
} }
this.appLimit = appCount this.appLimit = appCount
}, },
makeStyle(app) {
if (app.order !== null) {
return `order: ${app.order}`
}
}
}, },
} }
</script> </script>
+28 -1
View File
@@ -82,7 +82,34 @@ export default {
}, },
methods: { methods: {
retrieveApps() { retrieveApps() {
this.apps = loadState('core', 'apps', {}) const ncApps = loadState('core', 'apps', {})
let orders = {}
let finalApps = []
window.menuAppsOrder.forEach((app, order) => {
orders[app] = order + 1
})
for (let id in ncApps) {
if (window.topMenuApps.includes(id) && !window.topSideMenuApps.includes(id)) {
continue;
}
let app = ncApps[id]
app.order = orders[id] || null
finalApps.push(app)
}
finalApps.sort((a, b) => {
if (a.order === null || b.order === null) {
return a.name < b.name ? -1 : 1;
}
return a.order < b.order ? -1 : 1;
})
this.apps = finalApps
document.querySelector('body').dispatchEvent(new CustomEvent('side-menu.apps', { document.querySelector('body').dispatchEvent(new CustomEvent('side-menu.apps', {
detail: {apps: this.apps}, detail: {apps: this.apps},
+23 -1
View File
@@ -159,9 +159,15 @@ document.addEventListener('DOMContentLoaded', () => {
const target = event.target const target = event.target
const values = JSON.parse(target.getAttribute('data-reset')) const values = JSON.parse(target.getAttribute('data-reset'))
target.classList.toggle('btn-reset--progress', true)
for (let i in values) { for (let i in values) {
document.querySelector(`#${i}`).value = values[i] document.querySelector(`#${i}`).value = values[i]
} }
window.setTimeout(() => {
target.classList.toggle('btn-reset--progress', false)
}, 800)
}) })
} }
@@ -249,7 +255,6 @@ document.addEventListener('DOMContentLoaded', () => {
let value = [] let value = []
for (let item of document.querySelectorAll('#categories-list .side-menu-setting-list-item')) { for (let item of document.querySelectorAll('#categories-list .side-menu-setting-list-item')) {
console.log(item.getAttribute('data-id'))
value.push(item.getAttribute('data-id')) value.push(item.getAttribute('data-id'))
} }
@@ -257,4 +262,21 @@ document.addEventListener('DOMContentLoaded', () => {
}) })
} catch (e) { } catch (e) {
} }
sortable('#apps-order-list .side-menu-setting-list', {
placeholderClass: 'side-menu-setting-list-drop'
})
try {
sortable('#apps-order-list .side-menu-setting-list')[0].addEventListener('sortstop', (e) => {
let value = []
for (let item of document.querySelectorAll('#apps-order-list .side-menu-setting-list-item')) {
value.push(item.getAttribute('data-id'))
}
document.querySelector('input[name="apps-order"]').value = JSON.stringify(value)
})
} catch (e) {
}
}) })
+34 -15
View File
@@ -3,13 +3,21 @@
"No": "Ne" "No": "Ne"
"Yes": "Ano" "Yes": "Ano"
"Menu": "Nabídka" "Menu": "Nabídka"
'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.': 'Pro otevření/skrytí postranní nabídky použijte zkratku <span class="keyboard-key">Ctrl</span>+<span class="keyboard-key">O</span> („O“ jako otevřít). Pro pohyb po použijte klávesu <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.'
: 'Pro otevření/skrytí postranní nabídky použijte zkratku <span class="keyboard-key">Ctrl</span>+<span
class="keyboard-key">O</span> („O“ jako otevřít). Pro pohyb po použijte klávesu
<span class="keyboard-key">Tab</span>.'
"Top menu": "Horní nabídka" "Top menu": "Horní nabídka"
"Apps that not must be moved in the side menu": "Aplikace, které nepřesouvat do postranní nabídky" "Apps that not must be moved in the side menu": "Aplikace, které nepřesouvat do postranní\
"If there is no selection then the global configuration is applied.": "Pokud neexistuje žádný výběr, je uplatněno globální nastavení." \ nabídky"
"If there is no selection then the global configuration is applied.": "Pokud neexistuje\
\ žádný výběr, je uplatněno globální nastavení."
"Experimental": "Experimentální" "Experimental": "Experimentální"
"Save": "Uložit" "Save": "Uložit"
"You like this app and you want to support me?": "Líbí se vám tato aplikace a chcete podpořit její vývoj?" "You like this app and you want to support me?": "Líbí se vám tato aplikace a chcete\
\ podpořit její vývoj?"
"Buy me a coffee ☕": "Kupte mi kafe ☕" "Buy me a coffee ☕": "Kupte mi kafe ☕"
"Hidden": "Skryté" "Hidden": "Skryté"
"Small": "Malé" "Small": "Malé"
@@ -36,19 +44,25 @@
"After the logo": "Za logem" "After the logo": "Za logem"
"Position": "Pozice" "Position": "Pozice"
"Show only the opener (hidden logo)": "Zobrazovat pouze otevírací tlačítko (logo skryto)" "Show only the opener (hidden logo)": "Zobrazovat pouze otevírací tlačítko (logo skryto)"
"Do not display the side menu and the opener if there is no application (eg: public pages).": "Nezobrazovat postranní nabídku a její otevírací tlačítko pokud nejsou dostupné žádné aplikace (např. na veřejných stránkách)." "Do not display the side menu and the opener if there is no application (eg: public pages).": "Nezobrazovat\
\ postranní nabídku a její otevírací tlačítko pokud nejsou dostupné žádné aplikace\
\ (např. na veřejných stránkách)."
"Panel": "Panel" "Panel": "Panel"
"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "Otevřít nabídku při najetím ukazatelem na tlačítko nabídky (automaticky vypnuto pro dotykové obrazovky)." "Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "Otevřít\
\ nabídku při najetím ukazatelem na tlačítko nabídky (automaticky vypnuto pro dotykové\
\ obrazovky)"
"Display the big menu": "Zobrazit velkou nabídku" "Display the big menu": "Zobrazit velkou nabídku"
"This menu is not compatible with AppOrder.": "Nabídka není kompatibilní s jinou aplikací (doplňkem) „Pořadí aplikací“."
"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>." "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." "The logo will be hidden when the menu is always displayed.": "Pokud je nabídka zobrazena\
"This is the automatic behavior when the menu is always displayed.": "Toto je automatické chování, kdy je nabídka vždy zobrazena." \ trvale, logo bude skryto."
"This is the automatic behavior when the menu is always displayed.": "Toto je automatické\
\ 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."
"Big menu": "Velká nabídka" "Big menu": "Velká nabídka"
"Live preview": "Živý náhled" "Live preview": "Živý náhled"
@@ -62,10 +76,13 @@
"Export the configuration": "Exportovat nastavení" "Export the configuration": "Exportovat nastavení"
"Purge the cache": "Vyprázdnit mezipaměť" "Purge the cache": "Vyprázdnit mezipaměť"
"Show the link to settings": "Zobrazit odkaz na nastavení" "Show the link to settings": "Zobrazit odkaz na nastavení"
"The menu is enabled by default for users": "Nabídka je ve výchozím stavu pro uživatele zapnutá" "The menu is enabled by default for users": "Nabídka je ve výchozím stavu pro uživatele\
\ zapnutá"
"Except when the configuration is forced.": "S výjimkou, kdy je nastavení vynuceno." "Except when the configuration is forced.": "S výjimkou, kdy je nastavení vynuceno."
"Apps that should not be displayed in the menu": "Aplikace, které by neměly být v nabídce zobrazeny" "Apps that should not be displayed in the menu": "Aplikace, které by neměly být v\
"This feature is only compatible with the <code>big menu</code> display.": "Tato funkce je kompatibilní pouze s <code>velkou nabídkou</ code>." \ nabídce zobrazeny"
"This feature is only compatible with the <code>big menu</code> display.": "Tato funkce\
\ je kompatibilní pouze s <code>velkou nabídkou</code>."
"The logo is a link to the default app": "Logo je odkaz na výchozí aplikaci" "The logo is a link to the default app": "Logo je odkaz na výchozí aplikaci"
"Others": "Ostatní" "Others": "Ostatní"
"Categories": "Kategorie" "Categories": "Kategorie"
@@ -74,12 +91,13 @@
"Name": "Název" "Name": "Název"
"Customed": "Přizpůsobeno" "Customed": "Přizpůsobeno"
"Show and hide the list of categories": "Zobrazit/skrýt seznam kategorií" "Show and hide the list of categories": "Zobrazit/skrýt seznam kategorií"
"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "Tyto parametry jsou použity v případě, že je zapnutý (Breeze) tmavý motiv vzhledu." "This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "Tyto\
\ parametry jsou použity v případě, že je zapnutý (Breeze) tmavý motiv vzhledu."
"Dark mode colors": "Barvy tmavého režimu" "Dark mode colors": "Barvy tmavého režimu"
"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 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" "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"
@@ -90,3 +108,4 @@
"Small text": "Malý text" "Small text": "Malý text"
"Normal text": "Normální text" "Normal text": "Normální text"
"Big text": "Velký text" "Big text": "Velký text"
"Applications": "Applications"
+39 -17
View File
@@ -3,13 +3,21 @@
"No": "Nein" "No": "Nein"
"Yes": "Ja" "Yes": "Ja"
"Menu": "Menü" "Menu": "Menü"
'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.': 'Verwende die Tastenkombination <span class="keyboard-key">Strg</span>+<span class="keyboard-key">o</span>, um das Seitenmenü ein- und auszublenden. Verwende <span class="keyboard-key">tab</span> zum Navigieren.' ? '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.'
: 'Verwende die Tastenkombination <span class="keyboard-key">Strg</span>+<span class="keyboard-key">o</span>,
um das Seitenmenü ein- und auszublenden. Verwende <span class="keyboard-key">tab</span>
zum Navigieren.'
"Top menu": "Obere Navigationsleiste" "Top menu": "Obere Navigationsleiste"
"Apps that not must be moved in the side menu": "Anwendungen, die nicht ins Seitenmenü verschoben werden sollen" "Apps that not must be moved in the side menu": "Anwendungen, die nicht ins Seitenmenü\
"If there is no selection then the global configuration is applied.": "Wenn keine Auswahl vorhanden ist, wird die globale Konfiguration angewendet." \ verschoben werden sollen"
"If there is no selection then the global configuration is applied.": "Wenn keine\
\ Auswahl vorhanden ist, wird die globale Konfiguration angewendet."
"Experimental": "Experimentell" "Experimental": "Experimentell"
"Save": "Speichern" "Save": "Speichern"
"You like this app and you want to support me?": "Du magst diese Anwendung und möchtest mich unterstützen?" "You like this app and you want to support me?": "Du magst diese Anwendung und möchtest\
\ mich unterstützen?"
"Buy me a coffee ☕": "Gib mir einen Kaffee aus ☕" "Buy me a coffee ☕": "Gib mir einen Kaffee aus ☕"
"Hidden": "Ausblenden" "Hidden": "Ausblenden"
"Small": "Klein" "Small": "Klein"
@@ -36,19 +44,25 @@
"After the logo": "Nach dem Logo" "After the logo": "Nach dem Logo"
"Position": "Position" "Position": "Position"
"Show only the opener (hidden logo)": "Nur das Menü-Symbol anzeigen (Logo wird ausgeblendet)" "Show only the opener (hidden logo)": "Nur das Menü-Symbol anzeigen (Logo wird ausgeblendet)"
"Do not display the side menu and the opener if there is no application (eg: public pages).": "Zeige das Seitenmenü und das Menü-Symbol nicht an, wenn keine Anwendung vorhanden ist (z.B. bei öffentlichen Seiten)." "Do not display the side menu and the opener if there is no application (eg: public pages).": "Zeige\
\ das Seitenmenü und das Menü-Symbol nicht an, wenn keine Anwendung vorhanden ist\
\ (z.B. bei öffentlichen Seiten)."
"Panel": "Panel" "Panel": "Panel"
"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "Öffne das Menü, wenn die Maus über das Menü-Symbol bewegt wird (auf Touchscreens automatisch deaktiviert)." "Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "Öffne\
\ das Menü, wenn die Maus über das Menü-Symbol bewegt wird (auf Touchscreens automatisch\
\ deaktiviert)"
"Display the big menu": "Großes Menü anzeigen" "Display the big menu": "Großes Menü anzeigen"
"This menu is not compatible with AppOrder.": "Dieses Menü ist nicht mit <code>AppOrder</code> kompatibel."
"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." "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." "The logo will be hidden when the menu is always displayed.": "Das Logo wird ausgeblendet,\
"This is the automatic behavior when the menu is always displayed.": "Dies ist das automatische Verhalten, wenn das Menü immer angezeigt wird." \ 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." "Not compatible with touch screens.": "Nicht kompatibel mit Touchscreens."
"Big menu": "Großes Menü" "Big menu": "Großes Menü"
"Live preview": "Live-Vorschau" "Live preview": "Live-Vorschau"
@@ -57,15 +71,20 @@
"Use my selection": "Verwende meine Auswahl" "Use my selection": "Verwende meine Auswahl"
"Show and hide the list of applications": "Ein- und Ausblenden der Anwendungsliste" "Show and hide the list of applications": "Ein- und Ausblenden der Anwendungsliste"
"Use the avatar instead of the logo": "Avatar anstelle des Logos anzeigen" "Use the avatar instead of the logo": "Avatar anstelle des Logos anzeigen"
"You do not have permission to change the settings.": "Du hast keine Berechtigung, die Einstellungen dieser Anwendung zu ändern." "You do not have permission to change the settings.": "Du hast keine Berechtigung,\
\ die Einstellungen dieser Anwendung zu ändern."
"Force this configuration to users": "Konfiguration für alle Benutzer erzwingen" "Force this configuration to users": "Konfiguration für alle Benutzer erzwingen"
"Export the configuration": "Konfiguration exportieren" "Export the configuration": "Konfiguration exportieren"
"Purge the cache": "Cache leeren" "Purge the cache": "Cache leeren"
"Show the link to settings": "Link zu den Einstellungen anzeigen" "Show the link to settings": "Link zu den Einstellungen anzeigen"
"The menu is enabled by default for users": "Das Menü ist standardmäßig für alle Benutzer aktiviert" "The menu is enabled by default for users": "Das Menü ist standardmäßig für alle Benutzer\
"Except when the configuration is forced.": "Gilt nicht, wenn die Konfiguration erzwungen wird." \ aktiviert"
"Apps that should not be displayed in the menu": "Anwendungen, die nicht im Menü angezeigt werden sollen" "Except when the configuration is forced.": "Gilt nicht, wenn die Konfiguration erzwungen\
"This feature is only compatible with the <code>big menu</code> display.": "Kompatibel mit dem <code>großen Menü</code>." \ wird."
"Apps that should not be displayed in the menu": "Anwendungen, die nicht im Menü angezeigt\
\ werden sollen"
"This feature is only compatible with the <code>big menu</code> display.": "Kompatibel\
\ mit dem <code>großen Menü</code>."
"The logo is a link to the default app": "Das Logo ist ein Link zur Standard-App" "The logo is a link to the default app": "Das Logo ist ein Link zur Standard-App"
"Others": "Andere" "Others": "Andere"
"Categories": "Kategorien" "Categories": "Kategorien"
@@ -74,12 +93,14 @@
"Name": "Name" "Name": "Name"
"Customed": "Benutzerdefiniert" "Customed": "Benutzerdefiniert"
"Show and hide the list of categories": "Liste der Kategorien ein- und ausblenden" "Show and hide the list of categories": "Liste der Kategorien ein- und ausblenden"
"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "Diese Optionen werden auf <code>Dark Theme</code> oder <code>Breeze Dark Theme</code> angewendet." "This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "Diese\
\ Optionen werden auf <code>Dark Theme</code> oder <code>Breeze Dark Theme</code>\
\ angewendet."
"Dark mode colors": "Farben für den dunklen Modus" "Dark mode colors": "Farben für den dunklen Modus"
"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 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" "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"
@@ -90,3 +111,4 @@
"Small text": "Kleiner Text" "Small text": "Kleiner Text"
"Normal text": "Normaler Text" "Normal text": "Normaler Text"
"Big text": "Großer Text" "Big text": "Großer Text"
"Applications": "Applications"
+43 -19
View File
@@ -3,13 +3,21 @@
"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> to open and to hide the side menu. Use <span class="keyboard-key">tab</span> to 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.' ? '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.'
: '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 être affichées dans le menu latéral" "Apps that not must be moved in the side menu": "Les applications qui ne doivent pas\
"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" \ ê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."
"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 vous souhaitez m'aider ?" "You like this app and you want to support me?": "Vous aimer cette application et\
\ 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"
@@ -43,20 +51,26 @@
"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 le logo)" "Show only the opener (hidden logo)": "Afficher uniquement le bouton d'ouverture (masquer\
"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)." \ 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)."
"Panel": "Panneau" "Panel": "Panneau"
"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)" "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)"
"Display the big menu": "Afficher le menu large" "Display the big menu": "Afficher le menu large"
"This menu is not compatible with AppOrder.": "Ce menu n'est pas compatible avec l'application AppOrder"
"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 du menu large." "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 si le menu est 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"
@@ -65,16 +79,21 @@
"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 de changer les paramètres." "You do not have permission to change the settings.": "Vous n'avez pas la permission\
\ 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 utilisateurs" "The menu is enabled by default for users": "Le menu est activé par défaut pour les\
\ 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 être affichées dans le menu" "Apps that should not be displayed in the menu": "Applications qui ne doivent pas\
"This feature is only compatible with the <code>big menu</code> display.": "Compatible avec l'affichage <code>Menu large</code>." \ être affichées dans le menu"
"The logo is a link to the default app": "Le logo est un lien vers l'application par défaut" "This feature is only compatible with the <code>big menu</code> display.": "Compatible\
\ 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"
@@ -82,11 +101,16 @@
"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 paramètres sont utilisés lorsque le thème sombre ou le thème Breeze Dark sont activés." "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."
"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 only visible in the top menu": "Applications visibles uniquement dans le menu\
"Apps visible in the top and side menus": "Applications visibles dans le menus supérieur et latéral" \ 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"
+95
View File
@@ -0,0 +1,95 @@
"Custom menu": ""
"Enable the custom menu": ""
"No": ""
"Yes": ""
"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.'
: ''
"Top menu": ""
"Apps that not must be moved in the side menu": ""
"If there is no selection then the global configuration is applied.": ""
"Experimental": ""
"Save": ""
"You like this app and you want to support me?": ""
"Buy me a coffee ☕": ""
"Hidden": ""
"Small": ""
"Normal": ""
"Big": ""
"Hidden icon": ""
"Small icon": ""
"Normal icon": ""
"Big icon": ""
"Hidden text": ""
"Small text": ""
"Normal text": ""
"Big text": ""
"Colors": ""
"Background color": ""
"Background color of current app": ""
"Text color": ""
"Loader": ""
"Icon": ""
"Same color": ""
"Opposite color": ""
"Transparent": ""
"Opaque": ""
"Opener": ""
"Default": ""
"Default (dark)": ""
"Hamburger": ""
"Hamburger (dark)": ""
"Hamburger 2": ""
"Hamburger 2 (dark)": ""
"Before the logo": ""
"After the logo": ""
"Position": ""
"Show only the opener (hidden logo)": ""
"Do not display the side menu and the opener if there is no application (eg: public pages).": ""
"Panel": ""
"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": ""
"Display the big menu": ""
"Display the logo": ""
"This feature is not compatible with the <code>big menu</code> display.": ""
"Icons and texts": ""
"Loader enabled": ""
"Tips": ""
"Always displayed": ""
"The logo will be hidden when the menu is always displayed.": ""
"This is the automatic behavior when the menu is always displayed.": ""
"Not compatible with touch screens.": ""
"Big menu": ""
"Live preview": ""
"Open apps in new tab": ""
"Use the global setting": ""
"Use my selection": ""
"Show and hide the list of applications": ""
"Use the avatar instead of the logo": ""
"You do not have permission to change the settings.": ""
"Force this configuration to users": ""
"Export the configuration": ""
"Purge the cache": ""
"Show the link to settings": ""
"The menu is enabled by default for users": ""
"Except when the configuration is forced.": ""
"Apps that should not be displayed in the menu": ""
"This feature is only compatible with the <code>big menu</code> display.": ""
"The logo is a link to the default app": ""
"Others": ""
"Categories": ""
"Customize sorting": ""
"Order by": ""
"Name": ""
"Customed": ""
"Show and hide the list of categories": ""
"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": ""
"Dark mode colors": ""
"With categories": ""
"Custom categories": ""
"Customize application categories": ""
"Apps only visible in the top menu": ""
"Apps visible in the top and side menus": ""
"Reset to default": ""
"Applications": ""
+1 -1
View File
@@ -40,7 +40,6 @@
"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": "显示大型菜单"
"This menu is not compatible with AppOrder.": "型菜单与应用顺序不兼容"
"Display the logo": "显示logo" "Display the logo": "显示logo"
"This feature is not compatible with the <code>big menu<\/code> display.": "此功能与显示<code>大型菜单<\/code>不兼容。" "This feature is not compatible with the <code>big menu<\/code> display.": "此功能与显示<code>大型菜单<\/code>不兼容。"
"Icons and texts": "图标与文字" "Icons and texts": "图标与文字"
@@ -90,3 +89,4 @@
"Small text": "小文本" "Small text": "小文本"
"Normal text": "普通文本" "Normal text": "普通文本"
"Big text": "大文本" "Big text": "大文本"
"Applications": "Applications"
+2 -1
View File
@@ -25,7 +25,8 @@ if ($_['always-displayed']) {
const targetBlankApps = <?php echo json_encode($_['target-blank-apps']) ?> const targetBlankApps = <?php echo json_encode($_['target-blank-apps']) ?>
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']); ?> window.topSideMenuApps = <?php echo json_encode($_['top-side-menu-apps'])."\n"; ?>
window.menuAppsOrder = <?php echo json_encode($_['apps-order']), "\n"; ?>
<?php if ($display === 'big-menu'): ?> <?php if ($display === 'big-menu'): ?>
sideMenu.setAttribute('data-bigmenu', '1') sideMenu.setAttribute('data-bigmenu', '1')
+39 -4
View File
@@ -509,7 +509,6 @@ $labelReset = 'Reset to default';
<?php p($l->t('With categories')); ?> <?php p($l->t('With categories')); ?>
</label> </label>
</div> </div>
<p><em><?php echo $l->t('This menu is not compatible with AppOrder.'); ?></em></p>
<p> <p>
<img <img
class="side-menu-display <?php echo $displays['side-with-categories'] ? 'is-active' : '' ?>" class="side-menu-display <?php echo $displays['side-with-categories'] ? 'is-active' : '' ?>"
@@ -524,7 +523,6 @@ $labelReset = 'Reset to default';
<?php p($l->t('Big menu')); ?> <?php p($l->t('Big menu')); ?>
</label> </label>
</div> </div>
<p><em><?php echo $l->t('This menu is not compatible with AppOrder.'); ?></em></p>
<p> <p>
<img <img
class="side-menu-display <?php echo $displays['big-menu'] ? 'is-active' : '' ?>" class="side-menu-display <?php echo $displays['big-menu'] ? 'is-active' : '' ?>"
@@ -798,9 +796,7 @@ $labelReset = 'Reset to default';
</div> </div>
</div> </div>
</div> </div>
</div>
<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('Apps visible in the top and side menus')); ?>
@@ -834,6 +830,45 @@ $labelReset = 'Reset to default';
</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">
</div>
</div>
</div>
</div>
<div class="section"> <div class="section">
<h2> <h2>