Compare commits

...

738 Commits

Author SHA1 Message Date
Benjamin Gaussorgues c909f0125f feat(scan): add log for failed files scan
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2025-05-20 16:14:12 +02:00
Joas Schilling c62fa55007 Merge pull request #52851 from nextcloud/ci/noid/update-phpunit10
test: Prepare tests/ and some apps/*/tests/ for PHPUnit10
2025-05-15 09:30:33 +02:00
Joas Schilling 5f9117b939 test: Fix coding standards
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-15 08:48:13 +02:00
Joas Schilling 57a49a50aa test: Make extending tests also static already
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-15 08:29:33 +02:00
Joas Schilling ea0229dc86 test: Fix some apps/*/tests
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-15 08:26:15 +02:00
Joas Schilling 437f380fd9 test: Fix most tests/lib/DB/QueryBuilder
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-15 08:25:01 +02:00
Joas Schilling a316ae1590 fix: Fix warning when crash reporter fails to get loaded
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-15 08:25:01 +02:00
Joas Schilling 3e7db013c1 test: Fix non-static data providers
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-15 08:25:01 +02:00
Joas Schilling 9621e451ba test: Fix tests/lib/Files
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-15 08:25:00 +02:00
Joas Schilling e0a1c84ebb test: Make Archive test order independent
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-15 08:25:00 +02:00
Joas Schilling 2c74609e07 test: Fix tests/lib/[S-Z]*
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-15 08:24:59 +02:00
Joas Schilling f474b5b3a9 test: Fix tests/lib/Security/
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-15 08:24:59 +02:00
Joas Schilling c5cd7ef9b9 test: Fix tests/lib/[H-N]*
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-15 08:24:59 +02:00
Joas Schilling 3cc4410273 test: Fix tests/lib/[C-G]*
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-15 08:24:57 +02:00
Joas Schilling 720ab52e07 test: Fix tests/lib/App*
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-15 08:21:24 +02:00
Joas Schilling 5283e9a5e2 test: Cleanup tests/lib/Files/*
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-15 08:21:22 +02:00
Joas Schilling 53b116b8a5 test: Remove more withConsecutive
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-15 08:18:26 +02:00
F. E Noel Nfebe 158b3ef859 Merge pull request #52813 from nextcloud/fix/52794/share-advanced-settings
fix(files_sharing): Show note if note exists on share
2025-05-15 07:49:26 +02:00
Nextcloud bot fee878308e fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-05-15 00:22:57 +00:00
Kate 8ecadfa6bf Merge pull request #52820 from nextcloud/refactor/rector-core 2025-05-15 01:42:15 +02:00
Côme Chilliet 300964ec4b Merge pull request #52840 from nextcloud/fix/remove-broken-versions-routes
fix(files_versions): Remove routes leading to deleted ajax files
2025-05-15 00:19:30 +02:00
provokateurin 82fb8f8508 refactor: Extend rector to core/
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-05-15 00:16:54 +02:00
Kate c3ddd1da46 Merge pull request #52669 from nextcloud/chore/refactor-update-notification+ 2025-05-15 00:07:31 +02:00
Côme Chilliet baae99eaad Merge pull request #52667 from nextcloud/fix/improve-init-profiling
Improve init profiling
2025-05-14 22:57:55 +02:00
John Molakvoæ e65084adda Merge pull request #52841 from nextcloud/chore/dependabot 2025-05-14 22:47:20 +02:00
John Molakvoæ 970eb8299f Merge pull request #52359 from nextcloud/feat/mime-column 2025-05-14 22:42:27 +02:00
nextcloud-command 86c591ba5f chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-05-14 22:39:15 +02:00
nfebe 7810a9005e test(file_sharing): Do not open advanced settings manually
If a share note is present, the advanced settings should expand automatically,
without the user needing to click.

Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-05-14 22:39:15 +02:00
nfebe 63cf3f53c3 fix(files_sharing): Show note if note exists on share
When a share includes a note, ensure the note checkbox is checked and the note is
displayed when reopening the share sidebar.

Fixes: #52794.

Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-05-14 22:39:15 +02:00
Côme Chilliet 6974015e39 fix: Update psalm baseline to remove fixed issue
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-14 22:29:55 +02:00
Ferdinand Thiessen fd8df1003d chore: remove reviewers from dependendabot - its deprecated
Instead make sure all PRs get a reviewer assigned.
Also fixed an issue with the `dist/` folder as there is no automated PR
adding dist files - it needs to be manually updated, so that a PR
containing changes has to be reviewed properly!

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-05-14 22:27:25 +02:00
John Molakvoæ ae63945736 Merge pull request #52544 from nextcloud/chore/drop-deprecated-account-scopes 2025-05-14 22:15:01 +02:00
John Molakvoæ b3b63020c9 Merge pull request #52812 from nextcloud/chore/oc-helper-rmdirr 2025-05-14 21:53:47 +02:00
Côme Chilliet fd4c103e8b fix(files_versions): Remove routes leading to deleted ajax files
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-14 21:36:33 +02:00
nextcloud-command 8576c8baa6 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-05-14 17:53:32 +00:00
John Molakvoæ 7fc0318475 chore(files): adjust renaming action comment
Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
2025-05-14 17:51:12 +00:00
John Molakvoæ 006d4ee952 fix(files): hide mime column by default
Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
2025-05-14 17:51:12 +00:00
John Molakvoæ (skjnldsv) c7a50c708d fix(files): refresh Node data on extension change
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2025-05-14 17:51:12 +00:00
John Molakvoæ (skjnldsv) a4ab5a3cdf feat(files): allow showing file type (mime) column
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2025-05-14 17:51:12 +00:00
Benjamin Gaussorgues 1b72ddd8c8 Merge pull request #52684 from nextcloud/bugfix/noid/last-insert-id-when-reconnecting 2025-05-14 19:44:30 +02:00
Côme Chilliet 2cd491f491 Merge pull request #48560 from nextcloud/fix/migrate-encryption-away-from-hooks
feat(encryption): Migrate from hooks to events
2025-05-14 19:25:51 +02:00
Côme Chilliet 42f45030ff Merge pull request #52817 from nextcloud/chore/deps/rector-2.0
chore(deps): Update rector to ^2.0
2025-05-14 19:19:27 +02:00
Côme Chilliet 0c56605497 fix: Fix psalm issue and update baseline
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-14 19:18:31 +02:00
Ferdinand Thiessen 1b273b8c2c chore(IAccountManager): remove deprecated visibility constants
Those constants are not used anywhere anymore and are deprecated for
more than ten versions. So its time to cleanup the interface.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-05-14 19:15:24 +02:00
Andy Scherzinger 14f79829f3 Merge pull request #52775 from nextcloud/nested-jail-root
fix unjailedroot of nested jails if there are other wrappers in between
2025-05-14 17:36:55 +02:00
John Molakvoæ 4635cb4b2e Merge pull request #52809 from nextcloud/fix/preview-check 2025-05-14 15:50:01 +02:00
provokateurin 78a175fc74 refactor: Apply rector refactorings
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-05-14 15:29:02 +02:00
provokateurin 953d1ab962 chore(deps): Update rector to ^2.0
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-05-14 15:28:37 +02:00
provokateurin 2919685603 ci: Add vendor-bin/rector to dependabot
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-05-14 15:28:14 +02:00
Kate bfa494f247 Merge pull request #52800 from nextcloud/debt/noid/simple-file-generic-exception 2025-05-14 15:25:41 +02:00
Ferdinand Thiessen 072d4e8cba chore: move implementation from OC legacy to OCP\Files
- move implementation to the OCP variant that called the legacy before
- add the missing deprecation notice
- add missing parameter to align both signatures
- use OCP\Files where this method is still used

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-05-14 14:55:45 +02:00
Daniel 7523c38e58 Merge pull request #52798 from nextcloud/bug/noid/log-requests-exceeding-rate-limit
fix: log requests exceeding the rate limiting
2025-05-14 14:54:57 +02:00
Ferdinand Thiessen 1c7e4a1ba6 Merge pull request #52801 from nextcloud/chore/oc-helper-filesize
chore: replace legacy OC_Helper calls with OCP\Util
2025-05-14 14:37:13 +02:00
nextcloud-command 40239518c1 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-05-14 12:33:29 +00:00
John Molakvoæ (skjnldsv) 37d4bdce00 fix(files): do not even try to fetch a preview if èhas-preview` is false
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2025-05-14 14:22:01 +02:00
Ferdinand Thiessen a01e85799c Merge pull request #52802 from nextcloud/chore/oc-helper-can-exec
chore: deprecate \OC_Helper::canExecute
2025-05-14 12:45:25 +02:00
Daniel Kesselberg a53e15c971 fix: log requests exceeding the rate limiting
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2025-05-14 12:23:40 +02:00
Joas Schilling 7304756e03 test: Sort the reactions before comparing
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-14 11:42:52 +02:00
Robin Appelman 1950076ca1 Merge pull request #52378 from nextcloud/transfer-external-storage
feat: add option to include external storage when transfering files
2025-05-14 11:10:32 +02:00
Daniel 498c57f648 Merge pull request #52046 from nextcloud/bug/49834/calendar-unsharing
Introduce own method for calendar unsharing
2025-05-14 10:59:59 +02:00
John Molakvoæ 3aae7ae305 Merge pull request #52792 from nextcloud/fix/mime-fallback-public 2025-05-14 10:51:40 +02:00
Joas Schilling df94cceb7b fix(db): Store last insert id before reconnect
During a reconnect we are losing the connection and when the
realLastInsertId call is the one triggering the reconnect, it
does not return the ID. But inside the reconnect, we were able
to save the last insert id, so calling it a second time is going
to be successful.
We can not return the result on the initial call, as we are already
way deeper in the stack performing the actual database query on
the doctrine driver.

Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-14 10:27:00 +02:00
Robin Appelman b67a43764a Merge pull request #52694 from nextcloud/fixHardcodedVersionsFolder
fix(files_versions): Folder should not be hardcoded
2025-05-14 10:18:07 +02:00
Ferdinand Thiessen 1ae3fa4003 chore: replace leagcy OC_Helper calls with OCP\Util
- Replace legacy calls with OCP\Util
- Add missing deprecation notices
- Inline implementation in OCP\Util and call it from OC_Helper

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-05-14 10:18:04 +02:00
Kate 0f03a892b9 Merge pull request #52782 from nextcloud/feat/log-client-side-req-id 2025-05-14 10:07:36 +02:00
Ferdinand Thiessen 85a6b0d0eb chore: deprecate \OC_Helper::canExecute
replace this legacy method with just the IBinaryFinder

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-05-14 09:55:14 +02:00
Daniel Kesselberg 023b98c44b fix(dav): only consider user's principal for unsharing entries
Before: Find all entries in `dav_shares` with `access = 5` for the user's principal, as well as group and circle memberships.

After: Find all entries in `dav_shares` with `access = 5` solely for the user's principal.

Future support for unsharing group or circle principals could be considered as a feature enhancement.

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2025-05-14 09:03:33 +02:00
Daniel Kesselberg c05d3fdb2e fix(caldav): prevent unshare entry creation for owner unsharing
- Introduces a `unshare` method in `CalDavBackend` to handle user unshares.
- Implements check to determine if unshare entry is needed based on group/circle membership.
- Ensures `updateShares` is only used when the calendar owner manages shares.
- Resolves issue where unsharing a calendar as owner created an unshare entry in `oc_dav_shares`.

Related PRs:
- https://github.com/nextcloud/server/pull/43117
- https://github.com/nextcloud/server/pull/47737

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2025-05-14 09:03:32 +02:00
Nextcloud bot a338772ddd fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-05-14 00:22:28 +00:00
Côme Chilliet 2b4bfcc212 fix(log): Only log client request id if present, and at the end
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-14 00:35:21 +02:00
Côme Chilliet 4c25654574 feat(log): Log the request id sent with the request
This should help matching client logs with server logs, hopefully.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-14 00:35:21 +02:00
Côme Chilliet 43418eea5f fix(tests): Set encryption configuration even earlier so that all users are created with private key
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 23:37:52 +02:00
Côme Chilliet a86d917907 fix(encryption): Only prevent cache deletion if target is not object store in moveFromStorage
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 23:37:52 +02:00
Côme Chilliet a79b5dea7c fix(encryption): Improve Update class and event listenening
to avoid back&forth between path and Node object

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 23:37:52 +02:00
Côme Chilliet 2d8f6b366a chore: Assert rename success in versionning tests
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 23:37:52 +02:00
Côme Chilliet e6275f8759 fix: Preserve file id when moving from object store even if encryption wrapper is present
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 23:37:52 +02:00
Côme Chilliet 27599ef45d fix(encryption): Fix a PHP error in Encryption Util in specific situations
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 23:37:52 +02:00
Côme Chilliet 08bff4cf4a fix(admin_audit): Survive if file change id after rename (it should not)
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 23:37:52 +02:00
Côme Chilliet 367c877b7a fix(tests): Avoid user login before a private key is setup
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 23:37:52 +02:00
Côme Chilliet f6f83430a9 chore: Update psalm baseline to remove fixed issue
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 23:37:52 +02:00
Côme Chilliet 561b590c77 chore(trashbin): Fix configuration mocking in trashbin tests
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 23:37:52 +02:00
Côme Chilliet 14872c8040 chore(files_versions): Only mock getSystemValue method to avoid problems in files_versions tests
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 23:37:52 +02:00
Côme Chilliet e35a8ed063 fix(tests): Disable encryption wrapper when it makes sense
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 23:37:52 +02:00
Côme Chilliet 9bb0721d66 fix: Fix mtime preservation when moving a directory across storages with encryption registered
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 23:37:52 +02:00
Côme Chilliet 8779ae38a4 fix(encryption): Fix filesize for part files in Encryption wrapper
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 23:37:52 +02:00
Côme Chilliet 21233b7e17 fix(tests): Remove Encryption disabling in ViewTest to avoid side effects
Adapt tests a bit to make them pass with Encryption wrapper registered

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 23:37:52 +02:00
Côme Chilliet 38f341c179 fix(tests): Unregister encryption modules in ViewTest to avoid side effects
It was clearing the hooks with the same results before

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 23:37:52 +02:00
Côme Chilliet 536ccf144c feat(encryption): Migrate from hooks to events
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 23:37:52 +02:00
Côme Chilliet fb615ef9f8 Merge pull request #52688 from nextcloud/feat/ocp-sanitize-filenames
feat(FilenameValidator): allow to sanitize filenames
2025-05-13 23:35:43 +02:00
Daniel Kesselberg 866063c198 fix: annotate possible exceptions
File.getContent can throw a GenericFileException since https://github.com/nextcloud/server/pull/37943.

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2025-05-13 22:27:19 +02:00
Christoph Wurst 8c68f1eeb7 Merge pull request #52778 from nextcloud/fix/noid-check-for-properties-before-processing
fix: check if properties exist before using them
2025-05-13 18:58:16 +02:00
Robin Appelman 1e72620169 fix: fix unjailedroot of nested jails if there are other wrappers in between
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-05-13 18:29:00 +02:00
Robin Appelman 0001c22668 test: add test for nested cache jail unjailedroot
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-05-13 18:29:00 +02:00
John Molakvoæ (skjnldsv) cd6a53ea4d fix(files_sharing): add mime fallback to public preview too
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2025-05-13 18:28:54 +02:00
John Molakvoæ b9da9416be Merge pull request #52785 from nextcloud/feat/file-drop-recursive 2025-05-13 18:27:19 +02:00
Côme Chilliet 20c6d1a7e9 feat: Improve init a bit, and add more profiling steps
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-05-13 16:08:49 +02:00
John Molakvoæ (skjnldsv) b286bca485 fix(dav): remove unnecessary plugin getHTTPMethods
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2025-05-13 16:03:20 +02:00
John Molakvoæ (skjnldsv) 4495794a0b feat(dav): allow uploading folders to public shares
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2025-05-13 16:03:20 +02:00
Ferdinand Thiessen 6cf1870322 feat(FilenameValidator): allow to sanitize filenames
Share the filename sanitizing with the OCP filename validator.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-05-13 14:14:17 +02:00
Robin Appelman 56897b6f3c Merge pull request #52681 from nextcloud/occ-external-dependencies
feat: add command to check files_external dependencies
2025-05-13 11:13:24 +02:00
Ferdinand Thiessen 76696be762 chore: remove legacy migration step to remove background job
This is already included since Nextcloud 29, so the background job is
removed and the class does not exist anymore.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-05-13 10:04:35 +02:00
Ferdinand Thiessen 9255afaeab refactor(updatenotification): use consistant patterns for on-demand class members
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-05-13 10:04:35 +02:00
Ferdinand Thiessen be3cf85656 refactor(updatenotification): use constant instead of variable
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-05-13 10:04:35 +02:00
Ferdinand Thiessen 6e9b4eb0a8 refactor(updatenotification): add return types and fix typos
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-05-13 10:04:35 +02:00
Ferdinand Thiessen ff318138a2 refactor(updatenotification): use OCP\ServerVersion
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-05-13 10:00:34 +02:00
Ferdinand Thiessen 1a8a6bea97 refactor: use APP_NAME where possible
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-05-13 09:49:28 +02:00
Robin Appelman f97495bf5a feat: add command to check files_external dependencies
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-05-13 09:46:19 +02:00
Côme Chilliet 2f1c74d43f Merge pull request #51920 from nextcloud/newfolder-race-improvements
fix: improve handling of newFolder race condition handling
2025-05-13 09:16:54 +02:00
Nextcloud bot d4b38083d6 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-05-13 00:22:59 +00:00
Ferdinand Thiessen d0e9e2c859 Merge pull request #52771 from nextcloud/fix/update-notification-respect-config
fix(updatenotification): respect `updatechecker` config
2025-05-12 23:30:12 +02:00
SebastianKrupinski ebd80bc142 fix: check if properties exist before using them
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2025-05-12 15:44:07 -04:00
John Molakvoæ 0eb530ecde Merge pull request #52774 from nextcloud/feat/oracle-setup-cypres 2025-05-12 19:41:31 +02:00
Ferdinand Thiessen 957efe0670 fix(updatenotification): respect updatechecker config
If disabled:
- Hide admin settings
- Do not create Nextcloud server update notifications

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-05-12 18:06:41 +02:00
John Molakvoæ (skjnldsv) 3500018b56 feat(cypress): add oracle to setup tests
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2025-05-12 17:50:17 +02:00
Louis a2eed985aa Merge pull request #52686 from nextcloud/isNumericMtime 2025-05-12 13:21:51 +02:00
Robin Appelman 7e9fc7604a Merge pull request #52693 from nextcloud/config-system-set-json
feat: allow setting system config values with json value
2025-05-12 13:18:26 +02:00
Robin Appelman 768b101a9d Merge pull request #52706 from nextcloud/info-file-more-encryption-checks
feat: add more encryption checks to info:file
2025-05-12 13:17:26 +02:00
Robin Appelman e6bdfcd8ed Merge pull request #52665 from nextcloud/mountpoint-mkdir-quota
fix: create mountpoint folder even if the user has a quota of 0
2025-05-12 13:17:02 +02:00
Robin Appelman ffe10d4916 feat: allow setting system config values with json value
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-05-12 12:02:40 +02:00
John Molakvoæ ff1dfc6bd0 Merge pull request #52703 from nextcloud/feat/setup-checks
chore(cypress): add setup tests
2025-05-12 11:05:04 +02:00
Nextcloud bot 0827645b53 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-05-12 00:22:47 +00:00
Ferdinand Thiessen a4d7c12326 Merge pull request #52747 from nextcloud/rakekniven-patch-1
chore(i18n): Adapted spelling of product name "Windows"
2025-05-11 11:32:30 +02:00
rakekniven ca1f779258 chore(i18n): Adapted spelling of product name "Windows"
Reported at Transifex.

Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
2025-05-11 10:26:16 +02:00
Nextcloud bot 195dbad119 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-05-11 00:22:42 +00:00
Kate 0a73113b35 Merge pull request #52707 from nextcloud/encryption-no-header-size-error 2025-05-10 09:47:21 +02:00
dependabot[bot] a4c923f4b9 Merge pull request #52712 from nextcloud/dependabot/composer/build/integration/behat/behat-3.22.0 2025-05-10 03:33:55 +00:00
dependabot[bot] 25e7c10a33 Merge pull request #52725 from nextcloud/dependabot/npm_and_yarn/vitest/coverage-v8-3.1.3 2025-05-10 03:33:50 +00:00
dependabot[bot] 0c200fb9ef build(deps-dev): bump @vitest/coverage-v8 from 3.1.2 to 3.1.3
Bumps [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v3.1.3/packages/coverage-v8)

---
updated-dependencies:
- dependency-name: "@vitest/coverage-v8"
  dependency-version: 3.1.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-10 01:57:30 +00:00
dependabot[bot] 70db2a4c9e build(deps-dev): bump behat/behat in /build/integration
Bumps [behat/behat](https://github.com/Behat/Behat) from 3.21.1 to 3.22.0.
- [Release notes](https://github.com/Behat/Behat/releases)
- [Changelog](https://github.com/Behat/Behat/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Behat/Behat/compare/v3.21.1...v3.22.0)

---
updated-dependencies:
- dependency-name: behat/behat
  dependency-version: 3.22.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-10 01:22:38 +00:00
Nextcloud bot 2624d2b702 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-05-10 00:22:59 +00:00
Robin Appelman b0b8159d6a fix: throw a better error if we can't get the encrypted header size
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-05-09 22:33:45 +02:00
skjnldsv 3dbc479239 chore(cypress): add setup tests
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-05-09 21:59:23 +02:00
John Molakvoæ d7f8a106cc Merge pull request #52690 from nextcloud/Valdnet-patch-1 2025-05-09 21:21:25 +02:00
Robin Appelman d9c53ef748 feat: add more encryption checks to info:file
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-05-09 16:35:31 +02:00
Sebastian Krupinski 0b354efb22 Merge pull request #51081 from nextcloud/fix/noid/calendar-enabled
fix(CalDAV): add calendar enable
2025-05-09 15:21:59 +01:00
SebastianKrupinski 477bc4e3f1 fix: add calendar enable
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2025-05-09 09:05:21 -04:00
Alexander Piskun c7430d5cb8 Merge pull request #52699 from nextcloud/fix/noid/AppAPI-invalid-userId
fix(webhooks_listener): correctly set userId from event
2025-05-09 13:37:01 +03:00
Oleksander Piskun aa0135c223 fix(webhooks_listener): correctly set userId from event
Signed-off-by: Oleksander Piskun <oleksandr2088@icloud.com>
2025-05-09 13:07:33 +03:00
Git'Fellow 1b549d4943 fix(files_versions): Folder should not be hardcoed
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2025-05-09 09:35:17 +02:00
nextcloud-command 5435f3bab0 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-05-09 07:04:07 +00:00
rakekniven 2ed16599e1 chore(i18n): Use plural
Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
2025-05-09 07:01:56 +00:00
Valdnet 95af3305d8 Spelling standardization
Signed-off-by: Valdnet <47037905+Valdnet@users.noreply.github.com>
2025-05-09 07:01:56 +00:00
Nextcloud bot 04b1dfdf13 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-05-09 00:23:45 +00:00
Kate 648745d524 Merge pull request #52634 from nextcloud/perf/share20/get-all-shares-in-folder 2025-05-08 16:24:21 +02:00
provokateurin ae16a28758 perf(Share20): Add interface to query all shares in a folder without filtering by user
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-05-08 15:29:40 +02:00
Robin Appelman 99364adc1c fix: improve handling of newFolder race condition handling
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-05-08 15:19:40 +02:00
Robin Appelman cd75876c1e fix: create mountpoint folder even if the user has a quota of 0
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-05-08 15:15:36 +02:00
Robin Appelman 1228cfd3a2 Merge pull request #52133 from nextcloud/no-shared-direct-download
fix: disable direct download for shares
2025-05-08 15:14:11 +02:00
Git'Fellow 2d68644e11 fix(files_external): Safely check if the timestamp is numeric
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2025-05-08 11:46:52 +02:00
Kate 349cc7b732 Merge pull request #52543 from nextcloud/fix/52060/manage-download-on-federated-reshare 2025-05-08 08:07:45 +02:00
Nextcloud bot 7c6f8d2a25 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-05-08 00:23:25 +00:00
Robin Appelman 3a02d942ae fix: handle transfering the root of a mountpoint
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-05-07 18:31:15 +02:00
Robin Appelman 2c0e576a7d feat: add option to include external storage when transfering files
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-05-07 18:31:13 +02:00
John Molakvoæ 0dc971189b Merge pull request #52636 from nextcloud/test/files-download 2025-05-07 11:16:17 +02:00
John Molakvoæ e3e6a3b72e Merge pull request #52438 from nextcloud/fix/middle-click 2025-05-07 10:53:12 +02:00
nextcloud-command a5b7af3d74 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-05-07 08:33:36 +00:00
skjnldsv c446274bf0 fix(files): middle click & ctrl new tab
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-05-07 10:29:36 +02:00
Kate 7880a5c25e Merge pull request #52375 from nextcloud/fix/noid/metadata-on-fresh-setup 2025-05-07 09:40:30 +02:00
Maxence Lange cd06b2432c Merge pull request #52623 from nextcloud/feat/noid/get-value-type-from-lexicon
iAppConfig: getValueType() get data from lexicon if available
2025-05-07 00:04:46 -01:00
Nextcloud bot 8528916bbc fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-05-07 00:23:10 +00:00
Daniel 1c2b4f2a41 Merge pull request #52586 from nextcloud/bugfix/noid/remove-sleep-from-throttler
fix(throttler): Always use the sleepDelayOrThrowOnMax instead of deprecated sleepDelay
2025-05-06 19:22:53 +02:00
Maxence Lange cc96782177 fix(share): assume download enabled on federated share
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-05-06 14:48:28 -01:00
F. E Noel Nfebe 598579396c Merge pull request #52511 from nextcloud/feat/no-issue/show-remote-shares-as-internal-config
feat(files_sharing): Add command to control display area for federated shares
2025-05-06 16:20:17 +02:00
nextcloud-command 46b98f3bcc chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-05-06 13:32:45 +00:00
nfebe f471bd292f fix(files_sharing): Move ConfigLexicon to Config dir, update sharing input
- Fix autoloading for new `ConfigLexicon`
- Ensure that sharing input in sharing tab respect `show-federated-shares-as-internal`:
This is important, because when federated shares are shown as internal the users should add them from the internal shares section

Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-05-06 14:28:01 +01:00
Maxence Lange 4c241d4f4b refactor: use config lexicon
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-05-06 14:28:01 +01:00
nfebe 1c50329fdb feat(files_sharing): Add toggle for federated share display area
Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-05-06 14:28:01 +01:00
Kate 87bad33496 Merge pull request #52047 from nextcloud/sub-mount-filter-no-storage 2025-05-06 15:25:23 +02:00
Kate 206aac5b5b Merge pull request #52128 from nextcloud/shared-target-verify-cache-fix 2025-05-06 15:25:09 +02:00
Kate c1a9dfd993 Merge pull request #52441 from nextcloud/scan-locked-error 2025-05-06 15:23:16 +02:00
Kate 9592390070 Merge pull request #51779 from nextcloud/object-store-filename 2025-05-06 15:21:01 +02:00
John Molakvoæ 24c6a1ff0b Merge pull request #52182 from nextcloud/feat/dav/public-share-chunked-upload 2025-05-06 14:25:28 +02:00
Louis 1c518a291d Merge pull request #52360 from nextcloud/artonge/fix/use_preview_api_for_blurhash_generation 2025-05-06 14:12:50 +02:00
Daniel 31899d95b9 Merge pull request #51924 from nextcloud/feat/issue-563-calendar-export
feat: Calendar Export
2025-05-06 13:05:20 +02:00
Kate 5cf799bdb4 Merge pull request #52642 from nextcloud/fix/task-cleanup-delay 2025-05-06 11:56:42 +02:00
Kent Delante 7c4098d8c7 Merge pull request #52583 from nextcloud/leftybournes/fix/app-sorting
fix(apps): Sort names separately from active/update state
2025-05-06 17:27:59 +08:00
nextcloud-command 7896575af8 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-05-06 09:09:42 +00:00
SebastianKrupinski a2d4f8d3f1 feat: Calendar Export
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2025-05-06 11:09:33 +02:00
Kate cd9f0350b0 Merge pull request #52621 from nextcloud/feat/noid/files-external-lexicon 2025-05-06 10:27:28 +02:00
Nextcloud bot 25c34ce1e5 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-05-06 00:23:26 +00:00
Edward Ly 6af7ca0a85 fix(TaskProcessing): increase task cleanup delay
Signed-off-by: Edward Ly <contact@edward.ly>
2025-05-05 11:24:13 -07:00
Maxence Lange 6bd5f6af83 feat(files_external): support lexicon
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-05-05 17:05:45 -01:00
Arthur Schiwon 2a1e63be14 Merge pull request #52048 from nextcloud/fix/noid/wfe-empty-group-in-check
fix(workflowengine): fix group not shown in Group membership check
2025-05-05 17:34:36 +02:00
Arthur Schiwon c051a5b650 build: compile assets
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-05-05 17:01:04 +02:00
Arthur Schiwon c2dea5faf6 fix(workflowengine): fix group not shown in Group membership check
this might have occured on instances with
- more than twenty groups, and
- on rules with more than one Group membership checks
- and at least one of them being not in the set of the first 20 groups

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-05-05 16:58:16 +02:00
Ferdinand Thiessen 88829b3abf test: add e2e tests for multiple-files download
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-05-05 16:03:08 +02:00
Ferdinand Thiessen c668703021 Merge pull request #51608 from nextcloud/feat/sanitize-filenames-command
feat(files): add command to automatically rename filenames
2025-05-05 15:47:30 +02:00
Kate 0e0abcbdc4 Merge pull request #52630 from nextcloud/fix/files/activity-rich-object-strings 2025-05-05 15:30:54 +02:00
provokateurin 01a8d7748c chore(deps): Update @nextcloud/upload to ^1.10.0
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-05-05 15:27:12 +02:00
Kate 66c2607365 Merge pull request #52628 from nextcloud/fix/files_external/hidden-password-fields 2025-05-05 14:33:37 +02:00
provokateurin cfdb919c37 fix(files): Fix non-string values for activity rich object strings
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-05-05 14:05:35 +02:00
provokateurin 46f5b07322 feat(dav): Enable chunked upload for public shares
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-05-05 13:23:11 +02:00
provokateurin a55e61d97c feat(dav): Allow UploadHome to handle public shares
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-05-05 13:23:11 +02:00
provokateurin 8813df9623 refactor(dav): Pass UID from UploadHome to UploadFolder and CleanupService
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-05-05 13:23:11 +02:00
provokateurin 7f0953d520 refactor(dav): Replace baseuri manipulation with RootCollection for public shares
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-05-05 13:23:11 +02:00
provokateurin e90e3a70fa feat(dav): Allow share principals
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-05-05 13:23:10 +02:00
provokateurin db5f6a4e96 fix(files_external): Mark password fields for LoginCredentials and SessionCredentials as hidden and optional
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-05-05 13:19:48 +02:00
provokateurin 01d2a9f76a fix(files_external): Convert VALUE_HIDDEN to FLAG_HIDDEN to allow combining VALUE_PASSWORD and FLAG_HIDDEN
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-05-05 13:19:43 +02:00
Maxence Lange b3f52ebbe8 feat(appconfig): getValueType() get data from lexicon if available
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-05-05 10:17:02 -01:00
Richard Steinmetz 4783459144 Merge pull request #52589 from nextcloud/fix/dav/orphan-cleanup-job
fix(dav): move orphan cleaning logic to a chunked background job
2025-05-05 12:32:14 +02:00
Andy Scherzinger 5644f33b44 Merge pull request #52581 from spalmurray/master
ci: pin Codecov action versions by hash
2025-05-05 12:20:36 +02:00
Richard Steinmetz d0fcb7e638 fix(dav): move orphan cleaning logic to a chunked background job
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2025-05-05 12:13:09 +02:00
Louis Chemineau 867be352f3 fix(blurhash): Use preview API to generate the previews
This allows to benefit from all the checks done by the preview API.
This also use the newly introduced `cacheResult` argument to limit disk usage.

Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-05-05 11:13:31 +02:00
Joas Schilling e6bcc4e4e9 Merge pull request #52626 from nextcloud/bugfix/noid/make-comments-test-better-readable
test(comments): Make Comments test result output properly readable
2025-05-05 11:03:04 +02:00
Louis Chemineau 2238548278 feat(previews): Support in memory preview request
This allows callers to use the API without increasing the disk usage.

Example: blurhash generation, where we request a preview for all uploaded pictures, but don't want to necessarily store that preview.
Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-05-05 10:38:51 +02:00
Joas Schilling d46d2d1acf test: Fix coding standards
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-05 10:09:22 +02:00
Joas Schilling 10424f248b test(comments): Make Comments test result output properly readable
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-05 09:38:02 +02:00
Kate ed485a9731 Merge pull request #52587 from nextcloud/bugfix/noid/fix-type-error 2025-05-05 09:08:56 +02:00
Joas Schilling aba39c717a Merge pull request #52588 from nextcloud/test/noid/more-phpunit-10
test: Finish migrating tests/Core/ to PHPUnit 10 compatible code
2025-05-05 09:08:40 +02:00
Nextcloud bot ca1fc249ce fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-05-05 00:49:13 +00:00
Simon L. f068350998 Merge pull request #52584 from nextcloud/enh/noid/fix-docs-ci
fix(CI): fix CI in documentation repository
2025-05-04 13:38:05 +02:00
Simon L. 8683a9bb4c fix(CI): fix CI in documentation repository
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-05-04 13:10:17 +02:00
Nextcloud bot e167a567f2 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-05-04 00:22:42 +00:00
Nextcloud bot d99c797aac fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-05-03 00:22:42 +00:00
Joas Schilling c24f5fb256 test: Finish migrating tests/Core/ to PHPUnit 10 compatible code
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-02 16:47:42 +02:00
Joas Schilling 9009ef1a4c fix(loginflow): Fix type error when password could not be decrypted
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-02 14:08:50 +02:00
Joas Schilling 7964f338dc fix(throttler): Remove the sleep from the throttler that throws
The sleep is not adding benefit when it's being aborted with 429
in other cases anyway.

Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-05-02 11:27:29 +02:00
Andy Scherzinger 9a16e4fd14 Merge pull request #52542 from nextcloud/artonge/fix/forward_extra
fix: Forward 'extra' argument when optimizing query
2025-05-02 08:48:58 +02:00
Kent Delante 9fbb3d8b4d fix(apps): Sort names separately from active/update state
Signed-off-by: Kent Delante <kent.delante@proton.me>
2025-05-02 14:10:38 +08:00
Nextcloud bot b231e18867 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-05-02 00:22:57 +00:00
Spencer Murray ecacdd2e77 ci: pin codecov/test-results-action@v1.1.0 with hash
Signed-off-by: Spencer Murray <spencer.murray@sentry.io>
2025-05-01 11:39:23 -04:00
Spencer Murray dbfbb8da7f ci: pin codecov/codecov-action@v5.4.2 with hash
Signed-off-by: Spencer Murray <spencer.murray@sentry.io>
2025-05-01 11:39:22 -04:00
Spencer Murray 4fe5c8a217 ci: do not upload codecov bundle when TESTING=true
Signed-off-by: Spencer Murray <spencer.murray@sentry.io>
2025-05-01 11:39:14 -04:00
John Molakvoæ 8b07a9be20 Merge pull request #52572 from nextcloud/fix/noid/flaky-sso-tests 2025-05-01 16:13:15 +02:00
Andy Scherzinger d692f39f9f Merge pull request #52575 from nextcloud/rakekniven-patch-1
fix(notification): Notification in activity shows "Rich subject or a …
2025-05-01 13:16:07 +02:00
Marcel Müller 99d23a434c fix: Ensure samba is started in kerberos tests
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2025-05-01 11:15:48 +02:00
Marcel Müller 3cf7b8ddbe chore: Add logs for dc and apache container
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2025-05-01 11:15:24 +02:00
rakekniven 1d80bcb97c fix(notification): Notification in activity shows "Rich subject or a parameter for ..."
Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
2025-05-01 08:59:46 +02:00
Nextcloud bot 112f6f43fb fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-05-01 00:23:00 +00:00
dependabot[bot] 8788d659c8 Merge pull request #52571 from nextcloud/dependabot/npm_and_yarn/vite-6.3.4 2025-04-30 20:29:22 +00:00
Daniel be1982568a Merge pull request #52546 from nextcloud/fix/52278/remove-unused-etag-check
fix: Remove unneccesary etag check
2025-04-30 22:28:27 +02:00
Marcel Müller ddd91793bc fix: Add etag tests to NavigationControllerTest
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2025-04-30 21:48:34 +02:00
dependabot[bot] 3eb797ddf7 build(deps): bump vite from 6.2.6 to 6.3.4
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.6 to 6.3.4.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.3.4/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.3.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-30 19:38:01 +00:00
Louis a67720552e Merge pull request #52551 from nextcloud/checkResultArray
fix(WeatherStatus): Check if result is an array
2025-04-30 21:30:03 +02:00
Ferdinand Thiessen df69eb56d1 Merge pull request #52269 from nextcloud/fix/files-summary
fix(files): make sure to always have proper plural forms
2025-04-30 19:11:47 +02:00
Ferdinand Thiessen 2036beec06 Merge pull request #52565 from nextcloud/artonge/fix/attribute_in_sidebar
fix: Forward attributes to the sidebar
2025-04-30 18:07:08 +02:00
nextcloud-command 0fb8daa7bb chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-30 15:59:19 +00:00
Ferdinand Thiessen 10d17de5bc Merge pull request #52298 from nextcloud/test/no-git-ignore
test: ignore git-ignored files from tests
2025-04-30 17:55:22 +02:00
Ferdinand Thiessen 04f7d4a100 fix(files): make sure to always have proper plural forms
counted words should always be translated using `n`.
We can still simply concat the segments with punctation, this always
works regardless of the language used (even with RTL / LTR languages).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-30 17:54:54 +02:00
Louis Chemineau eab2d9e3a9 fix: Forward attributes to the sidebar
Needed for Photos' sidebar tab

Signed-off-by: Louis Chemineau <louis@chmn.me>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-30 15:27:39 +00:00
Ferdinand Thiessen 3657c2a650 docs(files): add more documentation about WCF and links to the admin docs
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-30 16:32:49 +02:00
Ferdinand Thiessen f7f4930581 feat(files): add command to (dis)enable windows compatible filenames
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-30 16:32:49 +02:00
Ferdinand Thiessen 226ad23a1a feat(files): add command to automatically rename filenames
Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Co-authored-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-30 16:32:07 +02:00
Christoph Wurst 535253e0d2 Merge pull request #52228 from nextcloud/fix/issue-50748-calendar-object-move
fix(CalDAV): do not ignore move command object target uri
2025-04-30 16:27:48 +02:00
Daniel 391e09331f Merge pull request #52558 from nextcloud/chore/constants/sort
chore(Constants): Sort by value
2025-04-30 16:22:01 +02:00
provokateurin 6c127e2fdd chore(Constants): Sort by value
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-04-30 14:20:12 +02:00
John Molakvoæ 57e0ffcb27 Merge pull request #52532 from nextcloud/fix/public-displayname-owner 2025-04-30 11:32:05 +02:00
Joas Schilling d20e4d2fe9 Merge pull request #52552 from nextcloud/techdebt/noid/more-phpunit-10-preparations
tests: Prepare more tests for PHPUnit 10
2025-04-30 09:42:57 +02:00
Joas Schilling b77011a918 test: Prepare more tests for PHPUnit 10
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-04-30 09:18:01 +02:00
John Molakvoæ c06d851ead Merge pull request #52535 from nextcloud/fix/public-owner-scope 2025-04-30 08:59:22 +02:00
nextcloud-command b95695b110 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-30 06:43:23 +00:00
skjnldsv 58aaddeca5 fix(dav): check the owner displayName scope before giving attribute
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-04-30 08:37:08 +02:00
Git'Fellow 9c8e026003 fix (WeatherStatus): Check if result is an array
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2025-04-30 08:01:35 +02:00
Nextcloud bot 88aa80e847 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-30 00:23:19 +00:00
Marcel Müller 1addd35b78 fix: Remove unneccesary etag check
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2025-04-29 23:15:50 +02:00
Richard Steinmetz 6f661deb75 Merge pull request #52534 from nextcloud/perf/caldav/bigger-chunks-orphan-repair
perf(caldav): increase chunk size in RemoveOrphanEventsAndContacts repair step
2025-04-29 23:05:05 +02:00
skjnldsv bcc8de0c9d fix(files_sharing): bring back owner and ownerDisplayName initial state
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-04-29 21:25:47 +02:00
Louis Chemineau 5c73f2c37f fix: Forward 'extra' argument when optimizing query
This allows DAV SEARCH queries containing optimizable comparisons on files metadata like:

```xml
				<d:or>
					<d:eq>
						<d:prop>
							<nc:metadata-photos-place />
						</d:prop>
						<d:literal>La Valette-du-Var</d:literal>
					</d:eq>
					<d:eq>
						<d:prop>
							<nc:metadata-photos-place />
						</d:prop>
						<d:literal>Évenos</d:literal>
					</d:eq>
				</d:or>
```

Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-04-29 18:17:23 +02:00
Andy Scherzinger f26dc79480 Merge pull request #52179 from spalmurray/master
ci: add Codecov's test analytics and bundle analysis features
2025-04-29 17:27:36 +02:00
Richard Steinmetz 33a8e2226c perf(caldav): increase chunk size in RemoveOrphanEventsAndContacts repair step
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2025-04-29 16:34:19 +02:00
Joas Schilling e7fbfa61e5 Merge pull request #52051 from Lukasdotcom/feat/text-to-speech
feat(TaskProcessing): Add TextToSpeech provider
2025-04-29 15:41:21 +02:00
F. E Noel Nfebe 008e9f2101 Merge pull request #52526 from nextcloud/fix/no-issue/prevent-create-delete-perms-on-file-shares
fix(files_sharing): Prevent create/delete permissions on file shares
2025-04-29 14:14:14 +02:00
nextcloud-command 9483507093 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-29 11:49:59 +00:00
Ferdinand Thiessen 28df049b99 Merge pull request #52525 from nextcloud/fix/noid/wfe-set-inital-value
fix(WFE): properly set inital status
2025-04-29 13:48:04 +02:00
nfebe 99ae04d9ce fix(files_sharing): Prevent create/delete permissions on file shares
File shares can't support create or delete permissions. This change ensures those permissions are
 stripped or ignored when the shared item is not a folder.

Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-04-29 13:42:02 +02:00
Ferdinand Thiessen 698146c366 Merge pull request #51592 from nextcloud/fix/search-cast
fix(dav): throw invalid argument when property type does not match
2025-04-29 13:41:48 +02:00
Arthur Schiwon 94202f2664 build: compile assets
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-04-29 12:23:36 +02:00
Arthur Schiwon 09bb0720d4 fix(WFE): properly set inital status
The operationComponent.value is only possibly available with registered
operations that have the value prop. Ones that do not would not have the
value set properly initially. Going to inputValue, which is mapped to the
components model-value, solves this.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-04-29 12:23:27 +02:00
Ferdinand Thiessen 9df998e710 Merge pull request #52369 from nextcloud/fix/files-versions-author
fix(files_versions): wait for version to be created before setting metadata
2025-04-29 11:01:58 +02:00
Ferdinand Thiessen 0e50ba839c test: ignore git-ignored files from tests
Fix running `npm run test` when your development setup has other apps
checked out - like having the viewer app installed locally in `apps`.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-29 10:15:29 +02:00
Stephan Orbaugh f9b6b88d5c Merge pull request #52479 from RobertZenz/bugfix/fix-jsresourcelocator-incorrect-parameter
fix(JSResourceLocator) fix incorrect parameter being used.
2025-04-29 09:10:51 +02:00
Nextcloud bot 0d98f91ae6 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-29 00:22:42 +00:00
Spencer Murray 0395eaacbb ci: change if always() to if not cancelled on test results uploads
Signed-off-by: Spencer Murray <spencer.murray@sentry.io>
2025-04-28 16:01:50 -04:00
Spencer Murray 9c3bdf2647 ci: always upload test results, even if tests fail
Signed-off-by: Spencer Murray <spencer.murray@sentry.io>
2025-04-28 16:01:49 -04:00
Spencer Murray c795fb1937 ci: fix whitespace
Signed-off-by: Spencer Murray <spencer.murray@sentry.io>
2025-04-28 16:01:49 -04:00
Spencer Murray cb4e76060d ci: tweak Codecov webpack plugin config
Signed-off-by: Spencer Murray <spencer.murray@sentry.io>
2025-04-28 16:01:48 -04:00
Spencer Murray 41764b9c09 ci: always collect and upload test results, not just on coverage runs
Signed-off-by: Spencer Murray <spencer.murray@sentry.io>
2025-04-28 16:01:47 -04:00
Spencer Murray 191d07d588 ci: add Codecov's test analytics and bundle analysis features
Signed-off-by: Spencer Murray <spencer.murray@sentry.io>
2025-04-28 16:01:43 -04:00
Kate 10a01423ec Merge pull request #52402 from nextcloud/fix/32bit-pack 2025-04-28 21:23:17 +02:00
Joas Schilling 40e52e212a Merge pull request #52434 from nextcloud/bugfix/52420/closure-as-default-app
fix(navigation): Fix default app entry registered as closure
2025-04-28 16:54:11 +02:00
Andy Scherzinger 0d19a1333f Merge pull request #52443 from nextcloud/reminder-dont-validiate-node-dav
fix: don't check node access again for listing reminders in dav
2025-04-28 14:51:25 +02:00
Richard Steinmetz 1cb1f39279 Merge pull request #52494 from nextcloud/fix/default-contact
fix: check if config is enabled before creating a default contact
2025-04-28 13:22:34 +02:00
Stephan Orbaugh 115cca57aa Merge pull request #52445 from invario/master
chore: Update config.sample.php to document new ffprobe path option
2025-04-28 13:21:50 +02:00
Ferdinand Thiessen a22171507a fix(32bit): use PHP_INT_MAX where needed
* Typo from https://github.com/nextcloud/server/pull/52392

`0xFFFF` is only 2 bytes, but we need either `0xFFFFFFFF` or maybe a bit
easier to read `PHP_INT_MAX`.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-28 12:33:58 +02:00
Hamza Mahjoubi 58ffd9d06e fix: check if config is enabled before creating a default contact
Signed-off-by: Hamza Mahjoubi <hamzamahjoubi221@gmail.com>
2025-04-28 11:46:32 +02:00
F. E Noel Nfebe 6a2c0a254e Merge pull request #52423 from nextcloud/fix/51226/show-remote-shares-as-external-2
fix(files_sharing): Show remote shares as external
2025-04-28 11:13:45 +02:00
Nextcloud bot e5676ce0a9 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-28 00:23:11 +00:00
Andy Scherzinger e2a54af254 Merge pull request #51609 from nextcloud/fix/files-versions-listeners
fix(files_versions): only handle path updates when there is path
2025-04-28 00:26:04 +02:00
Ferdinand Thiessen 8ca23f2c7d fix(files_versions): only handle path updates when there is path
`getPathForNode` can fail with null for various reasons (e.g. no owner),
in this cases we need to just skip the event handling.

Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Co-authored-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-27 23:51:56 +02:00
Ferdinand Thiessen e33fcfddc1 fix(dav): throw invalid argument when property type does not match
* Resolves https://github.com/nextcloud/server/issues/49972

Currently a TypeError is thrown when casting fails,
this lead to a HTTP 500 error. Instead throw a proper
InvalidArgumentError so the user receives a HTTP 400.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-27 23:05:07 +02:00
Ferdinand Thiessen 5862d5aea1 Merge pull request #52250 from nextcloud/fix/twitter-fediverse
fix(settings): allow to clear twitter and fediverse
2025-04-27 23:00:39 +02:00
Andy Scherzinger b3bea71f1e Merge branch 'master' into fix/twitter-fediverse 2025-04-27 22:46:17 +02:00
dependabot[bot] 71463f984a Merge pull request #52461 from nextcloud/dependabot/npm_and_yarn/vitest-3.1.2 2025-04-27 13:23:31 +00:00
Ferdinand Thiessen 3b63ad000a chore: align other vitest related packages
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-27 14:55:40 +02:00
dependabot[bot] 902d01cc47 build(deps-dev): bump vitest from 3.1.1 to 3.1.2
Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 3.1.1 to 3.1.2.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v3.1.2/packages/vitest)

---
updated-dependencies:
- dependency-name: vitest
  dependency-version: 3.1.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-27 14:55:08 +02:00
nextcloud-command 02da7fdeb7 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-27 14:15:07 +02:00
Ferdinand Thiessen dabe0ec29f fix(settings): allow to clear twitter and fediverse
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-27 14:15:07 +02:00
Ferdinand Thiessen e2291024f0 Merge pull request #52417 from nextcloud/fix/group-admin-new-user
fix(settings): only provide groups the subadmin has access to
2025-04-27 12:39:45 +02:00
Ferdinand Thiessen 1ba88da113 chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-27 11:38:42 +02:00
Ferdinand Thiessen 6d8c49f0d4 fix(settings): group admins only can add users to their groups
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-27 11:35:40 +02:00
Ferdinand Thiessen 8cc0c266d5 feat(settings): provide user groups for accounts list
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-27 11:35:40 +02:00
Nextcloud bot 8df3310cc4 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-27 00:22:59 +00:00
dependabot[bot] 8c01acc13c Merge pull request #52456 from nextcloud/dependabot/npm_and_yarn/webpack-5.99.7 2025-04-26 19:36:16 +00:00
nextcloud-command fa3caf1763 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-26 19:21:01 +00:00
dependabot[bot] 3ea86c1087 build(deps-dev): bump webpack from 5.99.6 to 5.99.7
Bumps [webpack](https://github.com/webpack/webpack) from 5.99.6 to 5.99.7.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.99.6...v5.99.7)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.99.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-26 21:17:01 +02:00
dependabot[bot] 832b1509f4 Merge pull request #52458 from nextcloud/dependabot/npm_and_yarn/marked-15.0.11 2025-04-26 17:25:00 +00:00
nextcloud-command 5fbce0d1c1 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-26 17:10:32 +00:00
dependabot[bot] edf6279a95 build(deps): bump marked from 15.0.8 to 15.0.11
Bumps [marked](https://github.com/markedjs/marked) from 15.0.8 to 15.0.11.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v15.0.8...v15.0.11)

---
updated-dependencies:
- dependency-name: marked
  dependency-version: 15.0.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-26 19:07:15 +02:00
Robert Zenz f428e6786b fix(JSResourceLocator) fix incorrect parameter being used. 2025-04-26 15:19:55 +02:00
Richard Steinmetz bb886258e0 Merge pull request #52428 from nextcloud/chore/dav/refactor-inline-listeners
refactor(dav): refactor inline event listeners
2025-04-26 09:00:25 +02:00
Lukas Schaefer 99e8849b6c feat(TaskProcessing): Add TextToSpeech provider
Signed-off-by: Lukas Schaefer <lukas@lschaefer.xyz>
2025-04-26 00:46:23 -04:00
dependabot[bot] e49bda0e20 Merge pull request #52460 from nextcloud/dependabot/npm_and_yarn/puppeteer-24.7.2 2025-04-26 03:11:48 +00:00
dependabot[bot] 668b456ddd Merge pull request #52455 from nextcloud/dependabot/composer/build/integration/behat/behat-3.21.1 2025-04-26 03:09:15 +00:00
dependabot[bot] a7fd536570 Merge pull request #52457 from nextcloud/dependabot/npm_and_yarn/stylelint-16.19.1 2025-04-26 02:44:33 +00:00
dependabot[bot] e5c5023844 build(deps-dev): bump puppeteer from 24.7.0 to 24.7.2
Bumps [puppeteer](https://github.com/puppeteer/puppeteer) from 24.7.0 to 24.7.2.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.7.0...puppeteer-v24.7.2)

---
updated-dependencies:
- dependency-name: puppeteer
  dependency-version: 24.7.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-26 01:45:15 +00:00
dependabot[bot] a452afd77c build(deps-dev): bump stylelint from 16.18.0 to 16.19.1
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.18.0 to 16.19.1.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.18.0...16.19.1)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-version: 16.19.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-26 01:43:14 +00:00
dependabot[bot] 20347c216d build(deps-dev): bump behat/behat in /build/integration
Bumps [behat/behat](https://github.com/Behat/Behat) from 3.21.0 to 3.21.1.
- [Release notes](https://github.com/Behat/Behat/releases)
- [Changelog](https://github.com/Behat/Behat/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Behat/Behat/compare/v3.21.0...v3.21.1)

---
updated-dependencies:
- dependency-name: behat/behat
  dependency-version: 3.21.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-26 01:42:32 +00:00
invario 1386b8096d chore: Update config.sample.php to document new ffprobe path option
PR #51712 added new preview_ffprobe_path parameter. This PR updates config.sample.php to document this new optional parameter and the fallback behavior if the option is not set.

Signed-off-by: invario <67800603+invario@users.noreply.github.com>
2025-04-25 20:33:25 -04:00
Nextcloud bot 7cbca23e51 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-26 00:22:58 +00:00
Robin Appelman 3d36625af6 fix: don't check node access again for listing reminders in dav
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-04-25 20:34:58 +02:00
Richard Steinmetz 16dd61cc28 refactor(dav): refactor inline event listeners
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2025-04-25 20:32:18 +02:00
Richard Steinmetz de23547ef9 Merge pull request #52427 from nextcloud/chore/dav/first-class-callable
refactor(dav): use first class callable syntax to boot the app
2025-04-25 20:31:06 +02:00
Robin Appelman bb4cf2830a fix: better error message when trying to scan a folder that is already being scanned
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-04-25 18:40:03 +02:00
Git'Fellow 5f40fad790 Merge pull request #52439 from nextcloud/backport/45765/master
[master] fix(settings): Use axios directly for health check to preven URL sanitizing
2025-04-25 17:45:53 +02:00
nextcloud-command bfd8c1db47 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-25 14:45:41 +00:00
Ferdinand Thiessen 5dfbac867f fix(settings): Use axios directly for health check to preven URL sanitizing
When using Apache with `DirectorySlash` it will respond with 301 and the URL with trailing slash.
But when using traefik as the reverse proxy it can not rewrite redirects, this leads to the problem
that the Apache response is using HTTP in the redirect but the real server (traefik) is only listening on HTTPS.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-25 14:39:03 +00:00
Richard Steinmetz 109422f24e refactor(dav): use first class callable syntax to boot the app
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2025-04-25 15:05:50 +02:00
Joas Schilling cdfce26ea9 fix(navigation): Fix absolute URLs from default apps
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-04-25 14:49:19 +02:00
Joas Schilling 553870d30a fix(navigation): Fix default app entry registered as closure
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-04-25 14:47:33 +02:00
Kate 84e9aff847 Merge pull request #52429 from nextcloud/bugfix/noid/fix-autocomplete-of-app-configs 2025-04-25 14:18:08 +02:00
nextcloud-command 3bdc173644 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-25 11:05:30 +00:00
Andy Scherzinger f154e60af3 Merge pull request #52424 from nextcloud/bugfix/noid/censor-more-app-configs
fix(config): Censor more app configs in system report
2025-04-25 13:03:38 +02:00
nfebe 6454cb5124 perf(files_sharing): Change sharing filtering from O(3n) to O(n)
Replaced multiple Array.filter() calls with a single loop to improve performance.
This avoids redundant iterations over the shares array and categorizes them more efficiently.

Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-04-25 12:00:04 +01:00
nfebe 26cb5ebd8a fix(files_sharing): Show remote shares in external shares section
Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-04-25 11:59:47 +01:00
Stephan Orbaugh 258983e665 Merge pull request #51355 from AIlkiv/refactor/rollback-hook-usage
refactor: cleanup rollback hook usage
2025-04-25 11:42:20 +02:00
Joas Schilling 7962df9427 fix(occ): Fix autocompletion of config:app:* commands
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-04-25 11:30:21 +02:00
Joas Schilling 8524955091 fix(config): Censor more app configs in system report
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-04-25 11:01:38 +02:00
ailkiv 616716cd6a refactor: cleanup rollback hook usage
Signed-off-by: ailkiv <a.ilkiv.ye@gmail.com>
2025-04-25 08:25:11 +00:00
Joas Schilling 0c3ebbfed5 Merge pull request #52404 from nextcloud/bugfix/49973/allow-federated-filesharing-without-federation-app
fix(federation): Allow federation file sharing when federation app is…
2025-04-25 09:33:33 +02:00
Nextcloud bot 1ae57fb054 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-25 00:22:43 +00:00
Andy Scherzinger c45c792622 Merge pull request #51309 from nextcloud/backport/51260/master
test(cypress): rename select all clear
2025-04-24 23:38:23 +02:00
skjnldsv 3b85743cf9 fix(cypress): rename select all clear
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-04-24 23:25:23 +02:00
Andy Scherzinger 34949e4a36 Merge pull request #52079 from IONOS-Productivity/fix/s3_traffic_on_video_thumbnails
fix(previews): avoid large file downloads for remote movie storage
2025-04-24 14:44:34 +02:00
Daniel cc5ca58816 Merge pull request #51438 from nextcloud/perf/db/cards-properties-abid-name-value-idx
perf(db): Extend index on cards_properties to cover name and value
2025-04-24 13:33:37 +02:00
Ferdinand Thiessen 0051db7a43 Merge pull request #52373 from nextcloud/fix/files-version-creation
fix(files_versions): create version if previous does not exist
2025-04-24 13:30:49 +02:00
Ferdinand Thiessen 4114fbfaff Merge pull request #52400 from nextcloud/chore/laravel-php84
chore(deps): Bump laravel/serializable-closure from 1.3.5 to 2.0.4
2025-04-24 13:04:26 +02:00
Joas Schilling 4fc5eaeff0 fix(federation): Allow federation file sharing when federation app is disabled
The app id might be misleading, the federation app is for syncing addressbooks
with trusted servers. It is not always enabled and show not have to be.

Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-04-24 13:03:14 +02:00
Kate 85b43f62a3 Merge pull request #52276 from nextcloud/feat/noid/log-query-parameters 2025-04-24 12:56:11 +02:00
Ferdinand Thiessen 43c5232333 Merge pull request #52364 from nextcloud/fix/51875/allow-keyboard-input-4-share-expiration-on-chrome
fix(files_sharing): Improve expiration date input change handling
2025-04-24 12:46:31 +02:00
nextcloud-command 7a1c947ef0 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-24 10:30:44 +00:00
nfebe 3c73f3fcae fix(files_sharing): Improve expiration date input change handling
If the time picker component is emitting a Date object already, then there is redundant call of `new Date(new Date())` and
therefore introduces subtle bugs, for example on chrome users could not  enter expiration date with keyboard.

- Use @update:model-value instead of @change/@input for more reliable date updates
- Ensure null and invalid dates are handled correctly in onExpirationChange
- Validate date input before updating defaultExpirationDateEnabled

Resolves : https://github.com/nextcloud/server/issues/51875

Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-04-24 12:25:47 +02:00
Kate 0567332af1 Merge pull request #52374 from nextcloud/fix/updatenotification/applist-error-handling 2025-04-24 12:24:41 +02:00
nextcloud-command 9ae83f4bae chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-24 10:10:10 +00:00
Ferdinand Thiessen 4cb41d6111 chore(deps): Bump laravel/serializable-closure from 1.3.5 to 2.0.4
* for https://github.com/nextcloud/3rdparty/pull/2071
* enabled offical PHP 8.4 support

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-24 11:11:08 +02:00
Ferdinand Thiessen 94538c11c7 Merge pull request #52396 from nextcloud/chore/openstack-3-12
chore(3rdparty): update `php-opencloud/openstack` to v3.12.0 for PHP8.4
2025-04-24 11:07:42 +02:00
Stephan Orbaugh be5431253a Merge pull request #48277 from schaarsc/feature/32735-occ-add-tag-to-file-master
new occ commands to manage system-tags for files
2025-04-24 10:12:33 +02:00
Stephan Orbaugh aa8c0a68cb Merge pull request #50650 from IONOS-Productivity/feat/login_flow_v2-user_agents-allow-list
feat(login-flow-v2): Restrict allowed apps by user agent check
2025-04-24 10:12:19 +02:00
Côme Chilliet 7a50f612d7 Merge pull request #52392 from nextcloud/fix/32bit-support
fix(32bit): make `pack` compatible with 32bit PHP
2025-04-24 09:53:20 +02:00
Ferdinand Thiessen d86189adc5 Merge pull request #52299 from nextcloud/refactor/preview-tests
refactor: Thumbnail Generator logging and tests
2025-04-24 09:50:11 +02:00
Ferdinand Thiessen 3845a64df0 chore(3rdparty): update php-opencloud/openstack to v3.12.0 for PHP8.4
| Production Changes      | From    | To      | Compare                                                                     |
|-------------------------|---------|---------|-----------------------------------------------------------------------------|
| guzzlehttp/guzzle       | 7.9.2   | 7.9.3   | [...](https://github.com/guzzle/guzzle/compare/7.9.2...7.9.3)               |
| guzzlehttp/promises     | 2.0.4   | 2.2.0   | [...](https://github.com/guzzle/promises/compare/2.0.4...2.2.0)             |
| guzzlehttp/psr7         | 2.7.0   | 2.7.1   | [...](https://github.com/guzzle/psr7/compare/2.7.0...2.7.1)                 |
| guzzlehttp/uri-template | v1.0.3  | v1.0.4  | [...](https://github.com/guzzle/uri-template/compare/v1.0.3...v1.0.4)       |
| php-opencloud/openstack | v3.10.0 | v3.12.0 | [...](https://github.com/php-opencloud/openstack/compare/v3.10.0...v3.12.0) |

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-24 09:29:36 +02:00
Ferdinand Thiessen 9fce0f9297 Merge pull request #52391 from nextcloud/fix/harden-template-functions
fix(Template): harden enabled-theme logic
2025-04-24 07:38:20 +02:00
Nextcloud bot 1cc990358c fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-24 00:23:35 +00:00
Andy Scherzinger 2c8c036bdb Merge pull request #51439 from nextcloud/fix/create-missing-replacement-indexes
fix(db): Create replacement index where original index is missing
2025-04-24 00:49:22 +02:00
Ferdinand Thiessen 8b1dcb9759 Merge pull request #50444 from nextcloud/jtr-docs-dispatcher-return
docs(dispatcher): Correct described return values
2025-04-24 00:26:34 +02:00
nfebe d980e69f74 refactor: Thumbnail Generator logging and tests
Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-04-23 23:06:28 +01:00
Andy Scherzinger 25ef415e14 Merge pull request #51766 from nextcloud/info-file-permissions
feat: show permissions in info:file output
2025-04-23 23:42:20 +02:00
Ferdinand Thiessen 9bfea21520 fix(32bit): make pack compatible with 32bit PHP
The `P` formatter is 64bit only - we need to manually pack the 64bit.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-23 23:28:14 +02:00
Ferdinand Thiessen f5f5a07e38 Merge pull request #52347 from nextcloud/dependabot/github_actions/github-actions-510ea978f9
build(deps): bump the github-actions group with 4 updates
2025-04-23 23:27:50 +02:00
Ferdinand Thiessen 8503ce8968 fix(Template): harden enabled-theme logic
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-23 22:57:12 +02:00
Josh 6951053c90 docs(dispatcher): Correct described return values
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-04-23 22:43:03 +02:00
Ferdinand Thiessen 56b9974c41 Merge pull request #51994 from nextcloud/fix/noid/allows-some-char-from-federationid
fix(federation): allows equal signs in federation id
2025-04-23 21:23:05 +02:00
Ferdinand Thiessen 366eb9c2b6 Merge pull request #52361 from nextcloud/fix/51833/add-retries-to-s3-client
fix(objectstorage): add retry attempts to S3 connection
2025-04-23 20:39:56 +02:00
Ferdinand Thiessen 271df14e6b Merge pull request #52290 from nextcloud/fix/show-better-mtime
refactor(files): share `mtime` for file entry components
2025-04-23 20:38:56 +02:00
Ferdinand Thiessen 9794f90b9d chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-23 20:22:43 +02:00
Ferdinand Thiessen 05fecce17d fix(files): share mtime for file entry components
Also restructure the mtime opacity calculation to work as expected also
for old files.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-23 20:22:28 +02:00
Maxence Lange 65a2b3b689 fix(metadata): set background job on fresh setup
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-04-23 13:57:25 -01:00
provokateurin cc17e4c1fe fix(updatenotification): Fix error handling when fetching applist for server update
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-04-23 16:42:35 +02:00
Ferdinand Thiessen 5e03c6fb58 fix(files_versions): create version if previous does not exist
This issue happens reproducible if:
- Versions is disabled
- Upload a file
- Enable versions
- Upload same file unchanged
- Now the error happens.

Problem is that the mtime is unchanged so no version will be created on the upload, but it tries to update the last version which does not exists.
Instead of "upload same file unchanged" you can also - like in the example stack trace above - use Android with an SD card with invalid mtime -> the mtime will be stripped so its always the same.
Instead of disable versions the same also happens if e.g. the versions creation failed due to other issues.

The solution now is to catch the exception and create if not exists.
A cleaner solution would be to have a method on the versions backend
like `hasVersionEntity(File $file, int $revision): bool` but this would
be a breaking change or at least a feature that apps need to implement.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-23 16:03:20 +02:00
John Molakvoæ 9bfa1e7bd9 Merge pull request #52094 from nextcloud/rakekniven-patch-1 2025-04-23 14:16:11 +02:00
dependabot[bot] 09854b4549 Merge pull request #52315 from nextcloud/dependabot/npm_and_yarn/dockerode-4.0.6 2025-04-23 12:10:59 +00:00
Kate 38f7e0f1d1 Merge pull request #52366 from nextcloud/feat/noid/profile-data-api 2025-04-23 14:05:04 +02:00
nextcloud-command a68e0355d9 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-23 13:54:34 +02:00
Ferdinand Thiessen 21c128754d Merge pull request #52241 from nextcloud/bugfix/noid/fix-room-or-resource-condition
fix(caldav): Fix check for ROOM or RESOURCE condition
2025-04-23 13:54:01 +02:00
rakekniven b27d76059e chore(i18n): Use "name" instead of "nickname"
Users asked why they should use a nickname?
"Name" covers nickname, pseudonym, username or real name.


Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
2025-04-23 13:53:18 +02:00
dependabot[bot] de5142545f Merge pull request #52321 from nextcloud/dependabot/npm_and_yarn/webpack-5.99.6 2025-04-23 11:37:17 +00:00
dependabot[bot] 893d81a5a5 build(deps-dev): bump webpack from 5.99.5 to 5.99.6
Bumps [webpack](https://github.com/webpack/webpack) from 5.99.5 to 5.99.6.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.99.5...v5.99.6)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.99.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-23 11:23:03 +00:00
Ferdinand Thiessen 2020760f88 fix(files_versions): wait for version to be created before setting metadata
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-23 13:09:43 +02:00
Joas Schilling 9ed33cf6aa feat(profile): Add an API to get the profile field data
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-04-23 12:38:18 +02:00
Anna Larch 49baa914cf fix(objectstorage): add retry attempts to S3 connection
Signed-off-by: Anna Larch <anna@nextcloud.com>
2025-04-23 12:15:06 +02:00
Misha M.-Kupriyanov 4a924bf400 fix(previews): avoid large file downloads for remote movie storage
Prevent downloading entire movie files from remote storage (e.g., S3)
when the 'moov atom' is located at the end of the file.

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
2025-04-23 10:04:27 +02:00
Misha M.-Kupriyanov d1a94f3c9c feat(login-flow-v2): Restrict allowed apps by user agent check
Enable via:
./occ config:system:set core.login_flow_v2.allowed_user_agents 0  --value '/Custom Foo Client/i'
./occ config:system:set core.login_flow_v2.allowed_user_agents 1  --value '/Custom Bar Client/i'

if user agent string is unknown
the template with "Access forbidden"-"Please use original client" will be displayed

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
2025-04-23 09:45:23 +02:00
Nextcloud bot 14868ac0ee fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-23 00:22:56 +00:00
dependabot[bot] 0c177240c3 Merge pull request #52330 from nextcloud/dependabot/npm_and_yarn/sass-1.87.0 2025-04-22 19:21:42 +00:00
John Molakvoæ 1f81bc05b9 Merge pull request #52296 from nextcloud/fix/drop-file-preview 2025-04-22 20:08:16 +02:00
dependabot[bot] 731060fe69 build(deps-dev): bump sass from 1.86.3 to 1.87.0
Bumps [sass](https://github.com/sass/dart-sass) from 1.86.3 to 1.87.0.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.86.3...1.87.0)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.87.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-22 15:39:53 +00:00
nextcloud-command 4628f85f85 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-22 15:32:13 +00:00
John Molakvoæ (skjnldsv) 12327fea1e fix(files): prevent dragging preview when drag-drop
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2025-04-22 15:26:18 +00:00
dependabot[bot] 9a8c099b48 Merge pull request #52325 from nextcloud/dependabot/npm_and_yarn/puppeteer-24.7.0 2025-04-22 15:17:04 +00:00
dependabot[bot] bd05af4273 Merge pull request #52304 from nextcloud/dependabot/composer/build/integration/behat/behat-3.21.0 2025-04-22 14:48:02 +00:00
Maxence Lange 743924ce4d fix(federation): allows equal signs in federation id
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-04-22 13:03:56 -01:00
dependabot[bot] ce26d5450a build(deps): bump the github-actions group with 4 updates
Bumps the github-actions group with 4 updates: [shivammathur/setup-php](https://github.com/shivammathur/setup-php), [actions/setup-node](https://github.com/actions/setup-node), [codecov/codecov-action](https://github.com/codecov/codecov-action) and [nextcloud-libraries/npm-audit-action](https://github.com/nextcloud-libraries/npm-audit-action).


Updates `shivammathur/setup-php` from 2.32.0 to 2.33.0
- [Release notes](https://github.com/shivammathur/setup-php/releases)
- [Commits](https://github.com/shivammathur/setup-php/compare/9e72090525849c5e82e596468b86eb55e9cc5401...cf4cade2721270509d5b1c766ab3549210a39a2a)

Updates `actions/setup-node` from 4.3.0 to 4.4.0
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/cdca7365b2dadb8aad0a33bc7601856ffabcc48e...49933ea5288caeca8642d1e84afbd3f7d6820020)

Updates `codecov/codecov-action` from 5.4.0 to 5.4.2
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Commits](https://github.com/codecov/codecov-action/compare/v5.4.0...v5.4.2)

Updates `nextcloud-libraries/npm-audit-action` from 0.1.0 to 0.2.0
- [Release notes](https://github.com/nextcloud-libraries/npm-audit-action/releases)
- [Commits](https://github.com/nextcloud-libraries/npm-audit-action/compare/2a60bd2e79cc77f2cc4d9a3fe40f1a69896f3a87...1b1728b2b4a7a78d69de65608efcf4db0e3e42d0)

---
updated-dependencies:
- dependency-name: shivammathur/setup-php
  dependency-version: 2.33.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: actions/setup-node
  dependency-version: 4.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: codecov/codecov-action
  dependency-version: 5.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: nextcloud-libraries/npm-audit-action
  dependency-version: 0.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-22 13:04:58 +00:00
dependabot[bot] 796e089c0d build(deps-dev): bump puppeteer from 24.6.1 to 24.7.0
Bumps [puppeteer](https://github.com/puppeteer/puppeteer) from 24.6.1 to 24.7.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.6.1...puppeteer-v24.7.0)

---
updated-dependencies:
- dependency-name: puppeteer
  dependency-version: 24.7.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-22 12:59:48 +00:00
dependabot[bot] 056f510228 build(deps-dev): bump dockerode from 4.0.5 to 4.0.6
Bumps [dockerode](https://github.com/apocas/dockerode) from 4.0.5 to 4.0.6.
- [Release notes](https://github.com/apocas/dockerode/releases)
- [Commits](https://github.com/apocas/dockerode/compare/v4.0.5...v4.0.6)

---
updated-dependencies:
- dependency-name: dockerode
  dependency-version: 4.0.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-22 12:58:34 +00:00
dependabot[bot] 32d90b528c build(deps-dev): bump behat/behat in /build/integration
Bumps [behat/behat](https://github.com/Behat/Behat) from 3.20.0 to 3.21.0.
- [Release notes](https://github.com/Behat/Behat/releases)
- [Changelog](https://github.com/Behat/Behat/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Behat/Behat/compare/v3.20.0...v3.21.0)

---
updated-dependencies:
- dependency-name: behat/behat
  dependency-version: 3.21.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-22 12:56:17 +00:00
Ferdinand Thiessen cb92b5a64a Merge pull request #52293 from nextcloud/chore/dependabot
ci(dependabot): remove stable29 and group composer directories
2025-04-22 14:55:21 +02:00
Julius Knorr 12490b2837 Merge pull request #52099 from nextcloud/perf/excimer
Built in profiling capabilities with excimer
2025-04-22 14:50:14 +02:00
Ferdinand Thiessen efa2cda370 Merge pull request #51491 from nextcloud/fix/path-length
fix(dav): allow uploading of files with long filenames
2025-04-22 13:53:26 +02:00
F. E Noel Nfebe 25bc18c6dc Merge pull request #52221 from nextcloud/feat/no-issue/add-logging-preview-generation
feat: add logging to preview generation
2025-04-22 12:37:49 +02:00
Ferdinand Thiessen 9f6b2b8e45 Merge pull request #52291 from nextcloud/revert/gfm-pin
chore: revert "fix(deps): lock mdast-util-gfm-autolink-literal library"
2025-04-22 11:26:00 +02:00
Ferdinand Thiessen b4255a9652 fix(dav): allow uploading of files with long filenames
A filename must be less or equal 255 characters, but when adding the
`.part` and `.ocfiletransfer` extensions we might overflow this limit.
So we should also use filename hashes for uploading when the file has a
long filename, similar like when we are uploading to the user storage
directly.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-22 11:09:25 +02:00
Ferdinand Thiessen 6141ab1da6 refactor(dav): simplify length header handling
Reduce nesting and drop duplicated sections.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-22 11:09:05 +02:00
Ferdinand Thiessen fd22b9cb18 ci(dependabot): remove stable29 and group composer directories
- stable29 is EOL
- make configuration better readable by grouping composer configurations
  with `directories` instead of individual configurations.
- do not allow major updates on stable branches, but still do patch
  updates.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-22 11:06:27 +02:00
Joas Schilling fe7c1c0aad fix(caldav): Fix check for ROOM or RESOURCE comment
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-04-22 11:02:13 +02:00
John Molakvoæ 703af4bd44 Merge pull request #52249 from nextcloud/chore/update-3rdparty 2025-04-22 10:44:45 +02:00
Ferdinand Thiessen f24d178d0f chore: revert "fix(deps): lock mdast-util-gfm-autolink-literal library to exact version 2.0.0"
This reverts commit d028b61a40.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-22 10:27:25 +02:00
dependabot[bot] c4b9e9d4a1 Merge pull request #52272 from nextcloud/dependabot/npm_and_yarn/libphonenumber-js-1.12.7 2025-04-22 08:07:04 +00:00
Ferdinand Thiessen f1448fcf07 chore(theming): remove scssphp and just native nested CSS
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-22 09:51:04 +02:00
Ferdinand Thiessen 36230f78c6 chore: drop scssphp dependency
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-22 09:51:04 +02:00
dependabot[bot] 35056e5c33 build(deps): bump libphonenumber-js from 1.12.6 to 1.12.7
Bumps [libphonenumber-js](https://gitlab.com/catamphetamine/libphonenumber-js) from 1.12.6 to 1.12.7.
- [Changelog](https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/CHANGELOG.md)
- [Commits](https://gitlab.com/catamphetamine/libphonenumber-js/commits/master)

---
updated-dependencies:
- dependency-name: libphonenumber-js
  dependency-version: 1.12.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-22 07:38:56 +00:00
Côme Chilliet 98e3afce9e Merge pull request #52257 from nextcloud/fix/noid/ensure-userid-attr-present
fix(LDAP): inlcude ldapExpertUsernameAttr in general attribute list
2025-04-22 09:24:50 +02:00
Julius Knorr 3fc9a99521 perf: Add config options to trigger individual and sample profiling using excimer
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-04-22 08:57:02 +02:00
Nextcloud bot cb4fcd0f40 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-22 00:23:01 +00:00
Nextcloud bot db8e570802 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-21 00:23:10 +00:00
Ferdinand Thiessen 07f26fc789 Merge pull request #51953 from nextcloud/dependabot/npm_and_yarn/backbone-1.6.1
build(deps): bump backbone from 1.6.0 to 1.6.1
2025-04-20 11:46:35 +02:00
Nextcloud bot 91ded2c005 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-20 00:23:05 +00:00
Marcel Müller 2ca168f717 chore: Update config.sample.php to include query log extensions
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2025-04-19 21:29:33 +02:00
Marcel Müller 0955b0a39d feat: Add option to also log parameters to query log
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2025-04-19 21:29:26 +02:00
Andy Scherzinger 9cd42d67fb Merge pull request #52267 from danielniccoli/patch-1
Update AUTHORS
2025-04-19 09:13:17 +02:00
Nextcloud bot 368ce76528 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-19 00:22:46 +00:00
dependabot[bot] 03b65867a8 build(deps): bump backbone from 1.6.0 to 1.6.1
Bumps [backbone](https://github.com/jashkenas/backbone) from 1.6.0 to 1.6.1.
- [Commits](https://github.com/jashkenas/backbone/compare/1.6.0...1.6.1)

---
updated-dependencies:
- dependency-name: backbone
  dependency-version: 1.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-18 23:08:53 +00:00
dependabot[bot] 69823fe160 Merge pull request #51950 from nextcloud/dependabot/npm_and_yarn/mime-4.0.7 2025-04-18 23:02:18 +00:00
dependabot[bot] 8ebe423360 Merge pull request #52251 from nextcloud/dependabot/npm_and_yarn/http-proxy-middleware-2.0.9 2025-04-18 22:54:43 +00:00
dependabot[bot] 3c8990eb87 Merge pull request #52243 from nextcloud/dependabot/npm_and_yarn/babel/preset-typescript-7.27.0 2025-04-18 22:53:31 +00:00
dependabot[bot] 682b9f43b1 build(deps-dev): bump mime from 4.0.6 to 4.0.7
Bumps [mime](https://github.com/broofa/mime) from 4.0.6 to 4.0.7.
- [Release notes](https://github.com/broofa/mime/releases)
- [Changelog](https://github.com/broofa/mime/blob/main/CHANGELOG.md)
- [Commits](https://github.com/broofa/mime/compare/v4.0.6...v4.0.7)

---
updated-dependencies:
- dependency-name: mime
  dependency-version: 4.0.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-18 22:45:55 +00:00
Ferdinand Thiessen a4cb653db0 Merge pull request #52141 from nextcloud/dependabot/npm_and_yarn/simplewebauthn/browser-13.1.0
build(deps): bump @simplewebauthn/browser from 12.0.0 to 13.1.0
2025-04-19 00:38:48 +02:00
dependabot[bot] 0e60b5c123 Merge pull request #52244 from nextcloud/dependabot/npm_and_yarn/types/dockerode-3.3.38 2025-04-18 22:05:23 +00:00
Ferdinand Thiessen 454dab3ab7 chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-19 00:01:32 +02:00
Ferdinand Thiessen 77b663231f chore: migrate types to @simplewebauthn/browser (changes package layout)
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-18 23:56:06 +02:00
dependabot[bot] 871ea1c9cd build(deps): bump @simplewebauthn/browser from 12.0.0 to 13.1.0
Bumps [@simplewebauthn/browser](https://github.com/MasterKale/SimpleWebAuthn/tree/HEAD/packages/browser) from 12.0.0 to 13.1.0.
- [Release notes](https://github.com/MasterKale/SimpleWebAuthn/releases)
- [Changelog](https://github.com/MasterKale/SimpleWebAuthn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/MasterKale/SimpleWebAuthn/commits/v13.1.0/packages/browser)

---
updated-dependencies:
- dependency-name: "@simplewebauthn/browser"
  dependency-version: 13.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-18 23:55:46 +02:00
Ferdinand Thiessen 630c454db6 Merge pull request #52247 from nextcloud/dependabot/npm_and_yarn/webpack-5.99.5
build(deps-dev): bump webpack from 5.94.0 to 5.99.5
2025-04-18 23:50:29 +02:00
dependabot[bot] 3a7c3e029e Merge pull request #52245 from nextcloud/dependabot/npm_and_yarn/jsdom-26.1.0 2025-04-18 21:45:34 +00:00
dependabot[bot] 32881e298b build(deps-dev): bump webpack from 5.94.0 to 5.99.5
Bumps [webpack](https://github.com/webpack/webpack) from 5.94.0 to 5.99.5.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.94.0...v5.99.5)

---
updated-dependencies:
- dependency-name: webpack
  dependency-version: 5.99.5
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-18 21:35:19 +00:00
Daniel Niccoli bc4c940b6e Update AUTHORS
Signed-off-by: Daniel Niccoli <2971735+danielniccoli@users.noreply.github.com>
2025-04-18 17:03:32 +02:00
Nextcloud bot c337020446 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-18 00:23:31 +00:00
Christoph Wurst 29161c0dfd fix(db): Create replacement index where original index is missing
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2025-04-17 17:59:19 +02:00
Arthur Schiwon 1eb9000b0d fix(LDAP): inlcude ldapExpertUsernameAttr in general attribute list
fixes corner cases in which an LDAP record might be loaded and used,
where the user is still not mapped - and then this information is
missing though expected.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-04-17 17:00:31 +02:00
Arthur Schiwon 8410d67fc7 Merge pull request #52224 from nextcloud/bugfix/noid/dont-break-when-checking-if-too-long-user-exists
fix(usermanager): Don't throw when checking if a too long user id is an existing user
2025-04-17 16:55:02 +02:00
Côme Chilliet fb724416ba Merge pull request #52178 from nextcloud/fix/remove-app.php-loading
fix: Remove support for app.php loading
2025-04-17 16:39:43 +02:00
nfebe 6b89838cc2 feat: add logging to preview generation
Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-04-17 14:24:18 +01:00
Joas Schilling 47f1950a40 Merge pull request #52252 from nextcloud/fix/noid/log-false-user
fix(Log): revert swich to ?? operator
2025-04-17 15:20:19 +02:00
Arthur Schiwon fe52a03ff8 fix(Log): revert swich to ?? operator
false is expected, not null. The changed caused "user" in the log files
to be false instead of "--", which is breaking behaviour.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-04-17 14:26:38 +02:00
dependabot[bot] ed6bf0815c build(deps-dev): bump http-proxy-middleware from 2.0.7 to 2.0.9
Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.7 to 2.0.9.
- [Release notes](https://github.com/chimurai/http-proxy-middleware/releases)
- [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v2.0.9/CHANGELOG.md)
- [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.7...v2.0.9)

---
updated-dependencies:
- dependency-name: http-proxy-middleware
  dependency-version: 2.0.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-17 11:27:04 +00:00
Ferdinand Thiessen dc8e16c520 Merge pull request #52246 from nextcloud/dependabot/npm_and_yarn/nextcloud/vue-8.25.1
build(deps): bump @nextcloud/vue from 8.24.0 to 8.25.1
2025-04-17 13:25:20 +02:00
dependabot[bot] 55233c530a build(deps): bump @nextcloud/vue from 8.24.0 to 8.25.1
Bumps [@nextcloud/vue](https://github.com/nextcloud-libraries/nextcloud-vue) from 8.24.0 to 8.25.1.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-vue/blob/v8.25.1/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-vue/compare/v8.24.0...v8.25.1)

---
updated-dependencies:
- dependency-name: "@nextcloud/vue"
  dependency-version: 8.25.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-17 11:01:05 +00:00
Ferdinand Thiessen a80cf40329 Merge pull request #52240 from nextcloud/fix/use-also-default-text
fix(mail): use matching text color for primary elements
2025-04-17 12:43:50 +02:00
dependabot[bot] f1202c4017 build(deps-dev): bump jsdom from 26.0.0 to 26.1.0
Bumps [jsdom](https://github.com/jsdom/jsdom) from 26.0.0 to 26.1.0.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md)
- [Commits](https://github.com/jsdom/jsdom/compare/26.0.0...26.1.0)

---
updated-dependencies:
- dependency-name: jsdom
  dependency-version: 26.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-17 10:36:34 +00:00
dependabot[bot] fe99d38aab build(deps-dev): bump @types/dockerode from 3.3.37 to 3.3.38
Bumps [@types/dockerode](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/dockerode) from 3.3.37 to 3.3.38.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/dockerode)

---
updated-dependencies:
- dependency-name: "@types/dockerode"
  dependency-version: 3.3.38
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-17 10:36:10 +00:00
dependabot[bot] 37fae11d5c build(deps-dev): bump @babel/preset-typescript from 7.26.0 to 7.27.0
Bumps [@babel/preset-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-typescript) from 7.26.0 to 7.27.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.0/packages/babel-preset-typescript)

---
updated-dependencies:
- dependency-name: "@babel/preset-typescript"
  dependency-version: 7.27.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-17 10:35:50 +00:00
Ferdinand Thiessen 8f8c11ad4e fix(mail): use matching text color for primary elements
when we use the default primary as background color we have to use the
default primary text color as well.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-17 11:51:46 +02:00
Joas Schilling 1ada9910b1 fix(user): Introduce a public constant for max length of user id
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-04-17 09:50:12 +02:00
John Molakvoæ 253a741013 Merge pull request #50465 from nextcloud/zorn-v-patch-1 2025-04-17 09:15:53 +02:00
Kate f0154a75ca Merge pull request #52223 from nextcloud/feat/add-configurable-ipv6-subnet
feat(security): add configurable IPv6 subnet for BFP and throttling
2025-04-17 09:03:04 +02:00
Benjamin Gaussorgues 9f666c2b73 feat(ip): add configurable IPv6 subnet for BFP and throttling
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2025-04-17 08:12:03 +02:00
Nextcloud bot f34466c99e fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-17 00:23:00 +00:00
SebastianKrupinski 1a90998edc fix: do not ignore move command object target uri
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2025-04-16 17:43:12 -04:00
Ferdinand Thiessen f20d79e041 Merge pull request #52180 from nextcloud/fix/bring-back-hide-downlaod
fix(files_sharing): bring back handling of `hide-download` on public shares
2025-04-16 20:54:28 +02:00
Ferdinand Thiessen e5291caa22 chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-16 20:39:30 +02:00
Ferdinand Thiessen e2df8f3d69 fix(files_sharing): allow to disable share download permission
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-16 20:38:20 +02:00
Ferdinand Thiessen 47d1afbb7f revert: do not unify hide-download and prevent-download permissions
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-16 20:38:20 +02:00
Ferdinand Thiessen a799d8dccf fix(files_sharing): do not show download button if hide-download is enabled
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-16 20:38:20 +02:00
Ferdinand Thiessen 11594df799 refactor(files): use new hide-download WebDAV property for download action
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-16 20:38:20 +02:00
Ferdinand Thiessen ba3c504812 feat(files_sharing): add WebDAV property for the hide-download state of shares
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-16 20:38:20 +02:00
Joas Schilling 775ca882f3 fix(usermanager): Don't throw when checking if a too long user id is an existing user
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-04-16 17:47:28 +02:00
zorn-v d0658e85ea Check that user actually can validate password for js
Signed-off-by: zorn-v <zorn7@yandex.ru>
2025-04-16 16:06:11 +02:00
Andy Scherzinger 85d2ee5262 Merge pull request #52175 from nextcloud/perf/properies-index-
perf: Add index to select properties by name, path and user
2025-04-16 11:23:33 +02:00
Julius Knorr a8328b06d6 perf: Add index to select properties by name, path and user
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-04-16 11:06:22 +02:00
Nextcloud bot 3e5a3063ae fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-16 00:23:18 +00:00
Andy Scherzinger f81b54a370 Merge pull request #52212 from nextcloud/fix/improve-error-output-of-sso-test
chore: Output error content when test smb-kerberos-sso is failing
2025-04-15 19:09:27 +02:00
Côme Chilliet cd6e5ababb Merge pull request #52080 from nextcloud/chore-check-for-composer-bin
ci: add check to ensure composer-bin is not accidentally committed
2025-04-15 18:05:54 +02:00
Côme Chilliet 63ed670458 chore: Output error content when test smb-kerberos-sso is failing
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-04-15 16:54:56 +02:00
Daniel Kesselberg 3e9454ad72 chore: update main autoloader
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2025-04-15 13:20:37 +02:00
Daniel Kesselberg fa8b389b6e ci: add check to ensure composer-bin is not accidentally committed
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2025-04-15 13:20:37 +02:00
F. E Noel Nfebe e5b34b700d Merge pull request #52121 from nextcloud/fix/no-issue/use-password-default-sharing-details
fix(files_sharing): Apply default password setting in SharingDetailsTab
2025-04-15 12:56:40 +02:00
nextcloud-command ace0928759 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-15 10:09:27 +00:00
nfebe 02efad600a fix(files_sharing): Apply default password setting in SharingDetailsTab
Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-04-15 10:56:26 +01:00
John Molakvoæ fbb77270c2 Merge pull request #50905 from nextcloud/fix/rate-limit-share-creation 2025-04-15 10:57:50 +02:00
John Molakvoæ 50dcbdeec6 fix(files_sharing): adjust rate limit share creation to 20 over 10 minutes
Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
2025-04-15 10:32:47 +02:00
skjnldsv 75063cd71b test: enable rate limiting for ratelimiting.feature
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-04-15 10:31:02 +02:00
Louis b2a187d296 Merge pull request #51729 from nextcloud/artonge/support_oc_checksum_in_bulk_upload
feat: Support OC-Checksum in bulk upload
2025-04-15 09:49:38 +02:00
John Molakvoæ f4841e1172 Merge pull request #52072 from nextcloud/fix/sharing-exp-date 2025-04-15 09:22:59 +02:00
Joas Schilling 59d1a49acc test: Disable ratelimit as tests trigger it
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-04-15 08:45:50 +02:00
skjnldsv 338ab64365 fix(files_sharing): rate limit share creation 10 times per 10 minutes
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-04-15 08:45:25 +02:00
Nextcloud bot a75f47f216 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-15 00:22:43 +00:00
nextcloud-command f7cb282118 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-14 20:50:31 +00:00
skjnldsv bc70e0ded0 fix(files_sharing): file request pass empty string if password or expiration is disabled
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-04-14 22:46:52 +02:00
skjnldsv 6a0d92dedf fix(files_sharing): expireDate null tests
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-04-14 22:46:52 +02:00
John Molakvoæ f37026034e Merge pull request #51640 from nextcloud/dependabot/npm_and_yarn/sass-loader-16.0.5 2025-04-14 22:45:56 +02:00
nextcloud-command f321646a67 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-14 20:32:27 +00:00
dependabot[bot] 649ea5df71 build(deps-dev): bump sass-loader from 16.0.2 to 16.0.5
Bumps [sass-loader](https://github.com/webpack-contrib/sass-loader) from 16.0.2 to 16.0.5.
- [Release notes](https://github.com/webpack-contrib/sass-loader/releases)
- [Changelog](https://github.com/webpack-contrib/sass-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/sass-loader/compare/v16.0.2...v16.0.5)

---
updated-dependencies:
- dependency-name: sass-loader
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 22:28:17 +02:00
John Molakvoæ d13798671c Merge pull request #52144 from nextcloud/dependabot/npm_and_yarn/puppeteer-24.6.1 2025-04-14 22:26:25 +02:00
John Molakvoæ d3a41b69c9 Merge pull request #52147 from nextcloud/dependabot/npm_and_yarn/types/dockerode-3.3.37 2025-04-14 22:24:46 +02:00
John Molakvoæ c1e1b2b4f8 Merge pull request #52148 from nextcloud/dependabot/npm_and_yarn/nextcloud/webpack-vue-config-6.3.0 2025-04-14 22:23:05 +02:00
skjnldsv bc456bbb8a chore: remove ts-loader and use webpack-vue-configs
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-04-14 22:09:10 +02:00
skjnldsv 8ff9747cbf chore: fix babel and webpack deps
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-14 20:03:59 +00:00
dependabot[bot] 95ffa38cb8 build(deps-dev): bump @nextcloud/webpack-vue-config from 6.2.0 to 6.3.0
Bumps [@nextcloud/webpack-vue-config](https://github.com/nextcloud-libraries/webpack-vue-config) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/nextcloud-libraries/webpack-vue-config/releases)
- [Changelog](https://github.com/nextcloud-libraries/webpack-vue-config/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/webpack-vue-config/compare/v6.2.0...v6.3.0)

---
updated-dependencies:
- dependency-name: "@nextcloud/webpack-vue-config"
  dependency-version: 6.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 22:00:20 +02:00
Louis f8391e60ce Merge pull request #51020 from nextcloud/artonge/fix/transfer_ownership 2025-04-14 16:14:45 +02:00
Côme Chilliet 696e163ba2 Merge pull request #52086 from nextcloud/fix/cleanup-user-backends
Cleanup user backends related methods
2025-04-14 15:49:49 +02:00
dependabot[bot] 96a8a74403 Merge pull request #52146 from nextcloud/dependabot/npm_and_yarn/dompurify-3.2.5 2025-04-14 13:07:54 +00:00
Côme Chilliet 12b1342316 chore: Update psalm baseline
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-04-14 14:51:22 +02:00
Côme Chilliet 92038229fa fix: Remove support for app.php loading
It has been deprecated for a long time, and the last known active
 application to use it (user_saml) is now migrated the modern API.
Presence of the file is still checked in order to log an error.
This behavior may be removed as well in a few versions.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-04-14 14:30:00 +02:00
dependabot[bot] bbe3bc2ad3 build(deps): bump dompurify from 3.2.4 to 3.2.5
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.2.4 to 3.2.5.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.2.4...3.2.5)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.2.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-14 11:48:10 +00:00
Ferdinand Thiessen 988da9622c Merge pull request #52142 from nextcloud/dependabot/npm_and_yarn/vueuse/components-11.3.0
build(deps): bump @vueuse/components from 11.1.0 to 11.3.0
2025-04-14 12:30:58 +02:00
dependabot[bot] 62bedebe7c build(deps): bump @vueuse/components from 11.1.0 to 11.3.0
Bumps [@vueuse/components](https://github.com/vueuse/vueuse/tree/HEAD/packages/components) from 11.1.0 to 11.3.0.
- [Release notes](https://github.com/vueuse/vueuse/releases)
- [Commits](https://github.com/vueuse/vueuse/commits/v11.3.0/packages/components)

---
updated-dependencies:
- dependency-name: "@vueuse/components"
  dependency-version: 11.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-14 10:12:32 +00:00
Louis c74e4ad922 Merge pull request #52137 from nextcloud/revert-51431-enh/noid/disable-bulk-upload 2025-04-14 11:41:10 +02:00
dependabot[bot] 6a14a78444 Merge pull request #52153 from nextcloud/dependabot/npm_and_yarn/marked-15.0.8 2025-04-14 09:30:46 +00:00
dependabot[bot] 56c7a93ef5 build(deps): bump marked from 15.0.7 to 15.0.8
Bumps [marked](https://github.com/markedjs/marked) from 15.0.7 to 15.0.8.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v15.0.7...v15.0.8)

---
updated-dependencies:
- dependency-name: marked
  dependency-version: 15.0.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-14 09:16:19 +00:00
Ferdinand Thiessen 6e2afef860 Merge pull request #52150 from nextcloud/dependabot/npm_and_yarn/nextcloud/eslint-config-8.4.2
build(deps-dev): bump @nextcloud/eslint-config from 8.4.1 to 8.4.2
2025-04-14 11:12:28 +02:00
Kate d385e024b9 Merge pull request #52166 from nextcloud/upstream/52135/52135-master 2025-04-14 10:53:38 +02:00
dependabot[bot] bc4fc5d7f0 build(deps-dev): bump @nextcloud/eslint-config from 8.4.1 to 8.4.2
Bumps [@nextcloud/eslint-config](https://github.com/nextcloud-libraries/eslint-config) from 8.4.1 to 8.4.2.
- [Release notes](https://github.com/nextcloud-libraries/eslint-config/releases)
- [Changelog](https://github.com/nextcloud-libraries/eslint-config/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/eslint-config/compare/v8.4.1...v8.4.2)

---
updated-dependencies:
- dependency-name: "@nextcloud/eslint-config"
  dependency-version: 8.4.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-14 08:48:34 +00:00
Benjamin Gaussorgues fc3067679d Merge pull request #52162 from nextcloud/rakekniven-patch-2 2025-04-14 10:21:33 +02:00
Marcel Klehr ca47be30de Merge pull request #52168 from nextcloud/fix/context-chat-l10n
fix(ContextAgent): Do not translate the name ContextAgent
2025-04-14 08:55:13 +02:00
Marcel Klehr 19ede62b90 fix(ContextAgent): Do not translate the name ContextAgent
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-04-14 08:14:14 +02:00
Nextcloud bot caf30f048b Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-14 00:22:55 +00:00
Nextcloud bot 88df96d69d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-13 00:23:06 +00:00
Maxence Lange 61ab5cf157 fix(setup): ignore missing theming app
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-04-12 18:49:26 -01:00
rakekniven 0ceea33749 chore(i18n): Aligned spelling of app name
Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
2025-04-12 17:19:26 +02:00
Kate e761c9e3eb Merge pull request #52156 from nextcloud/dependabot/composer/vendor-bin/openapi-extractor/nextcloud/openapi-extractor-1.5.3 2025-04-12 08:58:42 +02:00
dependabot[bot] 8eb3c975ad build(deps): bump nextcloud/openapi-extractor
Bumps [nextcloud/openapi-extractor](https://github.com/nextcloud-releases/openapi-extractor) from 1.5.2 to 1.5.3.
- [Changelog](https://github.com/nextcloud-releases/openapi-extractor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-releases/openapi-extractor/compare/v1.5.2...v1.5.3)

---
updated-dependencies:
- dependency-name: nextcloud/openapi-extractor
  dependency-version: 1.5.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-04-12 08:27:22 +02:00
dependabot[bot] 8537b67eff Merge pull request #52151 from nextcloud/dependabot/npm_and_yarn/stylelint-16.18.0 2025-04-12 02:08:58 +00:00
dependabot[bot] 9dd4206ee1 build(deps-dev): bump puppeteer from 24.5.0 to 24.6.1
Bumps [puppeteer](https://github.com/puppeteer/puppeteer) from 24.5.0 to 24.6.1.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.5.0...puppeteer-v24.6.1)

---
updated-dependencies:
- dependency-name: puppeteer
  dependency-version: 24.6.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-12 02:04:02 +00:00
dependabot[bot] 5c54f64db0 Merge pull request #52145 from nextcloud/dependabot/npm_and_yarn/sass-1.86.3 2025-04-12 02:00:33 +00:00
dependabot[bot] 9662ce460b Merge pull request #52140 from nextcloud/dependabot/npm_and_yarn/zip.js/zip.js-2.7.60 2025-04-12 01:57:59 +00:00
dependabot[bot] ab7a4ee2dd build(deps-dev): bump stylelint from 16.17.0 to 16.18.0
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.17.0 to 16.18.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.17.0...16.18.0)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-version: 16.18.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-12 01:22:13 +00:00
dependabot[bot] e65e8c893b build(deps-dev): bump @types/dockerode from 3.3.32 to 3.3.37
Bumps [@types/dockerode](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/dockerode) from 3.3.32 to 3.3.37.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/dockerode)

---
updated-dependencies:
- dependency-name: "@types/dockerode"
  dependency-version: 3.3.37
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-12 01:21:13 +00:00
dependabot[bot] d494169e3f build(deps-dev): bump sass from 1.85.1 to 1.86.3
Bumps [sass](https://github.com/sass/dart-sass) from 1.85.1 to 1.86.3.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.85.1...1.86.3)

---
updated-dependencies:
- dependency-name: sass
  dependency-version: 1.86.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-12 01:20:42 +00:00
dependabot[bot] 6bc4eda3cb build(deps-dev): bump @zip.js/zip.js from 2.7.54 to 2.7.60
Bumps [@zip.js/zip.js](https://github.com/gildas-lormeau/zip.js) from 2.7.54 to 2.7.60.
- [Release notes](https://github.com/gildas-lormeau/zip.js/releases)
- [Commits](https://github.com/gildas-lormeau/zip.js/compare/v2.7.54...v2.7.60)

---
updated-dependencies:
- dependency-name: "@zip.js/zip.js"
  dependency-version: 2.7.60
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-12 01:19:32 +00:00
Nextcloud bot 2494eff627 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-12 00:23:05 +00:00
Louis a81440d11c Revert "feat(bulk-upload): change the default to disabled as there are still some bugs present" 2025-04-11 23:39:25 +02:00
dependabot[bot] f61cec4b8e Merge pull request #52132 from nextcloud/dependabot/npm_and_yarn/vite-6.2.6 2025-04-11 15:54:10 +00:00
Robin Appelman fb3e60862f fix: disable direct download for shares
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-04-11 17:42:21 +02:00
dependabot[bot] 816ca72c64 build(deps): bump vite from 6.2.5 to 6.2.6
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.5 to 6.2.6.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.6/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.6/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.2.6
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-11 15:38:59 +00:00
Robin Appelman 1185b5ee35 fix: don't return other mounts from share mount provider
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-04-11 14:20:21 +02:00
Joas Schilling 2ea3491240 Merge pull request #52105 from nextcloud/automated/noid/master-update-code-signing-crl
[master] fix(security): Update code signing revocation list
2025-04-11 12:29:24 +02:00
Tobias Kaminsky 5e9ebe4acb Merge pull request #51431 from nextcloud/enh/noid/disable-bulk-upload
feat(bulk-upload): change the default to disabled as there are still some bugs present
2025-04-11 11:22:02 +02:00
Marcel Klehr d16bc3b550 Merge pull request #52116 from nextcloud/Lukasdotcom-fix/fileids
Fix(TaskProcessing): for validation for taskprocessing EShapeType
2025-04-11 09:26:44 +02:00
Lukas Schaefer b4dcace2ac Fix(TaskProcessing): for validation for taskprocessing EShapeType
Signed-off-by: Lukas Schaefer <lukas@lschaefer.xyz>
2025-04-11 02:56:36 -04:00
nextcloud-command 7f569205d9 fix(security): Update code signing revocation list
Signed-off-by: GitHub <noreply@github.com>
2025-04-11 02:36:27 +00:00
Nextcloud bot 345167ff18 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-11 00:23:04 +00:00
Robin Appelman db078e7a60 Merge pull request #52073 from nextcloud/custom-properties-preload-negative
fix: fix preloading files with no custom properties
2025-04-10 21:30:22 +02:00
Simon L. 5e6478fd64 feat(bulk-upload): change the default to disabled as there are still some bugs present
Signed-off-by: Simon L. <szaimen@e.mail.de>
2025-04-10 15:28:52 +02:00
Anna 9e0e53707f Merge pull request #52085 from nextcloud/bugfix/noid/fix-cached-return-of-display-name
fix(federation): Fix returning "no display name" after cache result
2025-04-10 11:38:22 +02:00
Côme Chilliet 0cf4f3cc71 fix: Replace all usages of OC_User backend method calls by IUserManager
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-04-10 11:29:21 +02:00
Côme Chilliet ddd7d4ed13 fix: Deprecate OC_User methods related to user backends
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-04-10 11:12:25 +02:00
Alexander Piskun 0a474e5ccd Merge pull request #52050 from nextcloud/fix/noid/taskprocessing-appapi
fix(taskprocessing): use the event for AppAPI to get list of AI providers
2025-04-10 10:22:25 +03:00
Joas Schilling d8744f84e8 fix(federation): Fix returning "no display name" after cache result
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-04-10 09:20:27 +02:00
Kate e94fe91cd1 Merge pull request #52082 from nextcloud/default-navigation-reuse 2025-04-10 08:27:03 +02:00
Nextcloud bot 6c8047ac69 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-10 00:22:46 +00:00
Robin Appelman aa34f2f457 fix: reuse default navigation entry when updating navigation entries
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-04-09 18:39:42 +02:00
John Molakvoæ 319216c9a7 Merge pull request #52075 from nextcloud/fix/sharing-error-catch
fix(files_sharing): fix share creation error handling
2025-04-09 17:21:54 +02:00
nextcloud-command 309d568558 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-09 14:54:29 +00:00
skjnldsv 70218dc0a4 fix(files_sharing): fix share creation error handling
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-04-09 14:52:42 +00:00
Joas Schilling 8357469557 Merge pull request #52070 from nextcloud/test/noid/improve-test-output
test: Improve comments manager test output in case of failure
2025-04-09 16:08:19 +02:00
Robin Appelman 5c66fead67 fix: fix preloading files with no custom properties
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-04-09 15:04:35 +02:00
Oleksander Piskun c23ab0d1f7 fix(taskprocessing): use the event for AppAPI to get list of AI providers
Signed-off-by: Oleksander Piskun <oleksandr2088@icloud.com>
2025-04-09 15:47:48 +03:00
Robin Appelman b82245ddea Merge pull request #52045 from nextcloud/shared-target-verify-cache
fix: more optimized caching for share target verification
2025-04-09 14:35:55 +02:00
Joas Schilling e2cd436205 test: Improve comments manager test output in case of failure
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-04-09 13:49:16 +02:00
Julius Knorr 455fb740d0 Merge pull request #52066 from nextcloud/perf/noid/dont-load-addressbook-on-resolving-cloudid
fix(federation): Don't load the addressbook when resolving a cloud ID
2025-04-09 12:33:38 +02:00
Joas Schilling 6a3c53def3 fix(federation): Don't load the addressbook when resolving a cloud ID
Instead we delay the lookup of the display name until it is actually used

Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-04-09 10:52:03 +02:00
Kate 3808f86c88 Merge pull request #52062 from nextcloud/revert/52035 2025-04-09 10:10:58 +02:00
Joas Schilling 8358a7f769 Revert "refactor(RichObjectStrings): Only log error if key or value is not string in validator"
This reverts commit fd156d3408.

Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-04-09 08:35:56 +02:00
Nextcloud bot edeccc897f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-09 00:23:28 +00:00
Joas Schilling 86981bf05d Merge pull request #52019 from nextcloud/bugfix/noid/only-check-to-cleanup-chunks-once
fix(dav): Really only run the chunk cleanup once
2025-04-08 23:02:08 +02:00
John Molakvoæ dd32639fa9 Merge pull request #51838 from nextcloud/feat/cleanup-oc-util-methods
Mark all methods of OC_Util as deprecated
2025-04-08 21:47:31 +02:00
Robin Appelman c1dbc27fd6 fix: don't construct storage when checking if a sub-mount is applicable
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-04-08 18:21:41 +02:00
Côme Chilliet 6efd9b7511 fix: add more details in documented alternatives
Co-authored-by: Louis <louis@chmn.me>
Signed-off-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
2025-04-08 17:56:14 +02:00
Robin Appelman bcbf0e76a7 fix: more optimized caching for share target verification
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-04-08 16:42:01 +02:00
Ferdinand Thiessen 90a3928cdb Merge pull request #52013 from nextcloud/handle-missing-share-providers-when-promoting-reshares
fix: Handle missing share providers when promoting reshares
2025-04-08 15:33:37 +02:00
Robin Appelman 5cc942905a Merge pull request #52008 from nextcloud/fix/cache-hit-getFirstNodeById
fix: Proper order for checking path prefix for getting file by id from cache
2025-04-08 14:43:46 +02:00
Kate 065a976bd5 Merge pull request #52014 from nextcloud/fix/fix-movie-preview-construct
fix(preview): Fix constructor parameter name and default value
2025-04-08 14:38:17 +02:00
Kate ba2b7789b6 Merge pull request #52035 from nextcloud/fix/richobjectstrings/validator-string-key-value-error
refactor(RichObjectStrings): Only log error if key or value is not string in validator
2025-04-08 13:17:02 +02:00
provokateurin fd156d3408 refactor(RichObjectStrings): Only log error if key or value is not string in validator
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-04-08 11:45:36 +02:00
Benjamin Gaussorgues 59444784f2 Merge pull request #52015 from nextcloud/feat/larger_ipv6_range
feat(ip): use larger IPv6 range by default
2025-04-08 11:15:30 +02:00
Joas Schilling 95eeb9f298 Merge pull request #52020 from nextcloud/automated/noid/master-update-code-signing-crl
[master] fix(security): Update code signing revocation list
2025-04-08 10:35:03 +02:00
nextcloud-command 10505dd7e6 fix(security): Update code signing revocation list
Signed-off-by: GitHub <noreply@github.com>
2025-04-08 08:27:23 +00:00
Benjamin Gaussorgues c4021c8d38 feat(ip): use larger IPv6 range by default
Some providers assign `/48` IPv6 blocks instead of `/64` so it sounds safer
to use this mask by default.

Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2025-04-08 10:08:28 +02:00
Joas Schilling a8be6314ae fix(dav): Really only run the chunk cleanup once
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-04-08 09:59:20 +02:00
Côme Chilliet 3ca690a9f3 fix(previews): Cleanup Movie provider code and remove deprecated static vars
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-04-08 09:53:02 +02:00
Côme Chilliet 85934d4d79 fix(preview): Fix constructor parameter name and default value
This should fix tests for movie preview provider

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-04-08 09:24:04 +02:00
Côme Chilliet baa79a9c40 fix(cypress): Handle password confirmation dialog at the right time
According to failed CI it shows up earlier than expected when deleting a user

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-04-08 09:21:53 +02:00
Julius Knorr 7ff80cc016 fix: Catch old cached paths and fetch the new one
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-04-08 09:17:35 +02:00
John Molakvoæ ae0bb4eaa2 Merge pull request #51945 from nextcloud/chore/psalm-test
chore: test that all apps are covered by psalm
2025-04-08 08:35:59 +02:00
Daniel Calviño Sánchez 10019955f1 fix: Handle missing share providers when promoting reshares
The provider for mail shares is not available when the "sharebymail" app
is disabled, and in that case a "ProviderException" is thrown when
trying to get it.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-04-08 07:20:31 +02:00
Nextcloud bot 815d985470 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-08 00:23:11 +00:00
Julius Knorr 7fa3f89ef9 fix: Proper order for checking path prefix for getting file by id from cache
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-04-07 20:47:11 +02:00
Ferdinand Thiessen 403c33a640 Merge pull request #52005 from nextcloud/fix/l10n-placeholder
fix(l10n): put placeholder like string into variable
2025-04-07 19:20:13 +02:00
Ferdinand Thiessen 5211448940 fix(l10n): put placeholder like string into variable
Otherwise this is wrongly handled by our translation community.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-07 18:39:40 +02:00
Ferdinand Thiessen bdf1a24c2f Merge pull request #51946 from nextcloud/perf/capa
perf(cloud_federation_api): only provide capabilities if needed
2025-04-07 18:35:13 +02:00
Côme Chilliet b42a13f5df chore: Update psalm baseline
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-04-07 18:22:13 +02:00
Ferdinand Thiessen f540a69bf8 Merge pull request #51524 from nextcloud/fix/webpack-nonce
fix: adjust webpack nonce generation
2025-04-07 17:57:33 +02:00
Côme Chilliet 59edcdc537 fix: Fix types for sharingDisabledForUser
and use the non-deprecated version whenever possible

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-04-07 17:36:24 +02:00
Côme Chilliet 943bb775d9 fix: Put back isHtaccessWorking method in Setup where it is used
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-04-07 17:05:54 +02:00
Côme Chilliet b2100484c0 fix: Remove some call and references to deprecated OC_Util class
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-04-07 17:05:54 +02:00
Côme Chilliet b20f74a95b chore(legacy): Flag methods as deprecated, with appropriate replacement
when possible.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-04-07 17:05:54 +02:00
Côme Chilliet 09dcc87f05 chore(legacy): Remove unused protected method in OC_Util
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-04-07 17:05:54 +02:00
Côme Chilliet fd59e02a24 chore(legacy): Officially deprecate OC_Util and remove non-static methods
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-04-07 17:05:54 +02:00
Ferdinand Thiessen 39dc22b9dd Merge pull request #51937 from nextcloud/perf/filter-propfind
perf(files_sharing): do not emit second propfind for account filter
2025-04-07 15:57:21 +02:00
Stephan Orbaugh b94ea69f5e Merge pull request #51712 from invario/master
Enhancement: Better previews for HDR video (attempt #2)
2025-04-07 15:26:10 +02:00
Louis 13af20ab3b Merge pull request #51837 from nextcloud/artonge/chore/increase_log_in_trashbin
chore(files_trashbin): Add user details in log from Trashbin
2025-04-07 15:00:27 +02:00
nextcloud-command 76a88d8c3c chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-07 12:51:13 +00:00
Ferdinand Thiessen 47734c26f3 fix: adjust webpack nonce generation
some leftovers where the request token is used instead of the CSP nonce.
in general this makes not much difference - but there are some cases
where those values differ.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-07 14:44:53 +02:00
Ferdinand Thiessen 16188cd767 chore: adjust copyright year
Co-authored-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-07 14:40:37 +02:00
Ferdinand Thiessen 7b321ba4f2 fix(profile): ensure correct base address
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-07 14:40:37 +02:00
Ferdinand Thiessen 4a64cf54ba ci: test that all apps are enabled for psalm
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-07 14:40:37 +02:00
Ferdinand Thiessen 1e8870e3f8 Merge pull request #51927 from nextcloud/fix/tags-events
fix(systemtags): emit assign and unassign bulk tagging events
2025-04-07 14:39:21 +02:00
Louis Chemineau b90c7b36fb chore(files_trashbin): Add user details in log from Trashbin
Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-04-07 12:48:55 +02:00
Daniel 07278d264c Merge pull request #51944 from nextcloud/fix/missing-import
fix(files_reminders): add missing import
2025-04-07 11:38:55 +02:00
Ferdinand Thiessen c0212af7fa chore: lint files_reminders using psalm
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-07 10:56:16 +02:00
Ferdinand Thiessen d79070c639 fix(files_reminders): add l10n to constructor of setup check
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-07 10:56:16 +02:00
Ferdinand Thiessen a68204971b fix(files_reminders): add missing import
- Resolves https://github.com/nextcloud/server/issues/51943

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-07 10:56:16 +02:00
Kate 7d8a073b9c Merge pull request #51982 from nextcloud/revert/email-setting-migration
Revert "refactor: add migration for email setting"
2025-04-07 10:19:34 +02:00
Ferdinand Thiessen 1ef94153b8 Merge pull request #51942 from nextcloud/fix/require-update-if-mtime-is-null
fix(cache): always require updates if mtime is null
2025-04-07 10:17:02 +02:00
provokateurin 8da9c0f48c Revert "refactor: add migration for email setting"
This reverts commit e7859f0dac.

Signed-off-by: provokateurin <kate@provokateurin.de>
2025-04-07 09:55:09 +02:00
Kate a42563f9ed Merge pull request #51715 from nextcloud/allowUnderCustLink
fix(dav): Allow underscores on custom links
2025-04-07 09:48:15 +02:00
Kate 9bc946ac50 Merge pull request #51933 from nextcloud/fix/master-template-layout
fix: ensure enabled (enforced) themes are always set on template layout
2025-04-07 09:10:09 +02:00
Ferdinand Thiessen d8ff056491 Merge pull request #51752 from nextcloud/backport/50121/master
fix(theming): enforce theme also for login
2025-04-07 09:07:45 +02:00
Joas Schilling 554dfbbdda Merge pull request #51967 from nextcloud/automated/noid/master-update-code-signing-crl
[master] fix(security): Update code signing revocation list
2025-04-07 07:58:32 +02:00
nextcloud-command 263755850e fix(security): Update code signing revocation list
Signed-off-by: GitHub <noreply@github.com>
2025-04-07 02:37:02 +00:00
invario eb3ca406f8 feat(previews): fix casing and comments
Co-authored-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
Signed-off-by: invario <67800603+invario@users.noreply.github.com>
2025-04-06 20:28:12 -04:00
Nextcloud bot 86627d5999 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-07 00:22:43 +00:00
Nextcloud bot cd633498da Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-06 00:22:20 +00:00
John Molakvoæ 2570766043 Merge pull request #51954 from nextcloud/dependabot/npm_and_yarn/moment-timezone-0.5.48
build(deps): bump moment-timezone from 0.5.47 to 0.5.48
2025-04-05 10:49:53 +02:00
nextcloud-command 6dee4d77c6 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-05 08:47:25 +00:00
dependabot[bot] 6231d45690 build(deps): bump moment-timezone from 0.5.47 to 0.5.48
Bumps [moment-timezone](https://github.com/moment/moment-timezone) from 0.5.47 to 0.5.48.
- [Release notes](https://github.com/moment/moment-timezone/releases)
- [Changelog](https://github.com/moment/moment-timezone/blob/develop/changelog.md)
- [Commits](https://github.com/moment/moment-timezone/compare/0.5.47...0.5.48)

---
updated-dependencies:
- dependency-name: moment-timezone
  dependency-version: 0.5.48
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-05 10:43:59 +02:00
John Molakvoæ 21334e41f5 Merge pull request #51955 from nextcloud/dependabot/npm_and_yarn/stylelint-16.17.0
build(deps-dev): bump stylelint from 16.9.0 to 16.17.0
2025-04-05 10:33:37 +02:00
John Molakvoæ 737222b9b6 Merge pull request #51952 from nextcloud/dependabot/npm_and_yarn/typescript-5.8.3
build(deps-dev): bump typescript from 5.8.2 to 5.8.3
2025-04-05 10:29:09 +02:00
John Molakvoæ be0e46abcb Merge pull request #51337 from nextcloud/dependabot/npm_and_yarn/core-js-3.41.0
build(deps): bump core-js from 3.40.0 to 3.41.0
2025-04-05 10:27:13 +02:00
dependabot[bot] 39d39120bd Merge pull request #51949 from nextcloud/dependabot/npm_and_yarn/dockerode-4.0.5 2025-04-05 02:12:27 +00:00
dependabot[bot] efc9beb179 build(deps-dev): bump stylelint from 16.9.0 to 16.17.0
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.9.0 to 16.17.0.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.9.0...16.17.0)

---
updated-dependencies:
- dependency-name: stylelint
  dependency-version: 16.17.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-05 01:20:01 +00:00
dependabot[bot] 1bc6f99b27 build(deps-dev): bump typescript from 5.8.2 to 5.8.3
Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.8.2 to 5.8.3.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release-publish.yml)
- [Commits](https://github.com/microsoft/TypeScript/commits)

---
updated-dependencies:
- dependency-name: typescript
  dependency-version: 5.8.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-05 01:19:10 +00:00
dependabot[bot] 284cce3d19 build(deps-dev): bump dockerode from 4.0.4 to 4.0.5
Bumps [dockerode](https://github.com/apocas/dockerode) from 4.0.4 to 4.0.5.
- [Release notes](https://github.com/apocas/dockerode/releases)
- [Commits](https://github.com/apocas/dockerode/compare/v4.0.4...v4.0.5)

---
updated-dependencies:
- dependency-name: dockerode
  dependency-version: 4.0.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-05 01:18:09 +00:00
Nextcloud bot 7b37a58fcc Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-05 00:22:20 +00:00
dependabot[bot] efd47e7350 Merge pull request #51947 from nextcloud/dependabot/npm_and_yarn/vite-6.2.5 2025-04-04 16:12:02 +00:00
dependabot[bot] b729109a17 build(deps): bump vite from 6.2.4 to 6.2.5
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.2.4 to 6.2.5.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.2.5/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.2.5/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.2.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-04 15:55:41 +00:00
Ferdinand Thiessen 63052522a2 perf(cloud_federation_api): only provide capabilities if needed
The capabilities can be quite expensive (e.g. on ARM board it takes 1s
per request only for the capabilities).
Also they are not used by the webui so they should not be included in
initial state.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-04 17:07:24 +02:00
Ferdinand Thiessen 3a09acebd2 fix(cache): always require updates if mtime is null
- Resolves https://github.com/nextcloud/server/issues/51941

Due to strong typings we introduced the parameter needs to be an
integer. Previously it was `null` which was equal to `0`.
So if there is no storage mtime we need to update the cache.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-04 13:41:32 +02:00
Ferdinand Thiessen 3688ba9f95 chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-04 11:21:08 +02:00
Ferdinand Thiessen c5043ce889 perf(files_sharing): do not require second propfind for account filter
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-04 11:21:08 +02:00
Ferdinand Thiessen cfdd691f28 fix: ensure enabled (enforced) themes are always set on template layout
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-04 10:16:34 +02:00
John Molakvoæ (skjnldsv) 8e81c1772b fix(systemtags): emit assign and unassign bulk tagging events
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2025-04-04 04:33:36 +02:00
Nextcloud bot a35f4b16ac Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-04 00:22:38 +00:00
Ferdinand Thiessen 0c51b09005 Merge pull request #51921 from nextcloud/usermountcache-logging
feat: add debug logging for adding/removing items from the user mounts cache
2025-04-04 00:21:14 +02:00
Robin Appelman c3f06b370c feat: add debug logging for adding/removing items from the user mounts cache
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-04-03 17:58:46 +02:00
invario 91e2f05ee6 feat(previews): Clean up code for HDR video previews
Signed-off-by: invario <67800603+invario@users.noreply.github.com>
2025-04-03 11:08:04 -04:00
Arthur Schiwon 8079584483 Merge pull request #50783 from nextcloud/fix/49909/workflow-vue-compat
fix(workflowengine): require a web component as operation plugin
2025-04-03 13:20:19 +02:00
Arthur Schiwon d3d842a818 build(workflowengine): compile assets
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-04-03 12:48:15 +02:00
Arthur Schiwon a419fc532c style(vue): satisfy linter
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-04-03 12:40:48 +02:00
Arthur Schiwon 7afdce6e9d fix: properly set value in FileMimeType
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-04-03 12:40:48 +02:00
Arthur Schiwon 04e78dbc77 refactor: remove mixing from FileMimeType as it is bad practice
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-04-03 12:40:48 +02:00
Arthur Schiwon 7449bb77fb fix(workflowengine): adapt check operator RequestUserGroup to use web component
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-04-03 12:40:48 +02:00
Arthur Schiwon 22cdc6da81 fix(workflowengine): adapt check operator RequestUserAgent to use web component
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-04-03 12:40:48 +02:00
Arthur Schiwon f88ea21ddc fix(workflowengine): adapt check operator RequestTime to use web component
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-04-03 12:40:48 +02:00
Arthur Schiwon c24ead810d fix(workflowengine): adapt check operator RequestURL to use web component
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-04-03 12:40:48 +02:00
Arthur Schiwon 5fbe00870b fix(workflowengine): use adapted mixin again in FileMimeType
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-04-03 12:40:48 +02:00
Arthur Schiwon eaf0268230 fix(workflowengine): minimally adapt check operator FileMimeType to use web component
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-04-03 12:40:48 +02:00
Arthur Schiwon 492fa1e24c fix(workflowengine): adapt check operator FileSystemTag to use web component
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-04-03 12:40:46 +02:00
Arthur Schiwon 3e03793e61 fix(workflowengine): require a web component as check plugin
Similar case as with operator plugins (check previous commit). Although we
are not aware of an existign problem, it is there in principle, and
asjusting the API we stay consistent with that one from the operations.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-04-03 12:38:51 +02:00
Arthur Schiwon 96bd54b3ed fix(workflowengine): require a web component as operation plugin
solves an incompatibility issue when the providing app registers their code
from an incompatible nextcloud-vue version.

Also changes and clarifies WorkflowEngine API. This is necessary to stay
compatible with the original way, but also promotes usage of the originally
declared but never used "component" attribute on registration.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-04-03 12:38:51 +02:00
Côme Chilliet 12d32ee2ea Merge pull request #51836 from nextcloud/feat/cleanup-oc-util
chore(legacy): Remove deprecated OC_Util::addScript and functions depending on it
2025-04-03 12:26:57 +02:00
Ferdinand Thiessen 8f6386d0d9 Merge pull request #51905 from nextcloud/fix/session/permanent-token-app-password
fix(session): Only mark sessions of permanent tokens as app passwords
2025-04-03 11:31:30 +02:00
Ferdinand Thiessen 07f4c10919 Merge pull request #51861 from nextcloud/artonge/fix/catch_exception_in_expire_trash
fix: Catch exceptions when expiring trashbin
2025-04-03 11:16:21 +02:00
nextcloud-command 311bad6a4a chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-03 08:33:24 +00:00
dependabot[bot] 443b49f4e4 build(deps): bump core-js from 3.40.0 to 3.41.0
Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.40.0 to 3.41.0.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.41.0/packages/core-js)

---
updated-dependencies:
- dependency-name: core-js
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-03 08:21:40 +00:00
Christoph Wurst 5003467f98 fix(session): Only mark sessions of permanent tokens as app passwords
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2025-04-03 10:08:15 +02:00
dependabot[bot] 4c7e31f83b Merge pull request #51887 from nextcloud/dependabot/npm_and_yarn/libphonenumber-js-1.12.6 2025-04-03 07:28:13 +00:00
dependabot[bot] e7fce36ae4 build(deps): bump libphonenumber-js from 1.11.18 to 1.12.6
Bumps [libphonenumber-js](https://gitlab.com/catamphetamine/libphonenumber-js) from 1.11.18 to 1.12.6.
- [Changelog](https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/CHANGELOG.md)
- [Commits](https://gitlab.com/catamphetamine/libphonenumber-js/compare/v1.11.18...v1.12.6)

---
updated-dependencies:
- dependency-name: libphonenumber-js
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-03 07:11:40 +00:00
John Molakvoæ fff96486cd Merge pull request #51745 from nextcloud/fix/settings/email-change-restriction
fix(settings): Handle email change restriction separately from display name change restriction
2025-04-03 08:19:37 +02:00
invario e3008d08be feat(previews): Use proper colorspace and apply tonemap for HDR videos
Signed-off-by: KT <invario@gmail.com>
2025-04-03 00:36:33 -04:00
Nextcloud bot 5fe858927e Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-03 00:23:17 +00:00
Robin Appelman 587e7c5358 Merge pull request #51010 from nextcloud/uploadfolder-rework
fix: rework UploadFolder implementation
2025-04-02 22:59:02 +02:00
dependabot[bot] 7c329da3cd Merge pull request #51641 from nextcloud/dependabot/npm_and_yarn/vitest-3.0.9 2025-04-02 19:44:29 +00:00
dependabot[bot] cee46d3767 build(deps-dev): bump vitest from 3.0.8 to 3.0.9
Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 3.0.8 to 3.0.9.
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v3.0.9/packages/vitest)

---
updated-dependencies:
- dependency-name: vitest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 21:29:02 +02:00
John Molakvoæ a6245befc8 Merge pull request #51883 from nextcloud/dependabot/npm_and_yarn/puppeteer-24.5.0
build(deps-dev): bump puppeteer from 24.4.0 to 24.5.0
2025-04-02 20:47:28 +02:00
John Molakvoæ 7b6aa1e0d1 Merge pull request #51882 from nextcloud/dependabot/composer/build/integration/behat/behat-3.20.0
build(deps-dev): bump behat/behat from 3.19.0 to 3.20.0 in /build/integration
2025-04-02 20:31:21 +02:00
dependabot[bot] e0054def6e build(deps-dev): bump puppeteer from 24.4.0 to 24.5.0
Bumps [puppeteer](https://github.com/puppeteer/puppeteer) from 24.4.0 to 24.5.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases)
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v24.4.0...puppeteer-v24.5.0)

---
updated-dependencies:
- dependency-name: puppeteer
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 18:10:45 +00:00
dependabot[bot] 654dd66515 build(deps-dev): bump behat/behat in /build/integration
Bumps [behat/behat](https://github.com/Behat/Behat) from 3.19.0 to 3.20.0.
- [Release notes](https://github.com/Behat/Behat/releases)
- [Changelog](https://github.com/Behat/Behat/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Behat/Behat/compare/v3.19.0...v3.20.0)

---
updated-dependencies:
- dependency-name: behat/behat
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-02 18:10:42 +00:00
John Molakvoæ 097e25fd7e Merge pull request #51881 from nextcloud/skjnldsv-patch-1
chore: bump dependabot npm `open-pull-requests-limit` to 20
2025-04-02 20:08:26 +02:00
John Molakvoæ ac918056db Merge pull request #51771 from nextcloud/fix/files-hidden-summary
fix(files): show hidden files and folders count in summary
2025-04-02 20:08:22 +02:00
nextcloud-command 8805260913 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-02 17:45:33 +00:00
skjnldsv 9c5e464111 fix(files): show hidden files and folders count in summary
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-04-02 17:40:50 +00:00
Ferdinand Thiessen 088e5e6e7b fix(theming): enforce theme also for login
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-02 19:37:52 +02:00
John Molakvoæ cd71887243 chore: bump dependabot npm open-pull-requests-limit to 20
Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
2025-04-02 19:33:20 +02:00
John Molakvoæ 09e200dde4 Merge pull request #47648 from nextcloud/fix/line-height-calc
refactor(style): Remove repeated semicolon
2025-04-02 19:31:12 +02:00
Ferdinand Thiessen e659f2ce07 Merge pull request #51870 from nextcloud/artonge/fix/use_loginname_to_check_password
fix: Use login name to check the password
2025-04-02 19:20:39 +02:00
Christopher Ng 9f7d69fc30 refactor(style): Remove repeated semicolon
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2025-04-02 19:18:36 +02:00
nextcloud-command 7157787017 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-02 17:13:01 +00:00
Ferdinand Thiessen e7859f0dac refactor: add migration for email setting
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-02 19:06:25 +02:00
provokateurin eb98e99530 fix(settings): Handle email change restriction separately from display name change restriction
Co-authored-by: provokateurin <kate@provokateurin.de>
Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Co-authored-by: Louis <louis@chmn.me>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-02 19:06:25 +02:00
Ferdinand Thiessen 18d4888ca9 Merge pull request #51876 from nextcloud/depskjnldsv/vue
chore(deps): update `@nextcloud/vue` to `8.24.0`
2025-04-02 19:06:08 +02:00
Ferdinand Thiessen cf44f5e8fd Merge pull request #51848 from nextcloud/remove-scrutinizer
chore: remove scrutinizer
2025-04-02 18:57:37 +02:00
nextcloud-command d90dea202e chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-02 16:47:20 +00:00
skjnldsv 99714916b6 chore(dav): update vitest snapshots
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-04-02 18:21:23 +02:00
skjnldsv 1bfe473007 chore(files): remove popover workaround after vue lib update
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-04-02 17:44:41 +02:00
skjnldsv 07655844e8 chore(deps): update @nextcloud/vue to 8.24.0
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-04-02 17:41:37 +02:00
John Molakvoæ 90b8838dee Merge pull request #51863 from nextcloud/fix/files-actions-menu-position
fix(files): right click actions menu flicker
2025-04-02 17:36:31 +02:00
Louis Chemineau 0a585b0048 fix: Catch exceptions when expiring trashbin
Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-04-02 17:04:06 +02:00
John Molakvoæ d3583ea4d8 Merge pull request #51874 from nextcloud/fix/codeowners
chore: adjust CODEOWNERS
2025-04-02 16:46:56 +02:00
nextcloud-command 2f58abb449 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-04-02 14:41:40 +00:00
Ferdinand Thiessen 3d1ecb8994 chore: adjust CODEOWNERS
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-02 16:40:03 +02:00
skjnldsv ab0a6f0e00 fix(files): right click actions menu flicker
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-04-02 14:39:45 +00:00
Louis Chemineau 3bff9ee3e1 fix: Use login name to check the password
Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-04-02 15:50:05 +02:00
Daniel Kesselberg f8a45703d7 chore: remove scrutinizer
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2025-04-02 15:27:26 +02:00
Robin Appelman f7d5edfb5f Merge pull request #51866 from nextcloud/migrations-to-execute-filter-sort
fix: use proper migration sorting when checking if a migration needs to be executed
2025-04-02 14:52:18 +02:00
Robin Appelman fc2cda12b5 fix: use proper migration sorting when checking if a migration needs to be executed
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-04-02 14:29:08 +02:00
Ferdinand Thiessen f3761c5bd6 Merge pull request #51567 from nextcloud/chore/consistent-naming
refactor(IMimeTypeDetector): use consistent capitalization
2025-04-02 14:05:03 +02:00
Andy Scherzinger 1632cf5af2 Merge pull request #51852 from nextcloud/fix/user-login-with-cookie-e2ee
fix(encryption): init keys also when logged in using cookie auth
2025-04-02 13:31:00 +02:00
Ferdinand Thiessen 97ad171d32 refactor(IMimeTypeDetector): use consistent capitalization
- use consistantly `mimeType` as it is called MIME type
- fix issues where implementation and interface had different parameter
  names (this is an issue since PHP has named parameters).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-02 13:22:16 +02:00
Louis Chemineau 9677cb86cb chore: Use iterator in ExpireTrash command
Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-04-02 12:44:54 +02:00
Nextcloud bot 82b1b4d0c4 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-04-02 00:23:10 +00:00
Ferdinand Thiessen a3c2600386 fix(encryption): init keys also when logged in using cookie auth
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-04-02 00:06:10 +02:00
Ferdinand Thiessen fdc0b1ecf4 Merge pull request #51845 from nextcloud/zip-download-no-sabre-response
fix: don't have sabre/dav send it's own reponse if we already send the zip response
2025-04-01 19:26:04 +02:00
Robin Appelman 2b0116f0eb fix: don't have sabre/dav send it's own reponse if we already send the zip response
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-04-01 17:29:58 +02:00
Louis 29a4962268 Merge pull request #51760 from nextcloud/artonge/fix/make_error_a_info
fix(files_reminders): Lower disabled notifications app error to info
2025-04-01 17:08:35 +02:00
Joas Schilling d4b805c88a Merge pull request #51800 from gavine99/deterministic-notification-manager
notification manager deterministic app call order
2025-04-01 16:52:19 +02:00
Richard Steinmetz 15d04b1ef1 Merge pull request #50858 from nextcloud/fix/oauth2/retain-legacy-oc-client-support
fix(oauth2): retain support for legacy ownCloud clients
2025-04-01 16:36:50 +02:00
Côme Chilliet e467ea1c6a chore(legacy): Remove deprecated OC_Util::addScript and functions depending on it
Deprecated since 24, currently unused.
Sadly not all related functions were officially marked as deprecated,
 but all of them were unused.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-04-01 15:24:24 +02:00
Louis Chemineau 776c103c36 fix(files_reminder): Replace error log by setup check
Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-04-01 15:19:43 +02:00
Louis Chemineau 3bb2a92962 feat: Support OC-Checksum in bulk upload
To align with the rest of Nextcloud.

Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-04-01 14:35:21 +02:00
Louis Chemineau 04d49452b8 fix(files_reminders): Lower disabled notifications app error to info
Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-04-01 14:34:25 +02:00
Louis Chemineau 8fdf2a7eae fix: Transfer ownership with S3 as primary
When using S3 as primary storage, transferring ownership with the `--move` option fail with the following error:

`SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '8-45b963397aa40d4a0063e0d85e4fe7a1' for key 'fs_storage_path_hash'`

The `--move` option moves the entire home folder from one account to another.
The error means that the move failed because the destination folder already exist in `oc_filecache`.

- With S3 as primary storage, folders only exists as entries in `oc_filecache`.
- With S3 as primary storage, `moveFromStorage(...)` only moves the cache entry, as nothing needs to be moved on disk. This cache move does not delete potentially pre-existing destination folder.
- With Local storage, `moveFromStorage(...)` calls `rename(...)` which delete pre-existing folder.

- `transfer(...)`: https://github.com/nextcloud/server/blob/687a4d9ac7fcdbd935f81a0def567a1092306f7a/apps/files/lib/Service/OwnershipTransferService.php#L112
- `oneTimeUserSetup(...)`: https://github.com/nextcloud/server/blob/687a4d9ac7fcdbd935f81a0def567a1092306f7a/lib/private/Files/SetupManager.php#L261-L262
- `mkdir(...)`: https://github.com/nextcloud/server/blob/687a4d9ac7fcdbd935f81a0def567a1092306f7a/lib/private/Files/ObjectStore/ObjectStoreStorage.php#L91-L135
- `moveFromStorage(...)`: https://github.com/nextcloud/server/blob/687a4d9ac7fcdbd935f81a0def567a1092306f7a/lib/private/Files/ObjectStore/ObjectStoreStorage.php#L635-L636

Delete pre-existing folder in `moveFromStorage(...)`

Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-04-01 13:53:56 +02:00
gavine99 ed6d76ec8d fix(notifications): Change notification app orders
The notification manager always calls notify() of the 'main' notifications app
before other notify apps, and calls other functions for other notifications apps
before the 'main' notification app

Signed-off-by: gavine99 <github@xymail.tk>
2025-04-01 12:27:24 +02:00
Richard Steinmetz 246da73a36 fix(oauth2): retain support for legacy ownCloud clients
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2025-04-01 11:25:52 +02:00
Robin Appelman f436ab066e feat: show permissions in info:file output
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-03-31 15:38:33 +02:00
Robin Appelman 8aae332622 feat: store original storage id and path in object store metadata
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-03-31 15:10:58 +02:00
Robin Appelman 94114b99f7 feat: more generic way of passing metadata to object storage backends for new objects
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-03-31 14:55:18 +02:00
Git'Fellow 5dcec08e98 fix(shares): Allow underscores on custom links
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2025-03-26 08:14:52 +01:00
Christoph Wurst 8388646ae7 perf(db): Extend index on cards_properties to cover name and value
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2025-03-12 13:14:29 +01:00
Robin Appelman 98af649ccc fix: rework UploadFolder implementation
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-02-25 13:58:40 +01:00
schaarsc 778ae6a487 feat(systemtags): add commands to manage tags on files
Resolve nextcloud#32735

Signed-off-by: schaarsc <schaarsc@users.noreply.github.com>
2025-01-29 19:02:39 +01:00
1854 changed files with 28311 additions and 15822 deletions
+13 -15
View File
@@ -16,16 +16,14 @@
*.ts @nextcloud/server-frontend
# dependency management
package.json @nextcloud/server-dependabot
package.json @nextcloud/server-dependabot @nextcloud/server-frontend
package-lock.json @nextcloud/server-dependabot
# Compiled assets only - no owner set to not spam on automated dependency updates
/dist
/dist @nextcloud/server-dependabot
# App maintainers
/apps/admin_audit/appinfo/info.xml @luka-nextcloud @blizzz
/apps/cloud_federation_api/appinfo/info.xml @mejo-
/apps/comments/appinfo/info.xml @edward-ly @Pytal
/apps/cloud_federation_api/appinfo/info.xml @nfebe @mejo-
/apps/comments/appinfo/info.xml @edward-ly @sorbaugh
/apps/contactsinteraction/appinfo/info.xml @kesselb @SebastianKrupinski
/apps/contactsinteraction/lib @kesselb @SebastianKrupinski
/apps/contactsinteraction/tests @kesselb @SebastianKrupinski
@@ -36,21 +34,21 @@ package-lock.json @nextcloud/server-dependabot
/apps/dav/tests/unit/CardDAV @hamza221 @SebastianKrupinski
/apps/encryption/appinfo/info.xml @come-nc @icewind1991
/apps/federatedfilesharing/appinfo/info.xml @icewind1991 @danxuliu
/apps/federation/appinfo/info.xml @nfebe
/apps/files/appinfo/info.xml @skjnldsv @Pytal @ArtificialOwl @come-nc @artonge @icewind1991 @szaimen @susnux @nfebe
/apps/federation/appinfo/info.xml @nfebe @sorbaugh
/apps/files/appinfo/info.xml @skjnldsv @ArtificialOwl @come-nc @artonge @icewind1991 @szaimen @susnux @nfebe
/apps/files_external/appinfo/info.xml @icewind1991 @artonge
/apps/files_reminders/appinfo/info.xml @Pytal
/apps/files_reminders/appinfo/info.xml @skjnldsv @sorbaugh
/apps/files_sharing/appinfo/info.xml @skjnldsv @come-nc
/apps/files_trashbin/appinfo/info.xml @Pytal @icewind1991
/apps/files_trashbin/appinfo/info.xml @icewind1991 @sorbaugh
/apps/files_versions/appinfo/info.xml @artonge @icewind1991
/apps/oauth2/appinfo/info.xml @julien-nc @ChristophWurst
/apps/provisioning_api/appinfo/info.xml @provokateurin @nickvergessen
/apps/settings/appinfo/info.xml @Pytal @JuliaKirschenheuter
/apps/sharebymail/appinfo/info.xml @Altahrim
/apps/settings/appinfo/info.xml @JuliaKirschenheuter @sorbaugh
/apps/sharebymail/appinfo/info.xml @Altahrim @skjnldsv
/apps/systemtags/appinfo/info.xml @Antreesy @marcelklehr
/apps/theming/appinfo/info.xml @skjnldsv @juliusknorr
/apps/twofactor_backupcodes/appinfo/info.xml @st3iny @miaulalala @ChristophWurst
/apps/updatenotification/appinfo/info.xml @Pytal @JuliaKirschenheuter
/apps/updatenotification/appinfo/info.xml @JuliaKirschenheuter @sorbaugh
/apps/user_ldap/appinfo/info.xml @come-nc @blizzz
/apps/user_status/appinfo/info.xml @Antreesy @nickvergessen
/apps/weather_status/appinfo/info.xml @julien-nc @juliusknorr
@@ -80,8 +78,8 @@ package-lock.json @nextcloud/server-dependabot
/core/routes.php @Altahrim @nextcloud/server-backend
# OpenAPI
openapi*.json @provokateurin
ResponseDefinitions.php @provokateurin
openapi*.json @provokateurin @nextcloud/server-backend
ResponseDefinitions.php @provokateurin @nextcloud/server-backend
# Talk team
/lib/private/Comments @nickvergessen @nextcloud/talk-backend
+124 -225
View File
@@ -1,230 +1,8 @@
# SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: AGPL-3.0-or-later
version: 2
updates:
# Linting and coding style
- package-ecosystem: composer
directory: "/"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
# cs-fixer
- package-ecosystem: composer
directory: "/vendor-bin/cs-fixer"
schedule:
interval: weekly
day: saturday
time: "04:10"
timezone: Europe/Copenhagen
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
# openapi-extractor
- package-ecosystem: composer
directory: "/vendor-bin/openapi-extractor"
schedule:
interval: weekly
day: saturday
time: "04:20"
timezone: Europe/Brussels
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
- "provokateurin"
# psalm
- package-ecosystem: composer
directory: "/vendor-bin/psalm"
schedule:
interval: weekly
day: saturday
time: "04:30"
timezone: Europe/Madrid
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
# phpunit
- package-ecosystem: composer
directory: "/vendor-bin/phpunit"
schedule:
interval: weekly
day: saturday
time: "04:40"
timezone: Europe/Madrid
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
# Main master npm
- package-ecosystem: npm
directory: "/"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
open-pull-requests-limit: 10
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
# Testing master npm
- package-ecosystem: npm
directory: "/build"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
labels:
- "3. to review"
- "feature: dependencies"
# Testing master composer
- package-ecosystem: composer
directory: "/build/integration"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
labels:
- "3. to review"
- "feature: dependencies"
- package-ecosystem: npm
directory: "/"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable29
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
- package-ecosystem: npm
directory: "/"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable30
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
- package-ecosystem: npm
directory: "/"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable31
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
- package-ecosystem: composer
directory: "/build/integration"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable29
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
ignore:
# ignore all GitHub linguist patch updates
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: composer
directory: "/build/integration"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable30
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
ignore:
# ignore all GitHub linguist patch updates
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: composer
directory: "/build/integration"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable31
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
ignore:
# ignore all GitHub linguist patch updates
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
# GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
@@ -238,6 +16,127 @@ updates:
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
# Main composer (linting, testing, openapi)
- package-ecosystem: composer
directories:
- "/"
- "/build/integration"
- "/vendor-bin/cs-fixer"
- "/vendor-bin/openapi-extractor"
- "/vendor-bin/phpunit"
- "/vendor-bin/psalm"
- "/vendor-bin/rector"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
labels:
- "3. to review"
- "feature: dependencies"
# Main master npm frontend dependencies
- package-ecosystem: npm
directory: "/"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
open-pull-requests-limit: 20
labels:
- "3. to review"
- "feature: dependencies"
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
# Latest stable release
# Composer dependencies for linting and testing
- package-ecosystem: composer
target-branch: stable31
directories:
- "/"
- "/build/integration"
- "/vendor-bin/cs-fixer"
- "/vendor-bin/openapi-extractor"
- "/vendor-bin/phpunit"
- "/vendor-bin/psalm"
schedule:
interval: weekly
day: saturday
time: "03:30"
timezone: Europe/Paris
labels:
- "3. to review"
- "feature: dependencies"
ignore:
# only patch updates on stable branches
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# Latest stable branch
# frontend dependencies
- package-ecosystem: npm
target-branch: stable31
directory: "/"
schedule:
interval: weekly
day: saturday
time: "03:30"
timezone: Europe/Paris
open-pull-requests-limit: 20
labels:
- "3. to review"
- "feature: dependencies"
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
ignore:
# no major updates on stable branches
- dependency-name: "*"
update-types: ["version-update:semver-major"]
# Older stable releases
# Composer dependencies for linting and testing
- package-ecosystem: composer
target-branch: stable30
directories:
- "/"
- "/build/integration"
- "/vendor-bin/cs-fixer"
- "/vendor-bin/openapi-extractor"
- "/vendor-bin/phpunit"
- "/vendor-bin/psalm"
schedule:
interval: weekly
day: saturday
time: "04:00"
timezone: Europe/Paris
labels:
- "3. to review"
- "feature: dependencies"
ignore:
# only patch updates on stable branches
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# frontend dependencies
- package-ecosystem: npm
target-branch: stable30
directory: "/"
schedule:
interval: weekly
day: saturday
time: "04:00"
timezone: Europe/Paris
open-pull-requests-limit: 20
labels:
- "3. to review"
- "feature: dependencies"
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
ignore:
# no major updates on stable branches
- dependency-name: "*"
update-types: ["version-update:semver-major"]
+6 -5
View File
@@ -36,6 +36,7 @@ jobs:
- 'composer.json'
- 'composer.lock'
- '**.php'
- build/autoloaderchecker.sh
autoloader:
runs-on: ubuntu-latest
@@ -57,7 +58,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
@@ -66,9 +67,6 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Set up dependencies
run: composer i
- name: Check auto loaders
run: bash ./build/autoloaderchecker.sh
@@ -89,7 +87,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
@@ -110,6 +108,9 @@ jobs:
- name: Check that all and only expected files are included
run: php ./build/files-checker.php
- name: Check that all shipped apps are linted by psalm
run: sh ./build/psalm-checker.sh
summary:
permissions:
contents: none
+1 -1
View File
@@ -120,7 +120,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.package-engines-versions.outputs.nodeVersion }}
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ steps.package-engines-versions.outputs.nodeVersion }}
cache: npm
+49 -3
View File
@@ -64,7 +64,7 @@ jobs:
fallbackNpm: "^10"
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
@@ -94,11 +94,56 @@ jobs:
matrix:
# Run multiple copies of the current job in parallel
# Please increase the number or runners as your tests suite grows (0 based index for e2e tests)
containers: ["component", '0', '1', '2', '3', '4', '5', '6', '7']
containers: ['component', 'setup', '0', '1', '2', '3', '4', '5', '6', '7']
# Hack as strategy.job-total includes the component and GitHub does not allow math expressions
# Always align this number with the total of e2e runners (max. index + 1)
total-containers: [8]
services:
mysql:
# Only start mysql if we are running the setup tests
image: ${{matrix.containers == 'setup' && 'ghcr.io/nextcloud/continuous-integration-mysql-8.4:latest' || ''}}
ports:
- '3306/tcp'
env:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_USER: oc_autotest
MYSQL_PASSWORD: nextcloud
MYSQL_DATABASE: oc_autotest
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10
mariadb:
# Only start mariadb if we are running the setup tests
image: ${{matrix.containers == 'setup' && 'mariadb:11.4' || ''}}
ports:
- '3306/tcp'
env:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_USER: oc_autotest
MYSQL_PASSWORD: nextcloud
MYSQL_DATABASE: oc_autotest
options: --health-cmd="mariadb-admin ping" --health-interval 5s --health-timeout 2s --health-retries 5
postgres:
# Only start postgres if we are running the setup tests
image: ${{matrix.containers == 'setup' && 'ghcr.io/nextcloud/continuous-integration-postgres-17:latest' || ''}}
ports:
- '5432/tcp'
env:
POSTGRES_USER: root
POSTGRES_PASSWORD: rootpassword
POSTGRES_DB: nextcloud
options: --mount type=tmpfs,destination=/var/lib/postgresql/data --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
oracle:
# Only start oracle if we are running the setup tests
image: ${{matrix.containers == 'setup' && 'ghcr.io/gvenzl/oracle-free:23' || ''}}
ports:
- '1521'
env:
ORACLE_PASSWORD: oracle
options: --health-cmd healthcheck.sh --health-interval 20s --health-timeout 10s --health-retries 10
name: runner ${{ matrix.containers }}
steps:
@@ -110,7 +155,7 @@ jobs:
path: ./
- name: Set up node ${{ needs.init.outputs.nodeVersion }}
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ needs.init.outputs.nodeVersion }}
@@ -141,6 +186,7 @@ jobs:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
SPLIT: ${{ matrix.total-containers }}
SPLIT_INDEX: ${{ matrix.containers == 'component' && 0 || matrix.containers }}
SETUP_TESTING: ${{ matrix.containers == 'setup' && 'true' || '' }}
- name: Upload snapshots and videos
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+10 -3
View File
@@ -68,7 +68,7 @@ jobs:
if [[ "${{ matrix.ftpd }}" == 'pure-ftpd' ]]; then docker run --name ftp -d --net host -e "PUBLICHOST=localhost" -e FTP_USER_NAME=test -e FTP_USER_PASS=test -e FTP_USER_HOME=/home/test -v /tmp/ftp:/home/test -v /tmp/ftp:/etc/pure-ftpd/passwd stilliard/pure-ftpd; fi
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -96,15 +96,22 @@ jobs:
- name: PHPUnit
run: composer run test:files_external -- \
apps/files_external/tests/Storage/FtpTest.php \
${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
--log-junit junit.xml \
${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }}
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.xml
flags: phpunit-files-external-ftp
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-files-external-ftp
- name: ftpd logs
if: always()
run: |
+20 -6
View File
@@ -65,7 +65,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -94,15 +94,22 @@ jobs:
run: composer run test:files_external -- \
apps/files_external/tests/Storage/Amazons3Test.php \
apps/files_external/tests/Storage/VersionedAmazonS3Test.php \
${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
--log-junit junit.xml \
${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }}
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.xml
flags: phpunit-files-external-s3
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-files-external-s3
- name: S3 logs
if: always()
run: |
@@ -140,7 +147,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -161,15 +168,22 @@ jobs:
run: composer run test:files_external -- \
apps/files_external/tests/Storage/Amazons3Test.php \
apps/files_external/tests/Storage/VersionedAmazonS3Test.php \
${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
--log-junit junit.xml \
${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }}
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.xml
flags: phpunit-files-external-s3
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-files-external-s3
- name: S3 logs
if: always()
run: |
+10 -3
View File
@@ -64,7 +64,7 @@ jobs:
if [[ '${{ matrix.sftpd }}' == 'openssh' ]]; then docker run -p 2222:22 --name sftp -d -v /tmp/sftp:/home/test atmoz/sftp 'test:test:::data'; fi
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -85,15 +85,22 @@ jobs:
run: composer run test:files_external -- \
apps/files_external/tests/Storage/SftpTest.php \
apps/files_external/tests/Storage/SFTP_KeyTest.php \
${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
--log-junit junit.xml \
${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }}
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.xml
flags: phpunit-files-external-sftp
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-files-external-sftp
- name: sftpd logs
if: always()
run: |
@@ -83,6 +83,18 @@ jobs:
run: |
apps/files_external/tests/sso-setup/test-sso-smb.sh ${{ env.DC_IP }}
- name: Show logs DC
if: always()
run: |
docker logs dc
echo "------------"
docker exec dc cat /var/log/samba/log.samba
- name: Show logs Apache
if: always()
run: |
docker logs apache
- name: Show logs
if: always()
run: |
+10 -3
View File
@@ -61,7 +61,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -90,15 +90,22 @@ jobs:
- name: PHPUnit
run: composer run test:files_external -- --verbose \
apps/files_external/tests/Storage/SmbTest.php \
${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
--log-junit junit.xml \
${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }}
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v4.1.1
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.xml
flags: phpunit-files-external-smb
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-files-external-smb
files-external-smb-summary:
runs-on: ubuntu-latest-low
needs: [changes, files-external-smb]
+10 -3
View File
@@ -61,7 +61,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -87,15 +87,22 @@ jobs:
- name: PHPUnit
run: composer run test:files_external -- --verbose \
apps/files_external/tests/Storage/WebdavTest.php \
${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
--log-junit junit.xml \
${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }}
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v4.1.1
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.xml
flags: phpunit-files-external-webdav
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-files-external-webdav
files-external-webdav-summary:
runs-on: ubuntu-latest-low
needs: [changes, files-external-webdav-apache]
+10 -3
View File
@@ -54,7 +54,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -75,15 +75,22 @@ jobs:
- name: PHPUnit
run: composer run test:files_external -- \
${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
--log-junit junit.xml \
${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }}
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.xml
flags: phpunit-files-external-generic
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-files-external-generic
files-external-summary:
runs-on: ubuntu-latest-low
needs: [changes, files-external-generic ]
+1 -1
View File
@@ -56,7 +56,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
+1 -1
View File
@@ -55,7 +55,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
+1 -1
View File
@@ -70,7 +70,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
+1 -1
View File
@@ -114,7 +114,7 @@ jobs:
ref: ${{ matrix.activity-versions }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
+1 -1
View File
@@ -63,7 +63,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v3
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
+1 -1
View File
@@ -51,7 +51,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Set up php8.1
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: 8.1
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
+1 -1
View File
@@ -56,7 +56,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
coverage: none
+1 -1
View File
@@ -35,7 +35,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
+8 -4
View File
@@ -83,7 +83,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ needs.versions.outputs.nodeVersion }}
@@ -99,10 +99,14 @@ jobs:
run: npm run test:coverage --if-present
- name: Collect coverage
uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v4.3.1
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./coverage/lcov.info
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
jsunit:
runs-on: ubuntu-latest
needs: [versions, changes]
@@ -117,7 +121,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ needs.versions.outputs.nodeVersion }}
@@ -145,7 +149,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ needs.versions.outputs.nodeVersion }}
+1 -1
View File
@@ -63,7 +63,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v3
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v3
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
+2 -2
View File
@@ -45,7 +45,7 @@ jobs:
fallbackNpm: '^10'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
@@ -54,7 +54,7 @@ jobs:
- name: Fix npm audit
id: npm-audit
uses: nextcloud-libraries/npm-audit-action@2a60bd2e79cc77f2cc4d9a3fe40f1a69896f3a87 # v0.1.0
uses: nextcloud-libraries/npm-audit-action@1b1728b2b4a7a78d69de65608efcf4db0e3e42d0 # v0.2.0
- name: Run npm ci and npm run build
if: steps.checkout.outcome == 'success'
+9 -3
View File
@@ -74,7 +74,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -101,15 +101,21 @@ jobs:
OBJECT_STORE: azure
OBJECT_STORE_KEY: nextcloud
OBJECT_STORE_SECRET: bmV4dGNsb3Vk
run: composer run test -- --group PRIMARY-azure ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
run: composer run test -- --group PRIMARY-azure --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }}
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.xml
flags: phpunit-azure
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-azure
- name: Azurite logs
if: always()
run: |
+9 -3
View File
@@ -75,7 +75,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -107,15 +107,21 @@ jobs:
OBJECT_STORE: s3
OBJECT_STORE_KEY: nextcloud
OBJECT_STORE_SECRET: bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=
run: composer run test -- --group PRIMARY-s3 ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
run: composer run test -- --group PRIMARY-s3 --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }}
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.xml
flags: phpunit-s3
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-s3
- name: S3 logs
if: always()
run: |
+9 -3
View File
@@ -72,7 +72,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -97,15 +97,21 @@ jobs:
env:
OBJECT_STORE: swift
OBJECT_STORE_SECRET: veryfast
run: composer run test -- --group PRIMARY-swift ${{ matrix.coverage && ' --coverage-clover ./clover.xml' || '' }}
run: composer run test -- --group PRIMARY-swift --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }}
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.xml
flags: phpunit-swift
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-swift
- name: Swift logs
if: always()
run: |
+1 -1
View File
@@ -29,7 +29,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Set up php
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: '8.1'
extensions: ctype, curl, dom, fileinfo, gd, json, libxml, mbstring, openssl, pcntl, pdo, posix, session, simplexml, xml, xmlreader, xmlwriter, zip, zlib
+1 -1
View File
@@ -35,7 +35,7 @@ jobs:
ref: ${{ github.event.pull_request.base.ref }}
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
+1 -1
View File
@@ -42,7 +42,7 @@ jobs:
sudo apt-get install -y ffmpeg imagemagick libmagickcore-6.q16-3-extra
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
extensions: ctype, curl, dom, fileinfo, gd, imagick, intl, json, mbstring, openssl, pdo_sqlite, posix, sqlite, xml, zip, apcu
+9 -3
View File
@@ -91,7 +91,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -120,15 +120,21 @@ jobs:
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
- name: PHPUnit
run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }}
run: composer run test:db -- --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.db.xml' || '' }}
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.db.xml
flags: phpunit-mariadb
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-mariadb
summary:
permissions:
contents: none
+9 -3
View File
@@ -76,7 +76,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -97,15 +97,21 @@ jobs:
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
- name: PHPUnit memcached tests
run: composer run test -- --group Memcache,Memcached ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }}
run: composer run test -- --group Memcache,Memcached --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.xml' || '' }}
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.xml
flags: phpunit-memcached
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-memcached
- name: Print logs
if: always()
run: |
+9 -3
View File
@@ -125,7 +125,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -155,15 +155,21 @@ jobs:
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
- name: PHPUnit
run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }}
run: composer run test:db -- --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.db.xml' || '' }}
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.db.xml
flags: phpunit-mysql
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-mysql
- name: Print logs
if: always()
run: |
+9 -3
View File
@@ -91,7 +91,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -120,15 +120,21 @@ jobs:
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
- name: PHPUnit
run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }}
run: composer run test:db -- --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.db.xml' || '' }}
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.db.xml
flags: phpunit-mysql
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-mysql
- name: Print logs
if: always()
run: |
+9 -3
View File
@@ -79,7 +79,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -103,15 +103,21 @@ jobs:
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
- name: PHPUnit nodb testsuite
run: composer run test -- --exclude-group DB,SLOWDB ${{ matrix.coverage && ' --coverage-clover ./clover.nodb.xml' || '' }}
run: composer run test -- --exclude-group DB,SLOWDB --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.nodb.xml' || '' }}
- name: Upload nodb code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.nodb.xml
flags: phpunit-nodb
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-nodb
- name: Print logs
if: always()
run: |
@@ -75,7 +75,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
+9 -3
View File
@@ -103,7 +103,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -125,15 +125,21 @@ jobs:
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
- name: PHPUnit
run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }}
run: composer run test:db -- --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.db.xml' || '' }}
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.db.xml
flags: phpunit-oci
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-oci
- name: Run repair steps
run: |
./occ maintenance:repair --include-expensive
+9 -3
View File
@@ -91,7 +91,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -115,15 +115,21 @@ jobs:
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
- name: PHPUnit database tests
run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }}
run: composer run test:db -- --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.db.xml' || '' }}
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.db.xml
flags: phpunit-postgres
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-postgres
- name: Run repair steps
run: |
./occ maintenance:repair --include-expensive
+9 -3
View File
@@ -76,7 +76,7 @@ jobs:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
@@ -101,15 +101,21 @@ jobs:
run: ./occ app:list && echo "======= System config =======" && ./occ config:list system
- name: PHPUnit database tests
run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }}
run: composer run test:db -- --log-junit junit.xml ${{ matrix.coverage && '--coverage-clover ./clover.db.xml' || '' }}
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v5.4.2
with:
files: ./clover.db.xml
flags: phpunit-sqlite
- name: Upload test results
if: ${{ !cancelled() }}
uses: codecov/test-results-action@f2dba722c67b86c6caa034178c6e4d35335f6706 # v1.1.0
with:
flags: phpunit-sqlite
- name: Print logs
if: always()
run: |
+4 -4
View File
@@ -30,7 +30,7 @@ jobs:
submodules: true
- name: Set up php
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: '8.1'
extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,imagick,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
@@ -60,7 +60,7 @@ jobs:
submodules: true
- name: Set up php
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: '8.1'
extensions: ctype,curl,dom,fileinfo,ftp,gd,imagick,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
@@ -94,7 +94,7 @@ jobs:
submodules: true
- name: Set up php
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: '8.1'
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
@@ -124,7 +124,7 @@ jobs:
submodules: true
- name: Set up php
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
with:
php-version: '8.1'
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
+4
View File
@@ -131,6 +131,10 @@ Files: build/stubs/pcntl.php build/stubs/zip.php
Copyright: 2022 JetBrains
License: Apache-2.0
Files: build/stubs/excimer.php
Copyright: 2019 Wikimedia Foundation
License: Apache-2.0
Files: core/js/mimetypelist.js core/js/core.json themes/example/core/img
Copyright: 2016 ownCloud, Inc., 2016-2024 Nextcloud GmbH and Nextcloud contributors
License: AGPL-3.0-only
-42
View File
@@ -1,42 +0,0 @@
# SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-FileCopyrightText: 2016 ownCloud, Inc.
# SPDX-License-Identifier: AGPL-3.0-only
before_commands:
- 'git submodule update --init --recursive'
build:
nodes:
analysis:
tests:
override:
- php-scrutinizer-run
checks:
php:
excluded_dependencies:
- etsy/phan
filter:
excluded_paths:
- '3rdparty/*'
- 'apps/*/3rdparty/*'
- 'apps/*/vendor/*'
- 'l10n/*'
- 'core/l10n/*'
- 'apps/*/l10n/*'
- 'apps/*/tests/*'
- 'lib/l10n/*'
- 'core/vendor/*'
- 'core/js/tests/lib/*.js'
- 'core/js/tests/specs/*.js'
- 'core/js/jquery-showpassword.js'
- 'core/js/jquery-tipsy.js'
- 'core/js/placeholders.js'
- 'settings/l10n/*'
- 'tests/*'
- 'build/*'
- 'lib/composer/*'
imports:
- javascript
- php
+1 -1
View File
@@ -67,7 +67,7 @@
- Bernhard Posselt <dev@bernhard-posselt.com>
- Bernhard Reiter <ockham@raz.or.at>
- Bill McGonigle <bill-github.com@bfccomputing.com>
- Birk Borkason <daniel.niccoli@gmail.com>
- Daniel Niccoli <daniel.niccoli@gmail.com>
- Bjoern Schiessle <bjoern@schiessle.org>
- Björn Schießle <bjoern@schiessle.org>
- Bjørn Forsman <bjorn.forsman@gmail.com>
-1
View File
@@ -5,7 +5,6 @@
-->
# Nextcloud Server ☁
[![REUSE status](https://api.reuse.software/badge/github.com/nextcloud/server)](https://api.reuse.software/info/github.com/nextcloud/server)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nextcloud/server/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/nextcloud/server/?branch=master)
[![codecov](https://codecov.io/gh/nextcloud/server/branch/master/graph/badge.svg)](https://codecov.io/gh/nextcloud/server)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/209/badge)](https://bestpractices.coreinfrastructure.org/projects/209)
[![Design](https://contribute.design/api/shield/nextcloud/server)](https://contribute.design/nextcloud/server)
+6
View File
@@ -0,0 +1,6 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "Aodit / Kerzhlevr"
},
"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);");
+4
View File
@@ -0,0 +1,4 @@
{ "translations": {
"Auditing / Logging" : "Aodit / Kerzhlevr"
},"pluralForm" :"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);"
}
+1 -1
View File
@@ -2,6 +2,6 @@ OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "Auditēšana / Žurnalizēšana",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nodrošina Nextcloud žurnalizēšanas iespējas, piemēram, faila piekļuves žurnalizēšanu vai citas sensivas darbības."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nodrošina Nextcloud žurnalēšanas spējas, piemēram, datņu piekļuves žurnalēšanu vai citas gas darbības."
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
+1 -1
View File
@@ -1,5 +1,5 @@
{ "translations": {
"Auditing / Logging" : "Auditēšana / Žurnalizēšana",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nodrošina Nextcloud žurnalizēšanas iespējas, piemēram, faila piekļuves žurnalizēšanu vai citas sensivas darbības."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nodrošina Nextcloud žurnalēšanas spējas, piemēram, datņu piekļuves žurnalēšanu vai citas gas darbības."
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
}
+1 -1
View File
@@ -2,6 +2,6 @@ OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "Auditoria / Registro",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Fornece habilidades de registro para o NextCloud, como acessos de arquivo de log ou ações sensíveis."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Fornece recursos de registro para o Nextcloud, como acessos a arquivos de registro ou outras ações sensíveis."
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
+1 -1
View File
@@ -1,5 +1,5 @@
{ "translations": {
"Auditing / Logging" : "Auditoria / Registro",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Fornece habilidades de registro para o NextCloud, como acessos de arquivo de log ou ações sensíveis."
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Fornece recursos de registro para o Nextcloud, como acessos a arquivos de registro ou outras ações sensíveis."
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}
+2 -21
View File
@@ -10,7 +10,6 @@ namespace OCA\AdminAudit\Actions;
use OC\Files\Node\NonExistingFile;
use OCP\Files\Events\Node\BeforeNodeDeletedEvent;
use OCP\Files\Events\Node\BeforeNodeReadEvent;
use OCP\Files\Events\Node\BeforeNodeRenamedEvent;
use OCP\Files\Events\Node\NodeCopiedEvent;
use OCP\Files\Events\Node\NodeCreatedEvent;
use OCP\Files\Events\Node\NodeRenamedEvent;
@@ -26,9 +25,6 @@ use Psr\Log\LoggerInterface;
* @package OCA\AdminAudit\Actions
*/
class Files extends Action {
private array $renamedNodes = [];
/**
* Logs file read actions
*/
@@ -52,31 +48,16 @@ class Files extends Action {
);
}
/**
* Logs rename actions of files
*/
public function beforeRename(BeforeNodeRenamedEvent $event): void {
try {
$source = $event->getSource();
$this->renamedNodes[$source->getId()] = $source;
} catch (InvalidPathException|NotFoundException $e) {
Server::get(LoggerInterface::class)->error(
'Exception thrown in file rename: ' . $e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
}
/**
* Logs rename actions of files
*/
public function afterRename(NodeRenamedEvent $event): void {
try {
$target = $event->getTarget();
$originalSource = $this->renamedNodes[$target->getId()];
$source = $event->getSource();
$params = [
'newid' => $target->getId(),
'oldpath' => $originalSource->getPath(),
'oldpath' => $source->getPath(),
'newpath' => $target->getPath(),
];
} catch (InvalidPathException|NotFoundException $e) {
-10
View File
@@ -8,16 +8,6 @@ declare(strict_types=1);
namespace OCA\AdminAudit\Actions;
class Versions extends Action {
public function rollback(array $params): void {
$this->log('Version "%s" of "%s" was restored.',
[
'version' => $params['revision'],
'path' => $params['path']
],
['version', 'path']
);
}
public function delete(array $params): void {
$this->log('Version "%s" was deleted.',
['path' => $params['path']],
+2 -9
View File
@@ -27,6 +27,7 @@ use OCA\AdminAudit\Listener\GroupManagementEventListener;
use OCA\AdminAudit\Listener\SecurityEventListener;
use OCA\AdminAudit\Listener\SharingEventListener;
use OCA\AdminAudit\Listener\UserManagementEventListener;
use OCA\Files_Versions\Events\VersionRestoredEvent;
use OCP\App\Events\AppDisableEvent;
use OCP\App\Events\AppEnableEvent;
use OCP\App\Events\AppUpdateEvent;
@@ -41,7 +42,6 @@ use OCP\Console\ConsoleEvent;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\Events\Node\BeforeNodeDeletedEvent;
use OCP\Files\Events\Node\BeforeNodeReadEvent;
use OCP\Files\Events\Node\BeforeNodeRenamedEvent;
use OCP\Files\Events\Node\NodeCopiedEvent;
use OCP\Files\Events\Node\NodeCreatedEvent;
use OCP\Files\Events\Node\NodeRenamedEvent;
@@ -110,6 +110,7 @@ class Application extends App implements IBootstrap {
// File events
$context->registerEventListener(BeforePreviewFetchedEvent::class, FileEventListener::class);
$context->registerEventListener(VersionRestoredEvent::class, FileEventListener::class);
// Security events
$context->registerEventListener(TwoFactorProviderChallengePassed::class, SecurityEventListener::class);
@@ -168,13 +169,6 @@ class Application extends App implements IBootstrap {
private function fileHooks(IAuditLogger $logger, IEventDispatcher $eventDispatcher): void {
$fileActions = new Files($logger);
$eventDispatcher->addListener(
BeforeNodeRenamedEvent::class,
function (BeforeNodeRenamedEvent $event) use ($fileActions): void {
$fileActions->beforeRename($event);
}
);
$eventDispatcher->addListener(
NodeRenamedEvent::class,
function (NodeRenamedEvent $event) use ($fileActions): void {
@@ -220,7 +214,6 @@ class Application extends App implements IBootstrap {
private function versionsHooks(IAuditLogger $logger): void {
$versionsActions = new Versions($logger);
Util::connectHook('\OCP\Versions', 'rollback', $versionsActions, 'rollback');
Util::connectHook('\OCP\Versions', 'delete', $versionsActions, 'delete');
}
@@ -10,6 +10,7 @@ declare(strict_types=1);
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCA\Files_Versions\Events\VersionRestoredEvent;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\Files\InvalidPathException;
@@ -19,12 +20,14 @@ use OCP\Server;
use Psr\Log\LoggerInterface;
/**
* @template-implements IEventListener<BeforePreviewFetchedEvent>
* @template-implements IEventListener<BeforePreviewFetchedEvent|VersionRestoredEvent>
*/
class FileEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof BeforePreviewFetchedEvent) {
$this->beforePreviewFetched($event);
} elseif ($event instanceof VersionRestoredEvent) {
$this->versionRestored($event);
}
}
@@ -54,4 +57,18 @@ class FileEventListener extends Action implements IEventListener {
return;
}
}
/**
* Logs when a version is restored
*/
private function versionRestored(VersionRestoredEvent $event): void {
$version = $event->getVersion();
$this->log('Version "%s" of "%s" was restored.',
[
'version' => $version->getRevisionId(),
'path' => $version->getVersionPath()
],
['version', 'path']
);
}
}
+8
View File
@@ -0,0 +1,8 @@
OC.L10N.register(
"cloud_federation_api",
{
"Cloud Federation API" : "Asl faylni o'chirishda kutilmagan xatolik yuz berdi.",
"Enable clouds to communicate with each other and exchange data" : "Bulutlar bir-biri bilan aloqa qilish va ma'lumot almashish imkonini beradi",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud Federation API turli xil Nextcloud misollariga bir-biri bilan muloqot qilish va ma'lumotlarni almashish imkonini beradi."
},
"nplurals=1; plural=0;");
+6
View File
@@ -0,0 +1,6 @@
{ "translations": {
"Cloud Federation API" : "Asl faylni o'chirishda kutilmagan xatolik yuz berdi.",
"Enable clouds to communicate with each other and exchange data" : "Bulutlar bir-biri bilan aloqa qilish va ma'lumot almashish imkonini beradi",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cloud Federation API turli xil Nextcloud misollariga bir-biri bilan muloqot qilish va ma'lumotlarni almashish imkonini beradi."
},"pluralForm" :"nplurals=1; plural=0;"
}
@@ -12,13 +12,14 @@ use NCU\Security\Signature\Exceptions\IdentityNotFoundException;
use NCU\Security\Signature\Exceptions\SignatoryException;
use OC\OCM\OCMSignatoryManager;
use OCP\Capabilities\ICapability;
use OCP\Capabilities\IInitialStateExcludedCapability;
use OCP\IAppConfig;
use OCP\IURLGenerator;
use OCP\OCM\Exceptions\OCMArgumentException;
use OCP\OCM\IOCMProvider;
use Psr\Log\LoggerInterface;
class Capabilities implements ICapability {
class Capabilities implements ICapability, IInitialStateExcludedCapability {
public const API_VERSION = '1.1'; // informative, real version.
public function __construct(
@@ -54,15 +55,13 @@ class Capabilities implements ICapability {
*/
public function getCapabilities() {
$url = $this->urlGenerator->linkToRouteAbsolute('cloud_federation_api.requesthandlercontroller.addShare');
$pos = strrpos($url, '/');
if ($pos === false) {
throw new OCMArgumentException('generated route should contain a slash character');
}
$this->provider->setEnabled(true);
$this->provider->setApiVersion(self::API_VERSION);
$pos = strrpos($url, '/');
if ($pos === false) {
throw new OCMArgumentException('generated route should contains a slash character');
}
$this->provider->setEndPoint(substr($url, 0, $pos));
$resource = $this->provider->createNewResourceType();
@@ -87,6 +86,6 @@ class Capabilities implements ICapability {
$this->logger->warning('cannot generate local signatory', ['exception' => $e]);
}
return ['ocm' => json_decode(json_encode($this->provider->jsonSerialize()), true)];
return ['ocm' => $this->provider->jsonSerialize()];
}
}
+3
View File
@@ -6,6 +6,7 @@
namespace OCA\CloudFederationAPI;
use OCP\Federation\ICloudFederationProviderManager;
use Psr\Log\LoggerInterface;
/**
* Class config
@@ -18,6 +19,7 @@ class Config {
public function __construct(
private ICloudFederationProviderManager $cloudFederationProviderManager,
private LoggerInterface $logger,
) {
}
@@ -32,6 +34,7 @@ class Config {
$provider = $this->cloudFederationProviderManager->getCloudFederationProvider($resourceType);
return $provider->getSupportedShareTypes();
} catch (\Exception $e) {
$this->logger->error('Failed to create federation provider', ['exception' => $e]);
return [];
}
}
@@ -452,7 +452,7 @@ class RequestHandlerController extends Controller {
*/
private function getHostFromFederationId(string $entry): string {
if (!str_contains($entry, '@')) {
throw new IncomingRequestException('entry ' . $entry . ' does not contains @');
throw new IncomingRequestException('entry ' . $entry . ' does not contain @');
}
$rightPart = substr($entry, strrpos($entry, '@') + 1);
+1 -1
View File
@@ -10,7 +10,7 @@ OC.L10N.register(
"{author} commented on {file}" : "{author} a commenté sur {file}",
"<strong>Comments</strong> for files" : "<strong>Commentaires</strong> sur les fichiers",
"Files" : "Fichiers",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Vous avez été mentionné sur « {file} », dans un commentaire par un compte qui depuis a été supprimé",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Vous avez été mentionné dans « {file} », dans un commentaire d'un compte qui a été supprimé depuis",
"{user} mentioned you in a comment on \"{file}\"" : "{user} vous a mentionné dans un commentaire sur « {file} »",
"Files app plugin to add comments to files" : "Plugin Fichiers app pour ajouter des commentaires aux fichiers",
"Edit comment" : "Modifier le commentaire",
+1 -1
View File
@@ -8,7 +8,7 @@
"{author} commented on {file}" : "{author} a commenté sur {file}",
"<strong>Comments</strong> for files" : "<strong>Commentaires</strong> sur les fichiers",
"Files" : "Fichiers",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Vous avez été mentionné sur « {file} », dans un commentaire par un compte qui depuis a été supprimé",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Vous avez été mentionné dans « {file} », dans un commentaire d'un compte qui a été supprimé depuis",
"{user} mentioned you in a comment on \"{file}\"" : "{user} vous a mentionné dans un commentaire sur « {file} »",
"Files app plugin to add comments to files" : "Plugin Fichiers app pour ajouter des commentaires aux fichiers",
"Edit comment" : "Modifier le commentaire",
+1 -1
View File
@@ -11,7 +11,7 @@ OC.L10N.register(
"<strong>Comments</strong> for files" : "<strong>Comentários</strong> para arquivos",
"Files" : "Arquivos",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Você foi mencionado em \"{file}\", em um comentário de uma conta que já foi excluída",
"{user} mentioned you in a comment on \"{file}\"" : "{user} mencionou você em um comentário em \"{file}\"",
"{user} mentioned you in a comment on \"{file}\"" : "{user} mencionou você em um comentário sobre \"{file}\"",
"Files app plugin to add comments to files" : "Complemento do aplicativo Files para adicionar comentários",
"Edit comment" : "Editar comentário",
"Delete comment" : "Excluir comentário",
+1 -1
View File
@@ -9,7 +9,7 @@
"<strong>Comments</strong> for files" : "<strong>Comentários</strong> para arquivos",
"Files" : "Arquivos",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Você foi mencionado em \"{file}\", em um comentário de uma conta que já foi excluída",
"{user} mentioned you in a comment on \"{file}\"" : "{user} mencionou você em um comentário em \"{file}\"",
"{user} mentioned you in a comment on \"{file}\"" : "{user} mencionou você em um comentário sobre \"{file}\"",
"Files app plugin to add comments to files" : "Complemento do aplicativo Files para adicionar comentários",
"Edit comment" : "Editar comentário",
"Delete comment" : "Excluir comentário",
@@ -1,4 +1,7 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -20,30 +23,17 @@ use OCP\Files\Node;
use OCP\IUser;
use OCP\IUserSession;
use OCP\Share\IShareHelper;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class ListenerTest extends TestCase {
/** @var Listener */
protected $listener;
/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
protected $activityManager;
/** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */
protected $session;
/** @var IAppManager|\PHPUnit\Framework\MockObject\MockObject */
protected $appManager;
/** @var IMountProviderCollection|\PHPUnit\Framework\MockObject\MockObject */
protected $mountProviderCollection;
/** @var IRootFolder|\PHPUnit\Framework\MockObject\MockObject */
protected $rootFolder;
/** @var IShareHelper|\PHPUnit\Framework\MockObject\MockObject */
protected $shareHelper;
protected IManager&MockObject $activityManager;
protected IUserSession&MockObject $session;
protected IAppManager&MockObject $appManager;
protected IMountProviderCollection&MockObject $mountProviderCollection;
protected IRootFolder&MockObject $rootFolder;
protected IShareHelper&MockObject $shareHelper;
protected Listener $listener;
protected function setUp(): void {
parent::setUp();
@@ -76,7 +66,7 @@ class ListenerTest extends TestCase {
->method('getObjectType')
->willReturn('files');
/** @var CommentsEvent|\PHPUnit\Framework\MockObject\MockObject $event */
/** @var CommentsEvent|MockObject $event */
$event = $this->createMock(CommentsEvent::class);
$event->expects($this->any())
->method('getComment')
@@ -85,13 +75,13 @@ class ListenerTest extends TestCase {
->method('getEvent')
->willReturn(CommentsEvent::EVENT_ADD);
/** @var IUser|\PHPUnit\Framework\MockObject\MockObject $ownerUser */
/** @var IUser|MockObject $ownerUser */
$ownerUser = $this->createMock(IUser::class);
$ownerUser->expects($this->any())
->method('getUID')
->willReturn('937393');
/** @var \PHPUnit\Framework\MockObject\MockObject $mount */
/** @var MockObject $mount */
$mount = $this->createMock(ICachedMountFileInfo::class);
$mount->expects($this->any())
->method('getUser')
@@ -133,7 +123,7 @@ class ListenerTest extends TestCase {
->method('getUser')
->willReturn($ownerUser);
/** @var \PHPUnit\Framework\MockObject\MockObject $activity */
/** @var MockObject $activity */
$activity = $this->createMock(IEvent::class);
$activity->expects($this->exactly(count($al['users'])))
->method('setAffectedUser');
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -7,7 +9,12 @@
*/
namespace OCA\Comments\Tests\Unit\AppInfo;
use OCA\Comments\Activity\Filter;
use OCA\Comments\Activity\Listener;
use OCA\Comments\Activity\Provider;
use OCA\Comments\Activity\Setting;
use OCA\Comments\AppInfo\Application;
use OCA\Comments\Controller\NotificationsController;
use OCA\Comments\Notification\Notifier;
use OCP\IUserManager;
use OCP\IUserSession;
@@ -38,12 +45,12 @@ class ApplicationTest extends TestCase {
$c = $app->getContainer();
$services = [
'OCA\Comments\Controller\NotificationsController',
'OCA\Comments\Activity\Filter',
'OCA\Comments\Activity\Listener',
'OCA\Comments\Activity\Provider',
'OCA\Comments\Activity\Setting',
'OCA\Comments\Notification\Listener',
NotificationsController::class,
Filter::class,
Listener::class,
Provider::class,
Setting::class,
\OCA\Comments\Notification\Listener::class,
Notifier::class,
];
@@ -8,13 +8,12 @@ namespace OCA\Comments\Tests\Unit\Collaboration;
use OCA\Comments\Collaboration\CommentersSorter;
use OCP\Comments\IComment;
use OCP\Comments\ICommentsManager;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class CommentersSorterTest extends TestCase {
/** @var ICommentsManager|\PHPUnit\Framework\MockObject\MockObject */
protected $commentsManager;
/** @var CommentersSorter */
protected $sorter;
protected ICommentsManager&MockObject $commentsManager;
protected CommentersSorter $sorter;
protected function setUp(): void {
parent::setUp();
@@ -55,7 +54,7 @@ class CommentersSorterTest extends TestCase {
$this->assertEquals($data['expected'], $workArray);
}
public function sortDataProvider() {
public static function sortDataProvider(): array {
return [[
[
#1 sort properly and otherwise keep existing order
@@ -1,5 +1,7 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -22,26 +24,16 @@ use OCP\IUser;
use OCP\IUserSession;
use OCP\Notification\IManager;
use OCP\Notification\INotification;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class NotificationsTest extends TestCase {
/** @var NotificationsController */
protected $notificationsController;
/** @var ICommentsManager|\PHPUnit\Framework\MockObject\MockObject */
protected $commentsManager;
/** @var IRootFolder|\PHPUnit\Framework\MockObject\MockObject */
protected $rootFolder;
/** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */
protected $session;
/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
protected $notificationManager;
/** @var IURLGenerator|\PHPUnit\Framework\MockObject\MockObject */
protected $urlGenerator;
protected ICommentsManager&MockObject $commentsManager;
protected IRootFolder&MockObject $rootFolder;
protected IUserSession&MockObject $session;
protected IManager&MockObject $notificationManager;
protected IURLGenerator&MockObject $urlGenerator;
protected NotificationsController $notificationsController;
protected function setUp(): void {
parent::setUp();
@@ -81,10 +73,6 @@ class NotificationsTest extends TestCase {
$this->urlGenerator->expects($this->exactly(2))
->method('linkToRoute')
->withConsecutive(
['comments.Notifications.view', ['id' => '42']],
['core.login.showLoginForm', ['redirect_url' => 'link-to-comment']]
)
->willReturnMap([
['comments.Notifications.view', ['id' => '42'], 'link-to-comment'],
['core.login.showLoginForm', ['redirect_url' => 'link-to-comment'], 'link-to-login'],
+19 -30
View File
@@ -1,4 +1,7 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -10,43 +13,32 @@ use OCA\Comments\Listener\CommentsEventListener;
use OCA\Comments\Notification\Listener as NotificationListener;
use OCP\Comments\CommentsEvent;
use OCP\Comments\IComment;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class EventHandlerTest extends TestCase {
/** @var CommentsEventListener */
protected $eventHandler;
/** @var ActivityListener|\PHPUnit\Framework\MockObject\MockObject */
protected $activityListener;
/** @var NotificationListener|\PHPUnit\Framework\MockObject\MockObject */
protected $notificationListener;
protected ActivityListener&MockObject $activityListener;
protected NotificationListener&MockObject $notificationListener;
protected CommentsEventListener $eventHandler;
protected function setUp(): void {
parent::setUp();
$this->activityListener = $this->getMockBuilder(ActivityListener::class)
->disableOriginalConstructor()
->getMock();
$this->notificationListener = $this->getMockBuilder(NotificationListener::class)
->disableOriginalConstructor()
->getMock();
$this->activityListener = $this->createMock(ActivityListener::class);
$this->notificationListener = $this->createMock(NotificationListener::class);
$this->eventHandler = new CommentsEventListener($this->activityListener, $this->notificationListener);
}
public function testNotFiles(): void {
/** @var IComment|\PHPUnit\Framework\MockObject\MockObject $comment */
$comment = $this->getMockBuilder(IComment::class)->getMock();
/** @var IComment|MockObject $comment */
$comment = $this->createMock(IComment::class);
$comment->expects($this->once())
->method('getObjectType')
->willReturn('smiles');
/** @var CommentsEvent|\PHPUnit\Framework\MockObject\MockObject $event */
$event = $this->getMockBuilder(CommentsEvent::class)
->disableOriginalConstructor()
->getMock();
/** @var CommentsEvent|MockObject $event */
$event = $this->createMock(CommentsEvent::class);
$event->expects($this->once())
->method('getComment')
->willReturn($comment);
@@ -56,7 +48,7 @@ class EventHandlerTest extends TestCase {
$this->eventHandler->handle($event);
}
public function handledProvider() {
public static function handledProvider(): array {
return [
[CommentsEvent::EVENT_DELETE],
[CommentsEvent::EVENT_UPDATE],
@@ -67,19 +59,16 @@ class EventHandlerTest extends TestCase {
/**
* @dataProvider handledProvider
* @param string $eventType
*/
public function testHandled($eventType): void {
/** @var IComment|\PHPUnit\Framework\MockObject\MockObject $comment */
$comment = $this->getMockBuilder(IComment::class)->getMock();
public function testHandled(string $eventType): void {
/** @var IComment|MockObject $comment */
$comment = $this->createMock(IComment::class);
$comment->expects($this->once())
->method('getObjectType')
->willReturn('files');
/** @var CommentsEvent|\PHPUnit\Framework\MockObject\MockObject $event */
$event = $this->getMockBuilder(CommentsEvent::class)
->disableOriginalConstructor()
->getMock();
/** @var CommentsEvent|MockObject $event */
$event = $this->createMock(CommentsEvent::class);
$event->expects($this->atLeastOnce())
->method('getComment')
->willReturn($comment);
@@ -14,25 +14,19 @@ use OCP\IURLGenerator;
use OCP\IUserManager;
use OCP\Notification\IManager;
use OCP\Notification\INotification;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class ListenerTest extends TestCase {
/** @var IManager|\PHPUnit\Framework\MockObject\MockObject */
protected $notificationManager;
/** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject */
protected $userManager;
/** @var IURLGenerator|\PHPUnit\Framework\MockObject\MockObject */
protected $urlGenerator;
/** @var Listener */
protected $listener;
protected IManager&MockObject $notificationManager;
protected IUserManager&MockObject $userManager;
protected IURLGenerator&MockObject $urlGenerator;
protected Listener $listener;
protected function setUp(): void {
parent::setUp();
$this->notificationManager = $this->createMock(\OCP\Notification\IManager::class);
$this->notificationManager = $this->createMock(IManager::class);
$this->userManager = $this->createMock(IUserManager::class);
$this->listener = new Listener(
@@ -41,7 +35,7 @@ class ListenerTest extends TestCase {
);
}
public function eventProvider() {
public static function eventProvider(): array {
return [
[CommentsEvent::EVENT_ADD, 'notify'],
[CommentsEvent::EVENT_UPDATE, 'notify'],
@@ -56,8 +50,8 @@ class ListenerTest extends TestCase {
* @param string $notificationMethod
*/
public function testEvaluate($eventType, $notificationMethod): void {
/** @var IComment|\PHPUnit\Framework\MockObject\MockObject $comment */
$comment = $this->getMockBuilder(IComment::class)->getMock();
/** @var IComment|MockObject $comment */
$comment = $this->createMock(IComment::class);
$comment->expects($this->any())
->method('getObjectType')
->willReturn('files');
@@ -78,10 +72,8 @@ class ListenerTest extends TestCase {
->method('getId')
->willReturn('1234');
/** @var CommentsEvent|\PHPUnit\Framework\MockObject\MockObject $event */
$event = $this->getMockBuilder(CommentsEvent::class)
->disableOriginalConstructor()
->getMock();
/** @var CommentsEvent|MockObject $event */
$event = $this->createMock(CommentsEvent::class);
$event->expects($this->once())
->method('getComment')
->willReturn($comment);
@@ -89,8 +81,8 @@ class ListenerTest extends TestCase {
->method(('getEvent'))
->willReturn($eventType);
/** @var INotification|\PHPUnit\Framework\MockObject\MockObject $notification */
$notification = $this->getMockBuilder(INotification::class)->getMock();
/** @var INotification|MockObject $notification */
$notification = $this->createMock(INotification::class);
$notification->expects($this->any())
->method($this->anything())
->willReturn($notification);
@@ -106,26 +98,24 @@ class ListenerTest extends TestCase {
$this->userManager->expects($this->exactly(6))
->method('userExists')
->withConsecutive(
['foobar'],
['barfoo'],
['foo@bar.com'],
['bar@foo.org@foobar.io'],
['23452-4333-54353-2342'],
['yolo']
)
->willReturn(true);
->willReturnMap([
['foobar', true],
['barfoo', true],
['foo@bar.com', true],
['bar@foo.org@foobar.io', true],
['23452-4333-54353-2342', true],
['yolo', true]
]);
$this->listener->evaluate($event);
}
/**
* @dataProvider eventProvider
* @param string $eventType
*/
public function testEvaluateNoMentions($eventType): void {
/** @var IComment|\PHPUnit\Framework\MockObject\MockObject $comment */
$comment = $this->getMockBuilder(IComment::class)->getMock();
public function testEvaluateNoMentions(string $eventType): void {
/** @var IComment|MockObject $comment */
$comment = $this->createMock(IComment::class);
$comment->expects($this->any())
->method('getObjectType')
->willReturn('files');
@@ -136,10 +126,8 @@ class ListenerTest extends TestCase {
->method('getMentions')
->willReturn([]);
/** @var CommentsEvent|\PHPUnit\Framework\MockObject\MockObject $event */
$event = $this->getMockBuilder(CommentsEvent::class)
->disableOriginalConstructor()
->getMock();
/** @var CommentsEvent|MockObject $event */
$event = $this->createMock(CommentsEvent::class);
$event->expects($this->once())
->method('getComment')
->willReturn($comment);
@@ -161,8 +149,8 @@ class ListenerTest extends TestCase {
}
public function testEvaluateUserDoesNotExist(): void {
/** @var IComment|\PHPUnit\Framework\MockObject\MockObject $comment */
$comment = $this->getMockBuilder(IComment::class)->getMock();
/** @var IComment|MockObject $comment */
$comment = $this->createMock(IComment::class);
$comment->expects($this->any())
->method('getObjectType')
->willReturn('files');
@@ -176,10 +164,8 @@ class ListenerTest extends TestCase {
->method('getId')
->willReturn('1234');
/** @var CommentsEvent|\PHPUnit\Framework\MockObject\MockObject $event */
$event = $this->getMockBuilder(CommentsEvent::class)
->disableOriginalConstructor()
->getMock();
/** @var CommentsEvent|MockObject $event */
$event = $this->createMock(CommentsEvent::class);
$event->expects($this->once())
->method('getComment')
->willReturn($comment);
@@ -187,8 +173,8 @@ class ListenerTest extends TestCase {
->method(('getEvent'))
->willReturn(CommentsEvent::EVENT_ADD);
/** @var INotification|\PHPUnit\Framework\MockObject\MockObject $notification */
$notification = $this->getMockBuilder(INotification::class)->getMock();
/** @var INotification|MockObject $notification */
$notification = $this->createMock(INotification::class);
$notification->expects($this->any())
->method($this->anything())
->willReturn($notification);
@@ -203,9 +189,7 @@ class ListenerTest extends TestCase {
$this->userManager->expects($this->once())
->method('userExists')
->withConsecutive(
['foobar']
)
->with('foobar')
->willReturn(false);
$this->listener->evaluate($event);
@@ -1,4 +1,7 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
@@ -23,26 +26,16 @@ use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class NotifierTest extends TestCase {
/** @var Notifier */
protected $notifier;
/** @var IFactory|MockObject */
protected $l10nFactory;
/** @var IL10N|MockObject */
protected $l;
/** @var IRootFolder|MockObject */
protected $folder;
/** @var ICommentsManager|MockObject */
protected $commentsManager;
/** @var IURLGenerator|MockObject */
protected $url;
/** @var IUserManager|MockObject */
protected $userManager;
/** @var INotification|MockObject */
protected $notification;
/** @var IComment|MockObject */
protected $comment;
/** @var string */
protected $lc = 'tlh_KX';
protected IFactory&MockObject $l10nFactory;
protected IL10N&MockObject $l;
protected IRootFolder&MockObject $folder;
protected ICommentsManager&MockObject $commentsManager;
protected IURLGenerator&MockObject $url;
protected IUserManager&MockObject $userManager;
protected INotification&MockObject $notification;
protected IComment&MockObject $comment;
protected Notifier $notifier;
protected string $lc = 'tlh_KX';
protected function setUp(): void {
parent::setUp();
@@ -75,9 +68,8 @@ class NotifierTest extends TestCase {
public function testPrepareSuccess(): void {
$fileName = 'Gre\'thor.odp';
$displayName = 'Huraga';
$message = '@Huraga mentioned you in a comment on "Gre\'thor.odp"';
/** @var Node|MockObject $node */
/** @var Node&MockObject $node */
$node = $this->createMock(Node::class);
$node
->expects($this->atLeastOnce())
@@ -192,7 +184,6 @@ class NotifierTest extends TestCase {
public function testPrepareSuccessDeletedUser(): void {
$fileName = 'Gre\'thor.odp';
$message = 'You were mentioned on "Gre\'thor.odp", in a comment by an account that has since been deleted';
/** @var Node|MockObject $node */
$node = $this->createMock(Node::class);
+1 -1
View File
@@ -2,7 +2,7 @@ OC.L10N.register(
"contactsinteraction",
{
"Recently contacted" : "Contactados recentemente",
"Contacts Interaction" : "Interação de contatos",
"Contacts Interaction" : "Interação de Contatos",
"Manages interaction between accounts and contacts" : "Gerencia a interação entre contas e contatos",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Colete dados sobre interações de contas e contatos e forneça um catálogo de endereços para os dados"
},
+1 -1
View File
@@ -1,6 +1,6 @@
{ "translations": {
"Recently contacted" : "Contactados recentemente",
"Contacts Interaction" : "Interação de contatos",
"Contacts Interaction" : "Interação de Contatos",
"Manages interaction between accounts and contacts" : "Gerencia a interação entre contas e contatos",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Colete dados sobre interações de contas e contatos e forneça um catálogo de endereços para os dados"
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
@@ -21,12 +21,8 @@ use Test\TestCase;
* @group DB
*/
class RecentContactMapperTest extends TestCase {
/** @var RecentContactMapper */
private $recentContactMapper;
/** @var ITimeFactory */
private $time;
private RecentContactMapper $recentContactMapper;
private ITimeFactory $time;
protected function setUp(): void {
parent::setUp();
+8 -8
View File
@@ -1,11 +1,11 @@
OC.L10N.register(
"dashboard",
{
"Dashboard" : "Töölaud",
"Dashboard app" : "Töölaua rakendus",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Alustage oma päeva teadlikult\n\nNextcloudi avaleht on su päeva alguspunkt, mis annab ülevaate eelseisvatest kohtumistest, kiireloomulistest meilidest, vestlussõnumitest, sissetulevatest päringutest, viimastest säutsudest ja paljust muust! Inimesed saavad lisada neile meeldivaid vidinaid ja muuta tausta oma maitse järgi.",
"Dashboard" : "Töölaud/Juhtpaneel",
"Dashboard app" : "Töölaua/juhtpaneeli rakendus",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Alusta oma päeva teadlikult\n\nNextcloudi avaleht on su päeva alguspunkt, mis annab ülevaate eelseisvatest kohtumistest, kiireloomulistest kirjadest, vestlussõnumitest, sissetulevatest päringutest, viimastest säutsudest ja paljust muust! Inimesed saavad lisada neile meeldivaid vidinaid ja muuta tausta oma maitse järgi.",
"Weather" : "Ilm",
"Status" : "Staatus",
"Status" : "Olek",
"Good morning" : "Tere hommikust",
"Good morning, {name}" : "Tere hommikust, {name}",
"Good afternoon" : "Tere päevast",
@@ -16,14 +16,14 @@ OC.L10N.register(
"Hello, {name}" : "Tere, {name}",
"Happy birthday 🥳🤩🎂🎉" : "Palju õnne sünnipäevaks 🥳🤩🎂🎉",
"Happy birthday, {name} 🥳🤩🎂🎉" : "Palju õnne, {name} 🥳🤩🎂🎉",
"\"{title} icon\"" : "\"{title} ikoon\"",
"\"{title} icon\"" : "{title} ikoon",
"Customize" : "Kohanda",
"Edit widgets" : "Redigeeri vidinaid",
"Edit widgets" : "Muuda vidinaid",
"Get more widgets from the App Store" : "Hangi rohkem vidinaid Rakenduste Poest",
"Weather service" : "Ilmateenus",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Sinu privaatsuse huvides küsib su nimel ilmaandmeid Nextcloudi server, nii et ilmateenistus ei saa isiklikku teavet.",
"Weather data from Met.no" : "Ilmaandmed Met.no-st",
"geocoding with Nominatim" : "geoprogrammeerimine Nominatim-iga",
"elevation data from OpenTopoData" : "kõrgusandmed OpenTopoData-st"
"geocoding with Nominatim" : "geoprogrammeerimine Nominatimiga",
"elevation data from OpenTopoData" : "kõrgusandmed OpenTopoDatast"
},
"nplurals=2; plural=(n != 1);");
+8 -8
View File
@@ -1,9 +1,9 @@
{ "translations": {
"Dashboard" : "Töölaud",
"Dashboard app" : "Töölaua rakendus",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Alustage oma päeva teadlikult\n\nNextcloudi avaleht on su päeva alguspunkt, mis annab ülevaate eelseisvatest kohtumistest, kiireloomulistest meilidest, vestlussõnumitest, sissetulevatest päringutest, viimastest säutsudest ja paljust muust! Inimesed saavad lisada neile meeldivaid vidinaid ja muuta tausta oma maitse järgi.",
"Dashboard" : "Töölaud/Juhtpaneel",
"Dashboard app" : "Töölaua/juhtpaneeli rakendus",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Alusta oma päeva teadlikult\n\nNextcloudi avaleht on su päeva alguspunkt, mis annab ülevaate eelseisvatest kohtumistest, kiireloomulistest kirjadest, vestlussõnumitest, sissetulevatest päringutest, viimastest säutsudest ja paljust muust! Inimesed saavad lisada neile meeldivaid vidinaid ja muuta tausta oma maitse järgi.",
"Weather" : "Ilm",
"Status" : "Staatus",
"Status" : "Olek",
"Good morning" : "Tere hommikust",
"Good morning, {name}" : "Tere hommikust, {name}",
"Good afternoon" : "Tere päevast",
@@ -14,14 +14,14 @@
"Hello, {name}" : "Tere, {name}",
"Happy birthday 🥳🤩🎂🎉" : "Palju õnne sünnipäevaks 🥳🤩🎂🎉",
"Happy birthday, {name} 🥳🤩🎂🎉" : "Palju õnne, {name} 🥳🤩🎂🎉",
"\"{title} icon\"" : "\"{title} ikoon\"",
"\"{title} icon\"" : "{title} ikoon",
"Customize" : "Kohanda",
"Edit widgets" : "Redigeeri vidinaid",
"Edit widgets" : "Muuda vidinaid",
"Get more widgets from the App Store" : "Hangi rohkem vidinaid Rakenduste Poest",
"Weather service" : "Ilmateenus",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Sinu privaatsuse huvides küsib su nimel ilmaandmeid Nextcloudi server, nii et ilmateenistus ei saa isiklikku teavet.",
"Weather data from Met.no" : "Ilmaandmed Met.no-st",
"geocoding with Nominatim" : "geoprogrammeerimine Nominatim-iga",
"elevation data from OpenTopoData" : "kõrgusandmed OpenTopoData-st"
"geocoding with Nominatim" : "geoprogrammeerimine Nominatimiga",
"elevation data from OpenTopoData" : "kõrgusandmed OpenTopoDatast"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+3 -3
View File
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"Dashboard" : "Painel",
"Dashboard app" : "Aplicativo Painel",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Comece o dia informado \n\nO Nextcloud Dashboard é o seu ponto de partida do dia, oferecendo uma visão geral de seus próximos agendamentos, e-mails urgentes, mensagens de bate-papo, tickets recebidos, tweets mais recentes e muito mais! As pessoas podem adicionar os widgets que desejarem e alterar o plano de fundo de acordo com sua preferência.",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Comece o dia informado \n\nO Painel do Nextcloud (Nextcloud Dashboard) é o seu ponto de partida do dia, oferecendo uma visão geral de seus próximos agendamentos, e-mails urgentes, mensagens de bate-papo, tickets recebidos, tweets mais recentes e muito mais! As pessoas podem adicionar os widgets que desejarem e alterar o plano de fundo de acordo com sua preferência.",
"Weather" : "Clima",
"Status" : "Status",
"Good morning" : "Bom dia",
@@ -16,10 +16,10 @@ OC.L10N.register(
"Hello, {name}" : "Olá, {name}",
"Happy birthday 🥳🤩🎂🎉" : "Feliz Aniversário 🥳🤩🎂🎉",
"Happy birthday, {name} 🥳🤩🎂🎉" : "Feliz Aniversário, {name} 🥳🤩🎂🎉",
"\"{title} icon\"" : "\"{title} icon\"",
"\"{title} icon\"" : "\"ícone de {title} \"",
"Customize" : "Personalizar",
"Edit widgets" : "Editar widgets",
"Get more widgets from the App Store" : "Obtenha mais widgets na App Store",
"Get more widgets from the App Store" : "Obtenha mais widgets na Loja de Aplicativos",
"Weather service" : "Serviço de Clima",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Para sua privacidade, as informações de Tempo são solicitadas pelo servidor Nextcloud de forma que o serviço de Tempo não receba suas informações pessoais.",
"Weather data from Met.no" : "Dados de Tempo do Met.no",
+3 -3
View File
@@ -1,7 +1,7 @@
{ "translations": {
"Dashboard" : "Painel",
"Dashboard app" : "Aplicativo Painel",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Comece o dia informado \n\nO Nextcloud Dashboard é o seu ponto de partida do dia, oferecendo uma visão geral de seus próximos agendamentos, e-mails urgentes, mensagens de bate-papo, tickets recebidos, tweets mais recentes e muito mais! As pessoas podem adicionar os widgets que desejarem e alterar o plano de fundo de acordo com sua preferência.",
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Comece o dia informado \n\nO Painel do Nextcloud (Nextcloud Dashboard) é o seu ponto de partida do dia, oferecendo uma visão geral de seus próximos agendamentos, e-mails urgentes, mensagens de bate-papo, tickets recebidos, tweets mais recentes e muito mais! As pessoas podem adicionar os widgets que desejarem e alterar o plano de fundo de acordo com sua preferência.",
"Weather" : "Clima",
"Status" : "Status",
"Good morning" : "Bom dia",
@@ -14,10 +14,10 @@
"Hello, {name}" : "Olá, {name}",
"Happy birthday 🥳🤩🎂🎉" : "Feliz Aniversário 🥳🤩🎂🎉",
"Happy birthday, {name} 🥳🤩🎂🎉" : "Feliz Aniversário, {name} 🥳🤩🎂🎉",
"\"{title} icon\"" : "\"{title} icon\"",
"\"{title} icon\"" : "\"ícone de {title} \"",
"Customize" : "Personalizar",
"Edit widgets" : "Editar widgets",
"Get more widgets from the App Store" : "Obtenha mais widgets na App Store",
"Get more widgets from the App Store" : "Obtenha mais widgets na Loja de Aplicativos",
"Weather service" : "Serviço de Clima",
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Para sua privacidade, as informações de Tempo são solicitadas pelo servidor Nextcloud de forma que o serviço de Tempo não receba suas informações pessoais.",
"Weather data from Met.no" : "Dados de Tempo do Met.no",
+2
View File
@@ -13,6 +13,8 @@ OC.L10N.register(
"Good evening, {name}" : "Bună seara, {name}",
"Hello" : "Bună",
"Hello, {name}" : "Bună, {name}",
"Happy birthday 🥳🤩🎂🎉" : "La mulți ani 🥳🤩🎂🎉",
"Happy birthday, {name} 🥳🤩🎂🎉" : "La mulți ani, {name} 🥳🤩🎂🎉",
"Customize" : "Personalizează",
"Edit widgets" : "Editează widget",
"Get more widgets from the App Store" : "Obține mai multe widget-uri din App Store",
+2
View File
@@ -11,6 +11,8 @@
"Good evening, {name}" : "Bună seara, {name}",
"Hello" : "Bună",
"Hello, {name}" : "Bună, {name}",
"Happy birthday 🥳🤩🎂🎉" : "La mulți ani 🥳🤩🎂🎉",
"Happy birthday, {name} 🥳🤩🎂🎉" : "La mulți ani, {name} 🥳🤩🎂🎉",
"Customize" : "Personalizează",
"Edit widgets" : "Editează widget",
"Get more widgets from the App Store" : "Obține mai multe widget-uri din App Store",
@@ -40,7 +40,7 @@ class DashboardServiceTest extends TestCase {
);
}
public function testGetBirthdate() {
public function testGetBirthdate(): void {
$user = $this->createMock(IUser::class);
$this->userManager->method('get')
->willReturn($user);
@@ -61,7 +61,7 @@ class DashboardServiceTest extends TestCase {
$this->assertEquals('2024-12-10T00:00:00.000Z', $birthdate);
}
public function testGetBirthdatePropertyDoesNotExist() {
public function testGetBirthdatePropertyDoesNotExist(): void {
$user = $this->createMock(IUser::class);
$this->userManager->method('get')
->willReturn($user);
@@ -75,7 +75,7 @@ class DashboardServiceTest extends TestCase {
$this->assertEquals('', $birthdate);
}
public function testGetBirthdateUserNotFound() {
public function testGetBirthdateUserNotFound(): void {
$this->userManager->method('get')
->willReturn(null);
@@ -84,7 +84,7 @@ class DashboardServiceTest extends TestCase {
$this->assertEquals('', $birthdate);
}
public function testGetBirthdateNoUserId() {
public function testGetBirthdateNoUserId(): void {
$service = new DashboardService(
$this->config,
null,
+3
View File
@@ -55,13 +55,16 @@
</repair-steps>
<commands>
<command>OCA\DAV\Command\ClearCalendarUnshares</command>
<command>OCA\DAV\Command\CreateAddressBook</command>
<command>OCA\DAV\Command\CreateCalendar</command>
<command>OCA\DAV\Command\CreateSubscription</command>
<command>OCA\DAV\Command\DeleteCalendar</command>
<command>OCA\DAV\Command\DeleteSubscription</command>
<command>OCA\DAV\Command\ExportCalendar</command>
<command>OCA\DAV\Command\FixCalendarSyncCommand</command>
<command>OCA\DAV\Command\ListAddressbooks</command>
<command>OCA\DAV\Command\ListCalendarShares</command>
<command>OCA\DAV\Command\ListCalendars</command>
<command>OCA\DAV\Command\ListSubscriptions</command>
<command>OCA\DAV\Command\MoveCalendar</command>
+1 -1
View File
@@ -68,7 +68,7 @@ $requestUri = Server::get(IRequest::class)->getRequestUri();
$linkCheckPlugin = new PublicLinkCheckPlugin();
$filesDropPlugin = new FilesDropPlugin();
$server = $serverFactory->createServer($baseuri, $requestUri, $authPlugin, function (\Sabre\DAV\Server $server) use ($authBackend, $linkCheckPlugin, $filesDropPlugin) {
$server = $serverFactory->createServer(false, $baseuri, $requestUri, $authPlugin, function (\Sabre\DAV\Server $server) use ($authBackend, $linkCheckPlugin, $filesDropPlugin) {
$isAjax = in_array('XMLHttpRequest', explode(',', $_SERVER['HTTP_X_REQUESTED_WITH'] ?? ''));
/** @var FederatedShareProvider $shareProvider */
$federatedShareProvider = Server::get(FederatedShareProvider::class);
+3 -2
View File
@@ -61,13 +61,14 @@ $authPlugin = new \Sabre\DAV\Auth\Plugin($authBackend);
$bearerAuthPlugin = new BearerAuth(
Server::get(IUserSession::class),
Server::get(ISession::class),
Server::get(IRequest::class)
Server::get(IRequest::class),
Server::get(IConfig::class),
);
$authPlugin->addBackend($bearerAuthPlugin);
$requestUri = Server::get(IRequest::class)->getRequestUri();
$server = $serverFactory->createServer($baseuri, $requestUri, $authPlugin, function () {
$server = $serverFactory->createServer(false, $baseuri, $requestUri, $authPlugin, function () {
// use the view for the logged in user
return Filesystem::getView();
});
+6 -5
View File
@@ -14,12 +14,15 @@ use OCA\DAV\Files\Sharing\FilesDropPlugin;
use OCA\DAV\Files\Sharing\PublicLinkCheckPlugin;
use OCA\DAV\Storage\PublicOwnerWrapper;
use OCA\DAV\Storage\PublicShareWrapper;
use OCA\DAV\Upload\ChunkingPlugin;
use OCA\DAV\Upload\ChunkingV2Plugin;
use OCA\FederatedFileSharing\FederatedShareProvider;
use OCP\BeforeSabrePubliclyLoadedEvent;
use OCP\Constants;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\IRootFolder;
use OCP\Files\Mount\IMountManager;
use OCP\ICacheFactory;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IPreview;
@@ -75,12 +78,8 @@ $serverFactory = new ServerFactory(
$linkCheckPlugin = new PublicLinkCheckPlugin();
$filesDropPlugin = new FilesDropPlugin();
// Define root url with /public.php/dav/files/TOKEN
/** @var string $baseuri defined in public.php */
preg_match('/(^files\/[a-z0-9-]+)/i', substr($requestUri, strlen($baseuri)), $match);
$baseuri = $baseuri . $match[0];
$server = $serverFactory->createServer($baseuri, $requestUri, $authPlugin, function (\Sabre\DAV\Server $server) use ($authBackend, $linkCheckPlugin, $filesDropPlugin) {
$server = $serverFactory->createServer(true, $baseuri, $requestUri, $authPlugin, function (\Sabre\DAV\Server $server) use ($authBackend, $linkCheckPlugin, $filesDropPlugin) {
// GET must be allowed for e.g. showing images and allowing Zip downloads
if ($server->httpRequest->getMethod() !== 'GET') {
// If this is *not* a GET request we only allow access to public DAV from AJAX or when Server2Server is allowed
@@ -142,6 +141,8 @@ $server = $serverFactory->createServer($baseuri, $requestUri, $authPlugin, funct
$server->addPlugin($linkCheckPlugin);
$server->addPlugin($filesDropPlugin);
$server->addPlugin(new ChunkingV2Plugin(Server::get(ICacheFactory::class)));
$server->addPlugin(new ChunkingPlugin());
// allow setup of additional plugins
$event = new BeforeSabrePubliclyLoadedEvent($server);
@@ -16,6 +16,7 @@ return array(
'OCA\\DAV\\BackgroundJob\\CalendarRetentionJob' => $baseDir . '/../lib/BackgroundJob/CalendarRetentionJob.php',
'OCA\\DAV\\BackgroundJob\\CleanupDirectLinksJob' => $baseDir . '/../lib/BackgroundJob/CleanupDirectLinksJob.php',
'OCA\\DAV\\BackgroundJob\\CleanupInvitationTokenJob' => $baseDir . '/../lib/BackgroundJob/CleanupInvitationTokenJob.php',
'OCA\\DAV\\BackgroundJob\\CleanupOrphanedChildrenJob' => $baseDir . '/../lib/BackgroundJob/CleanupOrphanedChildrenJob.php',
'OCA\\DAV\\BackgroundJob\\DeleteOutdatedSchedulingObjects' => $baseDir . '/../lib/BackgroundJob/DeleteOutdatedSchedulingObjects.php',
'OCA\\DAV\\BackgroundJob\\EventReminderJob' => $baseDir . '/../lib/BackgroundJob/EventReminderJob.php',
'OCA\\DAV\\BackgroundJob\\GenerateBirthdayCalendarBackgroundJob' => $baseDir . '/../lib/BackgroundJob/GenerateBirthdayCalendarBackgroundJob.php',
@@ -63,6 +64,7 @@ return array(
'OCA\\DAV\\CalDAV\\EventReader' => $baseDir . '/../lib/CalDAV/EventReader.php',
'OCA\\DAV\\CalDAV\\EventReaderRDate' => $baseDir . '/../lib/CalDAV/EventReaderRDate.php',
'OCA\\DAV\\CalDAV\\EventReaderRRule' => $baseDir . '/../lib/CalDAV/EventReaderRRule.php',
'OCA\\DAV\\CalDAV\\Export\\ExportService' => $baseDir . '/../lib/CalDAV/Export/ExportService.php',
'OCA\\DAV\\CalDAV\\FreeBusy\\FreeBusyGenerator' => $baseDir . '/../lib/CalDAV/FreeBusy/FreeBusyGenerator.php',
'OCA\\DAV\\CalDAV\\ICSExportPlugin\\ICSExportPlugin' => $baseDir . '/../lib/CalDAV/ICSExportPlugin/ICSExportPlugin.php',
'OCA\\DAV\\CalDAV\\IRestorable' => $baseDir . '/../lib/CalDAV/IRestorable.php',
@@ -153,13 +155,16 @@ return array(
'OCA\\DAV\\CardDAV\\UserAddressBooks' => $baseDir . '/../lib/CardDAV/UserAddressBooks.php',
'OCA\\DAV\\CardDAV\\Validation\\CardDavValidatePlugin' => $baseDir . '/../lib/CardDAV/Validation/CardDavValidatePlugin.php',
'OCA\\DAV\\CardDAV\\Xml\\Groups' => $baseDir . '/../lib/CardDAV/Xml/Groups.php',
'OCA\\DAV\\Command\\ClearCalendarUnshares' => $baseDir . '/../lib/Command/ClearCalendarUnshares.php',
'OCA\\DAV\\Command\\CreateAddressBook' => $baseDir . '/../lib/Command/CreateAddressBook.php',
'OCA\\DAV\\Command\\CreateCalendar' => $baseDir . '/../lib/Command/CreateCalendar.php',
'OCA\\DAV\\Command\\CreateSubscription' => $baseDir . '/../lib/Command/CreateSubscription.php',
'OCA\\DAV\\Command\\DeleteCalendar' => $baseDir . '/../lib/Command/DeleteCalendar.php',
'OCA\\DAV\\Command\\DeleteSubscription' => $baseDir . '/../lib/Command/DeleteSubscription.php',
'OCA\\DAV\\Command\\ExportCalendar' => $baseDir . '/../lib/Command/ExportCalendar.php',
'OCA\\DAV\\Command\\FixCalendarSyncCommand' => $baseDir . '/../lib/Command/FixCalendarSyncCommand.php',
'OCA\\DAV\\Command\\ListAddressbooks' => $baseDir . '/../lib/Command/ListAddressbooks.php',
'OCA\\DAV\\Command\\ListCalendarShares' => $baseDir . '/../lib/Command/ListCalendarShares.php',
'OCA\\DAV\\Command\\ListCalendars' => $baseDir . '/../lib/Command/ListCalendars.php',
'OCA\\DAV\\Command\\ListSubscriptions' => $baseDir . '/../lib/Command/ListSubscriptions.php',
'OCA\\DAV\\Command\\MoveCalendar' => $baseDir . '/../lib/Command/MoveCalendar.php',
@@ -281,6 +286,7 @@ return array(
'OCA\\DAV\\Files\\RootCollection' => $baseDir . '/../lib/Files/RootCollection.php',
'OCA\\DAV\\Files\\Sharing\\FilesDropPlugin' => $baseDir . '/../lib/Files/Sharing/FilesDropPlugin.php',
'OCA\\DAV\\Files\\Sharing\\PublicLinkCheckPlugin' => $baseDir . '/../lib/Files/Sharing/PublicLinkCheckPlugin.php',
'OCA\\DAV\\Files\\Sharing\\RootCollection' => $baseDir . '/../lib/Files/Sharing/RootCollection.php',
'OCA\\DAV\\Listener\\ActivityUpdaterListener' => $baseDir . '/../lib/Listener/ActivityUpdaterListener.php',
'OCA\\DAV\\Listener\\AddMissingIndicesListener' => $baseDir . '/../lib/Listener/AddMissingIndicesListener.php',
'OCA\\DAV\\Listener\\AddressbookListener' => $baseDir . '/../lib/Listener/AddressbookListener.php',
@@ -31,6 +31,7 @@ class ComposerStaticInitDAV
'OCA\\DAV\\BackgroundJob\\CalendarRetentionJob' => __DIR__ . '/..' . '/../lib/BackgroundJob/CalendarRetentionJob.php',
'OCA\\DAV\\BackgroundJob\\CleanupDirectLinksJob' => __DIR__ . '/..' . '/../lib/BackgroundJob/CleanupDirectLinksJob.php',
'OCA\\DAV\\BackgroundJob\\CleanupInvitationTokenJob' => __DIR__ . '/..' . '/../lib/BackgroundJob/CleanupInvitationTokenJob.php',
'OCA\\DAV\\BackgroundJob\\CleanupOrphanedChildrenJob' => __DIR__ . '/..' . '/../lib/BackgroundJob/CleanupOrphanedChildrenJob.php',
'OCA\\DAV\\BackgroundJob\\DeleteOutdatedSchedulingObjects' => __DIR__ . '/..' . '/../lib/BackgroundJob/DeleteOutdatedSchedulingObjects.php',
'OCA\\DAV\\BackgroundJob\\EventReminderJob' => __DIR__ . '/..' . '/../lib/BackgroundJob/EventReminderJob.php',
'OCA\\DAV\\BackgroundJob\\GenerateBirthdayCalendarBackgroundJob' => __DIR__ . '/..' . '/../lib/BackgroundJob/GenerateBirthdayCalendarBackgroundJob.php',
@@ -78,6 +79,7 @@ class ComposerStaticInitDAV
'OCA\\DAV\\CalDAV\\EventReader' => __DIR__ . '/..' . '/../lib/CalDAV/EventReader.php',
'OCA\\DAV\\CalDAV\\EventReaderRDate' => __DIR__ . '/..' . '/../lib/CalDAV/EventReaderRDate.php',
'OCA\\DAV\\CalDAV\\EventReaderRRule' => __DIR__ . '/..' . '/../lib/CalDAV/EventReaderRRule.php',
'OCA\\DAV\\CalDAV\\Export\\ExportService' => __DIR__ . '/..' . '/../lib/CalDAV/Export/ExportService.php',
'OCA\\DAV\\CalDAV\\FreeBusy\\FreeBusyGenerator' => __DIR__ . '/..' . '/../lib/CalDAV/FreeBusy/FreeBusyGenerator.php',
'OCA\\DAV\\CalDAV\\ICSExportPlugin\\ICSExportPlugin' => __DIR__ . '/..' . '/../lib/CalDAV/ICSExportPlugin/ICSExportPlugin.php',
'OCA\\DAV\\CalDAV\\IRestorable' => __DIR__ . '/..' . '/../lib/CalDAV/IRestorable.php',
@@ -168,13 +170,16 @@ class ComposerStaticInitDAV
'OCA\\DAV\\CardDAV\\UserAddressBooks' => __DIR__ . '/..' . '/../lib/CardDAV/UserAddressBooks.php',
'OCA\\DAV\\CardDAV\\Validation\\CardDavValidatePlugin' => __DIR__ . '/..' . '/../lib/CardDAV/Validation/CardDavValidatePlugin.php',
'OCA\\DAV\\CardDAV\\Xml\\Groups' => __DIR__ . '/..' . '/../lib/CardDAV/Xml/Groups.php',
'OCA\\DAV\\Command\\ClearCalendarUnshares' => __DIR__ . '/..' . '/../lib/Command/ClearCalendarUnshares.php',
'OCA\\DAV\\Command\\CreateAddressBook' => __DIR__ . '/..' . '/../lib/Command/CreateAddressBook.php',
'OCA\\DAV\\Command\\CreateCalendar' => __DIR__ . '/..' . '/../lib/Command/CreateCalendar.php',
'OCA\\DAV\\Command\\CreateSubscription' => __DIR__ . '/..' . '/../lib/Command/CreateSubscription.php',
'OCA\\DAV\\Command\\DeleteCalendar' => __DIR__ . '/..' . '/../lib/Command/DeleteCalendar.php',
'OCA\\DAV\\Command\\DeleteSubscription' => __DIR__ . '/..' . '/../lib/Command/DeleteSubscription.php',
'OCA\\DAV\\Command\\ExportCalendar' => __DIR__ . '/..' . '/../lib/Command/ExportCalendar.php',
'OCA\\DAV\\Command\\FixCalendarSyncCommand' => __DIR__ . '/..' . '/../lib/Command/FixCalendarSyncCommand.php',
'OCA\\DAV\\Command\\ListAddressbooks' => __DIR__ . '/..' . '/../lib/Command/ListAddressbooks.php',
'OCA\\DAV\\Command\\ListCalendarShares' => __DIR__ . '/..' . '/../lib/Command/ListCalendarShares.php',
'OCA\\DAV\\Command\\ListCalendars' => __DIR__ . '/..' . '/../lib/Command/ListCalendars.php',
'OCA\\DAV\\Command\\ListSubscriptions' => __DIR__ . '/..' . '/../lib/Command/ListSubscriptions.php',
'OCA\\DAV\\Command\\MoveCalendar' => __DIR__ . '/..' . '/../lib/Command/MoveCalendar.php',
@@ -296,6 +301,7 @@ class ComposerStaticInitDAV
'OCA\\DAV\\Files\\RootCollection' => __DIR__ . '/..' . '/../lib/Files/RootCollection.php',
'OCA\\DAV\\Files\\Sharing\\FilesDropPlugin' => __DIR__ . '/..' . '/../lib/Files/Sharing/FilesDropPlugin.php',
'OCA\\DAV\\Files\\Sharing\\PublicLinkCheckPlugin' => __DIR__ . '/..' . '/../lib/Files/Sharing/PublicLinkCheckPlugin.php',
'OCA\\DAV\\Files\\Sharing\\RootCollection' => __DIR__ . '/..' . '/../lib/Files/Sharing/RootCollection.php',
'OCA\\DAV\\Listener\\ActivityUpdaterListener' => __DIR__ . '/..' . '/../lib/Listener/ActivityUpdaterListener.php',
'OCA\\DAV\\Listener\\AddMissingIndicesListener' => __DIR__ . '/..' . '/../lib/Listener/AddMissingIndicesListener.php',
'OCA\\DAV\\Listener\\AddressbookListener' => __DIR__ . '/..' . '/../lib/Listener/AddressbookListener.php',
+13
View File
@@ -250,6 +250,9 @@ OC.L10N.register(
"Completed on %s" : "Fuldført den %s",
"Due on %s by %s" : "Forfalder på %s til %s",
"Due on %s" : "Forfalder på %s",
"System Address Book" : "System adressebog",
"The system address book contains contact information for all users in your instance." : "System adressebogen indeholder kontaktoplysninger for alle brugere i din instans.",
"Enable System Address Book" : "Aktivér System adressebog",
"DAV system address book" : "DAV system adressebog",
"No outstanding DAV system address book sync." : "Ingen udestående synkronisering af DAV-systemets adressebog.",
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "DAV-systemets adressebogssynkronisering er ikke kørt endnu, da din instans har mere end 1000 brugere, eller fordi der opstod en fejl. Kør det manuelt ved at kalde \"occ dav:sync-system-addressbook\".",
@@ -306,6 +309,16 @@ OC.L10N.register(
"Cancel" : "Annuller",
"Import" : "Importer",
"Error while saving settings" : "Der opstod en fejl under lagring af indstillinger",
"Contact reset successfully" : "Kontakten blev nulstillet",
"Error while resetting contact" : "Fejl under nulstilling af kontakt",
"Contact imported successfully" : "Kontakten blev importeret",
"Error while importing contact" : "Fejl under import af kontakt",
"Example Content" : "Eksempelindhold",
"Set example content to be created on new user first login." : "Indstil eksempel på indhold, der skal oprettes ved ny brugers første login.",
"Import contact" : "Importér kontakt",
"Reset to default contact" : "Nulstil til standardkontakt",
"Import contacts" : "Importér kontakter",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Import af en ny .vcf-fil vil slette den eksisterende standardkontakt og erstatte den med den nye. Vil du fortsætte?",
"There was an error updating your attendance status." : "Der opstod en fejl under opdatering af din fremmødestatus.",
"Please contact the organizer directly." : "Kontakt venligst arrangøren direkte.",
"Are you accepting the invitation?" : "Accepter du invitationen?",
+13
View File
@@ -248,6 +248,9 @@
"Completed on %s" : "Fuldført den %s",
"Due on %s by %s" : "Forfalder på %s til %s",
"Due on %s" : "Forfalder på %s",
"System Address Book" : "System adressebog",
"The system address book contains contact information for all users in your instance." : "System adressebogen indeholder kontaktoplysninger for alle brugere i din instans.",
"Enable System Address Book" : "Aktivér System adressebog",
"DAV system address book" : "DAV system adressebog",
"No outstanding DAV system address book sync." : "Ingen udestående synkronisering af DAV-systemets adressebog.",
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "DAV-systemets adressebogssynkronisering er ikke kørt endnu, da din instans har mere end 1000 brugere, eller fordi der opstod en fejl. Kør det manuelt ved at kalde \"occ dav:sync-system-addressbook\".",
@@ -304,6 +307,16 @@
"Cancel" : "Annuller",
"Import" : "Importer",
"Error while saving settings" : "Der opstod en fejl under lagring af indstillinger",
"Contact reset successfully" : "Kontakten blev nulstillet",
"Error while resetting contact" : "Fejl under nulstilling af kontakt",
"Contact imported successfully" : "Kontakten blev importeret",
"Error while importing contact" : "Fejl under import af kontakt",
"Example Content" : "Eksempelindhold",
"Set example content to be created on new user first login." : "Indstil eksempel på indhold, der skal oprettes ved ny brugers første login.",
"Import contact" : "Importér kontakt",
"Reset to default contact" : "Nulstil til standardkontakt",
"Import contacts" : "Importér kontakter",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Import af en ny .vcf-fil vil slette den eksisterende standardkontakt og erstatte den med den nye. Vil du fortsætte?",
"There was an error updating your attendance status." : "Der opstod en fejl under opdatering af din fremmødestatus.",
"Please contact the organizer directly." : "Kontakt venligst arrangøren direkte.",
"Are you accepting the invitation?" : "Accepter du invitationen?",
+16 -16
View File
@@ -186,9 +186,9 @@ OC.L10N.register(
"November" : "November",
"December" : "Dezember",
"First" : "Erste",
"Second" : "2.",
"Third" : "3.",
"Fourth" : "4.",
"Second" : "Zweite",
"Third" : "Dritte",
"Fourth" : "Vierte",
"Fifth" : "Fünften",
"Last" : "Letzte",
"Second Last" : "Vorletztes",
@@ -255,11 +255,11 @@ OC.L10N.register(
"Enable System Address Book" : "Systemadressbuch aktivieren",
"DAV system address book" : "DAV-Systemadressbuch",
"No outstanding DAV system address book sync." : "Keine ausstehende Synchronisierung des DAV-Systemadressbuchs",
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "Die Synchronisierung des DAV-Systemadressbuchs wurde noch nicht ausgeführt, da deine Instanz mehr als 1000 Benutzer hat oder weil ein Fehler aufgetreten ist. Bitte führe sie manuell aus, indem du \"occ dav:sync-system-addressbook\" ausführst.",
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "Die Synchronisierung des DAV-Systemadressbuchs wurde noch nicht ausgeführt, da diese Instanz mehr als 1000 Benutzer hat oder weil ein Fehler aufgetreten ist. Bitte manuell ausführen, mittels \"occ dav:sync-system-addressbook\".",
"WebDAV endpoint" : "WebDAV-Endpunkt",
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Es konnte nicht überprüft werden, ob dein Webserver ordnungsgemäß eingerichtet ist, um Dateisynchronisation über WebDAV zu ermöglichen. Bitte überprüfe dies manuell.",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Dein Webserver ist noch nicht hinreichend für Datei-Synchronisierung konfiguriert, da die WebDAV-Schnittstelle vermutlich nicht funktioniert.",
"Your web server is properly set up to allow file synchronization over WebDAV." : "Dein Webserver ist ordnungsgemäß eingerichtet um Dateisynchronisation über WebDAV zu ermöglichen.",
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Es konnte nicht überprüft werden, ob der Webserver ordnungsgemäß eingerichtet ist, um Dateisynchronisation über WebDAV zu ermöglichen. Bitte dies manuell überprüfen.",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Der Webserver ist noch nicht hinreichend für Datei-Synchronisierung konfiguriert, da die WebDAV-Schnittstelle vermutlich nicht funktioniert.",
"Your web server is properly set up to allow file synchronization over WebDAV." : "Der Webserver ist ordnungsgemäß eingerichtet um Dateisynchronisation über WebDAV zu ermöglichen.",
"Migrated calendar (%1$s)" : "Migrierter Kalender (%1$s)",
"Calendars including events, details and attendees" : "Kalender mit Terminen, Details und Teilnehmern",
"Contacts and groups" : "Kontakte und Gruppen",
@@ -273,14 +273,14 @@ OC.L10N.register(
"Out of office replacement (optional)" : "Abwesenheitsvertretung (optional)",
"Name of the replacement" : "Name der Vertretung",
"No results." : "Keine Ergebnisse",
"Start typing." : "Beginne mit Schreiben",
"Short absence status" : "Kurze Abwesenheits Meldung",
"Long absence Message" : "Lange Abwesenheits Meldung",
"Start typing." : "Mit dem Schreiben beginnen.",
"Short absence status" : "Kurzer Abwesenheitsstatus",
"Long absence Message" : "Lange Abwesenheitsnachricht",
"Save" : "Speichern",
"Disable absence" : "Abwesenheitmeldungen deaktivieren",
"Failed to load availability" : "Fehler beim Laden der Verfügbarkeit",
"Disable absence" : "Abwesenheit deaktivieren",
"Failed to load availability" : "Verfügbarkeit konnte nicht geladen werden",
"Saved availability" : "Verfügbarkeit gespeichert",
"Failed to save availability" : "Fehler beim Speichern der Verfügbarkeit",
"Failed to save availability" : "Verfügbarkeit konnte nicht gespeichert werden",
"Time zone:" : "Zeitzone:",
"to" : "an",
"Delete slot" : "Slot löschen",
@@ -291,7 +291,7 @@ OC.L10N.register(
"Pick a end time for {dayName}" : "Eine Endezeit für {dayName} wählen",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Setze den Benutzerstatus außerhalb deiner Verfügbarkeit automatisch auf \"Nicht stören\", um alle Benachrichtigungen stumm zu schalten.",
"Availability" : "Verfügbarkeit",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Wenn du deine Arbeitszeiten konfigurierst, können andere Benutzer sehen, wann du nicht im Büro bist, wenn sie eine Besprechung buchen.",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Wenn du deine Arbeitszeiten angibst, können andere beim Buchen einer Besprechung sehen, wann du nicht im Büro bist.",
"Absence" : "Abwesenheit",
"Configure your next absence period." : "Richte deinen nächsten Abwesenheitszeitraum ein.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installiere außerdem die {calendarappstoreopen}Kalender-App{linkclose} oder {calendardocopen}verbinde deinen Desktop & Mobilgerät zur Synchronisierung ↗{linkclose}.",
@@ -309,9 +309,9 @@ OC.L10N.register(
"Cancel" : "Abbrechen",
"Import" : "Importieren",
"Error while saving settings" : "Fehler beim Speichern der Einstellungen",
"Contact reset successfully" : "Kontakt erfolgreich zurückgesetzt",
"Contact reset successfully" : "Kontakt zurückgesetzt",
"Error while resetting contact" : "Fehler beim Zurücksetzen des Kontakts",
"Contact imported successfully" : "Kontakt erfolgreich importiert",
"Contact imported successfully" : "Kontakt importiert",
"Error while importing contact" : "Fehler beim Import des Kontakts",
"Example Content" : "Beispielinhalt",
"Set example content to be created on new user first login." : "Beispielinhalte festlegen, die bei der ersten Anmeldung eines neuen Benutzers erstellt werden sollen.",
+16 -16
View File
@@ -184,9 +184,9 @@
"November" : "November",
"December" : "Dezember",
"First" : "Erste",
"Second" : "2.",
"Third" : "3.",
"Fourth" : "4.",
"Second" : "Zweite",
"Third" : "Dritte",
"Fourth" : "Vierte",
"Fifth" : "Fünften",
"Last" : "Letzte",
"Second Last" : "Vorletztes",
@@ -253,11 +253,11 @@
"Enable System Address Book" : "Systemadressbuch aktivieren",
"DAV system address book" : "DAV-Systemadressbuch",
"No outstanding DAV system address book sync." : "Keine ausstehende Synchronisierung des DAV-Systemadressbuchs",
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "Die Synchronisierung des DAV-Systemadressbuchs wurde noch nicht ausgeführt, da deine Instanz mehr als 1000 Benutzer hat oder weil ein Fehler aufgetreten ist. Bitte führe sie manuell aus, indem du \"occ dav:sync-system-addressbook\" ausführst.",
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "Die Synchronisierung des DAV-Systemadressbuchs wurde noch nicht ausgeführt, da diese Instanz mehr als 1000 Benutzer hat oder weil ein Fehler aufgetreten ist. Bitte manuell ausführen, mittels \"occ dav:sync-system-addressbook\".",
"WebDAV endpoint" : "WebDAV-Endpunkt",
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Es konnte nicht überprüft werden, ob dein Webserver ordnungsgemäß eingerichtet ist, um Dateisynchronisation über WebDAV zu ermöglichen. Bitte überprüfe dies manuell.",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Dein Webserver ist noch nicht hinreichend für Datei-Synchronisierung konfiguriert, da die WebDAV-Schnittstelle vermutlich nicht funktioniert.",
"Your web server is properly set up to allow file synchronization over WebDAV." : "Dein Webserver ist ordnungsgemäß eingerichtet um Dateisynchronisation über WebDAV zu ermöglichen.",
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Es konnte nicht überprüft werden, ob der Webserver ordnungsgemäß eingerichtet ist, um Dateisynchronisation über WebDAV zu ermöglichen. Bitte dies manuell überprüfen.",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Der Webserver ist noch nicht hinreichend für Datei-Synchronisierung konfiguriert, da die WebDAV-Schnittstelle vermutlich nicht funktioniert.",
"Your web server is properly set up to allow file synchronization over WebDAV." : "Der Webserver ist ordnungsgemäß eingerichtet um Dateisynchronisation über WebDAV zu ermöglichen.",
"Migrated calendar (%1$s)" : "Migrierter Kalender (%1$s)",
"Calendars including events, details and attendees" : "Kalender mit Terminen, Details und Teilnehmern",
"Contacts and groups" : "Kontakte und Gruppen",
@@ -271,14 +271,14 @@
"Out of office replacement (optional)" : "Abwesenheitsvertretung (optional)",
"Name of the replacement" : "Name der Vertretung",
"No results." : "Keine Ergebnisse",
"Start typing." : "Beginne mit Schreiben",
"Short absence status" : "Kurze Abwesenheits Meldung",
"Long absence Message" : "Lange Abwesenheits Meldung",
"Start typing." : "Mit dem Schreiben beginnen.",
"Short absence status" : "Kurzer Abwesenheitsstatus",
"Long absence Message" : "Lange Abwesenheitsnachricht",
"Save" : "Speichern",
"Disable absence" : "Abwesenheitmeldungen deaktivieren",
"Failed to load availability" : "Fehler beim Laden der Verfügbarkeit",
"Disable absence" : "Abwesenheit deaktivieren",
"Failed to load availability" : "Verfügbarkeit konnte nicht geladen werden",
"Saved availability" : "Verfügbarkeit gespeichert",
"Failed to save availability" : "Fehler beim Speichern der Verfügbarkeit",
"Failed to save availability" : "Verfügbarkeit konnte nicht gespeichert werden",
"Time zone:" : "Zeitzone:",
"to" : "an",
"Delete slot" : "Slot löschen",
@@ -289,7 +289,7 @@
"Pick a end time for {dayName}" : "Eine Endezeit für {dayName} wählen",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Setze den Benutzerstatus außerhalb deiner Verfügbarkeit automatisch auf \"Nicht stören\", um alle Benachrichtigungen stumm zu schalten.",
"Availability" : "Verfügbarkeit",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Wenn du deine Arbeitszeiten konfigurierst, können andere Benutzer sehen, wann du nicht im Büro bist, wenn sie eine Besprechung buchen.",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Wenn du deine Arbeitszeiten angibst, können andere beim Buchen einer Besprechung sehen, wann du nicht im Büro bist.",
"Absence" : "Abwesenheit",
"Configure your next absence period." : "Richte deinen nächsten Abwesenheitszeitraum ein.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installiere außerdem die {calendarappstoreopen}Kalender-App{linkclose} oder {calendardocopen}verbinde deinen Desktop & Mobilgerät zur Synchronisierung ↗{linkclose}.",
@@ -307,9 +307,9 @@
"Cancel" : "Abbrechen",
"Import" : "Importieren",
"Error while saving settings" : "Fehler beim Speichern der Einstellungen",
"Contact reset successfully" : "Kontakt erfolgreich zurückgesetzt",
"Contact reset successfully" : "Kontakt zurückgesetzt",
"Error while resetting contact" : "Fehler beim Zurücksetzen des Kontakts",
"Contact imported successfully" : "Kontakt erfolgreich importiert",
"Contact imported successfully" : "Kontakt importiert",
"Error while importing contact" : "Fehler beim Import des Kontakts",
"Example Content" : "Beispielinhalt",
"Set example content to be created on new user first login." : "Beispielinhalte festlegen, die bei der ersten Anmeldung eines neuen Benutzers erstellt werden sollen.",
+6 -6
View File
@@ -274,26 +274,26 @@ OC.L10N.register(
"Name of the replacement" : "Name der Vertretung",
"No results." : "Keine Ergebnisse.",
"Start typing." : "Anfangen zu tippen.",
"Short absence status" : "Kurzer Abwesenheitsstaus",
"Short absence status" : "Kurzer Abwesenheitsstatus",
"Long absence Message" : "Lange Abwesenheitsnachricht",
"Save" : "Speichern",
"Disable absence" : "Abwesenheit deaktivieren",
"Failed to load availability" : "Laden der Verfügbarkeit fehlgeschlagen",
"Failed to load availability" : "Verfügbarkeit konnte nicht geladen werden",
"Saved availability" : "Verfügbarkeit gespeichert",
"Failed to save availability" : "Fehler beim Speichern der Verfügbarkeit",
"Failed to save availability" : "Verfügbarkeit konnte nicht gespeichert werden",
"Time zone:" : "Zeitzone:",
"to" : "an",
"Delete slot" : "Zeitfenster löschen",
"No working hours set" : "Arbeitsfreie Stunden gesetzt",
"No working hours set" : "Keine Arbeitszeiten konfiguriert",
"Add slot" : "Zeitfenster hinzufügen",
"Weekdays" : "Wochentage",
"Pick a start time for {dayName}" : "Eine Startzeit für {dayName} wählen",
"Pick a end time for {dayName}" : "Eine Endezeit für {dayName} wählen",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Setzen Sie den Benutzerstatus außerhalb Ihrer Verfügbarkeit automatisch auf \"Nicht stören\", um alle Benachrichtigungen stumm zu schalten.",
"Availability" : "Verfügbarkeit",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Wenn Sie Ihre Arbeitszeiten angeben, können Andere beim Buchen einer Besprechung sehen, wann Sie nicht im Büro sind.",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Wenn Sie Ihre Arbeitszeiten angeben, können andere beim Buchen einer Besprechung sehen, wann Sie nicht im Büro sind.",
"Absence" : "Abwesenheit",
"Configure your next absence period." : "Richten Sie ihren nächsten Abwesenheitszeitraum ein",
"Configure your next absence period." : "Richten Sie ihren nächsten Abwesenheitszeitraum ein.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installieren Sie außerdem die {calendarappstoreopen}Kalender-App{linkclose} oder {calendardocopen}verbinden Sie Ihren Desktop & Mobilgerät zur Synchronisierung ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Bitte stellen Sie sicher, dass Sie {emailopen}den E-Mail Server{linkclose} ordnungsgemäß eingerichtet haben.",
"Calendar server" : "Kalender-Server",
+6 -6
View File
@@ -272,26 +272,26 @@
"Name of the replacement" : "Name der Vertretung",
"No results." : "Keine Ergebnisse.",
"Start typing." : "Anfangen zu tippen.",
"Short absence status" : "Kurzer Abwesenheitsstaus",
"Short absence status" : "Kurzer Abwesenheitsstatus",
"Long absence Message" : "Lange Abwesenheitsnachricht",
"Save" : "Speichern",
"Disable absence" : "Abwesenheit deaktivieren",
"Failed to load availability" : "Laden der Verfügbarkeit fehlgeschlagen",
"Failed to load availability" : "Verfügbarkeit konnte nicht geladen werden",
"Saved availability" : "Verfügbarkeit gespeichert",
"Failed to save availability" : "Fehler beim Speichern der Verfügbarkeit",
"Failed to save availability" : "Verfügbarkeit konnte nicht gespeichert werden",
"Time zone:" : "Zeitzone:",
"to" : "an",
"Delete slot" : "Zeitfenster löschen",
"No working hours set" : "Arbeitsfreie Stunden gesetzt",
"No working hours set" : "Keine Arbeitszeiten konfiguriert",
"Add slot" : "Zeitfenster hinzufügen",
"Weekdays" : "Wochentage",
"Pick a start time for {dayName}" : "Eine Startzeit für {dayName} wählen",
"Pick a end time for {dayName}" : "Eine Endezeit für {dayName} wählen",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Setzen Sie den Benutzerstatus außerhalb Ihrer Verfügbarkeit automatisch auf \"Nicht stören\", um alle Benachrichtigungen stumm zu schalten.",
"Availability" : "Verfügbarkeit",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Wenn Sie Ihre Arbeitszeiten angeben, können Andere beim Buchen einer Besprechung sehen, wann Sie nicht im Büro sind.",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Wenn Sie Ihre Arbeitszeiten angeben, können andere beim Buchen einer Besprechung sehen, wann Sie nicht im Büro sind.",
"Absence" : "Abwesenheit",
"Configure your next absence period." : "Richten Sie ihren nächsten Abwesenheitszeitraum ein",
"Configure your next absence period." : "Richten Sie ihren nächsten Abwesenheitszeitraum ein.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installieren Sie außerdem die {calendarappstoreopen}Kalender-App{linkclose} oder {calendardocopen}verbinden Sie Ihren Desktop & Mobilgerät zur Synchronisierung ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Bitte stellen Sie sicher, dass Sie {emailopen}den E-Mail Server{linkclose} ordnungsgemäß eingerichtet haben.",
"Calendar server" : "Kalender-Server",
+171 -18
View File
@@ -2,7 +2,7 @@ OC.L10N.register(
"dav",
{
"Calendar" : "Kalender",
"Todos" : "Ülesanded",
"Tasks" : "Ülesanded",
"Personal" : "Isiklik",
"{actor} created calendar {calendar}" : "{actor} lõi kalendri {calendar}",
"You created calendar {calendar}" : "Sa lõid kalendri {calendar}",
@@ -10,6 +10,10 @@ OC.L10N.register(
"You deleted calendar {calendar}" : "Sa kustutasid kalendri {calendar}",
"{actor} updated calendar {calendar}" : "{actor} uuendas kalendrit {calendar}",
"You updated calendar {calendar}" : "Sa uuendasid kalendrit {calendar}",
"{actor} restored calendar {calendar}" : "{actor} taastas kalendri {calendar}",
"You restored calendar {calendar}" : "Sina taastasid kalendri {calendar}",
"You shared calendar {calendar} as public link" : "Sina jagasid „{calendar}“ kalendrit avaliku lingina",
"You removed public link for calendar {calendar}" : "Sa eemaldasid „{calendar}“ kalendri avaliku lingi",
"{actor} shared calendar {calendar} with you" : "{actor} jagas kalendrit {calendar} sinuga",
"You shared calendar {calendar} with {user}" : "Sa jagasid kalendrit {calendar} kasutajaga {user}",
"{actor} shared calendar {calendar} with {user}" : "{actor} jagas kalendrit {calendar} kasutajaga {user}",
@@ -21,41 +25,190 @@ OC.L10N.register(
"{actor} shared calendar {calendar} with group {group}" : "{actor} jagas kalendrit {calendar} grupiga {group}",
"You unshared calendar {calendar} from group {group}" : "Sa lõpetasid kalendri {calendar} jagamise grupiga {group}",
"{actor} unshared calendar {calendar} from group {group}" : "{actor} lõpetas kalendri {calendar} jagamise grupiga {group}",
"Untitled event" : "Ilma nimeta sündmus",
"{actor} created event {event} in calendar {calendar}" : "{actor} lõi sündmuse {event} kalendrisse {calendar}",
"You created event {event} in calendar {calendar}" : "Sa lõid sündmuse {event} kalendrisse {calendar}",
"{actor} deleted event {event} from calendar {calendar}" : "{actor} kustutas sündmuse {event} kalendrist {calendar}",
"You deleted event {event} from calendar {calendar}" : "Sa kustutasid sündmuse {event} kalendrist {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} uuendas sündmust {event} kalendris {calendar}",
"You updated event {event} in calendar {calendar}" : "Sa uuendasid sündmust {event} kalendris {calendar}",
"{actor} created todo {todo} in list {calendar}" : "{actor} lõi ülesande {todo} nimekirjas {calendar}",
"You created todo {todo} in list {calendar}" : "Sa lõid ülesande {todo} nimekirjas {calendar}",
"{actor} deleted todo {todo} from list {calendar}" : "{actor} kustutas ülesande {todo} nimekirjast {calendar}",
"You deleted todo {todo} from list {calendar}" : "Sa kustutasid ülesande {todo} nimekirjast {calendar}",
"{actor} updated todo {todo} in list {calendar}" : "{actor} uuendas ülesande {todo} nimekirjas {calendar}",
"You updated todo {todo} in list {calendar}" : "Sa uuendasid ülesande {todo} nimekirjas {calendar}",
"{actor} solved todo {todo} in list {calendar}" : "{actor} lõpetas ülesande {todo} nimekirjas {calendar}",
"You solved todo {todo} in list {calendar}" : "Sa lõpetasid ülesande {todo} nimekirjas {calendar}",
"{actor} reopened todo {todo} in list {calendar}" : "{actor} taasavas ülesande {todo} nimekirjas {calendar}",
"You reopened todo {todo} in list {calendar}" : "Sa taasavasid ülesande {todo} nimekirjas {calendar}",
"Busy" : "Hõivatud",
"{actor} created to-do {todo} in list {calendar}" : "{actor} lisas {todo} ülesande {calendar} loendissse",
"You created to-do {todo} in list {calendar}" : "Sina lisasid {todo} ülesande {calendar} loendisse",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} kustutas {todo} ülesande {calendar} loendist",
"You deleted to-do {todo} from list {calendar}" : "Sina kustutasid {todo} ülesande {calendar} loendist",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} uuendas {todo} ülesannnet {calendar} loendist",
"You updated to-do {todo} in list {calendar}" : "Sina uuendasid {todo} ülesannet {calendar} loendist",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} lahendas {todo} ülesande {calendar} loendist",
"You solved to-do {todo} in list {calendar}" : "Sina lahendasid {todo} ülesande {calendar} loendist",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} avas uuesti {todo} ülesande {calendar} loendist",
"You reopened to-do {todo} in list {calendar}" : "Sina avasid uuesti {todo} ülesande {calendar} loendist",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} teisaldas {todo} ülesande {sourceCalendar} loendist {targetCalendar} loendisse",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Sina teisaldasid {todo} ülesande {sourceCalendar} loendist {targetCalendar} loendisse",
"Calendar, contacts and tasks" : "Kalender, kontaktid ja ülesanded",
"A <strong>calendar</strong> was modified" : " <strong>Kalendrit</strong> muudeti",
"A calendar <strong>event</strong> was modified" : "Kalendri <strong>sündmust </strong> muudeti",
"A calendar <strong>todo</strong> was modified" : "Kalendri <strong>ülesannet</strong> muudeti",
"A calendar <strong>to-do</strong> was modified" : "Kalendri <strong>ülesannet</strong> muudeti",
"Contact birthdays" : "Kontaktide sünnipäevad",
"Death of %s" : "%s surm",
"Untitled calendar" : "Nimetu kalender",
"Calendar:" : "Kalender:",
"Date:" : "Kuupäev:",
"Where:" : "Kus:",
"Description:" : "Kirjeldus:",
"Invitation canceled" : "Kutse on tühistatud",
"Invitation updated" : "Kutse uuendatud",
"_%n year_::_%n years_" : ["%n aasta","%n aastat"],
"_%n month_::_%n months_" : ["%n kuu","%n kuud"],
"_%n day_::_%n days_" : ["%n päev","%n päeva"],
"_%n hour_::_%n hours_" : ["%n tund","%n tundi"],
"_%n minute_::_%n minutes_" : ["%n minut","%n minutit"],
"%s (in %s)" : "%s (%s pärast)",
"%s (%s ago)" : "%s (%s eest)",
"Calendar: %s" : "Kalender: %s",
"Date: %s" : "Kuupäev: %s",
"Description: %s" : "Kirjeldus: %s",
"Where: %s" : "Kus: %s",
"%1$s via %2$s" : "%1$s %2$s kaudu",
"Cancelled: %1$s" : "Tühistatud: %1$s",
"\"%1$s\" has been canceled" : "„%1$s“ on tühistatud",
"Re: %1$s" : "Re: %1$s",
"%1$s has accepted your invitation" : "„%1$s“ on nõustunud sinu kutsega",
"%1$s has tentatively accepted your invitation" : "„%1$s“ on esialgselt nõustunud sinu kutsega",
"%1$s has declined your invitation" : "„%1$s“ on sinu kutsest keeldunud",
"%1$s has responded to your invitation" : "„%1$s“ on vastanud sinu kutsele",
"Invitation updated: %1$s" : "Kutse on uuendatud: %1$s",
"%1$s updated the event \"%2$s\"" : "„%1$s“ uuendas sündmust „%2$s“",
"Invitation: %1$s" : "Kutse: %1$s",
"%1$s would like to invite you to \"%2$s\"" : "„%1$s“ soovib saata sulle „%2$s“ kutset",
"Organizer:" : "Korraldaja:",
"Attendees:" : "Osalejad:",
"Title:" : "Pealkiri:",
"When:" : "Millal:",
"Location:" : "Asukoht:",
"Link:" : "Link:",
"Accept" : "Nõustu",
"Decline" : "Keeldu",
"More options …" : "Täiendavad valikud…",
"More options at %s" : "Lisavalikud: %s",
"Monday" : "Esmaspäev",
"Tuesday" : "Teisipäev",
"Wednesday" : "Kolmapäev",
"Thursday" : "Neljapäev",
"Friday" : "Reede",
"Saturday" : "Laupäev",
"Sunday" : "Pühapäev",
"January" : "Jaanuar",
"February" : "Veebruar",
"March" : "Märts",
"April" : "Aprill",
"May" : "Mai",
"June" : "Juuni",
"July" : "Juuli",
"August" : "August",
"September" : "September",
"October" : "Oktoober",
"November" : "November",
"December" : "Detsember",
"First" : "Esimene",
"Second" : "Teine",
"Third" : "Kolmas",
"Fourth" : "Neljas",
"Fifth" : "Viies",
"Last" : "Viimane",
"Contacts" : "Kontaktid",
"Tasks" : "Ülesanded",
"You created address book {addressbook}" : "Sa lõid aadressiraamatu „{addressbook}“",
"{actor} deleted address book {addressbook}" : "„{actor}“ kustutas „{addressbook}“ aadressiraamatu",
"You deleted address book {addressbook}" : "Sa kustutasid aadressiraamatu „{addressbook}“",
"You shared address book {addressbook} with {user}" : "Sa jagasid „{addressbook}“ aadressiraamatut kasutajaga „{user}“",
"You deleted contact {card} from address book {addressbook}" : "Sa kustutasid „{card}“ kontakti „{addressbook}“ aadressiraamatus",
"You updated contact {card} in address book {addressbook}" : "Sa uuendasid „{card}“ kontakti „{addressbook}“ aadressiraamatus",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Kontakti</strong> või <strong>aadressiraamatut</strong> muudeti",
"Accounts" : "Kasutajakontod",
"System address book which holds all accounts" : "Süsteemne aadressiraamat, kus leiduvad kõik kasutajakontod",
"File is not updatable: %1$s" : "Fail pole uuendatav: %1$s",
"Failed to get storage for file" : "Failile ei õnnestunud eraldada andmeruumi",
"Could not write file contents" : "Ei õnnestunud kirjutada faili sisu",
"_%n byte_::_%n bytes_" : ["%n bait","%n baiti"],
"Failed to check file size: %1$s" : "Faili suuruse kontrollimine ei õnnestunud: %1$s",
"Could not open file: %1$s, file does seem to exist" : "„%1$s“ faili avamine ei õnnestunud - aga tundub, et ta on olemas",
"Could not open file: %1$s, file doesn't seem to exist" : "„%1$s“ faili avamine ei õnnestunud - tundub, et teda pole olemas",
"Encryption not ready: %1$s" : "Krüptimine pole veel kasutatav: %1$s",
"Failed to open file: %1$s" : "Faili avamine ei õnnestunud: %1$s",
"Failed to unlink: %1$s" : "Lingi eemaldamine ei õnnestunud: %1$s",
"Failed to write file contents: %1$s" : "Faili sisu salvestamine ei õnnestunud: %1$s",
"File not found: %1$s" : "Faili ei leidu: %1$s",
"Invalid target path" : "Vigane sihtasukoht",
"System is in maintenance mode." : "Server on hooldusrežiimis.",
"Upgrade needed" : "Uuendus on vajalik",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Selleks, et sinu %s toimiks iOS-is/macOS-is CalDAV-i ja CardDAV-iga peab https olema seadistatud.",
"Configures a CalDAV account" : "Seadistab CalDAV-i kasutajakonto",
"Configures a CardDAV account" : "Seadistab CardDAV-i kasutajakonto",
"Events" : "Sündmused",
"Untitled task" : "Ilma nimeta pealkiri",
"Completed on %s" : "Lõpetatud %s",
"Due on %s by %s" : "Tähtaeg: %s, täitjaks %s",
"Due on %s" : "Tähtaeg: %s",
"System Address Book" : "Süsteemne aadressiraamat",
"The system address book contains contact information for all users in your instance." : "Süsteemses aadressiraamatus leiduvad kõikde selle serveri kasutajate kontaktteave.",
"Enable System Address Book" : "Kasuta süsteemset aadressiraamatut",
"DAV system address book" : "DAV-i süsteemne aadressiraamat",
"WebDAV endpoint" : "WebDAV-i teenuse otspunkt",
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Ei õnnestunud kontrollida, kas sinu veebiserver on korrektselt seadistatud ja võimaldab kasutada failide sünkroniseerimist WebDAV-i vahendusel. Palun kontrolli seda käsitsi.",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Sinu veebiserver pole veel failide sünkroniseerimiseks vajalikult seadistatud, kuna WebDAV liides paistab olevat katki.",
"Your web server is properly set up to allow file synchronization over WebDAV." : "Sinu veebiserver on korrektselt seadistatud ja võimaldab kasutada failide sünkroniseerimist WebDAV-i vahendusel.",
"Calendars including events, details and attendees" : "Kalendrid, sealhulgas sündmused, üksikasjad ja osalejad",
"Contacts and groups" : "Kontaktid ja grupid",
"WebDAV" : "WebDAV",
"Tentative" : "Esialgne",
"Absence saved" : "Äraoleku teave on salvestatud",
"Failed to save your absence settings" : "Sinu äraoleku seadistuste salvestamine ei õnnestunud",
"Absence cleared" : "Äraolek on eemaldatud",
"Failed to clear your absence settings" : "Sinu äraoleku seadistuste eemaldamine ei õnnestunud",
"First day" : "Esimene päev",
"Last day (inclusive)" : "Viimane päev (kaasaarvatud)",
"Out of office replacement (optional)" : "Asendaja äraoleku ajaks (valikuline)",
"Name of the replacement" : "Asendaja nimi",
"No results." : "Vasteid ei leitud.",
"Start typing." : "Alusta kirjutamist.",
"Short absence status" : "Äraoleku lühinimi",
"Long absence Message" : "Äraoleku pikk sõnum",
"Save" : "Salvesta",
"Disable absence" : "Lülita äraolek välja",
"Failed to load availability" : "Saadavuse laadimine ei õnnestunud",
"Saved availability" : "Saadavus on salvestatud",
"Failed to save availability" : "Saadavuse salvestamine ei õnnestunud",
"Time zone:" : "Ajavöönd:",
"to" : "saaja",
"Delete slot" : "Kustuta ajavahemik",
"No working hours set" : "Tööajad on sisestamata",
"Add slot" : "Lisa ajavahemik",
"Weekdays" : "Nädalapäevad",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Kõikide teavituste summutamiseks määra automaatselt kasutajale olek „Ära sega“ nendele aegadele, kus ta vaba ei ole.",
"Availability" : "Saadavus",
"Absence" : "Äraolek",
"Configure your next absence period." : "Seadista järgmise äraoleku ajavahemik.",
"Calendar server" : "Kalendriserver",
"Send invitations to attendees" : "Saada osalejatele kutsed",
"Hello %s," : "Tere %s,",
"When:" : "Millal:"
"Automatically generate a birthday calendar" : "Koosta sünnipäevade kalender automaatselt",
"Send notifications for events" : "Saada sündmuste teavitusi",
"Enable notifications for events via push" : "Võta kasutusele tõuketeenustepõhised teavitused",
"Cancel" : "Tühista",
"Import" : "Impordi",
"Error while saving settings" : "Viga seadistuste salvestamisel",
"Contact reset successfully" : "Kontakti lähtestamine õnnestus",
"Error while resetting contact" : "Viga kontakti lähtestamisel",
"Contact imported successfully" : "Kontakti importimine õnnestus",
"Error while importing contact" : "Viga kontakti importimisel",
"Example Content" : "Sisunäidis",
"Set example content to be created on new user first login." : "Kirjelda näidissisu, mis uue kasutaja esimesel sisselogimisel luuakse.",
"Import contact" : "Impordi kontakt",
"Reset to default contact" : "Lähtesta vaikimisi kontakstiks",
"Import contacts" : "Impordi kontaktid",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Uue .vcf faili importimisel olemasolev vaikimisi kontakt kustutatakse ja asendatakse uuega. Kas sa soovid jätkata?",
"There was an error updating your attendance status." : "Sinu osalemise oleku muutmisel tekkis viga.",
"Please contact the organizer directly." : "Palun võta ühendust korraldajaga otse.",
"Are you accepting the invitation?" : "Kas sa nõustud kutsega?",
"Tentative" : "Esialgne",
"Your attendance was updated successfully." : "Sinu osalemise oleku muutmine õnnestus.",
"Time:" : "Aeg:",
"Could not open file" : "Ei õnnestunud avada faili"
},
"nplurals=2; plural=(n != 1);");
+171 -18
View File
@@ -1,6 +1,6 @@
{ "translations": {
"Calendar" : "Kalender",
"Todos" : "Ülesanded",
"Tasks" : "Ülesanded",
"Personal" : "Isiklik",
"{actor} created calendar {calendar}" : "{actor} lõi kalendri {calendar}",
"You created calendar {calendar}" : "Sa lõid kalendri {calendar}",
@@ -8,6 +8,10 @@
"You deleted calendar {calendar}" : "Sa kustutasid kalendri {calendar}",
"{actor} updated calendar {calendar}" : "{actor} uuendas kalendrit {calendar}",
"You updated calendar {calendar}" : "Sa uuendasid kalendrit {calendar}",
"{actor} restored calendar {calendar}" : "{actor} taastas kalendri {calendar}",
"You restored calendar {calendar}" : "Sina taastasid kalendri {calendar}",
"You shared calendar {calendar} as public link" : "Sina jagasid „{calendar}“ kalendrit avaliku lingina",
"You removed public link for calendar {calendar}" : "Sa eemaldasid „{calendar}“ kalendri avaliku lingi",
"{actor} shared calendar {calendar} with you" : "{actor} jagas kalendrit {calendar} sinuga",
"You shared calendar {calendar} with {user}" : "Sa jagasid kalendrit {calendar} kasutajaga {user}",
"{actor} shared calendar {calendar} with {user}" : "{actor} jagas kalendrit {calendar} kasutajaga {user}",
@@ -19,41 +23,190 @@
"{actor} shared calendar {calendar} with group {group}" : "{actor} jagas kalendrit {calendar} grupiga {group}",
"You unshared calendar {calendar} from group {group}" : "Sa lõpetasid kalendri {calendar} jagamise grupiga {group}",
"{actor} unshared calendar {calendar} from group {group}" : "{actor} lõpetas kalendri {calendar} jagamise grupiga {group}",
"Untitled event" : "Ilma nimeta sündmus",
"{actor} created event {event} in calendar {calendar}" : "{actor} lõi sündmuse {event} kalendrisse {calendar}",
"You created event {event} in calendar {calendar}" : "Sa lõid sündmuse {event} kalendrisse {calendar}",
"{actor} deleted event {event} from calendar {calendar}" : "{actor} kustutas sündmuse {event} kalendrist {calendar}",
"You deleted event {event} from calendar {calendar}" : "Sa kustutasid sündmuse {event} kalendrist {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} uuendas sündmust {event} kalendris {calendar}",
"You updated event {event} in calendar {calendar}" : "Sa uuendasid sündmust {event} kalendris {calendar}",
"{actor} created todo {todo} in list {calendar}" : "{actor} lõi ülesande {todo} nimekirjas {calendar}",
"You created todo {todo} in list {calendar}" : "Sa lõid ülesande {todo} nimekirjas {calendar}",
"{actor} deleted todo {todo} from list {calendar}" : "{actor} kustutas ülesande {todo} nimekirjast {calendar}",
"You deleted todo {todo} from list {calendar}" : "Sa kustutasid ülesande {todo} nimekirjast {calendar}",
"{actor} updated todo {todo} in list {calendar}" : "{actor} uuendas ülesande {todo} nimekirjas {calendar}",
"You updated todo {todo} in list {calendar}" : "Sa uuendasid ülesande {todo} nimekirjas {calendar}",
"{actor} solved todo {todo} in list {calendar}" : "{actor} lõpetas ülesande {todo} nimekirjas {calendar}",
"You solved todo {todo} in list {calendar}" : "Sa lõpetasid ülesande {todo} nimekirjas {calendar}",
"{actor} reopened todo {todo} in list {calendar}" : "{actor} taasavas ülesande {todo} nimekirjas {calendar}",
"You reopened todo {todo} in list {calendar}" : "Sa taasavasid ülesande {todo} nimekirjas {calendar}",
"Busy" : "Hõivatud",
"{actor} created to-do {todo} in list {calendar}" : "{actor} lisas {todo} ülesande {calendar} loendissse",
"You created to-do {todo} in list {calendar}" : "Sina lisasid {todo} ülesande {calendar} loendisse",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} kustutas {todo} ülesande {calendar} loendist",
"You deleted to-do {todo} from list {calendar}" : "Sina kustutasid {todo} ülesande {calendar} loendist",
"{actor} updated to-do {todo} in list {calendar}" : "{actor} uuendas {todo} ülesannnet {calendar} loendist",
"You updated to-do {todo} in list {calendar}" : "Sina uuendasid {todo} ülesannet {calendar} loendist",
"{actor} solved to-do {todo} in list {calendar}" : "{actor} lahendas {todo} ülesande {calendar} loendist",
"You solved to-do {todo} in list {calendar}" : "Sina lahendasid {todo} ülesande {calendar} loendist",
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} avas uuesti {todo} ülesande {calendar} loendist",
"You reopened to-do {todo} in list {calendar}" : "Sina avasid uuesti {todo} ülesande {calendar} loendist",
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} teisaldas {todo} ülesande {sourceCalendar} loendist {targetCalendar} loendisse",
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Sina teisaldasid {todo} ülesande {sourceCalendar} loendist {targetCalendar} loendisse",
"Calendar, contacts and tasks" : "Kalender, kontaktid ja ülesanded",
"A <strong>calendar</strong> was modified" : " <strong>Kalendrit</strong> muudeti",
"A calendar <strong>event</strong> was modified" : "Kalendri <strong>sündmust </strong> muudeti",
"A calendar <strong>todo</strong> was modified" : "Kalendri <strong>ülesannet</strong> muudeti",
"A calendar <strong>to-do</strong> was modified" : "Kalendri <strong>ülesannet</strong> muudeti",
"Contact birthdays" : "Kontaktide sünnipäevad",
"Death of %s" : "%s surm",
"Untitled calendar" : "Nimetu kalender",
"Calendar:" : "Kalender:",
"Date:" : "Kuupäev:",
"Where:" : "Kus:",
"Description:" : "Kirjeldus:",
"Invitation canceled" : "Kutse on tühistatud",
"Invitation updated" : "Kutse uuendatud",
"_%n year_::_%n years_" : ["%n aasta","%n aastat"],
"_%n month_::_%n months_" : ["%n kuu","%n kuud"],
"_%n day_::_%n days_" : ["%n päev","%n päeva"],
"_%n hour_::_%n hours_" : ["%n tund","%n tundi"],
"_%n minute_::_%n minutes_" : ["%n minut","%n minutit"],
"%s (in %s)" : "%s (%s pärast)",
"%s (%s ago)" : "%s (%s eest)",
"Calendar: %s" : "Kalender: %s",
"Date: %s" : "Kuupäev: %s",
"Description: %s" : "Kirjeldus: %s",
"Where: %s" : "Kus: %s",
"%1$s via %2$s" : "%1$s %2$s kaudu",
"Cancelled: %1$s" : "Tühistatud: %1$s",
"\"%1$s\" has been canceled" : "„%1$s“ on tühistatud",
"Re: %1$s" : "Re: %1$s",
"%1$s has accepted your invitation" : "„%1$s“ on nõustunud sinu kutsega",
"%1$s has tentatively accepted your invitation" : "„%1$s“ on esialgselt nõustunud sinu kutsega",
"%1$s has declined your invitation" : "„%1$s“ on sinu kutsest keeldunud",
"%1$s has responded to your invitation" : "„%1$s“ on vastanud sinu kutsele",
"Invitation updated: %1$s" : "Kutse on uuendatud: %1$s",
"%1$s updated the event \"%2$s\"" : "„%1$s“ uuendas sündmust „%2$s“",
"Invitation: %1$s" : "Kutse: %1$s",
"%1$s would like to invite you to \"%2$s\"" : "„%1$s“ soovib saata sulle „%2$s“ kutset",
"Organizer:" : "Korraldaja:",
"Attendees:" : "Osalejad:",
"Title:" : "Pealkiri:",
"When:" : "Millal:",
"Location:" : "Asukoht:",
"Link:" : "Link:",
"Accept" : "Nõustu",
"Decline" : "Keeldu",
"More options …" : "Täiendavad valikud…",
"More options at %s" : "Lisavalikud: %s",
"Monday" : "Esmaspäev",
"Tuesday" : "Teisipäev",
"Wednesday" : "Kolmapäev",
"Thursday" : "Neljapäev",
"Friday" : "Reede",
"Saturday" : "Laupäev",
"Sunday" : "Pühapäev",
"January" : "Jaanuar",
"February" : "Veebruar",
"March" : "Märts",
"April" : "Aprill",
"May" : "Mai",
"June" : "Juuni",
"July" : "Juuli",
"August" : "August",
"September" : "September",
"October" : "Oktoober",
"November" : "November",
"December" : "Detsember",
"First" : "Esimene",
"Second" : "Teine",
"Third" : "Kolmas",
"Fourth" : "Neljas",
"Fifth" : "Viies",
"Last" : "Viimane",
"Contacts" : "Kontaktid",
"Tasks" : "Ülesanded",
"You created address book {addressbook}" : "Sa lõid aadressiraamatu „{addressbook}“",
"{actor} deleted address book {addressbook}" : "„{actor}“ kustutas „{addressbook}“ aadressiraamatu",
"You deleted address book {addressbook}" : "Sa kustutasid aadressiraamatu „{addressbook}“",
"You shared address book {addressbook} with {user}" : "Sa jagasid „{addressbook}“ aadressiraamatut kasutajaga „{user}“",
"You deleted contact {card} from address book {addressbook}" : "Sa kustutasid „{card}“ kontakti „{addressbook}“ aadressiraamatus",
"You updated contact {card} in address book {addressbook}" : "Sa uuendasid „{card}“ kontakti „{addressbook}“ aadressiraamatus",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "<strong>Kontakti</strong> või <strong>aadressiraamatut</strong> muudeti",
"Accounts" : "Kasutajakontod",
"System address book which holds all accounts" : "Süsteemne aadressiraamat, kus leiduvad kõik kasutajakontod",
"File is not updatable: %1$s" : "Fail pole uuendatav: %1$s",
"Failed to get storage for file" : "Failile ei õnnestunud eraldada andmeruumi",
"Could not write file contents" : "Ei õnnestunud kirjutada faili sisu",
"_%n byte_::_%n bytes_" : ["%n bait","%n baiti"],
"Failed to check file size: %1$s" : "Faili suuruse kontrollimine ei õnnestunud: %1$s",
"Could not open file: %1$s, file does seem to exist" : "„%1$s“ faili avamine ei õnnestunud - aga tundub, et ta on olemas",
"Could not open file: %1$s, file doesn't seem to exist" : "„%1$s“ faili avamine ei õnnestunud - tundub, et teda pole olemas",
"Encryption not ready: %1$s" : "Krüptimine pole veel kasutatav: %1$s",
"Failed to open file: %1$s" : "Faili avamine ei õnnestunud: %1$s",
"Failed to unlink: %1$s" : "Lingi eemaldamine ei õnnestunud: %1$s",
"Failed to write file contents: %1$s" : "Faili sisu salvestamine ei õnnestunud: %1$s",
"File not found: %1$s" : "Faili ei leidu: %1$s",
"Invalid target path" : "Vigane sihtasukoht",
"System is in maintenance mode." : "Server on hooldusrežiimis.",
"Upgrade needed" : "Uuendus on vajalik",
"Your %s needs to be configured to use HTTPS in order to use CalDAV and CardDAV with iOS/macOS." : "Selleks, et sinu %s toimiks iOS-is/macOS-is CalDAV-i ja CardDAV-iga peab https olema seadistatud.",
"Configures a CalDAV account" : "Seadistab CalDAV-i kasutajakonto",
"Configures a CardDAV account" : "Seadistab CardDAV-i kasutajakonto",
"Events" : "Sündmused",
"Untitled task" : "Ilma nimeta pealkiri",
"Completed on %s" : "Lõpetatud %s",
"Due on %s by %s" : "Tähtaeg: %s, täitjaks %s",
"Due on %s" : "Tähtaeg: %s",
"System Address Book" : "Süsteemne aadressiraamat",
"The system address book contains contact information for all users in your instance." : "Süsteemses aadressiraamatus leiduvad kõikde selle serveri kasutajate kontaktteave.",
"Enable System Address Book" : "Kasuta süsteemset aadressiraamatut",
"DAV system address book" : "DAV-i süsteemne aadressiraamat",
"WebDAV endpoint" : "WebDAV-i teenuse otspunkt",
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Ei õnnestunud kontrollida, kas sinu veebiserver on korrektselt seadistatud ja võimaldab kasutada failide sünkroniseerimist WebDAV-i vahendusel. Palun kontrolli seda käsitsi.",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Sinu veebiserver pole veel failide sünkroniseerimiseks vajalikult seadistatud, kuna WebDAV liides paistab olevat katki.",
"Your web server is properly set up to allow file synchronization over WebDAV." : "Sinu veebiserver on korrektselt seadistatud ja võimaldab kasutada failide sünkroniseerimist WebDAV-i vahendusel.",
"Calendars including events, details and attendees" : "Kalendrid, sealhulgas sündmused, üksikasjad ja osalejad",
"Contacts and groups" : "Kontaktid ja grupid",
"WebDAV" : "WebDAV",
"Tentative" : "Esialgne",
"Absence saved" : "Äraoleku teave on salvestatud",
"Failed to save your absence settings" : "Sinu äraoleku seadistuste salvestamine ei õnnestunud",
"Absence cleared" : "Äraolek on eemaldatud",
"Failed to clear your absence settings" : "Sinu äraoleku seadistuste eemaldamine ei õnnestunud",
"First day" : "Esimene päev",
"Last day (inclusive)" : "Viimane päev (kaasaarvatud)",
"Out of office replacement (optional)" : "Asendaja äraoleku ajaks (valikuline)",
"Name of the replacement" : "Asendaja nimi",
"No results." : "Vasteid ei leitud.",
"Start typing." : "Alusta kirjutamist.",
"Short absence status" : "Äraoleku lühinimi",
"Long absence Message" : "Äraoleku pikk sõnum",
"Save" : "Salvesta",
"Disable absence" : "Lülita äraolek välja",
"Failed to load availability" : "Saadavuse laadimine ei õnnestunud",
"Saved availability" : "Saadavus on salvestatud",
"Failed to save availability" : "Saadavuse salvestamine ei õnnestunud",
"Time zone:" : "Ajavöönd:",
"to" : "saaja",
"Delete slot" : "Kustuta ajavahemik",
"No working hours set" : "Tööajad on sisestamata",
"Add slot" : "Lisa ajavahemik",
"Weekdays" : "Nädalapäevad",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Kõikide teavituste summutamiseks määra automaatselt kasutajale olek „Ära sega“ nendele aegadele, kus ta vaba ei ole.",
"Availability" : "Saadavus",
"Absence" : "Äraolek",
"Configure your next absence period." : "Seadista järgmise äraoleku ajavahemik.",
"Calendar server" : "Kalendriserver",
"Send invitations to attendees" : "Saada osalejatele kutsed",
"Hello %s," : "Tere %s,",
"When:" : "Millal:"
"Automatically generate a birthday calendar" : "Koosta sünnipäevade kalender automaatselt",
"Send notifications for events" : "Saada sündmuste teavitusi",
"Enable notifications for events via push" : "Võta kasutusele tõuketeenustepõhised teavitused",
"Cancel" : "Tühista",
"Import" : "Impordi",
"Error while saving settings" : "Viga seadistuste salvestamisel",
"Contact reset successfully" : "Kontakti lähtestamine õnnestus",
"Error while resetting contact" : "Viga kontakti lähtestamisel",
"Contact imported successfully" : "Kontakti importimine õnnestus",
"Error while importing contact" : "Viga kontakti importimisel",
"Example Content" : "Sisunäidis",
"Set example content to be created on new user first login." : "Kirjelda näidissisu, mis uue kasutaja esimesel sisselogimisel luuakse.",
"Import contact" : "Impordi kontakt",
"Reset to default contact" : "Lähtesta vaikimisi kontakstiks",
"Import contacts" : "Impordi kontaktid",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Uue .vcf faili importimisel olemasolev vaikimisi kontakt kustutatakse ja asendatakse uuega. Kas sa soovid jätkata?",
"There was an error updating your attendance status." : "Sinu osalemise oleku muutmisel tekkis viga.",
"Please contact the organizer directly." : "Palun võta ühendust korraldajaga otse.",
"Are you accepting the invitation?" : "Kas sa nõustud kutsega?",
"Tentative" : "Esialgne",
"Your attendance was updated successfully." : "Sinu osalemise oleku muutmine õnnestus.",
"Time:" : "Aeg:",
"Could not open file" : "Ei õnnestunud avada faili"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+7
View File
@@ -275,6 +275,13 @@ OC.L10N.register(
"Cancel" : "Annuler",
"Import" : "Importation",
"Error while saving settings" : "Erreur lors de l'enregistrement des paramètres",
"Contact reset successfully" : "Contact réinitialisé avec succès",
"Error while resetting contact" : "Erreur lors de la remise à zéro du contact",
"Contact imported successfully" : "Contact importé avec succès",
"Error while importing contact" : "Erreur lors de l'importation du contact",
"Import contact" : "Importer un contact",
"Import contacts" : "Importer des contacts",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Importer un nouveau fichier .vcf supprimera le contact par défaut existant et le remplacera. Voulez-vous continuer ?",
"There was an error updating your attendance status." : "Une erreur s'est produite lors de la mise à jour de votre statut de présence.",
"Please contact the organizer directly." : "Merci de contacter l'organisateur directement.",
"Are you accepting the invitation?" : "Acceptez-vous l'invitation ?",
+7
View File
@@ -273,6 +273,13 @@
"Cancel" : "Annuler",
"Import" : "Importation",
"Error while saving settings" : "Erreur lors de l'enregistrement des paramètres",
"Contact reset successfully" : "Contact réinitialisé avec succès",
"Error while resetting contact" : "Erreur lors de la remise à zéro du contact",
"Contact imported successfully" : "Contact importé avec succès",
"Error while importing contact" : "Erreur lors de l'importation du contact",
"Import contact" : "Importer un contact",
"Import contacts" : "Importer des contacts",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Importer un nouveau fichier .vcf supprimera le contact par défaut existant et le remplacera. Voulez-vous continuer ?",
"There was an error updating your attendance status." : "Une erreur s'est produite lors de la mise à jour de votre statut de présence.",
"Please contact the organizer directly." : "Merci de contacter l'organisateur directement.",
"Are you accepting the invitation?" : "Acceptez-vous l'invitation ?",
+10
View File
@@ -309,6 +309,16 @@ OC.L10N.register(
"Cancel" : "キャンセル",
"Import" : "インポート",
"Error while saving settings" : "設定の保存中にエラーが発生",
"Contact reset successfully" : "連絡先のリセットが正常に完了しました",
"Error while resetting contact" : "連絡先のリセット中にエラーが発生しました",
"Contact imported successfully" : "連絡先のインポートが正常に完了しました",
"Error while importing contact" : "連絡先のインポート中にエラーが発生しました",
"Example Content" : "サンプルコンテンツ",
"Set example content to be created on new user first login." : "新規ユーザの初回ログイン時に作成されるサンプルコンテンツを設定します。",
"Import contact" : "連絡先のインポート",
"Reset to default contact" : "デフォルトの連絡先にリセットする",
"Import contacts" : "連絡先のインポート",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "新しい .vcf ファイルをインポートすると、既存のデフォルト連絡先が削除され、新しいものに置き換えられます。続行しますか?",
"There was an error updating your attendance status." : "出席状況の更新中にエラーが発生しました。",
"Please contact the organizer directly." : "主催者に直接お問い合わせください。",
"Are you accepting the invitation?" : "招待を受け入れていますか?",
+10
View File
@@ -307,6 +307,16 @@
"Cancel" : "キャンセル",
"Import" : "インポート",
"Error while saving settings" : "設定の保存中にエラーが発生",
"Contact reset successfully" : "連絡先のリセットが正常に完了しました",
"Error while resetting contact" : "連絡先のリセット中にエラーが発生しました",
"Contact imported successfully" : "連絡先のインポートが正常に完了しました",
"Error while importing contact" : "連絡先のインポート中にエラーが発生しました",
"Example Content" : "サンプルコンテンツ",
"Set example content to be created on new user first login." : "新規ユーザの初回ログイン時に作成されるサンプルコンテンツを設定します。",
"Import contact" : "連絡先のインポート",
"Reset to default contact" : "デフォルトの連絡先にリセットする",
"Import contacts" : "連絡先のインポート",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "新しい .vcf ファイルをインポートすると、既存のデフォルト連絡先が削除され、新しいものに置き換えられます。続行しますか?",
"There was an error updating your attendance status." : "出席状況の更新中にエラーが発生しました。",
"Please contact the organizer directly." : "主催者に直接お問い合わせください。",
"Are you accepting the invitation?" : "招待を受け入れていますか?",
+113 -113
View File
@@ -32,12 +32,12 @@ OC.L10N.register(
"You deleted event {event} from calendar {calendar}" : "Você excluiu o evento {event} do calendário {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} atualizou o evento {event} no calendário {calendar}",
"You updated event {event} in calendar {calendar}" : "Você atualizou o evento {event} no calendário {calendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} moveu o evento {event} do calendario {sourceCalendar} para o calendario {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Você moveu o evento {event} do calendario {sourceCalendar} para o calendario {targetCalendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} moveu o evento {event} do calendário {sourceCalendar} para o calendário {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Você moveu o evento {event} do calendário {sourceCalendar} para o calendário {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} restaurou o evento {event} do calendário {calendar}",
"You restored event {event} of calendar {calendar}" : "Você restaurou o evento {event} do calendário {calendar}",
"Busy" : "Ocupado",
"{actor} created to-do {todo} in list {calendar}" : "{actor} criou tarefa {todo} na lista {calendar}",
"{actor} created to-do {todo} in list {calendar}" : "{actor} criou a tarefa {todo} na lista {calendar}",
"You created to-do {todo} in list {calendar}" : "Você criou a tarefa {todo} na lista {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} excluiu a tarefa {todo} da lista {calendar}",
"You deleted to-do {todo} from list {calendar}" : "Você excluiu a tarefa {todo} da lista {calendar}",
@@ -51,8 +51,8 @@ OC.L10N.register(
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Você moveu a tarefa {todo} da lista {sourceCalendar} para a lista {targetCalendar}",
"Calendar, contacts and tasks" : "Calendário, contatos e tarefas",
"A <strong>calendar</strong> was modified" : "Um <strong>calendário</strong> foi modificado",
"A calendar <strong>event</strong> was modified" : "Um <strong>evento</strong> do calendário foi modificado",
"A calendar <strong>to-do</strong> was modified" : "Um calendário <strong>tarefa</strong> foi modificado",
"A calendar <strong>event</strong> was modified" : "Um <strong>evento</strong> de calendário foi modificado",
"A calendar <strong>to-do</strong> was modified" : "Uma <strong>tarefa</strong> de calendário foi modificada",
"Contact birthdays" : "Aniversário dos contatos",
"Death of %s" : "Morte de %s",
"Untitled calendar" : "Calendário sem título",
@@ -74,7 +74,7 @@ OC.L10N.register(
"%1$s via %2$s" : "%1$s via %2$s",
"In the past on %1$s for the entire day" : "No passado em %1$s para o dia inteiro",
"_In a minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["Em um minuto em %1$s para o dia inteiro","Em %n minutos em %1$s para o dia inteiro","Em %n minutos em %1$s para o dia inteiro"],
"_In a hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["Em uma hora em %1$s para o dia inteiro","Em %n horas em %1$s para o dia inteiro","Em %n horas em %1$s para o dia inteiro"],
"_In a hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["Em uma hora em %1$s para o dia inteiro","Em %n horas em %1$s para o dia inteiro","Em %n horas em %1$s para o dia inteiro"],
"_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["Em um dias em %1$s para o dia inteiro","Em %n dias em %1$s para o dia inteiro","Em %n dias em %1$s para o dia inteiro"],
"_In a week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["Em uma semana em %1$s para o dia inteiro","Em %n semanas em %1$s para o dia inteiro","Em %n semanas em %1$s para o dia inteiro"],
"_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["Em um mês em %1$s para o dia inteiro","Em %n meses em %1$s para o dia inteiro","Em %n meses em %1$s para o dia inteiro"],
@@ -86,42 +86,42 @@ OC.L10N.register(
"_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["Em uma semana em %1$s entre %2$s - %3$s","Em %n semanas em %1$s entre %2$s - %3$s","Em %n semanas em %1$s entre %2$s - %3$s"],
"_In a month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["Em um mês em %1$s entre %2$s - %3$s","Em %n meses em %1$s entre %2$s - %3$s","Em %n meses em %1$s entre %2$s - %3$s"],
"_In a year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["Em um ano em %1$s entre %2$s - %3$s","Em %n anos em %1$s entre %2$s - %3$s","Em %n anos em %1$s entre %2$s - %3$s"],
"Could not generate when statement" : "Não foi possível gerar a instrução Quando",
"Every Day for the entire day" : "Todos os dias durante todo o dia",
"Every Day for the entire day until %1$s" : "Todos os dias durante todo o dia até %1$s",
"Every Day between %1$s - %2$s" : "Todos os dias entre %1$s - %2$s",
"Every Day between %1$s - %2$s until %3$s" : "Todos os dias entre %1$s - %2$s até %3$s",
"Every %1$d Days for the entire day" : "A cada %1$d dias durante o dia inteiro",
"Every %1$d Days for the entire day until %2$s" : "Cada %1$d dias durante todo o dia até %2$s",
"Every %1$d Days between %2$s - %3$s" : "Todo os %1$d Dias entre %2$s - %3$s",
"Every %1$d Days between %2$s - %3$s until %4$s" : "Todo os %1$d Dias entre %2$s - %3$s até %4$s",
"Could not generate event recurrence statement" : "Não foi possível gerar a instrução de recorrência do evento",
"Every Week on %1$s for the entire day" : "Todas as semanas em %1$s durante o dia inteiro",
"Every Week on %1$s for the entire day until %2$s" : "Toda semana em %1$s durante todo o dia até %2$s",
"Every Week on %1$s between %2$s - %3$s" : "Toda semana em %1$s entre %2$s - %3$s",
"Every Week on %1$s between %2$s - %3$s until %4$s" : "Toda semana em %1$s entre %2$s - %3$s até %4$s",
"Every %1$d Weeks on %2$s for the entire day" : "Todas as %1$d Semanas em %2$s durante o dia inteiro",
"Every %1$d Weeks on %2$s for the entire day until %3$s" : "Todas as %1$d Semanas em %2$s durante todo o dia até %3$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s" : "Todas as %1$d Semanas em %2$s entre %3$s - %4$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Todas as %1$d Semanas em %2$s entre %3$s - %4$s até %5$s",
"Every Month on the %1$s for the entire day" : "Todo mês em %1$s durante todo o dia",
"Every Month on the %1$s for the entire day until %2$s" : "Todos os meses em %1$s durante todo o dia até %2$s",
"Every Month on the %1$s between %2$s - %3$s" : "Todo mês nos %1$s entre %2$s - %3$s",
"Every Month on the %1$s between %2$s - %3$s until %4$s" : "Todo mês nos %1$s entre %2$s - %3$s até%4$s",
"Every %1$d Months on the %2$s for the entire day" : "A cada %1$d Meses nos %2$s durante o dia inteiro",
"Every %1$d Months on the %2$s for the entire day until %3$s" : "A cada %1$d Meses no %2$s durante todo o dia até%3$s",
"Every %1$d Months on the %2$s between %3$s - %4$s" : "A cada %1$d Meses nos %2$s entre %3$s - %4$s",
"Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "A cada %1$d Meses nos %2$s entre %3$s - %4$s até %5$s",
"Every Year in %1$s on the %2$s for the entire day" : "Todos os anos em %1$s em %2$s durante todo o dia",
"Every Year in %1$s on the %2$s for the entire day until %3$s" : "Todos os anos em %1$s em %2$s durante todo o dia até %3$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s" : "Todos os anos em %1$s nos %2$s entre %3$s - %4$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Todos os anos em %1$s nos %2$s entre %3$s - %4$s até %5$s",
"Every %1$d Years in %2$s on the %3$s for the entire day" : "A cada %1$d Anos em %2$s nos %3$s durante o dia inteiro",
"Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "A cada %1$d Anos em %2$s nos %3$s durante todo o dia até %4$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "A cada %1$d Anos em %2$s nos %3$s entre %4$s - %5$s ",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "A cada %1$d Anos em %2$s nos %3$s entre %4$s - %5$s até%6$s",
"On specific dates for the entire day until %1$s" : "Em datas específicas durante todo o dia até %1$s",
"On specific dates between %1$s - %2$s until %3$s" : "Em datas específicas entre %1$s - %2$s até%3$s",
"Could not generate when statement" : "Não foi possível gerar a indicação sobre quando",
"Every Day for the entire day" : "Todo Dia durante o dia inteiro",
"Every Day for the entire day until %1$s" : "Todo Dia para o dia inteiro até %1$s",
"Every Day between %1$s - %2$s" : "Todo Dia entre %1$s - %2$s",
"Every Day between %1$s - %2$s until %3$s" : "Todo Dia entre %1$s - %2$s até %3$s",
"Every %1$d Days for the entire day" : "A Cada %1$d Dias para o dia inteiro",
"Every %1$d Days for the entire day until %2$s" : "A Cada %1$d Dias para o dia inteiro até %2$s",
"Every %1$d Days between %2$s - %3$s" : "A Cada %1$d Dias entre %2$s - %3$s",
"Every %1$d Days between %2$s - %3$s until %4$s" : "A Cada %1$d Dias entre %2$s - %3$s até %4$s",
"Could not generate event recurrence statement" : "Não foi possível gerar a indicação de recorrência do evento",
"Every Week on %1$s for the entire day" : "Toda Semana, %1$s para o dia inteiro",
"Every Week on %1$s for the entire day until %2$s" : "Toda Semana, %1$s para o dia inteiro até %2$s",
"Every Week on %1$s between %2$s - %3$s" : "Toda Semana, %1$s entre %2$s - %3$s",
"Every Week on %1$s between %2$s - %3$s until %4$s" : "Toda Semana, %1$s entre %2$s - %3$s até %4$s",
"Every %1$d Weeks on %2$s for the entire day" : "A Cada %1$d Semanas, %2$s para o dia inteiro",
"Every %1$d Weeks on %2$s for the entire day until %3$s" : "A Cada %1$d Semanas, %2$s para o dia inteiro até %3$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s" : "A Cada %1$d Semanas, %2$s entre %3$s - %4$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "A Cada %1$d Semanas, %2$s entre %3$s - %4$s até %5$s",
"Every Month on the %1$s for the entire day" : "Todo Mês no dia %1$s para o dia inteiro",
"Every Month on the %1$s for the entire day until %2$s" : "Todo Mês no dia %1$s para o dia inteiro até %2$s",
"Every Month on the %1$s between %2$s - %3$s" : "Todo Mês no dia %1$s entre %2$s - %3$s",
"Every Month on the %1$s between %2$s - %3$s until %4$s" : "Todo Mês no dia %1$s entre %2$s - %3$s até %4$s",
"Every %1$d Months on the %2$s for the entire day" : "A Cada %1$d Meses no dia %2$s para o dia inteiro",
"Every %1$d Months on the %2$s for the entire day until %3$s" : "A Cada %1$d Meses no dia %2$s para o dia inteiro até %3$s",
"Every %1$d Months on the %2$s between %3$s - %4$s" : "A Cada %1$d Meses no dia %2$s entre %3$s - %4$s",
"Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "A Cada %1$d Meses no dia %2$s entre %3$s - %4$s até %5$s",
"Every Year in %1$s on the %2$s for the entire day" : "Todo Ano em %1$s no dia %2$s para o dia inteiro",
"Every Year in %1$s on the %2$s for the entire day until %3$s" : "Todo Ano em %1$s no dia %2$s para o dia inteiro até %3$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s" : "Todo Ano em %1$s no dia %2$s entre %3$s - %4$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Todo Ano em %1$s no dia %2$s entre %3$s - %4$s até %5$s",
"Every %1$d Years in %2$s on the %3$s for the entire day" : "A Cada %1$d Anos em %2$s no dia %3$s para o dia inteiro",
"Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "A Cada %1$d Anos em %2$s no dia %3$s para o dia inteiro até %4$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "A Cada %1$d Anos em %2$s no dia %3$s entre %4$s - %5$s ",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "A Cada %1$d Anos em %2$s no dia %3$s entre %4$s - %5$s até %6$s",
"On specific dates for the entire day until %1$s" : "Em datas específicas para o dia inteiro até %1$s",
"On specific dates between %1$s - %2$s until %3$s" : "Em datas específicas entre %1$s - %2$s até %3$s",
"In the past on %1$s" : "No passado em %1$s",
"_In a minute on %1$s_::_In %n minutes on %1$s_" : ["Em um minuto em %1$s","Em %n minutos em %1$s","Em %n minutos em %1$s"],
"_In a hour on %1$s_::_In %n hours on %1$s_" : ["Em uma hora em %1$s","Em %n horas em %1$s","Em %n horas em %1$s"],
@@ -129,32 +129,32 @@ OC.L10N.register(
"_In a week on %1$s_::_In %n weeks on %1$s_" : ["Em uma semana em %1$s","Em %n semanas em %1$s","Em %n semanas em %1$s"],
"_In a month on %1$s_::_In %n months on %1$s_" : ["Em um mês em %1$s","Em %n meses em %1$s","Em %n meses em %1$s"],
"_In a year on %1$s_::_In %n years on %1$s_" : ["Em um ano em %1$s","Em %n anos em %1$s","Em %n anos em %1$s"],
"In the past on %1$s then on %2$s" : "No passado em %1$s e então em %2$s",
"_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["Em um minuto em %1$s e então em %2$s","Em %n minutos em %1$s e então em %2$s","Em %n minutos em %1$s e então em %2$s"],
"_In a hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["Em um hora em %1$s e então em %2$s","Em %n horas em %1$s e então em %2$s","Em %n horas em %1$s e então em %2$s"],
"_In a day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["Em um dia em %1$s e então em %2$s","Em %n dias em %1$s e então em %2$s","Em %n dias em %1$s e então em %2$s"],
"_In a week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["Em uma semana em %1$s e então em %2$s","Em %n semanas em %1$s e então em %2$s","Em %n semanas em %1$s e então em %2$s"],
"_In a month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["Em um mes em %1$s e então em %2$s","Em %n meses em %1$s e então em %2$s","Em %n meses em %1$s e então em %2$s"],
"_In a year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["Em um ano em %1$s e então em %2$s","Em %n anos em %1$s e então em %2$s","Em %n anos em %1$s e então em %2$s"],
"In the past on %1$s then on %2$s and %3$s" : "No passado em %1$s e então em %2$s e %3$s",
"_In a minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["Em um minuto e %1$s e então em %2$s e %3$s","Em %n minutos e %1$s e então em %2$s e %3$s","Em %n minutos e %1$s e então em %2$s e %3$s"],
"_In a hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["Em uma hora e %1$s e então em %2$s e %3$s","Em %n horas e %1$s e então em %2$s e %3$s","Em %n horas e %1$s e então em %2$s e %3$s"],
"_In a day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["Em um dia e %1$s e então em %2$s e %3$s","Em %n dias e %1$s e então em %2$s e %3$s","Em %n dias e %1$s e então em %2$s e %3$s"],
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Em uma semana e %1$s e então em %2$s e %3$s","Em %n semanas e %1$s e então em %2$s e %3$s","Em %n semanas e %1$s e então em %2$s e %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Em um mês e %1$s e então em %2$s e %3$s","Em %n meses e %1$s e então em %2$s e %3$s","Em %n meses e %1$s e então em %2$s e %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Em um ano e %1$s e então em %2$s e %3$s","Em %n anos e %1$s e então em %2$s e %3$s","Em %n anos e %1$s e então em %2$s e %3$s"],
"Could not generate next recurrence statement" : "Não foi possível gerar a próxima instrução de recorrência",
"In the past on %1$s then on %2$s" : "No passado em %1$s e depois em %2$s",
"_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["Em um minuto em %1$s e depois em %2$s","Em %n minutos em %1$s e depois em %2$s","Em %n minutos em %1$s e depois em %2$s"],
"_In a hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["Em um hora em %1$s e depois em %2$s","Em %n horas em %1$s e depois em %2$s","Em %n horas em %1$s e depois em %2$s"],
"_In a day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["Em um dia em %1$s e depois em %2$s","Em %n dias em %1$s e depois em %2$s","Em %n dias em %1$s e depois em %2$s"],
"_In a week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["Em uma semana em %1$s e depois em %2$s","Em %n semanas em %1$s e depois em %2$s","Em %n semanas em %1$s e depois em %2$s"],
"_In a month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["Em um mês em %1$s e depois em %2$s","Em %n meses em %1$s e depois em %2$s","Em %n meses em %1$s e depois em %2$s"],
"_In a year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["Em um ano em %1$s e depois em %2$s","Em %n anos em %1$s e depois em %2$s","Em %n anos em %1$s e depois em %2$s"],
"In the past on %1$s then on %2$s and %3$s" : "No passado em %1$s e depois em %2$s e %3$s",
"_In a minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["Em um minuto e %1$s e depois em %2$s e %3$s","Em %n minutos e %1$s e depois em %2$s e %3$s","Em %n minutos e %1$s e depois em %2$s e %3$s"],
"_In a hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["Em uma hora e %1$s e depois em %2$s e %3$s","Em %n horas e %1$s e depois em %2$s e %3$s","Em %n horas e %1$s e depois em %2$s e %3$s"],
"_In a day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["Em um dia e %1$s e depois em %2$s e %3$s","Em %n dias e %1$s e depois em %2$s e %3$s","Em %n dias e %1$s e depois em %2$s e %3$s"],
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Em uma semana e %1$s e depois em %2$s e %3$s","Em %n semanas e %1$s e depois em %2$s e %3$s","Em %n semanas e %1$s e depois em %2$s e %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Em um mês e %1$s e depois em %2$s e %3$s","Em %n meses e %1$s e depois em %2$s e %3$s","Em %n meses e %1$s e depois em %2$s e %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Em um ano e %1$s e depois em %2$s e %3$s","Em %n anos e %1$s e depois em %2$s e %3$s","Em %n anos e %1$s e depois em %2$s e %3$s"],
"Could not generate next recurrence statement" : "Não foi possível gerar a indicação da próxima recorrência",
"Cancelled: %1$s" : "Cancelado: %1$s",
"\"%1$s\" has been canceled" : "\"%1$s\" foi cancelado",
"Re: %1$s" : "Remetente: %1$s",
"Re: %1$s" : "Re: %1$s",
"%1$s has accepted your invitation" : "%1$s aceitou seu convite",
"%1$s has tentatively accepted your invitation" : "%1$s aceitou provisoriamente o seu convite",
"%1$s has tentatively accepted your invitation" : "%1$s aceitou provisoriamente seu convite",
"%1$s has declined your invitation" : "%1$s recusou seu convite",
"%1$s has responded to your invitation" : "%1$s respondeu ao seu convite",
"Invitation updated: %1$s" : "Invitation updated: %1$s",
"%1$s updated the event \"%2$s\"" : "%1$s updated the event \"%2$s\"",
"Invitation updated: %1$s" : "Convite atualizado: %1$s",
"%1$s updated the event \"%2$s\"" : "%1$s atualizou o evento \"%2$s\"",
"Invitation: %1$s" : "Convite: %1$s",
"%1$s would like to invite you to \"%2$s\"" : "%1$s gostaria de convidá-lo para \"%2$s\"",
"%1$s would like to invite you to \"%2$s\"" : "%1$s gostaria de convidar você para \"%2$s\"",
"Organizer:" : "Organizador:",
"Attendees:" : "Participantes:",
"Title:" : "Título:",
@@ -185,52 +185,52 @@ OC.L10N.register(
"October" : "Outubro",
"November" : "Novembro",
"December" : "Dezembro",
"First" : "Primeiro",
"Second" : "Segundo",
"Third" : "Terço",
"Fourth" : "Quarto",
"Fifth" : "Quinto",
"Last" : "Último",
"Second Last" : "Último segundo",
"Third Last" : "Terceiro Último",
"Fourth Last" : "Quarto Último",
"Fifth Last" : "Quinto Último",
"First" : "Primeiro/a",
"Second" : "Segundo/a",
"Third" : "Terço/a",
"Fourth" : "Quarto/a",
"Fifth" : "Quinto/a",
"Last" : "Último/a",
"Second Last" : "Penúltimo/a",
"Third Last" : "Terceiro/a Último/a",
"Fourth Last" : "Quarto/a Último/a",
"Fifth Last" : "Quinto/a Último/a",
"Contacts" : "Contatos",
"{actor} created address book {addressbook}" : "{actor} criou o livro de endereço {addressbook}",
"{actor} created address book {addressbook}" : "{actor} criou o catálogo de endereços {addressbook}",
"You created address book {addressbook}" : "Você criou o catálogo de endereços {addressbook}",
"{actor} deleted address book {addressbook}" : "{actor} apagou o livro de endereços {addressbook}",
"{actor} deleted address book {addressbook}" : "{actor} excluiu o catálogo de endereços {addressbook}",
"You deleted address book {addressbook}" : "Você excluiu o catálogo de endereços {addressbook}",
"{actor} updated address book {addressbook}" : "{actor} atualizou o livro de endereço {addressbook}",
"You updated address book {addressbook}" : "Você atualizou o livro de endereço {addressbook}",
"{actor} shared address book {addressbook} with you" : "{actor} compartilhou o livro de endereço {addressbook} com você",
"{actor} updated address book {addressbook}" : "{actor} atualizou o catálogo de endereços {addressbook}",
"You updated address book {addressbook}" : "Você atualizou o catálogo de endereços {addressbook}",
"{actor} shared address book {addressbook} with you" : "{actor} compartilhou o catálogo de endereços {addressbook} com você",
"You shared address book {addressbook} with {user}" : "Você compartilhou o catálogo de endereços {addressbook} com {user}",
"{actor} shared address book {addressbook} with {user}" : "{actor} compartilhou o livro de endereço {addressbook} com {user}",
"{actor} unshared address book {addressbook} from you" : "{actor} retirou o compartilhamento do livro de endereço {addressbook} com você",
"You unshared address book {addressbook} from {user}" : "Você retirou o compartilhamento do livro de endereço {addressbook} com {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} retirou o compartilhamento do livro de endereço {addressbook} com {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} retirou o compartilhamento do livro de endereço {addressbook} com ele mesmo",
"You shared address book {addressbook} with group {group}" : "Você compartilhou o livro de endereço {addressbook} com o grupo {group}",
"{actor} shared address book {addressbook} with group {group}" : "{actor} compartilhou o livro de endereço {addressbook} com o grupo {group}",
"You unshared address book {addressbook} from group {group}" : "Você retirou o compartilhamento do livro de enredeços {addressbook} com o grupo {group}",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} retirou o compartilhamento do livro de endereço {addressbook} com o grupo {group}",
"{actor} created contact {card} in address book {addressbook}" : "{actor} criou o contato {card} no livro de enrereço {addressbook}",
"You created contact {card} in address book {addressbook}" : "Você criou o contato {card} no livro de endereço {addressbook}",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} excluiu o contato {card} do livro de endereço {addressbook}",
"You deleted contact {card} from address book {addressbook}" : "Você apagou o contato {card} do livro de endereços {addressbook}",
"{actor} updated contact {card} in address book {addressbook}" : "{actor} updated contact {card} no livro de endereço {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Você atualizou o contato {card} no livro de endereços {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "O <strong>contato</strong> ou <strong>livro de endereço</strong> foi modificado",
"{actor} shared address book {addressbook} with {user}" : "{actor} compartilhou o catálogo de endereços {addressbook} com {user}",
"{actor} unshared address book {addressbook} from you" : "{actor} retirou o compartilhamento do catálogo de endereços {addressbook} de você",
"You unshared address book {addressbook} from {user}" : "Você retirou o compartilhamento do catálogo de endereços {addressbook} de {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} retirou o compartilhamento do catálogo de endereços {addressbook} de {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} retirou o compartilhamento do catálogo de endereços {addressbook} de si mesmo",
"You shared address book {addressbook} with group {group}" : "Você compartilhou o catálogo de endereços {addressbook} com o grupo {group}",
"{actor} shared address book {addressbook} with group {group}" : "{actor} compartilhou o catálogo de endereços {addressbook} com o grupo {group}",
"You unshared address book {addressbook} from group {group}" : "Você retirou o compartilhamento do catálogo de endereços {addressbook} do grupo {group}",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} retirou o compartilhamento do catálogo de endereços {addressbook} do grupo {group}",
"{actor} created contact {card} in address book {addressbook}" : "{actor} criou o contato {card} no catálogo de endereços {addressbook}",
"You created contact {card} in address book {addressbook}" : "Você criou o contato {card} no catálogo de endereços {addressbook}",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} excluiu o contato {card} do catálogo de endereços {addressbook}",
"You deleted contact {card} from address book {addressbook}" : "Você exluiu o contato {card} do catálogo de endereços {addressbook}",
"{actor} updated contact {card} in address book {addressbook}" : "{actor} atualizou o contato {card} no catálogo de endereços {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Você atualizou o contato {card} no catálogo de endereços {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Um <strong>contato</strong> ou <strong>catálogo de endereços</strong> foi modificado",
"Accounts" : "Contas",
"System address book which holds all accounts" : "Catálogo de endereços do sistema que contém todas as contas",
"File is not updatable: %1$s" : "O arquivo não é atualizável: %1$s",
"Failed to get storage for file" : "Falha ao obter armazenamento para arquivo",
"Could not write to final file, canceled by hook" : "Não foi possível gravar no arquivo final, cancelado pelo gancho",
"Could not write to final file, canceled by hook" : "Não foi possível gravar no arquivo final, cancelado pelo hook",
"Could not write file contents" : "Não foi possível gravar o conteúdo do arquivo",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes","%n bytes"],
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Erro ao copiar o arquivo para o local de destino (copiado: %1$s, tamanho de arquivo esperado: %2$s)",
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Tamanho de arquivo esperado de %1$s mas lido (do cliente Nextcloud) e gravado (no armazenamento Nextcloud) %2$s. Pode ser um problema de rede no lado de envio ou um problema de gravação no armazenamento no lado do servidor.",
"Could not rename part file to final file, canceled by hook" : "Não foi possível renomear o arquivo de parte para o arquivo final, cancelado pelo gancho",
"Could not rename part file to final file" : "Não foi possível renomear o arquivo de parte para o arquivo final",
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Tamanho de arquivo esperado de %1$s, mas lido (do cliente Nextcloud) e gravado (no armazenamento Nextcloud) %2$s. Pode ser um problema de rede no lado de envio ou um problema de gravação no armazenamento no lado do servidor.",
"Could not rename part file to final file, canceled by hook" : "Não foi possível renomear o arquivo de peça para o arquivo final, cancelado pelo hook",
"Could not rename part file to final file" : "Não foi possível renomear o arquivo de peça para o arquivo final",
"Failed to check file size: %1$s" : "Falha ao verificar o tamanho do arquivo: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Não foi possível abrir o arquivo: %1$s, o arquivo parece existir",
"Could not open file: %1$s, file doesn't seem to exist" : "Não foi possível abrir o arquivo: %1$s, o arquivo parece não existir",
@@ -238,7 +238,7 @@ OC.L10N.register(
"Failed to open file: %1$s" : "Falha ao abrir arquivo: %1$s",
"Failed to unlink: %1$s" : "Falha ao desvincular: %1$s",
"Failed to write file contents: %1$s" : "Falha ao gravar o conteúdo do arquivo:%1$s",
"File not found: %1$s" : "Arquivo não encontrado:%1$s",
"File not found: %1$s" : "Arquivo não encontrado: %1$s",
"Invalid target path" : "Caminho de destino inválido",
"System is in maintenance mode." : "O sistema está em modo de manutenção",
"Upgrade needed" : "Upgrade necessário",
@@ -253,9 +253,9 @@ OC.L10N.register(
"System Address Book" : "Catálogo de Endereços do Sistema",
"The system address book contains contact information for all users in your instance." : "O catálogo de endereços do sistema contém informações de contato de todos os usuários da sua instância.",
"Enable System Address Book" : "Ativar Catálogo de Endereços do Sistema",
"DAV system address book" : "Livro de endereços DAV do sistema",
"No outstanding DAV system address book sync." : "Não há nenhum livro de endereços DAV sendo sincronizado.",
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "A sincronização do catálogo de endereços do sistema DAV ainda não foi executada porque sua instância tem mais de 1000 usuários ou porque ocorreu um erro. Execute-o manualmente chamando \"occ dav:sync-system-addressbook\".",
"DAV system address book" : "Catálogo de endereços DAV do sistema",
"No outstanding DAV system address book sync." : "Não há sincronização pendente do catálogo de endereços DAV do sistema.",
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "A sincronização do catálogo de endereços DAV do sistema ainda não foi executada porque sua instância tem mais de 1000 usuários ou porque ocorreu um erro. Execute-a manualmente chamando \"occ dav:sync-system-addressbook\".",
"WebDAV endpoint" : "Endpoint WebDAV",
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Não foi possível verificar se o seu servidor web está configurado corretamente para permitir a sincronização de arquivos via WebDAV. Verifique manualmente.",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Seu servidor web ainda não está configurado corretamente para permitir a sincronização de arquivos, porque a interface do WebDAV parece estar quebrada.",
@@ -266,16 +266,16 @@ OC.L10N.register(
"WebDAV" : "WebDAV",
"Absence saved" : "Ausência salva",
"Failed to save your absence settings" : "Falha ao salvar suas configurações de ausência",
"Absence cleared" : "Ausência apagada",
"Absence cleared" : "Limpou a ausência",
"Failed to clear your absence settings" : "Falha ao limpar suas configurações de ausência",
"First day" : "Primeiro dia",
"Last day (inclusive)" : "Último dia (inclusive)",
"Out of office replacement (optional)" : "Substituição fora do escritório (opcional)",
"Out of office replacement (optional)" : "Substituto durante sua ausência (opcional)",
"Name of the replacement" : "Nome do substituto",
"No results." : "Nenhum resultado.",
"Start typing." : "Comece a digitar.",
"Short absence status" : "Status para ausência breve",
"Long absence Message" : "Mensagem longa de ausência",
"Short absence status" : "Status curto sobre a ausência",
"Long absence Message" : "Mensagem longa sobre a ausência",
"Save" : "Salvar",
"Disable absence" : "Desativar ausência",
"Failed to load availability" : "Falha ao carregar a disponibilidade",
@@ -303,18 +303,18 @@ OC.L10N.register(
"Hence they will not be available immediately after enabling but will show up after some time." : "Portanto, eles não estarão disponíveis imediatamente após a ativação, mas depois de algum tempo.",
"Send notifications for events" : "Enviar notificações para eventos",
"Notifications are sent via background jobs, so these must occur often enough." : "As notificações são enviadas via trabalhos em segundo plano, portanto, elas devem ocorrer com frequência suficiente.",
"Send reminder notifications to calendar sharees as well" : "Envie notificações de lembrete para compartilhamentos de calendário também",
"Reminders are always sent to organizers and attendees." : "Os lembretes são sempre enviados aos organizadores e participantes.",
"Send reminder notifications to calendar sharees as well" : "Enviar notificações de lembrete também para os compartilhadores de calendário",
"Reminders are always sent to organizers and attendees." : "Lembretes são sempre enviados aos organizadores e participantes.",
"Enable notifications for events via push" : "Ativar notificações para eventos via push",
"Cancel" : "Cancelar",
"Import" : "Importar",
"Error while saving settings" : "Error while saving settings",
"Error while saving settings" : "Erro ao salvar as configurações",
"Contact reset successfully" : "O contato foi reiniciado com sucesso",
"Error while resetting contact" : "Erro ao reiniciar o contato",
"Contact imported successfully" : "O contato foi importado com sucesso",
"Error while importing contact" : "Erro ao importar o contato",
"Example Content" : "Conteúdo de Exemplo",
"Set example content to be created on new user first login." : "Defina o conteúdo de exemplo a ser criado no primeiro login do novo usuário.",
"Example Content" : "Exemplo de Conteúdo",
"Set example content to be created on new user first login." : "Defina o exemplo de conteúdo a ser criado no primeiro login do novo usuário.",
"Import contact" : "Importar contato",
"Reset to default contact" : "Redefinir para o contato padrão",
"Import contacts" : "Importar contatos",
@@ -325,8 +325,8 @@ OC.L10N.register(
"Tentative" : "Tentativa",
"Your attendance was updated successfully." : "Sua presença foi atualizada com sucesso.",
"Time:" : "Horário:",
"Could not open file" : "Não pode abrir o arquivo",
"Invalid chunk name" : "Nome do bloco inválido",
"Could not rename part file assembled from chunks" : "Não foi possível renomear parte do arquivo montado a partir de pedaços"
"Could not open file" : "Não foi possível abrir o arquivo",
"Invalid chunk name" : "Nome de pedaço inválido",
"Could not rename part file assembled from chunks" : "Não foi possível renomear o arquivo de peça montado a partir de pedaços"
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
+113 -113
View File
@@ -30,12 +30,12 @@
"You deleted event {event} from calendar {calendar}" : "Você excluiu o evento {event} do calendário {calendar}",
"{actor} updated event {event} in calendar {calendar}" : "{actor} atualizou o evento {event} no calendário {calendar}",
"You updated event {event} in calendar {calendar}" : "Você atualizou o evento {event} no calendário {calendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} moveu o evento {event} do calendario {sourceCalendar} para o calendario {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Você moveu o evento {event} do calendario {sourceCalendar} para o calendario {targetCalendar}",
"{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} moveu o evento {event} do calendário {sourceCalendar} para o calendário {targetCalendar}",
"You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Você moveu o evento {event} do calendário {sourceCalendar} para o calendário {targetCalendar}",
"{actor} restored event {event} of calendar {calendar}" : "{actor} restaurou o evento {event} do calendário {calendar}",
"You restored event {event} of calendar {calendar}" : "Você restaurou o evento {event} do calendário {calendar}",
"Busy" : "Ocupado",
"{actor} created to-do {todo} in list {calendar}" : "{actor} criou tarefa {todo} na lista {calendar}",
"{actor} created to-do {todo} in list {calendar}" : "{actor} criou a tarefa {todo} na lista {calendar}",
"You created to-do {todo} in list {calendar}" : "Você criou a tarefa {todo} na lista {calendar}",
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} excluiu a tarefa {todo} da lista {calendar}",
"You deleted to-do {todo} from list {calendar}" : "Você excluiu a tarefa {todo} da lista {calendar}",
@@ -49,8 +49,8 @@
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Você moveu a tarefa {todo} da lista {sourceCalendar} para a lista {targetCalendar}",
"Calendar, contacts and tasks" : "Calendário, contatos e tarefas",
"A <strong>calendar</strong> was modified" : "Um <strong>calendário</strong> foi modificado",
"A calendar <strong>event</strong> was modified" : "Um <strong>evento</strong> do calendário foi modificado",
"A calendar <strong>to-do</strong> was modified" : "Um calendário <strong>tarefa</strong> foi modificado",
"A calendar <strong>event</strong> was modified" : "Um <strong>evento</strong> de calendário foi modificado",
"A calendar <strong>to-do</strong> was modified" : "Uma <strong>tarefa</strong> de calendário foi modificada",
"Contact birthdays" : "Aniversário dos contatos",
"Death of %s" : "Morte de %s",
"Untitled calendar" : "Calendário sem título",
@@ -72,7 +72,7 @@
"%1$s via %2$s" : "%1$s via %2$s",
"In the past on %1$s for the entire day" : "No passado em %1$s para o dia inteiro",
"_In a minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["Em um minuto em %1$s para o dia inteiro","Em %n minutos em %1$s para o dia inteiro","Em %n minutos em %1$s para o dia inteiro"],
"_In a hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["Em uma hora em %1$s para o dia inteiro","Em %n horas em %1$s para o dia inteiro","Em %n horas em %1$s para o dia inteiro"],
"_In a hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["Em uma hora em %1$s para o dia inteiro","Em %n horas em %1$s para o dia inteiro","Em %n horas em %1$s para o dia inteiro"],
"_In a day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["Em um dias em %1$s para o dia inteiro","Em %n dias em %1$s para o dia inteiro","Em %n dias em %1$s para o dia inteiro"],
"_In a week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["Em uma semana em %1$s para o dia inteiro","Em %n semanas em %1$s para o dia inteiro","Em %n semanas em %1$s para o dia inteiro"],
"_In a month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["Em um mês em %1$s para o dia inteiro","Em %n meses em %1$s para o dia inteiro","Em %n meses em %1$s para o dia inteiro"],
@@ -84,42 +84,42 @@
"_In a week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["Em uma semana em %1$s entre %2$s - %3$s","Em %n semanas em %1$s entre %2$s - %3$s","Em %n semanas em %1$s entre %2$s - %3$s"],
"_In a month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["Em um mês em %1$s entre %2$s - %3$s","Em %n meses em %1$s entre %2$s - %3$s","Em %n meses em %1$s entre %2$s - %3$s"],
"_In a year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["Em um ano em %1$s entre %2$s - %3$s","Em %n anos em %1$s entre %2$s - %3$s","Em %n anos em %1$s entre %2$s - %3$s"],
"Could not generate when statement" : "Não foi possível gerar a instrução Quando",
"Every Day for the entire day" : "Todos os dias durante todo o dia",
"Every Day for the entire day until %1$s" : "Todos os dias durante todo o dia até %1$s",
"Every Day between %1$s - %2$s" : "Todos os dias entre %1$s - %2$s",
"Every Day between %1$s - %2$s until %3$s" : "Todos os dias entre %1$s - %2$s até %3$s",
"Every %1$d Days for the entire day" : "A cada %1$d dias durante o dia inteiro",
"Every %1$d Days for the entire day until %2$s" : "Cada %1$d dias durante todo o dia até %2$s",
"Every %1$d Days between %2$s - %3$s" : "Todo os %1$d Dias entre %2$s - %3$s",
"Every %1$d Days between %2$s - %3$s until %4$s" : "Todo os %1$d Dias entre %2$s - %3$s até %4$s",
"Could not generate event recurrence statement" : "Não foi possível gerar a instrução de recorrência do evento",
"Every Week on %1$s for the entire day" : "Todas as semanas em %1$s durante o dia inteiro",
"Every Week on %1$s for the entire day until %2$s" : "Toda semana em %1$s durante todo o dia até %2$s",
"Every Week on %1$s between %2$s - %3$s" : "Toda semana em %1$s entre %2$s - %3$s",
"Every Week on %1$s between %2$s - %3$s until %4$s" : "Toda semana em %1$s entre %2$s - %3$s até %4$s",
"Every %1$d Weeks on %2$s for the entire day" : "Todas as %1$d Semanas em %2$s durante o dia inteiro",
"Every %1$d Weeks on %2$s for the entire day until %3$s" : "Todas as %1$d Semanas em %2$s durante todo o dia até %3$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s" : "Todas as %1$d Semanas em %2$s entre %3$s - %4$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Todas as %1$d Semanas em %2$s entre %3$s - %4$s até %5$s",
"Every Month on the %1$s for the entire day" : "Todo mês em %1$s durante todo o dia",
"Every Month on the %1$s for the entire day until %2$s" : "Todos os meses em %1$s durante todo o dia até %2$s",
"Every Month on the %1$s between %2$s - %3$s" : "Todo mês nos %1$s entre %2$s - %3$s",
"Every Month on the %1$s between %2$s - %3$s until %4$s" : "Todo mês nos %1$s entre %2$s - %3$s até%4$s",
"Every %1$d Months on the %2$s for the entire day" : "A cada %1$d Meses nos %2$s durante o dia inteiro",
"Every %1$d Months on the %2$s for the entire day until %3$s" : "A cada %1$d Meses no %2$s durante todo o dia até%3$s",
"Every %1$d Months on the %2$s between %3$s - %4$s" : "A cada %1$d Meses nos %2$s entre %3$s - %4$s",
"Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "A cada %1$d Meses nos %2$s entre %3$s - %4$s até %5$s",
"Every Year in %1$s on the %2$s for the entire day" : "Todos os anos em %1$s em %2$s durante todo o dia",
"Every Year in %1$s on the %2$s for the entire day until %3$s" : "Todos os anos em %1$s em %2$s durante todo o dia até %3$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s" : "Todos os anos em %1$s nos %2$s entre %3$s - %4$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Todos os anos em %1$s nos %2$s entre %3$s - %4$s até %5$s",
"Every %1$d Years in %2$s on the %3$s for the entire day" : "A cada %1$d Anos em %2$s nos %3$s durante o dia inteiro",
"Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "A cada %1$d Anos em %2$s nos %3$s durante todo o dia até %4$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "A cada %1$d Anos em %2$s nos %3$s entre %4$s - %5$s ",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "A cada %1$d Anos em %2$s nos %3$s entre %4$s - %5$s até%6$s",
"On specific dates for the entire day until %1$s" : "Em datas específicas durante todo o dia até %1$s",
"On specific dates between %1$s - %2$s until %3$s" : "Em datas específicas entre %1$s - %2$s até%3$s",
"Could not generate when statement" : "Não foi possível gerar a indicação sobre quando",
"Every Day for the entire day" : "Todo Dia durante o dia inteiro",
"Every Day for the entire day until %1$s" : "Todo Dia para o dia inteiro até %1$s",
"Every Day between %1$s - %2$s" : "Todo Dia entre %1$s - %2$s",
"Every Day between %1$s - %2$s until %3$s" : "Todo Dia entre %1$s - %2$s até %3$s",
"Every %1$d Days for the entire day" : "A Cada %1$d Dias para o dia inteiro",
"Every %1$d Days for the entire day until %2$s" : "A Cada %1$d Dias para o dia inteiro até %2$s",
"Every %1$d Days between %2$s - %3$s" : "A Cada %1$d Dias entre %2$s - %3$s",
"Every %1$d Days between %2$s - %3$s until %4$s" : "A Cada %1$d Dias entre %2$s - %3$s até %4$s",
"Could not generate event recurrence statement" : "Não foi possível gerar a indicação de recorrência do evento",
"Every Week on %1$s for the entire day" : "Toda Semana, %1$s para o dia inteiro",
"Every Week on %1$s for the entire day until %2$s" : "Toda Semana, %1$s para o dia inteiro até %2$s",
"Every Week on %1$s between %2$s - %3$s" : "Toda Semana, %1$s entre %2$s - %3$s",
"Every Week on %1$s between %2$s - %3$s until %4$s" : "Toda Semana, %1$s entre %2$s - %3$s até %4$s",
"Every %1$d Weeks on %2$s for the entire day" : "A Cada %1$d Semanas, %2$s para o dia inteiro",
"Every %1$d Weeks on %2$s for the entire day until %3$s" : "A Cada %1$d Semanas, %2$s para o dia inteiro até %3$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s" : "A Cada %1$d Semanas, %2$s entre %3$s - %4$s",
"Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "A Cada %1$d Semanas, %2$s entre %3$s - %4$s até %5$s",
"Every Month on the %1$s for the entire day" : "Todo Mês no dia %1$s para o dia inteiro",
"Every Month on the %1$s for the entire day until %2$s" : "Todo Mês no dia %1$s para o dia inteiro até %2$s",
"Every Month on the %1$s between %2$s - %3$s" : "Todo Mês no dia %1$s entre %2$s - %3$s",
"Every Month on the %1$s between %2$s - %3$s until %4$s" : "Todo Mês no dia %1$s entre %2$s - %3$s até %4$s",
"Every %1$d Months on the %2$s for the entire day" : "A Cada %1$d Meses no dia %2$s para o dia inteiro",
"Every %1$d Months on the %2$s for the entire day until %3$s" : "A Cada %1$d Meses no dia %2$s para o dia inteiro até %3$s",
"Every %1$d Months on the %2$s between %3$s - %4$s" : "A Cada %1$d Meses no dia %2$s entre %3$s - %4$s",
"Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "A Cada %1$d Meses no dia %2$s entre %3$s - %4$s até %5$s",
"Every Year in %1$s on the %2$s for the entire day" : "Todo Ano em %1$s no dia %2$s para o dia inteiro",
"Every Year in %1$s on the %2$s for the entire day until %3$s" : "Todo Ano em %1$s no dia %2$s para o dia inteiro até %3$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s" : "Todo Ano em %1$s no dia %2$s entre %3$s - %4$s",
"Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Todo Ano em %1$s no dia %2$s entre %3$s - %4$s até %5$s",
"Every %1$d Years in %2$s on the %3$s for the entire day" : "A Cada %1$d Anos em %2$s no dia %3$s para o dia inteiro",
"Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "A Cada %1$d Anos em %2$s no dia %3$s para o dia inteiro até %4$s",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "A Cada %1$d Anos em %2$s no dia %3$s entre %4$s - %5$s ",
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "A Cada %1$d Anos em %2$s no dia %3$s entre %4$s - %5$s até %6$s",
"On specific dates for the entire day until %1$s" : "Em datas específicas para o dia inteiro até %1$s",
"On specific dates between %1$s - %2$s until %3$s" : "Em datas específicas entre %1$s - %2$s até %3$s",
"In the past on %1$s" : "No passado em %1$s",
"_In a minute on %1$s_::_In %n minutes on %1$s_" : ["Em um minuto em %1$s","Em %n minutos em %1$s","Em %n minutos em %1$s"],
"_In a hour on %1$s_::_In %n hours on %1$s_" : ["Em uma hora em %1$s","Em %n horas em %1$s","Em %n horas em %1$s"],
@@ -127,32 +127,32 @@
"_In a week on %1$s_::_In %n weeks on %1$s_" : ["Em uma semana em %1$s","Em %n semanas em %1$s","Em %n semanas em %1$s"],
"_In a month on %1$s_::_In %n months on %1$s_" : ["Em um mês em %1$s","Em %n meses em %1$s","Em %n meses em %1$s"],
"_In a year on %1$s_::_In %n years on %1$s_" : ["Em um ano em %1$s","Em %n anos em %1$s","Em %n anos em %1$s"],
"In the past on %1$s then on %2$s" : "No passado em %1$s e então em %2$s",
"_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["Em um minuto em %1$s e então em %2$s","Em %n minutos em %1$s e então em %2$s","Em %n minutos em %1$s e então em %2$s"],
"_In a hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["Em um hora em %1$s e então em %2$s","Em %n horas em %1$s e então em %2$s","Em %n horas em %1$s e então em %2$s"],
"_In a day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["Em um dia em %1$s e então em %2$s","Em %n dias em %1$s e então em %2$s","Em %n dias em %1$s e então em %2$s"],
"_In a week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["Em uma semana em %1$s e então em %2$s","Em %n semanas em %1$s e então em %2$s","Em %n semanas em %1$s e então em %2$s"],
"_In a month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["Em um mes em %1$s e então em %2$s","Em %n meses em %1$s e então em %2$s","Em %n meses em %1$s e então em %2$s"],
"_In a year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["Em um ano em %1$s e então em %2$s","Em %n anos em %1$s e então em %2$s","Em %n anos em %1$s e então em %2$s"],
"In the past on %1$s then on %2$s and %3$s" : "No passado em %1$s e então em %2$s e %3$s",
"_In a minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["Em um minuto e %1$s e então em %2$s e %3$s","Em %n minutos e %1$s e então em %2$s e %3$s","Em %n minutos e %1$s e então em %2$s e %3$s"],
"_In a hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["Em uma hora e %1$s e então em %2$s e %3$s","Em %n horas e %1$s e então em %2$s e %3$s","Em %n horas e %1$s e então em %2$s e %3$s"],
"_In a day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["Em um dia e %1$s e então em %2$s e %3$s","Em %n dias e %1$s e então em %2$s e %3$s","Em %n dias e %1$s e então em %2$s e %3$s"],
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Em uma semana e %1$s e então em %2$s e %3$s","Em %n semanas e %1$s e então em %2$s e %3$s","Em %n semanas e %1$s e então em %2$s e %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Em um mês e %1$s e então em %2$s e %3$s","Em %n meses e %1$s e então em %2$s e %3$s","Em %n meses e %1$s e então em %2$s e %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Em um ano e %1$s e então em %2$s e %3$s","Em %n anos e %1$s e então em %2$s e %3$s","Em %n anos e %1$s e então em %2$s e %3$s"],
"Could not generate next recurrence statement" : "Não foi possível gerar a próxima instrução de recorrência",
"In the past on %1$s then on %2$s" : "No passado em %1$s e depois em %2$s",
"_In a minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["Em um minuto em %1$s e depois em %2$s","Em %n minutos em %1$s e depois em %2$s","Em %n minutos em %1$s e depois em %2$s"],
"_In a hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["Em um hora em %1$s e depois em %2$s","Em %n horas em %1$s e depois em %2$s","Em %n horas em %1$s e depois em %2$s"],
"_In a day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["Em um dia em %1$s e depois em %2$s","Em %n dias em %1$s e depois em %2$s","Em %n dias em %1$s e depois em %2$s"],
"_In a week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["Em uma semana em %1$s e depois em %2$s","Em %n semanas em %1$s e depois em %2$s","Em %n semanas em %1$s e depois em %2$s"],
"_In a month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["Em um mês em %1$s e depois em %2$s","Em %n meses em %1$s e depois em %2$s","Em %n meses em %1$s e depois em %2$s"],
"_In a year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["Em um ano em %1$s e depois em %2$s","Em %n anos em %1$s e depois em %2$s","Em %n anos em %1$s e depois em %2$s"],
"In the past on %1$s then on %2$s and %3$s" : "No passado em %1$s e depois em %2$s e %3$s",
"_In a minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["Em um minuto e %1$s e depois em %2$s e %3$s","Em %n minutos e %1$s e depois em %2$s e %3$s","Em %n minutos e %1$s e depois em %2$s e %3$s"],
"_In a hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["Em uma hora e %1$s e depois em %2$s e %3$s","Em %n horas e %1$s e depois em %2$s e %3$s","Em %n horas e %1$s e depois em %2$s e %3$s"],
"_In a day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["Em um dia e %1$s e depois em %2$s e %3$s","Em %n dias e %1$s e depois em %2$s e %3$s","Em %n dias e %1$s e depois em %2$s e %3$s"],
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Em uma semana e %1$s e depois em %2$s e %3$s","Em %n semanas e %1$s e depois em %2$s e %3$s","Em %n semanas e %1$s e depois em %2$s e %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Em um mês e %1$s e depois em %2$s e %3$s","Em %n meses e %1$s e depois em %2$s e %3$s","Em %n meses e %1$s e depois em %2$s e %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Em um ano e %1$s e depois em %2$s e %3$s","Em %n anos e %1$s e depois em %2$s e %3$s","Em %n anos e %1$s e depois em %2$s e %3$s"],
"Could not generate next recurrence statement" : "Não foi possível gerar a indicação da próxima recorrência",
"Cancelled: %1$s" : "Cancelado: %1$s",
"\"%1$s\" has been canceled" : "\"%1$s\" foi cancelado",
"Re: %1$s" : "Remetente: %1$s",
"Re: %1$s" : "Re: %1$s",
"%1$s has accepted your invitation" : "%1$s aceitou seu convite",
"%1$s has tentatively accepted your invitation" : "%1$s aceitou provisoriamente o seu convite",
"%1$s has tentatively accepted your invitation" : "%1$s aceitou provisoriamente seu convite",
"%1$s has declined your invitation" : "%1$s recusou seu convite",
"%1$s has responded to your invitation" : "%1$s respondeu ao seu convite",
"Invitation updated: %1$s" : "Invitation updated: %1$s",
"%1$s updated the event \"%2$s\"" : "%1$s updated the event \"%2$s\"",
"Invitation updated: %1$s" : "Convite atualizado: %1$s",
"%1$s updated the event \"%2$s\"" : "%1$s atualizou o evento \"%2$s\"",
"Invitation: %1$s" : "Convite: %1$s",
"%1$s would like to invite you to \"%2$s\"" : "%1$s gostaria de convidá-lo para \"%2$s\"",
"%1$s would like to invite you to \"%2$s\"" : "%1$s gostaria de convidar você para \"%2$s\"",
"Organizer:" : "Organizador:",
"Attendees:" : "Participantes:",
"Title:" : "Título:",
@@ -183,52 +183,52 @@
"October" : "Outubro",
"November" : "Novembro",
"December" : "Dezembro",
"First" : "Primeiro",
"Second" : "Segundo",
"Third" : "Terço",
"Fourth" : "Quarto",
"Fifth" : "Quinto",
"Last" : "Último",
"Second Last" : "Último segundo",
"Third Last" : "Terceiro Último",
"Fourth Last" : "Quarto Último",
"Fifth Last" : "Quinto Último",
"First" : "Primeiro/a",
"Second" : "Segundo/a",
"Third" : "Terço/a",
"Fourth" : "Quarto/a",
"Fifth" : "Quinto/a",
"Last" : "Último/a",
"Second Last" : "Penúltimo/a",
"Third Last" : "Terceiro/a Último/a",
"Fourth Last" : "Quarto/a Último/a",
"Fifth Last" : "Quinto/a Último/a",
"Contacts" : "Contatos",
"{actor} created address book {addressbook}" : "{actor} criou o livro de endereço {addressbook}",
"{actor} created address book {addressbook}" : "{actor} criou o catálogo de endereços {addressbook}",
"You created address book {addressbook}" : "Você criou o catálogo de endereços {addressbook}",
"{actor} deleted address book {addressbook}" : "{actor} apagou o livro de endereços {addressbook}",
"{actor} deleted address book {addressbook}" : "{actor} excluiu o catálogo de endereços {addressbook}",
"You deleted address book {addressbook}" : "Você excluiu o catálogo de endereços {addressbook}",
"{actor} updated address book {addressbook}" : "{actor} atualizou o livro de endereço {addressbook}",
"You updated address book {addressbook}" : "Você atualizou o livro de endereço {addressbook}",
"{actor} shared address book {addressbook} with you" : "{actor} compartilhou o livro de endereço {addressbook} com você",
"{actor} updated address book {addressbook}" : "{actor} atualizou o catálogo de endereços {addressbook}",
"You updated address book {addressbook}" : "Você atualizou o catálogo de endereços {addressbook}",
"{actor} shared address book {addressbook} with you" : "{actor} compartilhou o catálogo de endereços {addressbook} com você",
"You shared address book {addressbook} with {user}" : "Você compartilhou o catálogo de endereços {addressbook} com {user}",
"{actor} shared address book {addressbook} with {user}" : "{actor} compartilhou o livro de endereço {addressbook} com {user}",
"{actor} unshared address book {addressbook} from you" : "{actor} retirou o compartilhamento do livro de endereço {addressbook} com você",
"You unshared address book {addressbook} from {user}" : "Você retirou o compartilhamento do livro de endereço {addressbook} com {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} retirou o compartilhamento do livro de endereço {addressbook} com {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} retirou o compartilhamento do livro de endereço {addressbook} com ele mesmo",
"You shared address book {addressbook} with group {group}" : "Você compartilhou o livro de endereço {addressbook} com o grupo {group}",
"{actor} shared address book {addressbook} with group {group}" : "{actor} compartilhou o livro de endereço {addressbook} com o grupo {group}",
"You unshared address book {addressbook} from group {group}" : "Você retirou o compartilhamento do livro de enredeços {addressbook} com o grupo {group}",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} retirou o compartilhamento do livro de endereço {addressbook} com o grupo {group}",
"{actor} created contact {card} in address book {addressbook}" : "{actor} criou o contato {card} no livro de enrereço {addressbook}",
"You created contact {card} in address book {addressbook}" : "Você criou o contato {card} no livro de endereço {addressbook}",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} excluiu o contato {card} do livro de endereço {addressbook}",
"You deleted contact {card} from address book {addressbook}" : "Você apagou o contato {card} do livro de endereços {addressbook}",
"{actor} updated contact {card} in address book {addressbook}" : "{actor} updated contact {card} no livro de endereço {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Você atualizou o contato {card} no livro de endereços {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "O <strong>contato</strong> ou <strong>livro de endereço</strong> foi modificado",
"{actor} shared address book {addressbook} with {user}" : "{actor} compartilhou o catálogo de endereços {addressbook} com {user}",
"{actor} unshared address book {addressbook} from you" : "{actor} retirou o compartilhamento do catálogo de endereços {addressbook} de você",
"You unshared address book {addressbook} from {user}" : "Você retirou o compartilhamento do catálogo de endereços {addressbook} de {user}",
"{actor} unshared address book {addressbook} from {user}" : "{actor} retirou o compartilhamento do catálogo de endereços {addressbook} de {user}",
"{actor} unshared address book {addressbook} from themselves" : "{actor} retirou o compartilhamento do catálogo de endereços {addressbook} de si mesmo",
"You shared address book {addressbook} with group {group}" : "Você compartilhou o catálogo de endereços {addressbook} com o grupo {group}",
"{actor} shared address book {addressbook} with group {group}" : "{actor} compartilhou o catálogo de endereços {addressbook} com o grupo {group}",
"You unshared address book {addressbook} from group {group}" : "Você retirou o compartilhamento do catálogo de endereços {addressbook} do grupo {group}",
"{actor} unshared address book {addressbook} from group {group}" : "{actor} retirou o compartilhamento do catálogo de endereços {addressbook} do grupo {group}",
"{actor} created contact {card} in address book {addressbook}" : "{actor} criou o contato {card} no catálogo de endereços {addressbook}",
"You created contact {card} in address book {addressbook}" : "Você criou o contato {card} no catálogo de endereços {addressbook}",
"{actor} deleted contact {card} from address book {addressbook}" : "{actor} excluiu o contato {card} do catálogo de endereços {addressbook}",
"You deleted contact {card} from address book {addressbook}" : "Você exluiu o contato {card} do catálogo de endereços {addressbook}",
"{actor} updated contact {card} in address book {addressbook}" : "{actor} atualizou o contato {card} no catálogo de endereços {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Você atualizou o contato {card} no catálogo de endereços {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "Um <strong>contato</strong> ou <strong>catálogo de endereços</strong> foi modificado",
"Accounts" : "Contas",
"System address book which holds all accounts" : "Catálogo de endereços do sistema que contém todas as contas",
"File is not updatable: %1$s" : "O arquivo não é atualizável: %1$s",
"Failed to get storage for file" : "Falha ao obter armazenamento para arquivo",
"Could not write to final file, canceled by hook" : "Não foi possível gravar no arquivo final, cancelado pelo gancho",
"Could not write to final file, canceled by hook" : "Não foi possível gravar no arquivo final, cancelado pelo hook",
"Could not write file contents" : "Não foi possível gravar o conteúdo do arquivo",
"_%n byte_::_%n bytes_" : ["%n byte","%n bytes","%n bytes"],
"Error while copying file to target location (copied: %1$s, expected filesize: %2$s)" : "Erro ao copiar o arquivo para o local de destino (copiado: %1$s, tamanho de arquivo esperado: %2$s)",
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Tamanho de arquivo esperado de %1$s mas lido (do cliente Nextcloud) e gravado (no armazenamento Nextcloud) %2$s. Pode ser um problema de rede no lado de envio ou um problema de gravação no armazenamento no lado do servidor.",
"Could not rename part file to final file, canceled by hook" : "Não foi possível renomear o arquivo de parte para o arquivo final, cancelado pelo gancho",
"Could not rename part file to final file" : "Não foi possível renomear o arquivo de parte para o arquivo final",
"Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side." : "Tamanho de arquivo esperado de %1$s, mas lido (do cliente Nextcloud) e gravado (no armazenamento Nextcloud) %2$s. Pode ser um problema de rede no lado de envio ou um problema de gravação no armazenamento no lado do servidor.",
"Could not rename part file to final file, canceled by hook" : "Não foi possível renomear o arquivo de peça para o arquivo final, cancelado pelo hook",
"Could not rename part file to final file" : "Não foi possível renomear o arquivo de peça para o arquivo final",
"Failed to check file size: %1$s" : "Falha ao verificar o tamanho do arquivo: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Não foi possível abrir o arquivo: %1$s, o arquivo parece existir",
"Could not open file: %1$s, file doesn't seem to exist" : "Não foi possível abrir o arquivo: %1$s, o arquivo parece não existir",
@@ -236,7 +236,7 @@
"Failed to open file: %1$s" : "Falha ao abrir arquivo: %1$s",
"Failed to unlink: %1$s" : "Falha ao desvincular: %1$s",
"Failed to write file contents: %1$s" : "Falha ao gravar o conteúdo do arquivo:%1$s",
"File not found: %1$s" : "Arquivo não encontrado:%1$s",
"File not found: %1$s" : "Arquivo não encontrado: %1$s",
"Invalid target path" : "Caminho de destino inválido",
"System is in maintenance mode." : "O sistema está em modo de manutenção",
"Upgrade needed" : "Upgrade necessário",
@@ -251,9 +251,9 @@
"System Address Book" : "Catálogo de Endereços do Sistema",
"The system address book contains contact information for all users in your instance." : "O catálogo de endereços do sistema contém informações de contato de todos os usuários da sua instância.",
"Enable System Address Book" : "Ativar Catálogo de Endereços do Sistema",
"DAV system address book" : "Livro de endereços DAV do sistema",
"No outstanding DAV system address book sync." : "Não há nenhum livro de endereços DAV sendo sincronizado.",
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "A sincronização do catálogo de endereços do sistema DAV ainda não foi executada porque sua instância tem mais de 1000 usuários ou porque ocorreu um erro. Execute-o manualmente chamando \"occ dav:sync-system-addressbook\".",
"DAV system address book" : "Catálogo de endereços DAV do sistema",
"No outstanding DAV system address book sync." : "Não há sincronização pendente do catálogo de endereços DAV do sistema.",
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "A sincronização do catálogo de endereços DAV do sistema ainda não foi executada porque sua instância tem mais de 1000 usuários ou porque ocorreu um erro. Execute-a manualmente chamando \"occ dav:sync-system-addressbook\".",
"WebDAV endpoint" : "Endpoint WebDAV",
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Não foi possível verificar se o seu servidor web está configurado corretamente para permitir a sincronização de arquivos via WebDAV. Verifique manualmente.",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Seu servidor web ainda não está configurado corretamente para permitir a sincronização de arquivos, porque a interface do WebDAV parece estar quebrada.",
@@ -264,16 +264,16 @@
"WebDAV" : "WebDAV",
"Absence saved" : "Ausência salva",
"Failed to save your absence settings" : "Falha ao salvar suas configurações de ausência",
"Absence cleared" : "Ausência apagada",
"Absence cleared" : "Limpou a ausência",
"Failed to clear your absence settings" : "Falha ao limpar suas configurações de ausência",
"First day" : "Primeiro dia",
"Last day (inclusive)" : "Último dia (inclusive)",
"Out of office replacement (optional)" : "Substituição fora do escritório (opcional)",
"Out of office replacement (optional)" : "Substituto durante sua ausência (opcional)",
"Name of the replacement" : "Nome do substituto",
"No results." : "Nenhum resultado.",
"Start typing." : "Comece a digitar.",
"Short absence status" : "Status para ausência breve",
"Long absence Message" : "Mensagem longa de ausência",
"Short absence status" : "Status curto sobre a ausência",
"Long absence Message" : "Mensagem longa sobre a ausência",
"Save" : "Salvar",
"Disable absence" : "Desativar ausência",
"Failed to load availability" : "Falha ao carregar a disponibilidade",
@@ -301,18 +301,18 @@
"Hence they will not be available immediately after enabling but will show up after some time." : "Portanto, eles não estarão disponíveis imediatamente após a ativação, mas depois de algum tempo.",
"Send notifications for events" : "Enviar notificações para eventos",
"Notifications are sent via background jobs, so these must occur often enough." : "As notificações são enviadas via trabalhos em segundo plano, portanto, elas devem ocorrer com frequência suficiente.",
"Send reminder notifications to calendar sharees as well" : "Envie notificações de lembrete para compartilhamentos de calendário também",
"Reminders are always sent to organizers and attendees." : "Os lembretes são sempre enviados aos organizadores e participantes.",
"Send reminder notifications to calendar sharees as well" : "Enviar notificações de lembrete também para os compartilhadores de calendário",
"Reminders are always sent to organizers and attendees." : "Lembretes são sempre enviados aos organizadores e participantes.",
"Enable notifications for events via push" : "Ativar notificações para eventos via push",
"Cancel" : "Cancelar",
"Import" : "Importar",
"Error while saving settings" : "Error while saving settings",
"Error while saving settings" : "Erro ao salvar as configurações",
"Contact reset successfully" : "O contato foi reiniciado com sucesso",
"Error while resetting contact" : "Erro ao reiniciar o contato",
"Contact imported successfully" : "O contato foi importado com sucesso",
"Error while importing contact" : "Erro ao importar o contato",
"Example Content" : "Conteúdo de Exemplo",
"Set example content to be created on new user first login." : "Defina o conteúdo de exemplo a ser criado no primeiro login do novo usuário.",
"Example Content" : "Exemplo de Conteúdo",
"Set example content to be created on new user first login." : "Defina o exemplo de conteúdo a ser criado no primeiro login do novo usuário.",
"Import contact" : "Importar contato",
"Reset to default contact" : "Redefinir para o contato padrão",
"Import contacts" : "Importar contatos",
@@ -323,8 +323,8 @@
"Tentative" : "Tentativa",
"Your attendance was updated successfully." : "Sua presença foi atualizada com sucesso.",
"Time:" : "Horário:",
"Could not open file" : "Não pode abrir o arquivo",
"Invalid chunk name" : "Nome do bloco inválido",
"Could not rename part file assembled from chunks" : "Não foi possível renomear parte do arquivo montado a partir de pedaços"
"Could not open file" : "Não foi possível abrir o arquivo",
"Invalid chunk name" : "Nome de pedaço inválido",
"Could not rename part file assembled from chunks" : "Não foi possível renomear o arquivo de peça montado a partir de pedaços"
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

Some files were not shown because too many files have changed in this diff Show More