Compare commits

..

213 Commits

Author SHA1 Message Date
Thomas Citharel d46271b65f feat(contactsinteraction): allow users to disable contacts interaction addressbook
This allows simple users to opt-out of the contacts interaction
addressbook even if admins have the app installed.

Similar to how the birthday calendar works, the functionnality can be
toggled in the user's settings or by doing a DELETE on the addressbook.

A new contacts personal section has been added to contain this new
setting.

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2024-08-27 10:54:18 +02:00
Joas Schilling ead3f66379 Merge pull request #47510 from nextcloud/fix/db/slow-transactions-higher-log-level
fix(db): Increase log level for very slow transactions
2024-08-27 10:30:52 +02:00
Christoph Wurst bdcfe5b8a9 fix(db): Increase log level for very slow transactions
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2024-08-27 10:12:14 +02:00
Joas Schilling b8ab7b7e55 Merge pull request #47448 from nextcloud/fix/47187/user-status-absence
fix(user_status): add link to Availability page if user set predefined 'Vacationing'
2024-08-27 07:37:52 +02:00
Nextcloud bot f35e33f2d8 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-27 00:20:54 +00:00
Ferdinand Thiessen 21b997f845 Merge pull request #47490 from nextcloud/chore/adjust-translations
chore(files): Adjust wording for file type filter
2024-08-26 21:40:27 +02:00
Ferdinand Thiessen 2665151105 Merge pull request #47465 from nextcloud/fix/files-drop-notice
fix(files): Reset drop notice on firefox
2024-08-26 21:00:05 +02:00
nextcloud-command 290610b630 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-26 20:44:06 +02:00
Ferdinand Thiessen 3ffdf56c8f chore(files): Adjust wording for file type filter
* Resolves: https://github.com/nextcloud/server/issues/47440

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 20:42:41 +02:00
nextcloud-command 744b41b216 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-26 20:41:36 +02:00
Ferdinand Thiessen f7b7474cd3 fix(files): Reset drop notice on firefox
On firefox there is an old bug where when you move a dragged file outside
the window the `dragleave` event is never emitted.
So we just use a timeout to reset the drag over state.

Also a small change: Use the ID of the main container instead of relying on tag name and class.
(The ID is guranteed as other APIs rely on it, while the class is just used internally).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 20:31:31 +02:00
Ferdinand Thiessen 4fcf4dba02 Merge pull request #47466 from nextcloud/chore/migrate-vitest
test: Migrate from Jest to vitest
2024-08-26 20:30:26 +02:00
Ferdinand Thiessen 6d31abdfd5 Merge pull request #47467 from nextcloud/fix/virtual-files-list
fix(files): Adjust margin at the file list bottom
2024-08-26 17:44:06 +02:00
Ferdinand Thiessen 30d090fb78 chore: Update source maps due to dependency changes
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 17:29:42 +02:00
Ferdinand Thiessen e0b81410f4 chore: Add vitest.config.ts as expected and remove Jest config
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 17:27:22 +02:00
Ferdinand Thiessen a5e58dc45e test: Migrated all Jest tests to vitest
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 17:27:22 +02:00
Ferdinand Thiessen c0b39bb909 chore: Move from Jest to vitest
There are some benefits, like faster tests and thus saving CI time, but the main reason for me is:

