Compare commits

...

262 Commits

Author SHA1 Message Date
Côme Chilliet 41df2668f2 feat: Add preload.php script for opcache preloading
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-04-29 10:19:09 +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
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 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
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
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
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
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
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
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
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
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
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
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
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
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
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 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
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
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
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
861 changed files with 9525 additions and 5242 deletions
+135 -226
View File
@@ -1,233 +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: 20
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
open-pull-requests-limit: 20
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
open-pull-requests-limit: 20
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
open-pull-requests-limit: 20
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: "/"
@@ -244,3 +19,137 @@ updates:
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"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
# 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"
reviewers:
- "nextcloud/server-dependabot"
# 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"
reviewers:
- "nextcloud/server-dependabot"
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"
reviewers:
- "nextcloud/server-dependabot"
# 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"
reviewers:
- "nextcloud/server-dependabot"
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"
reviewers:
- "nextcloud/server-dependabot"
# 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"]
+3 -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
+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
+2 -2
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 }}
@@ -110,7 +110,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 }}
+2 -2
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
@@ -100,7 +100,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.2
with:
files: ./clover.xml
flags: phpunit-files-external-ftp
+4 -4
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
@@ -98,7 +98,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.2
with:
files: ./clover.xml
flags: phpunit-files-external-s3
@@ -140,7 +140,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
@@ -165,7 +165,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.2
with:
files: ./clover.xml
flags: phpunit-files-external-s3
+2 -2
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
@@ -89,7 +89,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.2
with:
files: ./clover.xml
flags: phpunit-files-external-sftp
+2 -2
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
@@ -94,7 +94,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v4.1.1
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v4.1.1
with:
files: ./clover.xml
flags: phpunit-files-external-smb
+2 -2
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
@@ -91,7 +91,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v4.1.1
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v4.1.1
with:
files: ./clover.xml
flags: phpunit-files-external-webdav
+2 -2
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
@@ -79,7 +79,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.2
with:
files: ./clover.xml
flags: phpunit-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 }}
+4 -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,7 +99,7 @@ jobs:
run: npm run test:coverage --if-present
- name: Collect coverage
uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v4.3.1
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v4.3.1
with:
files: ./coverage/lcov.info
@@ -117,7 +117,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 +145,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'
+2 -2
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
@@ -105,7 +105,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.2
with:
files: ./clover.xml
flags: phpunit-azure
+2 -2
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
@@ -111,7 +111,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.2
with:
files: ./clover.xml
flags: phpunit-s3
+2 -2
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
@@ -101,7 +101,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.2
with:
files: ./clover.xml
flags: phpunit-swift
+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
+2 -2
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
@@ -124,7 +124,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.2
with:
files: ./clover.db.xml
flags: phpunit-mariadb
+2 -2
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,7 +101,7 @@ jobs:
- name: Upload code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.2
with:
files: ./clover.xml
flags: phpunit-memcached
+2 -2
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
@@ -159,7 +159,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.2
with:
files: ./clover.db.xml
flags: phpunit-mysql
+2 -2
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
@@ -124,7 +124,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.2
with:
files: ./clover.db.xml
flags: phpunit-mysql
+2 -2
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
@@ -107,7 +107,7 @@ jobs:
- name: Upload nodb code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.2
with:
files: ./clover.nodb.xml
flags: phpunit-nodb
@@ -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
+2 -2
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
@@ -129,7 +129,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.2
with:
files: ./clover.db.xml
flags: phpunit-oci
+2 -2
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
@@ -119,7 +119,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.2
with:
files: ./clover.db.xml
flags: phpunit-postgres
+2 -2
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
@@ -105,7 +105,7 @@ jobs:
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v5.4.0
uses: codecov/codecov-action@v5.4.2
with:
files: ./clover.db.xml
flags: phpunit-sqlite
+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
+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>
+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);"
}
-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 -1
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;
@@ -110,6 +111,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);
@@ -220,7 +222,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']
);
}
}
+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);
+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);"
}
+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?",
+5 -5
View File
@@ -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,7 +273,7 @@ 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",
"Start typing." : "Mit dem Schreiben beginnen.",
"Short absence status" : "Kurze Abwesenheits Meldung",
"Long absence Message" : "Lange Abwesenheits Meldung",
"Save" : "Speichern",
+5 -5
View File
@@ -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,7 +271,7 @@
"Out of office replacement (optional)" : "Abwesenheitsvertretung (optional)",
"Name of the replacement" : "Name der Vertretung",
"No results." : "Keine Ergebnisse",
"Start typing." : "Beginne mit Schreiben",
"Start typing." : "Mit dem Schreiben beginnen.",
"Short absence status" : "Kurze Abwesenheits Meldung",
"Long absence Message" : "Lange Abwesenheits Meldung",
"Save" : "Speichern",
+134 -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,153 @@ 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",
"When:" : "Millal:",
"Location:" : "Asukoht:",
"Link:" : "Link:",
"Accept" : "Nõustu",
"Decline" : "Keeldu",
"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",
"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",
"System is in maintenance mode." : "Server on hooldusrežiimis.",
"Upgrade needed" : "Uuendus on vajalik",
"Configures a CalDAV account" : "Seadistab CalDAV-i kasutajakonto",
"Configures a CardDAV account" : "Seadistab CardDAV-i kasutajakonto",
"Events" : "Sündmused",
"Untitled task" : "Ilma nimeta pealkiri",
"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)",
"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",
"Availability" : "Saadavus",
"Absence" : "Äraolek",
"Configure your next absence period." : "Seadista järgmise äraoleku ajavahemik.",
"Send invitations to attendees" : "Saada osalejatele kutsed",
"Hello %s," : "Tere %s,",
"When:" : "Millal:"
"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);");
+134 -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,153 @@
"{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",
"When:" : "Millal:",
"Location:" : "Asukoht:",
"Link:" : "Link:",
"Accept" : "Nõustu",
"Decline" : "Keeldu",
"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",
"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",
"System is in maintenance mode." : "Server on hooldusrežiimis.",
"Upgrade needed" : "Uuendus on vajalik",
"Configures a CalDAV account" : "Seadistab CalDAV-i kasutajakonto",
"Configures a CardDAV account" : "Seadistab CardDAV-i kasutajakonto",
"Events" : "Sündmused",
"Untitled task" : "Ilma nimeta pealkiri",
"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)",
"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",
"Availability" : "Saadavus",
"Absence" : "Äraolek",
"Configure your next absence period." : "Seadista järgmise äraoleku ajavahemik.",
"Send invitations to attendees" : "Saada osalejatele kutsed",
"Hello %s," : "Tere %s,",
"When:" : "Millal:"
"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 ?",
+3 -3
View File
@@ -270,7 +270,7 @@ OC.L10N.register(
"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.",
@@ -303,8 +303,8 @@ 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",
+3 -3
View File
@@ -268,7 +268,7 @@
"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.",
@@ -301,8 +301,8 @@
"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",
+10
View File
@@ -309,6 +309,16 @@ OC.L10N.register(
"Cancel" : "Zrušiť",
"Import" : "Import",
"Error while saving settings" : "Chyba pri ukladaní nastavení",
"Contact reset successfully" : "Kontakt bol úspešne resetovaný",
"Error while resetting contact" : "Chyba počas resetovania kontaktu ",
"Contact imported successfully" : "Kontakt bol úspešne importovaný",
"Error while importing contact" : "Chyba pri importovaní kontaktu",
"Example Content" : "Príklad Obsahu",
"Set example content to be created on new user first login." : "Nastavte vzorový obsah, ktorý sa vytvorí pri prvom prihlásení nového používateľa.",
"Import contact" : "Importovať kontakt",
"Reset to default contact" : "Resetovať na predvolený kontakt",
"Import contacts" : "Importovať kontakty",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Importovaním nového súboru .vcf sa vymaže existujúci predvolený kontakt a nahradí sa novým. Chcete pokračovať?",
"There was an error updating your attendance status." : "Nastal problém pri aktualizácii Vašej účasti.",
"Please contact the organizer directly." : "Prosím kontaktujte priamo organizátora.",
"Are you accepting the invitation?" : "Príjmate pozvánku?",
+10
View File
@@ -307,6 +307,16 @@
"Cancel" : "Zrušiť",
"Import" : "Import",
"Error while saving settings" : "Chyba pri ukladaní nastavení",
"Contact reset successfully" : "Kontakt bol úspešne resetovaný",
"Error while resetting contact" : "Chyba počas resetovania kontaktu ",
"Contact imported successfully" : "Kontakt bol úspešne importovaný",
"Error while importing contact" : "Chyba pri importovaní kontaktu",
"Example Content" : "Príklad Obsahu",
"Set example content to be created on new user first login." : "Nastavte vzorový obsah, ktorý sa vytvorí pri prvom prihlásení nového používateľa.",
"Import contact" : "Importovať kontakt",
"Reset to default contact" : "Resetovať na predvolený kontakt",
"Import contacts" : "Importovať kontakty",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Importovaním nového súboru .vcf sa vymaže existujúci predvolený kontakt a nahradí sa novým. Chcete pokračovať?",
"There was an error updating your attendance status." : "Nastal problém pri aktualizácii Vašej účasti.",
"Please contact the organizer directly." : "Prosím kontaktujte priamo organizátora.",
"Are you accepting the invitation?" : "Príjmate pozvánku?",
+13
View File
@@ -250,6 +250,9 @@ OC.L10N.register(
"Completed on %s" : "%s tarihinde tamamlandı",
"Due on %s by %s" : "%s tarihine kadar %s tarafından",
"Due on %s" : "%s tarihine kadar",
"System Address Book" : "Sistem adres defteri",
"The system address book contains contact information for all users in your instance." : "Sistem adres defterinde, kopyanızdaki tüm kullanıcıların iletişim bilgileri bulunur.",
"Enable System Address Book" : "Sistem adres defteri kullanılsın",
"DAV system address book" : "DAV sistem adres defteri",
"No outstanding DAV system address book sync." : "Bekleyen bir DAV sistemi adres defteri eşitlemesi yok.",
"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\"." : "Kopyanızda 1000 üzerinde kullanıcı olduğundan ya da bir sorun çıktığından DAV sistemi adres defteri eşitlemesi henüz yapılmamış. Lütfen \"occ dav:sync-system-addressbook\" komutunu yürüterek el ile eşitleyin.",
@@ -306,6 +309,16 @@ OC.L10N.register(
"Cancel" : "İptal",
"Import" : "İçe aktar",
"Error while saving settings" : "Ayarlar kaydedilirken sorun çıktı",
"Contact reset successfully" : "Kişi sıfırlandı",
"Error while resetting contact" : "Kişi sıfırlanırken sorun çıktı",
"Contact imported successfully" : "Kişi içe aktarıldı",
"Error while importing contact" : "Kişi içe aktarılırken sorun çıktı",
"Example Content" : "Örnek içerik",
"Set example content to be created on new user first login." : "Yeni kullanıcının ilk oturum açmasında oluşturulacak örnek içeriği ayarlayın.",
"Import contact" : "Kişiyi içe aktar",
"Reset to default contact" : "Varsayılan kişiye sıfırla",
"Import contacts" : "Kişileri içe aktar",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Yeni bir .vcf dosyasını içe aktarmak, var olan varsayılan kişiyi siler ve yenisiyle değiştirir. İlerlemek istiyor musunuz?",
"There was an error updating your attendance status." : "Katılım durumunuz güncellenirken bir sorun çıktı.",
"Please contact the organizer directly." : "Lütfen düzenleyici ile doğrudan görüşün.",
"Are you accepting the invitation?" : "Daveti kabul ediyor musunuz?",
+13
View File
@@ -248,6 +248,9 @@
"Completed on %s" : "%s tarihinde tamamlandı",
"Due on %s by %s" : "%s tarihine kadar %s tarafından",
"Due on %s" : "%s tarihine kadar",
"System Address Book" : "Sistem adres defteri",
"The system address book contains contact information for all users in your instance." : "Sistem adres defterinde, kopyanızdaki tüm kullanıcıların iletişim bilgileri bulunur.",
"Enable System Address Book" : "Sistem adres defteri kullanılsın",
"DAV system address book" : "DAV sistem adres defteri",
"No outstanding DAV system address book sync." : "Bekleyen bir DAV sistemi adres defteri eşitlemesi yok.",
"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\"." : "Kopyanızda 1000 üzerinde kullanıcı olduğundan ya da bir sorun çıktığından DAV sistemi adres defteri eşitlemesi henüz yapılmamış. Lütfen \"occ dav:sync-system-addressbook\" komutunu yürüterek el ile eşitleyin.",
@@ -304,6 +307,16 @@
"Cancel" : "İptal",
"Import" : "İçe aktar",
"Error while saving settings" : "Ayarlar kaydedilirken sorun çıktı",
"Contact reset successfully" : "Kişi sıfırlandı",
"Error while resetting contact" : "Kişi sıfırlanırken sorun çıktı",
"Contact imported successfully" : "Kişi içe aktarıldı",
"Error while importing contact" : "Kişi içe aktarılırken sorun çıktı",
"Example Content" : "Örnek içerik",
"Set example content to be created on new user first login." : "Yeni kullanıcının ilk oturum açmasında oluşturulacak örnek içeriği ayarlayın.",
"Import contact" : "Kişiyi içe aktar",
"Reset to default contact" : "Varsayılan kişiye sıfırla",
"Import contacts" : "Kişileri içe aktar",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Yeni bir .vcf dosyasını içe aktarmak, var olan varsayılan kişiyi siler ve yenisiyle değiştirir. İlerlemek istiyor musunuz?",
"There was an error updating your attendance status." : "Katılım durumunuz güncellenirken bir sorun çıktı.",
"Please contact the organizer directly." : "Lütfen düzenleyici ile doğrudan görüşün.",
"Are you accepting the invitation?" : "Daveti kabul ediyor musunuz?",
+8
View File
@@ -72,6 +72,7 @@ OC.L10N.register(
"Description: %s" : "Опис: %s",
"Where: %s" : "Місце: %s",
"%1$s via %2$s" : "%1$s через %2$s",
"In the past on %1$s for the entire day" : "Раніше у %1$s протягом цілого дня",
"Could not generate when statement" : "Не вдалося створити оператор \"коли\"",
"Every Day for the entire day" : "Щодня впродовж усього дня",
"Every Day for the entire day until %1$s" : "Щодня впродовж усього дня до %1$s",
@@ -108,6 +109,8 @@ OC.L10N.register(
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Що %1$d роки в %2$s, %3$s, між %4$s - %5$s до %6$s",
"On specific dates for the entire day until %1$s" : "У визначені дати впродовж усього дня до %1$s",
"On specific dates between %1$s - %2$s until %3$s" : "У визначені дати між %1$s - %2$s до %3$s",
"In the past on %1$s" : "Раніше у %1$s",
"In the past on %1$s then on %2$s" : "Раніше у %1$s, потім у %2$s",
"Could not generate next recurrence statement" : "Не вдалося створити оператор наступного повторення",
"Cancelled: %1$s" : "Скасовано: %1$s",
"\"%1$s\" has been canceled" : "\"%1$s\" скасовано",
@@ -154,10 +157,12 @@ OC.L10N.register(
"Second" : "Другий",
"Third" : "Третій",
"Fourth" : "Четвертий",
"Fifth" : "П'ятий",
"Last" : "Останній",
"Second Last" : "Другий(-а) останній(-я)",
"Third Last" : "Третій(-я) останній(-я)",
"Fourth Last" : "Четвертий(-а) останній(-я)",
"Fifth Last" : "Останній п'ятий",
"Contacts" : "Контакти",
"{actor} created address book {addressbook}" : "{actor} створив(-ла) адресну книгу {addressbook}",
"You created address book {addressbook}" : "Ви створили адресну книгу {addressbook}",
@@ -272,6 +277,9 @@ OC.L10N.register(
"Cancel" : "Скасувати",
"Import" : "Імпорт",
"Error while saving settings" : "Помилка під час збереження налаштувань",
"Import contact" : "Імпортувати контакт",
"Reset to default contact" : "Скинути то типового контакту",
"Import contacts" : "Імпортувати контакти",
"There was an error updating your attendance status." : "Виникла помилка при оновленні вашого статусу учасника.",
"Please contact the organizer directly." : "Будь-ласка повідомте організатора.",
"Are you accepting the invitation?" : "Чи приймаєте ви запрошення?",
+8
View File
@@ -70,6 +70,7 @@
"Description: %s" : "Опис: %s",
"Where: %s" : "Місце: %s",
"%1$s via %2$s" : "%1$s через %2$s",
"In the past on %1$s for the entire day" : "Раніше у %1$s протягом цілого дня",
"Could not generate when statement" : "Не вдалося створити оператор \"коли\"",
"Every Day for the entire day" : "Щодня впродовж усього дня",
"Every Day for the entire day until %1$s" : "Щодня впродовж усього дня до %1$s",
@@ -106,6 +107,8 @@
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Що %1$d роки в %2$s, %3$s, між %4$s - %5$s до %6$s",
"On specific dates for the entire day until %1$s" : "У визначені дати впродовж усього дня до %1$s",
"On specific dates between %1$s - %2$s until %3$s" : "У визначені дати між %1$s - %2$s до %3$s",
"In the past on %1$s" : "Раніше у %1$s",
"In the past on %1$s then on %2$s" : "Раніше у %1$s, потім у %2$s",
"Could not generate next recurrence statement" : "Не вдалося створити оператор наступного повторення",
"Cancelled: %1$s" : "Скасовано: %1$s",
"\"%1$s\" has been canceled" : "\"%1$s\" скасовано",
@@ -152,10 +155,12 @@
"Second" : "Другий",
"Third" : "Третій",
"Fourth" : "Четвертий",
"Fifth" : "П'ятий",
"Last" : "Останній",
"Second Last" : "Другий(-а) останній(-я)",
"Third Last" : "Третій(-я) останній(-я)",
"Fourth Last" : "Четвертий(-а) останній(-я)",
"Fifth Last" : "Останній п'ятий",
"Contacts" : "Контакти",
"{actor} created address book {addressbook}" : "{actor} створив(-ла) адресну книгу {addressbook}",
"You created address book {addressbook}" : "Ви створили адресну книгу {addressbook}",
@@ -270,6 +275,9 @@
"Cancel" : "Скасувати",
"Import" : "Імпорт",
"Error while saving settings" : "Помилка під час збереження налаштувань",
"Import contact" : "Імпортувати контакт",
"Reset to default contact" : "Скинути то типового контакту",
"Import contacts" : "Імпортувати контакти",
"There was an error updating your attendance status." : "Виникла помилка при оновленні вашого статусу учасника.",
"Please contact the organizer directly." : "Будь-ласка повідомте організатора.",
"Are you accepting the invitation?" : "Чи приймаєте ви запрошення?",
+1 -1
View File
@@ -289,7 +289,7 @@ OC.L10N.register(
"Weekdays" : "工作日",
"Pick a start time for {dayName}" : "选择 {dayName} 的开始时间",
"Pick a end time for {dayName}" : "选择 {dayName} 的结束时间",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "不在工作时间内时,自动将用户状态设置为“请勿打扰”并静音所有通知。",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "不在工作时间内时,自动将用户状态设置为“扰”并静音所有通知。",
"Availability" : "工作时间",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "如果你配置了工作时间,其他人在预订会议时会看到你何时不在办公室。",
"Absence" : "离开",
+1 -1
View File
@@ -287,7 +287,7 @@
"Weekdays" : "工作日",
"Pick a start time for {dayName}" : "选择 {dayName} 的开始时间",
"Pick a end time for {dayName}" : "选择 {dayName} 的结束时间",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "不在工作时间内时,自动将用户状态设置为“请勿打扰”并静音所有通知。",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "不在工作时间内时,自动将用户状态设置为“扰”并静音所有通知。",
"Availability" : "工作时间",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "如果你配置了工作时间,其他人在预订会议时会看到你何时不在办公室。",
"Absence" : "离开",
+4 -31
View File
@@ -9,7 +9,6 @@ declare(strict_types=1);
*/
namespace OCA\DAV\AppInfo;
use OCA\DAV\CalDAV\Activity\Backend;
use OCA\DAV\CalDAV\AppCalendar\AppCalendarPlugin;
use OCA\DAV\CalDAV\CachedSubscriptionProvider;
use OCA\DAV\CalDAV\CalendarManager;
@@ -82,7 +81,6 @@ use OCP\Config\BeforePreferenceDeletedEvent;
use OCP\Config\BeforePreferenceSetEvent;
use OCP\Contacts\IManager as IContactsManager;
use OCP\DB\Events\AddMissingIndicesEvent;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Federation\Events\TrustedServerRemovedEvent;
use OCP\Files\AppData\IAppDataFactory;
use OCP\IUserSession;
@@ -205,6 +203,7 @@ class Application extends App implements IBootstrap {
$context->registerEventListener(UserDeletedEvent::class, UserEventsListener::class);
$context->registerEventListener(UserCreatedEvent::class, UserEventsListener::class);
$context->registerEventListener(UserChangedEvent::class, UserEventsListener::class);
$context->registerEventListener(UserUpdatedEvent::class, UserEventsListener::class);
$context->registerNotifierService(Notifier::class);
@@ -228,35 +227,9 @@ class Application extends App implements IBootstrap {
// Load all dav apps
\OC_App::loadApps(['dav']);
$context->injectFn([$this, 'registerHooks']);
$context->injectFn([$this, 'registerContactsManager']);
$context->injectFn([$this, 'registerCalendarManager']);
$context->injectFn([$this, 'registerCalendarReminders']);
}
public function registerHooks(
IEventDispatcher $dispatcher,
IAppContainer $container,
): void {
$dispatcher->addListener(UserUpdatedEvent::class, function (UserUpdatedEvent $event) use ($container): void {
/** @var SyncService $syncService */
$syncService = Server::get(SyncService::class);
$syncService->updateUser($event->getUser());
});
$dispatcher->addListener(CalendarShareUpdatedEvent::class, function (CalendarShareUpdatedEvent $event) use ($container): void {
/** @var Backend $backend */
$backend = $container->query(Backend::class);
$backend->onCalendarUpdateShares(
$event->getCalendarData(),
$event->getOldShares(),
$event->getAdded(),
$event->getRemoved()
);
// Here we should recalculate if reminders should be sent to new or old sharees
});
$context->injectFn($this->registerContactsManager(...));
$context->injectFn($this->registerCalendarManager(...));
$context->injectFn($this->registerCalendarReminders(...));
}
public function registerContactsManager(IContactsManager $cm, IAppContainer $container): void {
@@ -134,7 +134,10 @@ class MultipartRequestParser {
$headers = $this->readPartHeaders();
$content = $this->readPartContent((int)$headers['content-length'], $headers['x-file-md5']);
$length = (int)$headers['content-length'];
$this->validateHash($length, $headers['x-file-md5'] ?? '', $headers['oc-checksum'] ?? '');
$content = $this->readPartContent($length);
return [$headers, $content];
}
@@ -184,8 +187,9 @@ class MultipartRequestParser {
throw new LengthRequired('The Content-Length header must not be null.');
}
if (!isset($headers['x-file-md5'])) {
throw new BadRequest('The X-File-MD5 header must not be null.');
// TODO: Drop $md5 condition when the latest desktop client that uses it is no longer supported.
if (!isset($headers['x-file-md5']) && !isset($headers['oc-checksum'])) {
throw new BadRequest('The hash headers must not be null.');
}
return $headers;
@@ -197,13 +201,7 @@ class MultipartRequestParser {
* @throws Exception
* @throws BadRequest
*/
private function readPartContent(int $length, string $md5): string {
$computedMd5 = $this->computeMd5Hash($length);
if ($md5 !== $computedMd5) {
throw new BadRequest('Computed md5 hash is incorrect.');
}
private function readPartContent(int $length): string {
if ($length === 0) {
$content = '';
} else {
@@ -225,12 +223,25 @@ class MultipartRequestParser {
}
/**
* Compute the MD5 hash of the next x bytes.
* Compute the MD5 or checksum hash of the next x bytes.
* TODO: Drop $md5 argument when the latest desktop client that uses it is no longer supported.
*/
private function computeMd5Hash(int $length): string {
$context = hash_init('md5');
private function validateHash(int $length, string $fileMd5Header, string $checksumHeader): void {
if ($checksumHeader !== '') {
[$algorithm, $hash] = explode(':', $checksumHeader, 2);
} elseif ($fileMd5Header !== '') {
$algorithm = 'md5';
$hash = $fileMd5Header;
} else {
throw new BadRequest('No hash provided.');
}
$context = hash_init($algorithm);
hash_update_stream($context, $this->stream, $length);
fseek($this->stream, -$length, SEEK_CUR);
return hash_final($context);
$computedHash = hash_final($context);
if ($hash !== $computedHash) {
throw new BadRequest("Computed $algorithm hash is incorrect ($computedHash).");
}
}
}
+1 -1
View File
@@ -261,7 +261,7 @@ class Plugin extends \Sabre\CalDAV\Schedule\Plugin {
$principalUri = $aclPlugin->getPrincipalByUri($iTipMessage->recipient);
$calendarUserType = $this->getCalendarUserTypeForPrincipal($principalUri);
if (strcasecmp($calendarUserType, 'ROOM') !== 0 && strcasecmp($calendarUserType, 'RESOURCE') !== 0) {
$this->logger->debug('Calendar user type is room or resource, not processing further');
$this->logger->debug('Calendar user type is neither room nor resource, not processing further');
return;
}
+34 -34
View File
@@ -129,8 +129,9 @@ class File extends Node implements IFile {
$view = Filesystem::getView();
if ($needsPartFile) {
$transferId = \rand();
// mark file as partial while uploading (ignored by the scanner)
$partFilePath = $this->getPartFileBasePath($this->path) . '.ocTransferId' . rand() . '.part';
$partFilePath = $this->getPartFileBasePath($this->path) . '.ocTransferId' . $transferId . '.part';
if (!$view->isCreatable($partFilePath) && $view->isUpdatable($this->path)) {
$needsPartFile = false;
@@ -232,42 +233,36 @@ class File extends Node implements IFile {
fclose($target);
}
if ($result === false) {
$expected = -1;
$lengthHeader = $this->request->getHeader('content-length');
if ($lengthHeader) {
$expected = (int)$lengthHeader;
}
if ($expected !== 0) {
throw new Exception(
$this->l10n->t(
'Error while copying file to target location (copied: %1$s, expected filesize: %2$s)',
[
$this->l10n->n('%n byte', '%n bytes', $count),
$this->l10n->n('%n byte', '%n bytes', $expected),
],
)
);
}
$lengthHeader = $this->request->getHeader('content-length');
$expected = $lengthHeader !== '' ? (int)$lengthHeader : -1;
if ($result === false && $expected >= 0) {
throw new Exception(
$this->l10n->t(
'Error while copying file to target location (copied: %1$s, expected filesize: %2$s)',
[
$this->l10n->n('%n byte', '%n bytes', $count),
$this->l10n->n('%n byte', '%n bytes', $expected),
],
)
);
}
// if content length is sent by client:
// double check if the file was fully received
// compare expected and actual size
$lengthHeader = $this->request->getHeader('content-length');
if ($lengthHeader && $this->request->getMethod() === 'PUT') {
$expected = (int)$lengthHeader;
if ($count !== $expected) {
throw new BadRequest(
$this->l10n->t(
'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.',
[
$this->l10n->n('%n byte', '%n bytes', $expected),
$this->l10n->n('%n byte', '%n bytes', $count),
],
)
);
}
if ($expected >= 0
&& $expected !== $count
&& $this->request->getMethod() === 'PUT'
) {
throw new BadRequest(
$this->l10n->t(
'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.',
[
$this->l10n->n('%n byte', '%n bytes', $expected),
$this->l10n->n('%n byte', '%n bytes', $count),
],
)
);
}
} catch (\Exception $e) {
if ($e instanceof LockedException) {
@@ -383,9 +378,14 @@ class File extends Node implements IFile {
private function getPartFileBasePath($path) {
$partFileInStorage = Server::get(IConfig::class)->getSystemValue('part_file_in_storage', true);
if ($partFileInStorage) {
return $path;
$filename = basename($path);
// hash does not need to be secure but fast and semi unique
$hashedFilename = hash('xxh128', $filename);
return substr($path, 0, strlen($path) - strlen($filename)) . $hashedFilename;
} else {
return md5($path); // will place it in the root of the view with a unique name
// will place the .part file in the users root directory
// therefor we need to make the name (semi) unique - hash does not need to be secure but fast.
return hash('xxh128', $path);
}
}
+15 -2
View File
@@ -15,6 +15,7 @@ use OCP\Constants;
use OCP\Files\ForbiddenException;
use OCP\Files\IFilenameValidator;
use OCP\Files\InvalidPathException;
use OCP\Files\Storage\ISharedStorage;
use OCP\Files\StorageNotAvailableException;
use OCP\FilesMetadata\Exceptions\FilesMetadataException;
use OCP\FilesMetadata\Exceptions\FilesMetadataNotFoundException;
@@ -64,6 +65,7 @@ class FilesPlugin extends ServerPlugin {
public const UPLOAD_TIME_PROPERTYNAME = '{http://nextcloud.org/ns}upload_time';
public const CREATION_TIME_PROPERTYNAME = '{http://nextcloud.org/ns}creation_time';
public const SHARE_NOTE = '{http://nextcloud.org/ns}note';
public const SHARE_HIDE_DOWNLOAD_PROPERTYNAME = '{http://nextcloud.org/ns}hide-download';
public const SUBFOLDER_COUNT_PROPERTYNAME = '{http://nextcloud.org/ns}contained-folder-count';
public const SUBFILE_COUNT_PROPERTYNAME = '{http://nextcloud.org/ns}contained-file-count';
public const FILE_METADATA_PREFIX = '{http://nextcloud.org/ns}metadata-';
@@ -391,6 +393,19 @@ class FilesPlugin extends ServerPlugin {
);
});
$propFind->handle(self::SHARE_HIDE_DOWNLOAD_PROPERTYNAME, function () use ($node) {
$storage = $node->getNode()->getStorage();
if ($storage->instanceOfStorage(ISharedStorage::class)) {
/** @var ISharedStorage $storage */
return match($storage->getShare()->getHideDownload()) {
true => 'true',
false => 'false',
};
} else {
return null;
}
});
$propFind->handle(self::DATA_FINGERPRINT_PROPERTYNAME, function () {
return $this->config->getSystemValue('data-fingerprint', '');
});
@@ -678,8 +693,6 @@ class FilesPlugin extends ServerPlugin {
return IMetadataValueWrapper::EDIT_REQ_READ_PERMISSION;
}
/**
* @param string $filePath
* @param ?\Sabre\DAV\INode $node
@@ -39,5 +39,7 @@ class CalendarShareUpdateListener implements IEventListener {
$event->getAdded(),
$event->getRemoved()
);
// Here we should recalculate if reminders should be sent to new or old sharees
}
}
+8 -1
View File
@@ -13,6 +13,7 @@ use OCA\DAV\CalDAV\CalDavBackend;
use OCA\DAV\CardDAV\CardDavBackend;
use OCA\DAV\CardDAV\SyncService;
use OCA\DAV\Service\DefaultContactService;
use OCP\Accounts\UserUpdatedEvent;
use OCP\Defaults;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
@@ -29,7 +30,7 @@ use OCP\User\Events\UserIdAssignedEvent;
use OCP\User\Events\UserIdUnassignedEvent;
use Psr\Log\LoggerInterface;
/** @template-implements IEventListener<UserFirstTimeLoggedInEvent|UserIdAssignedEvent|BeforeUserIdUnassignedEvent|UserIdUnassignedEvent|BeforeUserDeletedEvent|UserDeletedEvent|UserCreatedEvent|UserChangedEvent> */
/** @template-implements IEventListener<UserFirstTimeLoggedInEvent|UserIdAssignedEvent|BeforeUserIdUnassignedEvent|UserIdUnassignedEvent|BeforeUserDeletedEvent|UserDeletedEvent|UserCreatedEvent|UserChangedEvent|UserUpdatedEvent> */
class UserEventsListener implements IEventListener {
/** @var IUser[] */
@@ -69,6 +70,8 @@ class UserEventsListener implements IEventListener {
$this->changeUser($event->getUser(), $event->getFeature());
} elseif ($event instanceof UserFirstTimeLoggedInEvent) {
$this->firstLogin($event->getUser());
} elseif ($event instanceof UserUpdatedEvent) {
$this->updateUser($event->getUser());
}
}
@@ -76,6 +79,10 @@ class UserEventsListener implements IEventListener {
$this->syncService->updateUser($user);
}
public function updateUser(IUser $user): void {
$this->syncService->updateUser($user);
}
public function preDeleteUser(IUser $user): void {
$uid = $user->getUID();
$userPrincipalUri = 'principals/users/' . $uid;
@@ -28,7 +28,10 @@ class Version1004Date20170924124212 extends SimpleMigrationStep {
$table->addIndex(['addressbookid', 'uri'], 'cards_abiduri');
$table = $schema->getTable('cards_properties');
$table->addIndex(['addressbookid'], 'cards_prop_abid');
// Removed later on
// $table->addIndex(['addressbookid'], 'cards_prop_abid');
// Added later on
$table->addIndex(['addressbookid', 'name', 'value'], 'cards_prop_abid_name_value', );
return $schema;
}
@@ -9,9 +9,11 @@ declare(strict_types=1);
namespace OCA\DAV\Service;
use OCA\DAV\AppInfo\Application;
use OCA\DAV\CardDAV\CardDavBackend;
use OCP\App\IAppManager;
use OCP\Files\AppData\IAppDataFactory;
use OCP\IAppConfig;
use Psr\Log\LoggerInterface;
use Symfony\Component\Uid\Uuid;
@@ -20,11 +22,16 @@ class DefaultContactService {
private CardDavBackend $cardDav,
private IAppManager $appManager,
private IAppDataFactory $appDataFactory,
private IAppConfig $config,
private LoggerInterface $logger,
) {
}
public function createDefaultContact(int $addressBookId): void {
$enableDefaultContact = $this->config->getValueString(Application::APP_ID, 'enableDefaultContact', 'no');
if ($enableDefaultContact !== 'yes') {
return;
}
$appData = $this->appDataFactory->get('dav');
try {
$folder = $appData->getFolder('defaultContact');
@@ -7,12 +7,14 @@
namespace OCA\DAV\Tests\unit\DAV;
use OCA\DAV\BulkUpload\MultipartRequestParser;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Sabre\HTTP\RequestInterface;
use Test\TestCase;
class MultipartRequestParserTest extends TestCase {
protected LoggerInterface $logger;
protected LoggerInterface&MockObject $logger;
protected function setUp(): void {
$this->logger = $this->createMock(LoggerInterface::class);
@@ -24,6 +26,7 @@ class MultipartRequestParserTest extends TestCase {
'headers' => [
'Content-Length' => 7,
'X-File-MD5' => '4f2377b4d911f7ec46325fe603c3af03',
'OC-Checksum' => 'md5:4f2377b4d911f7ec46325fe603c3af03',
'X-File-Path' => '/coucou.txt'
],
'content' => "Coucou\n"
@@ -32,7 +35,8 @@ class MultipartRequestParserTest extends TestCase {
}
private function getMultipartParser(array $parts, array $headers = [], string $boundary = 'boundary_azertyuiop'): MultipartRequestParser {
$request = $this->getMockBuilder('Sabre\HTTP\RequestInterface')
/** @var RequestInterface&MockObject $request */
$request = $this->getMockBuilder(RequestInterface::class)
->disableOriginalConstructor()
->getMock();
@@ -74,7 +78,8 @@ class MultipartRequestParserTest extends TestCase {
*/
public function testBodyTypeValidation(): void {
$bodyStream = 'I am not a stream, but pretend to be';
$request = $this->getMockBuilder('Sabre\HTTP\RequestInterface')
/** @var RequestInterface&MockObject $request */
$request = $this->getMockBuilder(RequestInterface::class)
->disableOriginalConstructor()
->getMock();
$request->expects($this->any())
@@ -88,15 +93,39 @@ class MultipartRequestParserTest extends TestCase {
/**
* Test with valid request.
* - valid boundary
* - valid md5 hash
* - valid hash
* - valid content-length
* - valid file content
* - valid file path
*/
public function testValidRequest(): void {
$multipartParser = $this->getMultipartParser(
$this->getValidBodyObject()
);
$bodyObject = $this->getValidBodyObject();
unset($bodyObject['0']['headers']['X-File-MD5']);
$multipartParser = $this->getMultipartParser($bodyObject);
[$headers, $content] = $multipartParser->parseNextPart();
$this->assertSame((int)$headers['content-length'], 7, 'Content-Length header should be the same as provided.');
$this->assertSame($headers['oc-checksum'], 'md5:4f2377b4d911f7ec46325fe603c3af03', 'OC-Checksum header should be the same as provided.');
$this->assertSame($headers['x-file-path'], '/coucou.txt', 'X-File-Path header should be the same as provided.');
$this->assertSame($content, "Coucou\n", 'Content should be the same');
}
/**
* Test with valid request.
* - valid boundary
* - valid md5 hash
* - valid content-length
* - valid file content
* - valid file path
*/
public function testValidRequestWithMd5(): void {
$bodyObject = $this->getValidBodyObject();
unset($bodyObject['0']['headers']['OC-Checksum']);
$multipartParser = $this->getMultipartParser($bodyObject);
[$headers, $content] = $multipartParser->parseNextPart();
@@ -108,30 +137,47 @@ class MultipartRequestParserTest extends TestCase {
}
/**
* Test with invalid md5 hash.
* Test with invalid hash.
*/
public function testInvalidMd5Hash(): void {
$bodyObject = $this->getValidBodyObject();
$bodyObject['0']['headers']['X-File-MD5'] = 'f2377b4d911f7ec46325fe603c3af03';
$multipartParser = $this->getMultipartParser(
$bodyObject
);
$this->expectExceptionMessage('Computed md5 hash is incorrect.');
$multipartParser->parseNextPart();
}
/**
* Test with a null md5 hash.
*/
public function testNullMd5Hash(): void {
public function testInvalidHash(): void {
$bodyObject = $this->getValidBodyObject();
$bodyObject['0']['headers']['OC-Checksum'] = 'md5:f2377b4d911f7ec46325fe603c3af03';
unset($bodyObject['0']['headers']['X-File-MD5']);
$multipartParser = $this->getMultipartParser(
$bodyObject
);
$this->expectExceptionMessage('The X-File-MD5 header must not be null.');
$this->expectExceptionMessage('Computed md5 hash is incorrect (4f2377b4d911f7ec46325fe603c3af03).');
$multipartParser->parseNextPart();
}
/**
* Test with invalid md5 hash.
*/
public function testInvalidMd5Hash(): void {
$bodyObject = $this->getValidBodyObject();
unset($bodyObject['0']['headers']['OC-Checksum']);
$bodyObject['0']['headers']['X-File-MD5'] = 'f2377b4d911f7ec46325fe603c3af03';
$multipartParser = $this->getMultipartParser(
$bodyObject
);
$this->expectExceptionMessage('Computed md5 hash is incorrect (4f2377b4d911f7ec46325fe603c3af03).');
$multipartParser->parseNextPart();
}
/**
* Test with a null hash headers.
*/
public function testNullHash(): void {
$bodyObject = $this->getValidBodyObject();
unset($bodyObject['0']['headers']['OC-Checksum']);
unset($bodyObject['0']['headers']['X-File-MD5']);
$multipartParser = $this->getMultipartParser(
$bodyObject
);
$this->expectExceptionMessage('The hash headers must not be null.');
$multipartParser->parseNextPart();
}
@@ -159,7 +205,7 @@ class MultipartRequestParserTest extends TestCase {
$bodyObject
);
$this->expectExceptionMessage('Computed md5 hash is incorrect.');
$this->expectExceptionMessage('Computed md5 hash is incorrect (41060d3ddfdf63e68fc2bf196f652ee9).');
$multipartParser->parseNextPart();
}
@@ -173,7 +219,7 @@ class MultipartRequestParserTest extends TestCase {
$bodyObject
);
$this->expectExceptionMessage('Computed md5 hash is incorrect.');
$this->expectExceptionMessage('Computed md5 hash is incorrect (0161002bbee6a744f18741b8a914e413).');
$multipartParser->parseNextPart();
}
@@ -17,6 +17,7 @@ use OCP\Files\IAppData;
use OCP\Files\NotFoundException;
use OCP\Files\SimpleFS\ISimpleFile;
use OCP\Files\SimpleFS\ISimpleFolder;
use OCP\IAppConfig;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Symfony\Component\Uid\Uuid;
@@ -28,6 +29,7 @@ class DefaultContactServiceTest extends TestCase {
private MockObject|IAppManager $appManager;
private MockObject|IAppDataFactory $appDataFactory;
private MockObject|LoggerInterface $logger;
private MockObject|IAppConfig $config;
protected function setUp(): void {
parent::setUp();
@@ -36,19 +38,21 @@ class DefaultContactServiceTest extends TestCase {
$this->appManager = $this->createMock(IAppManager::class);
$this->appDataFactory = $this->createMock(IAppDataFactory::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->config = $this->createMock(IAppConfig::class);
$this->service = new DefaultContactService(
$this->cardDav,
$this->appManager,
$this->appDataFactory,
$this->logger
$this->config,
$this->logger,
);
}
public function testCreateDefaultContactWithInvalidCard(): void {
// Invalid vCard missing required FN property
$vcardContent = "BEGIN:VCARD\nVERSION:3.0\nEND:VCARD";
$this->config->method('getValueString')->willReturn('yes');
$appData = $this->createMock(IAppData::class);
$folder = $this->createMock(ISimpleFolder::class);
$file = $this->createMock(ISimpleFile::class);
@@ -72,6 +76,7 @@ class DefaultContactServiceTest extends TestCase {
$originalRev = '20200101T000000Z';
$vcardContent = "BEGIN:VCARD\nVERSION:3.0\nFN:Test User\nUID:$originalUid\nREV:$originalRev\nEND:VCARD";
$this->config->method('getValueString')->willReturn('yes');
$appData = $this->createMock(IAppData::class);
$folder = $this->createMock(ISimpleFolder::class);
$file = $this->createMock(ISimpleFile::class);
@@ -103,6 +108,7 @@ class DefaultContactServiceTest extends TestCase {
public function testDefaultContactFileDoesNotExist(): void {
$appData = $this->createMock(IAppData::class);
$this->config->method('getValueString')->willReturn('yes');
$appData->method('getFolder')->willThrowException(new NotFoundException());
$this->appDataFactory->method('get')->willReturn($appData);
@@ -115,6 +121,7 @@ class DefaultContactServiceTest extends TestCase {
public function testUidAndRevAreAddedIfMissing(): void {
$vcardContent = "BEGIN:VCARD\nVERSION:3.0\nFN:Test User\nEND:VCARD";
$this->config->method('getValueString')->willReturn('yes');
$appData = $this->createMock(IAppData::class);
$folder = $this->createMock(ISimpleFolder::class);
$file = $this->createMock(ISimpleFile::class);
@@ -145,4 +152,14 @@ class DefaultContactServiceTest extends TestCase {
$this->assertNotNull($vcard->UID);
$this->assertTrue(Uuid::isValid($vcard->UID->getValue()));
}
public function testDefaultContactIsNotCreatedIfEnabled(): void {
$this->config->method('getValueString')->willReturn('no');
$this->logger->expects($this->never())
->method('error');
$this->cardDav->expects($this->never())
->method('createCard');
$this->service->createDefaultContact(123);
}
}
+1
View File
@@ -53,6 +53,7 @@ OC.L10N.register(
"Basic encryption module" : "기본 암호화 모듈",
"Your private key password no longer matches your log-in password." : "개인 키 암호와 로그인 암호가 일치하지 않습니다.",
"Set your old private key password to your current log-in password:" : "기존 개인 키 암호를 로그인 암호와 동일하게 설정하십시오:",
"If you do not remember your old password you can ask your administrator to recover your files." : "기존 암호가 기억나지 않는다면 관리자에게 파일을 복구하도록 요청할 수 있습니다.",
"Old log-in password" : "이전 로그인 암호",
"Current log-in password" : "현재 로그인 암호",
"Update Private Key Password" : "개인 키 암호 업데이트",
+1
View File
@@ -51,6 +51,7 @@
"Basic encryption module" : "기본 암호화 모듈",
"Your private key password no longer matches your log-in password." : "개인 키 암호와 로그인 암호가 일치하지 않습니다.",
"Set your old private key password to your current log-in password:" : "기존 개인 키 암호를 로그인 암호와 동일하게 설정하십시오:",
"If you do not remember your old password you can ask your administrator to recover your files." : "기존 암호가 기억나지 않는다면 관리자에게 파일을 복구하도록 요청할 수 있습니다.",
"Old log-in password" : "이전 로그인 암호",
"Current log-in password" : "현재 로그인 암호",
"Update Private Key Password" : "개인 키 암호 업데이트",
+3
View File
@@ -28,6 +28,9 @@ OC.L10N.register(
"Bad Signature" : "签名已损坏",
"Missing Signature" : "签名已丢失",
"one-time password for server-side-encryption" : "用于服务端加密的一次性密码",
"Encryption password" : "加密密码",
"The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>." : "服务器端加密已启用,您的文件已经使用密码<strong>%s</strong>加密。",
"The administration enabled server-side-encryption. Your files were encrypted using the password \"%s\"." : "服务器端加密已启用,您的文件已经使用密码“%s”加密。",
"Please login to the web interface, go to the \"Security\" section of your personal settings and update your encryption password by entering this password into the \"Old login password\" field and your current login password." : "请登录网络界面,进入个人设置的 \"安全\" 部分,在“旧登录密码”字段中输入此密码,并在当前登录密码中输入该密码,以更新您的加密密码。",
"Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "无法解密此文件,可能这是一个共享文件。请通知文件所有者与你重新共享该文件。",
"Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "无法读取此文件,可能这是一个共享文件。请通知文件所有者与你重新共享该文件。",
+3
View File
@@ -26,6 +26,9 @@
"Bad Signature" : "签名已损坏",
"Missing Signature" : "签名已丢失",
"one-time password for server-side-encryption" : "用于服务端加密的一次性密码",
"Encryption password" : "加密密码",
"The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>." : "服务器端加密已启用,您的文件已经使用密码<strong>%s</strong>加密。",
"The administration enabled server-side-encryption. Your files were encrypted using the password \"%s\"." : "服务器端加密已启用,您的文件已经使用密码“%s”加密。",
"Please login to the web interface, go to the \"Security\" section of your personal settings and update your encryption password by entering this password into the \"Old login password\" field and your current login password." : "请登录网络界面,进入个人设置的 \"安全\" 部分,在“旧登录密码”字段中输入此密码,并在当前登录密码中输入该密码,以更新您的加密密码。",
"Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "无法解密此文件,可能这是一个共享文件。请通知文件所有者与你重新共享该文件。",
"Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "无法读取此文件,可能这是一个共享文件。请通知文件所有者与你重新共享该文件。",
+12 -1
View File
@@ -23,12 +23,23 @@ OC.L10N.register(
"Sharing" : "Deling",
"Federated file sharing" : "Sammenkoblet fildeling",
"Provide federated file sharing across servers" : "Lever sammenkoblet fildeling på tværs af servere",
"Confirm data upload to lookup server" : "Bekræft dataoverførsel til opslagsserver",
"When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Når det er aktiveret, vil alle kontoegenskaber (f.eks. mailadresse) med omfangssynlighed indstillet til \"publiceret\", automatisk blive synkroniseret og transmitteret til et eksternt system og gjort tilgængelige i en offentlig, global adressebog.",
"Disable upload" : "Deaktivér upload",
"Enable data upload" : "Aktivér data upload",
"Confirm querying lookup server" : "Bekræft forespørgsel til opslagsserver",
"When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Når det er aktiveret, vil søgeinputtet, når der oprettes delinger, blive sendt til et eksternt system, der leverer en offentlig og global adressebog.",
"This is used to retrieve the federated cloud ID to make federated sharing easier." : "Dette bruges til at hente det fødererede cloud ID for at gøre fødereret deling nemmere.",
"Moreover, email addresses of users might be sent to that system in order to verify them." : "Desuden kan mailadresser på brugere blive sendt til dette system for at verificere dem.",
"Disable querying" : "Deaktivér forespørgsler",
"Enable querying" : "Aktivér forespørgsler",
"Unable to update federated files sharing config" : "Kan ikke opdatere sammenkoblet fildelingskonfiguration",
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Juster, hvordan brugere kan dele mellem servere. Dette inkluderer også delinger mellem brugere på denne server, hvis de bruger sammenkoblet deling.",
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Tillad brugere på denne server at sende shares til andre servere (denne mulighed giver også WebDAV adgang til offentlige shares)",
"Allow people on this server to receive shares from other servers" : "Tillad brugere på denne server at modtage delinger fra andre servere",
"Allow people on this server to send shares to groups on other servers" : "Tillad brugere på denne server at sende delinger til grupper på andre servere",
"Allow people on this server to receive group shares from other servers" : "Tillad brugere på denne server at modtage gruppedelinger fra andre servere",
"The lookup server is only available for global scale." : "Opslagsserveren er kun tilgængelig for global skala.",
"Search global and public address book for people" : "Søg global og offentlig adressebog efter personer",
"Allow people to publish their data to a global and public address book" : "Tillad brugere at udgive deres data til en global og offentlig adressebog",
"Trusted federation" : "Betroet sammenkobling",
@@ -49,7 +60,7 @@ OC.L10N.register(
"Mastodon" : "Mastodont",
"Add to your website" : "Tilføj til dit websted",
"Share with me via Nextcloud" : "Del med mig gennem Nextcloud",
"HTML Code:" : "HTMLkode:",
"HTML Code:" : "HTML kode:",
"Cancel" : "Annuller",
"Add remote share" : "Tilføj ekstern deling",
"Remote share" : "Eksterne drev",
+12 -1
View File
@@ -21,12 +21,23 @@
"Sharing" : "Deling",
"Federated file sharing" : "Sammenkoblet fildeling",
"Provide federated file sharing across servers" : "Lever sammenkoblet fildeling på tværs af servere",
"Confirm data upload to lookup server" : "Bekræft dataoverførsel til opslagsserver",
"When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Når det er aktiveret, vil alle kontoegenskaber (f.eks. mailadresse) med omfangssynlighed indstillet til \"publiceret\", automatisk blive synkroniseret og transmitteret til et eksternt system og gjort tilgængelige i en offentlig, global adressebog.",
"Disable upload" : "Deaktivér upload",
"Enable data upload" : "Aktivér data upload",
"Confirm querying lookup server" : "Bekræft forespørgsel til opslagsserver",
"When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Når det er aktiveret, vil søgeinputtet, når der oprettes delinger, blive sendt til et eksternt system, der leverer en offentlig og global adressebog.",
"This is used to retrieve the federated cloud ID to make federated sharing easier." : "Dette bruges til at hente det fødererede cloud ID for at gøre fødereret deling nemmere.",
"Moreover, email addresses of users might be sent to that system in order to verify them." : "Desuden kan mailadresser på brugere blive sendt til dette system for at verificere dem.",
"Disable querying" : "Deaktivér forespørgsler",
"Enable querying" : "Aktivér forespørgsler",
"Unable to update federated files sharing config" : "Kan ikke opdatere sammenkoblet fildelingskonfiguration",
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Juster, hvordan brugere kan dele mellem servere. Dette inkluderer også delinger mellem brugere på denne server, hvis de bruger sammenkoblet deling.",
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Tillad brugere på denne server at sende shares til andre servere (denne mulighed giver også WebDAV adgang til offentlige shares)",
"Allow people on this server to receive shares from other servers" : "Tillad brugere på denne server at modtage delinger fra andre servere",
"Allow people on this server to send shares to groups on other servers" : "Tillad brugere på denne server at sende delinger til grupper på andre servere",
"Allow people on this server to receive group shares from other servers" : "Tillad brugere på denne server at modtage gruppedelinger fra andre servere",
"The lookup server is only available for global scale." : "Opslagsserveren er kun tilgængelig for global skala.",
"Search global and public address book for people" : "Søg global og offentlig adressebog efter personer",
"Allow people to publish their data to a global and public address book" : "Tillad brugere at udgive deres data til en global og offentlig adressebog",
"Trusted federation" : "Betroet sammenkobling",
@@ -47,7 +58,7 @@
"Mastodon" : "Mastodont",
"Add to your website" : "Tilføj til dit websted",
"Share with me via Nextcloud" : "Del med mig gennem Nextcloud",
"HTML Code:" : "HTMLkode:",
"HTML Code:" : "HTML kode:",
"Cancel" : "Annuller",
"Add remote share" : "Tilføj ekstern deling",
"Remote share" : "Eksterne drev",
+2
View File
@@ -23,6 +23,8 @@ OC.L10N.register(
"Sharing" : "Partage",
"Federated file sharing" : "Partage de fichiers fédéré",
"Provide federated file sharing across servers" : "Fourni un partage de fichiers fédéré entre plusieurs serveurs",
"Disable upload" : "Désactiver le téléchargement",
"Moreover, email addresses of users might be sent to that system in order to verify them." : "De plus, les adresses mail des utilisateurs peuvent être envoyées à ce système pour les vérifier.",
"Unable to update federated files sharing config" : "Impossible de mettre à jour la configuration du partage fédéré de fichiers ",
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Configurer comment les utilisateurs peuvent faire des partages entre serveurs. Cela inclut aussi les partages entre personnes de ce serveur s'ils utilisent des partages fédérés.",
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Autoriser les personnes de ce serveur à envoyer des partages vers d'autres serveurs (cette option permet aussi l'accès WebDAV aux partages publics)",
+2
View File
@@ -21,6 +21,8 @@
"Sharing" : "Partage",
"Federated file sharing" : "Partage de fichiers fédéré",
"Provide federated file sharing across servers" : "Fourni un partage de fichiers fédéré entre plusieurs serveurs",
"Disable upload" : "Désactiver le téléchargement",
"Moreover, email addresses of users might be sent to that system in order to verify them." : "De plus, les adresses mail des utilisateurs peuvent être envoyées à ce système pour les vérifier.",
"Unable to update federated files sharing config" : "Impossible de mettre à jour la configuration du partage fédéré de fichiers ",
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Configurer comment les utilisateurs peuvent faire des partages entre serveurs. Cela inclut aussi les partages entre personnes de ce serveur s'ils utilisent des partages fédérés.",
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Autoriser les personnes de ce serveur à envoyer des partages vers d'autres serveurs (cette option permet aussi l'accès WebDAV aux partages publics)",
+6 -6
View File
@@ -35,24 +35,24 @@ OC.L10N.register(
"Enable querying" : "Ativar consulta",
"Unable to update federated files sharing config" : "Não é possível atualizar a configuração de compartilhamento de arquivos federados",
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Ajuste como as pessoas podem compartilhar entre servidores. Isso também inclui compartilhamentos entre pessoas neste servidor, se elas estiverem usando compartilhamento federado.",
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Permitir que pessoas neste servidor enviem compartilhamentos para outros servidores (esta opção também permite acesso WebDAV a compartilhamentos públicos)",
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Permitir que as pessoas neste servidor enviem compartilhamentos para outros servidores (esta opção também permite acesso WebDAV a compartilhamentos públicos)",
"Allow people on this server to receive shares from other servers" : "Permitir que pessoas neste servidor recebam compartilhamentos de outros servidores",
"Allow people on this server to send shares to groups on other servers" : "Permitir que pessoas neste servidor enviem compartilhamentos para grupos em outros servidores",
"Allow people on this server to receive group shares from other servers" : "Permitir que as pessoas neste servidor recebam compartilhamentos de grupo de outros servidores",
"The lookup server is only available for global scale." : "O servidor de pesquisa só está disponível para escala global.",
"Search global and public address book for people" : "Pesquise pessoas no catálogo de endereços global e público",
"Search global and public address book for people" : "Pesquisar pessoas no catálogo de endereços global e público",
"Allow people to publish their data to a global and public address book" : "Permitir que as pessoas publiquem seus dados em um catálogo de endereços público e global",
"Trusted federation" : "Federação confiável",
"Automatically accept shares from trusted federated accounts and groups by default" : "Aceitar automaticamente compartilhamentos de contas e grupos federados confiáveis por padrão",
"Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Compartilhe comigo por meio do meu ID de nuvem federado #Nextcloud, consulte {url}",
"Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Compartilhe comigo por meio do meu ID de Nuvem Federada #Nextcloud, consulte {url}",
"Share with me through my #Nextcloud Federated Cloud ID" : "Compartilhe comigo através do meu ID de Nuvem Federada #Nextcloud",
"Cloud ID copied to the clipboard" : "Cloud ID copiado para a área de transferência",
"Cloud ID copied to the clipboard" : "ID de Nuvem copiado para a área de transferência",
"Copy to clipboard" : "Copiar para área de transferência",
"Clipboard not available. Please copy the cloud ID manually." : "Área de transferência indisponível. Copie o ID da nuvem manualmente.",
"Clipboard not available. Please copy the cloud ID manually." : "Área de transferência indisponível. Copie o ID de Nuvem manualmente.",
"Copied!" : "Copiado!",
"Federated Cloud" : "Nuvem Federada",
"You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Você pode compartilhar com qualquer pessoa que use Nextcloud ou outros servidores compatíveis com o Open Cloud Mesh (OCM)! Basta colocar sua ID de nuvem federada na caixa de diálogo de compartilhamento. Algo como person@cloud.example.com",
"Your Federated Cloud ID" : "Seu ID de nuvem federada",
"Your Federated Cloud ID" : "Seu ID de Nuvem Federada",
"Share it so your friends can share files with you:" : "Compartilhe para que seus amigos possam compartilhar arquivos com você:",
"Facebook" : "Facebook",
"X (formerly Twitter)" : "X (anteriormente Twitter)",
+6 -6
View File
@@ -33,24 +33,24 @@
"Enable querying" : "Ativar consulta",
"Unable to update federated files sharing config" : "Não é possível atualizar a configuração de compartilhamento de arquivos federados",
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Ajuste como as pessoas podem compartilhar entre servidores. Isso também inclui compartilhamentos entre pessoas neste servidor, se elas estiverem usando compartilhamento federado.",
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Permitir que pessoas neste servidor enviem compartilhamentos para outros servidores (esta opção também permite acesso WebDAV a compartilhamentos públicos)",
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Permitir que as pessoas neste servidor enviem compartilhamentos para outros servidores (esta opção também permite acesso WebDAV a compartilhamentos públicos)",
"Allow people on this server to receive shares from other servers" : "Permitir que pessoas neste servidor recebam compartilhamentos de outros servidores",
"Allow people on this server to send shares to groups on other servers" : "Permitir que pessoas neste servidor enviem compartilhamentos para grupos em outros servidores",
"Allow people on this server to receive group shares from other servers" : "Permitir que as pessoas neste servidor recebam compartilhamentos de grupo de outros servidores",
"The lookup server is only available for global scale." : "O servidor de pesquisa só está disponível para escala global.",
"Search global and public address book for people" : "Pesquise pessoas no catálogo de endereços global e público",
"Search global and public address book for people" : "Pesquisar pessoas no catálogo de endereços global e público",
"Allow people to publish their data to a global and public address book" : "Permitir que as pessoas publiquem seus dados em um catálogo de endereços público e global",
"Trusted federation" : "Federação confiável",
"Automatically accept shares from trusted federated accounts and groups by default" : "Aceitar automaticamente compartilhamentos de contas e grupos federados confiáveis por padrão",
"Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Compartilhe comigo por meio do meu ID de nuvem federado #Nextcloud, consulte {url}",
"Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Compartilhe comigo por meio do meu ID de Nuvem Federada #Nextcloud, consulte {url}",
"Share with me through my #Nextcloud Federated Cloud ID" : "Compartilhe comigo através do meu ID de Nuvem Federada #Nextcloud",
"Cloud ID copied to the clipboard" : "Cloud ID copiado para a área de transferência",
"Cloud ID copied to the clipboard" : "ID de Nuvem copiado para a área de transferência",
"Copy to clipboard" : "Copiar para área de transferência",
"Clipboard not available. Please copy the cloud ID manually." : "Área de transferência indisponível. Copie o ID da nuvem manualmente.",
"Clipboard not available. Please copy the cloud ID manually." : "Área de transferência indisponível. Copie o ID de Nuvem manualmente.",
"Copied!" : "Copiado!",
"Federated Cloud" : "Nuvem Federada",
"You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Você pode compartilhar com qualquer pessoa que use Nextcloud ou outros servidores compatíveis com o Open Cloud Mesh (OCM)! Basta colocar sua ID de nuvem federada na caixa de diálogo de compartilhamento. Algo como person@cloud.example.com",
"Your Federated Cloud ID" : "Seu ID de nuvem federada",
"Your Federated Cloud ID" : "Seu ID de Nuvem Federada",
"Share it so your friends can share files with you:" : "Compartilhe para que seus amigos possam compartilhar arquivos com você:",
"Facebook" : "Facebook",
"X (formerly Twitter)" : "X (anteriormente Twitter)",
+11
View File
@@ -23,12 +23,23 @@ OC.L10N.register(
"Sharing" : "Paylaşım",
"Federated file sharing" : "Birleşik dosya paylaşımı",
"Provide federated file sharing across servers" : "Sunucular arasında birleşik dosya paylaşımı yapılmasını sağlar",
"Confirm data upload to lookup server" : "Arama sunucusuna veri yüklemeyi onaylayın",
"When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Bu seçenek etkinleştirildiğinde, kapsam görünürlüğü \"yayınlanmış\" olarak ayarlanmış tüm hesap özellikleri (e-posta adresi gibi) otomatik olarak eşitlenerek ve bir dış sisteme iletilerek, herkese açık, genel bir adres defterinde yayınlanır.",
"Disable upload" : "Yüklenmesin",
"Enable data upload" : "Veriler yüklensin",
"Confirm querying lookup server" : "Arama sunucusu sorgulanabilsin",
"When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Bu seçenek etkinleştirildiğinde, paylaşım oluştururken arama kaydı, herkese açık ve genel bir adres defteri sunan bir dış sisteme gönderilir.",
"This is used to retrieve the federated cloud ID to make federated sharing easier." : "Birleşik paylaşımı kolaylaştırmak için birleşik bulut kimliğini almakta kullanılır.",
"Moreover, email addresses of users might be sent to that system in order to verify them." : "Ayrıca, kullanıcıların e-posta adresleri onları doğrulamak için bu sisteme gönderilebilir.",
"Disable querying" : "Sorgulanamasın",
"Enable querying" : "Sorgulansın",
"Unable to update federated files sharing config" : "Birleşik dosya paylaşımı yapılandırması güncellenemedi",
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Kişilerin sunucular arasındaki paylaşım yöntemini ayarlayın. Bu yöntem, bu sunucuda bulunan ve birleşik paylaşım kullanan kişiler arasındaki paylaşımları da belirler.",
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Bu sunucudaki kişiler diğer sunuculara paylaşım gönderebilsin (herkese açık paylaşımlara WebDAV erişimi de sağlar)",
"Allow people on this server to receive shares from other servers" : "Bu sunucudaki kişiler diğer sunuculardan paylaşım alabilsin",
"Allow people on this server to send shares to groups on other servers" : "Bu sunucudaki kişiler diğer sunuculardaki gruplara paylaşım gönderebilsin",
"Allow people on this server to receive group shares from other servers" : "Bu sunucudaki kişiler diğer sunuculardaki grup paylaşımlarını alabilsin",
"The lookup server is only available for global scale." : "Arama sunucusu yalnızca genel ölçekte kullanılabilir.",
"Search global and public address book for people" : "Genel ve herkese açık adres defterindeki kişiler aranabilsin",
"Allow people to publish their data to a global and public address book" : "Kişiler bilgilerini genel ve herkese açık bir adres defterinde paylaşabilsin",
"Trusted federation" : "Güvenilen birleşim",
+11
View File
@@ -21,12 +21,23 @@
"Sharing" : "Paylaşım",
"Federated file sharing" : "Birleşik dosya paylaşımı",
"Provide federated file sharing across servers" : "Sunucular arasında birleşik dosya paylaşımı yapılmasını sağlar",
"Confirm data upload to lookup server" : "Arama sunucusuna veri yüklemeyi onaylayın",
"When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Bu seçenek etkinleştirildiğinde, kapsam görünürlüğü \"yayınlanmış\" olarak ayarlanmış tüm hesap özellikleri (e-posta adresi gibi) otomatik olarak eşitlenerek ve bir dış sisteme iletilerek, herkese açık, genel bir adres defterinde yayınlanır.",
"Disable upload" : "Yüklenmesin",
"Enable data upload" : "Veriler yüklensin",
"Confirm querying lookup server" : "Arama sunucusu sorgulanabilsin",
"When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Bu seçenek etkinleştirildiğinde, paylaşım oluştururken arama kaydı, herkese açık ve genel bir adres defteri sunan bir dış sisteme gönderilir.",
"This is used to retrieve the federated cloud ID to make federated sharing easier." : "Birleşik paylaşımı kolaylaştırmak için birleşik bulut kimliğini almakta kullanılır.",
"Moreover, email addresses of users might be sent to that system in order to verify them." : "Ayrıca, kullanıcıların e-posta adresleri onları doğrulamak için bu sisteme gönderilebilir.",
"Disable querying" : "Sorgulanamasın",
"Enable querying" : "Sorgulansın",
"Unable to update federated files sharing config" : "Birleşik dosya paylaşımı yapılandırması güncellenemedi",
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Kişilerin sunucular arasındaki paylaşım yöntemini ayarlayın. Bu yöntem, bu sunucuda bulunan ve birleşik paylaşım kullanan kişiler arasındaki paylaşımları da belirler.",
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Bu sunucudaki kişiler diğer sunuculara paylaşım gönderebilsin (herkese açık paylaşımlara WebDAV erişimi de sağlar)",
"Allow people on this server to receive shares from other servers" : "Bu sunucudaki kişiler diğer sunuculardan paylaşım alabilsin",
"Allow people on this server to send shares to groups on other servers" : "Bu sunucudaki kişiler diğer sunuculardaki gruplara paylaşım gönderebilsin",
"Allow people on this server to receive group shares from other servers" : "Bu sunucudaki kişiler diğer sunuculardaki grup paylaşımlarını alabilsin",
"The lookup server is only available for global scale." : "Arama sunucusu yalnızca genel ölçekte kullanılabilir.",
"Search global and public address book for people" : "Genel ve herkese açık adres defterindeki kişiler aranabilsin",
"Allow people to publish their data to a global and public address book" : "Kişiler bilgilerini genel ve herkese açık bir adres defterinde paylaşabilsin",
"Trusted federation" : "Güvenilen birleşim",
@@ -67,7 +67,6 @@ class CloudFederationProviderFiles implements ISignedCloudFederationProvider {
private LoggerInterface $logger,
private IFilenameValidator $filenameValidator,
private readonly IProviderFactory $shareProviderFactory,
private TrustedServers $trustedServers,
) {
}
@@ -156,6 +155,17 @@ class CloudFederationProviderFiles implements ISignedCloudFederationProvider {
// get DisplayName about the owner of the share
$ownerDisplayName = $this->getUserDisplayName($ownerFederatedId);
$trustedServers = null;
if ($this->appManager->isEnabledForAnyone('federation')
&& class_exists(TrustedServers::class)) {
try {
$trustedServers = Server::get(TrustedServers::class);
} catch (\Throwable $e) {
$this->logger->debug('Failed to create TrustedServers', ['exception' => $e]);
}
}
if ($shareType === IShare::TYPE_USER) {
$event = $this->activityManager->generateEvent();
$event->setApp('files_sharing')
@@ -167,7 +177,7 @@ class CloudFederationProviderFiles implements ISignedCloudFederationProvider {
$this->notifyAboutNewShare($shareWith, $shareId, $ownerFederatedId, $sharedByFederatedId, $name, $ownerDisplayName);
// If auto-accept is enabled, accept the share
if ($this->federatedShareProvider->isFederatedTrustedShareAutoAccept() && $this->trustedServers->isTrustedServer($remote)) {
if ($this->federatedShareProvider->isFederatedTrustedShareAutoAccept() && $trustedServers?->isTrustedServer($remote) === true) {
$this->externalShareManager->acceptShare($shareId, $shareWith);
}
} else {
@@ -183,7 +193,7 @@ class CloudFederationProviderFiles implements ISignedCloudFederationProvider {
$this->notifyAboutNewShare($user->getUID(), $shareId, $ownerFederatedId, $sharedByFederatedId, $name, $ownerDisplayName);
// If auto-accept is enabled, accept the share
if ($this->federatedShareProvider->isFederatedTrustedShareAutoAccept() && $this->trustedServers->isTrustedServer($remote)) {
if ($this->federatedShareProvider->isFederatedTrustedShareAutoAccept() && $trustedServers?->isTrustedServer($remote) === true) {
$this->externalShareManager->acceptShare($shareId, $user->getUID());
}
}
+4 -4
View File
@@ -29,12 +29,12 @@ abstract class TestCase extends \Test\TestCase {
parent::setUpBeforeClass();
// reset backend
\OC_User::clearBackends();
Server::get(IUserManager::class)->clearBackends();
Server::get(IGroupManager::class)->clearBackends();
// create users
$backend = new \Test\Util\User\Dummy();
\OC_User::useBackend($backend);
Server::get(IUserManager::class)->registerBackend($backend);
$backend->createUser(self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER1);
$backend->createUser(self::TEST_FILES_SHARING_API_USER2, self::TEST_FILES_SHARING_API_USER2);
}
@@ -62,8 +62,8 @@ abstract class TestCase extends \Test\TestCase {
Filesystem::tearDown();
// reset backend
\OC_User::clearBackends();
\OC_User::useBackend('database');
Server::get(IUserManager::class)->clearBackends();
Server::get(IUserManager::class)->registerBackend(new \OC\User\Database());
Server::get(IGroupManager::class)->clearBackends();
Server::get(IGroupManager::class)->addBackend(new Database());
+3 -2
View File
@@ -331,6 +331,7 @@ OC.L10N.register(
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fil og {folderCount} mapper","1 fil og {folderCount} mapper"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fil og 1 mapper","{fileCount} filer og 1 mapper"],
"{fileCount} files and {folderCount} folders" : "{fileCount} filer og {folderCount} mapper",
"_(%n hidden)_::_ (%n hidden)_" : ["(%n skjult)","(%n skjult)"],
"Filename must not be empty." : "Filnavnet må ikke være tomt.",
"\"{char}\" is not allowed inside a filename." : "\"{char}\" er ikke tilladt i et filnavn.",
"\"{segment}\" is a reserved name and not allowed for filenames." : "\"{segment}\" er et reserveret navn og er ikke tilladt til filnavne.",
@@ -364,8 +365,8 @@ OC.L10N.register(
"Upload cancelled." : "Upload afbrudt.",
"Processing files …" : "Behandler filer...",
"…" : "...",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Kan ikke upload {filename} da det er enten en mappe eller indholder 0 bytes.",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Der er ikke tilstrækkeligt friplads. Du uplaoder {size1} men der er kun {size2} tilbage",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Kan ikke uploade {filename} da det er enten en mappe eller indeholder 0 bytes.",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Der er ikke tilstrækkelig fri plads. Du uplaoder {size1} men der er kun {size2} tilbage",
"Target folder \"{dir}\" does not exist any more" : "Destinationsmappen \"{dir}\" findes ikke længere",
"An unknown error has occurred" : "En ukendt fejl er opstået",
"File could not be uploaded" : "Filen kunne ikke uploades",
+3 -2
View File
@@ -329,6 +329,7 @@
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fil og {folderCount} mapper","1 fil og {folderCount} mapper"],
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fil og 1 mapper","{fileCount} filer og 1 mapper"],
"{fileCount} files and {folderCount} folders" : "{fileCount} filer og {folderCount} mapper",
"_(%n hidden)_::_ (%n hidden)_" : ["(%n skjult)","(%n skjult)"],
"Filename must not be empty." : "Filnavnet må ikke være tomt.",
"\"{char}\" is not allowed inside a filename." : "\"{char}\" er ikke tilladt i et filnavn.",
"\"{segment}\" is a reserved name and not allowed for filenames." : "\"{segment}\" er et reserveret navn og er ikke tilladt til filnavne.",
@@ -362,8 +363,8 @@
"Upload cancelled." : "Upload afbrudt.",
"Processing files …" : "Behandler filer...",
"…" : "...",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Kan ikke upload {filename} da det er enten en mappe eller indholder 0 bytes.",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Der er ikke tilstrækkeligt friplads. Du uplaoder {size1} men der er kun {size2} tilbage",
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Kan ikke uploade {filename} da det er enten en mappe eller indeholder 0 bytes.",
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Der er ikke tilstrækkelig fri plads. Du uplaoder {size1} men der er kun {size2} tilbage",
"Target folder \"{dir}\" does not exist any more" : "Destinationsmappen \"{dir}\" findes ikke længere",
"An unknown error has occurred" : "En ukendt fejl er opstået",
"File could not be uploaded" : "Filen kunne ikke uploades",
+1 -1
View File
@@ -191,7 +191,7 @@ OC.L10N.register(
"WebDAV URL" : "WebDAV-i võrguaadress",
"Copy to clipboard" : "Kopeeri lõikelauale",
"Use this address to access your Files via WebDAV" : "Oma failidele WebDAV-i kaudu ligipääsemiseks kasuta seda aadressi",
"If you have enabled 2FA, you must create and use a new app password by clicking here." : "Kui sa oled kaheastmelise autentimise kasutusele võtnud, siis peal looma ja kasutama rakenduse uut salasõna klikates siia.",
"If you have enabled 2FA, you must create and use a new app password by clicking here." : "Kui sa oled kaheastmelise autentimise kasutusele võtnud, siis pead looma ja kasutama rakenduse uut salasõna klikates siia.",
"Warnings" : "Hoiatused",
"Prevent warning dialogs from open or reenable them." : "Ära kasuta hoiatusteateid nende avamisel või uuesti kasutusele võtmisel.",
"Show a warning dialog when changing a file extension." : "Faililaiendi muutmisel näita hoiatust.",
+1 -1
View File
@@ -189,7 +189,7 @@
"WebDAV URL" : "WebDAV-i võrguaadress",
"Copy to clipboard" : "Kopeeri lõikelauale",
"Use this address to access your Files via WebDAV" : "Oma failidele WebDAV-i kaudu ligipääsemiseks kasuta seda aadressi",
"If you have enabled 2FA, you must create and use a new app password by clicking here." : "Kui sa oled kaheastmelise autentimise kasutusele võtnud, siis peal looma ja kasutama rakenduse uut salasõna klikates siia.",
"If you have enabled 2FA, you must create and use a new app password by clicking here." : "Kui sa oled kaheastmelise autentimise kasutusele võtnud, siis pead looma ja kasutama rakenduse uut salasõna klikates siia.",
"Warnings" : "Hoiatused",
"Prevent warning dialogs from open or reenable them." : "Ära kasuta hoiatusteateid nende avamisel või uuesti kasutusele võtmisel.",
"Show a warning dialog when changing a file extension." : "Faililaiendi muutmisel näita hoiatust.",
+11 -4
View File
@@ -157,7 +157,7 @@ OC.L10N.register(
"Shared by link" : "링크로 공유됨",
"Shared" : "공유됨",
"Switch to list view" : "목록 보기로 전환",
"Switch to grid view" : "그리드뷰로 전환",
"Switch to grid view" : "바둑판식 보기로 전환",
"The file could not be found" : "파일을 찾을 수 없음",
"Upload was cancelled by user" : "사용자에 의해 업로드가 취소됨",
"Not enough free space" : "남은 공간이 부족함",
@@ -183,7 +183,7 @@ OC.L10N.register(
"Sort folders before files" : "폴더를 파일보다 먼저 정렬",
"Show hidden files" : "숨김 파일 보이기",
"Crop image previews" : "이미지 미리보기 확대",
"Enable the grid view" : "그리드뷰 활성화",
"Enable the grid view" : "바둑판식 보기 활성화",
"Enable folder tree" : "폴더 트리 활성화",
"Additional settings" : "고급 설정",
"WebDAV" : "WebDAV",
@@ -210,7 +210,7 @@ OC.L10N.register(
"Navigate to the file on the left (in grid mode)" : "왼쪽 파일로 이동 (그리드 모드에서)",
"Navigate to the file on the right (in grid mode)" : "오른쪽 파일로 이동 (그리드 모드에서)",
"View" : "보기",
"Toggle the grid view" : "그리드 뷰 전환",
"Toggle the grid view" : "바둑판식 보기 전환",
"Open the sidebar for a file" : "파일 사이드바 열기",
"Show those shortcuts" : "다음 단축키 표시",
"You" : "당신",
@@ -225,6 +225,12 @@ OC.L10N.register(
"Pick a template for {name}" : "{name}을(를) 위한 템플릿 선택",
"Create a new file with the selected template" : "선택한 템플릿으로 새 파일 만들기",
"Creating file" : "파일 만들기",
"Save as {displayName}" : "{displayName}으로 저장하기",
"Save as …" : "... 으로 저장하기",
"Converting files …" : "파일 변환하기 ...",
"Failed to convert files: {message}" : "파일 변환에 실패함:{message}",
"All files failed to be converted" : "모든 파일이 변환에 실패했습니다.",
"Failed to convert files" : "파일 변환에 실패했습니다",
"Deletion cancelled" : "삭제가 취소됨",
"Leave this share" : "이 공유에서 떠나기",
"Leave these shares" : "이 공유에서 떠나기",
@@ -338,7 +344,7 @@ OC.L10N.register(
"File could not be found" : "파일을 찾을 수 없음",
"Download" : "다운로드",
"Show list view" : "리스트 보기",
"Show grid view" : "그리드뷰 보기",
"Show grid view" : "바둑판식 보기",
"Close" : "닫기",
"Could not create folder \"{dir}\"" : "폴더 \"{dir}\"을(를) 만들 수 없음",
"This will stop your current uploads." : "이것은 현재 업로드를 중단시킬 것입니다.",
@@ -417,6 +423,7 @@ OC.L10N.register(
"Upload file" : "파일 업로드",
"Not favorited" : "즐겨찾기에 없음",
"An error occurred while trying to update the tags" : "태그를 업데이트하는 중 오류 발생",
"You don't have permission to upload or create files here." : "여기에 파일을 업로드하거나 만들 권한이 없습니다.",
"Storage informations" : "저장소 정보",
"Choose file" : "파일 선택",
"Go to the previous folder" : "이전 폴더로 이동",
+11 -4
View File
@@ -155,7 +155,7 @@
"Shared by link" : "링크로 공유됨",
"Shared" : "공유됨",
"Switch to list view" : "목록 보기로 전환",
"Switch to grid view" : "그리드뷰로 전환",
"Switch to grid view" : "바둑판식 보기로 전환",
"The file could not be found" : "파일을 찾을 수 없음",
"Upload was cancelled by user" : "사용자에 의해 업로드가 취소됨",
"Not enough free space" : "남은 공간이 부족함",
@@ -181,7 +181,7 @@
"Sort folders before files" : "폴더를 파일보다 먼저 정렬",
"Show hidden files" : "숨김 파일 보이기",
"Crop image previews" : "이미지 미리보기 확대",
"Enable the grid view" : "그리드뷰 활성화",
"Enable the grid view" : "바둑판식 보기 활성화",
"Enable folder tree" : "폴더 트리 활성화",
"Additional settings" : "고급 설정",
"WebDAV" : "WebDAV",
@@ -208,7 +208,7 @@
"Navigate to the file on the left (in grid mode)" : "왼쪽 파일로 이동 (그리드 모드에서)",
"Navigate to the file on the right (in grid mode)" : "오른쪽 파일로 이동 (그리드 모드에서)",
"View" : "보기",
"Toggle the grid view" : "그리드 뷰 전환",
"Toggle the grid view" : "바둑판식 보기 전환",
"Open the sidebar for a file" : "파일 사이드바 열기",
"Show those shortcuts" : "다음 단축키 표시",
"You" : "당신",
@@ -223,6 +223,12 @@
"Pick a template for {name}" : "{name}을(를) 위한 템플릿 선택",
"Create a new file with the selected template" : "선택한 템플릿으로 새 파일 만들기",
"Creating file" : "파일 만들기",
"Save as {displayName}" : "{displayName}으로 저장하기",
"Save as …" : "... 으로 저장하기",
"Converting files …" : "파일 변환하기 ...",
"Failed to convert files: {message}" : "파일 변환에 실패함:{message}",
"All files failed to be converted" : "모든 파일이 변환에 실패했습니다.",
"Failed to convert files" : "파일 변환에 실패했습니다",
"Deletion cancelled" : "삭제가 취소됨",
"Leave this share" : "이 공유에서 떠나기",
"Leave these shares" : "이 공유에서 떠나기",
@@ -336,7 +342,7 @@
"File could not be found" : "파일을 찾을 수 없음",
"Download" : "다운로드",
"Show list view" : "리스트 보기",
"Show grid view" : "그리드뷰 보기",
"Show grid view" : "바둑판식 보기",
"Close" : "닫기",
"Could not create folder \"{dir}\"" : "폴더 \"{dir}\"을(를) 만들 수 없음",
"This will stop your current uploads." : "이것은 현재 업로드를 중단시킬 것입니다.",
@@ -415,6 +421,7 @@
"Upload file" : "파일 업로드",
"Not favorited" : "즐겨찾기에 없음",
"An error occurred while trying to update the tags" : "태그를 업데이트하는 중 오류 발생",
"You don't have permission to upload or create files here." : "여기에 파일을 업로드하거나 만들 권한이 없습니다.",
"Storage informations" : "저장소 정보",
"Choose file" : "파일 선택",
"Go to the previous folder" : "이전 폴더로 이동",
+15 -5
View File
@@ -88,7 +88,10 @@ OC.L10N.register(
"Actions" : "Veiksmai",
"List of files and folders." : "Failų ir aplankų sąrašas.",
"File not found" : "Failas nerastas",
"{count} selected" : "Pažymėta {count}",
"{usedQuotaByte} used" : "Naudojama {usedQuotaByte}",
"{used} of {quota} used" : "panaudota {used} iš {quota}",
"{relative}% used" : "Naudojama {relative}",
"Could not refresh storage stats" : "Nepavyko iš naujo įkelti saugyklos statistikos",
"Your storage is full, files can not be updated or synced anymore!" : "Jūsų saugykla pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!",
"Storage information" : "Informacija apie saugyklą",
@@ -107,13 +110,17 @@ OC.L10N.register(
"Choose file or folder to transfer" : "Pasirinkti norimą perduoti failą ar aplanką",
"Change" : "Keisti",
"New owner" : "Naujasis savininkas",
"Choose {file}" : "Pasirinkti{file}",
"Share" : "Bendrinti",
"Shared by link" : "Bendrinama pagal nuorodą",
"Shared" : "Bendrinama",
"Switch to list view" : "Perjungti į sąrašo rodinį",
"Switch to grid view" : "Perjungti į tinklelio rodinį",
"The file could not be found" : "Failas nerastas",
"Upload was cancelled by user" : "Įkelimas buvo atšauktas vartotojo",
"Not enough free space" : "Trūksta laisvos vietos",
"Operation is blocked by access control" : "Operacija yra užblokuota prieigos valdymo",
"Error during upload: {message}" : "Įkėlimo klaida: {message}",
"Loading current folder" : "Įkeliamas dabartinis aplankas",
"Retry" : "Bandyti dar kartą",
"No files in here" : "Čia failų nėra",
@@ -127,11 +134,14 @@ OC.L10N.register(
"Clipboard is not available" : "Iškarpinė neprieinama",
"WebDAV URL copied to clipboard" : "WebDAV URL nukopijuotas į iškarpinę",
"Show hidden files" : "Rodyti paslėptus failus",
"Crop image previews" : "Apkirpti paveikslų peržiūras",
"Crop image previews" : "Apkirpti paveikslėlių peržiūras",
"Enable the grid view" : "Įjungti grid peržiūrą",
"Enable folder tree" : "Įjungti direktorijų medį",
"Additional settings" : "Papildomi nustatymai",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Kopijuoti į iškarpinę",
"Use this address to access your Files via WebDAV" : "Naudokite šį adresą norėdami pasiekti failus per WebDAV",
"Warnings" : "Įspėjimai",
"Keyboard shortcuts" : "Spartieji klavišai",
"Rename a file" : "Pervadinti failą",
"Delete a file" : "Ištrinti failą",
@@ -143,7 +153,7 @@ OC.L10N.register(
"Owner" : "Savivinkas",
"Remove from favorites" : "Šalinti iš mėgstamų",
"Add to favorites" : "Pridėti į mėgstamus",
"Tags" : "Žymės",
"Tags" : "Žymos",
"Unable to create new file from template" : "Nepavyko sukurti naujo failo iš šablono",
"Pick a template for {name}" : "Pasirinkite šabloną, skirtą {name}",
"Create a new file with the selected template" : "Sukurti naują failą naudojant pasirinktą šabloną",
@@ -253,8 +263,8 @@ OC.L10N.register(
"Open" : "Atverti",
"Could not load info for file \"{file}\"" : "Nepavyko įkelti informacijos failui „{file}“",
"Details" : "Išsamiau",
"Please select tag(s) to add to the selection" : "Pasirinkite raktažodžius pridėti prie pažymėtų",
"Apply tag(s) to selection" : "Pritaikyti raktažodžiuis pasirinktiems",
"Please select tag(s) to add to the selection" : "Pasirinkite žymas, kurias pridėsite prie pažymėtų",
"Apply tag(s) to selection" : "Pritaikyti žymą(-as) pažymėtiems",
"Select directory \"{dirName}\"" : "Pasirinkite direktoriją \"{dirName}\"",
"Select file \"{fileName}\"" : "Pasirinkite failą \"{fileName}\"",
"Unable to determine date" : "Nepavyksta nustatyti datos",
@@ -301,7 +311,7 @@ OC.L10N.register(
"Copy direct link (only works for people who have access to this file/folder)" : "Kopijuoti tiesioginę nuorodą (veiks tik žmonėms, turintiems prieigą prie šio failo/aplanko)",
"Upload file" : "Įkelti failą",
"Not favorited" : "Nepažymėtas mėgstamu",
"An error occurred while trying to update the tags" : "Bandant atnaujinti žymes įvyko klaida",
"An error occurred while trying to update the tags" : "Įvyko klaida bandant atnaujinti žymas",
"Storage informations" : "Informacija apie saugyklą",
"Go to the previous folder" : "Eiti į ankstesnį aplanką",
"Unable to change the favourite state of the file" : "Nepavyksta pakeisti failo Lankomiausiųjų būsenos",
+15 -5
View File
@@ -86,7 +86,10 @@
"Actions" : "Veiksmai",
"List of files and folders." : "Failų ir aplankų sąrašas.",
"File not found" : "Failas nerastas",
"{count} selected" : "Pažymėta {count}",
"{usedQuotaByte} used" : "Naudojama {usedQuotaByte}",
"{used} of {quota} used" : "panaudota {used} iš {quota}",
"{relative}% used" : "Naudojama {relative}",
"Could not refresh storage stats" : "Nepavyko iš naujo įkelti saugyklos statistikos",
"Your storage is full, files can not be updated or synced anymore!" : "Jūsų saugykla pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!",
"Storage information" : "Informacija apie saugyklą",
@@ -105,13 +108,17 @@
"Choose file or folder to transfer" : "Pasirinkti norimą perduoti failą ar aplanką",
"Change" : "Keisti",
"New owner" : "Naujasis savininkas",
"Choose {file}" : "Pasirinkti{file}",
"Share" : "Bendrinti",
"Shared by link" : "Bendrinama pagal nuorodą",
"Shared" : "Bendrinama",
"Switch to list view" : "Perjungti į sąrašo rodinį",
"Switch to grid view" : "Perjungti į tinklelio rodinį",
"The file could not be found" : "Failas nerastas",
"Upload was cancelled by user" : "Įkelimas buvo atšauktas vartotojo",
"Not enough free space" : "Trūksta laisvos vietos",
"Operation is blocked by access control" : "Operacija yra užblokuota prieigos valdymo",
"Error during upload: {message}" : "Įkėlimo klaida: {message}",
"Loading current folder" : "Įkeliamas dabartinis aplankas",
"Retry" : "Bandyti dar kartą",
"No files in here" : "Čia failų nėra",
@@ -125,11 +132,14 @@
"Clipboard is not available" : "Iškarpinė neprieinama",
"WebDAV URL copied to clipboard" : "WebDAV URL nukopijuotas į iškarpinę",
"Show hidden files" : "Rodyti paslėptus failus",
"Crop image previews" : "Apkirpti paveikslų peržiūras",
"Crop image previews" : "Apkirpti paveikslėlių peržiūras",
"Enable the grid view" : "Įjungti grid peržiūrą",
"Enable folder tree" : "Įjungti direktorijų medį",
"Additional settings" : "Papildomi nustatymai",
"WebDAV" : "WebDAV",
"Copy to clipboard" : "Kopijuoti į iškarpinę",
"Use this address to access your Files via WebDAV" : "Naudokite šį adresą norėdami pasiekti failus per WebDAV",
"Warnings" : "Įspėjimai",
"Keyboard shortcuts" : "Spartieji klavišai",
"Rename a file" : "Pervadinti failą",
"Delete a file" : "Ištrinti failą",
@@ -141,7 +151,7 @@
"Owner" : "Savivinkas",
"Remove from favorites" : "Šalinti iš mėgstamų",
"Add to favorites" : "Pridėti į mėgstamus",
"Tags" : "Žymės",
"Tags" : "Žymos",
"Unable to create new file from template" : "Nepavyko sukurti naujo failo iš šablono",
"Pick a template for {name}" : "Pasirinkite šabloną, skirtą {name}",
"Create a new file with the selected template" : "Sukurti naują failą naudojant pasirinktą šabloną",
@@ -251,8 +261,8 @@
"Open" : "Atverti",
"Could not load info for file \"{file}\"" : "Nepavyko įkelti informacijos failui „{file}“",
"Details" : "Išsamiau",
"Please select tag(s) to add to the selection" : "Pasirinkite raktažodžius pridėti prie pažymėtų",
"Apply tag(s) to selection" : "Pritaikyti raktažodžiuis pasirinktiems",
"Please select tag(s) to add to the selection" : "Pasirinkite žymas, kurias pridėsite prie pažymėtų",
"Apply tag(s) to selection" : "Pritaikyti žymą(-as) pažymėtiems",
"Select directory \"{dirName}\"" : "Pasirinkite direktoriją \"{dirName}\"",
"Select file \"{fileName}\"" : "Pasirinkite failą \"{fileName}\"",
"Unable to determine date" : "Nepavyksta nustatyti datos",
@@ -299,7 +309,7 @@
"Copy direct link (only works for people who have access to this file/folder)" : "Kopijuoti tiesioginę nuorodą (veiks tik žmonėms, turintiems prieigą prie šio failo/aplanko)",
"Upload file" : "Įkelti failą",
"Not favorited" : "Nepažymėtas mėgstamu",
"An error occurred while trying to update the tags" : "Bandant atnaujinti žymes įvyko klaida",
"An error occurred while trying to update the tags" : "Įvyko klaida bandant atnaujinti žymas",
"Storage informations" : "Informacija apie saugyklą",
"Go to the previous folder" : "Eiti į ankstesnį aplanką",
"Unable to change the favourite state of the file" : "Nepavyksta pakeisti failo Lankomiausiųjų būsenos",

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