From 007ac2bb8e0b6eebcb8f5341516a7f7d39983063 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 7 Feb 2022 14:21:29 +0100 Subject: [PATCH 001/527] hide the scrollbar when mouse is out (menu always displayed) --- CHANGELOG.md | 3 +++ css/sideMenu.css | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51ed6f3..596a0c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ ## [Unreleased] +### Added +* hide the scrollbar when mouse is out (menu always displayed) + ## 2.3.2 ### Fixed - fix hidden menu diff --git a/css/sideMenu.css b/css/sideMenu.css index db83941..4de43d4 100644 --- a/css/sideMenu.css +++ b/css/sideMenu.css @@ -247,6 +247,11 @@ .side-menu-always-displayed .side-menu-apps-list { height: calc(100vh - 49px); top: 49px; + overflow: hidden; +} + +.side-menu-always-displayed .side-menu-apps-list:hover { + overflow: auto; } .side-menu-always-displayed #side-menu, From 0f73ad42c4d51e949866dc4d900c8f81f162bc4f Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 7 Feb 2022 14:28:34 +0100 Subject: [PATCH 002/527] fix SQL Exception InvalidFieldNameException (#93) --- lib/Service/LangRepository.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/Service/LangRepository.php b/lib/Service/LangRepository.php index c998a7e..3c379f0 100644 --- a/lib/Service/LangRepository.php +++ b/lib/Service/LangRepository.php @@ -26,7 +26,12 @@ class LangRepository $qb = $this->db->getQueryBuilder(); $qb->select($qb->createFunction('DISTINCT configvalue')) - ->where('configkey="lang" and appid="core" and configvalue<>"en"') + ->where('configkey=:configkey and appid=:appid and configvalue<>:configvalue') + ->setParameters([ + 'configkey' => 'lang', + 'appid' => 'core', + 'configvalue' => 'en', + ]) ->from('preferences') ; From 9afde0dc9dc9462a826f3710e24e85895faffd5d Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 7 Feb 2022 14:29:51 +0100 Subject: [PATCH 003/527] update changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 596a0c0..4007b68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,10 @@ ## [Unreleased] +## 2.3.3 ### Added * hide the scrollbar when mouse is out (menu always displayed) +### Fixed +* fix SQL Exception InvalidFieldNameException (#93) ## 2.3.2 ### Fixed From a67688e77900d38bfbe047e908b9e5365811c2b0 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 7 Feb 2022 14:30:08 +0100 Subject: [PATCH 004/527] release v2.3.3 --- appinfo/info.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appinfo/info.xml b/appinfo/info.xml index 881366c..232d990 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -26,7 +26,7 @@ If you like this application and if you want to support the development: * [Donate with liberapay](https://liberapay.com/deblan) * [Leave a comment](https://apps.nextcloud.com/apps/side_menu#comments) ]]> - 2.3.2 + 2.3.3 agpl Simon Vieille SideMenu From ee98a49366187c859bce6b4a5e445a351953cb9e Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Tue, 15 Mar 2022 10:51:40 +0100 Subject: [PATCH 005/527] fix blank line when settings are open --- css/sideMenu.css | 4 ++++ package.json | 4 ++-- templates/js/_topMenuApps.js | 1 - templates/js/script.php | 15 +++++++++++++++ 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/css/sideMenu.css b/css/sideMenu.css index 4de43d4..86436cb 100644 --- a/css/sideMenu.css +++ b/css/sideMenu.css @@ -298,6 +298,10 @@ padding: 10px 0; } +.side-menu-always-displayed #body-settings, #body-settings.body-settings-side-menu { + overflow-x: visible; +} + @media screen and (max-width: 1024px) { #side-menu.side-menu-big { max-width: 290px; diff --git a/package.json b/package.json index f38078f..cf982d8 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "extends @nextcloud/browserslist-config" ], "engines": { - "node": ">=10.0.0" + "node": ">=16.0.0" }, "devDependencies": { "@babel/core": "^7.9.0", @@ -43,9 +43,9 @@ "eslint-plugin-standard": "^4.0.1", "eslint-plugin-vue": "^5.2.3", "file-loader": "^6.0.0", - "node-sass": "^4.13.1", "sass-loader": "^8.0.2", "stylelint": "^8.4.0", + "sass": "^1.49.9", "stylelint-config-recommended-scss": "^3.3.0", "stylelint-scss": "^3.16.0", "stylelint-webpack-plugin": "^0.10.5", diff --git a/templates/js/_topMenuApps.js b/templates/js/_topMenuApps.js index 1cee506..2a2954b 100644 --- a/templates/js/_topMenuApps.js +++ b/templates/js/_topMenuApps.js @@ -71,7 +71,6 @@ const updateTopMenu = function() { if (targetBlankApps.indexOf(dataId) !== -1) { querySelector('a', app).setAttribute('target', '_blank') } - } navigationApps.innerHTML = navigationAppsHtml diff --git a/templates/js/script.php b/templates/js/script.php index e133d10..5e31fec 100644 --- a/templates/js/script.php +++ b/templates/js/script.php @@ -171,6 +171,21 @@ if ($_['always-displayed']) { sideMenuFocus() } }) + + const sideMenuObserver = new MutationObserver((e) => { + if (body.getAttribute('id') !== 'body-settings') { + return + } + + body.classList.toggle('body-settings-side-menu', sideMenu.classList.contains('open')) + }) + + sideMenuObserver.observe(sideMenu, { + attributes: true, + attributeFilter: ['class'], + childList: false, + characterData: false + }) }) body.appendChild(sideMenuContainer) From c0b1701744767209ddd22028ae285f5e1f2a6f27 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Tue, 15 Mar 2022 10:56:05 +0100 Subject: [PATCH 006/527] release v2.3.4 --- CHANGELOG.md | 4 ++++ appinfo/info.xml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4007b68..25ed1b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## [Unreleased] +## 2.3.4 +### Fixed +* fix blank line when settings are open (#96) + ## 2.3.3 ### Added * hide the scrollbar when mouse is out (menu always displayed) diff --git a/appinfo/info.xml b/appinfo/info.xml index 232d990..4d57236 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -26,7 +26,7 @@ If you like this application and if you want to support the development: * [Donate with liberapay](https://liberapay.com/deblan) * [Leave a comment](https://apps.nextcloud.com/apps/side_menu#comments) ]]> - 2.3.3 + 2.3.4 agpl Simon Vieille SideMenu From 52bbd49d9af9e7d78fdf4129bf322d7438004074 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Tue, 15 Mar 2022 11:44:11 +0100 Subject: [PATCH 007/527] update readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 62f0ad9..dce32bb 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,8 @@ You can customize colors depending of the theme (Dark theme and Breeze Dark). Co 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://ci2.gitnet.fr/api/badges/deblan/side_menu/status.svg)](https://ci2.gitnet.fr/deblan/side_menu) + Requirements ------------ From a6a84ee7841b23225d0abe4738e209553ca42113 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Sun, 10 Apr 2022 18:56:50 +0200 Subject: [PATCH 008/527] update opener active style (fix #99) --- css/sideMenu.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/css/sideMenu.css b/css/sideMenu.css index 86436cb..b548687 100644 --- a/css/sideMenu.css +++ b/css/sideMenu.css @@ -79,7 +79,7 @@ } .side-menu-opener:active { - background-color: var(--color-background-dark) !important; + background-color: var(--side-menu-current-app-background-color, #444) !important; } .side-menu-closer { From 389da47cab1c56e2d4777b4c38462e6969c01890 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 11 Apr 2022 19:11:41 +0200 Subject: [PATCH 009/527] release v2.3.5 --- CHANGELOG.md | 4 ++++ appinfo/info.xml | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 25ed1b1..9b050c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## [Unreleased] +## 2.3.5 +### Fixed +* fix white square (#99) + ## 2.3.4 ### Fixed * fix blank line when settings are open (#96) diff --git a/appinfo/info.xml b/appinfo/info.xml index 4d57236..40a6a4f 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -26,7 +26,7 @@ If you like this application and if you want to support the development: * [Donate with liberapay](https://liberapay.com/deblan) * [Leave a comment](https://apps.nextcloud.com/apps/side_menu#comments) ]]> - 2.3.4 + 2.3.5 agpl Simon Vieille SideMenu @@ -46,7 +46,7 @@ If you like this application and if you want to support the development: https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc20_big_menu_responsive.png https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/personal_settings.png - + From 2cb8c22be08f2d6d9f65f1f262f8e6bd8996ceaa Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Wed, 4 May 2022 21:05:38 +0200 Subject: [PATCH 010/527] fix avatar size (nextcloud 24) --- css/sideMenu.css | 2 ++ 1 file changed, 2 insertions(+) diff --git a/css/sideMenu.css b/css/sideMenu.css index b548687..0142071 100644 --- a/css/sideMenu.css +++ b/css/sideMenu.css @@ -59,6 +59,8 @@ .side-menu-settings img { vertical-align: bottom; margin-left: 3px; + width: 32px; + height: 32px; } #side-menu.open .side-menu-settings { From 4e0c7be2c60f7bbc820d5a6014bceaff479c019a Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 30 May 2022 12:04:15 +0200 Subject: [PATCH 011/527] remove deprecated app.php file --- appinfo/app.php | 10 --- lib/AppInfo/Application.php | 121 ++++++++++++++++++------------------ 2 files changed, 59 insertions(+), 72 deletions(-) delete mode 100644 appinfo/app.php diff --git a/appinfo/app.php b/appinfo/app.php deleted file mode 100644 index 7c48ca1..0000000 --- a/appinfo/app.php +++ /dev/null @@ -1,10 +0,0 @@ -isEnabled()) { - $app->registerAssets(); - $app->registerServices(); -} diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 0558e9a..f7f5e7e 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -9,6 +9,9 @@ use OCA\SideMenu\Service\AppRepository; use OCA\SideMenu\Service\CategoryRepository; use OCA\SideMenu\Service\ConfigProxy; use OCP\AppFramework\App; +use OCP\AppFramework\Bootstrap\IBootContext; +use OCP\AppFramework\Bootstrap\IBootstrap; +use OCP\AppFramework\Bootstrap\IRegistrationContext; use OCP\IUserSession; use OCP\Util; use Psr\Container\ContainerInterface; @@ -18,7 +21,7 @@ use Psr\Container\ContainerInterface; * * @author Simon Vieille */ -class Application extends App +class Application extends App implements IBootstrap { public const APP_ID = 'side_menu'; @@ -44,16 +47,9 @@ class Application extends App public function __construct(array $urlParams = []) { parent::__construct(self::APP_ID, $urlParams); - - $this->config = OC::$server->getConfig(); - $this->cspnm = OC::$server->getContentSecurityPolicyNonceManager(); - $this->user = OC::$server[IUserSession::class]->getUser(); } - /** - * Checks if this app is enabled. - */ - public function isEnabled(): bool + protected function isEnabled(): bool { $enabled = true; $isForced = (bool) $this->config->getAppValue(self::APP_ID, 'force', '0'); @@ -74,64 +70,65 @@ class Application extends App return $enabled; } - /** - * Registes services. - */ - public function registerServices() - { - $container = $this->getContainer(); - - $container->registerService('AppRepository', function (ContainerInterface $c) { - return new AppRepository(); - }); - - $container->registerService('CategoryRepository', function (ContainerInterface $c) { - return new CategoryRepository(); - }); - - $container->registerService('ConfigProxy', function (ContainerInterface $c) { - return new ConfigProxy(); - }); - } - - /** - * Registers assets. - */ - public function registerAssets() + protected function addAssets() { Util::addScript(self::APP_ID, 'sideMenu'); Util::addStyle(self::APP_ID, 'sideMenu'); - $stylesheet = OC::$server->getURLGenerator()->linkToRoute( - 'side_menu.Css.stylesheet', - [ - 'v' => $this->config->getAppValue(self::APP_ID, 'cache', '0'), - ] - ); - - $script = OC::$server->getURLGenerator()->linkToRoute( - 'side_menu.Js.script', - [ - 'v' => $this->config->getAppValue(self::APP_ID, 'cache', '0'), - ] - ); - - Util::addHeader( - 'link', - [ - 'href' => $stylesheet, - 'rel' => 'stylesheet', + $assets = [ + 'stylesheet' => [ + 'route' => 'side_menu.Css.stylesheet', + 'type' => 'link', + 'route_attr' => 'href', + 'attr' => [ + 'rel' => 'stylesheet', + ], ], - '' - ); - - Util::addHeader( - 'script', - [ - 'src' => $script, - 'nonce' => $this->cspnm->getNonce(), + 'script' => [ + 'route' => 'side_menu.Js.script', + 'type' => 'script', + 'route_attr' => 'src', + 'attr' => [ + 'nonce' => $this->cspnm->getNonce(), + ], ], - '' - ); + ]; + + $cache = $this->config->getAppValue(self::APP_ID, 'cache', '0'); + + foreach ($assets as $key => $value) { + $route = OC::$server->getURLGenerator()->linkToRoute($value['route'], ['v' => $cache]); + $value['attr'][$value['route_attr']] = $route; + + Util::addHeader($value['type'], $value['attr'], ''); + } + } + + public function register(IRegistrationContext $context): void + { + $context->registerService('AppRepository', function (ContainerInterface $c) { + return new AppRepository(); + }); + + $context->registerService('CategoryRepository', function (ContainerInterface $c) { + return new CategoryRepository(); + }); + + $context->registerService('ConfigProxy', function (ContainerInterface $c) { + return new ConfigProxy(); + }); + } + + public function boot(IBootContext $context): void + { + $this->config = OC::$server->getConfig(); + $this->cspnm = OC::$server->getContentSecurityPolicyNonceManager(); + $this->user = OC::$server[IUserSession::class]->getUser(); + + if (!$this->isEnabled()) { + return; + } + + $this->addAssets(); } } From d8edbae8482304258541c3c6b22e6b210c4d9eac Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 30 May 2022 12:58:49 +0200 Subject: [PATCH 012/527] fix minor issues --- css/sideMenu.css | 2 +- templates/js/_topMenuApps.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/css/sideMenu.css b/css/sideMenu.css index 0142071..fdea209 100644 --- a/css/sideMenu.css +++ b/css/sideMenu.css @@ -80,7 +80,7 @@ margin-left: 3px !important; } -.side-menu-opener:active { +.side-menu-opener:active, .side-menu-opener:focus { background-color: var(--side-menu-current-app-background-color, #444) !important; } diff --git a/templates/js/_topMenuApps.js b/templates/js/_topMenuApps.js index 2a2954b..103a453 100644 --- a/templates/js/_topMenuApps.js +++ b/templates/js/_topMenuApps.js @@ -201,7 +201,7 @@ const updateTopMenu = function() { menuCache = menu.innerHTML + menu.nextSibling.innerHTML } -for (let i = 0; i < 3000; i+= 100) { +for (let i = 0; i < 4000; i+= 100) { setTimeout(updateTopMenu, i) } From f116b8463a80f980f4febd261b5bb08e9e1ff896 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 30 May 2022 13:22:03 +0200 Subject: [PATCH 013/527] fix menu with categories header --- css/sideMenu.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/css/sideMenu.css b/css/sideMenu.css index fdea209..a69ca5b 100644 --- a/css/sideMenu.css +++ b/css/sideMenu.css @@ -153,6 +153,10 @@ top: 0; } +#side-menu.side-menu-with-categories .side-menu-header { + max-width: 295px; +} + #side-menu.hide-opener .side-menu-logo { margin-top: 20px; } From 28fc33ee790b5e9e988648f6740816de9871f1b2 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 30 May 2022 19:49:36 +0200 Subject: [PATCH 014/527] change saving progression --- css/admin.css | 7 +++++++ src/admin.js | 13 ++++++++----- templates/settings/admin-form.php | 4 +--- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/css/admin.css b/css/admin.css index 82c6b31..8fab8da 100644 --- a/css/admin.css +++ b/css/admin.css @@ -129,3 +129,10 @@ .side-menu-setting-form-long { width: 400px; } + +#side-menu-save-progress { + display: inline-block; + width: 0; + height: 15px; + background: #fff; +} diff --git a/src/admin.js b/src/admin.js index b7b5982..03124f8 100644 --- a/src/admin.js +++ b/src/admin.js @@ -79,17 +79,20 @@ const saveSettings = (key) => { ++value } + const progress = document.querySelector('#side-menu-save-progress') + + progress.style.width = '40px'; + progress.style.marginLeft = '5px'; + const callbacks = { success: () => { - OC.msg.finishedSuccess( - selector, - t('side_menu', (key + 1) + '/' + size) - ) + const percent = parseInt((key + 1) * 100 / size); + + progress.setAttribute('value', percent) if (key < size - 1) { saveSettings(key + 1) } else { - OC.msg.finishedSuccess(selector, t('side_menu', 'Saved! Page is reloading...')) location.reload() } }, diff --git a/templates/settings/admin-form.php b/templates/settings/admin-form.php index 1aa2d94..7650076 100644 --- a/templates/settings/admin-form.php +++ b/templates/settings/admin-form.php @@ -837,7 +837,6 @@ $choicesSizes = [
t('Customize application categories')); ?> - t('Experimental')); ?>
@@ -957,10 +956,9 @@ $choicesSizes = [
- - +
t('Transparent')); ?> @@ -227,16 +232,23 @@ $choicesSizes = [
+ +
t('Transparent')); ?> @@ -842,7 +854,7 @@ $choicesSizes = [ 🖱️ t('Show and hide the list of applications')); ?> - +-to
t('Transparent')); ?> @@ -107,6 +106,10 @@ $choicesSizes = [ type="color" class="side-menu-setting side-menu-setting-live" value=""> + +
@@ -123,6 +126,10 @@ $choicesSizes = [ type="color" class="side-menu-setting side-menu-setting-live" value=""> + +
@@ -139,6 +146,10 @@ $choicesSizes = [ type="color" class="side-menu-setting" value=""> + +
@@ -244,10 +255,10 @@ $choicesSizes = [ class="side-menu-setting" value=""> - + ])) ?>">
@@ -278,10 +289,15 @@ $choicesSizes = [
+ +
@@ -293,10 +309,15 @@ $choicesSizes = [
+ +
@@ -308,10 +329,15 @@ $choicesSizes = [
+ +
From 814567635d4a70b841e439cacd5a0c41765f6518 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Tue, 31 May 2022 16:29:29 +0200 Subject: [PATCH 019/527] update changelog --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b050c5..e357e03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ ## [Unreleased] +## 2.4.0 +### Added +* remove focus on opener after click +* add button to set default colors +* add menu hover effect +### Fixed +* fix deprecated app.php file +* fix menu with categories header +* fix minor issues +### Changed +* change saving progression +### Removed +* Nextcloud 19 is not supported anymore +* PHP 7.3 is not supported anymore + ## 2.3.5 ### Fixed * fix white square (#99) From 6b1a995d5d030eb54894779ddb276b8b2a60a9af Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Tue, 31 May 2022 16:43:49 +0200 Subject: [PATCH 020/527] add tooltips --- src/admin.js | 2 ++ src/l10n/fixtures/cs.yaml | 1 + src/l10n/fixtures/de.yaml | 1 + src/l10n/fixtures/fr.yaml | 1 + src/l10n/fixtures/zh_CN.yaml | 1 + templates/settings/admin-form.php | 16 ++++++++-------- 6 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/admin.js b/src/admin.js index 51573ab..9231c9a 100644 --- a/src/admin.js +++ b/src/admin.js @@ -134,6 +134,8 @@ const updateAppsCategoriesCustom = () => { } document.addEventListener('DOMContentLoaded', () => { + $('*[data-toggle="tooltip"]').tooltip(); + if (document.querySelector('#side-menu-categories-custom')) { const View = Vue.extend(AdminCategoriesCustom) const adminCategoriesCustom = new View({}) diff --git a/src/l10n/fixtures/cs.yaml b/src/l10n/fixtures/cs.yaml index 11fc4b1..13a1b0f 100644 --- a/src/l10n/fixtures/cs.yaml +++ b/src/l10n/fixtures/cs.yaml @@ -82,3 +82,4 @@ "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" diff --git a/src/l10n/fixtures/de.yaml b/src/l10n/fixtures/de.yaml index eb30f55..fe2567d 100644 --- a/src/l10n/fixtures/de.yaml +++ b/src/l10n/fixtures/de.yaml @@ -81,3 +81,4 @@ "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" diff --git a/src/l10n/fixtures/fr.yaml b/src/l10n/fixtures/fr.yaml index 9b6a6c0..ec5efd5 100644 --- a/src/l10n/fixtures/fr.yaml +++ b/src/l10n/fixtures/fr.yaml @@ -81,3 +81,4 @@ "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" diff --git a/src/l10n/fixtures/zh_CN.yaml b/src/l10n/fixtures/zh_CN.yaml index 294157a..8ed069c 100644 --- a/src/l10n/fixtures/zh_CN.yaml +++ b/src/l10n/fixtures/zh_CN.yaml @@ -81,3 +81,4 @@ "Customize application categories": "自定义应用程序类别" "Apps only visible in the top menu": "应用程序仅在顶部菜单中可见" "Apps visible in the top and side menus": "顶部和侧边菜单中可见的应用程序" +"Reset to default": "重置为默认设置" diff --git a/templates/settings/admin-form.php b/templates/settings/admin-form.php index b0b2514..651ad6a 100644 --- a/templates/settings/admin-form.php +++ b/templates/settings/admin-form.php @@ -67,7 +67,7 @@ $choicesSizes = [ class="side-menu-setting side-menu-setting-live" value=""> -
@@ -107,7 +107,7 @@ $choicesSizes = [ class="side-menu-setting side-menu-setting-live" value=""> -
@@ -127,7 +127,7 @@ $choicesSizes = [ class="side-menu-setting side-menu-setting-live" value=""> -
@@ -147,7 +147,7 @@ $choicesSizes = [ class="side-menu-setting" value=""> -
@@ -255,7 +255,7 @@ $choicesSizes = [ class="side-menu-setting" value=""> -
@@ -295,7 +295,7 @@ $choicesSizes = [ class="side-menu-setting" value=""> -
@@ -315,7 +315,7 @@ $choicesSizes = [ class="side-menu-setting" value=""> -
@@ -335,7 +335,7 @@ $choicesSizes = [ class="side-menu-setting" value=""> -
From 7b2f64c5cd562624e77402eed5b1be576c58d727 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Tue, 31 May 2022 21:11:11 +0200 Subject: [PATCH 021/527] add translations --- src/l10n/fixtures/cs.yaml | 8 ++++++++ src/l10n/fixtures/de.yaml | 8 ++++++++ src/l10n/fixtures/fr.yaml | 8 ++++++++ src/l10n/fixtures/zh_CN.yaml | 8 ++++++++ templates/settings/admin-form.php | 4 ++-- 5 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/l10n/fixtures/cs.yaml b/src/l10n/fixtures/cs.yaml index 13a1b0f..6958c09 100644 --- a/src/l10n/fixtures/cs.yaml +++ b/src/l10n/fixtures/cs.yaml @@ -83,3 +83,11 @@ "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" +"Hidden icon": "Skrytá ikona" +"Small icon": "Malá ikona" +"Normal icon": "Normální ikona" +"Big icon": "Velká ikona" +"Hidden text": "Skrytý text" +"Small text": "Malý text" +"Normal text": "Normální text" +"Big text": "Velký text" diff --git a/src/l10n/fixtures/de.yaml b/src/l10n/fixtures/de.yaml index fe2567d..afffdbb 100644 --- a/src/l10n/fixtures/de.yaml +++ b/src/l10n/fixtures/de.yaml @@ -82,3 +82,11 @@ "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" +"Hidden icon": "Verstecktes Symbol" +"Small icon": "Kleines Symbol" +"Normal icon": "Normales Symbol" +"Big icon": "Große Ikone" +"Hidden text": "Versteckter Text" +"Small text": "Kleiner Text" +"Normal text": "Normaler Text" +"Big text": "Großer Text" diff --git a/src/l10n/fixtures/fr.yaml b/src/l10n/fixtures/fr.yaml index ec5efd5..3d8fece 100644 --- a/src/l10n/fixtures/fr.yaml +++ b/src/l10n/fixtures/fr.yaml @@ -15,6 +15,14 @@ "Small": "Petit" "Normal": "Normal" "Big": "Gros" +"Hidden icon": "Icône masqué" +"Small icon": "Petit icône" +"Normal icon": "Icône normal" +"Big icon": "Gros icône" +"Hidden text": "Text masqué" +"Small text": "Texte petit" +"Normal text": "Texte normal" +"Big text": "Gros texte" "Colors": "Couleurs" "Background color": "Couleur de fond" "Background color of current app": "Couleur de fond de l'application en cours" diff --git a/src/l10n/fixtures/zh_CN.yaml b/src/l10n/fixtures/zh_CN.yaml index 8ed069c..4e8cb36 100644 --- a/src/l10n/fixtures/zh_CN.yaml +++ b/src/l10n/fixtures/zh_CN.yaml @@ -82,3 +82,11 @@ "Apps only visible in the top menu": "应用程序仅在顶部菜单中可见" "Apps visible in the top and side menus": "顶部和侧边菜单中可见的应用程序" "Reset to default": "重置为默认设置" +"Hidden icon": "隐藏图标" +"Small icon": "小图标" +"Normal icon": "正常图标" +"Big icon": "大图标" +"Hidden text": "隐藏文字" +"Small text": "小文本" +"Normal text": "普通文本" +"Big text": "大文本" diff --git a/templates/settings/admin-form.php b/templates/settings/admin-form.php index 651ad6a..ba7cf77 100644 --- a/templates/settings/admin-form.php +++ b/templates/settings/admin-form.php @@ -697,7 +697,7 @@ $choicesSizes = [ @@ -705,7 +705,7 @@ $choicesSizes = [ From a0be3757e9dc67ad7d585002759804744cd84d5b Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Tue, 31 May 2022 21:21:30 +0200 Subject: [PATCH 022/527] update screenshots --- screenshots/admin_settings.png | Bin 259731 -> 328842 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/screenshots/admin_settings.png b/screenshots/admin_settings.png index 31d225c44757bf0470f46a3b337bde039012c877..ba7a74421ddbd42f64e130259972303ee369ca5b 100644 GIT binary patch literal 328842 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