Compare commits

..

565 Commits

Author SHA1 Message Date
nextcloud-command 5d2bf1f697 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-11-24 14:31:05 +00:00
Grigory Vodyanov d32ffe587d fix(Dav): make absenceform textarea not overlap
Signed-off-by: Grigory Vodyanov <scratchx@gmx.com>
2025-11-04 12:46:55 +01:00
Benjamin Gaussorgues df8d838186 Merge pull request #56035 from nextcloud/cacheXmlPaginationResponse 2025-11-04 10:52:41 +01:00
Salvatore Martire 36d515da61 fix(pagination): render multistatus to XML before caching
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-11-04 09:20:30 +01:00
Nextcloud bot 4770c2f120 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-11-04 00:13:50 +00:00
Andy Scherzinger d8c404c1ef Merge pull request #56099 from nextcloud/rakekniven-patch-1
chore(i18n): Adapted spelling of MIME type
2025-11-03 23:15:27 +01:00
dependabot[bot] 256e74d410 Merge pull request #55933 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/dompurify-3.3.0 2025-11-03 20:30:58 +00:00
nextcloud-command d267d839e3 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-11-03 18:52:24 +01:00
rakekniven 1588abec25 chore(i18n): Adapted spelling of MIME type
Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-11-03 18:52:24 +01:00
Ferdinand Thiessen 68e492ef17 Merge pull request #56129 from nextcloud/chore/remove-oc-app-config
chore: remove deprecated `OC.AppConfig` in favor of `OCP.AppConfig`
2025-11-03 16:25:48 +01:00
Joas Schilling f98cabc20f Merge pull request #56155 from nextcloud/feat/update-supported-postgres-versions
feat: Update supported PostgreSQL versions
2025-11-03 15:21:34 +01:00
Ferdinand Thiessen 101560af75 chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-11-03 15:08:19 +01:00
Ferdinand Thiessen 15e610a63f chore: remove deprecated OC.AppConfig in favor of OCP.AppConfig
It was deprecated since Nextcloud 16 and can be replaced with
`OCP.AppConfig`.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-11-03 15:05:45 +01:00
Maxence Lange 4a399a3d0b Merge pull request #56159 from nextcloud/feat/noid/lexicon-internal-flag
feat(lexicon): add FLAG_INTERNAL
2025-11-03 12:55:21 -01:00
Benjamin Gaussorgues 69ec2ce26b Merge pull request #56120 from nextcloud/feat/snowflake-file-sequence 2025-11-03 14:02:33 +01:00
dependabot[bot] a1d6af4997 Merge pull request #56144 from nextcloud/dependabot/npm_and_yarn/globals-16.5.0 2025-11-03 12:58:58 +00:00
dependabot[bot] 3ed719afc5 Merge pull request #56148 from nextcloud/dependabot/npm_and_yarn/nextcloud/moment-1.3.5 2025-11-03 12:55:15 +00:00
dependabot[bot] 0dc0d593bb Merge pull request #56149 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/sass-1.93.3 2025-11-03 12:55:01 +00:00
Maxence Lange 1538692987 feat(lexicon): add FLAG_INTERNAL
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-11-03 11:39:25 -01:00
provokateurin a529cdf080 feat: Update supportes PostgreSQL versions
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-11-03 13:36:53 +01:00
Benjamin Gaussorgues 83dd9d313a feat(snowflakeids): add File Sequence Generator
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2025-11-03 11:45:13 +01:00
Kate e3edf43e28 Merge pull request #56096 from nextcloud/fix/56077/s3-configure-checksum-defaults 2025-11-03 11:08:33 +01:00
Stephan Orbaugh ef21c79368 Merge pull request #55717 from DaanSelen/fix-issue-55665
fix(ObjectStoreStorage): fix s3 path encoding (issue causing 55665)
2025-11-03 10:58:53 +01:00
nextcloud-command 13701dfda3 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-11-03 08:12:33 +00:00
dependabot[bot] cdcf1b6703 build(deps-dev): bump globals from 16.4.0 to 16.5.0
Bumps [globals](https://github.com/sindresorhus/globals) from 16.4.0 to 16.5.0.
- [Release notes](https://github.com/sindresorhus/globals/releases)
- [Commits](https://github.com/sindresorhus/globals/compare/v16.4.0...v16.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-03 08:09:38 +00:00
dependabot[bot] a26d2a553f Merge pull request #56145 from nextcloud/dependabot/npm_and_yarn/eslint-9.39.0 2025-11-03 08:06:20 +00:00
dependabot[bot] 87885e35d4 build(deps): bump @nextcloud/moment from 1.2.1 to 1.3.5
Bumps [@nextcloud/moment](https://github.com/nextcloud-libraries/nextcloud-moment) from 1.2.1 to 1.3.5.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-moment/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-moment/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-moment/compare/v1.2.1...v1.3.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-03 09:04:04 +01:00
dependabot[bot] 5169d9be94 build(deps-dev): bump sass in /build/frontend-legacy
Bumps [sass](https://github.com/sass/dart-sass) from 1.93.2 to 1.93.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.93.2...1.93.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-03 00:51:48 +00:00
dependabot[bot] bfd2ede77d Merge pull request #56147 from nextcloud/dependabot/npm_and_yarn/sass-1.93.3 2025-11-03 00:47:42 +00:00
dependabot[bot] 4dcaca4e13 build(deps-dev): bump sass from 1.93.2 to 1.93.3
Bumps [sass](https://github.com/sass/dart-sass) from 1.93.2 to 1.93.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.93.2...1.93.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-03 00:24:17 +00:00
dependabot[bot] eef8dc26ba build(deps-dev): bump eslint from 9.38.0 to 9.39.0
Bumps [eslint](https://github.com/eslint/eslint) from 9.38.0 to 9.39.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v9.38.0...v9.39.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-03 00:23:47 +00:00
Nextcloud bot 2232e6851e fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-11-03 00:13:38 +00:00
Thomas Citharel 143d486748 Merge pull request #56140 from nextcloud/rakekniven-patch-2
chore(i18n): Fixed grammar
2025-11-02 21:38:01 +01:00
nextcloud-command bb062d149e chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-11-02 19:22:56 +00:00
rakekniven 9f56a2fcfc chore(i18n): Fixed grammar
Reported at Transifex.

Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
2025-11-02 20:13:02 +01:00
dependabot[bot] 2c851228d3 Merge pull request #55928 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/msw-2.11.6 2025-11-02 18:45:36 +00:00
Joas Schilling ed050b2aae Merge pull request #56100 from nextcloud/rakekniven-patch-2
chore(l10n): Use numbered placeholders
2025-11-02 11:09:57 +01:00
rakekniven ee39b5093d chore(l10n): Use numbered placeholders
Reported in Transifex.

Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
2025-11-02 10:09:34 +01:00
Nextcloud bot 815338cdc0 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-11-02 00:13:29 +00:00
dependabot[bot] 35d6a829f1 Merge pull request #56122 from nextcloud/dependabot/composer/vendor-bin/rector/rector/rector-2.2.7 2025-11-01 21:33:09 +00:00
Ferdinand Thiessen 4a63bd2068 Merge pull request #56039 from nextcloud/fix/theming-legacy-app-config
fix(theming): use IAppConfig for all ThemingDefaults
2025-11-01 18:13:11 +01:00
dependabot[bot] 7885ac53e0 build(deps-dev): bump rector/rector in /vendor-bin/rector
Bumps [rector/rector](https://github.com/rectorphp/rector) from 2.2.5 to 2.2.7.
- [Release notes](https://github.com/rectorphp/rector/releases)
- [Commits](https://github.com/rectorphp/rector/compare/2.2.5...2.2.7)

---
updated-dependencies:
- dependency-name: rector/rector
  dependency-version: 2.2.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 17:34:39 +01:00
nextcloud-command 22ed856b31 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-11-01 16:02:58 +01:00
dependabot[bot] dc55aaf4d1 build(deps): bump dompurify in /build/frontend-legacy
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.2.7 to 3.3.0.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.2.7...3.3.0)

---
updated-dependencies:
- dependency-name: dompurify
  dependency-version: 3.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 16:02:58 +01:00
Ferdinand Thiessen 0bb1deb3de Merge pull request #56087 from nextcloud/chore/remove-oc-host
chore: remove deprecated hosts functions from OC
2025-11-01 15:06:42 +01:00
Ferdinand Thiessen f4ebcc7004 chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-11-01 14:42:02 +01:00
Ferdinand Thiessen cf7ed089e1 chore: remove deprecated hosts functions from OC
- deprecated since Nextcloud 17

- To replace `OC.getHost` use `window.location.host`.
- To replace `OC.getHostName` use `window.location.hostname`.
- To replace `OC.getPort` use `window.location.port`.
- To replace `OC.getProtocol` use `window.location.protocol`.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-11-01 14:40:00 +01:00
Ferdinand Thiessen 9f40d4cac3 Merge pull request #56088 from nextcloud/chore/remove-oc-blacklist
chore: remove `OC.fileIsBlacklisted`
2025-11-01 14:39:07 +01:00
Ferdinand Thiessen 8840b582c5 refactor(theming): migrate ThemingDefaults to OCP\AppFramework\Services\IAppConfig
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-11-01 14:16:40 +01:00
dependabot[bot] 195a9a08e4 Merge pull request #56121 from nextcloud/dependabot/composer/build/integration/behat/behat-3.26.0 2025-11-01 13:00:50 +00:00
Ferdinand Thiessen f52e838a18 chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-11-01 13:52:06 +01:00
Ferdinand Thiessen fd0a7351c3 chore: remove OC.fileIsBlacklisted
Its deprecated since Nextcloud 18 and nowadays we have much more complex
logic for this.
So the proper replacement is to use `validateFilename` from
`@nextcloud/files` package.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-11-01 13:50:14 +01:00
Ferdinand Thiessen f67d90ab27 Merge pull request #56067 from nextcloud/refactor/twofactor-vue3
refactor(twofactor_backupcodes): migrate to Typescript and Vue 3
2025-11-01 13:41:04 +01:00
Ferdinand Thiessen 9008175bff chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-11-01 12:40:02 +01:00
Ferdinand Thiessen 95915340f5 chore(twofactor_backupcodes): migrate to Vue 3
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-11-01 12:35:24 +01:00
Ferdinand Thiessen 11f4fa92cf refactor(twofactor_backupcodes): migrate Vue to script-setup and Typescript
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-11-01 12:34:26 +01:00
Ferdinand Thiessen 95f2d5dbac refactor(twofactor_backupcodes): migrate frontend to Typescript
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-11-01 12:34:26 +01:00
dependabot[bot] fb78ee8389 build(deps-dev): bump behat/behat in /build/integration
Bumps [behat/behat](https://github.com/Behat/Behat) from 3.25.0 to 3.26.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.25.0...v3.26.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-11-01 02:07:27 +00:00
Nextcloud bot 095e4709b7 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-11-01 00:13:28 +00:00
dependabot[bot] ab2242c214 build(deps-dev): bump msw in /build/frontend-legacy
Bumps [msw](https://github.com/mswjs/msw) from 2.11.3 to 2.11.6.
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v2.11.3...v2.11.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-31 17:18:31 +01:00
Joas Schilling 481edbd553 Merge pull request #56109 from nextcloud/dependabot/composer/mlocati/ip-lib-1.22.0
build(deps): Bump mlocati/ip-lib from 1.20.0 to 1.22.0
2025-10-31 16:57:29 +01:00
dependabot[bot] a7e1492db3 Merge pull request #55920 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/marked-16.4.1 2025-10-31 15:12:49 +00:00
Joas Schilling d1b9486d12 build(deps): Bump mlocati/ip-lib from 1.20.0 to 1.22.0
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-31 15:27:10 +01:00
Ferdinand Thiessen 700f4db967 Merge pull request #56063 from nextcloud/tests/taskprocessing
test(TaskProcessing): use proper types
2025-10-31 15:04:49 +01:00
dependabot[bot] 0ba6c779c8 Merge pull request #56000 from nextcloud/dependabot/npm_and_yarn/nextcloud/vue-9.1.0 2025-10-31 14:02:08 +00:00
Joas Schilling 10fa94ac94 Merge pull request #56108 from nextcloud/ci/noid/action-pin-versions
ci(actions): Pin action versions by hash
2025-10-31 10:22:38 +01:00
Joas Schilling 9198244e6d ci(actions): Pin action versions by hash
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-31 09:53:05 +01:00
dependabot[bot] 1650adedf7 build(deps): bump marked from 16.3.0 to 16.4.1 in /build/frontend-legacy
Bumps [marked](https://github.com/markedjs/marked) from 16.3.0 to 16.4.1.
- [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/v16.3.0...v16.4.1)

---
updated-dependencies:
- dependency-name: marked
  dependency-version: 16.4.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-31 09:35:15 +01:00
nextcloud-command 80af22ca2d chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-31 07:53:05 +00:00
dependabot[bot] 5c55141353 build(deps): bump @nextcloud/vue from 9.0.1 to 9.1.0
Bumps [@nextcloud/vue](https://github.com/nextcloud-libraries/nextcloud-vue) from 9.0.1 to 9.1.0.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-vue/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-vue/compare/v9.0.1...v9.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-31 08:40:48 +01:00
Nextcloud bot f77c4f7c09 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-31 00:13:46 +00:00
dependabot[bot] 8eae6cc44f Merge pull request #55590 from nextcloud/dependabot/npm_and_yarn/stylelint-16.25.0 2025-10-30 23:35:44 +00:00
dependabot[bot] aa20f7a0dd Merge pull request #55934 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/core-js-3.46.0 2025-10-30 23:16:24 +00:00
nextcloud-command 5d43550bd3 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-30 23:00:31 +00:00
dependabot[bot] eca835aae0 build(deps): bump core-js in /build/frontend-legacy
Bumps [core-js](https://github.com/zloirock/core-js/tree/HEAD/packages/core-js) from 3.45.1 to 3.46.0.
- [Release notes](https://github.com/zloirock/core-js/releases)
- [Changelog](https://github.com/zloirock/core-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/zloirock/core-js/commits/v3.46.0/packages/core-js)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-30 22:57:21 +00:00
Ferdinand Thiessen fdbd376c1f Merge pull request #56086 from nextcloud/chore/remove-oc-navigation
chore: remove deprecated `OC.redirect` and `OC.reload`
2025-10-30 23:43:22 +01:00
nextcloud-command 2b2dac9754 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-30 22:23:30 +00:00
Ferdinand Thiessen 439f825774 chore: remove deprecated OC.redirect and OC.reload
- Deprecated since Nextcloud 17

To replace `OC.redirect` directly use `window.location`.
To replace `OC.reload` directly use `window.location.reload`.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-30 23:14:37 +01:00
Ferdinand Thiessen f4e8cd13a4 Merge pull request #56089 from nextcloud/chore/remove-oc-set-get
chore: remove `OC.set` and `OC.get`
2025-10-30 23:13:06 +01:00
nextcloud-command 1c347bcac5 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-30 21:14:12 +00:00
Ferdinand Thiessen bea30fcb2b chore: remove OC.set and OC.get
Both are deprecated since Nextcloud 19.
- For `get`, if really needed, use https://lodash.com/docs#get
- And for `set` https://lodash.com/docs#set

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-30 22:06:11 +01:00
Arthur Schiwon 5060d64c9b Merge pull request #56085 from nextcloud/fix/55613/drop-hard-base-checks
fix(LDAP): drop hard base checks for now
2025-10-30 14:56:35 +01:00
Marcel Klehr 99d6276826 Merge pull request #55713 from nextcloud/feat/taskprocessing/user-facing-error-message
feat(TaskProcessing): user-facing error messages
2025-10-30 12:29:43 +01:00
Daniel 4ecd21784b Merge pull request #56090 from nextcloud/fix/mailer/log-errors
fix(Mailer): Log errors
2025-10-30 12:02:29 +01:00
Fiehe Christoph b87add2711 fix(s3): expose request_checksum_calculation and response_checksum_validation
Fix https://github.com/nextcloud/server/issues/56077

This commit makes the configuration settings 'request_checksum_calculation' and 'response_checksum_validation' of the S3Client from the AWS SDK for PHP configurable.

Signed-off-by: Fiehe Christoph  <c.fiehe@eurodata.de>
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2025-10-30 11:57:32 +01:00
Marcel Klehr b5f057cdbc fix: Fix psalm issue
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-30 10:49:28 +01:00
Marcel Klehr 8207afb7db fix: Use UserFacingProcessingException properly in tests
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-30 10:40:11 +01:00
Marcel Klehr 1c33239e06 fix: autoloaderchecker
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-30 10:29:17 +01:00
Marcel Klehr d04d575ed3 Merge branch 'master' into feat/taskprocessing/user-facing-error-message
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-30 10:13:39 +01:00
Marcel Klehr 3ee6999682 fix: Use substr to cut error messages
This allows for cutting them to longer lengths

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-30 10:07:57 +01:00
provokateurin d8294a8531 fix(Mailer): Log errors
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-10-30 08:42:12 +01:00
dependabot[bot] da13836617 Merge pull request #56004 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/babel/preset-typescript-7.28.5 2025-10-30 07:10:41 +00:00
Nextcloud bot 5ebb816d8b fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-30 00:13:15 +00:00
Ferdinand Thiessen af7c56a75e test(TaskProcessing): use proper types
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-30 00:07:56 +01:00
dependabot[bot] 50d825d979 build(deps-dev): bump @babel/preset-typescript in /build/frontend-legacy
Bumps [@babel/preset-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-typescript) from 7.27.1 to 7.28.5.
- [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.28.5/packages/babel-preset-typescript)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-29 21:27:40 +01:00
dependabot[bot] 9e1ed7078f Merge pull request #56002 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/p-limit-7.2.0 2025-10-29 20:27:12 +00:00
dependabot[bot] 91db72cf8a Merge pull request #55995 from nextcloud/dependabot/composer/vendor-bin/rector/rector/rector-2.2.5 2025-10-29 19:22:29 +00:00
Arthur Schiwon 57cb905580 fix(LDAP): drop hard base checks for now
The migration path is hard and unexpected. We can follow-up with a soft
setup check instead for a while, but needs to be discussed.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-10-29 18:21:45 +01:00
nextcloud-command 493d750c84 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-29 15:43:46 +00:00
dependabot[bot] e27f78a7fc build(deps): bump p-limit from 7.1.1 to 7.2.0 in /build/frontend-legacy
Dependabot couldn't find the original pull request head commit, 054e51c5527e0dbe053ed62841c77da0f68fb103.
2025-10-29 14:44:38 +00:00
Andy Scherzinger f06168f6c4 Merge pull request #55931 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/p-queue-9.0.0
build(deps): bump p-queue from 8.1.1 to 9.0.0 in /build/frontend-legacy
2025-10-29 13:19:40 +01:00
nextcloud-command 2fc4fac60d chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-29 11:13:03 +00:00
dependabot[bot] 2b1772cef9 build(deps): bump p-queue from 8.1.1 to 9.0.0 in /build/frontend-legacy
Bumps [p-queue](https://github.com/sindresorhus/p-queue) from 8.1.1 to 9.0.0.
- [Release notes](https://github.com/sindresorhus/p-queue/releases)
- [Commits](https://github.com/sindresorhus/p-queue/compare/v8.1.1...v9.0.0)

---
updated-dependencies:
- dependency-name: p-queue
  dependency-version: 9.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-29 11:09:53 +00:00
John Molakvoæ 9e321297f9 Merge pull request #56074 from nextcloud/fix/token-log 2025-10-29 10:02:13 +01:00
nextcloud-command 1b0a5a8044 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-29 08:52:28 +00:00
skjnldsv fae59e8569 fix(core): token change logging
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-10-29 08:49:28 +00:00
John Molakvoæ 52a9940255 Merge pull request #55728 from nextcloud/feat/snowflakeIds 2025-10-29 09:11:34 +01:00
dependabot[bot] ea998d93b0 build(deps-dev): bump rector/rector in /vendor-bin/rector
Bumps [rector/rector](https://github.com/rectorphp/rector) from 2.2.3 to 2.2.5.
- [Release notes](https://github.com/rectorphp/rector/releases)
- [Commits](https://github.com/rectorphp/rector/compare/2.2.3...2.2.5)

---
updated-dependencies:
- dependency-name: rector/rector
  dependency-version: 2.2.5
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-29 07:27:15 +01:00
Nextcloud bot 445cce4ed8 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-29 00:13:46 +00:00
Andy Scherzinger d91908bb96 Merge pull request #55829 from nextcloud/fix/ocm-probe-newer-endpoint
fix(ocm): probe standardized .well-known endpoint
2025-10-28 22:26:28 +01:00
dependabot[bot] a836c8c034 Merge pull request #56003 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/libphonenumber-js-1.12.25 2025-10-28 20:40:23 +00:00
nextcloud-command 107ad04481 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-28 20:55:44 +01:00
dependabot[bot] 37520fca89 build(deps): bump libphonenumber-js in /build/frontend-legacy
Bumps [libphonenumber-js](https://gitlab.com/catamphetamine/libphonenumber-js) from 1.12.24 to 1.12.25.
- [Changelog](https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/CHANGELOG.md)
- [Commits](https://gitlab.com/catamphetamine/libphonenumber-js/compare/v1.12.24...v1.12.25)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-28 20:55:44 +01:00
dependabot[bot] 0cbbad74a8 Merge pull request #56005 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/types/dockerode-3.3.45 2025-10-28 19:35:44 +00:00
dependabot[bot] b3abc41c4e Merge pull request #56006 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/vite-7.1.12 2025-10-28 18:00:18 +00:00
Ferdinand Thiessen 4b5494c5ba Merge pull request #55575 from nextcloud/fix/drag-drop-error
fix(files): make sure drag-and-drop and the upload menu behaves the same
2025-10-28 18:16:05 +01:00
Carl Schwan 336cc3fa35 feat(Db): Use SnowflakeId for previews
Allow to get an id for the storing the preview on disk before inserting
the preview on the DB.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-28 17:50:03 +01:00
Benjamin Gaussorgues c9b055a0d0 feat(database): introduce Snowflake IDs generator
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2025-10-28 17:50:03 +01:00
Daniel 7a3ed09822 Merge pull request #55906 from nextcloud/fix/taskprocessing-tests
fix: Use proper userId in taskprocessing trigger tests
2025-10-28 17:41:44 +01:00
Ferdinand Thiessen b5b81449a8 Merge pull request #56038 from nextcloud/chore/update-codeowners
chore: update codeowners
2025-10-28 17:14:48 +01:00
Ferdinand Thiessen 144e864806 Merge pull request #56033 from nextcloud/fix/cache-key
fix(Memcache): ensure global prefix depends on enabled apps
2025-10-28 17:03:49 +01:00
Ferdinand Thiessen 9bc56bd02d chore: update codeowners
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-28 16:20:38 +01:00
nextcloud-command 119ba0d887 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-28 15:17:26 +00:00
Ferdinand Thiessen d6925b6b79 fix(files): make sure drag-and-drop and the upload menu behaves the same
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-28 16:08:43 +01:00
Ferdinand Thiessen e4f06e102f Merge pull request #56034 from nextcloud/enh/noid/appmanager-upgrade-info-log
enh(AppManager): log which apps requires the upgrade procedure
2025-10-28 15:52:28 +01:00
Micke Nordin 111fa240bc fix(ocm): probe standardized .well-known endpoint
- Add `.well-known/ocm` to remote endpoint discovery checks.
- Improves compatibility with newer OCM deployments when probing remote servers.

Signed-off-by: Micke Nordin <kano@sunet.se>
2025-10-28 15:18:52 +01:00
Ferdinand Thiessen 4667634247 fix(theming): use IAppConfig for all ThemingDefaults
Fixes issues where values have the wrong type.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-28 14:58:17 +01:00
Andy Scherzinger 4174c580b3 Merge pull request #55471 from SUNET/kano-ocm-discovery
fix(OCM): align parameter naming with spec and extend OCMProvider
2025-10-28 14:52:04 +01:00
dependabot[bot] 2addf7b6bd Merge pull request #56001 from nextcloud/dependabot/npm_and_yarn/types/dockerode-3.3.45 2025-10-28 13:49:56 +00:00
Joas Schilling bd886170a7 Merge pull request #56037 from nextcloud/chore/cypress-split-random
chore: use different cypress-split seed per PR
2025-10-28 13:52:23 +01:00
Sebastian Krupinski 59c9aada8d Merge pull request #52882 from nextcloud/fix/issue-6838-use-old-event-information-when-new-is-missing
fix(CalDav): use old event information if new is missing
2025-10-28 08:38:08 -04:00
dependabot[bot] 32fef60c7d build(deps-dev): bump vite in /build/frontend-legacy
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.1.8 to 7.1.12.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v7.1.12/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.1.12/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-28 12:20:47 +00:00
Maxence Lange 4b274a858e Merge pull request #55830 from nextcloud/fix/noid/lazy-from-construct
fix(files-external): do not load lazy appconfig from construct
2025-10-28 10:29:26 -01:00
Joas Schilling be1af13323 Merge pull request #55990 from nextcloud/bump/lognormalizer
build: Bump log normalizer to 2.0.0
2025-10-28 08:23:53 +01:00
Nextcloud bot f8d1d7fd35 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-28 00:13:44 +00:00
dependabot[bot] 4b9ebe43b0 Merge pull request #55999 from nextcloud/dependabot/npm_and_yarn/vite-7.1.12 2025-10-27 22:16:57 +00:00
Ferdinand Thiessen 21a34287a9 chore: use different cypress-split seed per PR
This allows:
1. detect tests that depend on each other
2. reduces places where test fail because only the expensive tests are
   queued next to each other.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-27 23:16:09 +01:00
Ferdinand Thiessen 206b61b861 Merge pull request #55882 from nextcloud/chore/rector-phpunit-11
refactor: apply rector rules for PHPUnit 10
2025-10-27 23:15:36 +01:00
Ferdinand Thiessen c99d27436f chore: adjust duplicated use in User_LDAPTest
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-27 21:56:04 +01:00
Ferdinand Thiessen 7f125551f5 chore: migrate @small and @medium to attributes
Both are basically special groups, which we do not use.
But they also had a special meaning in the past which now only works
when set on the test class: They set the test timeout.

So for `@small` we just remove them, for `@medium` we remove where not
needed but keep it on the class where the full test class might make use
of the adjusted timeout.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-27 21:56:04 +01:00
Ferdinand Thiessen d6d6747a73 refactor: apply rector rules for PHPUnit 10
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-27 21:56:04 +01:00
Ferdinand Thiessen 8f74228147 chore: Nextcloud 32 is PHP 8.2+
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-27 21:56:04 +01:00
nextcloud-command f55d77f9a0 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-27 20:47:31 +00:00
dependabot[bot] 0beae74e20 build(deps-dev): bump vite from 7.1.11 to 7.1.12
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.1.11 to 7.1.12.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v7.1.12/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.1.12/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-27 20:36:00 +00:00
Andy Scherzinger adc20122c8 Merge pull request #56019 from nextcloud/style/noid/outlineShareExpiryIcon
Replace icon with outline variant
2025-10-27 19:11:36 +01:00
Arthur Schiwon ab9a92fac8 feat(AppManager): log which apps requires the upgrade procedure
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-10-27 18:05:00 +01:00
nextcloud-command 91e07ab274 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-27 16:54:14 +00:00
Joas Schilling 2ec7fa88cc fix(log): Fix call to normalize function
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-27 16:46:10 +01:00
Joas Schilling 44b4b4072b build: Bump log normalizer to 2.0.0
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-27 16:46:09 +01:00
Andy Scherzinger 67b8be5926 style(icons): Replace icon with outline variant
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2025-10-27 16:29:55 +01:00
Ferdinand Thiessen b4d19748fa fix(Memcache): ensure global prefix depends on enabled apps
- ensure the prefix is changed when an app is (dis)enabled
- ensure the app ids are included in the hash instead of only the
  version numbers
- ensure hash is deterministic by always use the same order.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-27 16:18:24 +01:00
Maxence Lange 07d3f1c313 fix(files-external): do not load lazy appconfig from construct
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-10-27 13:37:13 -01:00
Joas Schilling 6ef91f0549 Merge pull request #55910 from nextcloud/bugfix/55909/trim-meta-data
fix(bfp): Trim meta data so it can still be stored
2025-10-27 15:11:40 +01:00
Carl Schwan ca47f87359 Merge pull request #56026 from nextcloud/carl/bump-autoloader
chore(composer): Bump autoloader
2025-10-27 14:37:49 +01:00
Ferdinand Thiessen 1d4d6cad29 Merge pull request #55965 from nextcloud/artonge/refactor/port_files_version_to_vue3
refactor(files_versions): Migrate to Vue3
2025-10-27 14:16:22 +01:00
dependabot[bot] ae82824ef5 Merge pull request #55940 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/webpack-5.102.1 2025-10-27 12:14:29 +00:00
Carl Schwan 9e77ab44fc chore(composer): Bump autoloader
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-27 13:12:47 +01:00
Ferdinand Thiessen d0e25af1af Merge pull request #55954 from nextcloud/carl/fix-preview2
fix: Fetching previews on Oracle
2025-10-27 13:00:25 +01:00
Micke Nordin a171fbf318 fix(cloud-federation-api): align inviteAccepted parameter naming with spec
- Rename method parameter from `userId` to `userID`.
- Update log message and `setRecipientUserId` call to use new variable.
- Without this change, we can not accept invites.

Signed-off-by: Micke Nordin <kano@sunet.se>
2025-10-27 12:28:09 +01:00
Micke Nordin 495a01a725 fix(ocm): include provider field in OCMProvider serialization
- Add `provider` to `jsonSerialize()` output of OCMProvider.
- Ensures discovery consumers receive provider identifier along with
  endpoint, version, and resources.

Signed-off-by: Micke Nordin <kano@sunet.se>
2025-10-27 12:28:09 +01:00
Micke Nordin 802a3f5cae fix(ocm): ensure capabilities are set on OCMProvider from discovery data
- Call `setCapabilities()` with `capabilities` field when available.
- Prevents loss of provider capability information during discovery.

Signed-off-by: Micke Nordin <kano@sunet.se>
2025-10-27 12:28:09 +01:00
Andy Scherzinger 18d0f3322e Merge pull request #56018 from nextcloud/chore/noid/dependabotRemoveStable30
Remove stable30 from dependabot
2025-10-27 09:30:16 +01:00
Andy Scherzinger cc1d5a2405 chore(deps): Remove stable30 from dependabot
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2025-10-27 08:47:09 +01:00
Nextcloud bot 5d51ac0308 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-26 00:13:19 +00:00
Joas Schilling bc1b17faa2 Merge pull request #55989 from nextcloud/bugfix/noid/harden-profiler-write
fix(profiler): Harden profiler writes
2025-10-25 22:25:54 +02:00
dependabot[bot] 9a3e3e6067 build(deps-dev): bump @types/dockerode in /build/frontend-legacy
Bumps [@types/dockerode](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/dockerode) from 3.3.44 to 3.3.45.
- [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.45
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-25 01:22:04 +00:00
dependabot[bot] 59ab0b1fb0 build(deps-dev): bump @types/dockerode from 3.3.44 to 3.3.45
Bumps [@types/dockerode](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/dockerode) from 3.3.44 to 3.3.45.
- [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.45
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-25 01:18:58 +00:00
Nextcloud bot 3061fbaea8 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-25 00:13:33 +00:00
Louis Chmn 8dc64d794c refactor(files_versions): Migrate to Vue3
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-10-24 17:46:44 +02:00
Louis Chmn 2103410dac fix(files): Add Sidebar.Tab type in global context
And use proper optional argument syntax for its constructor

Signed-off-by: Louis Chmn <louis@chmn.me>
2025-10-24 16:54:13 +02:00
Louis Chmn 5f1e13b70b feat(files): Improve legacy file info typing
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-10-24 16:54:13 +02:00
Joas Schilling a65207abd9 fix(profiler): Harden profiler writes
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-24 15:23:20 +02:00
Daniel 1f9f41a079 Merge pull request #55306 from nextcloud/bug/noid/validate-filename-when-creating-file-from-template
Validate filename when creating file from template
2025-10-24 12:52:44 +02:00
dependabot[bot] 3bcdf10a41 build(deps-dev): bump webpack in /build/frontend-legacy
Bumps [webpack](https://github.com/webpack/webpack) from 5.102.0 to 5.102.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.102.0...v5.102.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-24 12:28:21 +02:00
Joas Schilling 16088cd827 Merge pull request #55819 from nextcloud/bugfix/noid/allow-federation-with-ocis-cloudids
fix(federation): Allow outgoing and incoming federation with oCIS federated cloud ids
2025-10-24 11:55:46 +02:00
Maksim Sukharev 802d93ec62 Merge pull request #55963 from nextcloud/fix/noid/new-user-deselect-group 2025-10-24 11:24:52 +02:00
nextcloud-command e0227e1fe9 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-24 08:55:21 +00:00
Maksim Sukharev ed4e7c781c fix(NewUserDialog): allow to deselect a group from the list
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2025-10-24 08:52:19 +00:00
John Molakvoæ 1a99477b4f Merge pull request #55916 from nextcloud/fix/mimetypes 2025-10-24 08:32:15 +02:00
Nextcloud bot e18d9deaf7 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-24 00:13:35 +00:00
Daniel Kesselberg 6e04437de6 fix: validate filename when creating file from template
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2025-10-24 01:05:48 +02:00
Louis 1b22ca25da Merge pull request #55908 from nextcloud/revert-trashbin-expiration-change
Revert trashbin expiration handling in #55742
2025-10-23 23:56:09 +02:00
Thomas Citharel b44f35a42a refactor(trashbin): get expiration class directly from Server::get
instead of going through Application container

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2025-10-23 23:20:10 +02:00
Thomas Citharel 05d5fdb429 fix(trashbin): include $availableSpace = 0 in checks when we need to delete expired files
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2025-10-23 23:20:10 +02:00
Thomas Citharel 29d72bfb32 revert(trashbin): 195d347 due to misunderstanding
See https://github.com/nextcloud/documentation/pull/13017#issuecomment-3425782690

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2025-10-23 23:20:10 +02:00
F. E Noel Nfebe ed1647b80d Merge pull request #55251 from nextcloud/fix/federated-share-hide-download
fix(sharing): Allow reasonable control for 'Hide download' on fed shares
2025-10-23 18:37:47 +01:00
nextcloud-command d9e001d29f chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-23 15:47:19 +00:00
Ferdinand Thiessen 8519b71bf1 fix(OC\MimeType): use proper webroot if needed
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-23 15:42:28 +00:00
nfebe 64016898d5 fix(sharing): Allow reasonable control 4 'Hide download' on fed shares
When creating public links from federated shares, users should be able to set
the 'Hide download' option independently as long as they are more restrictive
than the original share permissions.

Previously, the `checkInheritedAttributes` method was ignoring user preferences
and always overriding the hideDownload setting based solely on inherited
permissions, preventing users from disabling downloads even when the parent
share allowed them.

This fix implements some sort of inheritance logic:
- Users can only be MORE restrictive than parent shares, never LESS restrictive
- If parent hides downloads -> child MUST hide downloads (enforced)
- If parent allows downloads -> child can CHOOSE to hide or allow downloads
- If parent forbids downloads entirely -> child cannot enable downloads

Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-10-23 16:09:21 +01:00
Ferdinand Thiessen 52842415fb Merge pull request #55951 from nextcloud/refactor/dav-vue3
refactor(dav): migrate frontend to Typescript and Vue 3
2025-10-23 16:56:07 +02:00
John Molakvoæ 92efa073f0 Merge pull request #55955 from nextcloud/fix/multiple-dav-public-auth 2025-10-23 16:10:29 +02:00
Joas Schilling f236c0acb9 Merge pull request #55891 from nextcloud/chore/sample-config-convert-issue
docs: avoid indention error in converted config
2025-10-23 15:41:19 +02:00
Joas Schilling 48cbedc002 fix(sample-config): Fix syntax of deprecation
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-23 15:22:31 +02:00
Carl Schwan 1dc363581f fix: get all available previews on Oracle
Split the DB requests in chunk of 1000 and use INNER JOIN instead of IN
as this is better supported on all DB.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-23 14:10:15 +02:00
Daniel 43aa88326b Merge pull request #55953 from nextcloud/remove-use-of-iappcontainer
refactor(dav): remove use of IAppContainer in favor of ContainerInterface
2025-10-23 13:30:09 +02:00
skjnldsv 9c98b722f4 fix(dav): allow multiple link shares token in session
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-10-23 13:10:39 +02:00
John Molakvoæ ada3b1a9b9 Merge pull request #55952 from nextcloud/fix/search-fallback 2025-10-23 12:12:10 +02:00
Carl Schwan 9adf6cce55 fix: Fetching previews on Oracle
We need an explicit cast on Oracle as Oracle returns number as string.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-23 09:39:05 +02:00
Thomas Citharel 9d6c5a81c0 refactor(dav): remove use of IAppContainer in favor of ContainerInterface
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2025-10-23 09:36:13 +02:00
skjnldsv 89a2cae40d fix: join accounts_data instead of preferences when searching users
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-10-23 08:59:10 +02:00
Ferdinand Thiessen e91d4af206 chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-23 05:21:46 +02:00
Ferdinand Thiessen 3364f18ca0 test(dav): add e2e tests for availability & absence
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-23 05:21:46 +02:00
Ferdinand Thiessen 97b91027da refactor(dav): migrate Settings frontend to Vue 3
- migrate deprecated props
- use direct import of t rather than the mixin

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-23 05:21:46 +02:00
Ferdinand Thiessen e04597d8a1 refactor(dav): migrate ExampleContentDownloadButton to Typescript and script-setup
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-23 05:21:46 +02:00
Ferdinand Thiessen 954cdd4621 refactor(ExampleContentSettingsSection): migrate component to script-setup
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-23 05:21:46 +02:00
Ferdinand Thiessen b856adee88 refactor(dav): migrate UserAvailability to Typescript and script-setup
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-23 05:21:46 +02:00
Ferdinand Thiessen 7bcb1b4a4c refactor(dav): fix single-word component name by renaming view
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-23 05:21:46 +02:00
Ferdinand Thiessen f82269d0d1 refactor(dav): migrate services to Typescript
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-23 05:21:46 +02:00
Ferdinand Thiessen 502ab0e90b refactor(dav): migrate logger to Typescript
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-23 05:21:46 +02:00
Ferdinand Thiessen d4f33b46e9 chore: switch back to rollup-vite
rolldown is blocked by https://github.com/rolldown/rolldown/issues/6670

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-23 05:21:46 +02:00
Ferdinand Thiessen 372ac8ad78 chore: adjust Vue 3 based frontend vite config for multiple apps
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-23 05:21:45 +02:00
Ferdinand Thiessen 5cb16af66e Merge pull request #55943 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/wait-on-9.0.1
build(deps-dev): bump wait-on from 8.0.5 to 9.0.1 in /build/frontend-legacy
2025-10-23 02:32:20 +02:00
Nextcloud bot 9f05a0987d fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-23 00:27:08 +00:00
dependabot[bot] 0216315de6 Merge pull request #55941 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/zip.js/zip.js-2.8.8 2025-10-23 00:13:49 +00:00
Ferdinand Thiessen 2ccba8f476 chore(legacy): remove @zip.js/zip.js only used by root package
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-23 01:46:50 +02:00
Ferdinand Thiessen a4f60bc07b chore: remove wait-on only used by root package
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-23 01:42:00 +02:00
dependabot[bot] c2f087d348 Merge pull request #55935 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/libphonenumber-js-1.12.24 2025-10-22 21:28:35 +00:00
dependabot[bot] d55fa5061c build(deps-dev): bump wait-on in /build/frontend-legacy
Bumps [wait-on](https://github.com/jeffbski/wait-on) from 8.0.5 to 9.0.1.
- [Release notes](https://github.com/jeffbski/wait-on/releases)
- [Commits](https://github.com/jeffbski/wait-on/compare/v8.0.5...v9.0.1)

---
updated-dependencies:
- dependency-name: wait-on
  dependency-version: 9.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-22 20:13:07 +00:00
dependabot[bot] 9d0ac7461e build(deps-dev): bump @zip.js/zip.js in /build/frontend-legacy
Bumps [@zip.js/zip.js](https://github.com/gildas-lormeau/zip.js) from 2.8.4 to 2.8.8.
- [Release notes](https://github.com/gildas-lormeau/zip.js/releases)
- [Commits](https://github.com/gildas-lormeau/zip.js/compare/v2.8.4...v2.8.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-22 20:12:46 +00:00
dependabot[bot] ac37e1fa57 build(deps): bump libphonenumber-js in /build/frontend-legacy
Bumps [libphonenumber-js](https://gitlab.com/catamphetamine/libphonenumber-js) from 1.12.23 to 1.12.24.
- [Changelog](https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/CHANGELOG.md)
- [Commits](https://gitlab.com/catamphetamine/libphonenumber-js/compare/v1.12.23...v1.12.24)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-22 20:11:30 +00:00
Ferdinand Thiessen 86e47d82e8 Merge pull request #55432 from nextcloud/feat/vue3-demi-2
refactor: prepare Vue 3 migration
2025-10-22 22:07:27 +02:00
Ferdinand Thiessen 2369ad9601 Merge pull request #55629 from nextcloud/carl/cleanup-propagator
refactor(IPropagator): Cleanup implementation
2025-10-22 21:50:47 +02:00
Daniel Kesselberg 18531659bc docs: avoid indention error in converted config
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2025-10-22 18:22:16 +02:00
Ferdinand Thiessen 492a8c3a8b Merge pull request #55907 from nextcloud/carl/fix-preview-object-store
fix(preview): Fix deleting dummy preview in object store
2025-10-22 17:16:14 +02:00
Ferdinand Thiessen 9993f4eefa chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-22 17:10:29 +02:00
Ferdinand Thiessen 0ba4f5266e refactor(sharebymail): migrate app to Vue 3
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-22 17:10:28 +02:00
Ferdinand Thiessen 3c1e9cd99e chore: adjust linter configs for new layout
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-22 17:10:28 +02:00
Ferdinand Thiessen da5e27917f chore: move icons building from core sources to build helpers
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-22 17:10:28 +02:00
Ferdinand Thiessen f3383f9f90 chore: split frontend building into legacy Vue 2 and Vue 3
- Built the frontend in separate packages until we migrated everything
  to Vue 3.
- Separate logic into two packages controlled by main package.json

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-22 17:10:28 +02:00
Joas Schilling 0f183ce8fe fix(bfp): Trim meta data so it can still be stored
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-22 15:45:21 +02:00
Carl Schwan d6889e9220 fix(preview): Fix deleting dummy preview in object store
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-22 15:40:26 +02:00
Marcel Klehr 606b0631d4 fix: Use proper userId in taskprocessing trigger tests
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-22 15:25:06 +02:00
Ferdinand Thiessen ab551c4c8a chore(Template): allow styles from dist folder
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-22 14:57:47 +02:00
Ferdinand Thiessen 7978ee82a4 Merge pull request #55885 from nextcloud/chore/e2e-test-server
chore: migrate Cypress to `@nextcloud/e2e-test-server`
2025-10-22 14:34:15 +02:00
Ferdinand Thiessen cfe886a96e chore: replace cypress-delete-downloads-folder with simple implementation
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-22 12:39:59 +02:00
Ferdinand Thiessen 1082dee5a4 chore: migrate Cypress to @nextcloud/e2e-test-server
- chore: use vite preprocessor for Cypress

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-22 11:57:17 +02:00
Joas Schilling f050c32e88 Merge pull request #55893 from nextcloud/fix/federation-optional-dependency
fix: Make federation TrustedServers dependency optional in RemotePlugin
2025-10-22 10:54:25 +02:00
Joas Schilling 00a6a73f3f Merge pull request #55827 from nextcloud/fix/ocm-owner-sharing
fix(ocm-sharing): The owner needs to be set for sharing to work
2025-10-22 10:26:36 +02:00
Micke Nordin f7dcd1d71b fix(ocm-sharing): The owner needs to be set for sharing to work
The specification says that the display name is optional and can thus
be empty, and in fact it is from oCIS and CERNBox shares.

The correct thing to set is the required opaque id from the remote
provider, the `owner` which will allways be there.

Signed-off-by: Micke Nordin <kano@sunet.se>
2025-10-22 08:54:39 +02:00
Ferdinand Thiessen 9290922a72 Merge pull request #55892 from nextcloud/tests/cypress-filter
test: adjust cypress tests for changes filter behavior
2025-10-22 08:49:50 +02:00
Louis f2eb772e7b Merge pull request #55796 from nextcloud/artonge/fix/hide_non_writable_nodes
fix(FilesPicker): Prevent selection of nodes without create permission
2025-10-22 07:18:00 +02:00
Nextcloud bot 61754a1b8f fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-22 00:12:27 +00:00
nfebe 3276aff83c fix: Make federation TrustedServers dependency optional in RemotePlugin
The federation app is not always installed, causing QueryException when
`OCA\Federation\TrustedServers` is injected as a hard dependency.

Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-10-22 00:19:31 +02:00
nextcloud-command 58e9be7e81 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-21 20:30:08 +00:00
nextcloud-command c627561a6e chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-21 20:27:23 +00:00
Louis Chmn 58a9fdad52 chore(deps): Bump @nextcloud/dialogs to v7.1.0
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-10-21 20:27:22 +00:00
Louis Chmn 7b8463e93a fix(FilePicker): Modernise dav imports
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-10-21 20:27:22 +00:00
Louis Chmn cb062d2691 fix(FilesPicker): Prevent selection of nodes without create permission
And remove the disable callback for the button as it is not needed anymore.

This gives a better experience as the nodes do not have a pointer for cursor, and the submit button does not react when clicking on them.

Signed-off-by: Louis Chmn <louis@chmn.me>
2025-10-21 20:27:22 +00:00
Ferdinand Thiessen 0587860c7a Merge pull request #55834 from nextcloud/artonge/doc/improve_trashbin_config
docs(trashbin): Improve clarity of files retention config
2025-10-21 22:16:55 +02:00
F. E Noel Nfebe 87b94c7f52 Merge pull request #55580 from nextcloud/fix/share-permissions-password-validation
fix(files_sharing): Only send password on change
2025-10-21 22:08:17 +02:00
Ferdinand Thiessen 81718a035a test: adjust cypress tests for changes filter behavior
In https://github.com/nextcloud/server/issues/53038 we changed the
behavior: The filename filter is reset when changing the directory.
So we need to also adjust the Cypress tests.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-21 19:38:20 +02:00
Nextcloud bot 43de6b82ac fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-21 16:52:04 +00:00
Louis Chmn c5c6c7de2b fix(trashbin): Improve clarity of files retention config
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-10-21 18:27:24 +02:00
nextcloud-command ad745da3ca chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-21 16:05:20 +00:00
nfebe a28834b163 fix(files_sharing): Only send password on change
The password param should never be sent if the intention is not
remove it or update it.

This commit adapts the frontend and backend to this rule to avoid weird bugs
especially around updating new shares.

Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-10-21 16:54:55 +01:00
Côme Chilliet 30b5f00b0d Merge pull request #49578 from nextcloud/fix-updater-secret
fix(updater): Stop expiring secret prematurely
2025-10-21 16:26:13 +02:00
Maxence Lange 11de3cf0a7 Merge pull request #55864 from nextcloud/fix/noid/tmp-switch-to-non-lazy
fix(lexicon): switch bool value to non-lazy
2025-10-21 11:18:33 -01:00
Nextcloud bot 58f3ff0e0e fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-21 10:51:50 +00:00
Maxence Lange 1329091836 fix(lexicon): remove default lazy param
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-10-21 09:27:41 -01:00
Maxence Lange edfc339bf5 fix(lexicon): switch bool value to non-lazy
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-10-21 09:27:40 -01:00
Louis Chmn 7f3ef27cd5 refactor: adjust updater code to match code style
Co-authored-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-10-21 12:20:34 +02:00
Andy Scherzinger 4696524c9c Merge pull request #55863 from nextcloud/fix/noid/execute-lexicon-repair-step
fix(lexicon): execute repair step
2025-10-21 11:53:32 +02:00
Stephan Orbaugh d49dc7ee16 Merge pull request #55676 from IONOS-Productivity/feature/add_tests_to_settings_delegation
Add unit tests for AdminDelegation command and AuthorizedGroupService
2025-10-21 11:34:10 +02:00
Josh Richards f600f26391 fix(updater): Stop expiring secret prematurely
Signed-off-by: Josh Richards <josh.t.richards@gmail.com>
2025-10-21 11:06:54 +02:00
John Molakvoæ 7fca1c87ee Merge pull request #55810 from nextcloud/skjnldsv-patch-1 2025-10-21 10:13:18 +02:00
John Molakvoæ 1c57699fda Merge pull request #55846 from victorlap/patch-1 2025-10-21 09:35:06 +02:00
Victor 281bbd1db6 feat(files): Add font-variant-numeric to selected files list
Signed-off-by: Victor <victorlap@outlook.com>
2025-10-21 09:19:34 +02:00
John Molakvoæ 365a040dc3 fix: temporarily disable public shares chunking capability
Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-10-21 09:00:48 +02:00
Julius Knorr 332ab743c5 Merge pull request #55730 from nextcloud/fix-translate-on-unsupported-screen
fix: translation on /unsupported screen
2025-10-21 08:34:54 +02:00
Marcel Klehr 43d28f4e5d Merge pull request #55741 from nextcloud/feat/taskprocessing-trigger-aware-provider
feat(TaskProcessing): Introduce ITriggerableProvider
2025-10-21 08:33:52 +02:00
Nextcloud bot 2991526058 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-21 00:12:35 +00:00
dependabot[bot] b703ed2a78 Merge pull request #55869 from nextcloud/dependabot/npm_and_yarn/vite-6.4.1 2025-10-20 20:45:10 +00:00
Luka Trovic f5629b0221 fix: translation on /unsupported screen
Signed-off-by: Luka Trovic <luka@nextcloud.com>
2025-10-20 22:31:08 +02:00
dependabot[bot] 647cf5172e build(deps): bump vite from 6.3.6 to 6.4.1
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.3.6 to 6.4.1.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/create-vite@6.4.1/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-20 20:22:14 +00:00
dependabot[bot] 5df05111cb Merge pull request #55591 from nextcloud/dependabot/npm_and_yarn/nextcloud/browser-storage-0.5.0 2025-10-20 20:18:56 +00:00
Andy Scherzinger 201af1af4d Merge pull request #55838 from nextcloud/dependabot/composer/vendor-bin/rector/rector/rector-2.2.3
build(deps-dev): bump rector/rector from 2.2.2 to 2.2.3 in /vendor-bin/rector
2025-10-20 22:18:49 +02:00
nextcloud-command 5ec0702a11 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-20 16:36:38 +00:00
Maxence Lange 6329bcbcda fix(lexicon): execute repair step
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-10-20 15:32:18 -01:00
dependabot[bot] 0637f958c8 build(deps): bump @nextcloud/browser-storage from 0.4.0 to 0.5.0
Bumps [@nextcloud/browser-storage](https://github.com/nextcloud-libraries/nextcloud-browser-storage) from 0.4.0 to 0.5.0.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-browser-storage/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-browser-storage/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-browser-storage/compare/v0.4.0...v0.5.0)

---
updated-dependencies:
- dependency-name: "@nextcloud/browser-storage"
  dependency-version: 0.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-20 16:27:16 +00:00
dependabot[bot] 7a47fd6d04 build(deps-dev): bump stylelint from 16.24.0 to 16.25.0
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.24.0 to 16.25.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.24.0...16.25.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-20 16:19:13 +00:00
dependabot[bot] cfc72b789c Merge pull request #55837 from nextcloud/dependabot/npm_and_yarn/webpack-5.102.1 2025-10-20 15:42:36 +00:00
nextcloud-command 26d43bd9cf chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-20 14:58:04 +00:00
dependabot[bot] 76d110d21f build(deps-dev): bump webpack from 5.102.0 to 5.102.1
Bumps [webpack](https://github.com/webpack/webpack) from 5.102.0 to 5.102.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.102.0...v5.102.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-20 14:26:32 +00:00
Andy Scherzinger 78865e3fc2 Merge pull request #55836 from nextcloud/dependabot/npm_and_yarn/libphonenumber-js-1.12.24
build(deps): bump libphonenumber-js from 1.12.23 to 1.12.24
2025-10-20 16:09:43 +02:00
Marcel Klehr 7f15598083 fix: address review comments
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-20 15:59:25 +02:00
Marcel Klehr 6a1501a7d6 fix: address review comments
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-20 15:59:25 +02:00
Marcel Klehr 044e92bf4e feat(TaskProcessing): Introduce ITriggerableProvider
Signed-off-by: Marcel Klehr <mklehr@gmx.net>

# Conflicts:
#	lib/private/TaskProcessing/Db/TaskMapper.php
2025-10-20 15:59:25 +02:00
Marcel Klehr 9df303f876 fix: address review comments
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-20 15:54:10 +02:00
Joas Schilling 75a1a75d4c fix(federation): Increase the size of owner to allow oCIS cloud ids
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-20 15:38:37 +02:00
Joas Schilling f1f67f428a fix(federation): Allow outgoing federation with oCIS federated cloud ids
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-20 15:38:36 +02:00
Richard Steinmetz 4c17229789 Merge pull request #55628 from nextcloud/fix/dav/remove-invalid-shares-federated-cal-shares
fix(dav): dav:remove-invalid-shares removing federated calendar shares
2025-10-20 13:19:52 +02:00
Misha M.-Kupriyanov 4275825177 chore(tests): make "execute" method in Add command public
to simplify test execution

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
2025-10-20 12:55:17 +02:00
Misha M.-Kupriyanov b0413be681 chore(tests): add unit tests for AdminDelegation command and AuthorizedGroupService
Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
2025-10-20 12:55:17 +02:00
max-nextcloud f222324920 Merge pull request #55848 from nextcloud/fix/oc-dialogs-button-variants
fix(dialogs): migrate buttons to variant prop
2025-10-20 11:32:19 +02:00
nextcloud-command 526ff235bd chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-20 08:48:11 +00:00
Côme Chilliet a36ebef1c3 Merge pull request #55742 from nextcloud/fix-trashbin-expiration
fix(trashbin): make sure the trashed files are deleted if we don't have any available space left
2025-10-20 10:47:17 +02:00
dependabot[bot] f7f506e588 build(deps): bump libphonenumber-js from 1.12.23 to 1.12.24
Bumps [libphonenumber-js](https://gitlab.com/catamphetamine/libphonenumber-js) from 1.12.23 to 1.12.24.
- [Changelog](https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/CHANGELOG.md)
- [Commits](https://gitlab.com/catamphetamine/libphonenumber-js/compare/v1.12.23...v1.12.24)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-20 10:33:09 +02:00
Côme Chilliet 35f9d6f6e0 Merge pull request #55751 from nextcloud/fix/fix-property-objects-serialization
fix(dav): Restrict properties allowed object classes
2025-10-20 10:30:01 +02:00
Côme Chilliet 1686bb61a0 Merge pull request #55719 from nextcloud/fix-object-store-storage-free-space
fix(objectstore): add named parameter for like query in object storage free space detection
2025-10-20 09:37:33 +02:00
Nextcloud bot 96f50c2c94 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-20 00:12:24 +00:00
Nextcloud bot 89cca718c8 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-19 00:12:24 +00:00
nextcloud-command 2985914d5d chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-18 18:48:02 +00:00
Max b9d3ad6d00 fix(dialogs): migrate buttons to variant prop
In Nextcloud Vue v8 the `type` prop for dialog buttons
was deprecated and replaces with the `variant` prop.

In v9 the deprecated props are removed.
Use the `variant` prop in the deprecated `OC.dialogs`.

This is a follow up for #55726.

Signed-off-by: Max <max@nextcloud.com>
2025-10-18 20:12:49 +02:00
dependabot[bot] 262a1fc6df build(deps-dev): bump rector/rector in /vendor-bin/rector
Bumps [rector/rector](https://github.com/rectorphp/rector) from 2.2.2 to 2.2.3.
- [Release notes](https://github.com/rectorphp/rector/releases)
- [Commits](https://github.com/rectorphp/rector/compare/2.2.2...2.2.3)

---
updated-dependencies:
- dependency-name: rector/rector
  dependency-version: 2.2.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-18 01:09:42 +00:00
Nextcloud bot 6720d7e15c fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-18 00:12:28 +00:00
Louis 77194d5232 Merge pull request #54102 from nextcloud/ensure-cloud-key
fix: Ensure CLOUD key exists before resolving Cloud ID
2025-10-17 18:20:59 +02:00
Ferdinand Thiessen 3882e52355 Merge pull request #55377 from nextcloud/dependabot/npm_and_yarn/nextcloud/password-confirmation-6.0.0
build(deps): bump @nextcloud/password-confirmation from 5.3.1 to 6.0.0
2025-10-17 16:25:18 +02:00
Joas Schilling 8e1f19c37e Merge pull request #55395 from nextcloud/fix/noid/return-actually-installed-apps
fix(Apps): fix install command check on existing apps
2025-10-17 16:21:58 +02:00
Ferdinand Thiessen 2e76c31f3a chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-17 13:39:35 +00:00
Ferdinand Thiessen f224d6680b test: adjust cypress tests for updated @nextcloud/password-confirmation
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-17 15:01:10 +02:00
Ferdinand Thiessen b1a7eeaacb refactor: adjust password confirmation for new @nextcloud/package-confirmation package
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-17 15:01:10 +02:00
dependabot[bot] fb49c91ca7 build(deps): bump @nextcloud/password-confirmation from 5.3.1 to 6.0.1
Bumps [@nextcloud/password-confirmation](https://github.com/nextcloud-libraries/nextcloud-password-confirmation) from 5.3.1 to 6.0.0.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-password-confirmation/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-password-confirmation/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-password-confirmation/compare/v.5.3.1...v6.0.0)

---
updated-dependencies:
- dependency-name: "@nextcloud/password-confirmation"
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-17 15:01:03 +02:00
John Molakvoæ c53a9bfde8 Merge pull request #55820 from nextcloud/chore/deps-browserslist 2025-10-17 13:22:40 +02:00
skjnldsv 4786defcbb chore: bump @nextcloud/browserslist-config from 3.0.1 to 3.1.0
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-10-17 12:23:20 +02:00
Richard Steinmetz 3813a774e9 fix(dav): dav:remove-invalid-shares removing federated calendar shares
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2025-10-17 12:10:42 +02:00
Arthur Schiwon 9d63530262 Merge pull request #54429 from nextcloud/feat/noid/cache-ldap-mapping
feat: locally cache frequently requested LDAP mapping data
2025-10-17 12:08:51 +02:00
Arthur Schiwon 49f1c3f00e refactor(LDAP): switch from prepares statement to query builder
- has the advantage that queries will be reported in the query.log when
  configured

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-10-17 11:09:31 +02:00
Arthur Schiwon 155b75027c feat: locally cache frequently requested LDAP mapping data
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-10-17 11:09:31 +02:00
Nextcloud bot c316ed655a fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-17 00:12:29 +00:00
Maxence Lange 7da7de8409 Merge pull request #55634 from nextcloud/fix/noid/ocm-value-format
fix(ocm): format notifications
2025-10-16 20:17:21 -01:00
dependabot[bot] 324ae80b4e Merge pull request #55680 from nextcloud/dependabot/npm_and_yarn/nextcloud/vue-8.32.0 2025-10-16 21:14:17 +00:00
nextcloud-command d6299f93f5 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-16 18:07:05 +00:00
dependabot[bot] 3d08708f13 build(deps): bump @nextcloud/vue from 8.31.0 to 8.32.0
Bumps [@nextcloud/vue](https://github.com/nextcloud-libraries/nextcloud-vue) from 8.31.0 to 8.32.0.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-vue/blob/v8.32.0/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-vue/compare/v8.31.0...v8.32.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-16 19:58:41 +02:00
Ferdinand Thiessen 39dc1185a6 Merge pull request #55799 from nextcloud/fix/dialog-props
fix: migrate to non-deprecated dialog props
2025-10-16 19:41:24 +02:00
nextcloud-command 08eb5879dd chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-16 16:09:41 +00:00
Ferdinand Thiessen 470ff8d3d3 fix: migrate to non-deprecated dialog props
In Nextcloud Vue v8 some props for dialog buttons were deprecated (type
for e.g. primary or nativeType) those are replaced with `variant` and
`type`.
In v9 the deprecated props are removed - thus this breaks with
nextcloud-dialogs v7 which is based on Vue 3.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-16 17:55:11 +02:00
dependabot[bot] 093c95f260 Merge pull request #55681 from nextcloud/dependabot/npm_and_yarn/cypress-split-1.24.24 2025-10-16 15:49:13 +00:00
Maxence Lange b2a6c75b44 fix(ocm): format notifications
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-10-16 14:30:04 -01:00
Côme Chilliet 28c8ef1306 fix(dav): Allow array of array of scalars, and fix error message
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-10-16 15:49:07 +02:00
Joas Schilling 6fc190ef4c Merge pull request #55803 from nextcloud/bugfix/55274/dont-fallback-from-3letter-languages-to-2letter
fix(l10n): Don't fallback from 3-letter languages to 2-letter
2025-10-16 13:43:13 +02:00
Joas Schilling 9e4ac50206 fix(l10n): Don't fallback from 3-letter languages to 2-letter
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-16 11:46:01 +02:00
Joas Schilling 8b51705b4e Merge pull request #55757 from nextcloud/test/net/localhost-by-ip
test(net): include test for localhost by IP
2025-10-16 11:38:11 +02:00
Marcel Klehr 7320322d52 Merge pull request #55735 from nextcloud/feat/taskprocessing-api-next-batch
feat(TaskProcessingApiController): Add new next_batch endpoint
2025-10-16 09:55:49 +02:00
Arthur Schiwon 84be993633 Merge pull request #55800 from nextcloud/fix/file-drop/chunked-upload
Fix chunked upload for file drop shares
2025-10-16 09:43:22 +02:00
provokateurin 3a242166f7 fix(FilesDropPlugin): Fix request method and nickname header checks
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-10-16 08:47:28 +02:00
Joas Schilling 3f85bcc69a Merge pull request #55777 from nextcloud/bugfix/55706/fix-sample-config-parsing
fix(sample-config): Fix sample config so parsing works again
2025-10-16 08:32:50 +02:00
Nextcloud bot 9938bc70b7 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-16 00:12:27 +00:00
provokateurin 2201f77aa6 fix(FilesDropPlugin): Fix name conflict resolution for chunked uploads
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-10-15 23:52:05 +02:00
provokateurin cde80c14d3 fix(FilesDropPlugin): Disable plugin for chunked uploads
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-10-15 23:52:04 +02:00
provokateurin 5fa4c3d8fd fix(publicremote): Always grant read and delete permission for chunked uploads to a share
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-10-15 23:37:58 +02:00
Arthur Schiwon 6df6b58e6c Merge pull request #55797 from nextcloud/fixDbType
fix(setupCheck): Fix checking database type
2025-10-15 22:44:35 +02:00
Andy Scherzinger 6266000b99 Merge pull request #55750 from nextcloud/feat/globalscale-url
feat: add new link endpoint when using globalscale
2025-10-15 21:26:48 +02:00
nextcloud-command 92dab6633c chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-15 19:00:59 +00:00
Ferdinand Thiessen 7fbc2ca25e feat: add new link endpoint when using globalscale
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-15 18:58:10 +00:00
Git'Fellow 3f976c2548 fix(setupCheck): Fix checking database type
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2025-10-15 20:15:55 +02:00
Ferdinand Thiessen 50f287402a Merge pull request #55791 from nextcloud/chore/ensure-no-only
chore: ensure no `.only` is commited in test files
2025-10-15 17:57:00 +02:00
Joas Schilling 074d69820f fix(sample-config): Fix more typos that break RST parsing
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-15 16:30:49 +02:00
Ferdinand Thiessen 3cf210a9a5 chore: ensure no .only is commited in test files
`.only` is only to be used for development, but must not be committed.
Instead failing tests which should be kept for later should be skipped
(`.skip`).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-15 16:00:01 +02:00
dependabot[bot] ac9ff0d3fa build(deps-dev): bump cypress-split from 1.24.23 to 1.24.24
Bumps [cypress-split](https://github.com/bahmutov/cypress-split) from 1.24.23 to 1.24.24.
- [Release notes](https://github.com/bahmutov/cypress-split/releases)
- [Commits](https://github.com/bahmutov/cypress-split/compare/v1.24.23...v1.24.24)

---
updated-dependencies:
- dependency-name: cypress-split
  dependency-version: 1.24.24
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-15 13:54:49 +00:00
Ferdinand Thiessen 65cdf14667 Merge pull request #55726 from nextcloud/chore/update-dialog-v7
chore: Update `@nextcloud/dialogs` to v7.0.0
2025-10-15 15:51:41 +02:00
Ferdinand Thiessen cc4f8309d0 chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-15 14:25:11 +02:00
Ferdinand Thiessen b3762488e8 test: adjust FilePicker tests to new dialogs version
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-15 14:25:10 +02:00
Ferdinand Thiessen 2b39cb49ab refactor: adjust code for breaking changes in @nextcloud/dialogs v7
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-15 13:45:12 +02:00
Ferdinand Thiessen f2b309b6ee chore: Update @nextcloud/dialogs to v7.0.0
This is the first step torwards Vue 3.
As this package is a Vue version agnostic version of dialogs, written in
Vue 3.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-15 13:45:11 +02:00
Marcel Klehr d5220d6a15 Merge pull request #55776 from nextcloud/fix/text2image-better-attributes
fix(TextToImage): Set better attribute for routes
2025-10-15 13:07:50 +02:00
Daan Selen 4b4b39e7ec fix(ObjectStoreStorage): Encode original-path in writeStream by @frabe1579
Signed-off-by: Daan Selen <dselen@systemec.nl>
2025-10-15 11:53:39 +02:00
Marcel Klehr 3f527661b1 fix: Create new class instead of extending existing class
to make it easier to use this across nextcloud versions

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-15 11:20:00 +02:00
Ferdinand Thiessen 0c1be89f1b Merge pull request #55747 from nextcloud/chore/migrate-cypress-vitest
refactor(test): migrate Cypress component test to vitest
2025-10-15 10:55:44 +02:00
Stephan Orbaugh 567a988c6c Merge pull request #55100 from invario/previews-better-logging
feat(previews): improved logging for movie previews
2025-10-15 10:54:09 +02:00
Joas Schilling 0938c5f1ce fix(config-sample): Deduplicate warning
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-15 10:47:29 +02:00
Joas Schilling 5ef933ff6c fix(sample-config): Fix more list, note and warning blocks
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-15 10:45:27 +02:00
Marcel Klehr a5ce35ac84 fix(TextToImage): Set better attribute for routes
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-15 09:55:30 +02:00
Joas Schilling 126944b346 fix(sample-config): Fix sample config so parsing works again
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-15 09:38:15 +02:00
Marcel Klehr 7619f78aa2 Merge pull request #55732 from nextcloud/fix/text-processing-no-admin-required
fix(TextProcessingApiController): Set better attribute on routes
2025-10-15 09:31:05 +02:00
Marcel Klehr 81bf9f342c fix: regenerate openapi descriptions
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-15 09:30:12 +02:00
Marcel Klehr 954b140da6 Merge pull request #55716 from nextcloud/feat/taskprocessing-successrate-setupcheck
feat(settings): Introduce TaskProcessingSuccessRate setup check
2025-10-15 09:28:36 +02:00
Nextcloud bot 3aae74236a fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-15 00:12:30 +00:00
Daniel d39ae92aaf Merge pull request #54819 from nextcloud/fix/issue-53949-imip-quirks-mode
fix: iMip reply from outlook.com does not contain organizer property
2025-10-14 21:29:11 +02:00
Côme Chilliet ef2e7170a4 Merge pull request #55754 from nextcloud/fix/fix-cachewrapper-shouldencrypt
fix: Fix crash in files_version about uninitialized property
2025-10-14 20:32:28 +02:00
invario 13500be1d1 feat(previews): improved logging for movie previews
Signed-off-by: invario <67800603+invario@users.noreply.github.com>
2025-10-14 13:17:09 -04:00
SebastianKrupinski ea2180d6ad fix: iMip reply from outlook.com does not contain organizer property
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2025-10-14 12:44:06 -04:00
Côme Chilliet 1a0b220c6b fix(dav): Allow arrays (of scalars) in property values
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-10-14 17:50:53 +02:00
Carl Schwan 04a21650cc Merge pull request #55720 from nextcloud/carl/remote-querybuilder-execute
feat(querybuilder): Remove deprecated IQueryBuilder::execute
2025-10-14 17:19:37 +02:00
Marcel Klehr 8cf1504a76 fix: Apply suggestion from @kyteinsky
Co-authored-by: Anupam Kumar <kyteinsky@gmail.com>
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 16:58:40 +02:00
Marcel Klehr 86316f7c45 fix(TaskProcessing): Update autoloaders
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 16:58:38 +02:00
Côme Chilliet ad9574970a fix: Fix crash in files_version about uninitialized property
Fix "Typed property OC\\Files\\Cache\\Cache::$storage must not be accessed before initialization"

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-10-14 16:56:07 +02:00
Marcel Klehr 97943cef58 fix(TaskProcessing): Update openapi descriptions for user-facing error messages
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 16:53:41 +02:00
Marcel Klehr e12c0ed7a3 test(TaskProcessing): Add test for user-facing error messages
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 16:53:41 +02:00
Marcel Klehr 7373f11af6 feat(TaskProcessing): user-facing error messages
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 16:53:41 +02:00
Côme Chilliet 0283fbccb2 fix(dav): Restrict properties allowed object classes
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-10-14 16:42:09 +02:00
Marcel Klehr be8e168f38 fix: Address psalm issues and review comments
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 15:51:31 +02:00
Marcel Klehr bd2e629e3b fix: Update openapi descriptions
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 15:29:40 +02:00
Marcel Klehr 5e0c7a5813 fix(TextProcessingApiController): Set better attribute on routes
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 15:29:40 +02:00
Marcel Klehr 76eba41d77 fix: Fix logic error to make tests pass
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 15:23:01 +02:00
Marcel Klehr 4ec76cf834 Merge pull request #55715 from nextcloud/fix/taskprocessing/setupcheck-pickupspeed
fix(settings): Improve TaskProcessingPickupSpeed setup check
2025-10-14 15:11:33 +02:00
Marcel Klehr e7ac6ff71b fix: Apply suggestion from @kyteinski
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 15:05:55 +02:00
Ferdinand Thiessen e7357dffec chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-14 14:32:51 +02:00
Ferdinand Thiessen a66135f32f chore: remove Cypress component testing
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-14 14:30:14 +02:00
Ferdinand Thiessen 3f6f277dba refactor(test): migrate component tests in core to vitest
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-14 14:30:14 +02:00
Ferdinand Thiessen 81cfb9580a refactor(test): migrate cypress component tests to vitest
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-14 14:30:14 +02:00
Ferdinand Thiessen 5aa1f5bb84 Merge pull request #55718 from nextcloud/chore/remove-oca-sharing-external-link-actions
chore!(files_sharing): remove deprecated `OCA.Sharing.ExternalLinkActions`
2025-10-14 14:25:53 +02:00
Ferdinand Thiessen 48378aede3 Merge pull request #55731 from nextcloud/jtr/fix-files-stream-quota-actual
fix(files): decrement quota by actual bytes written in stream_write
2025-10-14 13:56:27 +02:00
nextcloud-command 9aa38aaacc chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-14 11:41:49 +00:00
Ferdinand Thiessen 23be816568 chore!(files_sharing): remove deprecated OCA.Sharing.ExternalLinkActions
This API was deprecated in Nextcloud 23.
It was replaced with `OCA.Sharing.ExternalShareAction` which now have a proper API
by using `registerSidebarAction` from `@nextcloud/sharing` instead.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-14 13:34:54 +02:00
Marcel Klehr 5c5c9384b1 fix: Apply suggestion from @julien-nc
Co-authored-by: Julien Veyssier <julien-nc@posteo.net>
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 11:52:49 +02:00
Marcel Klehr f7a89fee24 fix: Apply suggestion from @julien-nc
Co-authored-by: Julien Veyssier <julien-nc@posteo.net>
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 11:52:37 +02:00
Marcel Klehr 16da8bbc8a fix(TaskProcessingApiController): Implement getNextScheduledTasks for next_batch endpoint
in order to avoid hitting the DB with multiple 1 row requests

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 11:50:29 +02:00
Marcel Klehr 858118274d fix: Apply suggestion from @julien-nc
Co-authored-by: Julien Veyssier <julien-nc@posteo.net>
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 11:22:03 +02:00
Marcel Klehr 2286b9f57d fix: Apply suggestion from @julien-nc
Co-authored-by: Julien Veyssier <julien-nc@posteo.net>
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 11:21:54 +02:00
Marcel Klehr 1ba5f7d53a fix(settings): Remove copypasta
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 11:20:59 +02:00
Thomas Citharel cea23fb53d refactor(trashbin): make the ExpireTrash background job use the Trashbin::expire static method
Instead of handling everything itself, and so that the available space is considered in deleting
trashed files even if not expired yet.

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2025-10-14 11:07:25 +02:00
Maksim Sukharev 8659002d7a Merge pull request #55655 from nextcloud/fix/noid/throw-failed-share 2025-10-14 11:03:48 +02:00
Thomas Citharel 195d347240 fix(trashbin): make sure the trashed files are deleted if we don't have any available space left
Logic taken from the files_versions expiration. It seems the second
argument from the isExpired method wasn't even used anywhere.

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2025-10-14 10:58:30 +02:00
Christoph Wurst 3e90ce89eb test(net): include test for localhost by IP
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2025-10-14 10:33:35 +02:00
Kate ae0aa175b3 Merge pull request #55661 from nextcloud/fix/55519/ldap-cert-req-handling 2025-10-14 09:42:16 +02:00
nextcloud-command 9e5111f983 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-14 07:36:00 +00:00
Marcel Klehr 80eb3dd0d0 feat(TaskProcessingApiController): Add new next_batch endpoint
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 09:35:18 +02:00
Maksim Sukharev a4d440e1f0 fix(files_sharing): correctly handle error in case of failing share creation
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2025-10-14 09:27:05 +02:00
Maksim Sukharev 9c8b500116 Merge pull request #55666 from nextcloud/fix/53038/clear-search 2025-10-14 09:22:50 +02:00
Marcel Klehr 33922faf4a fix: Change messages to use days instead of hours
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-14 08:42:56 +02:00
Marcel Klehr ea8ab8e192 Merge pull request #55646 from nextcloud/feat/taskprocessing/is-internal
enh(TaskProcessing): Introduce internal task types
2025-10-14 08:25:00 +02:00
Kate ffbbdb2d04 Merge pull request #54953 from nextcloud/fix/noid/lighter-team-request 2025-10-14 07:56:14 +02:00
Nextcloud bot 736259c4df fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-14 00:12:22 +00:00
Josh bd43cb7d04 fix(files): decrement quota by actual bytes written in stream_write
The quota is now decremented by the actual number of bytes written ($written) rather than the intended size.

This ensures quota tracking stays accurate even if fwrite writes fewer (or more - i.e. from underlying buffering/etc) bytes than requested.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-10-13 18:26:48 -04:00
Kate 692d265d4a Merge pull request #55727 from nextcloud/bug/noid/update-sample-config-mp3 2025-10-13 18:46:21 +02:00
nextcloud-command 4e87741bab chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-13 16:12:38 +00:00
Daniel Kesselberg 8ed6722a4b docs(previews): mp3 preview provider is no longer enabled by default
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2025-10-13 17:53:34 +02:00
Maksim Sukharev 196aa9b41b fix(files): clear search input on directory navigation
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2025-10-13 17:28:44 +02:00
Daniel 2cb2ffe608 Merge pull request #55658 from nextcloud/bug/noid/disable-mp3-previews-by-default
fix: disable mp3 preview provider
2025-10-13 17:22:29 +02:00
Carl Schwan 1eff9e5c90 feat(querybuilder): Remove deprecated IQueryBuilder::execute
This won't work when we update to doctrine DBAL 4 and all usages in
server were ported away.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-13 17:02:04 +02:00
Thomas Citharel 5c8bdad828 fix(objectstore): add named parameter for like query
to avoid 'object::%' to be considered as a column
(`la colonne \\u00ab object::% \\u00bb n'existe pas` on PG)

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2025-10-13 16:18:18 +02:00
Carl Schwan 65f52c47b8 Merge pull request #55674 from nextcloud/carl/deprecated-dbal
Port away from deprecated Doctrine APIs
2025-10-13 15:10:15 +02:00
Marcel Klehr f296f9055c fix: Run cs:fix
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-13 14:45:17 +02:00
Marcel Klehr 62fd3576c9 test(settings): Add tests for TaskProcessingSuccessRate setup check
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-13 14:42:51 +02:00
Marcel Klehr 6c9af3f8ee fix(settings): Introduce TaskProcessingSuccessRate setup check
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-13 14:35:55 +02:00
Maxence Lange 9ba3ce27cb fix(team-api): get all teams details in a single request
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-10-13 14:21:15 +02:00
Marcel Klehr 5a48887a2b fix(settings): Improve TaskProcessingPickupSpeed setup check
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-13 14:07:33 +02:00
provokateurin 2552950299 fix(core): Fix TeamsApiController typing
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-10-13 13:59:54 +02:00
Kate 2ea30f9149 Merge pull request #55712 from nextcloud/fix/noid/root-path-globalsiteselector 2025-10-13 13:51:16 +02:00
Carl Schwan 49d522717c refactor(dbal): Port away from remaining IQueryBuilder::execute calls
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-13 13:44:15 +02:00
Carl Schwan 9095a36b94 refactor(dbal): Port away from getDatabasePlatform() instanceof pattern
Use getDatabaseProvider instead.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-13 13:44:08 +02:00
Marcel Müller 4c5d1a2e7b Merge pull request #55711 from nextcloud/fix/noid/fix-32bit-test-runs
fix: Unset classes in container to reduce side-effects between tests
2025-10-13 12:53:53 +02:00
Maxence Lange 9209540db5 feat(route): globalsiteselector as root url generator
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-10-13 09:19:20 -01:00
Marcel Müller 0ca6384097 fix: Unset classes in container to reduce side-effects between tests
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2025-10-13 11:56:13 +02:00
Marcel Klehr 13eb2d1cbd feat(TaskProcessing): Introduce internal task types
which are not shown in the assistant UI

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-13 11:07:40 +02:00
Kate 4c2e71e953 Merge pull request #55706 from nextcloud/jtr/fix-config-sample-activity-app 2025-10-13 10:06:33 +02:00
dependabot[bot] 28eb8879ef Merge pull request #55683 from nextcloud/dependabot/composer/vendor-bin/openapi-extractor/nextcloud/openapi-extractor-1.8.6 2025-10-13 07:38:59 +00:00
Nextcloud bot 22791c5843 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-13 00:12:24 +00:00
dependabot[bot] 7133a2a7d0 Merge pull request #55684 from nextcloud/dependabot/composer/vendor-bin/rector/rector/rector-2.2.2 2025-10-12 17:40:53 +00:00
Nextcloud bot 8d2a95678f fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-12 00:12:19 +00:00
Josh 2eaac49063 fix: cs/lint
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-10-11 10:22:08 -04:00
Josh 7e8183dfdb chore: update for cs lint
Corrected formatting and removed extra spaces in comments.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-10-11 09:44:28 -04:00
Josh 1de46be60f fix: Move system-level activity app settings to the sample config
These entries are currently hard-coded in the manual itself (on the config parameter page that is generated from this config sample file). This PR moves them to the proper place, the config sample file itself.

A separate PR in the docs repo will remove their hard-coded entry in the manual, but this is not dependent on that PR.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-10-11 09:29:59 -04:00
Louis e4866860cb Merge pull request #55657 from nextcloud/artonge/fix/do_not_expose_system_address_book_in_contacts 2025-10-11 13:11:26 +02:00
dependabot[bot] 934c2d214d build(deps-dev): bump rector/rector in /vendor-bin/rector
Bumps [rector/rector](https://github.com/rectorphp/rector) from 2.1.7 to 2.2.2.
- [Release notes](https://github.com/rectorphp/rector/releases)
- [Commits](https://github.com/rectorphp/rector/compare/2.1.7...2.2.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-11 01:10:28 +00:00
dependabot[bot] 0c17af55d3 build(deps): bump nextcloud/openapi-extractor
Bumps [nextcloud/openapi-extractor](https://github.com/nextcloud-releases/openapi-extractor) from 1.8.5 to 1.8.6.
- [Changelog](https://github.com/nextcloud-releases/openapi-extractor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-releases/openapi-extractor/compare/v1.8.5...v1.8.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-11 01:10:12 +00:00
Nextcloud bot 65bd4b2d69 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-11 00:13:13 +00:00
Thomas Citharel 76a0fb6feb Merge pull request #55651 from nextcloud/fix-calendars-properties-cache 2025-10-10 19:24:55 +02:00
Louis Chemineau e976a1323f chore: Register system_addressbook_exposed in lexicon
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-10-10 19:02:41 +02:00
Louis Chemineau d14c96b26d fix(contacts): Do not expose SAB in /contactsmenu
When hitting the `/contactsmenu/contacts` endpoint with the `dav.system_addressbook_exposed` config switch set to `"no"`, the system address book content is still listed in the response.

This ensure that we do not expose unexpectedly the system address book.

Signed-off-by: Louis Chemineau <louis@chmn.me>
2025-10-10 19:02:40 +02:00
Thomas Citharel 22b90c2319 fix(caldav): avoid selecting every custom properties from table if we have no calendars to filter
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2025-10-10 18:50:31 +02:00
Carl Schwan 7a43bf26ca refactor(dbal): Migrate away from Type::getName
Instead use Type::lookupName

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-10 16:13:09 +02:00
Carl Schwan b0c6ef5821 refactor(dbal): Port away from deprecated hasPrimaryKey
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-10 15:44:43 +02:00
Louis 9dfd6f1533 Merge pull request #55654 from nextcloud/artonge/fix/do_not_happen_streams 2025-10-10 14:43:05 +02:00
Carl Schwan c89ca89f2f Merge pull request #55083 from nextcloud/carl/preview-interface-cleanup
refactor(preview): Cleanup a bit the public interface
2025-10-10 11:30:02 +02:00
Louis Chmn 00ec57efd6 fix(S3): Only append streams if non-seekable
Later, when we rewind the stream in `writeMultiPart` during retry, both streams were rewinded, so the resulting stream was bigger than expected.

Inspired by https://github.com/aws/aws-sdk-php/blob/master/src/S3/ObjectUploader.php#L136-L146

Signed-off-by: Louis Chmn <louis@chmn.me>
2025-10-10 09:54:05 +02:00
Joas Schilling b469840b3d Merge pull request #55645 from nextcloud/bugfix/noid/comments-by-apps
Fix comments when used by other apps
2025-10-10 08:36:54 +02:00
Nextcloud bot 3efb030837 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-10 00:13:17 +00:00
Arthur Schiwon fbd29bcf7f fix(LDAP): properly disable are require TLS certificate verification
- the old approach lead connection issues, as ldap_set_option was called
  too late. Specifically it needs to be called before ldap_connect and set
  globally!
- The old approach also connected it to the ldapTLS configuration, which
  has a misleading naming. It indicates StartTLS usage only, not plain TLS
  connections.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-10-09 20:22:37 +02:00
Daniel Kesselberg ca717f0b54 fix: disable mp3 preview provider
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2025-10-09 18:13:17 +02:00
Carl Schwan cb82a9ef04 refactor(preview): Cleanup a bit the public interface
* Remove old IProvider interface, it's been deprecated since 17.0.0 (8
  years)
* Add type hinting to the IPreview interface and mark it as consumeable
  only
* Remove unused arguments from GeneratorHelper

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-09 17:41:13 +02:00
Josh 9e9bf4988a Merge pull request #55582 from nextcloud/jtr/chore-app-encryption-desc
chore: improve SSE default crypto module app description
2025-10-09 11:38:09 -04:00
nextcloud-command 4efb40f46d chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-09 14:44:15 +00:00
Joas Schilling d332091105 fix(comments): Don't throw type error when no itemType or itemId is given
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-09 16:35:16 +02:00
Joas Schilling d659cbcd0e fix(comments): Support user IDs that are numbers, e.g. "42"
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-09 16:35:15 +02:00
Joas Schilling 8ab5cf4009 fix(comments): Correctly await the getComments() call
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-09 16:35:14 +02:00
Joas Schilling fa17c55588 fix(comments): Use the correct object when autocompleting mentions for other apps
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-10-09 16:35:13 +02:00
Côme Chilliet 48c2dd6279 Merge pull request #55517 from nextcloud/carl/cron-service
refactor: Move cron setup to a service
2025-10-09 09:52:34 +02:00
Marcel Klehr 9d98f85348 Merge pull request #54793 from nextcloud/fix/fileaccess-getbyancestorinstorage-sharding
fix(FileAccess): Make getByAncestorInStorage sharding ready
2025-10-09 09:51:51 +02:00
Marcel Klehr 3522a3375e fix(FileAccess): Make getAncestorInStorage pass sharding tests
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-09 09:27:50 +02:00
Marcel Klehr b158a77365 fix(FileAccess): Try to fix type error
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-09 09:27:50 +02:00
Marcel Klehr 1e9a5019b4 fix(FileAccess): Set filecache size column in tests
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-09 09:27:50 +02:00
Marcel Klehr 62bff06aeb fix(FileAccess): Chunk parent query
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-09 09:27:50 +02:00
Marcel Klehr 9ccc798655 fix(FileAccess): Make getByAncestorInStorage sharding ready
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-09 09:27:50 +02:00
F. E Noel Nfebe 8e5f436814 Merge pull request #55080 from nextcloud/fix/54511/federation-trusted-server-suggestions
fix(sharing): Adapt share suggestions to match trusted servers configs
2025-10-09 08:29:53 +02:00
nextcloud-command 8c7be09d93 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-09 06:05:36 +00:00
nfebe c9bb6eedc6 fix: Include email when searching share suggestions
Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-10-09 06:53:51 +01:00
nfebe c1d9e22c51 fix(sharing): Adapt share suggestions to match trusted servers configs
When `show_federated_shares_to_trusted_servers_as_internal` is enabled
but `show_federated_shares_as_internal` is not, filter federated share
suggestions to only include trusted servers. Previously, searching for
an email address would suggest non-trusted federated servers.

Resolved: #54511
Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-10-09 06:53:46 +01:00
Nextcloud bot 0793253d37 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-09 00:25:27 +00:00
John Molakvoæ d907a77902 Merge pull request #55624 from nextcloud/fix/catch-nodes-systemtags 2025-10-08 21:06:12 +02:00
John Molakvoæ (skjnldsv) bd04c26427 fix(systemtags): catch empty nodes
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2025-10-08 20:38:20 +02:00
Richard Steinmetz f6593a7464 Merge pull request #55630 from nextcloud/fix/caldav/disable-cal-federation-remote-access
fix(caldav): disable remote access when calendar federation is off
2025-10-08 19:22:37 +02:00
Ferdinand Thiessen c6a02e562d Merge pull request #55608 from nextcloud/chore/drop-karma
chore(tests): drop legacy Karma tests
2025-10-08 17:20:48 +02:00
Carl Schwan 475c84722f refactor(IPropagator): Cleanup implementation
- Add missing type hinting
- Use only public methods from IStorage instead of relying on internal
  \OC\Storage methods
- Refactor HomePropagator to use ignore argument from Propagator instead
  of reimplementing the same logic.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-08 17:15:18 +02:00
Richard Steinmetz 0df9e73e6c fix(caldav): disable remote access when calendar federation is off
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2025-10-08 17:14:00 +02:00
Benjamin Gaussorgues 3aa0c23e40 Merge pull request #54543 from nextcloud/preview-db-rework 2025-10-08 16:39:23 +02:00
Carl Schwan fed7a33d1f refactor(preview-object-store): Refactor object store backend
Simplify logic

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-08 14:07:07 +02:00
Carl Schwan bef3996c3e fix(preview): Make version column a string
And move it to a different table so that we don't have to pay the
storage cost when not using it (most of the times).

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-08 14:07:06 +02:00
Kate 6c362cb38d Merge pull request #55623 from nextcloud/fix/caldav/principal-encoding-inconsistencies 2025-10-08 12:56:12 +02:00
Richard Steinmetz c12ce7083c fix(caldav): encoding inconsistencies in event search provider
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2025-10-08 12:14:00 +02:00
Kate fcbb8be904 Merge pull request #55514 from nextcloud/carl/more-old-execute 2025-10-08 10:30:46 +02:00
Nextcloud bot 8f21e3523b fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-08 00:13:18 +00:00
Ferdinand Thiessen 3827eab2d3 Merge pull request #55605 from nextcloud/chore/33-uses-82
chore: updated 3rdparty to PHP8.2
2025-10-07 20:59:23 +02:00
Joas Schilling d6cafee543 Merge pull request #55382 from nextcloud/bugfix/noid/files-live-photo-permission
fix(live-photo): Allow files-live-photo meta data with edit permissions
2025-10-07 20:55:53 +02:00
Daniel 38c9bd99f5 Merge pull request #53869 from nextcloud/bug/53856/hide-password-on-submit
feat(login): hide password on form submit
2025-10-07 20:07:27 +02:00
Daniel Kesselberg ec1ea3253c feat(login): hide password on form submit
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2025-10-07 19:37:51 +02:00
Daniel db3e845d19 Merge pull request #55557 from nextcloud/refactor/use-iemailaddressvalidator
refactor: use IEmailValidator.isValid instead of IMailer.validateEmailAddress
2025-10-07 19:15:32 +02:00
Kate fb0b56de3b Merge pull request #55529 from nextcloud/share-recursion-error 2025-10-07 18:11:29 +02:00
Daniel 0274a463ab Merge pull request #55577 from nextcloud/fix/repair-tree-description
fix(RepairTree): Update files:repair-tree description
2025-10-07 17:49:31 +02:00
Côme Chilliet e739898cc7 Merge pull request #55400 from nextcloud/carl/remove-legacy-search-provider
refactor: Remove legacy search provider
2025-10-07 16:51:12 +02:00
Josh 71b196b0e1 fix: Apply suggestions from code review
Co-authored-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-10-07 10:44:04 -04:00
Ferdinand Thiessen 0a86f9cc55 chore: updated 3rdparty to PHP8.2
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-07 16:19:53 +02:00
Côme Chilliet b984e329fc Merge pull request #55574 from nextcloud/carl/view-deprecated
chore: Explicitely mark \OC\Files\View as internal
2025-10-07 16:07:36 +02:00
Ferdinand Thiessen 1f24865caf chore(tests): drop legacy Karma tests
we no longer use Karma tests, all actual tests have been migrated to
vitest. The leftover tests are already covered by unit tests in
packages.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-07 14:27:14 +02:00
Anna 87c90f9678 Merge pull request #55581 from nextcloud/fix/noid/dont-catch-general-db-errors
fix(ooo): don't catch general DB exceptions
2025-10-07 13:36:55 +02:00
Côme Chilliet 8950f9fe74 Merge pull request #55462 from IONOS-Productivity/fix/admin_delegation-show-all-priority-items
Fix admin delegation show all priority items
2025-10-07 12:03:32 +02:00
Marcel Klehr ef6e9744a9 Merge pull request #55573 from nextcloud/fix/taskprocessing/list-command
fix(TaskProcessing): Make sure list command int filter parameters are parsed as ints
2025-10-07 11:38:49 +02:00
Carl Schwan 104aef324d refactor(core/Command): Port away from View
Use IRootFolder instead.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-07 10:11:01 +02:00
Kate e67fe86c9d Merge pull request #55578 from nextcloud/carl/dead-code-sabre-node 2025-10-07 09:55:37 +02:00
Marcel Klehr b12b38b70e Merge pull request #55579 from nextcloud/fix/taskprocessing/max-task-age-6-months
fix(TaskProcessing): Increase MAX_TASK_AGE to 6 months
2025-10-07 08:22:39 +02:00
Robin Windey d84d6ca1cf Merge pull request #55527 from nextcloud/feature/update-devcontainer
Update Nextcloud Devcontainer
2025-10-07 06:56:18 +02:00
Robin Windey 88fde78a79 feat: Update Nextcloud Devcontainer
Removed deprecations:
* docker-compose version
* apt-key add command in docker installation

Updates:
* Upgrade from PHP8.3 to PHP8.4 (currently recommended for NC) from ppa:ondrej/php
* Use nodejs 22 by default

Optimization:
* Just install docker-ce-cli, not the full docker suite (speeds up docker build)
* Make sure user "devcontainer" has UID 1000. This increases the containers filesystem compatibility to most (unix-based) host systems because the default user there always has 1000 as well
* Ensure devcontainer user has access to docker without sudo

Signed-off-by: Robin Windey <ro.windey@gmail.com>
2025-10-07 04:38:33 +00:00
Nextcloud bot e0d3f6137e fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-10-07 00:13:19 +00:00
Ferdinand Thiessen 7f6e76ac6e Merge pull request #55585 from nextcloud/occ-auth-token-name
feat: allow setting custom name for occ generated app password
2025-10-07 01:53:08 +02:00
Ferdinand Thiessen b6496c8ce6 Merge pull request #55537 from nextcloud/dependabot/npm_and_yarn/p-queue-9.0.0
build(deps): bump p-queue from 8.1.1 to 9.0.0
2025-10-07 01:51:10 +02:00
nextcloud-command ac7c9cdd12 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-06 22:41:53 +00:00
dependabot[bot] 9c9af0f069 Merge pull request #55538 from nextcloud/dependabot/composer/build/integration/behat/behat-3.25.0 2025-10-06 22:41:50 +00:00
dependabot[bot] eb77daac0b build(deps): bump p-queue from 8.1.1 to 9.0.0
Bumps [p-queue](https://github.com/sindresorhus/p-queue) from 8.1.1 to 9.0.0.
- [Release notes](https://github.com/sindresorhus/p-queue/releases)
- [Commits](https://github.com/sindresorhus/p-queue/compare/v8.1.1...v9.0.0)

---
updated-dependencies:
- dependency-name: p-queue
  dependency-version: 9.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-07 00:34:35 +02:00
dependabot[bot] d5d2083322 Merge pull request #55536 from nextcloud/dependabot/npm_and_yarn/webpack-5.102.0 2025-10-06 21:44:41 +00:00
nextcloud-command a180c9197e chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-10-06 21:24:50 +00:00
dependabot[bot] 21b844f4cf build(deps-dev): bump webpack from 5.101.3 to 5.102.0
Bumps [webpack](https://github.com/webpack/webpack) from 5.101.3 to 5.102.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.101.3...v5.102.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 21:16:30 +00:00
dependabot[bot] bb6a265c55 build(deps-dev): bump behat/behat in /build/integration
Bumps [behat/behat](https://github.com/Behat/Behat) from 3.24.1 to 3.25.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.24.1...v3.25.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 21:13:30 +00:00
dependabot[bot] 253fe7e269 Merge pull request #55534 from nextcloud/dependabot/npm_and_yarn/puppeteer-24.23.0 2025-10-06 21:07:41 +00:00
dependabot[bot] 4d1f9def8d build(deps-dev): bump puppeteer from 24.22.3 to 24.23.0
Bumps [puppeteer](https://github.com/puppeteer/puppeteer) from 24.22.3 to 24.23.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.22.3...puppeteer-v24.23.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 20:51:05 +00:00
Andy Scherzinger 7dc189a222 Merge pull request #55586 from nextcloud/fix/codeowners
chore(CODEOWNERS): include mjs and cjs for frontend
2025-10-06 21:48:01 +02:00
Ferdinand Thiessen 747179200c chore(CODEOWNERS): include mjs and cjs for frontend
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-10-06 21:11:03 +02:00
Kate 9e5ee588a0 Merge pull request #55583 from nextcloud/build/psalm/raise-php-version 2025-10-06 21:06:59 +02:00
dependabot[bot] eb042b842c Merge pull request #55532 from nextcloud/dependabot/npm_and_yarn/dockerode-4.0.9 2025-10-06 17:52:45 +00:00
dependabot[bot] 2e2f98614e build(deps-dev): bump dockerode from 4.0.8 to 4.0.9
Bumps [dockerode](https://github.com/apocas/dockerode) from 4.0.8 to 4.0.9.
- [Release notes](https://github.com/apocas/dockerode/releases)
- [Commits](https://github.com/apocas/dockerode/compare/v4.0.8...v4.0.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 17:36:05 +00:00
dependabot[bot] a24e84da49 Merge pull request #55533 from nextcloud/dependabot/npm_and_yarn/testing-library/jest-dom-6.9.1 2025-10-06 17:33:04 +00:00
Robin Appelman de69824a59 feat: allow setting custom name for occ generated app password
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-10-06 18:37:03 +02:00
dependabot[bot] 4df8758b29 build(deps-dev): bump @testing-library/jest-dom from 6.8.0 to 6.9.1
Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 6.8.0 to 6.9.1.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v6.8.0...v6.9.1)

---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
  dependency-version: 6.9.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-06 16:30:00 +00:00
Côme Chilliet 818f54d9ca Merge pull request #55576 from nextcloud/fix/ldap-configuration-prefix-list
fix(ldap): Fix copying and creating LDAP configuration
2025-10-06 18:22:18 +02:00
provokateurin 4b90a2c730 build(psalm): Raise PHP version to 8.2
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-10-06 18:01:51 +02:00
Anna Larch d4c9e09c5f fix(ooo): don't catch general DB exceptions
Signed-off-by: Anna Larch <anna@nextcloud.com>
2025-10-06 17:44:33 +02:00
Josh 1a5d07034b chore: improve SSE default crypto module app description
Updated the app information for the encryption module to include detailed encryption features, warnings, and notes for existing files.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-10-06 11:32:33 -04:00
Marcel Klehr a6f899f925 fix(TaskProcessing): Increase MAX_TASK_AGE to 6 months
to comply with the EU AI act

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-06 16:44:53 +02:00
Carl Schwan 3004f628e9 refactor(Sabre/Node): Remove dead code
property_cache is no longer used.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 16:33:28 +02:00
Marcel Klehr e237ac54cc fix(RepairTree): Update files:repair-tree description
to note that running the command multiple times may be necessary

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-06 16:25:45 +02:00
Carl Schwan f450cda3aa chore: Explicitely mark \OC\Files\View as internal
It's in OC and should not be used at all. Marking it as internal will
at least prevent new code to use it.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 15:49:55 +02:00
Côme Chilliet 723a3f0b96 fix(ldap): Fix copying and creating LDAP configuration
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-10-06 15:45:23 +02:00
Marcel Klehr f28344e13e fix(TaskProcessing): Make sure list command int filter parameters are parsed as ints
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-10-06 15:29:36 +02:00
Carl Schwan 9d7fbb1b86 refactor: Move cron setup to a service
This will allow in the future the following things:

- Create unit tests for it
- Make cron.php a occ command
- Make webcron a proper controller

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 15:28:43 +02:00
Carl Schwan 66f50bd585 refactor(preview): Use same mimetype ids as filecache
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 13:37:15 +02:00
Carl Schwan bd001c9524 refactor: Use Override annotation in new preview code
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 13:37:15 +02:00
Carl Schwan 58023782b6 feat(preview): Store original file mimetype in preview table
Allow to quickly query all the files from a specific mimetype like in
the ResetRenderedTexts command.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 13:37:15 +02:00
Carl Schwan bfc7d5dd9f feat(preview): Implement scanning for previews
This work similarly to the move preview job to migrate the previews to
the new DB table and also reuse some code.

So when we are finding files in appdata/preview, try adding them to the
oc_previews table and delete them from the oc_filecache table.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 13:37:15 +02:00
Carl Schwan 324b54b863 refactor(preview): Cleanup the implementation of the new preview backend
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 13:37:15 +02:00
Carl Schwan 6f56dcf73e fix(preview): Fix some tests
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 13:37:15 +02:00
Carl Schwan b0357663b9 perf(preview): Optimize migration and simplify DB layout
* Simplify migration by not moving the actual files and just updating
  the DB
* Don't store the storageid in the preview table as it is not needed
* Start adding tests

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 13:37:15 +02:00
Carl Schwan bba9667882 perf(preview): Adapt BackgroundCleanupJob to new previews table
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 13:37:15 +02:00
Carl Schwan 6008852232 feat(preview): Support multibucket storage
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 13:37:15 +02:00
Carl Schwan 13c35c0f17 perf(preview): Migrate previews to the new optimized table
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-06 13:37:15 +02:00
Carl Schwan 656e33e8da perf(preview): Add support for multibucket storage
Signed-off-by: Carl Schwan <carl.schwan@nextclound.com>
2025-10-06 13:37:15 +02:00
Carl Schwan 18fbacdd8d perf(preview): Split preview data to new table
The new oc_previews table is optimized for storing previews and should
decrease significantly the space taken by previews in the filecache
table.

This attend to reuse the IObjectStore abstraction over S3/Swift/Azure
but currently only support one single bucket configuration.

Signed-off-by: Carl Schwan <carl.schwan@nextclound.com>
2025-10-06 13:37:15 +02:00
Daniel Kesselberg 83a691709c refactor: use IEmailValidator.isValid instead of IMailer.validateEmailAddress
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2025-10-04 21:54:22 +02:00
Robin Appelman af907388d0 fix: make share recursion error more informative
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-10-03 15:50:43 +02:00
Carl Schwan 9e848551be refactor: Port away from more IQueryBuilder::execute
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-02 14:40:28 +02:00
Carl Schwan aa1f5312a5 refactor: Remove legacy search provider
Last usage was in the comment app

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-10-01 13:36:25 +02:00
Misha M.-Kupriyanov b0ed8b1455 fix(admin-delegation-show): show delegations for all priorities
otherwise delegation only from the first priority array ara shown

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
2025-10-01 12:33:13 +02:00
Misha M.-Kupriyanov 33577b3120 feat(admin-delegation-show): add priority to json output
in order to be able to better understand priority sorting.

php occ admin-delegation:show --output=json_pretty

Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
2025-10-01 12:33:13 +02:00
Arthur Schiwon e9a1d7fa0d fix(Apps): fix install command check on existing apps
- AppManager::isInstalled() is misleading, as it checks only whether it is
  enabled. But an app might not be present in some edge cases.
- AppManager::getAppPath() does however only check whether an app dir is
  present, independent of the enabled-state.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2025-09-29 09:39:14 +02:00
Joas Schilling 7cc4a0e59f fix(live-photo): Allow files-live-photo meta data with edit permissions
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-09-28 17:31:51 +02:00
Enjeck C 7a7820605f fix: Ensure CLOUD key exists before resolving Cloud ID
Signed-off-by: Enjeck C <patrathewhiz@gmail.com>
2025-08-22 18:51:29 +01:00
SebastianKrupinski dcf3d6e7ee fix: use old event information if new is missing
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2025-05-15 12:20:18 -04:00
2652 changed files with 84076 additions and 48822 deletions
+46 -44
View File
@@ -4,33 +4,35 @@ ARG DEBIAN_FRONTEND=noninteractive
# PHP
RUN apt-get update -y && \
apt install -y apache2 vim software-properties-common sudo nano gnupg2
apt install -y apache2 vim software-properties-common sudo nano gnupg2 wget curl git \
lsb-release ca-certificates apt-transport-https && \
add-apt-repository ppa:ondrej/php -y && \
apt-get update -y
RUN apt-get install --no-install-recommends -y \
php8.3 \
php8.3-common \
php8.3-gd \
php8.3-zip \
php8.3-curl \
php8.3-xml \
php8.3-xmlrpc \
php8.3-mbstring \
php8.3-sqlite \
php8.3-xdebug \
php8.3-pgsql \
php8.3-intl \
php8.3-imagick \
php8.3-gmp \
php8.3-apcu \
php8.3-bcmath \
php8.3-redis \
php8.3-soap \
php8.3-imap \
php8.3-opcache \
php8.3-cli \
php8.3-dev \
php8.4 \
php8.4-common \
php8.4-gd \
php8.4-zip \
php8.4-curl \
php8.4-xml \
php8.4-xmlrpc \
php8.4-mbstring \
php8.4-sqlite \
php8.4-xdebug \
php8.4-pgsql \
php8.4-intl \
php8.4-imagick \
php8.4-gmp \
php8.4-apcu \
php8.4-bcmath \
php8.4-redis \
php8.4-soap \
php8.4-imap \
php8.4-opcache \
php8.4-cli \
php8.4-dev \
libmagickcore-6.q16-7-extra \
curl \
lsof \
make \
unzip
@@ -42,39 +44,39 @@ RUN curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php && \
php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer && \
rm /tmp/composer-setup.php /tmp/composer-setup.sig
RUN echo "xdebug.remote_enable = 1" >> /etc/php/8.3/cli/conf.d/20-xdebug.ini && \
echo "xdebug.remote_autostart = 1" >> /etc/php/8.3/cli/conf.d/20-xdebug.ini && \
echo "apc.enable_cli=1" >> /etc/php/8.3/cli/conf.d/20-apcu.ini
RUN echo "xdebug.remote_enable = 1" >> /etc/php/8.4/cli/conf.d/20-xdebug.ini && \
echo "xdebug.remote_autostart = 1" >> /etc/php/8.4/cli/conf.d/20-xdebug.ini && \
echo "apc.enable_cli=1" >> /etc/php/8.4/cli/conf.d/20-apcu.ini
# Autostart XDebug for apache
RUN { \
echo "xdebug.mode=debug"; \
echo "xdebug.start_with_request=yes"; \
} >> /etc/php/8.3/apache2/conf.d/20-xdebug.ini
} >> /etc/php/8.4/apache2/conf.d/20-xdebug.ini
# Increase PHP memory limit to 512mb
RUN sed -i 's/memory_limit = .*/memory_limit = 512M/' /etc/php/8.3/apache2/php.ini
RUN sed -i 's/memory_limit = .*/memory_limit = 512M/' /etc/php/8.4/apache2/php.ini
# Docker
RUN apt-get -y install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable" && \
# Docker CLI only (for controlling host Docker via socket)
RUN install -m 0755 -d /etc/apt/keyrings && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && \
chmod a+r /etc/apt/keyrings/docker.asc && \
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null && \
apt-get update -y && \
apt-get install -y docker-ce docker-ce-cli containerd.io && \
apt-get install -y docker-ce-cli && \
ln -s /var/run/docker-host.sock /var/run/docker.sock
# Dedicated DevContainer user runs Apache
ENV APACHE_RUN_USER=devcontainer
ENV APACHE_RUN_GROUP=devcontainer
RUN useradd -ms /bin/bash ${APACHE_RUN_USER} && \
# Delete any existing user/group with UID/GID 1000 first
RUN (getent passwd 1000 && userdel -r $(getent passwd 1000 | cut -d: -f1)) || true && \
(getent group 1000 && groupdel $(getent group 1000 | cut -d: -f1)) || true && \
groupadd -g 1000 ${APACHE_RUN_GROUP} && \
useradd -u 1000 -g 1000 -ms /bin/bash ${APACHE_RUN_USER} && \
adduser ${APACHE_RUN_USER} sudo && \
echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \
sed -ri "s/^export APACHE_RUN_USER=.*$/export APACHE_RUN_USER=${APACHE_RUN_USER}/" "/etc/apache2/envvars" && \
@@ -84,6 +86,6 @@ USER devcontainer
# NVM
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
RUN bash --login -i -c 'source /home/devcontainer/.bashrc && nvm install 16'
RUN bash --login -i -c 'source /home/devcontainer/.bashrc && nvm install 22'
WORKDIR /var/www/html
-1
View File
@@ -1,6 +1,5 @@
# SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: AGPL-3.0-or-later
version: '3'
services:
nextclouddev:
build: .
+6 -1
View File
@@ -5,4 +5,9 @@
#
# Set git safe.directory
git config --global --add safe.directory /var/www/html
git config --global --add safe.directory /var/www/html/3rdparty
git config --global --add safe.directory /var/www/html/3rdparty
# Ensure devcontainer user has access to docker socket
if [ -S /var/run/docker.sock ]; then
sudo chmod 666 /var/run/docker.sock
fi
+13 -11
View File
@@ -15,6 +15,8 @@
**/js @nextcloud/server-frontend
**/src @nextcloud/server-frontend
*.js @nextcloud/server-frontend
*.cjs @nextcloud/server-frontend
*.mjs @nextcloud/server-frontend
*.ts @nextcloud/server-frontend
# dependency management
@@ -29,9 +31,9 @@ package-lock.json @nextcloud/server-dependabot
/apps/contactsinteraction/lib @kesselb @SebastianKrupinski
/apps/contactsinteraction/tests @kesselb @SebastianKrupinski
/apps/dashboard/appinfo/info.xml @julien-nc @juliusknorr
/apps/dav/lib/CalDAV @st3iny @SebastianKrupinski @tcitworld
/apps/dav/lib/CalDAV @ChristophWurst @SebastianKrupinski @tcitworld
/apps/dav/lib/CardDAV @hamza221 @SebastianKrupinski
/apps/dav/tests/unit/CalDAV @st3iny @SebastianKrupinski @tcitworld
/apps/dav/tests/unit/CalDAV @ChristophWurst @SebastianKrupinski @tcitworld
/apps/dav/tests/unit/CardDAV @hamza221 @SebastianKrupinski
/apps/encryption/appinfo/info.xml @come-nc @icewind1991
/apps/federatedfilesharing/appinfo/info.xml @icewind1991 @danxuliu
@@ -48,7 +50,7 @@ package-lock.json @nextcloud/server-dependabot
/apps/sharebymail/appinfo/info.xml @Altahrim @skjnldsv
/apps/systemtags/appinfo/info.xml @Antreesy @marcelklehr
/apps/theming/appinfo/info.xml @skjnldsv @juliusknorr
/apps/twofactor_backupcodes/appinfo/info.xml @st3iny @miaulalala @ChristophWurst
/apps/twofactor_backupcodes/appinfo/info.xml @miaulalala @ChristophWurst
/apps/updatenotification/appinfo/info.xml @JuliaKirschenheuter @sorbaugh
/apps/user_ldap/appinfo/info.xml @come-nc @blizzz
/apps/user_status/appinfo/info.xml @Antreesy @nickvergessen
@@ -70,9 +72,9 @@ package-lock.json @nextcloud/server-dependabot
# Two-Factor Authentication
# https://github.com/nextcloud/wg-two-factor-authentication#members
**/TwoFactorAuth @ChristophWurst @miaulalala @nickvergessen @st3iny
/apps/twofactor_backupcodes @ChristophWurst @miaulalala @nickvergessen @st3iny
/core/templates/twofactor* @ChristophWurst @miaulalala @nickvergessen @st3iny
**/TwoFactorAuth @ChristophWurst @miaulalala @nickvergessen
/apps/twofactor_backupcodes @ChristophWurst @miaulalala @nickvergessen
/core/templates/twofactor* @ChristophWurst @miaulalala @nickvergessen
# Limit login to IP
# Watch login routes for https://github.com/nextcloud/limit_login_to_ip
@@ -94,16 +96,16 @@ ResponseDefinitions.php @provokateurin @nextcloud/server-backend
*/Notifications/* @nickvergessen @nextcloud/talk-backend
# Groupware team
/build/integration/dav_features/caldav.feature @st3iny @SebastianKrupinski @tcitworld
/build/integration/dav_features/caldav.feature @ChristophWurst @SebastianKrupinski @tcitworld
/build/integration/dav_features/carddav.feature @hamza221 @SebastianKrupinski
/lib/private/Calendar @st3iny @SebastianKrupinski @tcitworld
/lib/private/Calendar @ChristophWurst @SebastianKrupinski @tcitworld
/lib/private/Contacts @hamza221 @SebastianKrupinski
/lib/public/Calendar @st3iny @SebastianKrupinski @tcitworld
/lib/public/Calendar @ChristophWurst @SebastianKrupinski @tcitworld
/lib/public/Contacts @hamza221 @SebastianKrupinski
# Desktop client teamn
/apps/dav/lib/Connector/Sabre/BlockLegacyClientPlugin.php @nextcloud/desktop
# Personal interest
*/Activity/* @nickvergessen @nextcloud/server-backend
/apps/workflowengine/lib @nickvergessen @blizzz
*/Activity/* @nickvergessen @nextcloud/server-backend
/apps/workflowengine/lib @nickvergessen @blizzz
+4 -42
View File
@@ -38,7 +38,10 @@ updates:
# Main master npm frontend dependencies
- package-ecosystem: npm
directory: "/"
directories:
- "/"
- "/build/frontend"
- "/build/frontend-legacy"
schedule:
interval: weekly
day: saturday
@@ -121,28 +124,6 @@ updates:
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
- package-ecosystem: composer
target-branch: stable30
directories:
- "/"
- "/build/integration"
- "/vendor-bin/cs-fixer"
- "/vendor-bin/openapi-extractor"
- "/vendor-bin/phpunit"
- "/vendor-bin/psalm"
schedule:
interval: weekly
day: saturday
time: "04:00"
timezone: Europe/Paris
labels:
- "3. to review"
- "feature: dependencies"
ignore:
# only patch updates on stable branches
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# frontend dependencies
- package-ecosystem: npm
target-branch: stable31
@@ -162,22 +143,3 @@ updates:
# no major updates on stable branches
- dependency-name: "*"
update-types: ["version-update:semver-major"]
- package-ecosystem: npm
target-branch: stable30
directory: "/"
schedule:
interval: weekly
day: saturday
time: "04:00"
timezone: Europe/Paris
open-pull-requests-limit: 20
labels:
- "3. to review"
- "feature: dependencies"
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
ignore:
# no major updates on stable branches
- dependency-name: "*"
update-types: ["version-update:semver-major"]
+5 -3
View File
@@ -32,16 +32,18 @@ jobs:
build-mode: none
steps:
- name: Checkout repository
uses: actions/checkout@v5
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@5d5cd550d3e189c569da8f16ea8de2d821c9bf7a # v3.31.2
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
config-file: ./.github/codeql-config.yml
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@5d5cd550d3e189c569da8f16ea8de2d821c9bf7a # v3.31.2
with:
category: "/language:${{matrix.language}}"
+12 -12
View File
@@ -102,8 +102,8 @@ jobs:
matrix:
# Run multiple copies of the current job in parallel
# Please increase the number or runners as your tests suite grows (0 based index for e2e tests)
containers: ['component', 'setup', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
# Hack as strategy.job-total includes the component and GitHub does not allow math expressions
containers: ['setup', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
# Hack as strategy.job-total includes the "setup" and GitHub does not allow math expressions
# Always align this number with the total of e2e runners (max. index + 1)
total-containers: [10]
@@ -194,6 +194,7 @@ jobs:
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
SPLIT: ${{ matrix.total-containers }}
SPLIT_INDEX: ${{ matrix.containers == 'component' && 0 || matrix.containers }}
SPLIT_RANDOM_SEED: ${{ github.run_id }}
SETUP_TESTING: ${{ matrix.containers == 'setup' && 'true' || '' }}
- name: Upload snapshots and videos
@@ -205,20 +206,19 @@ jobs:
cypress/snapshots
cypress/videos
- name: Extract NC logs
- name: Show logs
if: failure() && matrix.containers != 'component'
run: docker logs nextcloud-cypress-tests_${{ env.APP_NAME }} > nextcloud.log
- name: Upload NC logs
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
if: failure() && matrix.containers != 'component'
with:
name: nc_logs_${{ matrix.containers }}
path: nextcloud.log
run: |
for id in $(docker ps -aq); do
docker container inspect "$id" --format '=== Logs for container {{.Name}} ==='
docker logs "$id" >> nextcloud.log
done
echo '=== Nextcloud server logs ==='
docker exec nextcloud-e2e-test-server_${{ env.APP_NAME }} cat data/nextcloud.log
- name: Create data dir archive
if: failure() && matrix.containers != 'component'
run: docker exec nextcloud-cypress-tests_${{ env.APP_NAME }} tar -cvjf - data > data.tar
run: docker exec nextcloud-e2e-test-server_${{ env.APP_NAME }} tar -cvjf - data > data.tar
- name: Upload data dir archive
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
+2 -1
View File
@@ -84,9 +84,10 @@ jobs:
ports:
- 6379:6379/tcp
openldap:
image: ghcr.io/nextcloud/continuous-integration-openldap:openldap-7 # zizmor: ignore[unpinned-images]
image: ghcr.io/nextcloud/continuous-integration-openldap:openldap-8 # zizmor: ignore[unpinned-images]
ports:
- 389:389
- 636:636
env:
SLAPD_DOMAIN: nextcloud.ci
SLAPD_ORGANIZATION: Nextcloud
+2 -31
View File
@@ -114,35 +114,6 @@ jobs:
if: ${{ !cancelled() }}
uses: codecov/test-results-action@47f89e9acb64b76debcd5ea40642d25a4adced9f # v1.1.1
jsunit:
runs-on: ubuntu-latest
needs: [versions, changes]
if: ${{ needs.versions.result != 'failure' && needs.changes.outputs.src != 'false' }}
env:
CYPRESS_INSTALL_BINARY: 0
steps:
- name: Checkout
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
persist-credentials: false
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0
with:
node-version: ${{ needs.versions.outputs.nodeVersion }}
- name: Set up npm ${{ needs.versions.outputs.npmVersion }}
run: npm i -g 'npm@${{ needs.versions.outputs.npmVersion }}'
- name: Install dependencies
run: npm ci
- name: Test
run: npm run test:jsunit
handlebars:
runs-on: ubuntu-latest
needs: [versions, changes]
@@ -177,7 +148,7 @@ jobs:
permissions:
contents: none
runs-on: ubuntu-latest-low
needs: [changes, test, jsunit, handlebars]
needs: [changes, test, handlebars]
if: always()
@@ -185,4 +156,4 @@ jobs:
steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && (needs.test.result != 'success' || needs.jsunit.result != 'success' || needs.handlebars.result != 'success') }}; then exit 1; fi
run: if ${{ needs.changes.outputs.src != 'false' && (needs.test.result != 'success' || needs.handlebars.result != 'success') }}; then exit 1; fi
+6 -6
View File
@@ -5,9 +5,10 @@ name: PHPUnit 32bits
on:
pull_request:
paths:
- 'version.php'
- '.github/workflows/phpunit-32bits.yml'
- 'tests/phpunit-autotest.xml'
- "version.php"
- ".github/workflows/phpunit-32bits.yml"
- "tests/phpunit-autotest.xml"
- "lib/private/Snowflake/*"
workflow_dispatch:
schedule:
- cron: "15 1 * * 1-6"
@@ -30,7 +31,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.2', '8.3', '8.4']
php-versions: ["8.2", "8.3", "8.4"]
steps:
- name: Checkout server
@@ -51,8 +52,7 @@ jobs:
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, imagick, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite, apcu, ldap
coverage: none
ini-file: development
ini-values:
apc.enabled=on, apc.enable_cli=on, disable_functions= # https://github.com/shivammathur/setup-php/discussions/573
ini-values: apc.enabled=on, apc.enable_cli=on, disable_functions= # https://github.com/shivammathur/setup-php/discussions/573
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+4 -4
View File
@@ -61,13 +61,13 @@ jobs:
matrix:
php-versions: ['8.2']
# To keep the matrix smaller we ignore PostgreSQL versions in between as we already test the minimum and the maximum
postgres-versions: ['13', '17']
postgres-versions: ['14', '18']
include:
- php-versions: '8.3'
postgres-versions: '17'
postgres-versions: '18'
coverage: ${{ github.event_name != 'pull_request' }}
- php-versions: '8.4'
postgres-versions: '17'
postgres-versions: '18'
name: PostgreSQL ${{ matrix.postgres-versions }} (PHP ${{ matrix.php-versions }}) - database tests
@@ -86,7 +86,7 @@ jobs:
POSTGRES_USER: root
POSTGRES_PASSWORD: rootpassword
POSTGRES_DB: nextcloud
options: --mount type=tmpfs,destination=/var/lib/postgresql/data --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
options: --mount type=tmpfs,destination=/var/lib/postgresql --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
steps:
- name: Checkout server
+1 -8
View File
@@ -11,7 +11,7 @@
/apps/inc.php
/assets
/.htaccess
/node_modules
node_modules/
/translationfiles
/translationtool.phar
@@ -55,10 +55,6 @@
/apps/files_external/3rdparty/irodsphp/prods/test*
/apps/files_external/tests/config.*.php
# apps modules
/apps/*/node_modules
# ignore themes except the example and the README
/themes/*
!/themes/example
@@ -131,9 +127,6 @@ nbproject
# Tests
/tests/phpunit.xml
# Node Modules
/build/node_modules/
# nodejs
/build/bin
/build/lib/
+1 -1
View File
@@ -178,7 +178,7 @@ SPDX-FileCopyrightText = "2020 Nextcloud GmbH and Nextcloud contributors"
SPDX-License-Identifier = "AGPL-3.0-or-later"
[[annotations]]
path = ["cypress/tsconfig.json", "cypress/fixtures/appstore/apps.json", "dist/icons.css"]
path = ["cypress/tsconfig.json", "cypress/fixtures/appstore/apps.json", "dist/*.css"]
precedence = "aggregate"
SPDX-FileCopyrightText = "2022 Nextcloud GmbH and Nextcloud contributors"
SPDX-License-Identifier = "AGPL-3.0-or-later"
+1
View File
@@ -2,6 +2,7 @@
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: CC0-1.0
*/
export function setup() {
process.env.TZ = 'UTC'
}
+1
View File
@@ -2,5 +2,6 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: CC0-1.0
*/
import '@testing-library/jest-dom/vitest'
import 'core-js/stable/index.js'
+1 -4
View File
@@ -14,10 +14,7 @@ if (PHP_VERSION_ID < 50600) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
throw new RuntimeException($err);
}
require_once __DIR__ . '/composer/autoload_real.php';
@@ -26,12 +26,23 @@ use Composer\Semver\VersionParser;
*/
class InstalledVersions
{
/**
* @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to
* @internal
*/
private static $selfDir = null;
/**
* @var mixed[]|null
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
*/
private static $installed;
/**
* @var bool
*/
private static $installedIsLocalDir;
/**
* @var bool|null
*/
@@ -309,6 +320,24 @@ class InstalledVersions
{
self::$installed = $data;
self::$installedByVendor = array();
// when using reload, we disable the duplicate protection to ensure that self::$installed data is
// always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not,
// so we have to assume it does not, and that may result in duplicate data being returned when listing
// all installed packages for example
self::$installedIsLocalDir = false;
}
/**
* @return string
*/
private static function getSelfDir()
{
if (self::$selfDir === null) {
self::$selfDir = strtr(__DIR__, '\\', '/');
}
return self::$selfDir;
}
/**
@@ -322,19 +351,27 @@ class InstalledVersions
}
$installed = array();
$copiedLocalDir = false;
if (self::$canGetVendors) {
$selfDir = self::getSelfDir();
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
$vendorDir = strtr($vendorDir, '\\', '/');
if (isset(self::$installedByVendor[$vendorDir])) {
$installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) {
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
$required = require $vendorDir.'/composer/installed.php';
$installed[] = self::$installedByVendor[$vendorDir] = $required;
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
self::$installed = $installed[count($installed) - 1];
self::$installedByVendor[$vendorDir] = $required;
$installed[] = $required;
if (self::$installed === null && $vendorDir.'/composer' === $selfDir) {
self::$installed = $required;
self::$installedIsLocalDir = true;
}
}
if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) {
$copiedLocalDir = true;
}
}
}
@@ -350,7 +387,7 @@ class InstalledVersions
}
}
if (self::$installed !== array()) {
if (self::$installed !== array() && !$copiedLocalDir) {
$installed[] = self::$installed;
}
@@ -14,10 +14,7 @@ if (PHP_VERSION_ID < 50600) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
throw new RuntimeException($err);
}
require_once __DIR__ . '/composer/autoload_real.php';
@@ -26,12 +26,23 @@ use Composer\Semver\VersionParser;
*/
class InstalledVersions
{
/**
* @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to
* @internal
*/
private static $selfDir = null;
/**
* @var mixed[]|null
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
*/
private static $installed;
/**
* @var bool
*/
private static $installedIsLocalDir;
/**
* @var bool|null
*/
@@ -309,6 +320,24 @@ class InstalledVersions
{
self::$installed = $data;
self::$installedByVendor = array();
// when using reload, we disable the duplicate protection to ensure that self::$installed data is
// always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not,
// so we have to assume it does not, and that may result in duplicate data being returned when listing
// all installed packages for example
self::$installedIsLocalDir = false;
}
/**
* @return string
*/
private static function getSelfDir()
{
if (self::$selfDir === null) {
self::$selfDir = strtr(__DIR__, '\\', '/');
}
return self::$selfDir;
}
/**
@@ -322,19 +351,27 @@ class InstalledVersions
}
$installed = array();
$copiedLocalDir = false;
if (self::$canGetVendors) {
$selfDir = self::getSelfDir();
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
$vendorDir = strtr($vendorDir, '\\', '/');
if (isset(self::$installedByVendor[$vendorDir])) {
$installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) {
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
$required = require $vendorDir.'/composer/installed.php';
$installed[] = self::$installedByVendor[$vendorDir] = $required;
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
self::$installed = $installed[count($installed) - 1];
self::$installedByVendor[$vendorDir] = $required;
$installed[] = $required;
if (self::$installed === null && $vendorDir.'/composer' === $selfDir) {
self::$installed = $required;
self::$installedIsLocalDir = true;
}
}
if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) {
$copiedLocalDir = true;
}
}
}
@@ -350,7 +387,7 @@ class InstalledVersions
}
}
if (self::$installed !== array()) {
if (self::$installed !== array() && !$copiedLocalDir) {
$installed[] = self::$installed;
}
@@ -236,7 +236,7 @@ class RequestHandlerController extends Controller {
*
* @param string $recipientProvider The address of the recipent's provider
* @param string $token The token used for the invitation
* @param string $userId The userId of the recipient at the recipient's provider
* @param string $userID The userID of the recipient at the recipient's provider
* @param string $email The email address of the recipient
* @param string $name The display name of the recipient
*
@@ -251,8 +251,8 @@ class RequestHandlerController extends Controller {
#[PublicPage]
#[NoCSRFRequired]
#[BruteForceProtection(action: 'inviteAccepted')]
public function inviteAccepted(string $recipientProvider, string $token, string $userId, string $email, string $name): JSONResponse {
$this->logger->debug('Processing share invitation for ' . $userId . ' with token ' . $token . ' and email ' . $email . ' and name ' . $name);
public function inviteAccepted(string $recipientProvider, string $token, string $userID, string $email, string $name): JSONResponse {
$this->logger->debug('Processing share invitation for ' . $userID . ' with token ' . $token . ' and email ' . $email . ' and name ' . $name);
$updated = $this->timeFactory->getTime();
@@ -309,7 +309,7 @@ class RequestHandlerController extends Controller {
$invitation->setRecipientEmail($email);
$invitation->setRecipientName($name);
$invitation->setRecipientProvider($recipientProvider);
$invitation->setRecipientUserId($userId);
$invitation->setRecipientUserId($userID);
$invitation->setAcceptedAt($updated);
$invitation = $this->federatedInviteMapper->update($invitation);
+3 -3
View File
@@ -354,7 +354,7 @@
"required": [
"recipientProvider",
"token",
"userId",
"userID",
"email",
"name"
],
@@ -367,9 +367,9 @@
"type": "string",
"description": "The token used for the invitation"
},
"userId": {
"userID": {
"type": "string",
"description": "The userId of the recipient at the recipient's provider"
"description": "The userID of the recipient at the recipient's provider"
},
"email": {
"type": "string",
+1 -4
View File
@@ -14,10 +14,7 @@ if (PHP_VERSION_ID < 50600) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
throw new RuntimeException($err);
}
require_once __DIR__ . '/composer/autoload_real.php';
@@ -26,12 +26,23 @@ use Composer\Semver\VersionParser;
*/
class InstalledVersions
{
/**
* @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to
* @internal
*/
private static $selfDir = null;
/**
* @var mixed[]|null
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
*/
private static $installed;
/**
* @var bool
*/
private static $installedIsLocalDir;
/**
* @var bool|null
*/
@@ -309,6 +320,24 @@ class InstalledVersions
{
self::$installed = $data;
self::$installedByVendor = array();
// when using reload, we disable the duplicate protection to ensure that self::$installed data is
// always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not,
// so we have to assume it does not, and that may result in duplicate data being returned when listing
// all installed packages for example
self::$installedIsLocalDir = false;
}
/**
* @return string
*/
private static function getSelfDir()
{
if (self::$selfDir === null) {
self::$selfDir = strtr(__DIR__, '\\', '/');
}
return self::$selfDir;
}
/**
@@ -322,19 +351,27 @@ class InstalledVersions
}
$installed = array();
$copiedLocalDir = false;
if (self::$canGetVendors) {
$selfDir = self::getSelfDir();
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
$vendorDir = strtr($vendorDir, '\\', '/');
if (isset(self::$installedByVendor[$vendorDir])) {
$installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) {
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
$required = require $vendorDir.'/composer/installed.php';
$installed[] = self::$installedByVendor[$vendorDir] = $required;
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
self::$installed = $installed[count($installed) - 1];
self::$installedByVendor[$vendorDir] = $required;
$installed[] = $required;
if (self::$installed === null && $vendorDir.'/composer' === $selfDir) {
self::$installed = $required;
self::$installedIsLocalDir = true;
}
}
if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) {
$copiedLocalDir = true;
}
}
}
@@ -350,7 +387,7 @@ class InstalledVersions
}
}
if (self::$installed !== array()) {
if (self::$installed !== array() && !$copiedLocalDir) {
$installed[] = self::$installed;
}
@@ -23,6 +23,4 @@ return array(
'OCA\\Comments\\Notification\\Listener' => $baseDir . '/../lib/Notification/Listener.php',
'OCA\\Comments\\Notification\\Notifier' => $baseDir . '/../lib/Notification/Notifier.php',
'OCA\\Comments\\Search\\CommentsSearchProvider' => $baseDir . '/../lib/Search/CommentsSearchProvider.php',
'OCA\\Comments\\Search\\LegacyProvider' => $baseDir . '/../lib/Search/LegacyProvider.php',
'OCA\\Comments\\Search\\Result' => $baseDir . '/../lib/Search/Result.php',
);
@@ -38,8 +38,6 @@ class ComposerStaticInitComments
'OCA\\Comments\\Notification\\Listener' => __DIR__ . '/..' . '/../lib/Notification/Listener.php',
'OCA\\Comments\\Notification\\Notifier' => __DIR__ . '/..' . '/../lib/Notification/Notifier.php',
'OCA\\Comments\\Search\\CommentsSearchProvider' => __DIR__ . '/..' . '/../lib/Search/CommentsSearchProvider.php',
'OCA\\Comments\\Search\\LegacyProvider' => __DIR__ . '/..' . '/../lib/Search/LegacyProvider.php',
'OCA\\Comments\\Search\\Result' => __DIR__ . '/..' . '/../lib/Search/Result.php',
);
public static function getInitializer(ClassLoader $loader)
+1 -1
View File
@@ -19,7 +19,7 @@ OC.L10N.register(
"New comment" : "Новы каментарый",
"Write a comment …" : "Напішыце каментарый …",
"Post comment" : "Апублікаваць каментарый",
"@ for mentions, : for emoji, / for smart picker" : "@ - згадкі, : - эмодзі, / - разумны выбар",
"@ for mentions, : for emoji, / for smart picker" : "@ - згадкі, : - эмодзі, / - smart picker",
"Could not reload comments" : "Не ўдалося перазагрузіць каментарыі",
"Failed to mark comments as read" : "Не атрымалася пазначыць каментарыі як прачытаныя",
"Unable to load the comments list" : "Не ўдалося загрузіць спіс каментарыяў",
+1 -1
View File
@@ -17,7 +17,7 @@
"New comment" : "Новы каментарый",
"Write a comment …" : "Напішыце каментарый …",
"Post comment" : "Апублікаваць каментарый",
"@ for mentions, : for emoji, / for smart picker" : "@ - згадкі, : - эмодзі, / - разумны выбар",
"@ for mentions, : for emoji, / for smart picker" : "@ - згадкі, : - эмодзі, / - smart picker",
"Could not reload comments" : "Не ўдалося перазагрузіць каментарыі",
"Failed to mark comments as read" : "Не атрымалася пазначыць каментарыі як прачытаныя",
"Unable to load the comments list" : "Не ўдалося загрузіць спіс каментарыяў",
+1
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Smazat komentář",
"Cancel edit" : "Zrušit úpravu",
"New comment" : "Nový komentář",
"Write a comment …" : "Napsat komentář …",
"Post comment" : "Odeslat komentář",
"@ for mentions, : for emoji, / for smart picker" : "@ pro zmínění, : pro emotikony, / pro inteligentní výběr",
"Could not reload comments" : "Znovunačtení komentářů se nezdařilo",
+1
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Smazat komentář",
"Cancel edit" : "Zrušit úpravu",
"New comment" : "Nový komentář",
"Write a comment …" : "Napsat komentář …",
"Post comment" : "Odeslat komentář",
"@ for mentions, : for emoji, / for smart picker" : "@ pro zmínění, : pro emotikony, / pro inteligentní výběr",
"Could not reload comments" : "Znovunačtení komentářů se nezdařilo",
+1
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Slet kommentar",
"Cancel edit" : "Annullér redigering",
"New comment" : "Ny kommentar",
"Write a comment …" : "Skriv kommentar …",
"Post comment" : "Skriv kommentar",
"@ for mentions, : for emoji, / for smart picker" : "\"@\" for at omtale, \":\" for emojis, \"/\" for Smart Vælger",
"Could not reload comments" : "Kunne ikke indlæse kommentarer",
+1
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Slet kommentar",
"Cancel edit" : "Annullér redigering",
"New comment" : "Ny kommentar",
"Write a comment …" : "Skriv kommentar …",
"Post comment" : "Skriv kommentar",
"@ for mentions, : for emoji, / for smart picker" : "\"@\" for at omtale, \":\" for emojis, \"/\" for Smart Vælger",
"Could not reload comments" : "Kunne ikke indlæse kommentarer",
+1 -1
View File
@@ -17,7 +17,7 @@ OC.L10N.register(
"Delete comment" : "Kommentar löschen",
"Cancel edit" : "Bearbeiten abbrechen",
"New comment" : "Neuer Kommentar",
"Write a comment …" : "Schreiben Sie einen Kommentar  …",
"Write a comment …" : "Einen Kommentar schreiben …",
"Post comment" : "Kommentar veröffentlichen",
"@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
"Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
+1 -1
View File
@@ -15,7 +15,7 @@
"Delete comment" : "Kommentar löschen",
"Cancel edit" : "Bearbeiten abbrechen",
"New comment" : "Neuer Kommentar",
"Write a comment …" : "Schreiben Sie einen Kommentar  …",
"Write a comment …" : "Einen Kommentar schreiben …",
"Post comment" : "Kommentar veröffentlichen",
"@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
"Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
+1
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Delete comment",
"Cancel edit" : "Cancel edit",
"New comment" : "New comment",
"Write a comment …" : "Write a comment …",
"Post comment" : "Post comment",
"@ for mentions, : for emoji, / for smart picker" : "@ for mentions, : for emoji, / for smart picker",
"Could not reload comments" : "Could not reload comments",
+1
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Delete comment",
"Cancel edit" : "Cancel edit",
"New comment" : "New comment",
"Write a comment …" : "Write a comment …",
"Post comment" : "Post comment",
"@ for mentions, : for emoji, / for smart picker" : "@ for mentions, : for emoji, / for smart picker",
"Could not reload comments" : "Could not reload comments",
+1
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Supprimer le commentaire",
"Cancel edit" : "Annuler les modifications",
"New comment" : "Nouveau commentaire",
"Write a comment …" : "Écrire un commentaire …",
"Post comment" : "Publier le commentaire",
"@ for mentions, : for emoji, / for smart picker" : "@ pour les mentions, : pour les émojis, / pour le sélecteur intelligent",
"Could not reload comments" : "Impossible de recharger les commentaires",
+1
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Supprimer le commentaire",
"Cancel edit" : "Annuler les modifications",
"New comment" : "Nouveau commentaire",
"Write a comment …" : "Écrire un commentaire …",
"Post comment" : "Publier le commentaire",
"@ for mentions, : for emoji, / for smart picker" : "@ pour les mentions, : pour les émojis, / pour le sélecteur intelligent",
"Could not reload comments" : "Impossible de recharger les commentaires",
+1
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Elimina commento",
"Cancel edit" : "Annulla modifica",
"New comment" : "Nuovo commento",
"Write a comment …" : "Scrivi un commento ...",
"Post comment" : "Pubblica commento",
"@ for mentions, : for emoji, / for smart picker" : "@ per menzioni, : per emoji, / per selettore intelligente",
"Could not reload comments" : "Impossibile ricaricare i commenti",
+1
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Elimina commento",
"Cancel edit" : "Annulla modifica",
"New comment" : "Nuovo commento",
"Write a comment …" : "Scrivi un commento ...",
"Post comment" : "Pubblica commento",
"@ for mentions, : for emoji, / for smart picker" : "@ per menzioni, : per emoji, / per selettore intelligente",
"Could not reload comments" : "Impossibile ricaricare i commenti",
+1
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Удалить комментарий",
"Cancel edit" : "Отменить правку",
"New comment" : "Новый комментарий",
"Write a comment …" : "Написать комментарий …",
"Post comment" : "Опубликовать комментарий",
"@ for mentions, : for emoji, / for smart picker" : "@ для упоминаний, : для эмодзи, / для интеллектуального выбора",
"Could not reload comments" : "Не удалось перезагрузить комментарии",
+1
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Удалить комментарий",
"Cancel edit" : "Отменить правку",
"New comment" : "Новый комментарий",
"Write a comment …" : "Написать комментарий …",
"Post comment" : "Опубликовать комментарий",
"@ for mentions, : for emoji, / for smart picker" : "@ для упоминаний, : для эмодзи, / для интеллектуального выбора",
"Could not reload comments" : "Не удалось перезагрузить комментарии",
+1
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Обриши коментар",
"Cancel edit" : "Поништи измену",
"New comment" : "Нови коментар",
"Write a comment …" : "Напишите коментар …",
"Post comment" : "Објави коментар",
"@ for mentions, : for emoji, / for smart picker" : "@ за помињања, : за емођи, / за паметни бирач",
"Could not reload comments" : "Коментари не могу поново да се учитају",
+1
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Обриши коментар",
"Cancel edit" : "Поништи измену",
"New comment" : "Нови коментар",
"Write a comment …" : "Напишите коментар …",
"Post comment" : "Објави коментар",
"@ for mentions, : for emoji, / for smart picker" : "@ за помињања, : за емођи, / за паметни бирач",
"Could not reload comments" : "Коментари не могу поново да се учитају",
+1
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Yorumu sil",
"Cancel edit" : "Düzenlemeyi iptal et",
"New comment" : "Yorum ekle",
"Write a comment …" : "Bir yorum yazın…",
"Post comment" : "Yorum gönder",
"@ for mentions, : for emoji, / for smart picker" : "Anmalar için @, emojiler için :, akıllı seçici için /",
"Could not reload comments" : "Yorumlar yeniden yüklenemedi",
+1
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Yorumu sil",
"Cancel edit" : "Düzenlemeyi iptal et",
"New comment" : "Yorum ekle",
"Write a comment …" : "Bir yorum yazın…",
"Post comment" : "Yorum gönder",
"@ for mentions, : for emoji, / for smart picker" : "Anmalar için @, emojiler için :, akıllı seçici için /",
"Could not reload comments" : "Yorumlar yeniden yüklenemedi",
+1
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Вилучити коментар",
"Cancel edit" : "Скасувати редагування",
"New comment" : "Новий коментар",
"Write a comment …" : "Додайте коментар …",
"Post comment" : "Опублікувати коментар",
"@ for mentions, : for emoji, / for smart picker" : "@ згадати, : емоційки, / асистент вибору",
"Could not reload comments" : "Не вдалося перезавантажити коментарі",
+1
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Вилучити коментар",
"Cancel edit" : "Скасувати редагування",
"New comment" : "Новий коментар",
"Write a comment …" : "Додайте коментар …",
"Post comment" : "Опублікувати коментар",
"@ for mentions, : for emoji, / for smart picker" : "@ згадати, : емоційки, / асистент вибору",
"Could not reload comments" : "Не вдалося перезавантажити коментарі",
+1
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "刪除留言",
"Cancel edit" : "取消編輯",
"New comment" : "新評論",
"Write a comment …" : "發表評論 ...",
"Post comment" : "張貼留言",
"@ for mentions, : for emoji, / for smart picker" : "“@” 表示提及,“:” 表示表情符號,“/” 表示智慧型選擇器",
"Could not reload comments" : "無法重新加載評論",
+1
View File
@@ -15,6 +15,7 @@
"Delete comment" : "刪除留言",
"Cancel edit" : "取消編輯",
"New comment" : "新評論",
"Write a comment …" : "發表評論 ...",
"Post comment" : "張貼留言",
"@ for mentions, : for emoji, / for smart picker" : "“@” 表示提及,“:” 表示表情符號,“/” 表示智慧型選擇器",
"Could not reload comments" : "無法重新加載評論",
@@ -27,6 +27,10 @@ class CommentersSorter implements ISorter {
* @param array $context
*/
public function sort(array &$sortArray, array $context): void {
if (!isset($context['itemType'], $context['itemId'])) {
return;
}
$commenters = $this->retrieveCommentsInformation($context['itemType'], $context['itemId']);
if (count($commenters) === 0) {
return;
@@ -8,6 +8,13 @@ declare(strict_types=1);
*/
namespace OCA\Comments\Search;
use OCP\Comments\IComment;
use OCP\Comments\ICommentsManager;
use OCP\Files\Folder;
use OCP\Files\InvalidPathException;
use OCP\Files\IRootFolder;
use OCP\Files\Node;
use OCP\Files\NotFoundException;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\IUser;
@@ -16,14 +23,14 @@ use OCP\Search\IProvider;
use OCP\Search\ISearchQuery;
use OCP\Search\SearchResult;
use OCP\Search\SearchResultEntry;
use function array_map;
class CommentsSearchProvider implements IProvider {
public function __construct(
private IUserManager $userManager,
private IL10N $l10n,
private IURLGenerator $urlGenerator,
private LegacyProvider $legacyProvider,
private ICommentsManager $commentsManager,
private IRootFolder $rootFolder,
) {
}
@@ -44,30 +51,76 @@ class CommentsSearchProvider implements IProvider {
}
public function search(IUser $user, ISearchQuery $query): SearchResult {
$userFolder = $this->rootFolder->getUserFolder($user->getUID());
if ($userFolder === null) {
return SearchResult::complete($this->l10n->t('Comments'), []);
}
$result = [];
$numComments = 50;
$offset = 0;
while (count($result) < $numComments) {
$comments = $this->commentsManager->search($query->getTerm(), 'files', '', 'comment', $offset, $numComments);
foreach ($comments as $comment) {
if ($comment->getActorType() !== 'users') {
continue;
}
$displayName = $this->commentsManager->resolveDisplayName('user', $comment->getActorId());
try {
$file = $this->getFileForComment($userFolder, $comment);
$isUser = $this->userManager->userExists($comment->getActorId());
$avatarUrl = $isUser
? $this->urlGenerator->linkToRouteAbsolute('core.avatar.getAvatar', ['userId' => $comment->getActorId(), 'size' => 42])
: $this->urlGenerator->linkToRouteAbsolute('core.GuestAvatar.getAvatar', ['guestName' => $comment->getActorId(), 'size' => 42]);
$link = $this->urlGenerator->linkToRoute(
'files.View.showFile',
['fileid' => $file->getId()]
);
$result[] = new SearchResultEntry(
$avatarUrl,
$displayName,
$file->getPath(),
$link,
'',
true
);
} catch (NotFoundException|InvalidPathException $e) {
continue;
}
}
if (count($comments) < $numComments) {
// Didn't find more comments when we tried to get, so there are no more comments.
break;
}
$offset += $numComments;
$numComments = 50 - count($result);
}
return SearchResult::complete(
$this->l10n->t('Comments'),
array_map(function (Result $result) {
$path = $result->path;
$isUser = $this->userManager->userExists($result->authorId);
$avatarUrl = $isUser
? $this->urlGenerator->linkToRouteAbsolute('core.avatar.getAvatar', ['userId' => $result->authorId, 'size' => 42])
: $this->urlGenerator->linkToRouteAbsolute('core.GuestAvatar.getAvatar', ['guestName' => $result->authorId, 'size' => 42]);
$link = $this->urlGenerator->linkToRoute(
'files.View.showFile',
['fileid' => $result->fileId]
);
$searchResultEntry = new SearchResultEntry(
$avatarUrl,
$result->name,
$path,
$link,
'',
true
);
$searchResultEntry->addAttribute('fileId', (string)$result->fileId);
$searchResultEntry->addAttribute('path', $path);
return $searchResultEntry;
}, $this->legacyProvider->search($query->getTerm()))
$result,
);
}
/**
* @throws NotFoundException
*/
protected function getFileForComment(Folder $userFolder, IComment $comment): Node {
$nodes = $userFolder->getById((int)$comment->getObjectId());
if (empty($nodes)) {
throw new NotFoundException('File not found');
}
return array_shift($nodes);
}
}
@@ -1,99 +0,0 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\Comments\Search;
use OCP\Comments\IComment;
use OCP\Comments\ICommentsManager;
use OCP\Files\Folder;
use OCP\Files\InvalidPathException;
use OCP\Files\Node;
use OCP\Files\NotFoundException;
use OCP\IUser;
use OCP\IUserSession;
use OCP\Search\Provider;
use OCP\Server;
use function count;
class LegacyProvider extends Provider {
/**
* Search for $query
*
* @param string $query
* @return array An array of OCP\Search\Result's
* @since 7.0.0
*/
public function search($query): array {
$cm = Server::get(ICommentsManager::class);
$us = Server::get(IUserSession::class);
$user = $us->getUser();
if (!$user instanceof IUser) {
return [];
}
$uf = \OC::$server->getUserFolder($user->getUID());
if ($uf === null) {
return [];
}
$result = [];
$numComments = 50;
$offset = 0;
while (count($result) < $numComments) {
/** @var IComment[] $comments */
$comments = $cm->search($query, 'files', '', 'comment', $offset, $numComments);
foreach ($comments as $comment) {
if ($comment->getActorType() !== 'users') {
continue;
}
$displayName = $cm->resolveDisplayName('user', $comment->getActorId());
try {
$file = $this->getFileForComment($uf, $comment);
$result[] = new Result($query,
$comment,
$displayName,
$file->getPath(),
$file->getId(),
);
} catch (NotFoundException|InvalidPathException $e) {
continue;
}
}
if (count($comments) < $numComments) {
// Didn't find more comments when we tried to get, so there are no more comments.
return $result;
}
$offset += $numComments;
$numComments = 50 - count($result);
}
return $result;
}
/**
* @param Folder $userFolder
* @param IComment $comment
* @return Node
* @throws NotFoundException
*/
protected function getFileForComment(Folder $userFolder, IComment $comment): Node {
$nodes = $userFolder->getById((int)$comment->getObjectId());
if (empty($nodes)) {
throw new NotFoundException('File not found');
}
return array_shift($nodes);
}
}
-109
View File
@@ -1,109 +0,0 @@
<?php
/**
* SPDX-FileCopyrightText: 2018 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\Comments\Search;
use OCP\Comments\IComment;
use OCP\Files\NotFoundException;
use OCP\Search\Result as BaseResult;
/**
* @deprecated 20.0.0
*/
class Result extends BaseResult {
/**
* @deprecated 20.0.0
*/
public $type = 'comment';
/**
* @deprecated 20.0.0
*/
public $comment;
/**
* @deprecated 20.0.0
*/
public $authorId;
/**
* @deprecated 20.0.0
*/
public $path;
/**
* @deprecated 20.0.0
*/
public $fileName;
/**
* @throws NotFoundException
* @deprecated 20.0.0
*/
public function __construct(
string $search,
IComment $comment,
/**
* @deprecated 20.0.0
*/
public string $authorName,
string $path,
/**
* @deprecated 20.0.0
*/
public int $fileId,
) {
parent::__construct(
$comment->getId(),
$comment->getMessage()
/* @todo , [link to file] */
);
$this->comment = $this->getRelevantMessagePart($comment->getMessage(), $search);
$this->authorId = $comment->getActorId();
$this->fileName = basename($path);
$this->path = $this->getVisiblePath($path);
}
/**
* @throws NotFoundException
*/
protected function getVisiblePath(string $path): string {
$segments = explode('/', trim($path, '/'), 3);
if (!isset($segments[2])) {
throw new NotFoundException('Path not inside visible section');
}
return $segments[2];
}
/**
* @throws NotFoundException
*/
protected function getRelevantMessagePart(string $message, string $search): string {
$start = mb_stripos($message, $search);
if ($start === false) {
throw new NotFoundException('Comment section not found');
}
$end = $start + mb_strlen($search);
if ($start <= 25) {
$start = 0;
$prefix = '';
} else {
$start -= 25;
$prefix = '…';
}
if ((mb_strlen($message) - $end) <= 25) {
$end = mb_strlen($message);
$suffix = '';
} else {
$end += 25;
$suffix = '…';
}
return $prefix . mb_substr($message, $start, $end - $start) . $suffix;
}
}
+3 -2
View File
@@ -27,6 +27,7 @@ export default defineComponent({
key: 'editor',
},
userData: {},
currentResourceId: this.resourceId,
}
},
methods: {
@@ -40,8 +41,8 @@ export default defineComponent({
const { data } = await axios.get(generateOcsUrl('core/autocomplete/get'), {
params: {
search,
itemType: 'files',
itemId: this.resourceId,
itemType: this.resourceType,
itemId: this.currentResourceId,
sorter: 'commenters|share-recipients',
limit: loadState('comments', 'maxAutoCompleteResults'),
},
+7 -3
View File
@@ -110,7 +110,6 @@ export default {
loading: false,
done: false,
currentResourceId: this.resourceId,
offset: 0,
comments: [],
@@ -158,7 +157,7 @@ export default {
async update(resourceId) {
this.currentResourceId = resourceId
this.resetState()
this.getComments()
await this.getComments()
},
/**
@@ -206,8 +205,13 @@ export default {
this.done = true
}
// Ensure actor id is a string
for (const comment of comments) {
comment.props.actorId = comment.props.actorId.toString()
}
// Insert results
this.comments.push(...comments)
this.comments = [...this.comments, ...comments]
// Increase offset for next fetch
this.offset += DEFAULT_LIMIT
@@ -24,10 +24,9 @@ use Test\TestCase;
/**
* Class ApplicationTest
*
* @group DB
*
* @package OCA\Comments\Tests\Unit\AppInfo
*/
#[\PHPUnit\Framework\Attributes\Group('DB')]
class ApplicationTest extends TestCase {
protected function setUp(): void {
parent::setUp();
@@ -14,10 +14,7 @@ if (PHP_VERSION_ID < 50600) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
throw new RuntimeException($err);
}
require_once __DIR__ . '/composer/autoload_real.php';
@@ -26,12 +26,23 @@ use Composer\Semver\VersionParser;
*/
class InstalledVersions
{
/**
* @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to
* @internal
*/
private static $selfDir = null;
/**
* @var mixed[]|null
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
*/
private static $installed;
/**
* @var bool
*/
private static $installedIsLocalDir;
/**
* @var bool|null
*/
@@ -309,6 +320,24 @@ class InstalledVersions
{
self::$installed = $data;
self::$installedByVendor = array();
// when using reload, we disable the duplicate protection to ensure that self::$installed data is
// always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not,
// so we have to assume it does not, and that may result in duplicate data being returned when listing
// all installed packages for example
self::$installedIsLocalDir = false;
}
/**
* @return string
*/
private static function getSelfDir()
{
if (self::$selfDir === null) {
self::$selfDir = strtr(__DIR__, '\\', '/');
}
return self::$selfDir;
}
/**
@@ -322,19 +351,27 @@ class InstalledVersions
}
$installed = array();
$copiedLocalDir = false;
if (self::$canGetVendors) {
$selfDir = self::getSelfDir();
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
$vendorDir = strtr($vendorDir, '\\', '/');
if (isset(self::$installedByVendor[$vendorDir])) {
$installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) {
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
$required = require $vendorDir.'/composer/installed.php';
$installed[] = self::$installedByVendor[$vendorDir] = $required;
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
self::$installed = $installed[count($installed) - 1];
self::$installedByVendor[$vendorDir] = $required;
$installed[] = $required;
if (self::$installed === null && $vendorDir.'/composer' === $selfDir) {
self::$installed = $required;
self::$installedIsLocalDir = true;
}
}
if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) {
$copiedLocalDir = true;
}
}
}
@@ -350,7 +387,7 @@ class InstalledVersions
}
}
if (self::$installed !== array()) {
if (self::$installed !== array() && !$copiedLocalDir) {
$installed[] = self::$installed;
}
+9
View File
@@ -0,0 +1,9 @@
OC.L10N.register(
"contactsinteraction",
{
"Recently contacted" : "Yaqinda bog'langan",
"Contacts Interaction" : "Kontaktlar o'zaro ta'siri",
"Manages interaction between accounts and contacts" : "Hisoblar va kontaktlar o'rtasidagi o'zaro aloqani boshqaradi",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Hisoblar va kontaktlarning o'zaro aloqalari haqida ma'lumotlarni to'plang va ma'lumotlar uchun manzillar kitobini taqdim eting"
},
"nplurals=1; plural=0;");
+7
View File
@@ -0,0 +1,7 @@
{ "translations": {
"Recently contacted" : "Yaqinda bog'langan",
"Contacts Interaction" : "Kontaktlar o'zaro ta'siri",
"Manages interaction between accounts and contacts" : "Hisoblar va kontaktlar o'rtasidagi o'zaro aloqani boshqaradi",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Hisoblar va kontaktlarning o'zaro aloqalari haqida ma'lumotlarni to'plang va ma'lumotlar uchun manzillar kitobini taqdim eting"
},"pluralForm" :"nplurals=1; plural=0;"
}
@@ -17,9 +17,7 @@ use Sabre\VObject\Component\VCard;
use Sabre\VObject\UUIDUtil;
use Test\TestCase;
/**
* @group DB
*/
#[\PHPUnit\Framework\Attributes\Group('DB')]
class RecentContactMapperTest extends TestCase {
private RecentContactMapper $recentContactMapper;
private ITimeFactory $time;
+1 -4
View File
@@ -14,10 +14,7 @@ if (PHP_VERSION_ID < 50600) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
throw new RuntimeException($err);
}
require_once __DIR__ . '/composer/autoload_real.php';
@@ -26,12 +26,23 @@ use Composer\Semver\VersionParser;
*/
class InstalledVersions
{
/**
* @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to
* @internal
*/
private static $selfDir = null;
/**
* @var mixed[]|null
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
*/
private static $installed;
/**
* @var bool
*/
private static $installedIsLocalDir;
/**
* @var bool|null
*/
@@ -309,6 +320,24 @@ class InstalledVersions
{
self::$installed = $data;
self::$installedByVendor = array();
// when using reload, we disable the duplicate protection to ensure that self::$installed data is
// always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not,
// so we have to assume it does not, and that may result in duplicate data being returned when listing
// all installed packages for example
self::$installedIsLocalDir = false;
}
/**
* @return string
*/
private static function getSelfDir()
{
if (self::$selfDir === null) {
self::$selfDir = strtr(__DIR__, '\\', '/');
}
return self::$selfDir;
}
/**
@@ -322,19 +351,27 @@ class InstalledVersions
}
$installed = array();
$copiedLocalDir = false;
if (self::$canGetVendors) {
$selfDir = self::getSelfDir();
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
$vendorDir = strtr($vendorDir, '\\', '/');
if (isset(self::$installedByVendor[$vendorDir])) {
$installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) {
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
$required = require $vendorDir.'/composer/installed.php';
$installed[] = self::$installedByVendor[$vendorDir] = $required;
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
self::$installed = $installed[count($installed) - 1];
self::$installedByVendor[$vendorDir] = $required;
$installed[] = $required;
if (self::$installed === null && $vendorDir.'/composer' === $selfDir) {
self::$installed = $required;
self::$installedIsLocalDir = true;
}
}
if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) {
$copiedLocalDir = true;
}
}
}
@@ -350,7 +387,7 @@ class InstalledVersions
}
}
if (self::$installed !== array()) {
if (self::$installed !== array() && !$copiedLocalDir) {
$installed[] = self::$installed;
}
+1
View File
@@ -20,6 +20,7 @@ OC.L10N.register(
"Edit widgets" : "Tilpas widgets",
"Get more widgets from the App Store" : "Få flere widgets fra App Store",
"Weather service" : "Vejret",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Af hensyn til dit privatliv anmoder din {productName} server om vejrdata på dine vegne, så vejrtjenesten ikke modtager personlige oplysninger.",
"Weather data from Met.no" : "Vejr-data leveres af Met.no",
"geocoding with Nominatim" : "Geocoding med Nominatim",
"elevation data from OpenTopoData" : "Højde-data fra OpenTopoData",
+1
View File
@@ -18,6 +18,7 @@
"Edit widgets" : "Tilpas widgets",
"Get more widgets from the App Store" : "Få flere widgets fra App Store",
"Weather service" : "Vejret",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Af hensyn til dit privatliv anmoder din {productName} server om vejrdata på dine vegne, så vejrtjenesten ikke modtager personlige oplysninger.",
"Weather data from Met.no" : "Vejr-data leveres af Met.no",
"geocoding with Nominatim" : "Geocoding med Nominatim",
"elevation data from OpenTopoData" : "Højde-data fra OpenTopoData",
+1
View File
@@ -20,6 +20,7 @@ OC.L10N.register(
"Edit widgets" : "Modifica widget",
"Get more widgets from the App Store" : "Ottieni altri widget dal negozio delle applicazioni",
"Weather service" : "Servizio meteo",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Per la tua riservatezza, i dati meteorologici sono richiesti dal tuo server {productName} per tuo conto, per cui il servizio meteo non riceve informazioni personali.",
"Weather data from Met.no" : "Dati meteo da Met.no",
"geocoding with Nominatim" : "geocodifica conh Nominatim",
"elevation data from OpenTopoData" : "dati di elevazione da OpenTopoData",
+1
View File
@@ -18,6 +18,7 @@
"Edit widgets" : "Modifica widget",
"Get more widgets from the App Store" : "Ottieni altri widget dal negozio delle applicazioni",
"Weather service" : "Servizio meteo",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Per la tua riservatezza, i dati meteorologici sono richiesti dal tuo server {productName} per tuo conto, per cui il servizio meteo non riceve informazioni personali.",
"Weather data from Met.no" : "Dati meteo da Met.no",
"geocoding with Nominatim" : "geocodifica conh Nominatim",
"elevation data from OpenTopoData" : "dati di elevazione da OpenTopoData",
+11 -3
View File
@@ -81,7 +81,7 @@ $linkCheckPlugin = new PublicLinkCheckPlugin();
$filesDropPlugin = new FilesDropPlugin();
/** @var string $baseuri defined in public.php */
$server = $serverFactory->createServer(true, $baseuri, $requestUri, $authPlugin, function (\Sabre\DAV\Server $server) use ($authBackend, $linkCheckPlugin, $filesDropPlugin) {
$server = $serverFactory->createServer(true, $baseuri, $requestUri, $authPlugin, function (\Sabre\DAV\Server $server) use ($baseuri, $requestUri, $authBackend, $linkCheckPlugin, $filesDropPlugin) {
// GET must be allowed for e.g. showing images and allowing Zip downloads
if ($server->httpRequest->getMethod() !== 'GET') {
// If this is *not* a GET request we only allow access to public DAV from AJAX or when Server2Server is allowed
@@ -103,8 +103,16 @@ $server = $serverFactory->createServer(true, $baseuri, $requestUri, $authPlugin,
$previousLog = Filesystem::logWarningWhenAddingStorageWrapper(false);
/** @psalm-suppress MissingClosureParamType */
Filesystem::addStorageWrapper('sharePermissions', function ($mountPoint, $storage) use ($share) {
return new PermissionsMask(['storage' => $storage, 'mask' => $share->getPermissions() | Constants::PERMISSION_SHARE]);
Filesystem::addStorageWrapper('sharePermissions', function ($mountPoint, $storage) use ($requestUri, $baseuri, $share) {
$mask = $share->getPermissions() | Constants::PERMISSION_SHARE;
// For chunked uploads it is necessary to have read and delete permission,
// so the temporary directory, chunks and destination file can be read and delete after the assembly.
if (str_starts_with(substr($requestUri, strlen($baseuri) - 1), '/uploads/')) {
$mask |= Constants::PERMISSION_READ | Constants::PERMISSION_DELETE;
}
return new PermissionsMask(['storage' => $storage, 'mask' => $mask]);
});
/** @psalm-suppress MissingClosureParamType */
+1 -4
View File
@@ -14,10 +14,7 @@ if (PHP_VERSION_ID < 50600) {
echo $err;
}
}
trigger_error(
$err,
E_USER_ERROR
);
throw new RuntimeException($err);
}
require_once __DIR__ . '/composer/autoload_real.php';
@@ -26,12 +26,23 @@ use Composer\Semver\VersionParser;
*/
class InstalledVersions
{
/**
* @var string|null if set (by reflection by Composer), this should be set to the path where this class is being copied to
* @internal
*/
private static $selfDir = null;
/**
* @var mixed[]|null
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
*/
private static $installed;
/**
* @var bool
*/
private static $installedIsLocalDir;
/**
* @var bool|null
*/
@@ -309,6 +320,24 @@ class InstalledVersions
{
self::$installed = $data;
self::$installedByVendor = array();
// when using reload, we disable the duplicate protection to ensure that self::$installed data is
// always returned, but we cannot know whether it comes from the installed.php in __DIR__ or not,
// so we have to assume it does not, and that may result in duplicate data being returned when listing
// all installed packages for example
self::$installedIsLocalDir = false;
}
/**
* @return string
*/
private static function getSelfDir()
{
if (self::$selfDir === null) {
self::$selfDir = strtr(__DIR__, '\\', '/');
}
return self::$selfDir;
}
/**
@@ -322,19 +351,27 @@ class InstalledVersions
}
$installed = array();
$copiedLocalDir = false;
if (self::$canGetVendors) {
$selfDir = self::getSelfDir();
foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) {
$vendorDir = strtr($vendorDir, '\\', '/');
if (isset(self::$installedByVendor[$vendorDir])) {
$installed[] = self::$installedByVendor[$vendorDir];
} elseif (is_file($vendorDir.'/composer/installed.php')) {
/** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
$required = require $vendorDir.'/composer/installed.php';
$installed[] = self::$installedByVendor[$vendorDir] = $required;
if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
self::$installed = $installed[count($installed) - 1];
self::$installedByVendor[$vendorDir] = $required;
$installed[] = $required;
if (self::$installed === null && $vendorDir.'/composer' === $selfDir) {
self::$installed = $required;
self::$installedIsLocalDir = true;
}
}
if (self::$installedIsLocalDir && $vendorDir.'/composer' === $selfDir) {
$copiedLocalDir = true;
}
}
}
@@ -350,7 +387,7 @@ class InstalledVersions
}
}
if (self::$installed !== array()) {
if (self::$installed !== array() && !$copiedLocalDir) {
$installed[] = self::$installed;
}
@@ -206,6 +206,7 @@ return array(
'OCA\\DAV\\Comments\\EntityCollection' => $baseDir . '/../lib/Comments/EntityCollection.php',
'OCA\\DAV\\Comments\\EntityTypeCollection' => $baseDir . '/../lib/Comments/EntityTypeCollection.php',
'OCA\\DAV\\Comments\\RootCollection' => $baseDir . '/../lib/Comments/RootCollection.php',
'OCA\\DAV\\ConfigLexicon' => $baseDir . '/../lib/ConfigLexicon.php',
'OCA\\DAV\\Connector\\LegacyDAVACL' => $baseDir . '/../lib/Connector/LegacyDAVACL.php',
'OCA\\DAV\\Connector\\LegacyPublicAuth' => $baseDir . '/../lib/Connector/LegacyPublicAuth.php',
'OCA\\DAV\\Connector\\Sabre\\AnonymousOptionsPlugin' => $baseDir . '/../lib/Connector/Sabre/AnonymousOptionsPlugin.php',
@@ -221,6 +221,7 @@ class ComposerStaticInitDAV
'OCA\\DAV\\Comments\\EntityCollection' => __DIR__ . '/..' . '/../lib/Comments/EntityCollection.php',
'OCA\\DAV\\Comments\\EntityTypeCollection' => __DIR__ . '/..' . '/../lib/Comments/EntityTypeCollection.php',
'OCA\\DAV\\Comments\\RootCollection' => __DIR__ . '/..' . '/../lib/Comments/RootCollection.php',
'OCA\\DAV\\ConfigLexicon' => __DIR__ . '/..' . '/../lib/ConfigLexicon.php',
'OCA\\DAV\\Connector\\LegacyDAVACL' => __DIR__ . '/..' . '/../lib/Connector/LegacyDAVACL.php',
'OCA\\DAV\\Connector\\LegacyPublicAuth' => __DIR__ . '/..' . '/../lib/Connector/LegacyPublicAuth.php',
'OCA\\DAV\\Connector\\Sabre\\AnonymousOptionsPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/AnonymousOptionsPlugin.php',
+6 -6
View File
@@ -272,8 +272,6 @@ OC.L10N.register(
"Last day (inclusive)" : "آخر يوم (متضمن)",
"Out of office replacement (optional)" : "البديل لمن هو خارج المكتب (إختياري)",
"Name of the replacement" : "اسم البديل",
"No results." : "لا نتائج",
"Start typing." : "أبدا الكتابة",
"Short absence status" : "حالة الغياب القصير",
"Long absence Message" : "رسالة الغياب الطويل",
"Save" : "حفظ",
@@ -300,10 +298,6 @@ OC.L10N.register(
"Reset to default" : "اعادة تعيين الافتراضيات",
"Import contacts" : "استيراد جهات اتصال",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "استيراد ملف .cvf جديد سوف يؤدي إلى حذف جهات الاتصال التلقائية الحالية واستبدالها بالجديدة. هل ترغب في الاستمرار؟",
"Availability" : "أوقات التواجد ",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "إذا قمت بضبط ساعات عملك، سيرى الآخرون متى تكون خارج المكتب عندما يقومون بحجز اجتماع معك.",
"Absence" : "غياب",
"Configure your next absence period." : "تهيئة فترة غيابك القادمة.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "قم أيضاً بتنصيب {calendarappstoreopen} تطبيق التقويم {linkclose}, أو {calendardocopen} أوصل جهازك و موبايلك للمُزامنة ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "رجاءُ، تأكّد من الإعداد الصحيح لـ {emailopen} خادم البريد الالكتروني {linkclose}.",
"Calendar server" : "خادم التقويم",
@@ -316,11 +310,17 @@ OC.L10N.register(
"Send reminder notifications to calendar sharees as well" : "أرسل إشعارات للتذكير إلى المشتركين بالتقويم كذلك",
"Reminders are always sent to organizers and attendees." : "إشعارات التذكير يتم إرسالها دائماً إلى مُنظّم أو مُنظّمي الحدث و المستهدفين بحضوره.",
"Enable notifications for events via push" : "تمكين الإشعارات حول الأحداث عن طريق أسلوب دفع الإشعارات Push",
"Availability" : "أوقات التواجد ",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "إذا قمت بضبط ساعات عملك، سيرى الآخرون متى تكون خارج المكتب عندما يقومون بحجز اجتماع معك.",
"Absence" : "غياب",
"Configure your next absence period." : "تهيئة فترة غيابك القادمة.",
"There was an error updating your attendance status." : "حدث خطأ في تحديث حالة حضورك.",
"Please contact the organizer directly." : "يرجى الاتصال بالمنظم مباشرةً",
"Are you accepting the invitation?" : "هل تقبل الدعوة؟",
"Tentative" : "مبدئي",
"Your attendance was updated successfully." : "حضورك تم تحديثه بنجاحٍ",
"No results." : "لا نتائج",
"Start typing." : "أبدا الكتابة",
"Time zone:" : "منطقة زمنية:"
},
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
+6 -6
View File
@@ -270,8 +270,6 @@
"Last day (inclusive)" : "آخر يوم (متضمن)",
"Out of office replacement (optional)" : "البديل لمن هو خارج المكتب (إختياري)",
"Name of the replacement" : "اسم البديل",
"No results." : "لا نتائج",
"Start typing." : "أبدا الكتابة",
"Short absence status" : "حالة الغياب القصير",
"Long absence Message" : "رسالة الغياب الطويل",
"Save" : "حفظ",
@@ -298,10 +296,6 @@
"Reset to default" : "اعادة تعيين الافتراضيات",
"Import contacts" : "استيراد جهات اتصال",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "استيراد ملف .cvf جديد سوف يؤدي إلى حذف جهات الاتصال التلقائية الحالية واستبدالها بالجديدة. هل ترغب في الاستمرار؟",
"Availability" : "أوقات التواجد ",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "إذا قمت بضبط ساعات عملك، سيرى الآخرون متى تكون خارج المكتب عندما يقومون بحجز اجتماع معك.",
"Absence" : "غياب",
"Configure your next absence period." : "تهيئة فترة غيابك القادمة.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "قم أيضاً بتنصيب {calendarappstoreopen} تطبيق التقويم {linkclose}, أو {calendardocopen} أوصل جهازك و موبايلك للمُزامنة ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "رجاءُ، تأكّد من الإعداد الصحيح لـ {emailopen} خادم البريد الالكتروني {linkclose}.",
"Calendar server" : "خادم التقويم",
@@ -314,11 +308,17 @@
"Send reminder notifications to calendar sharees as well" : "أرسل إشعارات للتذكير إلى المشتركين بالتقويم كذلك",
"Reminders are always sent to organizers and attendees." : "إشعارات التذكير يتم إرسالها دائماً إلى مُنظّم أو مُنظّمي الحدث و المستهدفين بحضوره.",
"Enable notifications for events via push" : "تمكين الإشعارات حول الأحداث عن طريق أسلوب دفع الإشعارات Push",
"Availability" : "أوقات التواجد ",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "إذا قمت بضبط ساعات عملك، سيرى الآخرون متى تكون خارج المكتب عندما يقومون بحجز اجتماع معك.",
"Absence" : "غياب",
"Configure your next absence period." : "تهيئة فترة غيابك القادمة.",
"There was an error updating your attendance status." : "حدث خطأ في تحديث حالة حضورك.",
"Please contact the organizer directly." : "يرجى الاتصال بالمنظم مباشرةً",
"Are you accepting the invitation?" : "هل تقبل الدعوة؟",
"Tentative" : "مبدئي",
"Your attendance was updated successfully." : "حضورك تم تحديثه بنجاحٍ",
"No results." : "لا نتائج",
"Start typing." : "أبدا الكتابة",
"Time zone:" : "منطقة زمنية:"
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
}
+4 -4
View File
@@ -198,10 +198,6 @@ OC.L10N.register(
"Import" : "Importa",
"Error while saving settings" : "Hebo un error mentanto se guardaba la configuración",
"Reset to default" : "Reafitar los valores",
"Availability" : "Disponibilidá",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configures les hores llaborales, les demás persones van ver cuando coles de la oficina al acutar una reunión.",
"Absence" : "Ausencia",
"Configure your next absence period." : "Configura'l próximu periodu d'ausencia",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instala tamién l'{calendarappstoreopen}aplicación Calendariu{linkclose} o {calendardocopen}conecta'l veceru pa ordenadores y/o móviles pa sincronizar ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Asegúrate de que configuresti afayadizamente'l {emailopen}sirvidor de corréu electrónicu{linkclose}.",
"Calendar server" : "Sirvidor de calendarios",
@@ -214,6 +210,10 @@ OC.L10N.register(
"Send reminder notifications to calendar sharees as well" : "Unvia tamién avisos de recordatoriu pa les persones coles que se compartiere'l calendariu",
"Reminders are always sent to organizers and attendees." : "Los recordatorios únviense siempres a organizadores y asistentes",
"Enable notifications for events via push" : "Acriva los avisos automáticos pa los eventos",
"Availability" : "Disponibilidá",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configures les hores llaborales, les demás persones van ver cuando coles de la oficina al acutar una reunión.",
"Absence" : "Ausencia",
"Configure your next absence period." : "Configura'l próximu periodu d'ausencia",
"There was an error updating your attendance status." : "Hebo un error al anovar l'estáu de l'asistencia.",
"Please contact the organizer directly." : "Ponte en contautu direutamente cola organización.",
"Are you accepting the invitation?" : "¿Aceptes la invitación?",
+4 -4
View File
@@ -196,10 +196,6 @@
"Import" : "Importa",
"Error while saving settings" : "Hebo un error mentanto se guardaba la configuración",
"Reset to default" : "Reafitar los valores",
"Availability" : "Disponibilidá",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configures les hores llaborales, les demás persones van ver cuando coles de la oficina al acutar una reunión.",
"Absence" : "Ausencia",
"Configure your next absence period." : "Configura'l próximu periodu d'ausencia",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instala tamién l'{calendarappstoreopen}aplicación Calendariu{linkclose} o {calendardocopen}conecta'l veceru pa ordenadores y/o móviles pa sincronizar ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Asegúrate de que configuresti afayadizamente'l {emailopen}sirvidor de corréu electrónicu{linkclose}.",
"Calendar server" : "Sirvidor de calendarios",
@@ -212,6 +208,10 @@
"Send reminder notifications to calendar sharees as well" : "Unvia tamién avisos de recordatoriu pa les persones coles que se compartiere'l calendariu",
"Reminders are always sent to organizers and attendees." : "Los recordatorios únviense siempres a organizadores y asistentes",
"Enable notifications for events via push" : "Acriva los avisos automáticos pa los eventos",
"Availability" : "Disponibilidá",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configures les hores llaborales, les demás persones van ver cuando coles de la oficina al acutar una reunión.",
"Absence" : "Ausencia",
"Configure your next absence period." : "Configura'l próximu periodu d'ausencia",
"There was an error updating your attendance status." : "Hebo un error al anovar l'estáu de l'asistencia.",
"Please contact the organizer directly." : "Ponte en contautu direutamente cola organización.",
"Are you accepting the invitation?" : "¿Aceptes la invitación?",
+4 -3
View File
@@ -186,14 +186,12 @@ OC.L10N.register(
"Delete slot" : "Изтриване на слот",
"No working hours set" : "Няма зададено работно време",
"Add slot" : "Добавяне на слот",
"Weekdays" : "Делнични дни",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Автоматично задаване на потребителският статус на „Не безпокойте“ извън достъпността, за заглушаване на всички известия.",
"Cancel" : "Отказ",
"Import" : "Импортиране /внасяне/",
"Error while saving settings" : "Грешка при запазване на настройките",
"Reset to default" : "Настройки по подразбиране",
"Availability" : "Работно време",
"Absence" : "Отсъствия",
"Configure your next absence period." : "Задай своето съобщение за отсъствие.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Също така инсталирайте приложението {calendarappstoreopen}Календар{linkclose} или {calendardocopen}, свържете вашия настолен компютър и мобилен телефон за синхронизиране ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Моля, уверете се, че сте настроили правилно {emailopen} имейл сървъра{linkclose}.",
"Calendar server" : "Сървър на календар",
@@ -206,6 +204,9 @@ OC.L10N.register(
"Send reminder notifications to calendar sharees as well" : "Изпращане на известия за напомняния и до споделящите календар",
"Reminders are always sent to organizers and attendees." : "Напомнянията винаги се изпращат до организаторите и присъстващите.",
"Enable notifications for events via push" : "Активиране на известията за събития чрез push",
"Availability" : "Работно време",
"Absence" : "Отсъствия",
"Configure your next absence period." : "Задай своето съобщение за отсъствие.",
"There was an error updating your attendance status." : "Възникна грешка при актуализиране на състоянието на присъствието Ви.",
"Please contact the organizer directly." : "Моля, свържете се директно с организатора.",
"Are you accepting the invitation?" : "Приемате ли поканата?",
+4 -3
View File
@@ -184,14 +184,12 @@
"Delete slot" : "Изтриване на слот",
"No working hours set" : "Няма зададено работно време",
"Add slot" : "Добавяне на слот",
"Weekdays" : "Делнични дни",
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Автоматично задаване на потребителският статус на „Не безпокойте“ извън достъпността, за заглушаване на всички известия.",
"Cancel" : "Отказ",
"Import" : "Импортиране /внасяне/",
"Error while saving settings" : "Грешка при запазване на настройките",
"Reset to default" : "Настройки по подразбиране",
"Availability" : "Работно време",
"Absence" : "Отсъствия",
"Configure your next absence period." : "Задай своето съобщение за отсъствие.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Също така инсталирайте приложението {calendarappstoreopen}Календар{linkclose} или {calendardocopen}, свържете вашия настолен компютър и мобилен телефон за синхронизиране ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Моля, уверете се, че сте настроили правилно {emailopen} имейл сървъра{linkclose}.",
"Calendar server" : "Сървър на календар",
@@ -204,6 +202,9 @@
"Send reminder notifications to calendar sharees as well" : "Изпращане на известия за напомняния и до споделящите календар",
"Reminders are always sent to organizers and attendees." : "Напомнянията винаги се изпращат до организаторите и присъстващите.",
"Enable notifications for events via push" : "Активиране на известията за събития чрез push",
"Availability" : "Работно време",
"Absence" : "Отсъствия",
"Configure your next absence period." : "Задай своето съобщение за отсъствие.",
"There was an error updating your attendance status." : "Възникна грешка при актуализиране на състоянието на присъствието Ви.",
"Please contact the organizer directly." : "Моля, свържете се директно с организатора.",
"Are you accepting the invitation?" : "Приемате ли поканата?",
+6 -6
View File
@@ -272,8 +272,6 @@ OC.L10N.register(
"Last day (inclusive)" : "Darrer dia (inclòs)",
"Out of office replacement (optional)" : "Substitució fora de l'oficina (opcional)",
"Name of the replacement" : "Nom del substitut",
"No results." : "Cap resultat.",
"Start typing." : "Comença a escriure.",
"Short absence status" : "Estat d'absència breu",
"Long absence Message" : "Missatge d'absència llarga",
"Save" : "Desa",
@@ -293,10 +291,6 @@ OC.L10N.register(
"Import" : "Importa",
"Error while saving settings" : "S'ha produït un error en desar els paràmetres",
"Reset to default" : "Reinicialitza els valors per defecte",
"Availability" : "Disponibilitat",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configureu el vostre horari laboral, la resta de persones veuran quan sou fora de l'oficina quan planifiquin una reunió.",
"Absence" : "Absència",
"Configure your next absence period." : "Configureu el pròxim període d'absència.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instal·leu també {calendarappstoreopen}l'aplicació Calendari{linkclose} o {calendardocopen}connecteu el vostre dispositiu d'escriptori i el mòbil per a sincronitzar-los ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Assegureu-vos de configurar correctament el{emailopen}servidor de correu electrònic{linkclose}.",
"Calendar server" : "Servidor de calendari",
@@ -309,11 +303,17 @@ OC.L10N.register(
"Send reminder notifications to calendar sharees as well" : "Envia també notificacions de recordatori als usuaris amb qui s'ha compartit el calendari",
"Reminders are always sent to organizers and attendees." : "Sempre s'envien recordatoris als organitzadors i als assistents.",
"Enable notifications for events via push" : "Habilita les notificacions automàtiques per als esdeveniments",
"Availability" : "Disponibilitat",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configureu el vostre horari laboral, la resta de persones veuran quan sou fora de l'oficina quan planifiquin una reunió.",
"Absence" : "Absència",
"Configure your next absence period." : "Configureu el pròxim període d'absència.",
"There was an error updating your attendance status." : "S'ha produït un error en actualitzar l'estat d'assistència.",
"Please contact the organizer directly." : "Contacteu amb l'organització directament.",
"Are you accepting the invitation?" : "Accepteu la invitació?",
"Tentative" : "Provisional",
"Your attendance was updated successfully." : "S'ha actualitzat correctament l'assistència.",
"No results." : "Cap resultat.",
"Start typing." : "Comença a escriure.",
"Time zone:" : "Fus horari:"
},
"nplurals=2; plural=(n != 1);");
+6 -6
View File
@@ -270,8 +270,6 @@
"Last day (inclusive)" : "Darrer dia (inclòs)",
"Out of office replacement (optional)" : "Substitució fora de l'oficina (opcional)",
"Name of the replacement" : "Nom del substitut",
"No results." : "Cap resultat.",
"Start typing." : "Comença a escriure.",
"Short absence status" : "Estat d'absència breu",
"Long absence Message" : "Missatge d'absència llarga",
"Save" : "Desa",
@@ -291,10 +289,6 @@
"Import" : "Importa",
"Error while saving settings" : "S'ha produït un error en desar els paràmetres",
"Reset to default" : "Reinicialitza els valors per defecte",
"Availability" : "Disponibilitat",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configureu el vostre horari laboral, la resta de persones veuran quan sou fora de l'oficina quan planifiquin una reunió.",
"Absence" : "Absència",
"Configure your next absence period." : "Configureu el pròxim període d'absència.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instal·leu també {calendarappstoreopen}l'aplicació Calendari{linkclose} o {calendardocopen}connecteu el vostre dispositiu d'escriptori i el mòbil per a sincronitzar-los ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Assegureu-vos de configurar correctament el{emailopen}servidor de correu electrònic{linkclose}.",
"Calendar server" : "Servidor de calendari",
@@ -307,11 +301,17 @@
"Send reminder notifications to calendar sharees as well" : "Envia també notificacions de recordatori als usuaris amb qui s'ha compartit el calendari",
"Reminders are always sent to organizers and attendees." : "Sempre s'envien recordatoris als organitzadors i als assistents.",
"Enable notifications for events via push" : "Habilita les notificacions automàtiques per als esdeveniments",
"Availability" : "Disponibilitat",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configureu el vostre horari laboral, la resta de persones veuran quan sou fora de l'oficina quan planifiquin una reunió.",
"Absence" : "Absència",
"Configure your next absence period." : "Configureu el pròxim període d'absència.",
"There was an error updating your attendance status." : "S'ha produït un error en actualitzar l'estat d'assistència.",
"Please contact the organizer directly." : "Contacteu amb l'organització directament.",
"Are you accepting the invitation?" : "Accepteu la invitació?",
"Tentative" : "Provisional",
"Your attendance was updated successfully." : "S'ha actualitzat correctament l'assistència.",
"No results." : "Cap resultat.",
"Start typing." : "Comença a escriure.",
"Time zone:" : "Fus horari:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+7 -6
View File
@@ -252,6 +252,7 @@ OC.L10N.register(
"Completed on %s" : "Dokončeno %s",
"Due on %s by %s" : "Termín do %s od %s",
"Due on %s" : "Termín do %s",
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Vítejte v Nextcloud Kalendáři!\n\nToto je událost pro ukázku prozkoumejte flexibilitu plánování pomoc Nextcloud Kalendáře upravením čeho chcete!\n\nS Nextcloud Kalendářem je možné:\n- Jednoduše vytvářet, upravovat a spravovat události.\n- Vytvářet vícero kalendářů a sdílet je s kolegy, přáteli či rodinou.\n- Zjišťovat dostupnost a zobrazovat své doby nedostupnosti ostatním.\n- Hladce napojovat na aplikace a zřízení prostřednictvím CalDAV.\n- Přizpůsobit si svůj dojem z používání: plánovat opakující se události, upravovat notifikace a ostatní nastavení.",
"Example event - open me!" : "Událost pro ukázku otevřete ji!",
"System Address Book" : "Systémový adresář kontaktů",
"The system address book contains contact information for all users in your instance." : "Systémový adresář kontaktů obsahuje informace pro všechny uživatele ve vámi využívané instanci.",
@@ -279,8 +280,6 @@ OC.L10N.register(
"Last day (inclusive)" : "Poslední den (včetně)",
"Out of office replacement (optional)" : "Zástup když mimo kancelář (volitelné)",
"Name of the replacement" : "Jméno zástupu",
"No results." : "Nic nenalezeno.",
"Start typing." : "Začněte psát.",
"Short absence status" : "Stav krátké nepřítomnosti",
"Long absence Message" : "Zpráva pro dlouhou nepřítomnost",
"Save" : "Uložit",
@@ -315,10 +314,6 @@ OC.L10N.register(
"Import calendar event" : "Naimportovat událost kalendáře",
"Uploading a new event will overwrite the existing one." : "Nahrání nové události přepíše tu existující.",
"Upload event" : "Nahrát událost",
"Availability" : "Dostupnost",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Když sem zadáte svou pracovní dobu, ostatní lidé při rezervování schůzky uvidí, kdy jste mimo kancelář.",
"Absence" : "Nepřítomnost",
"Configure your next absence period." : "Nastavte období své nepřítomnosti.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Také nainstalujte {calendarappstoreopen}aplikaci Kalendář{linkclose}, nebo {calendardocopen}připojte svůj počítač a telefon pro synchronizaci ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Ověřte, že jste správně nastavili {emailopen}e-mailový server{linkclose}.",
"Calendar server" : "Kalendářový server",
@@ -333,11 +328,17 @@ OC.L10N.register(
"Enable notifications for events via push" : "Upozorňovat na události prostřednictvím služby push",
"Example content" : "Obsah pro ukázku",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Obsah pro ukázku slouží pro předvedení funkcí Nextcloud. Výchozí obsah je dodáván s Nextcloud a je možné ho nahradit uživatelsky určeným.",
"Availability" : "Dostupnost",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Když sem zadáte svou pracovní dobu, ostatní lidé při rezervování schůzky uvidí, kdy jste mimo kancelář.",
"Absence" : "Nepřítomnost",
"Configure your next absence period." : "Nastavte období své nepřítomnosti.",
"There was an error updating your attendance status." : "Vyskytla se chyba při aktualizaci vašeho stavu účasti.",
"Please contact the organizer directly." : "Kontaktujte organizátora přímo.",
"Are you accepting the invitation?" : "Přijímáte pozvání?",
"Tentative" : "Nezávazně",
"Your attendance was updated successfully." : "Vaše účast byla úspěšně aktualizována.",
"No results." : "Nic nenalezeno.",
"Start typing." : "Začněte psát.",
"Time zone:" : "Časové pásmo:"
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");
+7 -6
View File
@@ -250,6 +250,7 @@
"Completed on %s" : "Dokončeno %s",
"Due on %s by %s" : "Termín do %s od %s",
"Due on %s" : "Termín do %s",
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Vítejte v Nextcloud Kalendáři!\n\nToto je událost pro ukázku prozkoumejte flexibilitu plánování pomoc Nextcloud Kalendáře upravením čeho chcete!\n\nS Nextcloud Kalendářem je možné:\n- Jednoduše vytvářet, upravovat a spravovat události.\n- Vytvářet vícero kalendářů a sdílet je s kolegy, přáteli či rodinou.\n- Zjišťovat dostupnost a zobrazovat své doby nedostupnosti ostatním.\n- Hladce napojovat na aplikace a zřízení prostřednictvím CalDAV.\n- Přizpůsobit si svůj dojem z používání: plánovat opakující se události, upravovat notifikace a ostatní nastavení.",
"Example event - open me!" : "Událost pro ukázku otevřete ji!",
"System Address Book" : "Systémový adresář kontaktů",
"The system address book contains contact information for all users in your instance." : "Systémový adresář kontaktů obsahuje informace pro všechny uživatele ve vámi využívané instanci.",
@@ -277,8 +278,6 @@
"Last day (inclusive)" : "Poslední den (včetně)",
"Out of office replacement (optional)" : "Zástup když mimo kancelář (volitelné)",
"Name of the replacement" : "Jméno zástupu",
"No results." : "Nic nenalezeno.",
"Start typing." : "Začněte psát.",
"Short absence status" : "Stav krátké nepřítomnosti",
"Long absence Message" : "Zpráva pro dlouhou nepřítomnost",
"Save" : "Uložit",
@@ -313,10 +312,6 @@
"Import calendar event" : "Naimportovat událost kalendáře",
"Uploading a new event will overwrite the existing one." : "Nahrání nové události přepíše tu existující.",
"Upload event" : "Nahrát událost",
"Availability" : "Dostupnost",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Když sem zadáte svou pracovní dobu, ostatní lidé při rezervování schůzky uvidí, kdy jste mimo kancelář.",
"Absence" : "Nepřítomnost",
"Configure your next absence period." : "Nastavte období své nepřítomnosti.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Také nainstalujte {calendarappstoreopen}aplikaci Kalendář{linkclose}, nebo {calendardocopen}připojte svůj počítač a telefon pro synchronizaci ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Ověřte, že jste správně nastavili {emailopen}e-mailový server{linkclose}.",
"Calendar server" : "Kalendářový server",
@@ -331,11 +326,17 @@
"Enable notifications for events via push" : "Upozorňovat na události prostřednictvím služby push",
"Example content" : "Obsah pro ukázku",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Obsah pro ukázku slouží pro předvedení funkcí Nextcloud. Výchozí obsah je dodáván s Nextcloud a je možné ho nahradit uživatelsky určeným.",
"Availability" : "Dostupnost",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Když sem zadáte svou pracovní dobu, ostatní lidé při rezervování schůzky uvidí, kdy jste mimo kancelář.",
"Absence" : "Nepřítomnost",
"Configure your next absence period." : "Nastavte období své nepřítomnosti.",
"There was an error updating your attendance status." : "Vyskytla se chyba při aktualizaci vašeho stavu účasti.",
"Please contact the organizer directly." : "Kontaktujte organizátora přímo.",
"Are you accepting the invitation?" : "Přijímáte pozvání?",
"Tentative" : "Nezávazně",
"Your attendance was updated successfully." : "Vaše účast byla úspěšně aktualizována.",
"No results." : "Nic nenalezeno.",
"Start typing." : "Začněte psát.",
"Time zone:" : "Časové pásmo:"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
}
+12 -6
View File
@@ -220,6 +220,8 @@ OC.L10N.register(
"{actor} updated contact {card} in address book {addressbook}" : "{actor} opdaterede kontakten {card} i adressebog {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Du opdaterede kontakten {card} i adressebog {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "En <strong>kontakt</strong> eller <strong>adressebog</strong> blev ændret",
"System address book disabled" : "Systemadressebog deaktiveret",
"The system contacts address book has been automatically disabled during upgrade. This means that the address book will no longer be available to users in the contacts app or other clients. The system contacts address book was disabled because the amount of contacts in the address book exceeded the maximum recommended number of contacts. This limit is set to prevent performance issues. You can re-enable the system address book with the following command {command}" : "Adressebogen for systemkontakter er automatisk blevet deaktiveret under opgraderingen. Det betyder, at adressebogen ikke længere vil være tilgængelig for brugere i kontaktappen eller andre klienter. Adressebogen for systemkontakter blev deaktiveret, fordi antallet af kontakter i adressebogen oversteg det maksimale anbefalede antal kontakter. Denne grænse er indstillet for at forhindre problemer med ydeevnen. Du kan genaktivere systemadressebogen med følgende kommando {command}",
"Accounts" : "Konti",
"System address book which holds all accounts" : "Systemets adressebog, som indeholder alle konti",
"File is not updatable: %1$s" : "Filen kan ikke updateres: %1$s",
@@ -258,6 +260,10 @@ OC.L10N.register(
"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\".",
"DAV system address book size" : "Størrelse på DAV systemets adressebog",
"The system address book is disabled" : "Systemets adressebog er deaktiveret",
"The system address book is enabled, but contains more than the configured limit of %d contacts" : "Systemadressebogen er aktiveret, men indeholder mere end den konfigurerede grænse på %d kontakter",
"The system address book is enabled and contains less than the configured limit of %d contacts" : "Systemadressebogen er aktiveret og indeholder mindre end den konfigurerede grænse på %d kontakter",
"WebDAV endpoint" : "WebDAV endpoint",
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Kunne ikke kontrollere, at din webserver er korrekt konfigureret til at tillade filsynkronisering over WebDAV. Tjek venligst manuelt.",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Din webserver er endnu ikke sat korrekt op til at tillade filsynkronisering, fordi WebDAV-grænsefladen ser ud til at være i stykker.",
@@ -274,8 +280,6 @@ OC.L10N.register(
"Last day (inclusive)" : "Sidste dag (indklusiv)",
"Out of office replacement (optional)" : "Ikke på kontoret udskiftning (valgfrit)",
"Name of the replacement" : "Navn på udskiftning",
"No results." : "Ingen resultater.",
"Start typing." : "Begynd at skrive.",
"Short absence status" : "Kort fraværsstatus",
"Long absence Message" : "Langt fravær besked",
"Save" : "Gem",
@@ -310,10 +314,6 @@ OC.L10N.register(
"Import calendar event" : "Importér kalenderbegivenhed",
"Uploading a new event will overwrite the existing one." : "Upload af en ny begivenhed vil overskrive den eksisterende.",
"Upload event" : "Upload begivenhed",
"Availability" : "tilgængelighed",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Hvis du konfigurerer dine arbejdstider, vil andre se, når du er fraværende, når de booker et møde.",
"Absence" : "Fravær",
"Configure your next absence period." : "Konfigurer din næste fraværsperiode.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installer også {calendarappstoreopen}Kalender-appen{linkclose}, eller {calendardocopen}tilslut dit skrivebord og din mobil til synkronisering ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Sørg for at konfigurere {emailopen}e-mail-serveren{linkclose} korrekt.",
"Calendar server" : "Kalenderserver",
@@ -328,11 +328,17 @@ OC.L10N.register(
"Enable notifications for events via push" : "Aktiver notifikationer for begivenheder via push",
"Example content" : "Eksempelindhold",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Eksempelindhold fremviser funktionerne i Nextcloud. Standardindhold leveres med Nextcloud, og kan erstattes af brugerdefineret indhold.",
"Availability" : "tilgængelighed",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Hvis du konfigurerer dine arbejdstider, vil andre se, når du er fraværende, når de booker et møde.",
"Absence" : "Fravær",
"Configure your next absence period." : "Konfigurer din næste fraværsperiode.",
"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?",
"Tentative" : "Foreløbig",
"Your attendance was updated successfully." : "Dit tilstedeværelse blev opdateret.",
"No results." : "Ingen resultater.",
"Start typing." : "Begynd at skrive.",
"Time zone:" : "Tidszone:"
},
"nplurals=2; plural=(n != 1);");
+12 -6
View File
@@ -218,6 +218,8 @@
"{actor} updated contact {card} in address book {addressbook}" : "{actor} opdaterede kontakten {card} i adressebog {addressbook}",
"You updated contact {card} in address book {addressbook}" : "Du opdaterede kontakten {card} i adressebog {addressbook}",
"A <strong>contact</strong> or <strong>address book</strong> was modified" : "En <strong>kontakt</strong> eller <strong>adressebog</strong> blev ændret",
"System address book disabled" : "Systemadressebog deaktiveret",
"The system contacts address book has been automatically disabled during upgrade. This means that the address book will no longer be available to users in the contacts app or other clients. The system contacts address book was disabled because the amount of contacts in the address book exceeded the maximum recommended number of contacts. This limit is set to prevent performance issues. You can re-enable the system address book with the following command {command}" : "Adressebogen for systemkontakter er automatisk blevet deaktiveret under opgraderingen. Det betyder, at adressebogen ikke længere vil være tilgængelig for brugere i kontaktappen eller andre klienter. Adressebogen for systemkontakter blev deaktiveret, fordi antallet af kontakter i adressebogen oversteg det maksimale anbefalede antal kontakter. Denne grænse er indstillet for at forhindre problemer med ydeevnen. Du kan genaktivere systemadressebogen med følgende kommando {command}",
"Accounts" : "Konti",
"System address book which holds all accounts" : "Systemets adressebog, som indeholder alle konti",
"File is not updatable: %1$s" : "Filen kan ikke updateres: %1$s",
@@ -256,6 +258,10 @@
"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\".",
"DAV system address book size" : "Størrelse på DAV systemets adressebog",
"The system address book is disabled" : "Systemets adressebog er deaktiveret",
"The system address book is enabled, but contains more than the configured limit of %d contacts" : "Systemadressebogen er aktiveret, men indeholder mere end den konfigurerede grænse på %d kontakter",
"The system address book is enabled and contains less than the configured limit of %d contacts" : "Systemadressebogen er aktiveret og indeholder mindre end den konfigurerede grænse på %d kontakter",
"WebDAV endpoint" : "WebDAV endpoint",
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Kunne ikke kontrollere, at din webserver er korrekt konfigureret til at tillade filsynkronisering over WebDAV. Tjek venligst manuelt.",
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Din webserver er endnu ikke sat korrekt op til at tillade filsynkronisering, fordi WebDAV-grænsefladen ser ud til at være i stykker.",
@@ -272,8 +278,6 @@
"Last day (inclusive)" : "Sidste dag (indklusiv)",
"Out of office replacement (optional)" : "Ikke på kontoret udskiftning (valgfrit)",
"Name of the replacement" : "Navn på udskiftning",
"No results." : "Ingen resultater.",
"Start typing." : "Begynd at skrive.",
"Short absence status" : "Kort fraværsstatus",
"Long absence Message" : "Langt fravær besked",
"Save" : "Gem",
@@ -308,10 +312,6 @@
"Import calendar event" : "Importér kalenderbegivenhed",
"Uploading a new event will overwrite the existing one." : "Upload af en ny begivenhed vil overskrive den eksisterende.",
"Upload event" : "Upload begivenhed",
"Availability" : "tilgængelighed",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Hvis du konfigurerer dine arbejdstider, vil andre se, når du er fraværende, når de booker et møde.",
"Absence" : "Fravær",
"Configure your next absence period." : "Konfigurer din næste fraværsperiode.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installer også {calendarappstoreopen}Kalender-appen{linkclose}, eller {calendardocopen}tilslut dit skrivebord og din mobil til synkronisering ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Sørg for at konfigurere {emailopen}e-mail-serveren{linkclose} korrekt.",
"Calendar server" : "Kalenderserver",
@@ -326,11 +326,17 @@
"Enable notifications for events via push" : "Aktiver notifikationer for begivenheder via push",
"Example content" : "Eksempelindhold",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Eksempelindhold fremviser funktionerne i Nextcloud. Standardindhold leveres med Nextcloud, og kan erstattes af brugerdefineret indhold.",
"Availability" : "tilgængelighed",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Hvis du konfigurerer dine arbejdstider, vil andre se, når du er fraværende, når de booker et møde.",
"Absence" : "Fravær",
"Configure your next absence period." : "Konfigurer din næste fraværsperiode.",
"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?",
"Tentative" : "Foreløbig",
"Your attendance was updated successfully." : "Dit tilstedeværelse blev opdateret.",
"No results." : "Ingen resultater.",
"Start typing." : "Begynd at skrive.",
"Time zone:" : "Tidszone:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+13 -13
View File
@@ -280,8 +280,6 @@ OC.L10N.register(
"Last day (inclusive)" : "Letzter Tag (inklusiv)",
"Out of office replacement (optional)" : "Abwesenheitsvertretung (optional)",
"Name of the replacement" : "Name der Vertretung",
"No results." : "Keine Ergebnisse",
"Start typing." : "Mit dem Schreiben beginnen.",
"Short absence status" : "Kurzer Abwesenheitsstatus",
"Long absence Message" : "Lange Abwesenheitsnachricht",
"Save" : "Speichern",
@@ -308,18 +306,14 @@ OC.L10N.register(
"Reset to default" : "Auf Standard zurücksetzen ",
"Import contacts" : "Kontakte importieren",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Durch das Importieren einer neuen VCF-Datei wird der vorhandene Standardkontakt gelöscht und durch den neuen ersetzt. Fortsetzen?",
"Failed to save example event creation setting" : "Einstellung für die Beispiels-Ereigniserstellung konnte nicht gespeichert werden",
"Failed to upload the example event" : "Das Beispielsereignis konnte nicht hochgeladen werden",
"Custom example event was saved successfully" : "Benutzerdefiniertes Beispielereignis gespeichert",
"Failed to delete the custom example event" : "Benutzerdefiniertes Beispielsereignis konnte nicht gelöscht werden",
"Custom example event was deleted successfully" : "Benutzerdefiniertes Beispielsereignis wurde gelöscht",
"Failed to save example event creation setting" : "Einstellung für die Beispiels-Terminerstellung konnte nicht gespeichert werden",
"Failed to upload the example event" : "Der Beispieltermin konnte nicht hochgeladen werden",
"Custom example event was saved successfully" : "Benutzerdefinierter Beispieltermin gespeichert",
"Failed to delete the custom example event" : "Benutzerdefinierter Beispieltermin konnte nicht gelöscht werden",
"Custom example event was deleted successfully" : "Benutzerdefinierter Beispieltermin wurde gelöscht",
"Import calendar event" : "Kalenderereignis importieren",
"Uploading a new event will overwrite the existing one." : "Das Hochladen eines neuen Ereignisses wird das bestehende Ereignis überschreiben.",
"Upload event" : "Ereignis hochladen",
"Availability" : "Verfügbarkeit",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Wenn du deine Arbeitszeiten angibst, können andere beim Buchen einer Besprechung sehen, wann du nicht im Büro bist.",
"Absence" : "Abwesenheit",
"Configure your next absence period." : "Richte deinen nächsten Abwesenheitszeitraum ein.",
"Uploading a new event will overwrite the existing one." : "Das Hochladen eines neuen Termins wird den bestehenden Termin überschreiben.",
"Upload event" : "Termin hochladen",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installiere außerdem die {calendarappstoreopen}Kalender-App{linkclose} oder {calendardocopen}verbinde deinen Desktop & Mobilgerät zur Synchronisierung ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Bitte stelle sicher, dass du {emailopen}den E-Mail Server{linkclose} ordnungsgemäß einrichtest.",
"Calendar server" : "Kalender-Server",
@@ -334,11 +328,17 @@ OC.L10N.register(
"Enable notifications for events via push" : "Benachrichtigungen für Termine per Push aktivieren",
"Example content" : "Beispielsinhalt",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Beispielinhalte dienen dazu, die Funktionen von Nextcloud vorzustellen. Standardinhalte werden mit Nextcloud ausgeliefert und können durch benutzerdefinierte Inhalte ersetzt werden.",
"Availability" : "Verfügbarkeit",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Wenn du deine Arbeitszeiten angibst, können andere beim Buchen einer Besprechung sehen, wann du nicht im Büro bist.",
"Absence" : "Abwesenheit",
"Configure your next absence period." : "Richte deinen nächsten Abwesenheitszeitraum ein.",
"There was an error updating your attendance status." : "Es ist ein Fehler beim Aktualisieren deines Teilnehmerstatus aufgetreten.",
"Please contact the organizer directly." : "Bitte den Organisator direkt kontaktieren.",
"Are you accepting the invitation?" : "Die Einladung annehmen?",
"Tentative" : "Vorläufig",
"Your attendance was updated successfully." : "Dein Teilnehmerstatus wurde aktualisiert.",
"No results." : "Keine Ergebnisse",
"Start typing." : "Mit dem Schreiben beginnen.",
"Time zone:" : "Zeitzone:"
},
"nplurals=2; plural=(n != 1);");
+13 -13
View File
@@ -278,8 +278,6 @@
"Last day (inclusive)" : "Letzter Tag (inklusiv)",
"Out of office replacement (optional)" : "Abwesenheitsvertretung (optional)",
"Name of the replacement" : "Name der Vertretung",
"No results." : "Keine Ergebnisse",
"Start typing." : "Mit dem Schreiben beginnen.",
"Short absence status" : "Kurzer Abwesenheitsstatus",
"Long absence Message" : "Lange Abwesenheitsnachricht",
"Save" : "Speichern",
@@ -306,18 +304,14 @@
"Reset to default" : "Auf Standard zurücksetzen ",
"Import contacts" : "Kontakte importieren",
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Durch das Importieren einer neuen VCF-Datei wird der vorhandene Standardkontakt gelöscht und durch den neuen ersetzt. Fortsetzen?",
"Failed to save example event creation setting" : "Einstellung für die Beispiels-Ereigniserstellung konnte nicht gespeichert werden",
"Failed to upload the example event" : "Das Beispielsereignis konnte nicht hochgeladen werden",
"Custom example event was saved successfully" : "Benutzerdefiniertes Beispielereignis gespeichert",
"Failed to delete the custom example event" : "Benutzerdefiniertes Beispielsereignis konnte nicht gelöscht werden",
"Custom example event was deleted successfully" : "Benutzerdefiniertes Beispielsereignis wurde gelöscht",
"Failed to save example event creation setting" : "Einstellung für die Beispiels-Terminerstellung konnte nicht gespeichert werden",
"Failed to upload the example event" : "Der Beispieltermin konnte nicht hochgeladen werden",
"Custom example event was saved successfully" : "Benutzerdefinierter Beispieltermin gespeichert",
"Failed to delete the custom example event" : "Benutzerdefinierter Beispieltermin konnte nicht gelöscht werden",
"Custom example event was deleted successfully" : "Benutzerdefinierter Beispieltermin wurde gelöscht",
"Import calendar event" : "Kalenderereignis importieren",
"Uploading a new event will overwrite the existing one." : "Das Hochladen eines neuen Ereignisses wird das bestehende Ereignis überschreiben.",
"Upload event" : "Ereignis hochladen",
"Availability" : "Verfügbarkeit",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Wenn du deine Arbeitszeiten angibst, können andere beim Buchen einer Besprechung sehen, wann du nicht im Büro bist.",
"Absence" : "Abwesenheit",
"Configure your next absence period." : "Richte deinen nächsten Abwesenheitszeitraum ein.",
"Uploading a new event will overwrite the existing one." : "Das Hochladen eines neuen Termins wird den bestehenden Termin überschreiben.",
"Upload event" : "Termin hochladen",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installiere außerdem die {calendarappstoreopen}Kalender-App{linkclose} oder {calendardocopen}verbinde deinen Desktop & Mobilgerät zur Synchronisierung ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Bitte stelle sicher, dass du {emailopen}den E-Mail Server{linkclose} ordnungsgemäß einrichtest.",
"Calendar server" : "Kalender-Server",
@@ -332,11 +326,17 @@
"Enable notifications for events via push" : "Benachrichtigungen für Termine per Push aktivieren",
"Example content" : "Beispielsinhalt",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Beispielinhalte dienen dazu, die Funktionen von Nextcloud vorzustellen. Standardinhalte werden mit Nextcloud ausgeliefert und können durch benutzerdefinierte Inhalte ersetzt werden.",
"Availability" : "Verfügbarkeit",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Wenn du deine Arbeitszeiten angibst, können andere beim Buchen einer Besprechung sehen, wann du nicht im Büro bist.",
"Absence" : "Abwesenheit",
"Configure your next absence period." : "Richte deinen nächsten Abwesenheitszeitraum ein.",
"There was an error updating your attendance status." : "Es ist ein Fehler beim Aktualisieren deines Teilnehmerstatus aufgetreten.",
"Please contact the organizer directly." : "Bitte den Organisator direkt kontaktieren.",
"Are you accepting the invitation?" : "Die Einladung annehmen?",
"Tentative" : "Vorläufig",
"Your attendance was updated successfully." : "Dein Teilnehmerstatus wurde aktualisiert.",
"No results." : "Keine Ergebnisse",
"Start typing." : "Mit dem Schreiben beginnen.",
"Time zone:" : "Zeitzone:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+6 -6
View File
@@ -280,8 +280,6 @@ OC.L10N.register(
"Last day (inclusive)" : "Letzter Tag (inklusiv)",
"Out of office replacement (optional)" : "Abwesenheitsvertretung (optional)",
"Name of the replacement" : "Name der Vertretung",
"No results." : "Keine Ergebnisse.",
"Start typing." : "Anfangen zu tippen.",
"Short absence status" : "Kurzer Abwesenheitsstatus",
"Long absence Message" : "Lange Abwesenheitsnachricht",
"Save" : "Speichern",
@@ -316,10 +314,6 @@ OC.L10N.register(
"Import calendar event" : "Kalendertermin importieren",
"Uploading a new event will overwrite the existing one." : "Das Hochladen eines neuen Termins wird den bestehenden Termin überschreiben.",
"Upload event" : "Termin hochladen",
"Availability" : "Verfügbarkeit",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Wenn Sie Ihre Arbeitszeiten angeben, können andere beim Buchen einer Besprechung sehen, wann Sie nicht im Büro sind.",
"Absence" : "Abwesenheit",
"Configure your next absence period." : "Richten Sie ihren nächsten Abwesenheitszeitraum ein.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installieren Sie außerdem die {calendarappstoreopen}Kalender-App{linkclose} oder {calendardocopen}verbinden Sie Ihren Desktop & Mobilgerät zur Synchronisierung ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Bitte stellen Sie sicher, dass Sie {emailopen}den E-Mail Server{linkclose} ordnungsgemäß eingerichtet haben.",
"Calendar server" : "Kalender-Server",
@@ -334,11 +328,17 @@ OC.L10N.register(
"Enable notifications for events via push" : "Benachrichtigungen für Termine per Push aktivieren",
"Example content" : "Beispielsinhalt",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Beispielinhalte dienen dazu, die Funktionen von Nextcloud vorzustellen. Standardinhalte werden mit Nextcloud ausgeliefert und können durch benutzerdefinierte Inhalte ersetzt werden.",
"Availability" : "Verfügbarkeit",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Wenn Sie Ihre Arbeitszeiten angeben, können andere beim Buchen einer Besprechung sehen, wann Sie nicht im Büro sind.",
"Absence" : "Abwesenheit",
"Configure your next absence period." : "Richten Sie ihren nächsten Abwesenheitszeitraum ein.",
"There was an error updating your attendance status." : "Es ist ein Fehler beim Aktualisieren Ihres Teilnehmerstatus aufgetreten.",
"Please contact the organizer directly." : "Bitte den Organisator direkt kontaktieren.",
"Are you accepting the invitation?" : "Die Einladung annehmen?",
"Tentative" : "Vorläufig",
"Your attendance was updated successfully." : "Ihr Teilnehmerstatus wurde aktualisiert.",
"No results." : "Keine Ergebnisse.",
"Start typing." : "Anfangen zu tippen.",
"Time zone:" : "Zeitzone:"
},
"nplurals=2; plural=(n != 1);");
+6 -6
View File
@@ -278,8 +278,6 @@
"Last day (inclusive)" : "Letzter Tag (inklusiv)",
"Out of office replacement (optional)" : "Abwesenheitsvertretung (optional)",
"Name of the replacement" : "Name der Vertretung",
"No results." : "Keine Ergebnisse.",
"Start typing." : "Anfangen zu tippen.",
"Short absence status" : "Kurzer Abwesenheitsstatus",
"Long absence Message" : "Lange Abwesenheitsnachricht",
"Save" : "Speichern",
@@ -314,10 +312,6 @@
"Import calendar event" : "Kalendertermin importieren",
"Uploading a new event will overwrite the existing one." : "Das Hochladen eines neuen Termins wird den bestehenden Termin überschreiben.",
"Upload event" : "Termin hochladen",
"Availability" : "Verfügbarkeit",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Wenn Sie Ihre Arbeitszeiten angeben, können andere beim Buchen einer Besprechung sehen, wann Sie nicht im Büro sind.",
"Absence" : "Abwesenheit",
"Configure your next absence period." : "Richten Sie ihren nächsten Abwesenheitszeitraum ein.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Installieren Sie außerdem die {calendarappstoreopen}Kalender-App{linkclose} oder {calendardocopen}verbinden Sie Ihren Desktop & Mobilgerät zur Synchronisierung ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Bitte stellen Sie sicher, dass Sie {emailopen}den E-Mail Server{linkclose} ordnungsgemäß eingerichtet haben.",
"Calendar server" : "Kalender-Server",
@@ -332,11 +326,17 @@
"Enable notifications for events via push" : "Benachrichtigungen für Termine per Push aktivieren",
"Example content" : "Beispielsinhalt",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Beispielinhalte dienen dazu, die Funktionen von Nextcloud vorzustellen. Standardinhalte werden mit Nextcloud ausgeliefert und können durch benutzerdefinierte Inhalte ersetzt werden.",
"Availability" : "Verfügbarkeit",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Wenn Sie Ihre Arbeitszeiten angeben, können andere beim Buchen einer Besprechung sehen, wann Sie nicht im Büro sind.",
"Absence" : "Abwesenheit",
"Configure your next absence period." : "Richten Sie ihren nächsten Abwesenheitszeitraum ein.",
"There was an error updating your attendance status." : "Es ist ein Fehler beim Aktualisieren Ihres Teilnehmerstatus aufgetreten.",
"Please contact the organizer directly." : "Bitte den Organisator direkt kontaktieren.",
"Are you accepting the invitation?" : "Die Einladung annehmen?",
"Tentative" : "Vorläufig",
"Your attendance was updated successfully." : "Ihr Teilnehmerstatus wurde aktualisiert.",
"No results." : "Keine Ergebnisse.",
"Start typing." : "Anfangen zu tippen.",
"Time zone:" : "Zeitzone:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+6 -6
View File
@@ -280,8 +280,6 @@ OC.L10N.register(
"Last day (inclusive)" : "Τελευταία ημέρα (συμπεριλαμβανομένης)",
"Out of office replacement (optional)" : "Αντικαταστάτης εκτός γραφείου (προαιρετικό)",
"Name of the replacement" : "Όνομα του αντικαταστάτη",
"No results." : "Κανένα αποτέλεσμα.",
"Start typing." : "Ξεκινήστε να πληκτρολογείτε.",
"Short absence status" : "Σύντομη κατάσταση απουσίας",
"Long absence Message" : "Μήνυμα παρατεταμένης απουσίας",
"Save" : "Αποθήκευση",
@@ -316,10 +314,6 @@ OC.L10N.register(
"Import calendar event" : "Εισαγωγή εκδήλωσης ημερολογίου",
"Uploading a new event will overwrite the existing one." : "Η μεταφόρτωση μιας νέας εκδήλωσης θα αντικαταστήσει την υπάρχουσα.",
"Upload event" : "Μεταφόρτωση εκδήλωσης",
"Availability" : "Διαθεσιμότητα",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Εάν ρυθμίσετε τις ώρες εργασίας σας, άλλοι άνθρωποι θα βλέπουν πότε είστε εκτός γραφείου όταν κλείνουν μια συνάντηση.",
"Absence" : "Απουσία",
"Configure your next absence period." : "Ρυθμίστε την επόμενη περίοδο απουσίας σας.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Εγκαταστήστε επίσης την {calendarappstoreopen}Εφαρμογή ημερολογίου{linkclose}, ή {calendardocopen}συνδέστε τον υπολογιστή & το κινητό σας για συγχρονισμό ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Παρακαλώ σιγουρευτείτε για την σωστή ρύθμιση {emailopen}του διακομιστή αλληλογραφίας{linkclose}.",
"Calendar server" : "Διακομιστής ημερολογίου",
@@ -334,11 +328,17 @@ OC.L10N.register(
"Enable notifications for events via push" : "Ενεργοποίηση ειδοποιήσεων μέσω push",
"Example content" : "Περιεχόμενο παραδείγματος",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Το περιεχόμενο παραδείγματος χρησιμεύει για την επίδειξη των λειτουργιών του Nextcloud. Προεπιλεγμένο περιεχόμενο περιλαμβάνεται στο Nextcloud και μπορεί να αντικατασταθεί από προσαρμοσμένο περιεχόμενο.",
"Availability" : "Διαθεσιμότητα",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Εάν ρυθμίσετε τις ώρες εργασίας σας, άλλοι άνθρωποι θα βλέπουν πότε είστε εκτός γραφείου όταν κλείνουν μια συνάντηση.",
"Absence" : "Απουσία",
"Configure your next absence period." : "Ρυθμίστε την επόμενη περίοδο απουσίας σας.",
"There was an error updating your attendance status." : "Σφάλμα ενημέρωσης κατάστασής σας.",
"Please contact the organizer directly." : "Παρακαλώ επικοινωνήστε απ' ευθείας με τον διοργανωτή.",
"Are you accepting the invitation?" : "Αποδέχεστε την πρόσκληση;",
"Tentative" : "Δοκιμαστικό",
"Your attendance was updated successfully." : "Η παρουσία σας ενημερώθηκε με επιτυχία.",
"No results." : "Κανένα αποτέλεσμα.",
"Start typing." : "Ξεκινήστε να πληκτρολογείτε.",
"Time zone:" : "Ζώνη ώρας:"
},
"nplurals=2; plural=(n != 1);");
+6 -6
View File
@@ -278,8 +278,6 @@
"Last day (inclusive)" : "Τελευταία ημέρα (συμπεριλαμβανομένης)",
"Out of office replacement (optional)" : "Αντικαταστάτης εκτός γραφείου (προαιρετικό)",
"Name of the replacement" : "Όνομα του αντικαταστάτη",
"No results." : "Κανένα αποτέλεσμα.",
"Start typing." : "Ξεκινήστε να πληκτρολογείτε.",
"Short absence status" : "Σύντομη κατάσταση απουσίας",
"Long absence Message" : "Μήνυμα παρατεταμένης απουσίας",
"Save" : "Αποθήκευση",
@@ -314,10 +312,6 @@
"Import calendar event" : "Εισαγωγή εκδήλωσης ημερολογίου",
"Uploading a new event will overwrite the existing one." : "Η μεταφόρτωση μιας νέας εκδήλωσης θα αντικαταστήσει την υπάρχουσα.",
"Upload event" : "Μεταφόρτωση εκδήλωσης",
"Availability" : "Διαθεσιμότητα",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Εάν ρυθμίσετε τις ώρες εργασίας σας, άλλοι άνθρωποι θα βλέπουν πότε είστε εκτός γραφείου όταν κλείνουν μια συνάντηση.",
"Absence" : "Απουσία",
"Configure your next absence period." : "Ρυθμίστε την επόμενη περίοδο απουσίας σας.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Εγκαταστήστε επίσης την {calendarappstoreopen}Εφαρμογή ημερολογίου{linkclose}, ή {calendardocopen}συνδέστε τον υπολογιστή & το κινητό σας για συγχρονισμό ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Παρακαλώ σιγουρευτείτε για την σωστή ρύθμιση {emailopen}του διακομιστή αλληλογραφίας{linkclose}.",
"Calendar server" : "Διακομιστής ημερολογίου",
@@ -332,11 +326,17 @@
"Enable notifications for events via push" : "Ενεργοποίηση ειδοποιήσεων μέσω push",
"Example content" : "Περιεχόμενο παραδείγματος",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Το περιεχόμενο παραδείγματος χρησιμεύει για την επίδειξη των λειτουργιών του Nextcloud. Προεπιλεγμένο περιεχόμενο περιλαμβάνεται στο Nextcloud και μπορεί να αντικατασταθεί από προσαρμοσμένο περιεχόμενο.",
"Availability" : "Διαθεσιμότητα",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Εάν ρυθμίσετε τις ώρες εργασίας σας, άλλοι άνθρωποι θα βλέπουν πότε είστε εκτός γραφείου όταν κλείνουν μια συνάντηση.",
"Absence" : "Απουσία",
"Configure your next absence period." : "Ρυθμίστε την επόμενη περίοδο απουσίας σας.",
"There was an error updating your attendance status." : "Σφάλμα ενημέρωσης κατάστασής σας.",
"Please contact the organizer directly." : "Παρακαλώ επικοινωνήστε απ' ευθείας με τον διοργανωτή.",
"Are you accepting the invitation?" : "Αποδέχεστε την πρόσκληση;",
"Tentative" : "Δοκιμαστικό",
"Your attendance was updated successfully." : "Η παρουσία σας ενημερώθηκε με επιτυχία.",
"No results." : "Κανένα αποτέλεσμα.",
"Start typing." : "Ξεκινήστε να πληκτρολογείτε.",
"Time zone:" : "Ζώνη ώρας:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+6 -6
View File
@@ -280,8 +280,6 @@ OC.L10N.register(
"Last day (inclusive)" : "Last day (inclusive)",
"Out of office replacement (optional)" : "Out of office replacement (optional)",
"Name of the replacement" : "Name of the replacement",
"No results." : "No results.",
"Start typing." : "Start typing.",
"Short absence status" : "Short absence status",
"Long absence Message" : "Long absence Message",
"Save" : "Save",
@@ -316,10 +314,6 @@ OC.L10N.register(
"Import calendar event" : "Import calendar event",
"Uploading a new event will overwrite the existing one." : "Uploading a new event will overwrite the existing one.",
"Upload event" : "Upload event",
"Availability" : "Availability",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "If you configure your working hours, other people will see when you are out of office when they book a meeting.",
"Absence" : "Absence",
"Configure your next absence period." : "Configure your next absence period.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Please make sure to properly set up {emailopen}the email server{linkclose}.",
"Calendar server" : "Calendar server",
@@ -334,11 +328,17 @@ OC.L10N.register(
"Enable notifications for events via push" : "Enable notifications for events via push",
"Example content" : "Example content",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content.",
"Availability" : "Availability",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "If you configure your working hours, other people will see when you are out of office when they book a meeting.",
"Absence" : "Absence",
"Configure your next absence period." : "Configure your next absence period.",
"There was an error updating your attendance status." : "There was an error updating your attendance status.",
"Please contact the organizer directly." : "Please contact the organiser directly.",
"Are you accepting the invitation?" : "Are you accepting the invitation?",
"Tentative" : "Tentative",
"Your attendance was updated successfully." : "Your attendance was updated successfully.",
"No results." : "No results.",
"Start typing." : "Start typing.",
"Time zone:" : "Time zone:"
},
"nplurals=2; plural=(n != 1);");
+6 -6
View File
@@ -278,8 +278,6 @@
"Last day (inclusive)" : "Last day (inclusive)",
"Out of office replacement (optional)" : "Out of office replacement (optional)",
"Name of the replacement" : "Name of the replacement",
"No results." : "No results.",
"Start typing." : "Start typing.",
"Short absence status" : "Short absence status",
"Long absence Message" : "Long absence Message",
"Save" : "Save",
@@ -314,10 +312,6 @@
"Import calendar event" : "Import calendar event",
"Uploading a new event will overwrite the existing one." : "Uploading a new event will overwrite the existing one.",
"Upload event" : "Upload event",
"Availability" : "Availability",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "If you configure your working hours, other people will see when you are out of office when they book a meeting.",
"Absence" : "Absence",
"Configure your next absence period." : "Configure your next absence period.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Please make sure to properly set up {emailopen}the email server{linkclose}.",
"Calendar server" : "Calendar server",
@@ -332,11 +326,17 @@
"Enable notifications for events via push" : "Enable notifications for events via push",
"Example content" : "Example content",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content.",
"Availability" : "Availability",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "If you configure your working hours, other people will see when you are out of office when they book a meeting.",
"Absence" : "Absence",
"Configure your next absence period." : "Configure your next absence period.",
"There was an error updating your attendance status." : "There was an error updating your attendance status.",
"Please contact the organizer directly." : "Please contact the organiser directly.",
"Are you accepting the invitation?" : "Are you accepting the invitation?",
"Tentative" : "Tentative",
"Your attendance was updated successfully." : "Your attendance was updated successfully.",
"No results." : "No results.",
"Start typing." : "Start typing.",
"Time zone:" : "Time zone:"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+6 -6
View File
@@ -280,8 +280,6 @@ OC.L10N.register(
"Last day (inclusive)" : "Último día (incluido)",
"Out of office replacement (optional)" : "Sustituto durante vacaciones/ausencia (opcional)",
"Name of the replacement" : "Nombre del sustituto",
"No results." : "Sin resultados.",
"Start typing." : "Empiece a escribir.",
"Short absence status" : "Estado de ausencia corta",
"Long absence Message" : "Mensaje de ausencia larga",
"Save" : "Guardar",
@@ -316,10 +314,6 @@ OC.L10N.register(
"Import calendar event" : "Importar evento del calendario",
"Uploading a new event will overwrite the existing one." : "Cargar un evento nuevo sobrescribirá el existente. ",
"Upload event" : "Cargar evento",
"Availability" : "Disponibilidad",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configura sus horas laborales, otras personas verán cuando está fuera de la oficina cuando agenden una reunión.",
"Absence" : "Ausencia",
"Configure your next absence period." : "Configure el siguiente periodo en que estará ausente",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instale también la {calendarappstoreopen}app de Calendario{linkclose} o {calendardocopen}conecte su escritorio y móvil para sincronizar ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Por favor, asegúrese de configurar correctamente {emailopen}el servidor web{linkclose}",
"Calendar server" : "Servidor de calendario",
@@ -334,11 +328,17 @@ OC.L10N.register(
"Enable notifications for events via push" : "Activar notificaciones push para eventos",
"Example content" : "Contenido de ejemplo",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "El contenido de ejemplo sirve para mostrar las características de Nextcloud. Se proporciona un contenido predeterminado con Nextcloud, y puede ser reemplazado por un contenido personalizado.",
"Availability" : "Disponibilidad",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configura sus horas laborales, otras personas verán cuando está fuera de la oficina cuando agenden una reunión.",
"Absence" : "Ausencia",
"Configure your next absence period." : "Configure el siguiente periodo en que estará ausente",
"There was an error updating your attendance status." : "Ha habido un error al actualizar tu estado de asistencia.",
"Please contact the organizer directly." : "Por favor, contacta directamente con el organizador.",
"Are you accepting the invitation?" : "¿Aceptas la invitación?",
"Tentative" : "Provisional",
"Your attendance was updated successfully." : "Tu asistencia se ha actualizado con éxito.",
"No results." : "Sin resultados.",
"Start typing." : "Empiece a escribir.",
"Time zone:" : "Zona horaria:"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
+6 -6
View File
@@ -278,8 +278,6 @@
"Last day (inclusive)" : "Último día (incluido)",
"Out of office replacement (optional)" : "Sustituto durante vacaciones/ausencia (opcional)",
"Name of the replacement" : "Nombre del sustituto",
"No results." : "Sin resultados.",
"Start typing." : "Empiece a escribir.",
"Short absence status" : "Estado de ausencia corta",
"Long absence Message" : "Mensaje de ausencia larga",
"Save" : "Guardar",
@@ -314,10 +312,6 @@
"Import calendar event" : "Importar evento del calendario",
"Uploading a new event will overwrite the existing one." : "Cargar un evento nuevo sobrescribirá el existente. ",
"Upload event" : "Cargar evento",
"Availability" : "Disponibilidad",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configura sus horas laborales, otras personas verán cuando está fuera de la oficina cuando agenden una reunión.",
"Absence" : "Ausencia",
"Configure your next absence period." : "Configure el siguiente periodo en que estará ausente",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instale también la {calendarappstoreopen}app de Calendario{linkclose} o {calendardocopen}conecte su escritorio y móvil para sincronizar ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Por favor, asegúrese de configurar correctamente {emailopen}el servidor web{linkclose}",
"Calendar server" : "Servidor de calendario",
@@ -332,11 +326,17 @@
"Enable notifications for events via push" : "Activar notificaciones push para eventos",
"Example content" : "Contenido de ejemplo",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "El contenido de ejemplo sirve para mostrar las características de Nextcloud. Se proporciona un contenido predeterminado con Nextcloud, y puede ser reemplazado por un contenido personalizado.",
"Availability" : "Disponibilidad",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configura sus horas laborales, otras personas verán cuando está fuera de la oficina cuando agenden una reunión.",
"Absence" : "Ausencia",
"Configure your next absence period." : "Configure el siguiente periodo en que estará ausente",
"There was an error updating your attendance status." : "Ha habido un error al actualizar tu estado de asistencia.",
"Please contact the organizer directly." : "Por favor, contacta directamente con el organizador.",
"Are you accepting the invitation?" : "¿Aceptas la invitación?",
"Tentative" : "Provisional",
"Your attendance was updated successfully." : "Tu asistencia se ha actualizado con éxito.",
"No results." : "Sin resultados.",
"Start typing." : "Empiece a escribir.",
"Time zone:" : "Zona horaria:"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}
+1 -1
View File
@@ -185,7 +185,6 @@ OC.L10N.register(
"Import" : "Importar",
"Error while saving settings" : "Error al guardar la configuración.",
"Reset to default" : "Restablecer al predeterminado",
"Availability" : "Disponibilidad",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "También instala la {calendarappstoreopen}aplicación Calendario{linkclose}, o {calendardocopen}conecta tu escritorio y móvil para sincronizar ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Asegúrate de configurar correctamente {emailopen}el servidor de correo electrónico{linkclose}.",
"Calendar server" : "Servidor de calendario",
@@ -198,6 +197,7 @@ OC.L10N.register(
"Send reminder notifications to calendar sharees as well" : "Enviar recordatorios a los asistentes del calendario también",
"Reminders are always sent to organizers and attendees." : "Los recordatorios siempre se envían a los organizadores y asistentes.",
"Enable notifications for events via push" : "Habilitar notificaciones para eventos mediante push",
"Availability" : "Disponibilidad",
"There was an error updating your attendance status." : "Hubo un error al actualizar tu estado de asistencia.",
"Please contact the organizer directly." : "Por favor, contacta directamente al organizador.",
"Are you accepting the invitation?" : "¿Aceptas la invitación?",
+1 -1
View File
@@ -183,7 +183,6 @@
"Import" : "Importar",
"Error while saving settings" : "Error al guardar la configuración.",
"Reset to default" : "Restablecer al predeterminado",
"Availability" : "Disponibilidad",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "También instala la {calendarappstoreopen}aplicación Calendario{linkclose}, o {calendardocopen}conecta tu escritorio y móvil para sincronizar ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Asegúrate de configurar correctamente {emailopen}el servidor de correo electrónico{linkclose}.",
"Calendar server" : "Servidor de calendario",
@@ -196,6 +195,7 @@
"Send reminder notifications to calendar sharees as well" : "Enviar recordatorios a los asistentes del calendario también",
"Reminders are always sent to organizers and attendees." : "Los recordatorios siempre se envían a los organizadores y asistentes.",
"Enable notifications for events via push" : "Habilitar notificaciones para eventos mediante push",
"Availability" : "Disponibilidad",
"There was an error updating your attendance status." : "Hubo un error al actualizar tu estado de asistencia.",
"Please contact the organizer directly." : "Por favor, contacta directamente al organizador.",
"Are you accepting the invitation?" : "¿Aceptas la invitación?",
+6 -6
View File
@@ -202,8 +202,6 @@ OC.L10N.register(
"Last day (inclusive)" : "Último día (inclusivo)",
"Out of office replacement (optional)" : "Reemplazo para cuando fuera de la oficina (opcional)",
"Name of the replacement" : "Nombre del reemplazo",
"No results." : "Sin resultados.",
"Start typing." : "Empezar a escribir.",
"Short absence status" : "Estado de ausencia corta",
"Long absence Message" : "Mensaje de ausencia larga",
"Save" : "Guardar",
@@ -223,10 +221,6 @@ OC.L10N.register(
"Import" : "Importar",
"Error while saving settings" : "Error al guardar la configuración",
"Reset to default" : "Restablecer al predeterminado",
"Availability" : "Disponibilidad",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configura sus horas laborales, otras personas verán cuándo está fuera de la oficina cuando agenden una reunión.",
"Absence" : "Ausencia",
"Configure your next absence period." : "Configure su siguiente periodo de ausencia.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instale también la {calendarappstoreopen}aplicación de calendario{linkclose} o {calendardocopen}conecte su escritorio y móvil para sincronizar ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Por favor, asegúrese de configurar correctamente {emailopen}el servidor de correo electrónico{linkclose}",
"Calendar server" : "Servidor del calendario",
@@ -239,11 +233,17 @@ OC.L10N.register(
"Send reminder notifications to calendar sharees as well" : "Enviar recordatorio también a los usuarios con los que se comparte el calendario",
"Reminders are always sent to organizers and attendees." : "Los recordatorios se envían siempre a los organizadores y asistentes.",
"Enable notifications for events via push" : "Habilitar notificaciones para eventos mediante push",
"Availability" : "Disponibilidad",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configura sus horas laborales, otras personas verán cuándo está fuera de la oficina cuando agenden una reunión.",
"Absence" : "Ausencia",
"Configure your next absence period." : "Configure su siguiente periodo de ausencia.",
"There was an error updating your attendance status." : "Ocurrió un error al actualizar su estado de asistencia.",
"Please contact the organizer directly." : "Por favor, contacte al organizador directamente.",
"Are you accepting the invitation?" : "¿Acepta la invitación?",
"Tentative" : "Tentativo",
"Your attendance was updated successfully." : "Su asistencia se actualizó correctamente.",
"No results." : "Sin resultados.",
"Start typing." : "Empezar a escribir.",
"Time zone:" : "Zona horaria:"
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
+6 -6
View File
@@ -200,8 +200,6 @@
"Last day (inclusive)" : "Último día (inclusivo)",
"Out of office replacement (optional)" : "Reemplazo para cuando fuera de la oficina (opcional)",
"Name of the replacement" : "Nombre del reemplazo",
"No results." : "Sin resultados.",
"Start typing." : "Empezar a escribir.",
"Short absence status" : "Estado de ausencia corta",
"Long absence Message" : "Mensaje de ausencia larga",
"Save" : "Guardar",
@@ -221,10 +219,6 @@
"Import" : "Importar",
"Error while saving settings" : "Error al guardar la configuración",
"Reset to default" : "Restablecer al predeterminado",
"Availability" : "Disponibilidad",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configura sus horas laborales, otras personas verán cuándo está fuera de la oficina cuando agenden una reunión.",
"Absence" : "Ausencia",
"Configure your next absence period." : "Configure su siguiente periodo de ausencia.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Instale también la {calendarappstoreopen}aplicación de calendario{linkclose} o {calendardocopen}conecte su escritorio y móvil para sincronizar ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Por favor, asegúrese de configurar correctamente {emailopen}el servidor de correo electrónico{linkclose}",
"Calendar server" : "Servidor del calendario",
@@ -237,11 +231,17 @@
"Send reminder notifications to calendar sharees as well" : "Enviar recordatorio también a los usuarios con los que se comparte el calendario",
"Reminders are always sent to organizers and attendees." : "Los recordatorios se envían siempre a los organizadores y asistentes.",
"Enable notifications for events via push" : "Habilitar notificaciones para eventos mediante push",
"Availability" : "Disponibilidad",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Si configura sus horas laborales, otras personas verán cuándo está fuera de la oficina cuando agenden una reunión.",
"Absence" : "Ausencia",
"Configure your next absence period." : "Configure su siguiente periodo de ausencia.",
"There was an error updating your attendance status." : "Ocurrió un error al actualizar su estado de asistencia.",
"Please contact the organizer directly." : "Por favor, contacte al organizador directamente.",
"Are you accepting the invitation?" : "¿Acepta la invitación?",
"Tentative" : "Tentativo",
"Your attendance was updated successfully." : "Su asistencia se actualizó correctamente.",
"No results." : "Sin resultados.",
"Start typing." : "Empezar a escribir.",
"Time zone:" : "Zona horaria:"
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}
+6 -6
View File
@@ -280,8 +280,6 @@ OC.L10N.register(
"Last day (inclusive)" : "Viimane päev (kaasaarvatud)",
"Out of office replacement (optional)" : "Asendaja äraoleku ajaks (valikuline)",
"Name of the replacement" : "Asendaja nimi",
"No results." : "Vasteid ei leitud.",
"Start typing." : "Alusta kirjutamist.",
"Short absence status" : "Äraoleku lühinimi",
"Long absence Message" : "Äraoleku pikk sõnum",
"Save" : "Salvesta",
@@ -316,10 +314,6 @@ OC.L10N.register(
"Import calendar event" : "Impordi kalendrisündmus",
"Uploading a new event will overwrite the existing one." : "Uue sündmuse üleslaadimisel asendatakse olemasolevad.",
"Upload event" : "Laadi sündmus üles",
"Availability" : "Saadavus",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Kui seadistad oma tööajad, siis teised saavad kohtumise broneerimisel arvestada sellega, millal sind kohal pole.",
"Absence" : "Äraolek",
"Configure your next absence period." : "Seadista järgmise äraoleku ajavahemik.",
"Also install the {calendarappstoreopen}Calendar app{linkclose}, or {calendardocopen}connect your desktop & mobile for syncing ↗{linkclose}." : "Palun paigalda ka {calendarappstoreopen}Kalendrirakendus{linkclose} või {calendardocopen}lisa sünkroniseerimine oma töölaule ja nutiseadmesse ↗{linkclose}.",
"Please make sure to properly set up {emailopen}the email server{linkclose}." : "Palun kontrolli, et {emailopen}e-posti server{linkclose} on seadistatud korrektselt.",
"Calendar server" : "Kalendriserver",
@@ -334,11 +328,17 @@ OC.L10N.register(
"Enable notifications for events via push" : "Võta kasutusele tõuketeenustepõhised teavitused",
"Example content" : "Sisunäidis",
"Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content." : "Sisunäidis annab ülevaate Nexctcloudi võimalustest. Vaikimisi sisu tuleb Nexctcloudi paigaldusega kaasa ja seda saab alati oma sisuga asendada.",
"Availability" : "Saadavus",
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "Kui seadistad oma tööajad, siis teised saavad kohtumise broneerimisel arvestada sellega, millal sind kohal pole.",
"Absence" : "Äraolek",
"Configure your next absence period." : "Seadista järgmise äraoleku ajavahemik.",
"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.",
"No results." : "Vasteid ei leitud.",
"Start typing." : "Alusta kirjutamist.",
"Time zone:" : "Ajavöönd:"
},
"nplurals=2; plural=(n != 1);");

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