Compare commits

...

186 commits

Author SHA1 Message Date
Simon Vieille 7b33271d00 Merge pull request 'ci: rollback tag check' (#346) from develop into master
Some checks failed
ci/woodpecker/push/build Pipeline is pending approval
ci/woodpecker/push/security Pipeline is pending approval
ci/woodpecker/tag/build Pipeline was successful
ci/woodpecker/tag/publish Pipeline failed
ci/woodpecker/tag/security Pipeline was successful
Reviewed-on: #346
2024-04-08 14:33:50 +02:00
Simon Vieille 012c660fed
ci: rollback tag check
Some checks are pending
ci/woodpecker/push/build Pipeline is pending approval
ci/woodpecker/push/security Pipeline is pending approval
2024-04-08 14:33:22 +02:00
Simon Vieille e4e054835d Merge pull request 'ci: fix signature step (volumes)' (#345) from develop into master
Some checks are pending
ci/woodpecker/push/build Pipeline is pending approval
ci/woodpecker/push/security Pipeline is pending approval
ci/woodpecker/tag/build Pipeline was successful
ci/woodpecker/tag/security Pipeline was successful
ci/woodpecker/tag/publish Pipeline was successful
Reviewed-on: #345
2024-04-08 14:14:59 +02:00
Simon Vieille 9c5be63f16
ci: fix signature step (volumes)
Some checks are pending
ci/woodpecker/push/build Pipeline is pending approval
ci/woodpecker/push/security Pipeline is pending approval
2024-04-08 14:14:16 +02:00
Simon Vieille eae8ce80fb Merge pull request 'release v3.12.0' (#344) from develop into master
Some checks failed
ci/woodpecker/push/build Pipeline is pending approval
ci/woodpecker/push/security Pipeline is pending approval
ci/woodpecker/tag/build Pipeline was successful
ci/woodpecker/tag/publish Pipeline failed
ci/woodpecker/tag/security Pipeline was successful
Reviewed-on: #344
2024-04-08 11:59:32 +02:00
Simon Vieille 71f5dfef9a
add compatibility with NC29
Some checks are pending
ci/woodpecker/push/build Pipeline is pending approval
ci/woodpecker/push/security Pipeline is pending approval
ci/woodpecker/pr/build Pipeline was successful
ci/woodpecker/pr/security Pipeline was successful
2024-04-08 11:41:26 +02:00
Simon Vieille afa48c6239
ci: update deblan/php version
All checks were successful
ci/woodpecker/push/build Pipeline was successful
ci/woodpecker/push/security Pipeline was successful
2024-02-21 16:14:05 +01:00
Simon Vieille a94a94b564
update forgejo templates
Some checks are pending
ci/woodpecker/push/build Pipeline is pending
ci/woodpecker/push/security Pipeline is pending
2024-02-21 15:45:08 +01:00
Simon Vieille 3e7dcac307
add forgejo templates
Some checks are pending
ci/woodpecker/push/build Pipeline is pending
ci/woodpecker/push/security Pipeline is pending
2024-02-21 12:35:47 +01:00
Simon Vieille 54b64cc54e Merge pull request 'refactoring ci steps' (#337) from feature/ci-refactoring into develop
All checks were successful
ci/woodpecker/push/build Pipeline was successful
ci/woodpecker/push/security Pipeline was successful
Reviewed-on: #337
2024-02-21 12:22:18 +01:00
Simon Vieille 45d4e5f24c refactorint ci steps
All checks were successful
ci/woodpecker/pr/build Pipeline was successful
ci/woodpecker/pr/security Pipeline was successful
ci/woodpecker/push/build Pipeline was successful
ci/woodpecker/push/security Pipeline was successful
use gitnet.fr/deblan/woodpecker-cache to generate cache
2024-02-21 12:10:02 +01:00
Simon Vieille 972c69d880 Merge pull request 'release v3.11.8' (#336) from develop into master
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #336
2024-02-20 21:26:26 +01:00
Simon Vieille 56904c5aa0
release v3.11.8
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-02-20 21:22:05 +01:00
Simon Vieille 32cd25b736
update changelog
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending
2024-02-20 21:18:18 +01:00
Simon Vieille a9a3ba36c1 Merge pull request 'move the logo inside #nextcloud element (fix #278 #239) [NC26]' (#335) from bugfix/issue278-239 into develop
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending
Reviewed-on: #335
2024-02-20 21:17:39 +01:00
Simon Vieille 2cecd0d6f4
move the logo inside #nextcloud element (fix #278 #239) [NC26]
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline is pending
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-02-20 21:08:46 +01:00
Simon Vieille 28085d9aa7
remove line breaks 2024-02-20 21:08:12 +01:00
Simon Vieille dd8561e691 Merge pull request 'release v3.11.7' (#331) from develop into master
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #331
2024-02-14 19:10:56 +01:00
Simon Vieille 9d7c98ddf0
fix gl translations
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline is pending
2024-02-14 18:59:25 +01:00
Simon Vieille c34bd19159
release v3.11.è
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending
2024-02-14 18:57:33 +01:00
Simon Vieille d9d4306ed3
update changelog
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending
2024-02-14 13:31:10 +01:00
Simon Vieille b027f1e558 Merge pull request 'upgrade css-loader' (#330) from feature/dependencies-upgrade into develop
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending
Reviewed-on: #330
2024-02-14 13:30:30 +01:00
Simon Vieille cb44d1eb2a
update changelog
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending
2024-02-14 13:29:36 +01:00
Simon Vieille 4c76cea7c6
update translations
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending
2024-02-14 13:25:31 +01:00
Simon Vieille 16b166b1cf Merge branch 'develop' into translations 2024-02-14 13:21:58 +01:00
Simon Vieille db9c99b8f2
upgrade css-loader
Some checks are pending
ci/woodpecker/pr/woodpecker Pipeline is pending
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline is pending
2024-02-14 13:18:59 +01:00
Simon Vieille 01c782d844 Merge pull request 'fix #301 #301 #311' (#329) from bugfix/issue326-menudark2 into develop
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending
Reviewed-on: #329
2024-02-14 12:25:17 +01:00
Simon Vieille 1271571427
upgrade axios
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline is pending
2024-02-14 12:22:13 +01:00
Simon Vieille 951dd742d8
add accessibility to open and close buttons (#311)
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending
ci/woodpecker/pr/woodpecker Pipeline was successful
refactor the way to focus apps when the menu is opened (#301)
2024-02-14 12:12:08 +01:00
Simon Vieille b8aa312a14
fully apply Nextcloud AppMenu.vue updated (#326)
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is pending
2024-02-14 11:26:54 +01:00
Simon Vieille 774c314e7b
add missing label on the 'save' button in personal settings (fix #318) 2024-02-14 11:16:25 +01:00
Simon Vieille 10b91991a9
update ci steps names
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2024-02-12 23:29:58 +01:00
Simon Vieille 61a4689eb2 Merge pull request 'release v3.11.6' (#328) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #328
2024-02-12 23:22:28 +01:00
Simon Vieille 3de47aa3e3
release v3.11.6
Some checks failed
ci/woodpecker/pr/woodpecker Pipeline failed
ci/woodpecker/pull_request_closed/woodpecker Pipeline failed
ci/woodpecker/push/woodpecker Pipeline failed
2024-02-12 23:21:30 +01:00
Simon Vieille cd64c0dd93
update changelog 2024-02-12 23:21:12 +01:00
Simon Vieille 13fdd6c0d6 Merge pull request 'add --background-invert-if-bright in top menu (fix #326)' (#327) from bugfix/issue326-menudark into develop
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #327
2024-02-12 23:20:34 +01:00
Simon Vieille 83a2261838
add --background-invert-if-bright in top menu (fix #326)
Some checks failed
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline failed
2024-02-12 23:19:43 +01:00
Simon Vieille c11c4ee197 Merge pull request 'chore: Configure Renovate' (#314) from renovate/configure into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #314
2024-02-06 22:10:22 +01:00
Simon Vieille d8aa018f5a
Added translation using Weblate (Galician)
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-02-06 20:04:43 +00:00
Simon Vieille c3c5db8a37 add translations
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2024-01-28 23:20:13 +01:00
Simon Vieille 4532dd345e Merge pull request 'update app info' (#317) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #317
2024-01-28 23:07:31 +01:00
Simon Vieille 0aa6767090 update app info
Some checks failed
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline failed
2024-01-28 23:07:01 +01:00
Simon Vieille 6effdc6eed Merge pull request 'release 3.11.5' (#316) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #316
2024-01-28 23:06:25 +01:00
Simon Vieille 238a1a905e update changelog
All checks were successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-01-28 23:05:46 +01:00
Simon Vieille 4221f81860 Merge pull request 'bugfix/issue311' (#315) from bugfix/issue311 into develop
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #315
2024-01-28 23:05:02 +01:00
Simon Vieille 8baaa51b8a fix #311: add missing aria-label attribute
All checks were successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-01-28 23:02:35 +01:00
Simon Vieille fc6ebbaa2e add translation item for "Toggle menu" 2024-01-28 23:02:04 +01:00
Renovate Bot 2c83789813 chore(deps): add renovate.json
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-01-27 22:59:29 +00:00
Simon Vieille 810d83880b Merge pull request 'release v3.11.4' (#313) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #313
2024-01-27 10:47:53 +01:00
Simon Vieille 0c143bdb88 release v3.11.3
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-01-27 10:23:23 +01:00
Simon Vieille 9e1ded6376 [ci] check if the app version is same as the tag 2024-01-27 10:23:10 +01:00
Simon Vieille dbc480a1a7 update changelog
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-01-27 10:15:10 +01:00
Simon Vieille cf2e28960b Merge pull request 'add labels on buttons (fix #311)' (#312) from feature/issue311-btnlabel into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #312
2024-01-26 23:16:03 +01:00
Simon Vieille 4448412843 add labels on buttons (fix #311)
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
2024-01-26 23:09:55 +01:00
Simon Vieille 25e70f276f Merge pull request 'fix appinfo version' (#308) from develop into master
All checks were successful
ci/woodpecker/tag/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #308
2024-01-16 20:40:28 +01:00
Simon Vieille c5e126667d
fix appinfo version
All checks were successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-01-16 20:39:44 +01:00
Simon Vieille d06b6b9e31 Merge pull request 'release 3.11.3' (#307) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #307
2024-01-16 20:14:53 +01:00
Simon Vieille 197a6dc413
update changelog
All checks were successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2024-01-16 20:13:14 +01:00
Simon Vieille fbe686c526 Merge pull request '[Bug] Menu-Icon in Decks broken - caused of side_menu #302' (#306) from bugfix/issue302 into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #306
2024-01-16 20:11:14 +01:00
Simon Vieille b20f5a471a
fix #302: remove "!important" on the rule that moves elements
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2024-01-15 21:12:24 +01:00
Simon Vieille 5c218bff2a Merge pull request 'releave v3.11.2' (#300) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #300
2023-11-12 20:30:56 +01:00
Simon Vieille f76deeb416
add default translations (fix #298)
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-11-12 20:30:19 +01:00
Simon Vieille 93a4eccb41 Merge pull request 'Translated using Weblate (Slovak)' (#299) from translations into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #299
2023-11-12 20:29:01 +01:00
Simon Vieille f8458ed488
Translated using Weblate (Slovak)
Some checks failed
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline failed
Currently translated at 43.4% (40 of 92 strings)

Translation: Custom menu/Application
Translate-URL: https://translate.codeberg.org/projects/custom-menu/application/sk/
2023-11-12 19:27:51 +00:00
Simon Vieille b0385c172b Merge pull request 'release v3.11.1' (#297) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #297
2023-11-12 17:03:21 +01:00
Simon Vieille c35ecd7444
release v3.11.1
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-11-12 16:58:24 +01:00
Simon Vieille 2edb771273
release v3.11.1
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-11-12 16:58:09 +01:00
Simon Vieille 48a2224e3d Merge pull request 'translations' (#296) from translations into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #296
2023-11-12 16:56:07 +01:00
Simon Vieille a05ef44ede Merge pull request 'add width to .side-menu-categories for side menu with categories display' (#295) from bugfix/issue294 into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #295
2023-11-12 16:54:58 +01:00
Simon Vieille f6d6e263b6
add width to .side-menu-categories for side menu with categories display
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-11-12 16:49:24 +01:00
igorfreire b2e0898d5b
Translated using Weblate (Portuguese (Brazil))
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
Currently translated at 100.0% (92 of 92 strings)

Translation: Custom menu/Application
Translate-URL: https://translate.codeberg.org/projects/custom-menu/application/pt_BR/
2023-11-11 20:13:37 +00:00
igorfreire 4af28c303b
Translated using Weblate (Portuguese (Brazil))
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Currently translated at 100.0% (92 of 92 strings)

Translation: Custom menu/Application
Translate-URL: https://translate.codeberg.org/projects/custom-menu/application/pt_BR/
2023-11-07 15:15:14 +00:00
Simon Vieille 04ac7e5ed1 Merge pull request 'update changelogs' (#293) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #293
2023-11-05 18:46:46 +01:00
Simon Vieille e199019d3d
update changelogs
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-11-05 18:46:31 +01:00
Simon Vieille 67743485cb Merge pull request 'release v3.11.0' (#292) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #292
2023-11-05 18:45:25 +01:00
Simon Vieille a18732b043 Merge branch 'develop' into translations
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-11-05 18:40:51 +01:00
Simon Vieille 9ed3e93bf4
release v3.11.0
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-11-05 18:37:51 +01:00
Simon Vieille 320f4cca3c Merge pull request 'To add option to filter left menu (fix #282)' (#291) from feature/issue282 into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #291
2023-11-05 18:34:47 +01:00
Simon Vieille b1ae62ba2a fix view of side menu headers with search
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-11-05 18:30:24 +01:00
Simon Vieille 5d91b44c20
add translations
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-11-05 16:04:44 +01:00
Simon Vieille 3ec823c856
add search component 2023-11-05 16:04:33 +01:00
Simon Vieille c9bae926f1 Merge pull request 'Parameter option not located at the same position menu button is (fix #283)' (#290) from bugfix/issue283 into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #290
2023-11-05 14:59:49 +01:00
Simon Vieille 7b1d31d1db
fix ci
Some checks are pending
ci/woodpecker/manual/woodpecker Pipeline is running
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-11-04 13:39:32 +01:00
Simon Vieille c5cac45f7e
fix ci
Some checks failed
ci/woodpecker/manual/woodpecker Pipeline failed
2023-11-04 13:38:28 +01:00
Simon Vieille 9a35734657
remove label of the link to personal settings (fix #283)
All checks were successful
ci/woodpecker/manual/woodpecker Pipeline was successful
2023-11-04 13:33:34 +01:00
Simon Vieille 3144f56b80
Added translation using Weblate (Slovak) 2023-10-16 08:16:34 +00:00
Simon Vieille 0ce318d6ec Merge pull request 'fix ci syntax' (#281) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #281
2023-09-29 16:48:36 +02:00
Simon Vieille 6248e8ccef Merge pull request 'fix ci syntax' (#280) from bugfix/ci into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/manual/woodpecker Pipeline was successful
Reviewed-on: #280
2023-09-29 16:48:06 +02:00
Simon Vieille 648bdeae04
fix ci syntax
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-09-29 16:46:56 +02:00
mschmidm d6a8dee1b2
Translated using Weblate (German)
Currently translated at 100.0% (92 of 92 strings)

Translation: Custom menu/Application
Translate-URL: https://translate.codeberg.org/projects/custom-menu/application/de/
2023-09-19 12:53:08 +00:00
Simon Vieille c26c5f26df Merge pull request 'release v3.10.3' (#276) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #276
2023-07-24 21:35:58 +02:00
Simon Vieille 1e6d241e5c
release v3.10.3
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-07-24 21:32:13 +02:00
Simon Vieille eeac15d578 Merge pull request 'fix #274' (#275) from feature/issue274 into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #275
2023-07-24 21:30:58 +02:00
Simon Vieille 89986cd604
update changelog
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-07-24 21:12:43 +02:00
Simon Vieille 3c1bd99319 update @nexcloud/* packages
change the way to load nextcloud components (NcActionLink/NcActions)

fix #274
2023-07-24 21:10:30 +02:00
Simon Vieille 6ce7d3223f Merge pull request 'release v3.10.2' (#272) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #272
2023-07-15 15:22:53 +02:00
Simon Vieille 33bb8646f4
release v3.10.2
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-07-15 15:22:09 +02:00
Simon Vieille 6eb977dad5 Merge pull request 'release v3.10.1' (#271) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #271
2023-07-15 15:03:26 +02:00
Simon Vieille e571be5fcf
release v3.10.1
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-07-15 14:58:43 +02:00
Simon Vieille 432e0f175f Merge pull request 'use php7 syntax' (#270) from feature/issue269 into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #270
2023-07-15 14:57:47 +02:00
Simon Vieille 022e8af6a2
update changelog
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-07-15 14:53:04 +02:00
Simon Vieille b8a5a82fd2
fix #269: use php7 syntax
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-07-15 14:50:15 +02:00
Simon Vieille 5f307cd046 Merge pull request 'release v3.10.0' (#268) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #268
2023-07-13 22:30:27 +02:00
Simon Vieille 8cd54eea19
release v3.10.0
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-07-13 22:26:34 +02:00
Simon Vieille 072707772d
update changelog
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-07-11 17:48:45 +02:00
Simon Vieille 0b3d2d9781 Merge pull request 'Remove deprecated method' (#267) from vitormattos/side_menu:feature/remove-deprecated-method into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #267
2023-07-11 17:46:38 +02:00
Vitor Mattos 04af12691c
Remove deprecated method
All checks were successful
ci/woodpecker/pr/woodpecker Pipeline was successful
Fix the follow error:

```
Message: Call to undefined method OC_App::getNavigation() in file '/var/www/html/apps-extra/side_menu/lib/Service/AppRepository.php' line 54
```

Reference: 167763d312

Signed-off-by: Vitor Mattos <vitor@php.rio>
2023-07-10 15:15:41 -03:00
Simon Vieille d2421f90bf Merge pull request 'release v3.9.1' (#266) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #266
2023-06-29 13:04:13 +02:00
Simon Vieille 0ea5a579a6
release v3.9.1
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-06-29 12:54:49 +02:00
Simon Vieille b9c3543c61 Merge pull request 'fix top position of always opened menu' (#264) from fix/issue262 into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #264
2023-06-29 12:53:02 +02:00
Simon Vieille 49979c858b
fix top position of always opened menu
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
fix dashboard menu when using always opened menu
2023-06-23 15:37:03 +02:00
Simon Vieille b16da36507 Merge pull request 'release v3.9.0' (#263) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #263
2023-06-23 12:33:54 +02:00
Simon Vieille def1ec4aa7
release v3.8.0
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-06-23 12:28:02 +02:00
Simon Vieille 40441a61ae
update changelog 2023-06-23 12:27:34 +02:00
Simon Vieille ea3820904c Merge pull request 'fix app redirect' (#261) from fix/issue257 into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #261
2023-06-17 15:21:54 +02:00
Simon Vieille dad7d8a964 Merge pull request 'add compatibility with nextcloud 27' (#260) from feature/issue256 into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #260
2023-06-17 15:17:24 +02:00
Simon Vieille 32f1869828
add compatibility with nextcloud 27
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-06-17 13:04:25 +02:00
Simon Vieille dd9fbcb654
fix default menu redirect (#257)
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-06-17 12:59:45 +02:00
Simon Vieille a96e6e3c70
fix default menu redirect (#257)
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-06-17 12:53:10 +02:00
Simon Vieille 29f0ead9cc Merge pull request 'release v3.8.0' (#255) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #255
2023-05-25 13:49:08 +02:00
Simon Vieille a5effe1fd3
release v3.8.0
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-05-25 13:39:45 +02:00
Simon Vieille 13b6ae23c2
ci: remove check-code-quality 2023-05-25 13:39:21 +02:00
Simon Vieille 79ddb5fa47 Merge pull request 'add option to show hovered label only on top menu' (#254) from feature/issue253 into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #254
2023-05-23 20:13:11 +02:00
Simon Vieille 1454dbba4d
update changelog
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-05-23 19:56:35 +02:00
Simon Vieille ee8ca7134c
refactoring choices
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-05-23 14:17:45 +02:00
Simon Vieille 93fef37033
add option to show hovered label only on top menu
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
2023-05-23 14:09:55 +02:00
Simon Vieille e1567b0689 Merge pull request 'v3.7.4' (#249) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #249
2023-04-16 18:05:46 +02:00
Simon Vieille 135f27cc32
release v3.7.4
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-04-16 18:05:25 +02:00
Simon Vieille c5e1a8d37b Merge pull request 'fix Integrity failed' (#248) from fix/issue247 into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #248
2023-04-16 18:03:04 +02:00
Simon Vieille 27f8888a90
update signature generation
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
2023-04-16 14:24:17 +02:00
Simon Vieille 6583883e2d
update signature generation
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-04-16 14:17:09 +02:00
Simon Vieille 0a556670b1
update signature generation
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-04-16 14:16:18 +02:00
Simon Vieille aa139bc671 Merge pull request 'release v3.7.3' (#246) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #246
2023-04-14 21:13:10 +02:00
Simon Vieille b9264d7e05
release v3.7.3
Some checks failed
ci/woodpecker/pr/woodpecker Pipeline failed
ci/woodpecker/push/woodpecker Pipeline failed
2023-04-14 21:12:35 +02:00
Simon Vieille 88c14b6aec Merge pull request 'use app href for redirection' (#245) from fix/issue244 into develop
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Reviewed-on: #245
2023-04-14 21:11:29 +02:00
Simon Vieille 2be53211b8 Merge pull request 'add signature generation' (#243) from feature/issue240 into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #243
2023-04-14 21:00:37 +02:00
Simon Vieille dca727c120
use app href for redirection (fix #244)
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
2023-04-14 20:58:56 +02:00
Simon Vieille 361badff6b
update changelog
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-03-31 17:06:30 +02:00
Simon Vieille 917288eb54
add signature generation
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
ci/woodpecker/pr/woodpecker Pipeline was successful
rename steps
2023-03-31 14:07:19 +02:00
Simon Vieille b133ba3a97 Merge pull request 'release of v3.7.2' (#238) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #238
2023-03-27 18:47:15 +02:00
Simon Vieille 2ff4fee927 Merge pull request 'changelog' (#237) from changelog into develop
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
ci/woodpecker/pr/woodpecker Pipeline was successful
Reviewed-on: #237
2023-03-27 18:36:34 +02:00
Simon Vieille b65c0c650a
update app version
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-03-27 18:35:59 +02:00
Simon Vieille 22335700ce Merge pull request 'update pipeline conditions allowing fix/*' (#234) from feature/ci into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #234
2023-03-27 18:35:12 +02:00
Simon Vieille 7ab2816bd9
update changelog
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-03-27 18:34:50 +02:00
Simon Vieille 396d3cfbc5 Merge pull request 'load configuration and then retrieve apps in default side menu display' (#235) from feature/issue233 into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #235
2023-03-27 18:34:21 +02:00
Simon Vieille 66e4d2989a
update pipeline conditions allowing fix/*
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-03-23 22:22:36 +01:00
Simon Vieille 9ccd11b6dc
load configuration and then retrieve apps in default side menu display
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
fix #233
2023-03-23 22:17:05 +01:00
Simon Vieille aaf2bb55db Merge pull request 'release v3.7.1' (#232) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #232
2023-03-19 10:00:00 +01:00
Simon Vieille a7ec95da7c Merge pull request 'Fix build process' (#231) from fix/issue230 into develop
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
ci/woodpecker/pr/woodpecker Pipeline was successful
Reviewed-on: #231
2023-03-19 09:58:11 +01:00
Simon Vieille 42043c5390
update changelog
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
2023-03-19 09:52:37 +01:00
Simon Vieille 019f79d45f
update ci conf 2023-03-19 09:45:51 +01:00
Simon Vieille 3a80215657
update ci conf 2023-03-19 09:35:59 +01:00
Simon Vieille 7d0b55243e
add debug version 2023-03-19 09:34:52 +01:00
Simon Vieille 097ccc9dc9
update ci conf 2023-03-19 09:34:23 +01:00
Simon Vieille 7227f59dab
add tag on event restriction for build steps 2023-03-17 17:25:22 +01:00
Simon Vieille 3a51e6ecd5
add debug version 2023-03-17 17:22:59 +01:00
Simon Vieille 112e669723
reduce release task as packaging (ci)
move translation build in specific step (ci)
2023-03-17 17:22:35 +01:00
Simon Vieille fc5a6a4c64
fix typo in ci configuration 2023-03-17 17:13:31 +01:00
Simon Vieille 02afac5267
add debug version 2023-03-17 17:11:16 +01:00
Simon Vieille 1eb392834c
use specifics images in ci 2023-03-17 17:10:56 +01:00
Codeberg Translate 08b78a2c64
Merge branch 'origin/translations' into Weblate.
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-03-16 06:11:25 +00:00
Simon Vieille 8f86cbe188
Added translation using Weblate (Portuguese (Brazil)) 2023-03-16 06:11:24 +00:00
Simon Vieille 749f25a231 Merge pull request 'add badge of downloads' (#228) from develop into master
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline failed
Reviewed-on: #228
2023-03-11 00:30:39 +01:00
Simon Vieille 5df389dd42
add badge of downloads
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-03-11 00:29:32 +01:00
Simon Vieille 04026f5c75 Merge pull request 'release v3.7.0' (#227) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #227
2023-03-09 16:57:33 +01:00
Simon Vieille dbd0de7679 release v3.7.0
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-03-09 16:46:03 +01:00
Simon Vieille 07a1d356de Merge pull request 'set the app compatible with nextcloud 26' (#225) from feature/nc26 into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #225
2023-03-09 15:55:35 +01:00
Simon Vieille d3359337f9 Merge pull request 'translations' (#226) from translations into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #226
2023-03-09 15:54:50 +01:00
Simon Vieille 4b9378f923
set the app compatible with nextcloud 26
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-03-09 14:05:30 +01:00
AHOHNMYC 117e33692b
Translated using Weblate (Russian)
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
Currently translated at 84.7% (78 of 92 strings)

Translation: Custom menu/Application
Translate-URL: https://translate.codeberg.org/projects/custom-menu/application/ru/
2023-03-06 19:08:20 +00:00
Simon Vieille 48b2b30406 Merge pull request 'update issue template' (#223) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #223
2023-02-20 14:06:23 +01:00
Simon Vieille 18e8f42dc3
update issue template
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-02-20 13:50:53 +01:00
Simon Vieille 22e5445330 Merge pull request 'release v3.6.0' (#221) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
Reviewed-on: #221
2023-02-17 11:53:27 +01:00
Simon Vieille 01669f83c2
release v3.6.0
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-02-17 11:46:31 +01:00
Simon Vieille f1c33cc626
release v3.6.0
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-02-17 11:45:57 +01:00
Simon Vieille 87ff20aa19 Merge pull request 'add hidden apps compatible with default menu' (#220) from feature/issue219 into develop
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #220
2023-02-17 11:44:41 +01:00
Simon Vieille ce969b4061 Merge branch 'develop' into translations
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-02-17 10:54:42 +01:00
Simon Vieille ed4ed62fb6
update admin (hidden apps compatible with defaul)
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-02-17 10:51:39 +01:00
Simon Vieille 5a586c40a1
add hidden apps compatible with default menu (fix #219) 2023-02-17 10:51:11 +01:00
Simon Vieille 0544fd3765 Merge pull request 'doc' (#218) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #218
2023-02-12 16:56:39 +01:00
Simon Vieille b141d7ba7c
update readme
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
ci/woodpecker/pr/woodpecker Pipeline was successful
2023-02-12 16:56:22 +01:00
Simon Vieille 2635dd89ca Merge pull request 'Doc' (#217) from develop into master
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Reviewed-on: #217
2023-02-12 00:34:56 +01:00
Simon Vieille 0ee10e08e9
update readme
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
gitea-sonarqube-bot ERROR
2023-02-12 00:31:47 +01:00
Simon Vieille 1093042a17
update readme
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-02-12 00:29:18 +01:00
Simon Vieille 9566d32a89
update readme
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-02-12 00:28:51 +01:00
Simon Vieille 1965aedc43
release v3.5.1
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
2023-01-07 10:22:56 +01:00
41 changed files with 1066 additions and 332 deletions

View file

@ -26,7 +26,7 @@ body:
id: configuration id: configuration
attributes: attributes:
label: Configuration label: Configuration
description: Export the configuration using the admin page and copy/paste here. description: Export the configuration using the admin page and copy/paste here ([documentation](https://deblan.gitnet.page/side_menu_doc/tips/#export-the-configuration)).
value: | value: |
``` ```
{ {

View file

@ -0,0 +1,30 @@
name: New question
about: Use this template when you don't know how to do something
title: "[Question] "
labels:
- question
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill information.
- type: textarea
id: environment
attributes:
label: Environment
value: |
* Custom menu version:
* Nextcloud version:
* PHP version:
* Web server (Nginx, Apache2):
* Web browser and version (Firefox 80, Google Chrome 74, etc):
validations:
required: true
- type: textarea
id: question
attributes:
label: Question
validations:
required: true

View file

@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: Documentation
url: https://deblan.gitnet.page/side_menu_doc/
about: Official documentation web site
- name: Ask a question in our Matrix room
about: If you prefer a chat-like conversation or in need for quick help, this might be an alternative to opening an issue.
url: https://matrix.to/#/#custommenu:neutralnetwork.org

View file

@ -1,64 +0,0 @@
pipeline:
dependencies:
image: gitnet.fr/deblan/devenv
commands:
- make dep
when:
event: [tag, push, pull_request]
branch: [master, develop, feature/*, translations]
osv_detector:
image: gitnet.fr/deblan/docker-osv-detector:v0.9
commands:
- osv-detector package-lock.json
failure: ignore
build:
image: gitnet.fr/deblan/devenv
commands:
- make build
when:
branch: [master, develop, feature/*, translations]
event: [push, pull_request]
code_quality:
image: sonarsource/sonar-scanner-cli
secrets: [sonar_token, sonar_host, sonar_project]
commands:
- sonar-scanner
-Dsonar.projectKey=$SONAR_PROJECT
-Dsonar.sources=.
-Dsonar.host.url=$SONAR_HOST
-Dsonar.pullrequest.key=$CI_COMMIT_PULL_REQUEST
-Dsonar.pullrequest.branch=$CI_COMMIT_SOURCE_BRANCH
-Dsonar.pullrequest.base=$CI_COMMIT_TARGET_BRANCH
failure: ignore
when:
event: [pull_request]
package:
image: gitnet.fr/deblan/devenv
volumes:
- /var/www/html/artifacts:/var/www/html/artifacts
secrets: [app_certificate]
commands:
- mkdir -p "$HOME/.nextcloud/certificates"
- echo "$APP_CERTIFICATE" > "$HOME/.nextcloud/certificates/side_menu.key"
- export VERSION=$(grep "<version>" appinfo/info.xml | grep -o "[0-9]*\.[0-9]*\.[0-9]*" --color=never)
- export RELEASE_DIRECTORY="/var/www/html/artifacts/deblan/side_menu"
- make release
when:
event: [tag]
release:
image: plugins/gitea-release
volumes:
- /var/www/html/artifacts:/var/www/html/artifacts
settings:
api_key:
from_secret: gitnet_api_key
base_url: https://gitnet.fr
note: ${CI_COMMIT_MESSAGE}
files: /var/www/html/artifacts/deblan/side_menu/${CI_COMMIT_TAG/v//}/*
when:
event: [tag]

28
.woodpecker/.build.yml Normal file
View file

@ -0,0 +1,28 @@
variables:
volumes: &volumes
- /data/${CI_REPO}:/builds
when:
event: [tag, push, pull_request, manual]
branch: [master, develop, feature/*, fix/*, bugfix/*, translations]
steps:
"Install dependencies":
image: node:16
pull: true
commands:
- npm i
"Build JS":
image: node:16
commands:
- npm run build
"Build translations":
image: deblan/php:8.3
commands:
- php bin/generate_l10n.php
"Build cache":
image: gitnet.fr/deblan/woodpecker-cache
volumes: *volumes

61
.woodpecker/.publish.yml Normal file
View file

@ -0,0 +1,61 @@
variables:
volumes: &volumes
- /data/${CI_REPO}:/builds
- /var/www/html/artifacts:/var/www/html/artifacts
depends_on:
- build
when:
event: [tag]
steps:
"Verify tag and app version":
image: alpine
commands:
- TAG=${CI_COMMIT_TAG/v//}
- grep "<version>$TAG</version>" appinfo/info.xml
"Create signature":
image: nextcloud:25
secrets: [app_certificate, app_public_certificate]
volumes: *volumes
environment:
SQLITE_DATABASE: /var/www/data/data.db
NEXTCLOUD_ADMIN_USER: admin
NEXTCLOUD_ADMIN_PASSWORD: admin
commands:
- cd "/builds/$CI_COMMIT_SHA"
- echo "$APP_CERTIFICATE" > "/tmp/side_menu.key"
- echo "$APP_PUBLIC_CERTIFICATE" > "/tmp/side_menu.crt"
- mkdir /tmp/app
- cp -r README.md CHANGELOG.md appinfo css lib img l10n js src templates screenshots vendor /tmp/app
- /usr/src/nextcloud/occ integrity:sign-app
--privateKey=/tmp/side_menu.key
--certificate=/tmp/side_menu.crt
--path=/tmp/app
- mv /tmp/app/appinfo/signature.json appinfo/
"Create package":
image: deblan/php:8.3
volumes: *volumes
secrets: [app_certificate]
commands:
- cd "/builds/$CI_COMMIT_SHA"
- apt-get update
- apt-get install -y zip make
- mkdir -p "$HOME/.nextcloud/certificates"
- echo "$APP_CERTIFICATE" > "$HOME/.nextcloud/certificates/side_menu.key"
- export VERSION=$(grep "<version>" appinfo/info.xml | grep -o "[0-9]*\.[0-9]*\.[0-9]*" --color=never)
- export RELEASE_DIRECTORY="/var/www/html/artifacts/deblan/side_menu"
- make release
"Push release":
image: plugins/gitea-release
volumes: *volumes
settings:
api_key:
from_secret: gitnet_api_key
base_url: https://gitnet.fr
note: ${CI_COMMIT_MESSAGE}
files: /var/www/html/artifacts/deblan/side_menu/${CI_COMMIT_TAG/v//}/*

17
.woodpecker/.security.yml Normal file
View file

@ -0,0 +1,17 @@
variables:
volumes: &volumes
- /data/${CI_REPO}:/builds
depends_on:
- build
skip_clone: true
steps:
"Check dependencies":
image: gitnet.fr/deblan/osv-detector:v0.10
volumes: *volumes
commands:
- cd "/builds/$CI_COMMIT_SHA"
- osv-detector package-lock.json
failure: ignore

View file

@ -1,5 +1,119 @@
## [Unreleased] ## [Unreleased]
## 3.12.0
### Added
* add compatibility with NC29
## 3.11.8
### Fixed
* move the logo inside #nextcloud element (fix #278 #239) [NC26]
## 3.11.7
### Added
* update translations
* update ci steps names
### Fixed
* add accessibility to open and close buttons (#311)
* fully apply Nextcloud AppMenu.vue updated (#326)
* add missing label on the 'save' button in personal settings (fix #318)
### Changed
* upgrade axios
* upgrade css-loader
## 3.11.6
### Fixed
* add --background-invert-if-bright in top menu (fix #326)
## 3.11.5
### Fixed
* add missing label on buttons for accessiblity (fix #311)
## 3.11.4
### Fixed
* add label on buttons for accessiblity (fix #311)
## 3.11.3
### Fixed
* fix menu icon in decks, collectives and other apps (#302)
## 3.11.2
### Fixed
* add default translations for Slovak - fix #298
## 3.11.1
### Added
* add Portuguese (Brazil) translations - Thanks to igorfreire
### Fixed
* add width to .side-menu-categories for side menu with categories display - fix #294
## 3.11.0
### Added
* add a search component in menus - fix #282
### Fixed
* remove the label of the link to personal settings - fix #283
## 3.10.3
### Fixed
* change the way to load nextcloud components (NcActionLink/NcActions) - fix #274
* update @nexcloud/* packages
## 3.10.2
### Fixed
* add missing properties
## 3.10.1
### Fixed
* fix #269: use php7 syntax
## 3.10.0
### Added
* add compatibility with NC28
### Fixed
* fix NC28 error: remove deprecated method `OC_App::getNavigation()`
## 3.9.1
### Fixed
* fix fixed menu on dashboard (#262)
## 3.9.0
### Added
* add compatibility with NC27
### Fixed
* fix app redirect (#261)
## 3.8.0
### Added
* add option to show hovered label only on top menu (fix #253)
## 3.7.4
### Fixed
* fix Integrity failed (#247)
## 3.7.3
### Fixed
* fix #244: use app href for redirection
### Added
* add signature on build
## 3.7.2
### Added
* update pipeline conditions allowing `fix/*`
### Fixed
* fix #233: load configuration and then retrieve apps in default side menu display
## 3.7.1
### Fixed
* fix build process (#230)
## 3.7.0
### Added
* add translations (thanks to AHOHNMYC)
* add compatibility with NC26
## 3.6.0
### Added
* add hidden apps compatible with default menu (#219)
## 3.5.2 ## 3.5.2
### Fixed ### Fixed
* add check if menu exists before adding event listeners (#210) * add check if menu exists before adding event listeners (#210)

View file

@ -9,7 +9,7 @@ dep:
npm link @nextcloud/vue || sudo npm link @nextcloud/vue npm link @nextcloud/vue || sudo npm link @nextcloud/vue
.ONESHELL: .ONESHELL:
release: build translations release:
if [ -z "$$VERSION" ]; then if [ -z "$$VERSION" ]; then
echo "VERSION required" echo "VERSION required"
exit 1 exit 1

View file

@ -3,6 +3,7 @@
[![Build Status](https://ci.gitnet.fr/api/badges/deblan/side_menu/status.svg)](https://ci.gitnet.fr/deblan/side_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/) [![Translations](https://translate.codeberg.org/widgets/custom-menu/-/application/svg-badge.svg)](https://translate.codeberg.org/engage/custom-menu/)
![Downloads](https://img.shields.io/badge/dynamic/json?color=brightgreen&label=downloads&query=%24.K_downloads&suffix=K&url=https%3A%2F%2Fapi-side-menu.deblan.org%2Fdownloads.php)
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.
@ -18,6 +19,8 @@ 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)
## [📘 Read the documentation](https://deblan.gitnet.page/side_menu_doc/)
Requirements Requirements
------------ ------------

View file

@ -32,12 +32,12 @@ 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.5.2</version> <version>3.11.8</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>
<documentation> <documentation>
<admin>https://gitnet.fr/deblan/side_menu/src/branch/master/README.md</admin> <admin>https://deblan.gitnet.page/side_menu_doc/</admin>
<developer>https://gitnet.fr/deblan/side_menu/src/branch/master/README.md</developer> <developer>https://gitnet.fr/deblan/side_menu/src/branch/master/README.md</developer>
</documentation> </documentation>
<category>customization</category> <category>customization</category>
@ -54,7 +54,7 @@ In case of downtime, you can download **Custom Menu** from [here](https://kim.de
<screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc25_big_menu.png</screenshot> <screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc25_big_menu.png</screenshot>
<screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc25_default_menu.png</screenshot> <screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc25_default_menu.png</screenshot>
<dependencies> <dependencies>
<nextcloud min-version="25" max-version="25"/> <nextcloud min-version="25" max-version="29"/>
<php min-version="7.4"/> <php min-version="7.4"/>
</dependencies> </dependencies>
<settings> <settings>

View file

@ -47,7 +47,7 @@
margin-top: 2px; margin-top: 2px;
float: right; float: right;
line-height: 34px; line-height: 34px;
height: 28px; height: 42px;
display: none; display: none;
} }
@ -83,6 +83,12 @@
padding-left: 12px !important; padding-left: 12px !important;
margin-left: 5px !important; margin-left: 5px !important;
margin-left: 3px !important; margin-left: 3px !important;
overflow: hidden;
}
.side-menu-opener span {
position: relative;
left: 50px;
} }
.side-menu-opener:active, .side-menu-opener:focus { .side-menu-opener:active, .side-menu-opener:focus {
@ -155,7 +161,7 @@
} }
#side-menu.hide-opener .side-menu-logo { #side-menu.hide-opener .side-menu-logo {
margin-top: 20px; margin-top: 10px;
} }
#side-menu-loader { #side-menu-loader {
@ -201,7 +207,6 @@
max-height: calc(100vh - 55px); max-height: calc(100vh - 55px);
overflow: auto; overflow: auto;
position: relative; position: relative;
top: 5px;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
justify-content: center; justify-content: center;
@ -223,7 +228,7 @@
} }
.side-menu-loader svg { .side-menu-loader svg {
width: 38px; width: 45px;
margin: auto; margin: auto;
stroke: var(--side-menu-text-color, #fff); stroke: var(--side-menu-text-color, #fff);
} }
@ -239,14 +244,23 @@
left: 50px; left: 50px;
} }
.side-menu-always-displayed #header {
position: absolute !important;
}
.side-menu-always-displayed #side-menu { .side-menu-always-displayed #side-menu {
display: block; display: block;
} }
.side-menu-always-displayed .side-menu-apps-list { .side-menu-always-displayed .side-menu-apps-list {
height: 100vh;
top: 0;
overflow: hidden;
}
.side-menu-always-displayed .side-menu-apps-list--with-settings {
height: calc(100vh - 49px); height: calc(100vh - 49px);
top: 49px; top: 49px;
overflow: hidden;
} }
.side-menu-always-displayed .side-menu-apps-list:hover { .side-menu-always-displayed .side-menu-apps-list:hover {
@ -280,7 +294,7 @@
} }
.side-menu-always-displayed .app-navigation--close { .side-menu-always-displayed .app-navigation--close {
transform: translateX(calc(-100% + 50px)) !important; transform: translateX(calc(-100% + 50px));
} }
#side-menu.side-menu-with-categories { #side-menu.side-menu-with-categories {
@ -291,6 +305,7 @@
.side-menu-with-categories .side-menu-categories { .side-menu-with-categories .side-menu-categories {
display: block; display: block;
padding: 0; padding: 0;
width: 100%;
} }
.side-menu-with-categories .side-menu-category { .side-menu-with-categories .side-menu-category {
@ -309,12 +324,35 @@
visibility: visible; visibility: visible;
} }
.side-menu-search {
float: right;
}
.side-menu-search input {
background: none;
border: 0;
border-radius: 0;
color: var(--side-menu-text-color);
}
.side-menu-search input::placeholder {
color: var(--side-menu-text-color);
}
.side-menu-always-displayed .side-menu-search {
display: none;
}
@media screen and (max-width: 1024px) { @media screen and (max-width: 1024px) {
#side-menu.side-menu-big { #side-menu.side-menu-big {
max-width: 290px; max-width: 290px;
height: 100vh; height: 100vh;
} }
#side-menu.hide-opener.side-menu-big .side-menu-search {
float: none;
}
.side-menu-categories { .side-menu-categories {
display: block; display: block;
padding: 0; padding: 0;

View file

@ -74,33 +74,37 @@ class AppController extends Controller
$inTopMenuApps = in_array($app['id'], $topMenuApps); $inTopMenuApps = in_array($app['id'], $topMenuApps);
$inHiddenApps = in_array($app['id'], $hiddenApps); $inHiddenApps = in_array($app['id'], $hiddenApps);
if (!$inTopMenuApps || $inHiddenApps) { if (!$inTopMenuApps && $inHiddenApps) {
continue; continue;
} }
return $this->redirectToApp($app['id']); return $this->redirectToApp($app, true);
} }
return $this->redirectToApp('files'); return $this->redirectToApp('files');
} }
protected function redirectToApp($appId): RedirectResponse protected function redirectToApp($app, bool $isHref = false): RedirectResponse
{ {
$isIgnoreFrontController = true === OC::$server->getConfig()->getSystemValue( if (!$isHref) {
'htaccess.IgnoreFrontController', $isIgnoreFrontController = true === OC::$server->getConfig()->getSystemValue(
false 'htaccess.IgnoreFrontController',
); false
);
$isFrontControllerActive = 'true' === getenv('front_controller_active'); $isFrontControllerActive = 'true' === getenv('front_controller_active');
if ($isIgnoreFrontController || $isFrontControllerActive) { if ($isIgnoreFrontController || $isFrontControllerActive) {
$path = '/apps/%s/'; $path = '/apps/%s/';
} else {
$path = '/index.php/apps/%s/';
}
$url = $this->urlGenerator->getAbsoluteURL(sprintf($path, $app));
} else { } else {
$path = '/index.php/apps/%s/'; $url = $app['href'];
} }
$url = $this->urlGenerator->getAbsoluteURL(sprintf($path, $appId));
return new RedirectResponse($url); return new RedirectResponse($url);
} }
} }

View file

@ -171,7 +171,7 @@ class JsController extends Controller
'avatar' => $avatar, 'avatar' => $avatar,
'top-menu-apps' => $topMenuApps, 'top-menu-apps' => $topMenuApps,
'top-side-menu-apps' => $topSideMenuApps, 'top-side-menu-apps' => $topSideMenuApps,
'top-menu-mouse-over-hidden-label' => $this->config->getAppValueBool( 'top-menu-mouse-over-hidden-label' => $this->config->getAppValueInt(
'top-menu-mouse-over-hidden-label', 'top-menu-mouse-over-hidden-label',
'0' '0'
), ),

View file

@ -3,6 +3,7 @@
namespace OCA\SideMenu\Service; namespace OCA\SideMenu\Service;
use OC\User\User; use OC\User\User;
use OCP\INavigationManager;
use OCP\L10N\IFactory; use OCP\L10N\IFactory;
/** /**
@ -32,8 +33,14 @@ class AppRepository
*/ */
protected $categoryRepository; protected $categoryRepository;
/**
* @var INavigationManager
*/
protected $navigationManager;
public function __construct( public function __construct(
\OC_App $ocApp, \OC_App $ocApp,
INavigationManager $navigationManager,
IFactory $l10nFactory, IFactory $l10nFactory,
ConfigProxy $config, ConfigProxy $config,
CategoryRepository $categoryRepository CategoryRepository $categoryRepository
@ -41,6 +48,7 @@ class AppRepository
$this->ocApp = $ocApp; $this->ocApp = $ocApp;
$this->l10nFactory = $l10nFactory; $this->l10nFactory = $l10nFactory;
$this->config = $config; $this->config = $config;
$this->navigationManager = $navigationManager;
$this->categoryRepository = $categoryRepository; $this->categoryRepository = $categoryRepository;
} }
@ -51,7 +59,7 @@ class AppRepository
*/ */
public function getVisibleApps() public function getVisibleApps()
{ {
$navigation = $this->ocApp->getNavigation(); $navigation = $this->navigationManager->getAll();
$appCategoriesCustom = $this->config->getAppValueArray('apps-categories-custom', '[]'); $appCategoriesCustom = $this->config->getAppValueArray('apps-categories-custom', '[]');
$categories = $this->categoryRepository->getOrderedCategories(); $categories = $this->categoryRepository->getOrderedCategories();
$apps = $this->ocApp->listAllApps(); $apps = $this->ocApp->listAllApps();

View file

@ -11,7 +11,7 @@
"stylelint:fix": "./node_modules/.bin/stylelint src --fix" "stylelint:fix": "./node_modules/.bin/stylelint src --fix"
}, },
"dependencies": { "dependencies": {
"axios": "^0.24.0", "axios": "^1.6.7",
"trim": "^1.0.1", "trim": "^1.0.1",
"vue": "^2.6.11" "vue": "^2.6.11"
}, },
@ -25,15 +25,15 @@
"@babel/core": "^7.9.0", "@babel/core": "^7.9.0",
"@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-dynamic-import": "^7.8.3",
"@babel/preset-env": "^7.9.0", "@babel/preset-env": "^7.9.0",
"@nextcloud/axios": "^1.8.0", "@nextcloud/axios": "^2.3.0",
"@nextcloud/browserslist-config": "^1.0.0", "@nextcloud/browserslist-config": "^2.3.0",
"@nextcloud/eslint-config": "^8.1.2", "@nextcloud/eslint-config": "^8.1.2",
"@nextcloud/initial-state": "^2.0.0", "@nextcloud/initial-state": "^2.0.0",
"@nextcloud/l10n": "^1.6.0", "@nextcloud/l10n": "^2.1.0",
"@nextcloud/vue": "^7.0.0", "@nextcloud/vue": "^7.12.1",
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
"babel-loader": "^8.1.0", "babel-loader": "^8.1.0",
"css-loader": "^3.4.2", "css-loader": "^6.10.0",
"eslint": "^8.0.0", "eslint": "^8.0.0",
"eslint-config-standard": "^17.0.0", "eslint-config-standard": "^17.0.0",
"eslint-import-resolver-webpack": "^0.12.1", "eslint-import-resolver-webpack": "^0.12.1",

3
renovate.json Normal file
View file

@ -0,0 +1,3 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json"
}

View file

@ -21,17 +21,20 @@
--> -->
<template> <template>
<nav class="app-menu show"> <nav
class="app-menu show"
:aria-label="t('core', 'Applications menu')"
>
<ul <ul
class="app-menu-main" class="app-menu-main"
:class="{ 'app-menu-main__hidden-label': hiddenLabels }" :class="{ 'app-menu-main__hidden-label': hiddenLabels === 1, 'app-menu-main__show-hovered': hiddenLabels === 2 }"
v-if="apps !== null" v-if="apps !== null"
> >
<li v-for="app in mainAppList()" <li v-for="app in mainAppList()"
: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, 'app-menu-entry__hidden-label': hiddenLabels }" :class="{ 'app-menu-entry__active': app.active, 'app-menu-entry__hidden-label': hiddenLabels === 1, 'app-menu-main__show-hovered': hiddenLabels === 2 }"
:style="makeStyle(app)" :style="makeStyle(app)"
> >
<a :href="app.href" <a :href="app.href"
@ -69,7 +72,8 @@
<script> <script>
import { loadState } from '@nextcloud/initial-state' import { loadState } from '@nextcloud/initial-state'
import { NcActions, NcActionLink } from '@nextcloud/vue' import NcActions from '@nextcloud/vue/dist/Components/NcActions.js'
import NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'
export default { export default {
name: 'AppMenu', name: 'AppMenu',
@ -164,6 +168,7 @@ $header-icon-size: 20px;
flex-shrink: 1; flex-shrink: 1;
flex-wrap: wrap; flex-wrap: wrap;
} }
.app-menu-main { .app-menu-main {
display: flex; display: flex;
flex-wrap: nowrap; flex-wrap: nowrap;
@ -173,7 +178,6 @@ $header-icon-size: 20px;
height: 50px; height: 50px;
position: relative; position: relative;
display: flex; display: flex;
opacity: .7;
&.app-menu-entry__active { &.app-menu-entry__active {
opacity: 1; opacity: 1;
@ -213,7 +217,8 @@ $header-icon-size: 20px;
width: $header-icon-size; width: $header-icon-size;
height: $header-icon-size; height: $header-icon-size;
padding: calc((100% - $header-icon-size) / 2); padding: calc((100% - $header-icon-size) / 2);
filter: var(--primary-invert-if-bright); box-sizing: content-box;
filter: var(--background-image-invert-if-bright, var(--primary-invert-if-bright));
} }
.app-menu-entry--label { .app-menu-entry--label {
@ -222,8 +227,8 @@ $header-icon-size: 20px;
font-size: 12px; font-size: 12px;
color: var(--color-primary-text); color: var(--color-primary-text);
text-align: center; text-align: center;
bottom: -5px;
left: 50%; left: 50%;
top: 45%;
display: block; display: block;
min-width: 100%; min-width: 100%;
transform: translateX(-50%); transform: translateX(-50%);
@ -231,21 +236,21 @@ $header-icon-size: 20px;
width: 100%; width: 100%;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
letter-spacing: -0.5px;
} }
&:not(.app-menu-entry__hidden-label):hover, &:not(.app-menu-entry__hidden-label):not(.app-menu-entry__show-hovered):hover,
&:not(.app-menu-entry__hidden-label):focus-within { &:not(.app-menu-entry__hidden-label):not(.app-menu-entry__show-hovered):focus-within {
opacity: 1; opacity: 1;
.app-menu-entry--label { .app-menu-entry--label {
opacity: 1; opacity: 1;
font-weight: bold; font-weight: bolder;
font-size: 14px;
bottom: 0; bottom: 0;
width: auto; width: 100%;
overflow: visible; text-overflow: ellipsis;
overflow: hidden;
} }
} }
} }
// Show labels // Show labels
@ -256,12 +261,30 @@ $header-icon-size: 20px;
opacity: 1; opacity: 1;
} }
&:not(.app-menu-main__hidden-label):hover, &:not(.app-menu-main__hidden-label):not(.app-menu-main__show-hovered):hover,
&:not(.app-menu-main__hidden-label):focus-within, &:not(.app-menu-main__hidden-label):not(.app-menu-main__show-hovered):focus-within,
.app-menu-entry:not(.app-menu-entry__hidden-label):hover, .app-menu-entry:not(.app-menu-entry__hidden-label):hover,
.app-menu-entry:not(.app-menu-entry__hidden-label):focus { .app-menu-entry:not(.app-menu-entry__hidden-label):focus {
opacity: 1;
img { img {
margin-top: -6px; margin-top: -8px;
}
.app-menu-entry--label {
opacity: 1;
bottom: 0;
}
&::before, .app-menu-entry::before {
opacity: 0;
}
}
&.app-menu-main__show-hovered .app-menu-entry:hover,
&.app-menu-main__show-hovered .app-menu-entry:focus {
img {
margin-top: -8px;
} }
.app-menu-entry--label { .app-menu-entry--label {
@ -276,38 +299,42 @@ $header-icon-size: 20px;
} }
::v-deep .app-menu-more .button-vue--vue-tertiary { ::v-deep .app-menu-more .button-vue--vue-tertiary {
color: var(--color-primary-text);
opacity: .7; opacity: .7;
margin: 3px; margin: 3px;
filter: var(--background-image-invert-if-bright, var(--primary-invert-if-bright));
&:hover { &:not([aria-expanded="true"]) {
opacity: 1; color: var(--color-primary-element-text);
background-color: transparent !important;
&:hover {
opacity: 1;
background-color: transparent !important;
}
} }
&:focus-visible { &:focus-visible {
opacity: 1; opacity: 1;
background-color: transparent !important; outline: none !important;
border-radius: var(--border-radius); }
outline: none;
box-shadow: 0 0 0 2px var(--color-primary-text);
}
} }
.app-menu-popover-entry { .app-menu-popover-entry {
.app-icon { .app-icon {
position: relative; position: relative;
height: 44px; height: 44px;
width: 48px;
display: flex;
align-items: center;
justify-content: center;
filter: var(--background-invert-if-bright, var(--primary-invert-if-bright));
&.has-unread::after { &.has-unread::after {
background-color: var(--color-main-text); background-color: var(--color-main-text);
} }
img { img {
filter: var(--background-invert-if-bright);
width: $header-icon-size; width: $header-icon-size;
height: $header-icon-size; height: $header-icon-size;
padding: calc((50px - $header-icon-size) / 2);
} }
} }
} }
@ -316,7 +343,7 @@ $header-icon-size: 20px;
content: ""; content: "";
width: 8px; width: 8px;
height: 8px; height: 8px;
background-color: var(--color-primary-text); background-color: var(--color-primary-element-text);
border-radius: 50%; border-radius: 50%;
position: absolute; position: absolute;
display: block; display: block;

32
src/AppSearch.vue Normal file
View file

@ -0,0 +1,32 @@
<!--
@license GNU AGPL version 3 or any later version
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<template>
<div class="side-menu-search">
<input type="text" :value="value" :placeholder="t('side_menu', 'Search')" @input="$emit('input', $event.target.value)">
</div>
</template>
<script>
export default {
name: 'AppSearch',
props: {
value: {
required: true
},
},
}
</script>

View file

@ -15,11 +15,18 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<template> <template>
<button class="side-menu-opener side-menu-closer"></button> <button class="side-menu-opener side-menu-closer" :arial-label="label">
<span v-text="label"></span>
</button>
</template> </template>
<script> <script>
export default { export default {
name: 'CloserButton', name: 'CloserButton',
data() {
return {
label: t('side_menu', 'Close the menu'),
}
}
} }
</script> </script>

View file

@ -15,11 +15,18 @@ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<template> <template>
<button class="side-menu-opener"></button> <button class="side-menu-opener" :arial-label="label">
<span v-text="label"></span>
</button>
</template> </template>
<script> <script>
export default { export default {
name: 'OpenerButton', name: 'OpenerButton',
data() {
return {
label: t('side_menu', 'Toggle the menu'),
}
}
} }
</script> </script>

View file

@ -17,7 +17,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<template> <template>
<div class="side-menu-settings"> <div class="side-menu-settings">
<a v-bind:href="href"> <a v-bind:href="href">
<!--
{{ label }} {{ label }}
-->
<span class="avatardiv avatardiv-shown"> <span class="avatardiv avatardiv-shown">
<img v-bind:src="avatar" :alt="label"> <img v-bind:src="avatar" :alt="label">

View file

@ -16,21 +16,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
--> -->
<template> <template>
<div id="side-menu"> <div id="side-menu">
<div class="side-menu-header"> <div class="side-menu-header" v-if="settings || !openerHover || (!avatar && !alwaysDisplayed && logo) || avatar">
<SettingsButton <SettingsButton
v-if="settings" v-if="settings"
v-bind:href="settings.href" v-bind:href="settings.href"
v-bind:label="settings.name" v-bind:label="settings.name"
v-bind:avatar="settings.avatar" /> v-bind:avatar="settings.avatar" />
<AppSearch v-model:search="search" />
<OpenerButton /> <OpenerButton />
<Logo <Logo
v-if="!avatar && logo" v-bind:classes="{'side-menu-logo': true, 'avatardiv': false}" v-if="!avatar && !alwaysDisplayed && logo" v-bind:classes="{'side-menu-logo': true, 'avatardiv': false}"
v-bind:image="logo" v-bind:image="logo"
v-bind:link="logoLink" v-bind:link="logoLink"
/> />
<Logo <Logo
v-if="avatar" v-bind:classes="{'side-menu-logo': true, 'avatardiv': true}" v-if="avatar" v-bind:classes="{'side-menu-logo': true, 'avatardiv': true}"
v-bind:image="avatar" v-bind:image="avatar"
@ -38,9 +36,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/> />
</div> </div>
<ul class="side-menu-apps-list"> <ul class="side-menu-apps-list" :class="{'side-menu-apps-list--with-settings': !!settings}">
<SideMenuApp <SideMenuApp
v-for="(app, key) in apps" v-for="(app, key) in apps"
v-if="!hiddenApps.includes(app.id) && searchMatch(app.name)"
v-bind:classes="{'side-menu-app': true, 'active': app.active}" v-bind:classes="{'side-menu-app': true, 'active': app.active}"
v-bind:key="key" v-bind:key="key"
v-bind:icon="app.icon" v-bind:icon="app.icon"
@ -57,6 +56,7 @@ import axios from 'axios'
import OpenerButton from './OpenerButton' import OpenerButton from './OpenerButton'
import SettingsButton from './SettingsButton' import SettingsButton from './SettingsButton'
import SideMenuApp from './SideMenuApp' import SideMenuApp from './SideMenuApp'
import AppSearch from './AppSearch'
import Logo from './Logo' import Logo from './Logo'
import { loadState } from '@nextcloud/initial-state' import { loadState } from '@nextcloud/initial-state'
@ -67,6 +67,7 @@ export default {
OpenerButton, OpenerButton,
SideMenuApp, SideMenuApp,
Logo, Logo,
AppSearch,
}, },
data() { data() {
return { return {
@ -76,7 +77,11 @@ export default {
avatar: null, avatar: null,
forceLightIcon: false, forceLightIcon: false,
targetBlankApps: [], targetBlankApps: [],
hiddenApps: [],
settings: null, settings: null,
openerHover: false,
alwaysDisplayed: false,
search: '',
} }
}, },
methods: { methods: {
@ -91,7 +96,11 @@ export default {
for (let id in ncApps) { for (let id in ncApps) {
if (window.topMenuApps.includes(id) && !window.topSideMenuApps.includes(id)) { if (window.topMenuApps.includes(id) && !window.topSideMenuApps.includes(id)) {
continue; continue
}
if (this.hiddenApps.includes(id)) {
continue
} }
let app = ncApps[id] let app = ncApps[id]
@ -102,10 +111,10 @@ export default {
finalApps.sort((a, b) => { finalApps.sort((a, b) => {
if (a.order === null || b.order === null) { if (a.order === null || b.order === null) {
return a.name < b.name ? -1 : 1; return a.name < b.name ? -1 : 1
} }
return a.order < b.order ? -1 : 1; return a.order < b.order ? -1 : 1
}) })
this.apps = finalApps this.apps = finalApps
@ -116,23 +125,47 @@ export default {
}, },
retrieveConfig() { retrieveConfig() {
axios },
.get(OC.generateUrl('/apps/side_menu/js/config'))
.then((response) => {
const config = response.data
this.targetBlankApps = config['target-blank-apps'] hasSearchMatch(apps) {
this.forceLightIcon = config['force-light-icon'] if (this.search.trim() === '') {
this.avatar = config['avatar'] return true
this.logo = config['logo'] }
this.logoLink = config['logo-link']
this.settings = config['settings'] for (let key in apps) {
}) if (this.searchMatch(apps[key].name)) {
return true
}
}
return false
},
searchMatch(name) {
if (this.search.trim() === '') {
return true
}
return name.toLowerCase().includes(this.search.toLowerCase())
}, },
}, },
mounted() { mounted() {
this.retrieveConfig() axios
this.retrieveApps() .get(OC.generateUrl('/apps/side_menu/js/config'))
.then((response) => {
const config = response.data
this.targetBlankApps = config['target-blank-apps']
this.forceLightIcon = config['force-light-icon']
this.avatar = config['avatar']
this.logo = config['logo']
this.logoLink = config['logo-link']
this.settings = config['settings']
this.openerHover = config['opener-hover']
this.alwaysDisplayed = config['always-displayed']
this.hiddenApps = config['big-menu-hidden-apps']
this.retrieveApps()
})
} }
} }
</script> </script>

View file

@ -18,14 +18,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<div id="side-menu" class="side-menu-big"> <div id="side-menu" class="side-menu-big">
<div class="side-menu-header"> <div class="side-menu-header">
<CloserButton /> <CloserButton />
<SettingsButton <SettingsButton
v-if="settings" v-if="settings"
v-bind:href="settings.href" v-bind:href="settings.href"
v-bind:label="settings.name" v-bind:label="settings.name"
v-bind:avatar="settings.avatar" v-bind:avatar="settings.avatar"
/> />
<AppSearch v-model:search="search" />
<OpenerButton /> <OpenerButton />
</div> </div>
@ -33,12 +32,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<div class="side-menu-categories"> <div class="side-menu-categories">
<Loader v-if="!items.length" /> <Loader v-if="!items.length" />
<div class="side-menu-category" v-for="(category, key) in items" v-bind:key="key"> <div class="side-menu-category" v-for="(category, key) in items" v-if="hasSearchMatch(category.apps)" v-bind:key="key">
<h2 class="side-menu-category-title" v-if="category.name != ''" v-text="category.name"></h2> <h2 class="side-menu-category-title" v-if="category.name != ''" v-text="category.name"></h2>
<ul class="side-menu-apps-list"> <ul class="side-menu-apps-list">
<SideMenuBigApp <SideMenuBigApp
v-for="(app, appId) in category.apps" v-for="(app, appId) in category.apps"
v-if="searchMatch(app.name)"
v-bind:key="appId" v-bind:key="appId"
v-bind:classes="{'side-menu-app': true, 'active': activeApp === appId}" v-bind:classes="{'side-menu-app': true, 'active': activeApp === appId}"
v-bind:icon="app.icon" v-bind:icon="app.icon"
@ -59,6 +59,7 @@ import OpenerButton from './OpenerButton'
import CloserButton from './CloserButton' import CloserButton from './CloserButton'
import SettingsButton from './SettingsButton' import SettingsButton from './SettingsButton'
import Loader from './Loader' import Loader from './Loader'
import AppSearch from './AppSearch'
import SideMenuBigApp from './SideMenuBigApp' import SideMenuBigApp from './SideMenuBigApp'
import { loadState } from '@nextcloud/initial-state' import { loadState } from '@nextcloud/initial-state'
@ -70,6 +71,7 @@ export default {
CloserButton, CloserButton,
Loader, Loader,
SideMenuBigApp, SideMenuBigApp,
AppSearch,
}, },
data() { data() {
return { return {
@ -78,6 +80,7 @@ export default {
targetBlank: false, targetBlank: false,
targetBlankApps: [], targetBlankApps: [],
settings: null, settings: null,
search: '',
} }
}, },
methods: { methods: {
@ -120,6 +123,28 @@ export default {
this.settings = config['settings'] this.settings = config['settings']
}) })
}, },
hasSearchMatch(apps) {
if (this.search.trim() === '') {
return true
}
for (let key in apps) {
if (this.searchMatch(apps[key].name)) {
return true
}
}
return false
},
searchMatch(name) {
if (this.search.trim() === '') {
return true
}
return name.toLowerCase().includes(this.search.toLowerCase())
},
}, },
mounted() { mounted() {
this.retrieveConfig() this.retrieveConfig()

View file

@ -23,7 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
v-bind:label="settings.name" v-bind:label="settings.name"
v-bind:avatar="settings.avatar" v-bind:avatar="settings.avatar"
/> />
<AppSearch v-model:search="search" />
<OpenerButton /> <OpenerButton />
</div> </div>
@ -31,12 +31,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<div class="side-menu-categories"> <div class="side-menu-categories">
<Loader v-if="!items.length" /> <Loader v-if="!items.length" />
<div class="side-menu-category" v-for="(category, key) in items" v-bind:key="key"> <div class="side-menu-category" v-for="(category, key) in items" v-if="hasSearchMatch(category.apps)" v-bind:key="key">
<h2 class="side-menu-category-title" v-if="category.name != ''" v-text="category.name"></h2> <h2 class="side-menu-category-title" v-if="category.name != ''" v-text="category.name"></h2>
<ul class="side-menu-apps-list"> <ul class="side-menu-apps-list">
<SideMenuBigApp <SideMenuBigApp
v-for="(app, appId) in category.apps" v-for="(app, appId) in category.apps"
v-if="searchMatch(app.name)"
v-bind:key="appId" v-bind:key="appId"
v-bind:classes="{'side-menu-app': true, 'active': activeApp === appId}" v-bind:classes="{'side-menu-app': true, 'active': activeApp === appId}"
v-bind:icon="app.icon" v-bind:icon="app.icon"
@ -56,6 +57,7 @@ import axios from 'axios'
import OpenerButton from './OpenerButton' import OpenerButton from './OpenerButton'
import SettingsButton from './SettingsButton' import SettingsButton from './SettingsButton'
import Loader from './Loader' import Loader from './Loader'
import AppSearch from './AppSearch'
import SideMenuBigApp from './SideMenuBigApp' import SideMenuBigApp from './SideMenuBigApp'
import { loadState } from '@nextcloud/initial-state' import { loadState } from '@nextcloud/initial-state'
@ -66,6 +68,7 @@ export default {
OpenerButton, OpenerButton,
Loader, Loader,
SideMenuBigApp, SideMenuBigApp,
AppSearch,
}, },
data() { data() {
return { return {
@ -74,6 +77,7 @@ export default {
targetBlank: false, targetBlank: false,
targetBlankApps: [], targetBlankApps: [],
settings: null, settings: null,
search: '',
} }
}, },
methods: { methods: {
@ -116,6 +120,28 @@ export default {
this.settings = config['settings'] this.settings = config['settings']
}) })
}, },
hasSearchMatch(apps) {
if (this.search.trim() === '') {
return true
}
for (let key in apps) {
if (this.searchMatch(apps[key].name)) {
return true
}
}
return false
},
searchMatch(name) {
if (this.search.trim() === '') {
return true
}
return name.toLowerCase().includes(this.search.toLowerCase())
},
}, },
mounted() { mounted() {
this.retrieveConfig() this.retrieveConfig()

View file

@ -91,3 +91,6 @@
"Applications kept in the top menu but also shown in side menu": "Aplikace ponechané v horní nabídce ale také zobrazené v té boční" "Applications kept in the top menu but also shown in side menu": "Aplikace ponechané v horní nabídce ale také zobrazené v té boční"
"These applications must be selected in the previous option.": "Tyto aplikace je třeba vybrat v předchozí volbě." "These applications must be selected in the previous option.": "Tyto aplikace je třeba vybrat v předchozí volbě."
"Hide labels on mouse over": "Skrýt popisky při najetím ukazatele myši" "Hide labels on mouse over": "Skrýt popisky při najetím ukazatele myši"
"Except the hovered app": "Except the hovered app"
"Search": "Search"
"Toggle the menu": "Toggle the menu"

View file

@ -6,11 +6,11 @@
? '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.' ? '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.' : '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": "Apps, die nicht ins Seitenmenü verschoben werden sollen"
"If there is no selection then the global configuration is applied.": "Wenn keine Auswahl vorhanden ist, wird die globale Konfiguration angewendet." "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 App 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"
@ -18,9 +18,9 @@
"Big": "Groß" "Big": "Groß"
"Colors": "Farben" "Colors": "Farben"
"Background color": "Hintergrundfarbe" "Background color": "Hintergrundfarbe"
"Background color of current app": "Hintergrundfarbe der aktuellen Anwendung" "Background color of current app": "Hintergrundfarbe der aktuellen App"
"Text color": "Textfarbe" "Text color": "Textfarbe"
"Loader": "Ladestandanzeige" "Loader": "Fortschrittsbalken"
"Icon": "Symbol" "Icon": "Symbol"
"Same color": "Selbe Farbe" "Same color": "Selbe Farbe"
"Opposite color": "Gegenfarbe" "Opposite color": "Gegenfarbe"
@ -37,32 +37,32 @@
"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 App 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"
"Display the logo": "Logo anzeigen" "Display the logo": "Logo anzeigen"
"Icons and texts": "Symbole und Texte" "Icons and texts": "Symbole und Texte"
"Loader enabled": "Ladestandanzeige aktiviert" "Loader enabled": "Fortschrittsbalken anzeigen"
"Tips": "Tipps" "Tips": "Tipps"
"Always displayed": "Immer anzeigen" "Always displayed": "Immer anzeigen"
"This is the automatic behavior when the menu is always displayed.": "Dies ist das automatische Verhalten, 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"
"Open apps in new tab": "Öffne Anwendungen in einem neuen Tab" "Open apps in new tab": "Öffne Apps in einem neuen Tab"
"Use the global setting": "Verwende die globale Einstellung" "Use the global setting": "Verwende die globale Einstellung"
"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 Appliste"
"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 App 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 aktiviert"
"Except when the configuration is forced.": "Gilt nicht, wenn die Konfiguration erzwungen wird." "Except when the configuration is forced.": "Gilt nicht, wenn die Konfiguration erzwungen wird."
"Apps that should not be displayed in the menu": "Anwendungen, die nicht im Menü angezeigt werden sollen" "Apps that should not be displayed in the menu": "Apps, 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>." "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"
@ -76,18 +76,21 @@
"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": "App-Kategorien anpassen"
"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"
"Normal icon": "Normales Symbol" "Normal icon": "Normales Symbol"
"Big icon": "Große Ikone" "Big icon": "Großes Icon"
"Hidden text": "Versteckter Text" "Hidden text": "Versteckter Text"
"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": "Anwendungen" "Applications": "Apps"
"Applications kept in the top menu": "Applications kept in the top menu" "Applications kept in the top menu": "Apps in der oberen Navigationsleiste"
"Applications kept in the top menu but also shown in side 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": "Apps in der oberen Navigationsleiste, die auch im Seitenmenü angezeigt werden sollen"
"These applications must be selected in the previous option.": "These applications must be selected in the previous option." "These applications must be selected in the previous option.": "Diese Apps müssen auch in der vorherigen Einstellung ausgewählt werden."
"Hide labels on mouse over": "Hide labels on mouse over" "Hide labels on mouse over": "Labels ausblenden, wenn sich die Maus darüber befindet (Hover)"
"Except the hovered app": "Except the hovered app"
"Search": "Search"
"Toggle the menu": "Toggle the menu"

View file

@ -91,3 +91,6 @@
"Applications kept in the top menu but also shown in side menu": "Las aplicaciones se mantienen en el menú superior pero también se muestran en el menú lateral" "Applications kept in the top menu but also shown in side menu": "Las aplicaciones se mantienen en el menú superior pero también se muestran en el menú lateral"
"These applications must be selected in the previous option.": "Estas aplicaciones deben ser seleccionadas en las opciones anteriores." "These applications must be selected in the previous option.": "Estas aplicaciones deben ser seleccionadas en las opciones anteriores."
"Hide labels on mouse over": "Ocultar las etiquetas al pasar el ratón" "Hide labels on mouse over": "Ocultar las etiquetas al pasar el ratón"
"Except the hovered app": "Except the hovered app"
"Search": "Search"
"Toggle the menu": "Toggle the menu"

View file

@ -91,3 +91,6 @@
"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" "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." "These applications must be selected in the previous option.": "Ces applications doivent également être sélectionnées dans l'option précédente."
"Hide labels on mouse over": "Masquer le libellé des applications au passage de la souris" "Hide labels on mouse over": "Masquer le libellé des applications au passage de la souris"
"Except the hovered app": "À l'exception de l'application survolée"
"Search": "Rechercher"
"Toggle the menu": "Basculer le menu"

96
src/l10n/fixtures/gl.yaml Normal file
View file

@ -0,0 +1,96 @@
"Custom menu": "Custom menu"
"Enable the custom menu": "Enable the custom menu"
"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.'
: '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": "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."
"Experimental": "Experimental"
"Save": "Save"
"You like this app and you want to support me?": "You like this app and you want to support me?"
"Buy me a coffee ☕": "Buy me a coffee ☕"
"Hidden": "Hidden"
"Small": "Small"
"Normal": "Normal"
"Big": "Big"
"Hidden icon": "Hidden icon"
"Small icon": "Small icon"
"Normal icon": "Normal icon"
"Big icon": "Big icon"
"Hidden text": "Hidden text"
"Small text": "Small text"
"Normal text": "Normal text"
"Big text": "Big text"
"Colors": "Colors"
"Background color": "Background color"
"Background color of current app": "Background color of current app"
"Text color": "Text color"
"Loader": "Loader"
"Icon": "Icon"
"Same color": "Same color"
"Opposite color": "Opposite color"
"Transparent": "Transparent"
"Opaque": "Opaque"
"Opener": "Opener"
"Default": "Default"
"Default (dark)": "Default (dark)"
"Hamburger": "Hamburger"
"Hamburger (dark)": "Hamburger (dark)"
"Hamburger 2": "Hamburger 2"
"Hamburger 2 (dark)": "Hamburger 2 (dark)"
"Before the logo": "Before the logo"
"After the logo": "After the logo"
"Position": "Position"
"Show only the opener (hidden logo)": "Show only the opener (hidden logo)"
"Do not display the side menu and the opener if there is no application (eg: public pages).": "Do not display the side menu and the opener if there is no application (eg: public pages)."
"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": "Display the logo"
"Icons and texts": "Icons and texts"
"Loader enabled": "Loader enabled"
"Tips": "Tips"
"Always displayed": "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"
"Live preview": "Live preview"
"Open apps in new tab": "Open apps in new tab"
"Use the global setting": "Use the global setting"
"Use my selection": "Use my selection"
"Show and hide the list of applications": "Show and hide the list of applications"
"Use the avatar instead of the logo": "Use the avatar instead of the logo"
"You do not have permission to change the settings.": "You do not have permission to change the settings."
"Force this configuration to users": "Force this configuration to users"
"Export the configuration": "Export the configuration"
"Purge the cache": "Purge the cache"
"Show the link to settings": "Show the link to settings"
"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.": "This feature is only compatible with the <code>big menu</code> display."
"The logo is a link to the default app": "The logo is a link to the default app"
"Others": "Others"
"Categories": "Categories"
"Customize sorting": "Customize sorting"
"Order by": "Order by"
"Name": "Name"
"Customed": "Customed"
"Show and hide the list of categories": "Show and hide the list of categories"
"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "This parameters are used when Dark theme or Breeze Dark Theme are enabled."
"Dark mode colors": "Dark mode colors"
"With categories": "With categories"
"Custom categories": "Custom categories"
"Customize application categories": "Customize application categories"
"Reset to default": "Reset to default"
"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."
"Hide labels on mouse over": "Hide labels on mouse over"
"Except the hovered app": "Except the hovered app"
"Search": "Search"
"Toggle the menu": "Toggle the menu"

View file

@ -91,3 +91,6 @@
"Applications kept in the top menu but also shown in side menu": "Applicaties blijven in het topmenu maar worden ook in het zijmenu getoond" "Applications kept in the top menu but also shown in side menu": "Applicaties blijven in het topmenu maar worden ook in het zijmenu getoond"
"These applications must be selected in the previous option.": "Deze toepassingen moeten bij de vorige optie zijn geselecteerd." "These applications must be selected in the previous option.": "Deze toepassingen moeten bij de vorige optie zijn geselecteerd."
"Hide labels on mouse over": "Hide labels on mouse over" "Hide labels on mouse over": "Hide labels on mouse over"
"Except the hovered app": "Except the hovered app"
"Search": "Search"
"Toggle the menu": "Toggle the menu"

View file

@ -0,0 +1,94 @@
"Custom menu": "Menu personalizado"
"Enable the custom menu": "Habilitar o menu personalizado"
"No": "Não"
"Yes": "Sim"
"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.'
: 'Use o atalho <span class="keyboard-key">Ctrl</span>+<span class="keyboard-key">o</span> para exibir e para esconder o menu lateral. Use <span class="keyboard-key">tab</span> para navegar.'
"Top menu": "Menu superior"
"Apps that not must be moved in the side menu": "Apps que não devem ser movidos para o menu lateral"
"If there is no selection then the global configuration is applied.": "Se não houver seleção, a configuração global será aplicada."
"Experimental": "Experimental"
"Save": "Salvar"
"You like this app and you want to support me?": "Você gosta deste aplicativo e quer me apoiar?"
"Buy me a coffee ☕": "Me pague um café ☕"
"Hidden": "Oculto"
"Small": "Pequeno"
"Normal": "Normal"
"Big": "Grande"
"Hidden icon": "Ícone oculto"
"Small icon": "Ícone pequeno"
"Normal icon": "Ícone normal"
"Big icon": "Ícone grance"
"Hidden text": "Texto oculto"
"Small text": "Texto pequeno"
"Normal text": "Texto normal"
"Big text": "Texto grande"
"Colors": "Cores"
"Background color": "Cor de fundo"
"Background color of current app": "Cor de fundo do app atual"
"Text color": "Cor do texto"
"Loader": "Progresso"
"Icon": "Ícone"
"Same color": "Mesma cor"
"Opposite color": "Cor oposta"
"Transparent": "Transparente"
"Opaque": "Opaco"
"Opener": "Abrir"
"Default": "Padrão"
"Default (dark)": "Padrão (escuro)"
"Hamburger": "Hamburger"
"Hamburger (dark)": "Hamburger (escuro)"
"Hamburger 2": "Hamburger 2"
"Hamburger 2 (dark)": "Hamburger 2 (escuro)"
"Before the logo": "Antes da logo"
"After the logo": "Depois da logo"
"Position": "Posição"
"Show only the opener (hidden logo)": "Mostrar apenas o Abrir (ocultar logo)"
"Do not display the side menu and the opener if there is no application (eg: public pages).": "Não mostrar o menu lateral e o Abrir se não houver aplicação (p.ex. páginas públicas)."
"Panel": "Painel"
"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "Abrir o menu quando o mouse passar sobre o Abrir (desativado automaticamente em telas de toque)"
"Display the big menu": "Mostrar o menu grande"
"Display the logo": "Mostrar a logo"
"Icons and texts": "Ícones e textos"
"Loader enabled": "Progresso ativado"
"Tips": "Dicas"
"Always displayed": "Sempre visível"
"This is the automatic behavior when the menu is always displayed.": "Este é o comportamento automático quando o menu está sempre visível."
"Not compatible with touch screens.": "Não compatível com telas de toque."
"Big menu": "Menu grande"
"Live preview": "Visualização ao vivo"
"Open apps in new tab": "Abrir apps em nova aba"
"Use the global setting": "Usar configurações globais"
"Use my selection": "Usar minha seleção"
"Show and hide the list of applications": "Mostrar e ocultar a lista de aplicativos"
"Use the avatar instead of the logo": "Use o avatar ao invés da logo"
"You do not have permission to change the settings.": "Você não tem permissão para alterar as configurações."
"Force this configuration to users": "Forçar esta configuração para os usuários"
"Export the configuration": "Exportar a configuração"
"Purge the cache": "Limpar o cache"
"Show the link to settings": "Mostrar o link para configurações"
"The menu is enabled by default for users": "O menu é habilitado por padrão para os usuários"
"Except when the configuration is forced.": "Exceto quando a configuração é forçada."
"Apps that should not be displayed in the menu": "Apps que não devem ser mostrados no menu"
"This feature is only compatible with the <code>big menu</code> display.": "Este recurso só é compatível com a exibição do <code>menu grande</code>."
"The logo is a link to the default app": "A logo é um link para o app padrão"
"Others": "Outros"
"Categories": "Categorias"
"Customize sorting": "Personalizar classificação"
"Order by": "Ordenar por"
"Name": "Nome"
"Customed": "Personalizado"
"Show and hide the list of categories": "Mostrar e esconder a lista de categorias"
"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "Estes parâmetros são usados quando o tema escuro ou o tema Dark Breeze está ativo."
"Dark mode colors": "Cores do modo escuro"
"With categories": "Com categorias"
"Custom categories": "Categorias personalizadas"
"Customize application categories": "Personalizar categorias de apps"
"Reset to default": "Restaurar padrão"
"Applications": "Aplicativos"
"Applications kept in the top menu": "Aplicativos mantidos no menu superior"
"Applications kept in the top menu but also shown in side menu": "Aplicativos mantidos no menu superior, mas também mostrados no menu lateral"
"These applications must be selected in the previous option.": "Estes aplicativos devem ser selecionados na opção anterior."
"Hide labels on mouse over": "Ocultar descrição ao passar o mouse"
"Toggle the menu": "Toggle the menu"

View file

@ -7,7 +7,7 @@
: 'Используйте сочетание клавиш <span class="keyboard-key">Ctrl</span>+<span class="keyboard-key">o</span>, чтобы открыть или скрыть боковое меню. Используйте <span class="keyboard-key">Tab</span> для навигации.' : 'Используйте сочетание клавиш <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." "If there is no selection then the global configuration is applied.": "Если тут ничего не отмечено, применяются глобальные настройки."
"Experimental": "Экспериментальный" "Experimental": "Экспериментальный"
"Save": "Сохранить" "Save": "Сохранить"
"You like this app and you want to support me?": "Вам нравится приложение или вы хотите поддержать меня?" "You like this app and you want to support me?": "Вам нравится приложение или вы хотите поддержать меня?"
@ -16,11 +16,11 @@
"Small": "Маленький" "Small": "Маленький"
"Normal": "Средний" "Normal": "Средний"
"Big": "Большой" "Big": "Большой"
"Hidden icon": "Скрытая иконка" "Hidden icon": "Без иконки"
"Small icon": "Маленькая иконка" "Small icon": "Маленькая иконка"
"Normal icon": "Средняя иконка" "Normal icon": "Средняя иконка"
"Big icon": "Большая иконка" "Big icon": "Большая иконка"
"Hidden text": "Скрытый текст" "Hidden text": "Без текста"
"Small text": "Маленький текст" "Small text": "Маленький текст"
"Normal text": "Средний текст" "Normal text": "Средний текст"
"Big text": "Большой текст" "Big text": "Большой текст"
@ -35,44 +35,44 @@
"Transparent": "Прозрачный" "Transparent": "Прозрачный"
"Opaque": "Непрозрачный" "Opaque": "Непрозрачный"
"Opener": "Открывалка" "Opener": "Открывалка"
"Default": "По-умолчанию" "Default": "По умолчанию"
"Default (dark)": "По-умолчанию (тёмный)" "Default (dark)": "По умолчанию (тёмный)"
"Hamburger": "Гамбургер" "Hamburger": "Гамбургер"
"Hamburger (dark)": "Гамбургер (тёмный)" "Hamburger (dark)": "Гамбургер (тёмный)"
"Hamburger 2": "Гамбургер 2" "Hamburger 2": "Гамбургер 2"
"Hamburger 2 (dark)": "Гамбургер 2 (тёмный)" "Hamburger 2 (dark)": "Гамбургер 2 (тёмный)"
"Before the logo": "Перед логотипом" "Before the logo": "Перед логотипом"
"After the logo": "После логотипа" "After the logo": "После логотипа"
"Position": "Позиция" "Position": "Положение"
"Show only the opener (hidden logo)": "Показать только открывающую часть (скрытый логотип)" "Show only the opener (hidden logo)": "Показать только открывающую часть (скрытый логотип)"
"Do not display the side menu and the opener if there is no application (eg: public pages).": "Не отображать боковое меню и открывалку, если нет приложения (например, публичные страницы)." "Do not display the side menu and the opener if there is no application (eg: public pages).": "Не отображать боковое меню и открывалку, если нет приложения (например, публичные страницы)."
"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": "Показать лого" "Display the logo": "Показать логотип"
"Icons and texts": "Иконки и текст" "Icons and texts": "Иконки и текст"
"Loader enabled": "Loader enabled" "Loader enabled": "Загрузчик включен"
"Tips": "Советы" "Tips": "Советы"
"Always displayed": "Всегда отображается" "Always displayed": "Всегда отображается"
"This is the automatic behavior 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.": "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": "Большое меню"
"Live preview": "Live preview" "Live preview": "Live preview"
"Open apps in new tab": "Открывать приложения в новой вкладке" "Open apps in new tab": "Открывать приложения в новой вкладке"
"Use the global setting": "Use the global setting" "Use the global setting": "Использовать глобальные настройки"
"Use my selection": "Use my selection" "Use my selection": "Использовать мои настройки"
"Show and hide the list of applications": "Показать или скрыть список приложений" "Show and hide the list of applications": "Показать или скрыть список приложений"
"Use the avatar instead of the logo": "Использовать аватар вместо логотипа" "Use the avatar instead of the logo": "Использовать аватар вместо логотипа"
"You do not have permission to change the settings.": "У вас нет разрешения изменять настройки" "You do not have permission to change the settings.": "У вас нет разрешения изменять настройки."
"Force this configuration to users": "Force this configuration to users" "Force this configuration to users": "Force this configuration to users"
"Export the configuration": "Экспортировать конфигурацию" "Export the configuration": "Экспортировать конфигурацию"
"Purge the cache": "Очистить кэш" "Purge the cache": "Очистить кэш"
"Show the link to settings": "Показать ссылку на настройки" "Show the link to settings": "Показать ссылку на настройки"
"The menu is enabled by default for users": "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." "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" "Apps that should not be displayed in the menu": "Ппрограммы, скрытые из меню"
"This feature is only compatible with the <code>big menu</code> display.": "This feature is only compatible with the <code>big menu</code> display." "This feature is only compatible with the <code>big menu</code> display.": "This feature is only compatible with the <code>big menu</code> display."
"The logo is a link to the default app": "The logo is a link to the default app" "The logo is a link to the default app": "Логотип открывает приложение по умолчанию"
"Others": "Прочие" "Others": "Прочие"
"Categories": "Категории" "Categories": "Категории"
"Customize sorting": "Настроить сортировку" "Customize sorting": "Настроить сортировку"
@ -80,14 +80,17 @@
"Name": "Название" "Name": "Название"
"Customed": "Customed" "Customed": "Customed"
"Show and hide the list of categories": "Показать или скрыть список категорий" "Show and hide the list of categories": "Показать или скрыть список категорий"
"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "This parameters are used when Dark theme or Breeze Dark Theme are enabled." "This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "Эти настройки используются темами Тёмная и Тёмная Breeze."
"Dark mode colors": "Цвета тёмной темы" "Dark mode colors": "Цвета тёмной темы"
"With categories": "С категориями" "With categories": "С категориями"
"Custom categories": "Custom categories" "Custom categories": "Пользовательские категории"
"Customize application categories": "Customize application categories" "Customize application categories": "Изменить категории приложений"
"Reset to default": "Сбросить к значениям по-умолчанию" "Reset to default": "Сбросить к значениям по умолчанию"
"Applications": "Приложения" "Applications": "Приложения"
"Applications kept in the top menu": "Applications kept in the top menu" "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" "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." "These applications must be selected in the previous option.": "These applications must be selected in the previous option."
"Hide labels on mouse over": "Hide labels on mouse over" "Hide labels on mouse over": "Скрыть название при наведении мыши"
"Except the hovered app": "Except the hovered app"
"Search": "Search"
"Toggle the menu": "Toggle the menu"

94
src/l10n/fixtures/sk.yaml Normal file
View file

@ -0,0 +1,94 @@
"Custom menu": "Custom menu"
"Enable the custom menu": "Enable the custom menu"
"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.'
: '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": "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."
"Experimental": "Experimental"
"Save": "Save"
"You like this app and you want to support me?": "You like this app and you want to support me?"
"Buy me a coffee ☕": "Buy me a coffee ☕"
"Hidden": "Hidden"
"Small": "Small"
"Normal": "Normal"
"Big": "Big"
"Hidden icon": "Hidden icon"
"Small icon": "Small icon"
"Normal icon": "Normal icon"
"Big icon": "Big icon"
"Hidden text": "Hidden text"
"Small text": "Small text"
"Normal text": "Normal text"
"Big text": "Big text"
"Colors": "Colors"
"Background color": "Background color"
"Background color of current app": "Background color of current app"
"Text color": "Text color"
"Loader": "Loader"
"Icon": "Icon"
"Same color": "Same color"
"Opposite color": "Opposite color"
"Transparent": "Transparent"
"Opaque": "Opaque"
"Opener": "Opener"
"Default": "Default"
"Default (dark)": "Default (dark)"
"Hamburger": "Hamburger"
"Hamburger (dark)": "Hamburger (dark)"
"Hamburger 2": "Hamburger 2"
"Hamburger 2 (dark)": "Hamburger 2 (dark)"
"Before the logo": "Before the logo"
"After the logo": "After the logo"
"Position": "Position"
"Show only the opener (hidden logo)": "Show only the opener (hidden logo)"
"Do not display the side menu and the opener if there is no application (eg: public pages).": "Do not display the side menu and the opener if there is no application (eg: public pages)."
"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": "Display the logo"
"Icons and texts": "Icons and texts"
"Loader enabled": "Loader enabled"
"Tips": "Tips"
"Always displayed": "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"
"Live preview": "Live preview"
"Open apps in new tab": "Open apps in new tab"
"Use the global setting": "Use the global setting"
"Use my selection": "Use my selection"
"Show and hide the list of applications": "Show and hide the list of applications"
"Use the avatar instead of the logo": "Use the avatar instead of the logo"
"You do not have permission to change the settings.": "You do not have permission to change the settings."
"Force this configuration to users": "Force this configuration to users"
"Export the configuration": "Export the configuration"
"Purge the cache": "Purge the cache"
"Show the link to settings": "Show the link to settings"
"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.": "This feature is only compatible with the <code>big menu</code> display."
"The logo is a link to the default app": "The logo is a link to the default app"
"Others": "Others"
"Categories": "Categories"
"Customize sorting": "Customize sorting"
"Order by": "Order by"
"Name": "Name"
"Customed": "Customed"
"Show and hide the list of categories": "Show and hide the list of categories"
"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "This parameters are used when Dark theme or Breeze Dark Theme are enabled."
"Dark mode colors": "Dark mode colors"
"With categories": "With categories"
"Custom categories": "Custom categories"
"Customize application categories": "Customize application categories"
"Reset to default": "Reset to default"
"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."
"Hide labels on mouse over": "Hide labels on mouse over"
"Toggle the menu": "Toggle the menu"

View file

@ -1,95 +1,100 @@
"Custom menu": "" "Custom menu": "Custom menu"
"Enable the custom menu": "" "Enable the custom menu": "Enable the custom menu"
"No": "" "No": "No"
"Yes": "" "Yes": "Yes"
"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 to open and to hide the side menu. Use <span class="keyboard-key">tab</span> to
navigate.' navigate.'
: '' : 'Use the shortcut <span class="keyboard-key">Ctrl</span>+<span class="keyboard-key">o</span>
"Top menu": "" to open and to hide the side menu. Use <span class="keyboard-key">tab</span> to
"Apps that not must be moved in the side menu": "" navigate.'
"If there is no selection then the global configuration is applied.": "" "Top menu": "Top menu"
"Experimental": "" "Apps that not must be moved in the side menu": "Apps that not must be moved in the side menu"
"Save": "" "If there is no selection then the global configuration is applied.": "If there is no selection then the global configuration is applied."
"You like this app and you want to support me?": "" "Experimental": "Experimental"
"Buy me a coffee ☕": "" "Save": "Save"
"Hidden": "" "You like this app and you want to support me?": "You like this app and you want to support me?"
"Small": "" "Buy me a coffee ☕": "Buy me a coffee ☕"
"Normal": "" "Hidden": "Hidden"
"Big": "" "Small": "Small"
"Hidden icon": "" "Normal": "Normal"
"Small icon": "" "Big": "Big"
"Normal icon": "" "Hidden icon": "Hidden icon"
"Big icon": "" "Small icon": "Small icon"
"Hidden text": "" "Normal icon": "Normal icon"
"Small text": "" "Big icon": "Big icon"
"Normal text": "" "Hidden text": "Hidden text"
"Big text": "" "Small text": "Small text"
"Colors": "" "Normal text": "Normal text"
"Background color": "" "Big text": "Big text"
"Background color of current app": "" "Colors": "Colors"
"Text color": "" "Background color": "Background color"
"Loader": "" "Background color of current app": "Background color of current app"
"Icon": "" "Text color": "Text color"
"Same color": "" "Loader": "Loader"
"Opposite color": "" "Icon": "Icon"
"Transparent": "" "Same color": "Same color"
"Opaque": "" "Opposite color": "Opposite color"
"Opener": "" "Transparent": "Transparent"
"Default": "" "Opaque": "Opaque"
"Default (dark)": "" "Opener": "Opener"
"Hamburger": "" "Default": "Default"
"Hamburger (dark)": "" "Default (dark)": "Default (dark)"
"Hamburger 2": "" "Hamburger": "Hamburger"
"Hamburger 2 (dark)": "" "Hamburger (dark)": "Hamburger (dark)"
"Before the logo": "" "Hamburger 2": "Hamburger 2"
"After the logo": "" "Hamburger 2 (dark)": "Hamburger 2 (dark)"
"Position": "" "Before the logo": "Before the logo"
"Show only the opener (hidden logo)": "" "After the logo": "After the logo"
"Do not display the side menu and the opener if there is no application (eg: public pages).": "" "Position": "Position"
"Panel": "" "Show only the opener (hidden logo)": "Show only the opener (hidden logo)"
"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "" "Do not display the side menu and the opener if there is no application (eg: public pages).": "Do not display the side menu and the opener if there is no application (eg: public pages)."
"Display the big menu": "" "Panel": "Panel"
"Display the logo": "" "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)"
"Icons and texts": "" "Display the big menu": "Display the big menu"
"Loader enabled": "" "Display the logo": "Display the logo"
"Tips": "" "Icons and texts": "Icons and texts"
"Always displayed": "" "Loader enabled": "Loader enabled"
"This is the automatic behavior when the menu is always displayed.": "" "Tips": "Tips"
"Not compatible with touch screens.": "" "Always displayed": "Always displayed"
"Big menu": "" "This is the automatic behavior when the menu is always displayed.": "This is the automatic behavior when the menu is always displayed."
"Live preview": "" "Not compatible with touch screens.": "Not compatible with touch screens."
"Open apps in new tab": "" "Big menu": "Big menu"
"Use the global setting": "" "Live preview": "Live preview"
"Use my selection": "" "Open apps in new tab": "Open apps in new tab"
"Show and hide the list of applications": "" "Use the global setting": "Use the global setting"
"Use the avatar instead of the logo": "" "Use my selection": "Use my selection"
"You do not have permission to change the settings.": "" "Show and hide the list of applications": "Show and hide the list of applications"
"Force this configuration to users": "" "Use the avatar instead of the logo": "Use the avatar instead of the logo"
"Export the configuration": "" "You do not have permission to change the settings.": "You do not have permission to change the settings."
"Purge the cache": "" "Force this configuration to users": "Force this configuration to users"
"Show the link to settings": "" "Export the configuration": "Export the configuration"
"The menu is enabled by default for users": "" "Purge the cache": "Purge the cache"
"Except when the configuration is forced.": "" "Show the link to settings": "Show the link to settings"
"Apps that should not be displayed in the menu": "" "The menu is enabled by default for users": "The menu is enabled by default for users"
"This feature is only compatible with the <code>big menu</code> display.": "" "Except when the configuration is forced.": "Except when the configuration is forced."
"The logo is a link to the default app": "" "Apps that should not be displayed in the menu": "Apps that should not be displayed in the menu"
"Others": "" "This feature is only compatible with the <code>big menu</code> display.": "This feature is only compatible with the <code>big menu</code> display."
"Categories": "" "The logo is a link to the default app": "The logo is a link to the default app"
"Customize sorting": "" "Others": "Others"
"Order by": "" "Categories": "Categories"
"Name": "" "Customize sorting": "Customize sorting"
"Customed": "" "Order by": "Order by"
"Show and hide the list of categories": "" "Name": "Name"
"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "" "Customed": "Customed"
"Dark mode colors": "" "Show and hide the list of categories": "Show and hide the list of categories"
"With categories": "" "This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "This parameters are used when Dark theme or Breeze Dark Theme are enabled."
"Custom categories": "" "Dark mode colors": "Dark mode colors"
"Customize application categories": "" "With categories": "With categories"
"Reset to default": "" "Custom categories": "Custom categories"
"Applications": "" "Customize application categories": "Customize application categories"
"Applications kept in the top menu": "" "Reset to default": "Reset to default"
"Applications kept in the top menu but also shown in side menu": "" "Applications": "Applications"
"These applications must be selected in the previous option.": "" "Applications kept in the top menu": "Applications kept in the top menu"
"Hide labels on mouse over": "" "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."
"Hide labels on mouse over": "Hide labels on mouse over"
"Except the hovered app": "Except the hovered app"
"Search": "Search"
"Toggle the menu": "Toggle the menu"

View file

@ -91,3 +91,6 @@
"Applications kept in the top menu but also shown in side 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": "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." "These applications must be selected in the previous option.": "These applications must be selected in the previous option."
"Hide labels on mouse over": "Hide labels on mouse over" "Hide labels on mouse over": "Hide labels on mouse over"
"Except the hovered app": "Except the hovered app"
"Search": "Search"
"Toggle menu": "Toggle menu"

View file

@ -3,7 +3,13 @@ module.exports = (tagName, attributes) => {
if (typeof attributes === 'object') { if (typeof attributes === 'object') {
for (let i in attributes) { for (let i in attributes) {
element.setAttribute(i, attributes[i]) if (i === 'text') {
element.textContent = attributes[i]
} else if (i === 'html') {
element.innerHTML = attributes[i]
} else {
element.setAttribute(i, attributes[i])
}
} }
} }

View file

@ -42,10 +42,14 @@
top: 49px; top: 49px;
} }
#side-menu.hide-opener .side-menu-header { #side-menu.hide-opener .side-menu-header .side-menu-opener.side-menu-closer {
visibility: hidden; visibility: hidden;
} }
#side-menu.hide-opener.side-menu-with-categories .side-menu-search {
float: none;
}
<?php if ($_['size-text'] === 'hidden'): ?> <?php if ($_['size-text'] === 'hidden'): ?>
#side-menu, .side-menu-apps-list { #side-menu, .side-menu-apps-list {
<?php if ($_['size-icon'] === 'big'): ?> <?php if ($_['size-icon'] === 'big'): ?>

View file

@ -14,12 +14,17 @@ if ($_['always-displayed']) {
(function() { (function() {
const sideMenuContainer = SMcreateElement('div', {id: 'side-menu-container'}) const sideMenuContainer = SMcreateElement('div', {id: 'side-menu-container'})
const sideMenuOpener = SMcreateElement('button', {'class': 'side-menu-opener'}) const sideMenuOpener = SMcreateElement('button', {
'class': 'side-menu-opener',
'arial-label': t('side_menu', 'Toggle the menu'),
'html': `<span>${t('side_menu', 'Toggle the menu')}</span>`
})
const sideMenu = SMcreateElement('div', {id: 'side-menu'}) const sideMenu = SMcreateElement('div', {id: 'side-menu'})
const body = document.querySelector('body') const body = document.querySelector('body')
const html = document.querySelector('html') const html = document.querySelector('html')
const nextcloud = document.querySelector('#nextcloud') const nextcloud = document.querySelector('#nextcloud')
const logo = document.querySelector('.header-left .logo')
const isTouchDevice = window.matchMedia("(pointer: coarse)").matches const isTouchDevice = window.matchMedia("(pointer: coarse)").matches
@ -35,6 +40,15 @@ if ($_['always-displayed']) {
sideMenu.setAttribute('data-sidewithcategories', '1') sideMenu.setAttribute('data-sidewithcategories', '1')
<?php endif; ?> <?php endif; ?>
const sideMenuFocus = () => {
let a = document.querySelector('#side-menu .side-menu-app.active a')
|| document.querySelector('#side-menu .side-menu-app a')
if (a) {
a.focus()
}
}
document.querySelector('body').addEventListener('side-menu.apps', (e) => { document.querySelector('body').addEventListener('side-menu.apps', (e) => {
const apps = e.detail.apps; const apps = e.detail.apps;
@ -77,22 +91,6 @@ if ($_['always-displayed']) {
return return
} }
sideMenuFocus = () => {
let a = document.querySelector('.side-menu-app.active a', sideMenu)
if (!a) {
return
}
if (a.length === 0) {
a = sideMenu.querySelector('.side-menu-app:first-child a')
}
if (a.length > 0) {
a.focus()
}
}
<?php if ($_['opener-hover']): ?> <?php if ($_['opener-hover']): ?>
const sideMenuMouseLeave = () => { const sideMenuMouseLeave = () => {
sideMenu.classList.remove('open') sideMenu.classList.remove('open')
@ -124,14 +122,8 @@ if ($_['always-displayed']) {
headerMenuOpener.addEventListener('click', () => { headerMenuOpener.addEventListener('click', () => {
sideMenu.classList.add('open') sideMenu.classList.add('open')
const a = sideMenu.querySelector('.side-menu-app.active a')
if (a !== null) {
a.focus()
}
headerMenuOpener.blur() headerMenuOpener.blur()
sideMenuFocus()
}) })
for (let opener of sideMenuOpener) { for (let opener of sideMenuOpener) {
@ -179,6 +171,10 @@ if ($_['always-displayed']) {
<?php endif; ?> <?php endif; ?>
if (nextcloud) { if (nextcloud) {
if (logo && logo.parentNode !== nextcloud) {
nextcloud.appendChild(logo)
}
<?php if ($_['opener-position'] === 'before'): ?> <?php if ($_['opener-position'] === 'before'): ?>
nextcloud.parentNode.insertBefore(sideMenuOpener, nextcloud) nextcloud.parentNode.insertBefore(sideMenuOpener, nextcloud)
<?php else: ?> <?php else: ?>

View file

@ -41,6 +41,7 @@ $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';
$labelDefault = 'Default';
$labelWithCategories = 'With categories'; $labelWithCategories = 'With categories';
$labelBigMenu = 'Big menu'; $labelBigMenu = 'Big menu';
$labelAlwaysDisplayed = 'Always displayed'; $labelAlwaysDisplayed = 'Always displayed';
@ -64,7 +65,7 @@ $labelAlwaysDisplayed = 'Always displayed';
<div> <div>
<label> <label>
<?php p($l->t('Default')); ?> <?php p($l->t($labelDefault)); ?>
</label> </label>
</div> </div>
<p> <p>
@ -73,7 +74,7 @@ $labelAlwaysDisplayed = 'Always displayed';
data-alwaysdiplayed="0" data-alwaysdiplayed="0"
data-bigmenu="0" data-bigmenu="0"
data-sidewithcategories="0" data-sidewithcategories="0"
src="<?php print_unescaped(image_path('side_menu', 'admin/layout-default.svg')); ?>" alt="<?php p($l->t('Default')); ?>"> src="<?php print_unescaped(image_path('side_menu', 'admin/layout-default.svg')); ?>" alt="<?php p($l->t($labelDefault)); ?>">
</p> </p>
<div> <div>
@ -150,7 +151,7 @@ $labelAlwaysDisplayed = 'Always displayed';
</h2> </h2>
<div class="badges"> <div class="badges">
<span class="badge badge-1"><?php p($l->t('Default')); ?></span> <span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span> <span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span> <span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span> <span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
@ -312,7 +313,7 @@ $labelAlwaysDisplayed = 'Always displayed';
<div class="side-menu-setting-table"> <div class="side-menu-setting-table">
<?php <?php
$choices = [ $choices = [
'Default' => 'side-menu-opener', $labelDefault => 'side-menu-opener',
'Default (dark)' => 'side-menu-opener-dark', 'Default (dark)' => 'side-menu-opener-dark',
'Hamburger' => 'side-menu-opener-hamburger', 'Hamburger' => 'side-menu-opener-hamburger',
'Hamburger (dark)' => 'side-menu-opener-hamburger-dark', 'Hamburger (dark)' => 'side-menu-opener-hamburger-dark',
@ -341,7 +342,7 @@ $labelAlwaysDisplayed = 'Always displayed';
</h2> </h2>
<div class="badges"> <div class="badges">
<span class="badge badge-1"><?php p($l->t('Default')); ?></span> <span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span> <span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span> <span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span> <span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
@ -505,7 +506,7 @@ $labelAlwaysDisplayed = 'Always displayed';
<div class="side-menu-setting-table"> <div class="side-menu-setting-table">
<?php <?php
$choices = [ $choices = [
'Default' => 'side-menu-opener', $labelDefault => 'side-menu-opener',
'Default (dark)' => 'side-menu-opener-dark', 'Default (dark)' => 'side-menu-opener-dark',
'Hamburger' => 'side-menu-opener-hamburger', 'Hamburger' => 'side-menu-opener-hamburger',
'Hamburger (dark)' => 'side-menu-opener-hamburger-dark', 'Hamburger (dark)' => 'side-menu-opener-hamburger-dark',
@ -536,7 +537,7 @@ $labelAlwaysDisplayed = 'Always displayed';
</h2> </h2>
<div class="badges"> <div class="badges">
<span class="badge badge-1"><?php p($l->t('Default')); ?></span> <span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span> <span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span> <span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span> <span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
@ -621,7 +622,7 @@ $labelAlwaysDisplayed = 'Always displayed';
<?php p($l->t('Display the logo')); ?> <?php p($l->t('Display the logo')); ?>
<div class="badges"> <div class="badges">
<span class="badge badge-1"><?php p($l->t('Default')); ?></span> <span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
</div> </div>
</div> </div>
<div class="side-menu-setting-form"> <div class="side-menu-setting-form">
@ -640,7 +641,7 @@ $labelAlwaysDisplayed = 'Always displayed';
<?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"> <div class="badges">
<span class="badge badge-1"><?php p($l->t('Default')); ?></span> <span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
</div> </div>
</div> </div>
<div class="side-menu-setting-form"> <div class="side-menu-setting-form">
@ -659,7 +660,7 @@ $labelAlwaysDisplayed = 'Always displayed';
<?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"> <div class="badges">
<span class="badge badge-1"><?php p($l->t('Default')); ?></span> <span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
</div> </div>
</div> </div>
<div class="side-menu-setting-form"> <div class="side-menu-setting-form">
@ -678,8 +679,10 @@ $labelAlwaysDisplayed = 'Always displayed';
<?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')); ?>
<div class="badges"> <div class="badges">
<span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span> <span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span> <span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
</div> </div>
</div> </div>
<div class="side-menu-setting-form"> <div class="side-menu-setting-form">
@ -801,7 +804,7 @@ $labelAlwaysDisplayed = 'Always displayed';
</h2> </h2>
<div class="badges"> <div class="badges">
<span class="badge badge-1"><?php p($l->t('Default')); ?></span> <span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span> <span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span> <span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span> <span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
@ -875,9 +878,15 @@ $labelAlwaysDisplayed = 'Always displayed';
<div class="side-menu-setting-label"> <div class="side-menu-setting-label">
<?php p($l->t('Hide labels on mouse over')); ?> <?php p($l->t('Hide labels on mouse over')); ?>
</div> </div>
<?php
$choices = array_merge(
$choicesYesNo,
['Except the hovered app' => '2']
);
?>
<div class="side-menu-setting-form"> <div class="side-menu-setting-form">
<select id="side-menu-top-menu-mouse-over-hidden-label" name="top-menu-mouse-over-hidden-label" class="side-menu-setting"> <select id="side-menu-top-menu-mouse-over-hidden-label" name="top-menu-mouse-over-hidden-label" class="side-menu-setting">
<?php foreach ($choicesYesNo as $label => $value): ?> <?php foreach ($choices as $label => $value): ?>
<option value="<?php echo $value ?>" <?php if ($value === $_['top-menu-mouse-over-hidden-label']): ?>selected<?php endif; ?>> <option value="<?php echo $value ?>" <?php if ($value === $_['top-menu-mouse-over-hidden-label']): ?>selected<?php endif; ?>>
<?php echo $l->t($label); ?> <?php echo $l->t($label); ?>
</option> </option>
@ -894,7 +903,7 @@ $labelAlwaysDisplayed = 'Always displayed';
</h2> </h2>
<div class="badges"> <div class="badges">
<span class="badge badge-1"><?php p($l->t('Default')); ?></span> <span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span> <span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span> <span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span> <span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
@ -1056,7 +1065,7 @@ $labelAlwaysDisplayed = 'Always displayed';
</h2> </h2>
<div class="badges"> <div class="badges">
<span class="badge badge-1"><?php p($l->t('Default')); ?></span> <span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span> <span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span> <span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span> <span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
@ -1106,19 +1115,19 @@ $labelAlwaysDisplayed = 'Always displayed';
</div> </div>
<div class="section" id="more"> <div class="section" id="more">
<button id="side-menu-save" class="btn btn-info"> <button id="side-menu-save" class="btn btn-info" arial-label="<?php p($l->t('Save')); ?>">
<?php p($l->t('Save')); ?> <?php p($l->t('Save')); ?>
<progress max="100" value="0" id="side-menu-save-progress"></progress> <progress max="100" value="0" id="side-menu-save-progress"></progress>
</button> </button>
<a href="<?php echo $urlGenerator->linkToRoute('side_menu.AdminSetting.exportConfiguration') ?>" target="_blank" rel="noopener"> <a href="<?php echo $urlGenerator->linkToRoute('side_menu.AdminSetting.exportConfiguration') ?>" target="_blank" rel="noopener">
<button class="btn btn-primary" > <button class="btn btn-primary" arial-label="<?php p($l->t('Export the configuration')); ?>">
<?php p($l->t('Export the configuration')); ?> <?php p($l->t('Export the configuration')); ?>
</button> </button>
</a> </a>
<a href="<?php echo $urlGenerator->linkToRoute('side_menu.AdminSetting.removeCache') ?>"> <a href="<?php echo $urlGenerator->linkToRoute('side_menu.AdminSetting.removeCache') ?>">
<button class="btn btn-primary" > <button class="btn btn-primary" arial-label="<?php p($l->t('Purge the cache')); ?>">
<?php p($l->t('Purge the cache')); ?> (<?php echo $cacheSize ?> Kb) <?php p($l->t('Purge the cache')); ?> (<?php echo $cacheSize ?> Kb)
</button> </button>
</a> </a>
@ -1130,7 +1139,7 @@ $labelAlwaysDisplayed = 'Always displayed';
<?php p($l->t('You like this app and you want to support me?')); ?> <?php p($l->t('You like this app and you want to support me?')); ?>
<a style="margin-left: 10px" target="_blank" href="https://www.buymeacoffee.com/deblan" rel="noopener"> <a style="margin-left: 10px" target="_blank" href="https://www.buymeacoffee.com/deblan" rel="noopener">
<button> <button arial-label="<?php p($l->t('Buy me a coffee ☕')); ?>">
<?php p($l->t('Buy me a coffee ☕')); ?> <?php p($l->t('Buy me a coffee ☕')); ?>
</button> </button>
</a> </a>

View file

@ -240,7 +240,7 @@ $labelReset = 'Reset to default';
<div class="section"> <div class="section">
<?php if (!$_['force']): ?> <?php if (!$_['force']): ?>
<button id="side-menu-save" class="btn btn-info"> <button id="side-menu-save" class="btn btn-info" arial-label="<?php p($l->t('Save')); ?>">
<?php p($l->t('Save')); ?> <?php p($l->t('Save')); ?>
<progress max="100" value="0" id="side-menu-save-progress"></progress> <progress max="100" value="0" id="side-menu-save-progress"></progress>
</button> </button>
@ -255,7 +255,7 @@ $labelReset = 'Reset to default';
<?php p($l->t('You like this app and you want to support me?')); ?> <?php p($l->t('You like this app and you want to support me?')); ?>
<a style="margin-left: 10px" target="_blank" href="https://www.buymeacoffee.com/deblan" rel="noopener"> <a style="margin-left: 10px" target="_blank" href="https://www.buymeacoffee.com/deblan" rel="noopener">
<button> <button arial-label="<?php p($l->t('Buy me a coffee ☕')); ?>">
<?php p($l->t('Buy me a coffee ☕')); ?> <?php p($l->t('Buy me a coffee ☕')); ?>
</button> </button>
</a> </a>