Jest still does not properly support ESM packages, this casues a lot of breaking stuff.
Sometimes you need to adjust imports for mocking, and somethimes other random stuff break.
Instead of wasting valuable developer lifetime we can use vitest which works perfectly with ESM.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 17:27:22 +02:00
Ferdinand Thiessen e840ec23f1 chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 16:33:21 +02:00
Ferdinand Thiessen b1eecde452 fix(files): Remove huge margin on bottom
Instead make it relative to screen size.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-26 16:31:25 +02:00
Joas Schilling c6ec82203e Merge pull request #47480 from nextcloud/fix/41639/flow-check-user-agent
fix(flow): cannot set custom user agent
2024-08-26 14:09:25 +02:00
nextcloud-command cc72f738ed chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-26 11:53:28 +00:00
Julius Härtl 6d2253e692 Merge pull request #46013 from nextcloud/obj-store-move-from-storage-preserve-fileid
fix: write object to the correct urn when moving from another storage to object store
2024-08-26 13:47:27 +02:00
Maksim Sukharev f23875dcb1 fix(user_status): add link to Availability page if user set predefined 'Vacationing'
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
2024-08-26 13:41:56 +02:00
Arthur Schiwon 2b270f54ee build: js assets
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-26 13:31:57 +02:00
Arthur Schiwon 0eeb459cc3 fix(flow): cannot set customer user agent
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-26 13:25:33 +02:00
Andy Scherzinger e2b1de8bc1 Merge pull request #47470 from nextcloud/automated/noid/master-fix-npm-audit
[master] Fix npm audit
2024-08-26 09:50:52 +02:00
Joas Schilling 36f272d03b Merge pull request #47435 from phreaker0/fix-mail-template-class-call
fix(mailer): Call to custom mail_template_class
2024-08-26 08:58:00 +02:00
Kate c42412f3d2 Merge pull request #47474 from nextcloud/fix/cs-fixer/ignore-git-ignored-entries 2024-08-26 07:40:16 +02:00
Nextcloud bot 23bbb31445 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-26 00:20:22 +00:00
Daniel cead56ac6a Merge pull request #47464 from nextcloud/dependabot/composer/vendor-bin/cs-fixer/nextcloud/coding-standard-1.2.3
bump nextcloud/coding-standard from 1.2.1 to 1.2.3 in /vendor-bin/cs-fixer
2024-08-25 21:09:41 +02:00
Daniel Kesselberg 47168ad5bd chore: ignore coding-standard update 1.2.3 in git blame
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-08-25 20:43:43 +02:00
Daniel Kesselberg e88693a473 style: update codestyle for coding-standard 1.2.3
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-08-25 20:43:43 +02:00
dependabot[bot] 9067932f3b build(deps-dev): Bump nextcloud/coding-standard from 1.2.1 to 1.2.3
Bumps [nextcloud/coding-standard](https://github.com/nextcloud/coding-standard) from 1.2.1 to 1.2.3.
- [Release notes](https://github.com/nextcloud/coding-standard/releases)
- [Changelog](https://github.com/nextcloud/coding-standard/blob/master/CHANGELOG.md)
- [Commits](nextcloud/coding-standard@v1.2.1...v1.2.3)

---
updated-dependencies:
- dependency-name: nextcloud/coding-standard
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-25 20:43:04 +02:00
provokateurin ffc8a86d7d fix(cs-fixer): Correctly ignore files ignored by git
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-08-25 20:40:47 +02:00
Daniel 5d632154c2 Merge pull request #47449 from nextcloud/debt/noid/update-codestyle
Update to coding-standard 1.2.3
2024-08-25 19:56:37 +02:00
Daniel Kesselberg dd165cf53a chore: add .git-blame-ignore-revs as expected file
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-08-25 19:35:40 +02:00
Daniel Kesselberg 8622edb4b3 chore: ignore coding-standard update 1.2.3 in git blame
https://docs.github.com/en/repositories/working-with-files/using-files/viewing-a-file#ignore-commits-in-the-blame-view

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-08-25 19:35:40 +02:00
Daniel Kesselberg af6de04e9e style: update codestyle for coding-standard 1.2.3
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2024-08-25 19:34:58 +02:00
nextcloud-command 82183693e9 fix(deps): Fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2024-08-25 02:49:40 +00:00
Nextcloud bot 1cc6b3577f Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-25 00:24:21 +00:00
Ferdinand Thiessen c18cd4df66 Merge pull request #47460 from nextcloud/dependabot/npm_and_yarn/vueuse/integrations-11.0.1
chore(deps): bump @vueuse/integrations from 11.0.0 to 11.0.1
2024-08-24 12:25:55 +02:00
dependabot[bot] 6c4b56b0f3 chore(deps): bump @vueuse/integrations from 11.0.0 to 11.0.1
Bumps [@vueuse/integrations](https://github.com/vueuse/vueuse/tree/HEAD/packages/integrations) from 11.0.0 to 11.0.1.
- [Release notes](https://github.com/vueuse/vueuse/releases)
- [Commits](https://github.com/vueuse/vueuse/commits/v11.0.1/packages/integrations)

---
updated-dependencies:
- dependency-name: "@vueuse/integrations"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-24 10:01:53 +00:00
dependabot[bot] 3656a24e21 Merge pull request #47463 from nextcloud/dependabot/npm_and_yarn/vueuse/core-11.0.1 2024-08-24 09:46:42 +00:00
dependabot[bot] 31319be951 chore(deps): bump @vueuse/core from 11.0.0 to 11.0.1
Bumps [@vueuse/core](https://github.com/vueuse/vueuse/tree/HEAD/packages/core) from 11.0.0 to 11.0.1.
- [Release notes](https://github.com/vueuse/vueuse/releases)
- [Commits](https://github.com/vueuse/vueuse/commits/v11.0.1/packages/core)

---
updated-dependencies:
- dependency-name: "@vueuse/core"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-24 09:33:09 +00:00
Nextcloud bot e97421f12a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-24 00:20:27 +00:00
Sebastian Krupinski e5e795c935 Merge pull request #47452 from nextcloud/fix/issue-47447-mail-provider-documentation
fix: correct documentation for mail provider
2024-08-23 12:34:19 -04:00
SebastianKrupinski b260dd0a9d fix: correct documentation for mail provider
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2024-08-23 12:09:44 -04:00
Robin Appelman 4a3ade5d43 Merge pull request #46021 from nextcloud/middleware-delay-admin
perf: delay getting (sub)admin status for user in the security middleware untill we need it
2024-08-23 17:38:01 +02:00
Robin Appelman 3e7695235c Merge pull request #45457 from nextcloud/qb-escape-like
expose escapeLikeParameter trough query builder
2024-08-23 17:08:58 +02:00
Robin Appelman 44aa4836aa Merge pull request #45880 from nextcloud/memcache-redis-command
feat: add command to send raw commands to redis
2024-08-23 16:53:22 +02:00
SebastianKrupinski 7363c4a403 fix: correct documentation for mail provider
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2024-08-23 10:26:40 -04:00
Robin Appelman 8b60df1600 perf: delay getting (sub)admin status for user in the security middleware untill we need it
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-23 15:26:40 +02:00
Robin Appelman bd740ac0b0 fix: write object to the correct urn when moving from another storage to object store
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-23 15:22:16 +02:00
Robin Appelman 2f9f9e83e8 feat: add command to send raw commands to redis
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-23 15:14:15 +02:00
Robin Appelman 658d2f7ea1 feat: expose escapeLikeParameter trough query builder
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-23 15:12:10 +02:00
Nextcloud bot 0cab17bfe7 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-23 00:20:06 +00:00
Pytal 3d1785bb2f Merge pull request #47204 from nextcloud/fix/tree-hidden-files
fix(files): Respect "Show hidden files" setting in tree
2024-08-22 16:41:04 -07:00
nextcloud-command 5b412b505b chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-22 23:17:06 +00:00
Christopher Ng fc1edaf4c1 refactor(files): Consolidate node registration
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-22 16:09:10 -07:00
Christopher Ng 3b185b1156 refactor(files): Organize event subscriptions
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-22 16:09:10 -07:00
Christopher Ng 4062883459 fix(files): Respect "Show hidden files" setting in tree
Signed-off-by: Christopher Ng <chrng8@gmail.com>
2024-08-22 16:09:10 -07:00
Ferdinand Thiessen 920a74118c Merge pull request #47403 from nextcloud/feat/password-context
feat(Security): Allow defining a password context for password validation and generation
2024-08-23 00:01:39 +02:00
Daniel d78bfb7181 Merge pull request #47419 from nextcloud/bugfix/noid/add-missing-attribute
fix(migration): Add missing migration attributes
2024-08-22 21:34:35 +02:00
Andy Scherzinger 6c934b831e Merge pull request #47407 from nextcloud/fix/version-name-dialog
fix(files_versions): Migrate version name dialog from NcModal to NcDialog
2024-08-22 21:27:05 +02:00
Joas Schilling 4b6490eaa6 fix(migration): Add missing migration attributes
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-22 20:58:50 +02:00
Christoph Klaffl d7da93489b Merge branch 'master' into fix-mail-template-class-call 2024-08-22 19:42:51 +02:00
Christoph Klaffl ae787c5ef2 fix call to custom mail_template_class
Signed-off-by: Christoph Klaffl <christoph@phreaker.eu>
2024-08-22 19:39:23 +02:00
nextcloud-command e2c299f28c chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-22 17:38:36 +00:00
Ferdinand Thiessen dd58e5290f feat: Use new password context in sharing API
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-22 19:16:55 +02:00
Ferdinand Thiessen 127cacdd19 feat(Security): Allow setting password context for validation and generation
Co-authored-by: Ferdinand Thiessen <opensource@fthiessen.de>
Co-authored-by: Joas Schilling <213943+nickvergessen@users.noreply.github.com>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-22 19:16:50 +02:00
Ferdinand Thiessen 351dd6dd8a fix(files_versions): Migrate version name dialog from NcModal to NcDialog
* Resolves https://github.com/nextcloud/viewer/issues/2390

Make the version name dialog a real dialog instead of a modal.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-22 19:16:24 +02:00
Andy Scherzinger f4f0316a55 Merge pull request #47408 from nextcloud/fix/dashboard-widgets
fix(dashboard): Adjust widget border radius
2024-08-22 18:59:35 +02:00
nextcloud-command 5940c96414 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-22 18:07:33 +02:00
Ferdinand Thiessen a6556e9b46 fix(dashboard): Adjust widget border radius
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-22 18:07:33 +02:00
Anna 1b39abb501 Merge pull request #47415 from nextcloud/Fix/trusted-server-icon-recovery-without-addressbook-change
fix: Trusted server icon recovery without addressbook change
2024-08-22 17:01:28 +02:00
Pablo Zimdahl 3c3667fe18 fix(federation): always set server status to OK after successful runs
Previously if a server status got set to failure, it stayed that way
until an addressbook-sync found changes. Now the server status is set to
OK after each successful sync check (if that's not the case already),
regardless of addressbook changes.

This change also includes two new logging statements, which could help
next time someone debugs this.

Signed-off-by: Pablo Zimdahl <pablo@nextcloud.com>
2024-08-22 16:02:21 +02:00
John Molakvoæ 4eebf471e5 Merge pull request #47379 from nextcloud/fix/cypress-stop-cache 2024-08-22 14:32:31 +02:00
skjnldsv 5e2e2ba7ad fix(cypress): drop unwanted docker output characters
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-08-22 13:32:59 +02:00
skjnldsv d3a0e8308b chore(cypress): enable apcu
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-08-22 13:32:59 +02:00
skjnldsv c0781f524f chore(cypress): skip cypress binary install on init step
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-08-22 13:32:59 +02:00
skjnldsv 5a7e21187b chore(cypress): put nextcloud into ram
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-08-22 13:32:59 +02:00
skjnldsv b6bc28833c chore(cypress): allow db snapshot and restore fo faster tests
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-08-22 13:32:59 +02:00
skjnldsv 49fa2e508d fix(cypress): do not install deps twice
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2024-08-22 13:32:59 +02:00
Anna 639caf6150 Merge pull request #47413 from nextcloud/fix/limit-property-values
fix(caldav): limit property length
2024-08-22 13:17:21 +02:00
Anna Larch 3ff7d64fda fix(caldav): limit property length
Signed-off-by: Anna Larch <anna@nextcloud.com>
2024-08-22 12:15:51 +02:00
Joas Schilling 0df3a46db2 Merge pull request #47409 from nextcloud/followup/46991/allow-setting-new-configs
fix(provisioning): Support setting new app configs as well
2024-08-22 08:39:14 +02:00
Joas Schilling 9641433001 fix(provisioning): Support setting new app configs as well
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-22 08:02:15 +02:00
Nextcloud bot b33260a22c Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-22 00:20:22 +00:00
John Molakvoæ 003bf4b8ee Merge pull request #47363 from nextcloud/fix/template-picker-press-enter
fix: use empty template by default when pressing enter
2024-08-21 22:01:51 +02:00
Elizabeth Danzberger 82c6b92d41 chore: build assets
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-08-21 15:02:14 -04:00
nextcloud-command 5ead5fc6c5 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-21 15:00:33 -04:00
Elizabeth Danzberger e53684e1d9 fix: use empty template by default when pressing enter
Signed-off-by: Elizabeth Danzberger <lizzy7128@tutanota.de>
2024-08-21 15:00:26 -04:00
Ferdinand Thiessen b36ced878f Merge pull request #47397 from nextcloud/chore/update-vue
Update `@nextcloud/vue` to v8.17.0
2024-08-21 19:56:05 +02:00
Ferdinand Thiessen a01797d2f2 chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-21 17:19:12 +00:00
Ferdinand Thiessen b87c1ebfcc chore: Update @nextcloud/vue to v8.17.0
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 17:55:07 +02:00
Robin Appelman c3ad469750 Merge pull request #47259 from nextcloud/memcache-ncad
feat: add negative compare-and-delete to imemcache
2024-08-21 17:19:04 +02:00
Joas Schilling 6214e3ad76 Merge pull request #47388 from nextcloud/bugfix/noid/green-ci
ci: Skip flaky test on PHP 8.3
2024-08-21 15:53:27 +02:00
Arthur Schiwon ebe2429c0a Merge pull request #46991 from nextcloud/fix/45083/config-from-js
fix(ProvisioningAPI): set typed config values by via API
2024-08-21 14:58:24 +02:00
Ferdinand Thiessen 974cda636f Merge pull request #47370 from nextcloud/fix/loading-icon
fix(files): Move loading icon before grid toggle
2024-08-21 14:37:47 +02:00
Ferdinand Thiessen 1992a6d72b Merge pull request #47371 from nextcloud/fix/disable-auto-zoom-ios
fix: Disable auto-zoom on iOS
2024-08-21 14:32:16 +02:00
Andy Scherzinger 7290d9d7ca Merge pull request #47352 from nextcloud/fix/context-write-wording
fix(TaskProcessing/ContextWrite): Fix wording "ContextWrite" -> "Context write"
2024-08-21 13:25:09 +02:00
Andy Scherzinger f309ba9dc9 Merge pull request #47381 from nextcloud/chore/deps/openapi-extractor
chore(deps): Update openapi-extractor to v1.0.0
2024-08-21 13:20:10 +02:00
Joas Schilling e1caa198e3 ci: Skip flaky test on PHP 8.3
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-21 13:13:12 +02:00
Ferdinand Thiessen d5140fe034 Merge pull request #47372 from nextcloud/fix/filename-validator
fix: `FilenameValidator::isForbidden` should only check forbidden files
2024-08-21 13:07:33 +02:00
Ferdinand Thiessen c82b17d0a3 fix: Support Safari mobile
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 13:01:23 +02:00
Ferdinand Thiessen ec00367f30 fix: Disable auto-zoom on iOS
When using iOS and focussing an input element the view should not be zoomed.
So if we set a maximum scale iOS will not auto-zoom but still allow users to zoom.
But we can not do this by default as this will disable user zoom on Chrome.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 13:01:18 +02:00
Ferdinand Thiessen 2d0f65851e chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 12:50:59 +02:00
Ferdinand Thiessen 1331ce7e7c fix(files): Move loading icon before grid toggle
This prevents jumping of that toggle button when the view is loading.
Also adjust the design for Nextcloud 30 (prevent jumping of breadcrumbs when loading due to increased height).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 12:47:21 +02:00
Joas Schilling c07cf51beb Merge pull request #47380 from nextcloud/bugfix/noid/make-logo-dimension-more-save
fix(theming): Make getImage() call save against missing non-SVG version
2024-08-21 12:01:44 +02:00
Joas Schilling 7fe62b9364 Merge pull request #47331 from nextcloud/skalidindi53/12351/Add-blurhash-to-richobjectstrings
fix: adding blurhash to definitions
2024-08-21 11:59:16 +02:00
provokateurin ff10f9f60f chore(deps): Update openapi-extractor to v1.0.0
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-08-21 11:07:50 +02:00
Joas Schilling dbbe2bbcb7 fix(theming): Make getImage() call save against missing non-SVG version
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-21 10:30:25 +02:00
Andy Scherzinger cf56874cb1 Merge pull request #47365 from nextcloud/fix/share-sorting
fix(files_sharing): Sort by correct share attribute ("share with displayname")
2024-08-21 09:53:37 +02:00
Marcel Klehr c9ef3f72bc fix(TaskProcessing/ContextWrite): Fix wording "ContextWrite" -> "Context write"
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2024-08-21 08:59:46 +02:00
Ferdinand Thiessen 91573781df docs: Add information how forbidden filenames are handled on existing files.
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 04:22:13 +02:00
Ferdinand Thiessen b9cc7bcec7 fix: FilenameValidator::isForbidden should only check forbidden files
And not forbidden basenames as this is used for different purposes.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 04:16:14 +02:00
nextcloud-command d6cfcd7825 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-21 00:38:53 +00:00
Ferdinand Thiessen dc153f2ada fix(files_sharing): Sort by correct share attribute ("share with displayname")
There is no `title` attribute, so this causes an exception.
Instead sort by the "share with" displayname which will be the user or group the node is shared to.
Meaning this will also be the title of the share in the UI.
If this is not available or there are multiple for the same, then sort by the custom label.
If also this is not set sort by the creation time.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-21 02:32:02 +02:00
Nextcloud bot 1907eeea35 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-21 00:20:18 +00:00
Andy Scherzinger 748e267b44 Merge pull request #47358 from nextcloud/chore/noid/hub9
Bump Hub 8 -> Hub 9
2024-08-21 00:01:11 +02:00
Arthur Schiwon a3cd963264 fix(ProvisioningAPI): set typed config values by via API
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2024-08-20 23:10:09 +02:00
Andy Scherzinger e817bc6d3c Merge pull request #47356 from nextcloud/fix/add-webhook_listeners-to-shipped-apps-lists
chore: Add webhook_listeners to list of shipped apps
2024-08-20 22:52:52 +02:00
Andy Scherzinger bc4527a80d chore: Bump Hub 8 -> Hub 9
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-08-20 22:29:41 +02:00
John Molakvoæ 4f70998e35 Merge pull request #47351 from nextcloud/fix/build/update-apps 2024-08-20 20:55:52 +02:00
John Molakvoæ 05c9b06cdd Merge pull request #47350 from nextcloud/chore/build/remove-signed-off-checker 2024-08-20 20:55:27 +02:00
Robin Appelman 20dbb6c7e8 feat: add negative compare-and-delete to imemcache
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-20 19:34:28 +02:00
Joas Schilling cd0217b2bd fix(CI): Add a check that all server apps are translated
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-20 16:45:12 +02:00
Côme Chilliet da38ff0088 chore: Add webhook_listeners to list of shipped apps
As well as CODEOWNERS and l10n

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2024-08-20 16:40:16 +02:00
John Molakvoæ 307608b26c Merge pull request #47346 from nextcloud/encryption-key-copy-mountpoint 2024-08-20 16:16:08 +02:00
provokateurin 0e3ca084c4 fix(build): Allow update-apps.sh script to work with non-master branches
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-08-20 15:33:00 +02:00
provokateurin acca93e793 chore(build): Remove old Drone CI signed-off checker
Signed-off-by: provokateurin <kate@provokateurin.de>
2024-08-20 15:10:49 +02:00
Robin Appelman 3756152cb1 fix: use mountpoint from storage to find the encryption keys
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-20 13:32:03 +02:00
Robin Appelman 1071201052 feat: store the mountpoint of storages in the mount options
Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-20 13:31:35 +02:00
Anna 560282a47b Merge pull request #47332 from nextcloud/fix/allow-renaming-of-birthday-calendars
fix(caldav): allow renaming of birthday calendars
2024-08-20 10:48:57 +02:00
Anna Larch 5bbc23a261 fix(caldav): allow renaming of birthday calendars
Signed-off-by: Anna Larch <anna@nextcloud.com>
2024-08-20 10:16:57 +02:00
Joas Schilling 3a6716895a fix: adding blurhash to definitions
Signed-off-by: skalidindi53 <s.teja2004@gmail.com>
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-20 08:25:24 +02:00
Nextcloud bot 2b7d9c1c9d Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-20 00:20:33 +00:00
F. E Noel Nfebe 3b795cde79 Merge pull request #47319 from nextcloud/fix/47056/focus-unified-search-on-open
fix(UnifiedSearch): Focus search input on open
2024-08-19 19:30:16 +01:00
nextcloud-command ecca9e1ad6 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-19 12:59:40 +00:00
fenn-cs cf59575120 fix(UnifiedSearch): Focus search input on open
Resolves : https://github.com/nextcloud/server/issues/47056

Signed-off-by: fenn-cs <fenn25.fn@gmail.com>
2024-08-19 13:49:34 +01:00
Côme Chilliet ba9638eae5 Merge pull request #47291 from nextcloud/refactor/log-php-8-1
refactor(Log): Use new in initializer instead of constructor body
2024-08-19 14:12:11 +02:00
Robin Appelman 40c91aa31e Merge pull request #47182 from nextcloud/orphan-cleanup-chunk-perf
perf: improve cleanup of tags/comments
2024-08-19 13:40:01 +02:00
Nextcloud bot 551ff4955e Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-19 00:20:19 +00:00
John Molakvoæ 6fce6fa1d6 Merge pull request #47310 from nextcloud/automated/noid/master-fix-npm-audit 2024-08-18 13:52:36 +02:00
nextcloud-command 652c1f7b65 fix(deps): Fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2024-08-18 11:33:08 +00:00
Ferdinand Thiessen 6286d3236c Merge pull request #47301 from nextcloud/dependabot/npm_and_yarn/vueuse/components-11.0.0
chore(deps): bump @vueuse/components from 10.11.0 to 11.0.0
2024-08-18 12:38:00 +02:00
dependabot[bot] 2c47285d6d chore(deps): bump @vueuse/components from 10.11.0 to 11.0.0
Bumps [@vueuse/components](https://github.com/vueuse/vueuse/tree/HEAD/packages/components) from 10.11.0 to 11.0.0.
- [Release notes](https://github.com/vueuse/vueuse/releases)
- [Commits](https://github.com/vueuse/vueuse/commits/v11.0.0/packages/components)

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

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-18 01:53:17 +00:00
Ferdinand Thiessen 0d9d68eea1 Merge pull request #47302 from nextcloud/dependabot/npm_and_yarn/vueuse/integrations-11.0.0
chore(deps): bump @vueuse/integrations from 10.11.0 to 11.0.0
2024-08-18 03:45:55 +02:00
Nextcloud bot e06931854a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-18 00:22:56 +00:00
John Molakvoæ a7658f3ec8 Merge pull request #47300 from nextcloud/dependabot/npm_and_yarn/elliptic-6.5.7
chore(deps): bump elliptic from 6.5.6 to 6.5.7
2024-08-17 22:19:59 +02:00
dependabot[bot] 2af0eb765f chore(deps): bump elliptic from 6.5.6 to 6.5.7
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.6 to 6.5.7.
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.6...v6.5.7)

---
updated-dependencies:
- dependency-name: elliptic
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-17 16:38:49 +00:00
Ferdinand Thiessen 2ec68b1eb9 refactor(Log): Use new in initializer instead of constructor body
PHP 8.1 allows us to now move the `new` into the initializer,
this makes the code a bit nicer (and 3 lines shorter).

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-17 18:38:28 +02:00
nextcloud-command 87e28b0bb7 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-17 16:37:58 +00:00
dependabot[bot] d6d173f74e chore(deps): bump @vueuse/integrations from 10.11.0 to 11.0.0
Bumps [@vueuse/integrations](https://github.com/vueuse/vueuse/tree/HEAD/packages/integrations) from 10.11.0 to 11.0.0.
- [Release notes](https://github.com/vueuse/vueuse/releases)
- [Commits](https://github.com/vueuse/vueuse/commits/v11.0.0/packages/integrations)

---
updated-dependencies:
- dependency-name: "@vueuse/integrations"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-17 18:30:44 +02:00
Ferdinand Thiessen 81b4ced076 Merge pull request #47287 from nextcloud/fix/files-access-owner
fix: Access node owner by top level `owner` property
2024-08-17 18:29:45 +02:00
nextcloud-command fa11a67e88 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-17 17:59:14 +02:00
Ferdinand Thiessen 132220a89f fix: Access node owner by top level owner property
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-17 17:59:10 +02:00
John Molakvoæ ad8200d963 Merge pull request #47297 from nextcloud/dependabot/npm_and_yarn/vueuse/core-11.0.0
chore(deps): bump @vueuse/core from 10.11.0 to 11.0.0
2024-08-17 12:57:00 +02:00
nextcloud-command 2dfd51cc03 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2024-08-17 10:18:30 +00:00
dependabot[bot] b52ab4388b chore(deps): bump @vueuse/core from 10.11.0 to 11.0.0
Bumps [@vueuse/core](https://github.com/vueuse/vueuse/tree/HEAD/packages/core) from 10.11.0 to 11.0.0.
- [Release notes](https://github.com/vueuse/vueuse/releases)
- [Commits](https://github.com/vueuse/vueuse/commits/v11.0.0/packages/core)

---
updated-dependencies:
- dependency-name: "@vueuse/core"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-17 12:10:25 +02:00
John Molakvoæ 09428d15a3 Merge pull request #47296 from nextcloud/dependabot/npm_and_yarn/pinia/testing-0.1.5
chore(deps-dev): bump @pinia/testing from 0.1.4 to 0.1.5
2024-08-17 10:01:11 +02:00
dependabot[bot] c0110409fc chore(deps-dev): bump @pinia/testing from 0.1.4 to 0.1.5
Bumps [@pinia/testing](https://github.com/vuejs/pinia) from 0.1.4 to 0.1.5.
- [Release notes](https://github.com/vuejs/pinia/releases)
- [Commits](https://github.com/vuejs/pinia/compare/@pinia/testing@0.1.4...@pinia/testing@0.1.5)

---
updated-dependencies:
- dependency-name: "@pinia/testing"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-17 01:25:24 +00:00
Nextcloud bot dcdb4bbf8a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-17 00:20:22 +00:00
Julien Veyssier 8d4968168f Merge pull request #47277 from nextcloud/enh/noid/occ-bg-job-worker-max-time
[occ:bg-job:worker] Add 'stop_after' option
2024-08-17 00:28:00 +02:00
Julien Veyssier 8638f3b587 feat(occ): add 'stop_after' option to stop the worker after some time
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2024-08-16 17:54:46 +02:00
Robin Appelman c8e09d158b Merge pull request #47038 from nextcloud/reshare-fed-share
fix: check for correct storage class when checking for link parent
2024-08-16 17:15:28 +02:00
John Molakvoæ 62f9c26111 Merge pull request #39611 from FedericoHeichou/add-command-user-welcome 2024-08-16 15:47:51 +02:00
John Molakvoæ 6fda0c15f0 fix: copyright header
Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
2024-08-16 15:25:04 +02:00
John Molakvoæ d63148ee8d Merge pull request #35867 from e-foundation/ldap-check-pwd-improvement 2024-08-16 15:17:27 +02:00
Akhil b1230cd53d Use cache in LDAP backend's checkPassword
Signed-off-by: Akhil <akhil@e.email>
2024-08-16 17:55:47 +05:30
Robin Appelman a92171260f fix: check for correct storage class when checking for link parent
fixes #39123

Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-16 13:13:31 +02:00
John Molakvoæ 13a72d0f0e Merge pull request #38750 from whlsxl/postgres-install-error 2024-08-16 12:58:58 +02:00
John Molakvoæ 74b8de5665 Merge pull request #47248 from nextcloud/fix/settings-styles 2024-08-16 12:51:53 +02:00
John Molakvoæ d94073de92 Merge pull request #38630 from joshtrichards/jr-readdir-false-false 2024-08-16 12:43:53 +02:00
John Molakvoæ b8b81254f3 Merge pull request #38857 from joshtrichards/jr-earlier-check-for-php-xml 2024-08-16 12:43:32 +02:00
John Molakvoæ b8dbed3e32 Merge pull request #37761 from nextcloud/invalidateTokensOnlySeenUsers 2024-08-16 12:16:58 +02:00
Josh Richards 8032b6ac63 (base) Give a hint in web interface if SimpleXML (php-xml) is missing
Fixes #2180
And prevents #31473, #23970, #18610, #15708

Avoids a 500 error and also gives a useful error message on the web interface if this module isn't installed, gets overlooked during a PHP upgrade, etc.

While we check for it later, it's too late for session.

Inspired by #17163

Signed-off-by: Josh Richards <josh.t.richards@gmail.com>
2024-08-16 11:06:21 +02:00
Hailong Wang 67c52d202c fix: use $this->tryCreateDbUser condition 2024-08-16 10:59:15 +02:00
Hailong Wang f490a4e8c0 fix: postgresql GRANT user's permission after createDatabase, ensure database exist when GRANT 2024-08-16 10:57:11 +02:00
John Molakvoæ d35c4eb911 Merge branch 'master' into jr-readdir-false-false
Signed-off-by: John Molakvoæ <skjnldsv@users.noreply.github.com>
2024-08-16 10:53:50 +02:00
Artur Neumann 84ee79fe43 fix: expect invalidateTokensOfUser only be called for seen users
Signed-off-by: Artur Neumann <artur@jankaritech.com>
2024-08-16 10:33:56 +02:00
Artur Neumann cc44ec54ad invalidate oauth2 tokens only for seen users
Signed-off-by: Artur Neumann <artur@jankaritech.com>
2024-08-16 10:33:52 +02:00
John Molakvoæ 75180a6292 Merge pull request #39692 from fsamapoor/refactor_encryption_app_commands 2024-08-16 10:24:18 +02:00
FedericoHeichou a41e2f01b7 feat: Add user:welcome command
Signed-off-by: FedericoHeichou <federicoheichou@gmail.com>
2024-08-16 10:11:29 +02:00
Faraz Samapoor 6b795da540 Uses early returns.
To improve code readability.

Signed-off-by: Faraz Samapoor <fsa@adlas.at>
2024-08-16 09:33:16 +02:00
Faraz Samapoor fc8b886295 Refactors encryption app commands.
To improve code readability.

Signed-off-by: Faraz Samapoor <fsa@adlas.at>
2024-08-16 09:33:16 +02:00
Nextcloud bot f4f7c757d4 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-16 00:20:07 +00:00
Joas Schilling 3dfe306724 Merge pull request #47258 from nextcloud/bugfix/noid/translated-predefined-user-status
Don't save translated predefined user status as custom status
2024-08-15 19:17:35 +02:00
Robin Appelman 0f9ea1992c perf: improve cleanup of tags/comments
delete entire chunk at once instead of one-by-one

Signed-off-by: Robin Appelman <robin@icewind.nl>
2024-08-15 17:13:57 +02:00
Joas Schilling 15550de8ce Merge pull request #47252 from nextcloud/bugfix/noid/dont-crash-when-creating-folder
fix(adminaudit): Don't crash when creating folder
2024-08-15 15:33:49 +02:00
Joas Schilling 28e6328d65 chore(assets): Recompile assets
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-15 14:41:08 +02:00
Joas Schilling 50c48aa538 fix(userstatus): Don't set predefined user status as custom when changing "Clear at"
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-15 14:39:56 +02:00
Joas Schilling 601b3b16cb Merge pull request #47253 from nextcloud/feat/webauthn-uv
feat(webauthn): Add user verification to webauthn challenges
2024-08-15 11:50:00 +02:00
S1m 9189bc290b feat(webauthn): Add user verification to webauthn challenges
Require user verification if all tokens are registered
with UV flag, else discourage it

Signed-off-by: S1m <git@sgougeon.fr>
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
2024-08-15 11:03:10 +02:00
Joas Schilling 774427a03a fix(adminaudit): Don't crash when creating folder
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-15 10:00:22 +02:00
Nextcloud bot e218d1f98e Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-08-15 00:25:46 +00:00
Ferdinand Thiessen d025c55193 chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-15 02:05:02 +02:00
Ferdinand Thiessen d0a0be9959 fix: Adjust legacy CSS styles for new Nextcloud 30 design
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-15 02:04:51 +02:00
Ferdinand Thiessen 2c24c3c469 Merge pull request #47240 from nextcloud/fix/webauth-credentials-length
fix(webauthn): Increase database column for public key id
2024-08-15 00:19:55 +02:00
Ferdinand Thiessen b582630715 fix(webauthn): Increase database column for public key id
* Resolves https://github.com/nextcloud/server/issues/34476

There is no maximum length defined in the standard,
most common the length is between 128 and 200 characters,
but as we store it not in plain data but base64 encoded the length can grow about 1/3.

We had a regression with 'Nitrokey 3' which created IDs with 196 byte length -> 262 bytes encoded base64.
So to be save we increase the size to 512 bytes.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-14 22:12:54 +02:00
Ferdinand Thiessen fb90e7e2cf Merge pull request #47203 from nextcloud/fix/app-menu-hover
fix(AppMenu): Prevent menu entries from jumping on hover
2024-08-14 16:56:37 +02:00
dependabot[bot] 0f10cabf2a Merge pull request #47225 from nextcloud/dependabot/npm_and_yarn/is-svg-5.1.0 2024-08-14 12:35:06 +00:00
Ferdinand Thiessen 44705abacb chore: Compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-14 12:24:31 +02:00
Ferdinand Thiessen 21c30e5259 fix(AppMenu): Prevent menu entries from jumping on hover
Only grow and shrink app menu entry if needed

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2024-08-14 12:22:15 +02:00
dependabot[bot] a7eb156130 chore(deps): bump is-svg from 5.0.1 to 5.1.0
Bumps [is-svg](https://github.com/sindresorhus/is-svg) from 5.0.1 to 5.1.0.
- [Release notes](https://github.com/sindresorhus/is-svg/releases)
- [Commits](https://github.com/sindresorhus/is-svg/compare/v5.0.1...v5.1.0)

---
updated-dependencies:
- dependency-name: is-svg
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-14 09:33:21 +00:00
John Molakvoæ effbc44756 Merge pull request #47212 from nextcloud/chore/master-is-now-31 2024-08-14 11:29:57 +02:00
Joas Schilling 9d446d566b fix(3rdparty): Update 3rdparty after dependabot changes
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-14 10:28:31 +02:00
Joas Schilling 71bfa5b574 chore(assets): Recompile assets
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-14 10:07:48 +02:00
Joas Schilling eb365438d6 feat(branchoff): Bump versions and requirements in apps
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-14 10:03:30 +02:00
Joas Schilling 7b53a85bb6 feat(release)!: Bump Server version to 31
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-14 09:58:57 +02:00
Joas Schilling 04944aaa23 fix(security): Update expiration date in security.txt
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-14 09:58:02 +02:00
Joas Schilling 31b74bc671 fix(CI)!: Add stable30 to and remove stable27 from GitHub Actions
Signed-off-by: Joas Schilling <coding@schilljs.com>
2024-08-14 09:56:47 +02:00
Josh Richards e7cbaf3ee3 Clean-up some remaining readdir calls with undesirable false evaluation potential
Signed-off-by: Josh Richards <josh.t.richards@gmail.com>
2023-06-24 15:37:06 +02:00
3302 changed files with 57477 additions and 71656 deletions
+4
View File
@@ -2,3 +2,7 @@
# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: AGPL-3.0-or-later
# Update to coding-standard 1.2.3
af6de04e9e141466dc229e444ff3f146f4a34765
0bd284cb81b6866338aaaa67aa1d81ef9bfbb2ab
+9 -17
View File
@@ -2,18 +2,14 @@
/apps/admin_audit/appinfo/info.xml @luka-nextcloud @blizzz
/apps/cloud_federation_api/appinfo/info.xml @mejo-
/apps/comments/appinfo/info.xml @edward-ly @Pytal
/apps/contactsinteraction/appinfo/info.xml @kesselb @SebastianKrupinski
/apps/contactsinteraction/lib @kesselb @SebastianKrupinski
/apps/contactsinteraction/tests @kesselb @SebastianKrupinski
/apps/dashboard/appinfo/info.xml @julien-nc @juliusknorr
/apps/dav/lib/CalDAV @miaulalala @st3iny @SebastianKrupinski
/apps/dav/lib/CardDAV @miaulalala @st3iny @SebastianKrupinski
/apps/dav/tests/unit/CalDAV @miaulalala @st3iny @SebastianKrupinski
/apps/dav/tests/unit/CardDAV @miaulalala @st3iny @SebastianKrupinski
/apps/contactsinteraction/appinfo/info.xml @kesselb @miaulalala @ChristophWurst @GretaD @hamza221 @st3iny
/apps/dashboard/appinfo/info.xml @julien-nc @juliushaertl
/apps/dav/lib/CalDAV @ChristophWurst @miaulalala @tcitworld
/apps/dav/lib/CardDAV @ChristophWurst @miaulalala @tcitworld
/apps/encryption/appinfo/info.xml @come-nc @icewind1991
/apps/federatedfilesharing/appinfo/info.xml @icewind1991 @danxuliu
/apps/federation/appinfo/info.xml @nfebe
/apps/files/appinfo/info.xml @skjnldsv @Pytal @ArtificialOwl @come-nc @artonge @icewind1991 @szaimen @susnux @nfebe
/apps/federation/appinfo/info.xml @datenangebot
/apps/files/appinfo/info.xml @skjnldsv @Pytal @ArtificialOwl @come-nc @artonge @icewind1991 @szaimen @susnux @Fenn-CS
/apps/files_external/appinfo/info.xml @icewind1991 @artonge
/apps/files_reminders/appinfo/info.xml @Pytal
/apps/files_sharing/appinfo/info.xml @skjnldsv @come-nc
@@ -24,14 +20,14 @@
/apps/settings/appinfo/info.xml @Pytal @JuliaKirschenheuter
/apps/sharebymail/appinfo/info.xml @Altahrim
/apps/systemtags/appinfo/info.xml @Antreesy @marcelklehr
/apps/theming/appinfo/info.xml @skjnldsv @juliusknorr
/apps/theming/appinfo/info.xml @skjnldsv @juliushaertl
/apps/twofactor_backupcodes/appinfo/info.xml @st3iny @miaulalala @ChristophWurst
/apps/updatenotification/appinfo/info.xml @Pytal @JuliaKirschenheuter
/apps/user_ldap/appinfo/info.xml @come-nc @blizzz
/apps/user_status/appinfo/info.xml @Antreesy @nickvergessen
/apps/weather_status/appinfo/info.xml @julien-nc @juliusknorr
/apps/weather_status/appinfo/info.xml @julien-nc @juliushaertl
/apps/webhook_listeners/appinfo/info.xml @come-nc @julien-nc
/apps/workflowengine/appinfo/info.xml @blizzz @juliusknorr
/apps/workflowengine/appinfo/info.xml @blizzz @juliushaertl
# Frontend expertise
/apps/files/src* @skjnldsv
@@ -69,10 +65,6 @@ ResponseDefinitions.php @provokateurin
/lib/public/Talk @nickvergessen
/lib/public/UserStatus @nickvergessen
# Groupware
/build/integration/dav_features/caldav.feature @miaulalala @st3iny @SebastianKrupinski
/build/integration/dav_features/carddav.feature @miaulalala @st3iny @SebastianKrupinski
# Personal interest
*/Activity/* @nickvergessen
*/Notifications/* @nickvergessen
+37 -14
View File
@@ -59,20 +59,6 @@ updates:
reviewers:
- "nextcloud/server-dependabot"
# phpunit
- package-ecosystem: composer
directory: "/vendor-bin/phpunit"
schedule:
interval: weekly
day: saturday
time: "04:40"
timezone: Europe/Madrid
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
# Main master npm
- package-ecosystem: npm
directory: "/"
@@ -152,6 +138,25 @@ updates:
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
- package-ecosystem: npm
directory: "/"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable30
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor"]
# Disable automatic rebasing because without a build CI will likely fail anyway
rebase-strategy: "disabled"
- package-ecosystem: composer
directory: "/build/integration"
schedule:
@@ -188,6 +193,24 @@ updates:
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
- package-ecosystem: composer
directory: "/build/integration"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable30
labels:
- "3. to review"
- "feature: dependencies"
reviewers:
- "nextcloud/server-dependabot"
ignore:
# ignore all GitHub linguist patch updates
- dependency-name: "*"
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
# GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
+2 -2
View File
@@ -45,7 +45,7 @@ jobs:
strategy:
matrix:
php-versions: ['8.1']
php-versions: ['8.3']
name: PHP checkers
@@ -59,7 +59,7 @@ jobs:
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
extensions: ctype, json, mbstring
coverage: none
ini-file: development
env:
+7
View File
@@ -29,6 +29,8 @@ jobs:
npmVersion: ${{ steps.versions.outputs.npmVersion }}
env:
# We'll install cypress in the cypress job
CYPRESS_INSTALL_BINARY: 0
PUPPETEER_SKIP_DOWNLOAD: true
steps:
@@ -115,9 +117,14 @@ jobs:
- name: Set up npm ${{ needs.init.outputs.npmVersion }}
run: npm i -g 'npm@${{ needs.init.outputs.npmVersion }}'
- name: Install cypress
run: ./node_modules/cypress/bin/cypress install
- name: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }} cypress tests
uses: cypress-io/github-action@df7484c5ba85def7eef30db301afa688187bc378 # v6.7.2
with:
# We already installed the dependencies in the init job
install: false
component: ${{ matrix.containers == 'component' }}
group: ${{ matrix.use-cypress-cloud && matrix.containers == 'component' && 'Run component' || matrix.use-cypress-cloud && 'Run E2E' || '' }}
# cypress env
+1 -1
View File
@@ -72,7 +72,7 @@ jobs:
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
extensions: ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+1 -1
View File
@@ -68,7 +68,7 @@ jobs:
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
extensions: ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+1 -1
View File
@@ -65,7 +65,7 @@ jobs:
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, smbclient, sqlite, pdo_sqlite
extensions: ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, smbclient, sqlite, pdo_sqlite
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
ini-file: development
env:
+1 -1
View File
@@ -43,7 +43,7 @@ jobs:
# do not stop on another job's failure
fail-fast: false
matrix:
php-versions: ['8.1']
php-versions: ['8.3']
endpoint: ['old', 'new']
service: ['CalDAV', 'CardDAV']
+1 -1
View File
@@ -43,7 +43,7 @@ jobs:
# do not stop on another job's failure
fail-fast: false
matrix:
php-versions: ['8.1']
php-versions: ['8.3']
endpoint: ['webdav', 'dav']
name: Litmus WebDAV ${{ matrix.endpoint }}
+2 -3
View File
@@ -41,7 +41,6 @@ jobs:
- '.php-cs-fixer.dist.php'
- 'composer.json'
- 'composer.lock'
- 'core/shipped.json'
integration-sqlite:
runs-on: ubuntu-latest
@@ -70,8 +69,8 @@ jobs:
- 'sharing_features'
- 'videoverification_features'
php-versions: ['8.1']
spreed-versions: ['stable30']
php-versions: ['8.2']
spreed-versions: ['main']
services:
redis:
+1 -1
View File
@@ -21,7 +21,7 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ['main', 'master', 'stable29', 'stable28', 'stable27']
branches: ['main', 'master', 'stable30', 'stable29', 'stable28']
name: npm-audit-fix-${{ matrix.branches }}
+1 -1
View File
@@ -45,7 +45,7 @@ jobs:
strategy:
matrix:
php-versions: ['8.1', '8.2']
php-versions: ['8.1', '8.2', '8.3']
include:
- php-versions: '8.3'
coverage: true
+1 -1
View File
@@ -45,7 +45,7 @@ jobs:
strategy:
matrix:
php-versions: ['8.1', '8.2']
php-versions: ['8.1', '8.2', '8.3']
include:
- php-versions: '8.3'
coverage: true
+1 -1
View File
@@ -45,7 +45,7 @@ jobs:
strategy:
matrix:
php-versions: ['8.1', '8.2']
php-versions: ['8.1', '8.2', '8.3']
include:
- php-versions: '8.3'
coverage: true
+1 -1
View File
@@ -31,7 +31,7 @@ jobs:
- name: Set up php
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: '8.1'
php-version: '8.2'
extensions: ctype, curl, dom, fileinfo, gd, json, libxml, mbstring, openssl, pcntl, pdo, posix, session, simplexml, xml, xmlreader, xmlwriter, zip, zlib
coverage: none
ini-file: development
+3 -3
View File
@@ -38,7 +38,7 @@ jobs:
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
extensions: mbstring, fileinfo, intl, sqlite, pdo_sqlite, zip, gd
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -64,7 +64,7 @@ jobs:
curl -s -u test:test -T README.md http://localhost:8080/remote.php/dav/files/test/new_file.txt
curl -s -u test:test -X DELETE http://localhost:8080/remote.php/dav/files/test/new_file.txt
output: before.json
profiler-branch: stable30
profiler-branch: master
- name: Apply PR
run: |
@@ -86,7 +86,7 @@ jobs:
curl -s -u test:test -T README.md http://localhost:8080/remote.php/dav/files/test/new_file.txt
curl -s -u test:test -X DELETE http://localhost:8080/remote.php/dav/files/test/new_file.txt
output: after.json
profiler-branch: stable30
profiler-branch: master
compare-with: before.json
- name: Upload profiles
+1 -1
View File
@@ -55,7 +55,7 @@ jobs:
strategy:
matrix:
php-versions: ['8.1', '8.3']
php-versions: ['8.1', '8.2', '8.3']
include:
- php-versions: '8.2'
coverage: ${{ github.event_name != 'pull_request' }}
@@ -1,184 +0,0 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# SPDX-FileCopyrightText: 2022-2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: PHPUnit sharding
on:
pull_request:
schedule:
- cron: "5 2 * * *"
permissions:
contents: read
concurrency:
group: phpunit-mysql-sharding-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
changes:
runs-on: ubuntu-latest-low
outputs:
src: ${{ steps.changes.outputs.src }}
steps:
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- '3rdparty/**'
- '**/appinfo/**'
- '**/lib/**'
- '**/templates/**'
- '**/tests/**'
- 'vendor/**'
- 'vendor-bin/**'
- '.php-cs-fixer.dist.php'
- 'composer.json'
- 'composer.lock'
- '**.php'
phpunit-mysql:
runs-on: ubuntu-latest
needs: changes
if: needs.changes.outputs.src != 'false'
strategy:
matrix:
php-versions: ['8.1']
mysql-versions: ['8.4']
name: Sharding - MySQL ${{ matrix.mysql-versions }} (PHP ${{ matrix.php-versions }}) - database tests
services:
cache:
image: ghcr.io/nextcloud/continuous-integration-redis:latest
ports:
- 6379:6379/tcp
options: --health-cmd="redis-cli ping" --health-interval=10s --health-timeout=5s --health-retries=3
mysql:
image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest
ports:
- 4444:3306/tcp
env:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_USER: oc_autotest
MYSQL_PASSWORD: nextcloud
MYSQL_DATABASE: oc_autotest
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10
shard1:
image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest
ports:
- 5001:3306/tcp
env:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_USER: oc_autotest
MYSQL_PASSWORD: nextcloud
MYSQL_DATABASE: nextcloud
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10
shard2:
image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest
ports:
- 5002:3306/tcp
env:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_USER: oc_autotest
MYSQL_PASSWORD: nextcloud
MYSQL_DATABASE: nextcloud
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10
shard3:
image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest
ports:
- 5003:3306/tcp
env:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_USER: oc_autotest
MYSQL_PASSWORD: nextcloud
MYSQL_DATABASE: nextcloud
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10
shard4:
image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest
ports:
- 5004:3306/tcp
env:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_USER: oc_autotest
MYSQL_PASSWORD: nextcloud
MYSQL_DATABASE: nextcloud
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10
steps:
- name: Checkout server
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
submodules: true
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2e947f1f6932d141d076ca441d0e1e881775e95b #v2.31.0
with:
php-version: ${{ matrix.php-versions }}
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, mysql, pdo_mysql
coverage: ${{ matrix.coverage && 'xdebug' || 'none' }}
ini-file: development
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Set up dependencies
run: composer i
- name: Enable ONLY_FULL_GROUP_BY MySQL option
run: |
echo "SET GLOBAL sql_mode=(SELECT CONCAT(@@sql_mode,',ONLY_FULL_GROUP_BY'));" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
echo "SELECT @@sql_mode;" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
- name: Set up Nextcloud
env:
DB_PORT: 4444
SHARDING: 1
run: |
mkdir data
cp tests/redis.config.php config/
cp tests/preseed-config.php config/config.php
./occ maintenance:install --verbose --database=mysql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
php -f tests/enable_all.php | grep -i -C9999 error && echo "Error during app setup" && exit 1 || exit 0
- name: PHPUnit
run: composer run test:db ${{ matrix.coverage && ' -- --coverage-clover ./clover.db.xml' || '' }}
- name: Upload db code coverage
if: ${{ !cancelled() && matrix.coverage }}
uses: codecov/codecov-action@v4.1.1
with:
files: ./clover.db.xml
flags: phpunit-mysql
- name: Print logs
if: always()
run: |
cat data/nextcloud.log
summary:
permissions:
contents: none
runs-on: ubuntu-latest-low
needs: [changes, phpunit-mysql]
if: always()
name: phpunit-mysql-summary
steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-mysql.result != 'success' }}; then exit 1; fi
+1 -1
View File
@@ -57,7 +57,7 @@ jobs:
strategy:
matrix:
php-versions: ['8.1', '8.3']
php-versions: ['8.1', '8.2', '8.3']
include:
- php-versions: '8.2'
coverage: ${{ github.event_name != 'pull_request' }}
+1 -1
View File
@@ -55,7 +55,7 @@ jobs:
strategy:
matrix:
php-versions: ['8.2', '8.3']
php-versions: ['8.1', '8.2', '8.3']
include:
- php-versions: '8.1'
coverage: ${{ github.event_name != 'pull_request' }}
+6 -6
View File
@@ -25,7 +25,7 @@ jobs:
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: '8.1'
extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,imagick,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -38,7 +38,7 @@ jobs:
- name: Show potential changes in Psalm baseline
if: always()
run: git diff --exit-code -- . ':!lib/composer'
run: git diff -- . ':!lib/composer'
- name: Upload Analysis results to GitHub
if: always()
@@ -59,14 +59,14 @@ jobs:
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: '8.1'
extensions: ctype,curl,dom,fileinfo,ftp,gd,imagick,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
extensions: ctype,curl,dom,fileinfo,ftp,gd,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
- name: Composer install
run: composer i
- name: Psalm taint analysis
run: composer run psalm:ci -- --monochrome --no-progress --output-format=github --report=results.sarif --taint-analysis --ignore-baseline
run: composer run psalm:ci -- --monochrome --no-progress --output-format=github --report=results.sarif --taint-analysis
- name: Upload Security Analysis results to GitHub
if: always()
@@ -87,7 +87,7 @@ jobs:
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: '8.1'
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -100,4 +100,4 @@ jobs:
- name: Show potential changes in Psalm baseline
if: always()
run: git diff --exit-code -- . ':!lib/composer'
run: git diff -- . ':!lib/composer'
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ['master', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
branches: ['master', 'stable30', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
name: update-ca-certificate-bundle-${{ matrix.branches }}
@@ -14,7 +14,7 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ['master', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
branches: ['master', 'stable30', 'stable29', 'stable28', 'stable27', 'stable26', 'stable25', 'stable24', 'stable23', 'stable22']
name: update-code-signing-crl-${{ matrix.branches }}
@@ -0,0 +1,52 @@
# SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Auto approve psalm baseline update
on:
pull_request_target:
branches:
- main
- master
- stable*
permissions:
contents: read
concurrency:
group: update-psalm-baseline-approve-merge-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
auto-approve-merge:
if: github.actor == 'nextcloud-command'
runs-on: ubuntu-latest-low
permissions:
# for hmarr/auto-approve-action to approve PRs
pull-requests: write
# for alexwilson/enable-github-automerge-action to approve PRs
contents: write
steps:
- name: Disabled on forks
if: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
run: |
echo 'Can not approve PRs from forks'
exit 1
- uses: mdecoleman/pr-branch-name@55795d86b4566d300d237883103f052125cc7508 # v3.0.0
id: branchname
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
# GitHub actions bot approve
- uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2
if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-psalm-baseline')
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
# Enable GitHub auto merge
- name: Auto merge
uses: alexwilson/enable-github-automerge-action@56e3117d1ae1540309dc8f7a9f2825bc3c5f06ff # main
if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-psalm-baseline')
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
@@ -0,0 +1,69 @@
# SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
# SPDX-License-Identifier: MIT
name: Update Psalm baseline
on:
workflow_dispatch:
schedule:
- cron: "5 2 * * *"
jobs:
update-psalm-baseline:
runs-on: ubuntu-latest
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
strategy:
fail-fast: false
matrix:
branches: ['master', 'stable30', 'stable29', 'stable28']
name: update-psalm-baseline-${{ matrix.branches }}
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
ref: ${{ matrix.branches }}
submodules: true
- name: Set up php
uses: shivammathur/setup-php@c541c155eee45413f5b09a52248675b1a2575231 #v2.31.1
with:
php-version: '8.1'
extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
coverage: none
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Composer install
run: composer install
- name: Psalm
run: composer run psalm:ci -- --monochrome --no-progress --output-format=text --update-baseline
continue-on-error: true
- name: Psalm OCP
run: composer run psalm:ci -- -c psalm-ocp.xml --monochrome --no-progress --output-format=github --update-baseline
continue-on-error: true
- name: Reset composer
run: |
git clean -f lib/composer
git checkout composer.json composer.lock lib/composer
- name: Create Pull Request
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c
with:
token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: 'chore(tests): Update psalm baseline'
committer: GitHub <noreply@github.com>
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
signoff: true
branch: 'automated/noid/${{ matrix.branches }}-update-psalm-baseline'
title: '[${{ matrix.branches }}] Update psalm-baseline.xml'
body: |
Auto-generated update psalm-baseline.xml with fixed psalm warnings
labels: |
automated pr
3. to review
team-reviewers: server-backend
+2 -10
View File
@@ -49,8 +49,8 @@
</Else>
</FilesMatch>
# Let browsers cache OTF and WOFF files for a week
<FilesMatch "\.(otf|woff2?)$">
# Let browsers cache WOFF files for a week
<FilesMatch "\.woff2?$">
Header set Cache-Control "max-age=604800"
</FilesMatch>
</IfModule>
@@ -106,13 +106,5 @@
SetEnvIf Transfer-Encoding "chunked" proxy-sendcl=1
</IfModule>
# Apache disabled the sending of the server-side content-length header
# in their 2.4.59 patch updated which breaks some use-cases in Nextcloud.
# Setting ap_trust_cgilike_cl allows to bring back the usual behaviour.
# See https://bz.apache.org/bugzilla/show_bug.cgi?id=68973
<IfModule mod_env.c>
SetEnv ap_trust_cgilike_cl
</IfModule>
AddDefaultCharset utf-8
Options -Indexes
+13 -19
View File
@@ -14,29 +14,23 @@ $config = new Config();
$config
->setParallelConfig(ParallelConfigFactory::detect())
->getFinder()
->ignoreVCSIgnored(true)
->exclude('config')
->exclude('data')
->notPath('3rdparty')
->notPath('build/integration/vendor')
->notPath('build/lib')
->notPath('build/node_modules')
->notPath('build/stubs')
->notPath('composer')
->notPath('node_modules')
->notPath('vendor')
->in('apps')
->exclude('3rdparty')
->exclude('build/stubs')
->exclude('composer')
->in(__DIR__);
// Ignore additional app directories
$rootDir = new \DirectoryIterator(__DIR__);
foreach ($rootDir as $node) {
if (str_starts_with($node->getFilename(), 'apps')) {
$return = shell_exec('git check-ignore ' . escapeshellarg($node->getFilename() . '/'));
$ignoredEntries = shell_exec('git status --porcelain --ignored ' . escapeshellarg(__DIR__));
$ignoredEntries = explode("\n", $ignoredEntries);
$ignoredEntries = array_filter($ignoredEntries, static fn (string $line) => str_starts_with($line, '!! '));
$ignoredEntries = array_map(static fn (string $line) => substr($line, 3), $ignoredEntries);
$ignoredEntries = array_values($ignoredEntries);
if ($return !== null) {
$config->getFinder()->exclude($node->getFilename());
}
foreach ($ignoredEntries as $ignoredEntry) {
if (str_ends_with($ignoredEntry, '/')) {
$config->getFinder()->exclude($ignoredEntry);
} else {
$config->getFinder()->notPath($ignoredEntry);
}
}
+7 -7
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -6,4 +6,4 @@ and our products: “Nextcloud Files”; “Nextcloud Groupware” and “Nextcl
This set of marks is collectively referred to as the “Nextcloud marks.”
Use of Nextcloud logos and other marks is only permitted under the guidelines provided by the Nextcloud GmbH.
A copy can be found at https://nextcloud.com/trademarks/
A copy can be found at https://discord.com/branding
+6 -2
View File
@@ -5,8 +5,8 @@
-->
# Nextcloud Server ☁
[![REUSE status](https://api.reuse.software/badge/github.com/nextcloud/server)](https://api.reuse.software/info/github.com/nextcloud/server)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nextcloud/server/badges/quality-score.png?b=stable30)](https://scrutinizer-ci.com/g/nextcloud/server/?branch=stable30)
[![codecov](https://codecov.io/gh/nextcloud/server/branch/stable30/graph/badge.svg)](https://codecov.io/gh/nextcloud/server)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nextcloud/server/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/nextcloud/server/?branch=master)
[![codecov](https://codecov.io/gh/nextcloud/server/branch/master/graph/badge.svg)](https://codecov.io/gh/nextcloud/server)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/209/badge)](https://bestpractices.coreinfrastructure.org/projects/209)
[![Design](https://contribute.design/api/shield/nextcloud/server)](https://contribute.design/nextcloud/server)
@@ -74,6 +74,10 @@ Otherwise, git checkouts can be handled the same as release archives, by using t
- Comment on a pull request with `/update-3rdparty` to update the 3rd party submodule. It will update to the last commit of the 3rd party branch named like the PR target.
#### Ignore code style updates in git blame
`git config blame.ignoreRevsFile .git-blame-ignore-revs`
## Contribution guidelines 📜
All contributions to this repository from June 16, 2016, and onward are considered to be
-12
View File
@@ -1,12 +0,0 @@
/**
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import '@testing-library/jest-dom'
// Mock `window.location` with Jest spies and extend expect
import 'jest-location-mock'
// Mock `window.fetch` with Jest
import 'jest-fetch-mock'
+5
View File
@@ -2,7 +2,12 @@
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { beforeEach } from 'vitest'
window.OC = { ...window.OC }
window.OCA = { ...window.OCA }
window.OCP = { ...window.OCP }
beforeEach(() => {
window.location = new URL('http://nextcloud.local')
})
+5
View File
@@ -0,0 +1,5 @@
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: CC0-1.0
*/
import '@testing-library/jest-dom/vitest'
-6
View File
@@ -1,6 +0,0 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"verbatimModuleSyntax": false
}
}
+2 -2
View File
@@ -10,7 +10,7 @@
<name>Auditing / Logging</name>
<summary>Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.</summary>
<description>Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.</description>
<version>1.20.0</version>
<version>1.21.0</version>
<licence>agpl</licence>
<author>Nextcloud</author>
<namespace>AdminAudit</namespace>
@@ -20,7 +20,7 @@
<category>monitoring</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="30" max-version="30"/>
<nextcloud min-version="31" max-version="31"/>
</dependencies>
<background-jobs>
<job>OCA\AdminAudit\BackgroundJobs\Rotate</job>
-7
View File
@@ -1,7 +0,0 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "ئىقتىسادىي تەپتىش / خاتىرىلەش",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nextcloud غا تىزىمغا كىرىش ئىقتىدارى بىلەن تەمىنلەيدۇ ، مەسىلەن ھۆججەتلەرنى زىيارەت قىلىش ياكى باشقا سەزگۈر ھەرىكەتلەر."
},
"nplurals=2; plural=(n != 1);");
-5
View File
@@ -1,5 +0,0 @@
{ "translations": {
"Auditing / Logging" : "ئىقتىسادىي تەپتىش / خاتىرىلەش",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Nextcloud غا تىزىمغا كىرىش ئىقتىدارى بىلەن تەمىنلەيدۇ ، مەسىلەن ھۆججەتلەرنى زىيارەت قىلىش ياكى باشقا سەزگۈر ھەرىكەتلەر."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -2
View File
@@ -1,7 +1,7 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "Kiểm tra / Nhật ký",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Cung cấp khả năng ghi nhật ký cho Nextcloud, chẳng hạn như ghi nhật ký quyền truy cập tệp hoặc các hành động nhạy cảm khác."
"Auditing / Logging" : "Kiểm tra / Nhật ký",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Cung cấp khả năng ghi nhật ký cho Nextcloud, chẳng hạn như ghi nhật ký quyền truy cập tệp hoặc các hành động nhạy cảm khác."
},
"nplurals=1; plural=0;");
+2 -2
View File
@@ -1,5 +1,5 @@
{ "translations": {
"Auditing / Logging" : "Kiểm tra / Nhật ký",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Cung cấp khả năng ghi nhật ký cho Nextcloud, chẳng hạn như ghi nhật ký quyền truy cập tệp hoặc các hành động nhạy cảm khác."
"Auditing / Logging" : "Kiểm tra / Nhật ký",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Cung cấp khả năng ghi nhật ký cho Nextcloud, chẳng hạn như ghi nhật ký quyền truy cập tệp hoặc các hành động nhạy cảm khác."
},"pluralForm" :"nplurals=1; plural=0;"
}
+2 -2
View File
@@ -1,7 +1,7 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "稽核/記錄",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "提供 Nextcloud 的記錄功能,例如錄檔存取或其他敏感操作。"
"Auditing / Logging" : "稽核記錄",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "提供 Nextcloud 的記錄功能,例如錄檔存取或其他敏感操作。"
},
"nplurals=1; plural=0;");
+2 -2
View File
@@ -1,5 +1,5 @@
{ "translations": {
"Auditing / Logging" : "稽核/記錄",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "提供 Nextcloud 的記錄功能,例如錄檔存取或其他敏感操作。"
"Auditing / Logging" : "稽核記錄",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "提供 Nextcloud 的記錄功能,例如錄檔存取或其他敏感操作。"
},"pluralForm" :"nplurals=1; plural=0;"
}
+52 -14
View File
@@ -8,11 +8,12 @@ declare(strict_types=1);
namespace OCA\AdminAudit\Actions;
use OC\Files\Node\NonExistingFile;
use OCP\Files\Events\Node\BeforeNodeDeletedEvent;
use OCP\Files\Events\Node\BeforeNodeReadEvent;
use OCP\Files\Events\Node\BeforeNodeRenamedEvent;
use OCP\Files\Events\Node\BeforeNodeWrittenEvent;
use OCP\Files\Events\Node\NodeCopiedEvent;
use OCP\Files\Events\Node\NodeCreatedEvent;
use OCP\Files\Events\Node\NodeDeletedEvent;
use OCP\Files\Events\Node\NodeRenamedEvent;
use OCP\Files\Events\Node\NodeWrittenEvent;
use OCP\Files\InvalidPathException;
@@ -28,9 +29,10 @@ use Psr\Log\LoggerInterface;
class Files extends Action {
private array $renamedNodes = [];
/**
* Logs file read actions
*
* @param BeforeNodeReadEvent $event
*/
public function read(BeforeNodeReadEvent $event): void {
try {
@@ -41,7 +43,7 @@ class Files extends Action {
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file read: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
'Exception thrown in file read: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -54,6 +56,8 @@ class Files extends Action {
/**
* Logs rename actions of files
*
* @param BeforeNodeRenamedEvent $event
*/
public function beforeRename(BeforeNodeRenamedEvent $event): void {
try {
@@ -61,7 +65,7 @@ class Files extends Action {
$this->renamedNodes[$source->getId()] = $source;
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file rename: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
'Exception thrown in file rename: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -69,6 +73,8 @@ class Files extends Action {
/**
* Logs rename actions of files
*
* @param NodeRenamedEvent $event
*/
public function afterRename(NodeRenamedEvent $event): void {
try {
@@ -81,7 +87,7 @@ class Files extends Action {
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file rename: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
'Exception thrown in file rename: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -96,6 +102,8 @@ class Files extends Action {
/**
* Logs creation of files
*
* @param NodeCreatedEvent $event
*/
public function create(NodeCreatedEvent $event): void {
try {
@@ -105,7 +113,7 @@ class Files extends Action {
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file create: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
'Exception thrown in file create: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -121,6 +129,8 @@ class Files extends Action {
/**
* Logs copying of files
*
* @param NodeCopiedEvent $event
*/
public function copy(NodeCopiedEvent $event): void {
try {
@@ -132,7 +142,7 @@ class Files extends Action {
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file copy: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
'Exception thrown in file copy: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -145,17 +155,19 @@ class Files extends Action {
/**
* Logs writing of files
*
* @param BeforeNodeWrittenEvent $event
*/
public function write(NodeWrittenEvent $event): void {
public function write(BeforeNodeWrittenEvent $event): void {
$node = $event->getNode();
try {
$params = [
'id' => $node->getId(),
'id' => $node instanceof NonExistingFile ? null : $node->getId(),
'path' => mb_substr($node->getInternalPath(), 5),
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file write: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
'Exception thrown in file write: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -171,9 +183,11 @@ class Files extends Action {
}
/**
* Logs deletions of files
* Logs update of files
*
* @param NodeWrittenEvent $event
*/
public function delete(BeforeNodeDeletedEvent $event): void {
public function update(NodeWrittenEvent $event): void {
try {
$params = [
'id' => $event->getNode()->getId(),
@@ -181,7 +195,31 @@ class Files extends Action {
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file delete: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
'Exception thrown in file update: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
$this->log(
'File with id "%s" updated: "%s"',
$params,
array_keys($params)
);
}
/**
* Logs deletions of files
*
* @param NodeDeletedEvent $event
*/
public function delete(NodeDeletedEvent $event): void {
try {
$params = [
'id' => $event->getNode()->getId(),
'path' => mb_substr($event->getNode()->getInternalPath(), 5),
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
'Exception thrown in file delete: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
@@ -210,7 +248,7 @@ class Files extends Action {
];
} catch (InvalidPathException|NotFoundException $e) {
\OCP\Server::get(LoggerInterface::class)->error(
"Exception thrown in file preview: ".$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
'Exception thrown in file preview: '.$e->getMessage(), ['app' => 'admin_audit', 'exception' => $e]
);
return;
}
+13 -5
View File
@@ -32,11 +32,12 @@ use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailed;
use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassed;
use OCP\Console\ConsoleEvent;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\Events\Node\BeforeNodeDeletedEvent;
use OCP\Files\Events\Node\BeforeNodeReadEvent;
use OCP\Files\Events\Node\BeforeNodeRenamedEvent;
use OCP\Files\Events\Node\BeforeNodeWrittenEvent;
use OCP\Files\Events\Node\NodeCopiedEvent;
use OCP\Files\Events\Node\NodeCreatedEvent;
use OCP\Files\Events\Node\NodeDeletedEvent;
use OCP\Files\Events\Node\NodeRenamedEvent;
use OCP\Files\Events\Node\NodeWrittenEvent;
use OCP\IConfig;
@@ -217,12 +218,19 @@ class Application extends App implements IBootstrap {
);
$eventDispatcher->addListener(
NodeWrittenEvent::class,
function (NodeWrittenEvent $event) use ($fileActions): void {
BeforeNodeWrittenEvent::class,
function (BeforeNodeWrittenEvent $event) use ($fileActions) {
$fileActions->write($event);
}
);
$eventDispatcher->addListener(
NodeWrittenEvent::class,
function (NodeWrittenEvent $event) use ($fileActions) {
$fileActions->update($event);
}
);
$eventDispatcher->addListener(
BeforeNodeReadEvent::class,
function (BeforeNodeReadEvent $event) use ($fileActions) {
@@ -231,8 +239,8 @@ class Application extends App implements IBootstrap {
);
$eventDispatcher->addListener(
BeforeNodeDeletedEvent::class,
function (BeforeNodeDeletedEvent $event) use ($fileActions): void {
NodeDeletedEvent::class,
function (NodeDeletedEvent $event) use ($fileActions) {
$fileActions->delete($event);
}
);
+2 -2
View File
@@ -9,7 +9,7 @@
<name>Cloud Federation API</name>
<summary>Enable clouds to communicate with each other and exchange data</summary>
<description>The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.</description>
<version>1.13.0</version>
<version>1.14.0</version>
<licence>agpl</licence>
<author>Bjoern Schiessle</author>
<namespace>CloudFederationAPI</namespace>
@@ -19,6 +19,6 @@
<category>integration</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="30" max-version="30"/>
<nextcloud min-version="31" max-version="31"/>
</dependencies>
</info>
+2 -2
View File
@@ -2,7 +2,7 @@ OC.L10N.register(
"cloud_federation_api",
{
"Cloud Federation API" : "Ligeann API Comhdhéanta na Scamaill",
"Enable clouds to communicate with each other and exchange data" : "Cumasaigh scamaill cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cuireann API Cloud Federation ar chumas cásanna éagsúla Nextcloud cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú."
"Enable clouds to communicate with each other and exchange data" : "Lig dóimhneacht a chur ar chumas na scamaill cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú.",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Ligeann API Comhdhéanta na Scamaill do réimse éagsúil de chásanna Nextcloud cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú."
},
"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);");
+2 -2
View File
@@ -1,6 +1,6 @@
{ "translations": {
"Cloud Federation API" : "Ligeann API Comhdhéanta na Scamaill",
"Enable clouds to communicate with each other and exchange data" : "Cumasaigh scamaill cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Cuireann API Cloud Federation ar chumas cásanna éagsúla Nextcloud cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú."
"Enable clouds to communicate with each other and exchange data" : "Lig dóimhneacht a chur ar chumas na scamaill cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú.",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "Ligeann API Comhdhéanta na Scamaill do réimse éagsúil de chásanna Nextcloud cumarsáid a dhéanamh lena chéile agus sonraí a mhalartú."
},"pluralForm" :"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);"
}
-8
View File
@@ -1,8 +0,0 @@
OC.L10N.register(
"cloud_federation_api",
{
"Cloud Federation API" : "بۇلۇت فېدېراتسىيەسى API",
"Enable clouds to communicate with each other and exchange data" : "بۇلۇتلارنىڭ ئۆز-ئارا ئالاقە قىلىشى ۋە سانلىق مەلۇمات ئالماشتۇرۇشىنى قوزغىتىڭ",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "بۇلۇت فېدېراتسىيەسى API ھەر خىل Nextcloud مىساللىرىنى ئۆز-ئارا ئالاقە قىلىش ۋە سانلىق مەلۇمات ئالماشتۇرۇش ئىمكانىيىتىگە ئىگە قىلىدۇ."
},
"nplurals=2; plural=(n != 1);");
-6
View File
@@ -1,6 +0,0 @@
{ "translations": {
"Cloud Federation API" : "بۇلۇت فېدېراتسىيەسى API",
"Enable clouds to communicate with each other and exchange data" : "بۇلۇتلارنىڭ ئۆز-ئارا ئالاقە قىلىشى ۋە سانلىق مەلۇمات ئالماشتۇرۇشىنى قوزغىتىڭ",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "بۇلۇت فېدېراتسىيەسى API ھەر خىل Nextcloud مىساللىرىنى ئۆز-ئارا ئالاقە قىلىش ۋە سانلىق مەلۇمات ئالماشتۇرۇش ئىمكانىيىتىگە ئىگە قىلىدۇ."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+2 -2
View File
@@ -1,8 +1,8 @@
OC.L10N.register(
"cloud_federation_api",
{
"Cloud Federation API" : "雲端聯 API",
"Cloud Federation API" : "雲端聯 API",
"Enable clouds to communicate with each other and exchange data" : "讓雲端可互相通訊並交換資料",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "雲端聯 API 讓多個 Nextcloud 實體之間,可以互相通訊並交換資料。"
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "雲端聯 API 讓多個 Nextcloud 站台可以互相通訊並交換資料。"
},
"nplurals=1; plural=0;");
+2 -2
View File
@@ -1,6 +1,6 @@
{ "translations": {
"Cloud Federation API" : "雲端聯 API",
"Cloud Federation API" : "雲端聯 API",
"Enable clouds to communicate with each other and exchange data" : "讓雲端可互相通訊並交換資料",
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "雲端聯 API 讓多個 Nextcloud 實體之間,可以互相通訊並交換資料。"
"The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "雲端聯 API 讓多個 Nextcloud 站台可以互相通訊並交換資料。"
},"pluralForm" :"nplurals=1; plural=0;"
}
@@ -55,8 +55,8 @@ class Capabilities implements ICapability {
$resource = $this->provider->createNewResourceType();
$resource->setName('file')
->setShareTypes(['user', 'group'])
->setProtocols(['webdav' => '/public.php/webdav/']);
->setShareTypes(['user', 'group'])
->setProtocols(['webdav' => '/public.php/webdav/']);
$this->provider->addResourceType($resource);
@@ -71,6 +71,7 @@ class RequestHandlerController extends Controller {
* @param string $resourceType 'file', 'calendar',...
*
* @return JSONResponse<Http::STATUS_CREATED, CloudFederationAPIAddShare, array{}>|JSONResponse<Http::STATUS_BAD_REQUEST, CloudFederationAPIValidationError, array{}>|JSONResponse<Http::STATUS_NOT_IMPLEMENTED, CloudFederationAPIError, array{}>
*
* 201: The notification was successfully received. The display name of the recipient might be returned in the body
* 400: Bad request due to invalid parameters, e.g. when `shareWith` is not found or required properties are missing
* 501: Share type or the resource type is not supported
@@ -196,6 +197,7 @@ class RequestHandlerController extends Controller {
* @param array<string, mixed>|null $notification The actual payload of the notification
*
* @return JSONResponse<Http::STATUS_CREATED, array<string, mixed>, array{}>|JSONResponse<Http::STATUS_BAD_REQUEST, CloudFederationAPIValidationError, array{}>|JSONResponse<Http::STATUS_FORBIDDEN|Http::STATUS_NOT_IMPLEMENTED, CloudFederationAPIError, array{}>
*
* 201: The notification was successfully received
* 400: Bad request due to invalid parameters, e.g. when `type` is invalid or missing
* 403: Getting resource is not allowed
+2 -2
View File
@@ -10,7 +10,7 @@
<name>Comments</name>
<summary>Files app plugin to add comments to files</summary>
<description>Files app plugin to add comments to files</description>
<version>1.20.1</version>
<version>1.21.0</version>
<licence>agpl</licence>
<author>Arthur Schiwon</author>
<author>Vincent Petry</author>
@@ -21,7 +21,7 @@
<category>social</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="30" max-version="30"/>
<nextcloud min-version="31" max-version="31"/>
</dependencies>
<activity>
+2 -2
View File
@@ -19,12 +19,12 @@ OC.L10N.register(
"New comment" : "تعليق جديد",
"Write a comment …" : "أكتُب تعليق ...",
"Post comment" : "أضف تعليق",
"@ for mentions, : for emoji, / for smart picker" : "@ للإشارات : للإيموجي / للاقط الذكي",
"@ for mentions, : for emoji, / for smart picker" : "@ للإشارات، : للإيموجي، / للاقط الذكي",
"Could not reload comments" : "تعذّرت إعادة تحميل التعليقات",
"No comments yet, start the conversation!" : "لا توجد تعليقات, ابدأ النقاش الآن!",
"No more messages" : "لامزيد من الرسائل",
"Retry" : "أعد المحاولة",
"Failed to mark comments as read" : "فشل في تعيين ملاحظات كمقرؤة",
"Failed to mark comments as read" : "إخفاق في تعيين ملاحظات كمقرؤة",
"Unable to load the comments list" : "تعذر تحميل قائمة التعليقات",
"_1 new comment_::_{unread} new comments_" : ["1 تعليق جديد","1 تعليق جديد","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة"],
"Comment" : "تعليق",
+2 -2
View File
@@ -17,12 +17,12 @@
"New comment" : "تعليق جديد",
"Write a comment …" : "أكتُب تعليق ...",
"Post comment" : "أضف تعليق",
"@ for mentions, : for emoji, / for smart picker" : "@ للإشارات : للإيموجي / للاقط الذكي",
"@ for mentions, : for emoji, / for smart picker" : "@ للإشارات، : للإيموجي، / للاقط الذكي",
"Could not reload comments" : "تعذّرت إعادة تحميل التعليقات",
"No comments yet, start the conversation!" : "لا توجد تعليقات, ابدأ النقاش الآن!",
"No more messages" : "لامزيد من الرسائل",
"Retry" : "أعد المحاولة",
"Failed to mark comments as read" : "فشل في تعيين ملاحظات كمقرؤة",
"Failed to mark comments as read" : "إخفاق في تعيين ملاحظات كمقرؤة",
"Unable to load the comments list" : "تعذر تحميل قائمة التعليقات",
"_1 new comment_::_{unread} new comments_" : ["1 تعليق جديد","1 تعليق جديد","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة","{unread} تعليقات جديدة"],
"Comment" : "تعليق",
-1
View File
@@ -10,7 +10,6 @@ OC.L10N.register(
"{author} commented on {file}" : "{author} okomentoval(a) {file}",
"<strong>Comments</strong> for files" : "<strong>Komentáře</strong> k souborům",
"Files" : "Soubory",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od účtu, který byl později smazán",
"{user} mentioned you in a comment on \"{file}\"" : "{user} vás zmínil(a) v komentáři u „{file}“",
"Files app plugin to add comments to files" : "Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům",
"Edit comment" : "Upravit komentář",
-1
View File
@@ -8,7 +8,6 @@
"{author} commented on {file}" : "{author} okomentoval(a) {file}",
"<strong>Comments</strong> for files" : "<strong>Komentáře</strong> k souborům",
"Files" : "Soubory",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od účtu, který byl později smazán",
"{user} mentioned you in a comment on \"{file}\"" : "{user} vás zmínil(a) v komentáři u „{file}“",
"Files app plugin to add comments to files" : "Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům",
"Edit comment" : "Upravit komentář",
+1 -1
View File
@@ -11,7 +11,7 @@ OC.L10N.register(
"<strong>Comments</strong> for files" : "<strong>Tuairimí</strong> le haghaidh comhaid",
"Files" : "Comhaid",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Luadh thú ar \"{file}\", i nóta tráchta ó chuntas a scriosadh ó shin",
"{user} mentioned you in a comment on \"{file}\"" : "Luaigh {user} tú i nóta tráchta ar \"{file}\"",
"{user} mentioned you in a comment on \"{file}\"" : "Luaigh {úsáideoir} tú i nóta tráchta ar \"{file}\"",
"Files app plugin to add comments to files" : "Breiseán aip Comhaid chun tuairimí a chur le comhaid",
"Edit comment" : "Cuir trácht in eagar",
"Delete comment" : "Scrios nóta tráchta",
+1 -1
View File
@@ -9,7 +9,7 @@
"<strong>Comments</strong> for files" : "<strong>Tuairimí</strong> le haghaidh comhaid",
"Files" : "Comhaid",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Luadh thú ar \"{file}\", i nóta tráchta ó chuntas a scriosadh ó shin",
"{user} mentioned you in a comment on \"{file}\"" : "Luaigh {user} tú i nóta tráchta ar \"{file}\"",
"{user} mentioned you in a comment on \"{file}\"" : "Luaigh {úsáideoir} tú i nóta tráchta ar \"{file}\"",
"Files app plugin to add comments to files" : "Breiseán aip Comhaid chun tuairimí a chur le comhaid",
"Edit comment" : "Cuir trácht in eagar",
"Delete comment" : "Scrios nóta tráchta",
+1 -1
View File
@@ -23,7 +23,7 @@ OC.L10N.register(
"Could not reload comments" : "Non foi posíbel volver cargar os comentarios",
"No comments yet, start the conversation!" : "Aínda non hai comentarios, comeza a conversa!",
"No more messages" : "Non hai máis mensaxes",
"Retry" : "Volver tentar",
"Retry" : "Tentar de novo",
"Failed to mark comments as read" : "Produciuse un fallo ao marcar os comentarios como lidos",
"Unable to load the comments list" : "Non é posíbel cargar a lista de comentarios",
"_1 new comment_::_{unread} new comments_" : ["1 comentario novo","{unread} comentarios novos"],
+1 -1
View File
@@ -21,7 +21,7 @@
"Could not reload comments" : "Non foi posíbel volver cargar os comentarios",
"No comments yet, start the conversation!" : "Aínda non hai comentarios, comeza a conversa!",
"No more messages" : "Non hai máis mensaxes",
"Retry" : "Volver tentar",
"Retry" : "Tentar de novo",
"Failed to mark comments as read" : "Produciuse un fallo ao marcar os comentarios como lidos",
"Unable to load the comments list" : "Non é posíbel cargar a lista de comentarios",
"_1 new comment_::_{unread} new comments_" : ["1 comentario novo","{unread} comentarios novos"],
+1 -1
View File
@@ -3,7 +3,7 @@ OC.L10N.register(
{
"Comments" : "Komentari",
"You commented" : "Vi ste komentirali",
"{author} commented" : "{author} je komentirao",
"{author} commented" : "{autor} je komentirao",
"You commented on %1$s" : "Vi ste komentirali %1$s",
"You commented on {file}" : "Komentirali ste {file}",
"%1$s commented on %2$s" : "%1$s je komentirao %2$s",
+1 -1
View File
@@ -1,7 +1,7 @@
{ "translations": {
"Comments" : "Komentari",
"You commented" : "Vi ste komentirali",
"{author} commented" : "{author} je komentirao",
"{author} commented" : "{autor} je komentirao",
"You commented on %1$s" : "Vi ste komentirali %1$s",
"You commented on {file}" : "Komentirali ste {file}",
"%1$s commented on %2$s" : "%1$s je komentirao %2$s",
+4 -3
View File
@@ -3,13 +3,13 @@ OC.L10N.register(
{
"Comments" : "Komentar",
"You commented" : "Anda berkomentar",
"{author} commented" : "{author} berkomentar",
"{author} commented" : "{Pengarang} berkomentar",
"You commented on %1$s" : "Anda berkomentar pada %1$s",
"You commented on {file}" : "Anda berkomentar pada {file} ",
"%1$s commented on %2$s" : "%1$s dikomentari pada %2$s",
"{author} commented on {file}" : "{author} berkomentar pada {file}",
"{author} commented on {file}" : "{pengarang} berkomentar pada {file}",
"<strong>Comments</strong> for files" : "<strong>komentar</strong> pada file",
"{user} mentioned you in a comment on \"{file}\"" : "{user} menyebut Anda dalam sebuah komentar pada \"{file}\" ",
"{user} mentioned you in a comment on \"{file}\"" : "{pengguna} menyebut Anda dalam sebuah komentar pada \"{file}\" ",
"Files app plugin to add comments to files" : "Plugin aplikasi file untuk menambah komentar pada file",
"Edit comment" : "Sunting komentar",
"Delete comment" : "Hapus komentar",
@@ -19,6 +19,7 @@ OC.L10N.register(
"No more messages" : "Tidak ada pesan lagi",
"Retry" : "Ulangi",
"Unable to load the comments list" : "Tidak dapat memuat daftar komentar",
"_1 new comment_::_{unread} new comments_" : ["komentar baru {belum terbaca}"],
"Comment" : "Komentar",
"An error occurred while trying to edit the comment" : "Terjadi kesalahan ketika mencoba menyunting komentar",
"Comment deleted" : "Komentar dihapus",
+4 -3
View File
@@ -1,13 +1,13 @@
{ "translations": {
"Comments" : "Komentar",
"You commented" : "Anda berkomentar",
"{author} commented" : "{author} berkomentar",
"{author} commented" : "{Pengarang} berkomentar",
"You commented on %1$s" : "Anda berkomentar pada %1$s",
"You commented on {file}" : "Anda berkomentar pada {file} ",
"%1$s commented on %2$s" : "%1$s dikomentari pada %2$s",
"{author} commented on {file}" : "{author} berkomentar pada {file}",
"{author} commented on {file}" : "{pengarang} berkomentar pada {file}",
"<strong>Comments</strong> for files" : "<strong>komentar</strong> pada file",
"{user} mentioned you in a comment on \"{file}\"" : "{user} menyebut Anda dalam sebuah komentar pada \"{file}\" ",
"{user} mentioned you in a comment on \"{file}\"" : "{pengguna} menyebut Anda dalam sebuah komentar pada \"{file}\" ",
"Files app plugin to add comments to files" : "Plugin aplikasi file untuk menambah komentar pada file",
"Edit comment" : "Sunting komentar",
"Delete comment" : "Hapus komentar",
@@ -17,6 +17,7 @@
"No more messages" : "Tidak ada pesan lagi",
"Retry" : "Ulangi",
"Unable to load the comments list" : "Tidak dapat memuat daftar komentar",
"_1 new comment_::_{unread} new comments_" : ["komentar baru {belum terbaca}"],
"Comment" : "Komentar",
"An error occurred while trying to edit the comment" : "Terjadi kesalahan ketika mencoba menyunting komentar",
"Comment deleted" : "Komentar dihapus",
+1 -1
View File
@@ -26,7 +26,7 @@ OC.L10N.register(
"Retry" : "Prøv igjen",
"Failed to mark comments as read" : "Markering av kommentarer som lest feilet",
"Unable to load the comments list" : "Kan ikke laste inn kommentarlisten",
"_1 new comment_::_{unread} new comments_" : ["[uleste] nye kommentarer","{unread} nye kommentarer"],
"_1 new comment_::_{unread} new comments_" : ["[uleste] nye kommentarer","{uleste} nye kommentarer"],
"Comment" : "Kommentar",
"An error occurred while trying to edit the comment" : "Det oppsto en feil under forsøk på å redigere kommentaren",
"Comment deleted" : "Kommentar slettet",
+1 -1
View File
@@ -24,7 +24,7 @@
"Retry" : "Prøv igjen",
"Failed to mark comments as read" : "Markering av kommentarer som lest feilet",
"Unable to load the comments list" : "Kan ikke laste inn kommentarlisten",
"_1 new comment_::_{unread} new comments_" : ["[uleste] nye kommentarer","{unread} nye kommentarer"],
"_1 new comment_::_{unread} new comments_" : ["[uleste] nye kommentarer","{uleste} nye kommentarer"],
"Comment" : "Kommentar",
"An error occurred while trying to edit the comment" : "Det oppsto en feil under forsøk på å redigere kommentaren",
"Comment deleted" : "Kommentar slettet",
-2
View File
@@ -15,9 +15,7 @@ OC.L10N.register(
"Edit comment" : "Bewerk reactie",
"Delete comment" : "Verwijder reactie",
"Cancel edit" : "Annuleer bewerking",
"New comment" : "Nieuwe reactie",
"Post comment" : "Plaats reactie",
"@ for mentions, : for emoji, / for smart picker" : "@ voor vermeldingen, : voor emoji, / voor smart picker",
"No comments yet, start the conversation!" : "Nog geen reacties, start de discussie!",
"No more messages" : "Geen berichten meer",
"Retry" : "Opnieuw proberen",
-2
View File
@@ -13,9 +13,7 @@
"Edit comment" : "Bewerk reactie",
"Delete comment" : "Verwijder reactie",
"Cancel edit" : "Annuleer bewerking",
"New comment" : "Nieuwe reactie",
"Post comment" : "Plaats reactie",
"@ for mentions, : for emoji, / for smart picker" : "@ voor vermeldingen, : voor emoji, / voor smart picker",
"No comments yet, start the conversation!" : "Nog geen reacties, start de discussie!",
"No more messages" : "Geen berichten meer",
"Retry" : "Opnieuw proberen",
-1
View File
@@ -14,7 +14,6 @@ OC.L10N.register(
"Edit comment" : "Modìfica cummentu",
"Delete comment" : "Cantzella cummentu",
"Cancel edit" : "Annulla modìfica",
"New comment" : "Cummentu nou",
"Post comment" : "Pùblica cummentu",
"No comments yet, start the conversation!" : "Ancora perunu cummentu, cumintza sa cunversatzione!",
"No more messages" : "Perunu àteru messàgiu",
-1
View File
@@ -12,7 +12,6 @@
"Edit comment" : "Modìfica cummentu",
"Delete comment" : "Cantzella cummentu",
"Cancel edit" : "Annulla modìfica",
"New comment" : "Cummentu nou",
"Post comment" : "Pùblica cummentu",
"No comments yet, start the conversation!" : "Ancora perunu cummentu, cumintza sa cunversatzione!",
"No more messages" : "Perunu àteru messàgiu",
+1 -1
View File
@@ -9,7 +9,7 @@ OC.L10N.register(
"%1$s commented on %2$s" : "%1$s napiše opombo na %2$s",
"{author} commented on {file}" : "{author} napiše opombo na {file}",
"<strong>Comments</strong> for files" : "Vpisane so <strong>opombe</strong> k datotekam",
"Files" : "Datoteke",
"Files" : "Datoteke s podpisi",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Uporabnik, ki je sicer že izbrisan, vas omenja v opombi k datoteki »{file}«.",
"{user} mentioned you in a comment on \"{file}\"" : "{user} vas omeni v opombi k datoteki »{file}«",
"Files app plugin to add comments to files" : "Vstavek programa Datoteke za dodajanje opomb k datotekam",
+1 -1
View File
@@ -7,7 +7,7 @@
"%1$s commented on %2$s" : "%1$s napiše opombo na %2$s",
"{author} commented on {file}" : "{author} napiše opombo na {file}",
"<strong>Comments</strong> for files" : "Vpisane so <strong>opombe</strong> k datotekam",
"Files" : "Datoteke",
"Files" : "Datoteke s podpisi",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "Uporabnik, ki je sicer že izbrisan, vas omenja v opombi k datoteki »{file}«.",
"{user} mentioned you in a comment on \"{file}\"" : "{user} vas omeni v opombi k datoteki »{file}«",
"Files app plugin to add comments to files" : "Vstavek programa Datoteke za dodajanje opomb k datotekam",
+3 -32
View File
@@ -1,36 +1,7 @@
OC.L10N.register(
"comments",
{
"Comments" : "باھا",
"You commented" : "باھا بەردىڭىز",
"{author} commented" : "{ئاپتور} باھا بەردى",
"You commented on %1$s" : "سىز% 1 $ s غا باھا بەردىڭىز",
"You commented on {file}" : "سىز {ھۆججەت} گە باھا بەردىڭىز",
"%1$s commented on %2$s" : "% 1 $ s% 2 $ s غا باھا بەردى",
"{author} commented on {file}" : "{ئاپتور} ھۆججەتكە باھا بەردى}",
"<strong>Comments</strong> for files" : "ھۆججەتلەر ئۈچۈن <strong> باھا </ strong>",
"Files" : "ھۆججەتلەر",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "سىز ئۆچۈرۈلگەن ھېساباتنىڭ ئىزاھاتىدا سىز «{ھۆججەت}» دە تىلغا ئېلىندى",
"{user} mentioned you in a comment on \"{file}\"" : "{user} سىزنى \"{ھۆججەت}\" دىكى باھادا تىلغا ئالدى",
"Files app plugin to add comments to files" : "ھۆججەتلەرگە باھا قوشۇش ئۈچۈن ھۆججەت قىستۇرمىسى",
"Edit comment" : "باھا تەھرىرلەش",
"Delete comment" : "باھانى ئۆچۈرۈڭ",
"Cancel edit" : "تەھرىرلەشنى ئەمەلدىن قالدۇرۇڭ",
"New comment" : "يېڭى باھا",
"Write a comment …" : "باھا يېزىڭ…",
"Post comment" : "ئىنكاس يېزىڭ",
"@ for mentions, : for emoji, / for smart picker" : "@ تىلغا ئېلىش ئۈچۈن ،: emoji ئۈچۈن ، / ئەقلىي ئىقتىدارلىق تاللىغۇچ ئۈچۈن",
"Could not reload comments" : "ئىنكاسلارنى قايتا يۈكلىيەلمىدى",
"No comments yet, start the conversation!" : "تېخى باھا يوق ، سۆھبەتنى باشلاڭ!",
"No more messages" : "باشقا ئۇچۇر يوق",
"Retry" : "قايتا سىناڭ",
"Failed to mark comments as read" : "ئىنكاسلارنى ئوقۇشقا بەلگە قويمىدى",
"Unable to load the comments list" : "باھا تىزىملىكىنى يۈكلىيەلمىدى",
"Comment" : "باھا",
"An error occurred while trying to edit the comment" : "باھانى تەھرىرلىمەكچى بولغاندا خاتالىق كۆرۈلدى",
"Comment deleted" : "باھا ئۆچۈرۈلدى",
"An error occurred while trying to delete the comment" : "باھانى ئۆچۈرمەكچى بولغاندا خاتالىق كۆرۈلدى",
"An error occurred while trying to create the comment" : "باھا قۇرماقچى بولغاندا خاتالىق كۆرۈلدى",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "سىز ئۆچۈرۈلگەن ئىشلەتكۈچىنىڭ ئىزاھاتىدا سىز «{ھۆججەت}» دە تىلغا ئېلىندى"
"Cancel" : "ۋاز كەچ",
"Save" : "ساقلا"
},
"nplurals=2; plural=(n != 1);");
"nplurals=1; plural=0;");
+3 -32
View File
@@ -1,34 +1,5 @@
{ "translations": {
"Comments" : "باھا",
"You commented" : "باھا بەردىڭىز",
"{author} commented" : "{ئاپتور} باھا بەردى",
"You commented on %1$s" : "سىز% 1 $ s غا باھا بەردىڭىز",
"You commented on {file}" : "سىز {ھۆججەت} گە باھا بەردىڭىز",
"%1$s commented on %2$s" : "% 1 $ s% 2 $ s غا باھا بەردى",
"{author} commented on {file}" : "{ئاپتور} ھۆججەتكە باھا بەردى}",
"<strong>Comments</strong> for files" : "ھۆججەتلەر ئۈچۈن <strong> باھا </ strong>",
"Files" : "ھۆججەتلەر",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "سىز ئۆچۈرۈلگەن ھېساباتنىڭ ئىزاھاتىدا سىز «{ھۆججەت}» دە تىلغا ئېلىندى",
"{user} mentioned you in a comment on \"{file}\"" : "{user} سىزنى \"{ھۆججەت}\" دىكى باھادا تىلغا ئالدى",
"Files app plugin to add comments to files" : "ھۆججەتلەرگە باھا قوشۇش ئۈچۈن ھۆججەت قىستۇرمىسى",
"Edit comment" : "باھا تەھرىرلەش",
"Delete comment" : "باھانى ئۆچۈرۈڭ",
"Cancel edit" : "تەھرىرلەشنى ئەمەلدىن قالدۇرۇڭ",
"New comment" : "يېڭى باھا",
"Write a comment …" : "باھا يېزىڭ…",
"Post comment" : "ئىنكاس يېزىڭ",
"@ for mentions, : for emoji, / for smart picker" : "@ تىلغا ئېلىش ئۈچۈن ،: emoji ئۈچۈن ، / ئەقلىي ئىقتىدارلىق تاللىغۇچ ئۈچۈن",
"Could not reload comments" : "ئىنكاسلارنى قايتا يۈكلىيەلمىدى",
"No comments yet, start the conversation!" : "تېخى باھا يوق ، سۆھبەتنى باشلاڭ!",
"No more messages" : "باشقا ئۇچۇر يوق",
"Retry" : "قايتا سىناڭ",
"Failed to mark comments as read" : "ئىنكاسلارنى ئوقۇشقا بەلگە قويمىدى",
"Unable to load the comments list" : "باھا تىزىملىكىنى يۈكلىيەلمىدى",
"Comment" : "باھا",
"An error occurred while trying to edit the comment" : "باھانى تەھرىرلىمەكچى بولغاندا خاتالىق كۆرۈلدى",
"Comment deleted" : "باھا ئۆچۈرۈلدى",
"An error occurred while trying to delete the comment" : "باھانى ئۆچۈرمەكچى بولغاندا خاتالىق كۆرۈلدى",
"An error occurred while trying to create the comment" : "باھا قۇرماقچى بولغاندا خاتالىق كۆرۈلدى",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "سىز ئۆچۈرۈلگەن ئىشلەتكۈچىنىڭ ئىزاھاتىدا سىز «{ھۆججەت}» دە تىلغا ئېلىندى"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
"Cancel" : "ۋاز كەچ",
"Save" : "ساقلا"
},"pluralForm" :"nplurals=1; plural=0;"
}
+5 -5
View File
@@ -12,26 +12,26 @@ OC.L10N.register(
"Files" : "檔案",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "一個已刪除的帳號在「{file}」的留言中提及您。",
"{user} mentioned you in a comment on \"{file}\"" : "{user} 在「{file}」的留言中提到您",
"Files app plugin to add comments to files" : "用於對檔案加入留言的檔案應用程式插入式元件",
"Files app plugin to add comments to files" : "用於對檔案加入留言的檔案應用程式擴充元件",
"Edit comment" : "編輯留言",
"Delete comment" : "刪除留言",
"Cancel edit" : "取消編輯",
"New comment" : "新留言",
"Write a comment …" : "編寫留言……",
"Post comment" : "張貼留言",
"@ for mentions, : for emoji, / for smart picker" : "@ 表示提及: 表示表情符號/ 表示智慧型選取",
"@ for mentions, : for emoji, / for smart picker" : "@ 表示提及: 表示表情符號/ 表示智慧型選取程式",
"Could not reload comments" : "無法重新載入留言",
"No comments yet, start the conversation!" : "尚無留言,開始討論!",
"No more messages" : "沒有其他訊息",
"No more messages" : "沒有更多訊息",
"Retry" : "重試",
"Failed to mark comments as read" : "無法將留言標記為已讀",
"Unable to load the comments list" : "無法載入留言列表",
"_1 new comment_::_{unread} new comments_" : ["{unread} 則新留言"],
"Comment" : "留言",
"An error occurred while trying to edit the comment" : "嘗試編輯留言時發生錯誤",
"An error occurred while trying to edit the comment" : "嘗試編輯留言時錯誤",
"Comment deleted" : "留言已刪除",
"An error occurred while trying to delete the comment" : "嘗試刪除留言時發生錯誤",
"An error occurred while trying to create the comment" : "嘗試建立留言時發生錯誤",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "一已被刪除的使用者在「{file}」的留言中提到您"
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "一已被刪除的使用者在「{file}」的留言中提到您"
},
"nplurals=1; plural=0;");
+5 -5
View File
@@ -10,26 +10,26 @@
"Files" : "檔案",
"You were mentioned on \"{file}\", in a comment by an account that has since been deleted" : "一個已刪除的帳號在「{file}」的留言中提及您。",
"{user} mentioned you in a comment on \"{file}\"" : "{user} 在「{file}」的留言中提到您",
"Files app plugin to add comments to files" : "用於對檔案加入留言的檔案應用程式插入式元件",
"Files app plugin to add comments to files" : "用於對檔案加入留言的檔案應用程式擴充元件",
"Edit comment" : "編輯留言",
"Delete comment" : "刪除留言",
"Cancel edit" : "取消編輯",
"New comment" : "新留言",
"Write a comment …" : "編寫留言……",
"Post comment" : "張貼留言",
"@ for mentions, : for emoji, / for smart picker" : "@ 表示提及: 表示表情符號/ 表示智慧型選取",
"@ for mentions, : for emoji, / for smart picker" : "@ 表示提及: 表示表情符號/ 表示智慧型選取程式",
"Could not reload comments" : "無法重新載入留言",
"No comments yet, start the conversation!" : "尚無留言,開始討論!",
"No more messages" : "沒有其他訊息",
"No more messages" : "沒有更多訊息",
"Retry" : "重試",
"Failed to mark comments as read" : "無法將留言標記為已讀",
"Unable to load the comments list" : "無法載入留言列表",
"_1 new comment_::_{unread} new comments_" : ["{unread} 則新留言"],
"Comment" : "留言",
"An error occurred while trying to edit the comment" : "嘗試編輯留言時發生錯誤",
"An error occurred while trying to edit the comment" : "嘗試編輯留言時錯誤",
"Comment deleted" : "留言已刪除",
"An error occurred while trying to delete the comment" : "嘗試刪除留言時發生錯誤",
"An error occurred while trying to create the comment" : "嘗試建立留言時發生錯誤",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "一已被刪除的使用者在「{file}」的留言中提到您"
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "一已被刪除的使用者在「{file}」的留言中提到您"
},"pluralForm" :"nplurals=1; plural=0;"
}
+2 -2
View File
@@ -67,7 +67,7 @@ class Listener {
$activity->setApp('comments')
->setType('comments')
->setAuthor($actor)
->setObject($event->getComment()->getObjectType(), (int) $event->getComment()->getObjectId())
->setObject($event->getComment()->getObjectType(), (int)$event->getComment()->getObjectId())
->setMessage('add_comment_message', [
'commentId' => $event->getComment()->getId(),
]);
@@ -79,7 +79,7 @@ class Listener {
$activity->setSubject('add_comment_subject', [
'actor' => $actor,
'fileId' => (int) $event->getComment()->getObjectId(),
'fileId' => (int)$event->getComment()->getObjectId(),
'filePath' => trim($path, '/'),
]);
$this->activityManager->publish($activity);
+1 -1
View File
@@ -148,7 +148,7 @@ class Provider implements IProvider {
$commentId = $messageParameters['commentId'] ?? $messageParameters[0];
try {
$comment = $this->commentsManager->get((string) $commentId);
$comment = $this->commentsManager->get((string)$commentId);
$message = $comment->getMessage();
$mentionCount = 1;
+1 -1
View File
@@ -85,7 +85,7 @@ class LegacyProvider extends Provider {
* @throws NotFoundException
*/
protected function getFileForComment(Folder $userFolder, IComment $comment): Node {
$nodes = $userFolder->getById((int) $comment->getObjectId());
$nodes = $userFolder->getById((int)$comment->getObjectId());
if (empty($nodes)) {
throw new NotFoundException('File not found');
}
@@ -2,9 +2,10 @@
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { action } from './inlineUnreadCommentsAction'
import { expect } from '@jest/globals'
import { File, Permission, View, FileAction } from '@nextcloud/files'
import { describe, expect, test, vi } from 'vitest'
import { action } from './inlineUnreadCommentsAction'
import logger from '../logger'
const view = {
@@ -29,7 +30,7 @@ describe('Inline unread comments action display name tests', () => {
expect(action.id).toBe('comments-unread')
expect(action.displayName([file], view)).toBe('')
expect(action.title!([file], view)).toBe('1 new comment')
expect(action.iconSvgInline([], view)).toBe('<svg>SvgMock</svg>')
expect(action.iconSvgInline([], view)).toMatch(/<svg.+<\/svg>/)
expect(action.enabled!([file], view)).toBe(true)
expect(action.inline!(file, view)).toBe(true)
expect(action.default).toBeUndefined()
@@ -115,8 +116,8 @@ describe('Inline unread comments action enabled tests', () => {
describe('Inline unread comments action execute tests', () => {
test('Action opens sidebar', async () => {
const openMock = jest.fn()
const setActiveTabMock = jest.fn()
const openMock = vi.fn()
const setActiveTabMock = vi.fn()
window.OCA = {
Files: {
Sidebar: {
@@ -145,8 +146,8 @@ describe('Inline unread comments action execute tests', () => {
})
test('Action handles sidebar open failure', async () => {
const openMock = jest.fn(() => { throw new Error('Mock error') })
const setActiveTabMock = jest.fn()
const openMock = vi.fn(() => { throw new Error('Mock error') })
const setActiveTabMock = vi.fn()
window.OCA = {
Files: {
Sidebar: {
@@ -155,7 +156,7 @@ describe('Inline unread comments action execute tests', () => {
},
},
}
jest.spyOn(logger, 'error').mockImplementation(() => jest.fn())
vi.spyOn(logger, 'error').mockImplementation(() => vi.fn())
const file = new File({
id: 1,
@@ -11,9 +11,9 @@ use OCP\Comments\ICommentsManager;
use Test\TestCase;
class CommentersSorterTest extends TestCase {
/** @var ICommentsManager|\PHPUnit\Framework\MockObject\MockObject */
/** @var ICommentsManager|\PHPUnit\Framework\MockObject\MockObject */
protected $commentsManager;
/** @var CommentersSorter */
/** @var CommentersSorter */
protected $sorter;
protected function setUp(): void {
@@ -13,7 +13,7 @@ use OCP\Comments\IComment;
use Test\TestCase;
class EventHandlerTest extends TestCase {
/** @var CommentsEventListener */
/** @var CommentsEventListener */
protected $eventHandler;
/** @var ActivityListener|\PHPUnit\Framework\MockObject\MockObject */
@@ -26,7 +26,7 @@ class ListenerTest extends TestCase {
/** @var IURLGenerator|\PHPUnit\Framework\MockObject\MockObject */
protected $urlGenerator;
/** @var Listener */
/** @var Listener */
protected $listener;
protected function setUp(): void {
+8 -2
View File
@@ -9,7 +9,7 @@
<name>Contacts Interaction</name>
<summary>Manages interaction between accounts and contacts</summary>
<description>Collect data about accounts and contacts interactions and provide an address book for the data</description>
<version>1.11.0</version>
<version>1.12.0</version>
<licence>agpl</licence>
<author>Christoph Wurst</author>
<author homepage="https://github.com/nextcloud/groupware">Nextcloud Groupware Team</author>
@@ -21,7 +21,7 @@
<category>social</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="30" max-version="30"/>
<nextcloud min-version="31" max-version="31"/>
</dependencies>
<background-jobs>
<job>OCA\ContactsInteraction\BackgroundJob\CleanupJob</job>
@@ -30,5 +30,11 @@
<address-book-plugins>
<plugin>OCA\ContactsInteraction\AddressBookProvider</plugin>
</address-book-plugins>
<plugins>
<plugin>OCA\ContactsInteraction\DAV\Plugin</plugin>
</plugins>
</sabre>
<settings>
<personal>OCA\ContactsInteraction\Settings\Personal</personal>
</settings>
</info>
@@ -0,0 +1,30 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2023 Thomas Citharel <nextcloud@tcit.fr>
*
* @author Thomas Citharel <nextcloud@tcit.fr>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
return [
'ocs' => [
['name' => 'config#disable', 'url' => '/config/user/disable', 'verb' => 'POST'],
],
];
@@ -12,9 +12,12 @@ return array(
'OCA\\ContactsInteraction\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php',
'OCA\\ContactsInteraction\\BackgroundJob\\CleanupJob' => $baseDir . '/../lib/BackgroundJob/CleanupJob.php',
'OCA\\ContactsInteraction\\Card' => $baseDir . '/../lib/Card.php',
'OCA\\ContactsInteraction\\DAV\\Plugin' => $baseDir . '/../lib/DAV/Plugin.php',
'OCA\\ContactsInteraction\\Db\\CardSearchDao' => $baseDir . '/../lib/Db/CardSearchDao.php',
'OCA\\ContactsInteraction\\Db\\RecentContact' => $baseDir . '/../lib/Db/RecentContact.php',
'OCA\\ContactsInteraction\\Db\\RecentContactMapper' => $baseDir . '/../lib/Db/RecentContactMapper.php',
'OCA\\ContactsInteraction\\Listeners\\ContactInteractionListener' => $baseDir . '/../lib/Listeners/ContactInteractionListener.php',
'OCA\\ContactsInteraction\\Listeners\\UserPreferenceListener' => $baseDir . '/../lib/Listeners/UserPreferenceListener.php',
'OCA\\ContactsInteraction\\Migration\\Version010000Date20200304152605' => $baseDir . '/../lib/Migration/Version010000Date20200304152605.php',
'OCA\\ContactsInteraction\\Settings\\Personal' => $baseDir . '/../lib/Settings/Personal.php',
);
@@ -27,11 +27,14 @@ class ComposerStaticInitContactsInteraction
'OCA\\ContactsInteraction\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php',
'OCA\\ContactsInteraction\\BackgroundJob\\CleanupJob' => __DIR__ . '/..' . '/../lib/BackgroundJob/CleanupJob.php',
'OCA\\ContactsInteraction\\Card' => __DIR__ . '/..' . '/../lib/Card.php',
'OCA\\ContactsInteraction\\DAV\\Plugin' => __DIR__ . '/..' . '/../lib/DAV/Plugin.php',
'OCA\\ContactsInteraction\\Db\\CardSearchDao' => __DIR__ . '/..' . '/../lib/Db/CardSearchDao.php',
'OCA\\ContactsInteraction\\Db\\RecentContact' => __DIR__ . '/..' . '/../lib/Db/RecentContact.php',
'OCA\\ContactsInteraction\\Db\\RecentContactMapper' => __DIR__ . '/..' . '/../lib/Db/RecentContactMapper.php',
'OCA\\ContactsInteraction\\Listeners\\ContactInteractionListener' => __DIR__ . '/..' . '/../lib/Listeners/ContactInteractionListener.php',
'OCA\\ContactsInteraction\\Listeners\\UserPreferenceListener' => __DIR__ . '/..' . '/../lib/Listeners/UserPreferenceListener.php',
'OCA\\ContactsInteraction\\Migration\\Version010000Date20200304152605' => __DIR__ . '/..' . '/../lib/Migration/Version010000Date20200304152605.php',
'OCA\\ContactsInteraction\\Settings\\Personal' => __DIR__ . '/..' . '/../lib/Settings/Personal.php',
);
public static function getInitializer(ClassLoader $loader)
-2
View File
@@ -3,8 +3,6 @@ OC.L10N.register(
{
"Recently contacted" : "Contactes recents",
"Contacts Interaction" : "Interacció amb contactes",
"Manages interaction between accounts and contacts" : "Gestiona la interacció entre comptes i contactes",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Reculliu dades sobre comptes i interaccions de contactes i proporcioneu una llibreta d'adreces per a les dades",
"Manages interaction between users and contacts" : "Administra la interacció entre usuaris i contactes",
"Collect data about user and contacts interactions and provide an address book for the data" : "Recopileu dades sobre les interaccions d'usuaris i contactes i proporcioneu una llibreta d'adreces amb les dades"
},
-2
View File
@@ -1,8 +1,6 @@
{ "translations": {
"Recently contacted" : "Contactes recents",
"Contacts Interaction" : "Interacció amb contactes",
"Manages interaction between accounts and contacts" : "Gestiona la interacció entre comptes i contactes",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Reculliu dades sobre comptes i interaccions de contactes i proporcioneu una llibreta d'adreces per a les dades",
"Manages interaction between users and contacts" : "Administra la interacció entre usuaris i contactes",
"Collect data about user and contacts interactions and provide an address book for the data" : "Recopileu dades sobre les interaccions d'usuaris i contactes i proporcioneu una llibreta d'adreces amb les dades"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
-2
View File
@@ -3,8 +3,6 @@ OC.L10N.register(
{
"Recently contacted" : "Nedávno kontaktovaní",
"Contacts Interaction" : "Interakce s kontakty",
"Manages interaction between accounts and contacts" : "Spravuje interakci mezi účty a kontakty",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Shromažďuje data o interakcích mezi účty a kontakty a poskytuje pro tato data adresář kontaktů",
"Manages interaction between users and contacts" : "Spravuje interakci mezi uživateli a kontakty",
"Collect data about user and contacts interactions and provide an address book for the data" : "Shromažďuje data o interakcích mezi uživatelem a kontakty a poskytuje pro tato data adresář kontaktů"
},
-2
View File
@@ -1,8 +1,6 @@
{ "translations": {
"Recently contacted" : "Nedávno kontaktovaní",
"Contacts Interaction" : "Interakce s kontakty",
"Manages interaction between accounts and contacts" : "Spravuje interakci mezi účty a kontakty",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Shromažďuje data o interakcích mezi účty a kontakty a poskytuje pro tato data adresář kontaktů",
"Manages interaction between users and contacts" : "Spravuje interakci mezi uživateli a kontakty",
"Collect data about user and contacts interactions and provide an address book for the data" : "Shromažďuje data o interakcích mezi uživatelem a kontakty a poskytuje pro tato data adresář kontaktů"
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
-2
View File
@@ -3,8 +3,6 @@ OC.L10N.register(
{
"Recently contacted" : "Недавние контакты",
"Contacts Interaction" : "Взаимодействие с контактами",
"Manages interaction between accounts and contacts" : "Управляет взаимодействием между учетными записями и контактами",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Соберите данные об учетных записях и контактах, взаимодействиях и предоставьте адресную книгу для хранения этих данных",
"Manages interaction between users and contacts" : "Отслеживание взаимодейтсвей пользователей и контактов",
"Collect data about user and contacts interactions and provide an address book for the data" : "Сбор данных о взаимодействиях пользователей и контактов и создание адресных книг на основе этих данных"
},
-2
View File
@@ -1,8 +1,6 @@
{ "translations": {
"Recently contacted" : "Недавние контакты",
"Contacts Interaction" : "Взаимодействие с контактами",
"Manages interaction between accounts and contacts" : "Управляет взаимодействием между учетными записями и контактами",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "Соберите данные об учетных записях и контактах, взаимодействиях и предоставьте адресную книгу для хранения этих данных",
"Manages interaction between users and contacts" : "Отслеживание взаимодейтсвей пользователей и контактов",
"Collect data about user and contacts interactions and provide an address book for the data" : "Сбор данных о взаимодействиях пользователей и контактов и создание адресных книг на основе этих данных"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
-11
View File
@@ -1,11 +0,0 @@
OC.L10N.register(
"contactsinteraction",
{
"Recently contacted" : "يېقىندا ئالاقىلاشتى",
"Contacts Interaction" : "ئالاقىلىشىش",
"Manages interaction between accounts and contacts" : "ھېسابات ۋە ئالاقىلەر ئارىسىدىكى ئالاقىنى باشقۇرىدۇ",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "ھېسابات ۋە ئالاقىلىشىش ھەققىدىكى ئۇچۇرلارنى توپلاڭ ۋە سانلىق مەلۇمات ئۈچۈن ئادرېس دەپتىرى بىلەن تەمىنلەڭ",
"Manages interaction between users and contacts" : "ئىشلەتكۈچىلەر بىلەن ئالاقىلاشقۇچىلار ئوتتۇرىسىدىكى ئالاقىنى باشقۇرىدۇ",
"Collect data about user and contacts interactions and provide an address book for the data" : "ئىشلەتكۈچى ۋە ئالاقىلىشىش ئالاقىسى توغرىسىدىكى ئۇچۇرلارنى توپلاڭ ۋە سانلىق مەلۇمات ئۈچۈن ئادرېس دەپتىرى بىلەن تەمىنلەڭ"
},
"nplurals=2; plural=(n != 1);");
-9
View File
@@ -1,9 +0,0 @@
{ "translations": {
"Recently contacted" : "يېقىندا ئالاقىلاشتى",
"Contacts Interaction" : "ئالاقىلىشىش",
"Manages interaction between accounts and contacts" : "ھېسابات ۋە ئالاقىلەر ئارىسىدىكى ئالاقىنى باشقۇرىدۇ",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "ھېسابات ۋە ئالاقىلىشىش ھەققىدىكى ئۇچۇرلارنى توپلاڭ ۋە سانلىق مەلۇمات ئۈچۈن ئادرېس دەپتىرى بىلەن تەمىنلەڭ",
"Manages interaction between users and contacts" : "ئىشلەتكۈچىلەر بىلەن ئالاقىلاشقۇچىلار ئوتتۇرىسىدىكى ئالاقىنى باشقۇرىدۇ",
"Collect data about user and contacts interactions and provide an address book for the data" : "ئىشلەتكۈچى ۋە ئالاقىلىشىش ئالاقىسى توغرىسىدىكى ئۇچۇرلارنى توپلاڭ ۋە سانلىق مەلۇمات ئۈچۈن ئادرېس دەپتىرى بىلەن تەمىنلەڭ"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}
+1 -1
View File
@@ -6,6 +6,6 @@ OC.L10N.register(
"Manages interaction between accounts and contacts" : "管理帳號與聯絡人間的互動",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "蒐集關於帳號與聯絡人互動的資料,並提供資料的通訊錄",
"Manages interaction between users and contacts" : "管理使用者與聯絡人間的互動",
"Collect data about user and contacts interactions and provide an address book for the data" : "蒐集關於使用者與聯絡人互動的資料,並為資料提供聯絡人"
"Collect data about user and contacts interactions and provide an address book for the data" : "蒐集關於使用者與聯絡人互動的資料,並提供資料的通訊錄"
},
"nplurals=1; plural=0;");
+1 -1
View File
@@ -4,6 +4,6 @@
"Manages interaction between accounts and contacts" : "管理帳號與聯絡人間的互動",
"Collect data about accounts and contacts interactions and provide an address book for the data" : "蒐集關於帳號與聯絡人互動的資料,並提供資料的通訊錄",
"Manages interaction between users and contacts" : "管理使用者與聯絡人間的互動",
"Collect data about user and contacts interactions and provide an address book for the data" : "蒐集關於使用者與聯絡人互動的資料,並為資料提供聯絡人"
"Collect data about user and contacts interactions and provide an address book for the data" : "蒐集關於使用者與聯絡人互動的資料,並提供資料的通訊錄"
},"pluralForm" :"nplurals=1; plural=0;"
}

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