Compare commits

..

526 Commits

Author SHA1 Message Date
Josh 0de4631714 chore: normalize trailing slash handling
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-01-10 12:13:46 -05:00
Josh ff6d2fc353 refactor(Filesystem): use PathHelper for canonical normalization
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-01-09 22:22:53 -05:00
Nextcloud bot d341c2011f fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-10 00:27:12 +00:00
Raphael Gradenwitz 7eea3b7742 Merge pull request #55433 from nextcloud/ernolf/enh/http2-brotli-client
perf(client): enable HTTP/2 and brotli support in internal HTTP client
2026-01-10 01:09:17 +01:00
Raphael Gradenwitz 7c526b4de3 Merge branch 'master' into ernolf/enh/http2-brotli-client 2026-01-10 00:00:47 +01:00
Sebastian Krupinski 635e26dfdc Merge pull request #57231 from nextcloud/feat/restrict-calendar-invitation-users
feat: restrict calendar invitation participants
2026-01-09 13:42:12 -05:00
Robin Appelman c2cd236411 Merge pull request #57191 from nextcloud/dav-x-user-id
feat: also send x-user-id for dav responses
2026-01-09 18:43:36 +01:00
SebastianKrupinski acfec22652 feat: restrict calendar invitation participants
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2026-01-09 12:07:18 -05:00
Robin Appelman 328a4608aa Merge pull request #57454 from nextcloud/fix/session/handle-null-logger
fix(session): handle null logger
2026-01-09 17:51:04 +01:00
Christoph Wurst 7e188433a1 fix(session): handle null logger
Signed-off-by: Christoph Wurst <1374172+ChristophWurst@users.noreply.github.com>
2026-01-09 16:42:39 +01:00
Benjamin Gaussorgues acb3e68a93 Merge pull request #56725 from nextcloud/rakekniven-patch-3 2026-01-09 14:38:37 +01:00
nextcloud-command fbb551311e chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-09 09:24:00 +00:00
rakekniven c2ae99a668 chore(i18n): Remove strings from i18n and adapted casing
Reported at Transifex

Signed-off-by: rakekniven <2069590+rakekniven@users.noreply.github.com>
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-01-09 10:13:22 +01:00
ernolf 932523e844 style(tests): apply cs-fixer formatting to ClientTest
Signed-off-by: ernolf <raphael.gradenwitz@googlemail.com>
2026-01-09 01:29:59 +01:00
Nextcloud bot 6fd76bfa0e fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-09 00:14:00 +00:00
Raphael Gradenwitz 510c203dfe Merge branch 'master' into ernolf/enh/http2-brotli-client
Signed-off-by: Raphael Gradenwitz <39901936+ernolf@users.noreply.github.com>
2026-01-08 21:02:07 +01:00
Benjamin Gaussorgues 0514ecfb96 Merge pull request #57398 from nextcloud/release/33.0.0_beta_2 2026-01-08 17:06:21 +01:00
Benjamin Gaussorgues 91a544ef45 Merge pull request #53414 from nextcloud/fix/49584-background-worker-remove-interval 2026-01-08 15:57:05 +01:00
Louis a0c922cc7f Merge pull request #56404 from nextcloud/share-sidebar-hide-external
feat: hide "External Shares" section if no external shares can be created
2026-01-08 14:32:11 +01:00
Côme Chilliet 2da078f258 Merge pull request #55861 from nextcloud/feat/allow-decrypt-all-with-encryption-disabled
feat(encryption): Support running decrypt-all when encryption is already disabled
2026-01-08 14:19:06 +01:00
Benjamin Gaussorgues 36b0d7c189 Merge pull request #55265 from nextcloud/perf/log-slow-dns 2026-01-08 14:06:31 +01:00
Benjamin Gaussorgues fe34ea5ec7 Merge pull request #57407 from nextcloud/carl/fix-php-85-deprecation-image 2026-01-08 13:57:11 +01:00
Benjamin Gaussorgues ae250777fd Merge pull request #56899 from nextcloud/feat/noid/ocm-capabilities 2026-01-08 13:46:09 +01:00
Benjamin Gaussorgues 17aa77e29f Merge pull request #57427 from nextcloud/fix/openmetrics_classes 2026-01-08 13:45:55 +01:00
Salvatore Martire 43f2470f90 fix: use interval value in JobWorker
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2026-01-08 13:45:11 +01:00
Joas Schilling d5eab95414 Merge pull request #57428 from nextcloud/dependabot/composer/aws/aws-sdk-php-3.369.3
build(deps): bump aws/aws-sdk-php from 3.349.3 to 3.369.9
2026-01-08 13:40:04 +01:00
nextcloud-command 7e4c4f2f3c chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-08 11:54:41 +00:00
Robin Appelman de286709f8 feat: hide "External Shares" section if no external shares can be created
Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-08 11:49:02 +00:00
Andy Scherzinger d86975e9fa Merge pull request #56923 from nextcloud/fix/update-all
fix(settings): update all button only updates a single app
2026-01-08 12:48:34 +01:00
Joas Schilling 03adb7e184 build(deps): bump aws/aws-sdk-php from 3.349.3 to 3.369.9
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-08 11:52:50 +01:00
Kate 8eb24155c4 Merge pull request #56518 from nextcloud/jtr/feat-appmanager-cleanappid-log 2026-01-08 11:42:04 +01:00
Git'Fellow 377de23bf5 Merge pull request #57291 from nextcloud/fixTypoAdminAuditLog
fix(admin_audit) Fix typo in visibility log message
2026-01-08 11:41:45 +01:00
Louis 73dd45be4f Merge pull request #57289 from nextcloud/feature/54562/drop-mounts-on-full-or-provider-setup
Feature/54562/drop mounts on full or provider setup
2026-01-08 11:26:50 +01:00
Christoph Wurst adf7ea5f0b perf: log slow DNS operations
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2026-01-08 11:22:15 +01:00
Christoph Wurst cc89a2a2b8 refactor: extract slow operation logging into trait
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2026-01-08 11:22:15 +01:00
Benjamin Gaussorgues 5403284b23 Merge pull request #55293 from nextcloud/jtr/refactor-dav-quotaplugin 2026-01-08 11:18:02 +01:00
Benjamin Gaussorgues f56f747f46 Merge pull request #57245 from nextcloud/jtr/refactor-versions-DAV-plugin 2026-01-08 11:12:50 +01:00
Benjamin Gaussorgues 7a2606b894 Merge pull request #57267 from nextcloud/jtr/refactor-trashbin-sabre-plugin 2026-01-08 11:11:37 +01:00
Joas Schilling eb91d8671d Merge pull request #57348 from nextcloud/fix/adjust-public-page-footer-logic
fix: adjust public page footer logic
2026-01-08 11:10:07 +01:00
Benjamin Gaussorgues 1a5ad32063 fix(openmetrics): import right classes
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-01-08 10:39:46 +01:00
Benjamin Gaussorgues a1fbd55992 Merge pull request #57395 from nextcloud/feat/exapp-task-proc-endpoints 2026-01-08 09:52:50 +01:00
Benjamin Gaussorgues a6a320498b Merge pull request #55252 from nextcloud/chore/chunked_orphan_delete 2026-01-08 09:50:09 +01:00
Anupam Kumar 3e4e544096 feat(TaskProcessing): add endpoints for ExApp access without userId
Signed-off-by: Anupam Kumar <kyteinsky@gmail.com>
2026-01-08 11:36:08 +05:30
Nextcloud bot 1a7f2f878e fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-08 00:13:49 +00:00
nextcloud-command f6a783e07b chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-07 19:21:14 +00:00
Thomas Lamant 7436340f4c fix: update() function does not return a Promise
Signed-off-by: Thomas Lamant <tom@tmlmt.com>
2026-01-07 19:18:29 +00:00
Thomas Lamant 58c6a8387b fix: update all button only updates a single app
Signed-off-by: Thomas Lamant <tom@tmlmt.com>
2026-01-07 19:18:29 +00:00
Maxence Lange 6af64a5495 feat(ocm): event on ocm discovery and ocm request
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2026-01-07 17:54:26 -01:00
Joas Schilling 66c8f9c4dc Merge pull request #57414 from nextcloud/bugfix/noid/clean-language
fix(l10n): Fix language selection
2026-01-07 19:05:41 +01:00
Joas Schilling 52cfd57af9 Merge pull request #57413 from nextcloud/bugfix/noid/support-native-int-range
fix(controller): Support native int ranges
2026-01-07 19:05:19 +01:00
Ferdinand Thiessen 6a75cd9454 Merge pull request #57347 from nextcloud/refactor/drop-deprecated-composable
refactor(files): migrate from deprecated `useNavigation` to `activeStore`
2026-01-07 18:06:41 +01:00
Daniel Calviño Sánchez 8e5ae53e02 Merge pull request #56938 from nextcloud/unify-handling-of-exclude-groups-in-contacts-menu-and-sharing
fix: Unify handling of exclude groups in contacts menu and sharing
2026-01-07 18:04:53 +01:00
Joas Schilling ab122ac15d fix(l10n): Fix language selection
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-07 17:41:18 +01:00
Joas Schilling f2e2e4ea21 fix(controller): Support native int ranges
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-07 17:36:57 +01:00
Joas Schilling 15b45975e2 Merge pull request #57410 from nextcloud/bugfix/noid/fix-generate-id
fix(snowflake): Fix generateId() call for SnowflakeEntity
2026-01-07 17:17:33 +01:00
Salvatore Martire 2d22c4f654 fix: update information cached by mount point on rename
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2026-01-07 17:00:09 +01:00
Salvatore Martire 07eef5eaf4 fix: drop set up partial mounts on setupForUser
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2026-01-07 17:00:09 +01:00
nextcloud-command 09e0f06678 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-07 16:50:42 +01:00
Ferdinand Thiessen 47acb66b9c refactor(files): migrate from deprecated useNavigation to activeStore
Small preparation for upcoming Vue 3 migration of the files app.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-07 16:50:42 +01:00
SebastianKrupinski 6b3d3fd2d3 fix: adjust public page footer logic
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2026-01-07 10:16:35 -05:00
Joas Schilling f42493bf1e Merge pull request #57409 from nextcloud/fix/ci-psalm
ci(static-code-analysis): add missing permissions to upload sarif file
2026-01-07 16:03:58 +01:00
Joas Schilling fe393c5dbf fix(snowflake): Fix generateId() call for SnowflakeEntity
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-07 15:39:09 +01:00
Carl Schwan bd815595d4 fix: Remove NOP ReflectionProperty::setAccessible calls
Doesn't do anything since PHP 8.1 and is deprecated since PHP 8.5
2026-01-07 15:23:20 +01:00
Ferdinand Thiessen 86c90221f1 ci(static-code-analysis): add missing permissions to upload sarif file
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-07 15:21:48 +01:00
Maxence Lange 0cdd19271d Merge pull request #56047 from nextcloud/feat/ocm/handle-new-ocm-endpoint
feat(ocm): handle /.well-known/ocm
2026-01-07 13:17:06 -01:00
Carl Schwan 513b37916f fix(image): Remove NOP imagedestroy call
This is NOP since 8.0 and deprecated since 8.5

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-07 15:13:07 +01:00
Joas Schilling 9e516beb85 Merge pull request #57403 from nextcloud/followup/noid/snowflake-entity
fix(snowflake): Allow SnowflakeAware to overwrite the field types
2026-01-07 15:10:09 +01:00
Joas Schilling 6b6deefee9 Merge pull request #57373 from nextcloud/carl/fix-deprecated-alias
fix: Usage of a deprecated alias
2026-01-07 14:35:32 +01:00
Joas Schilling 8d55b13641 Merge pull request #57367 from nextcloud/work/carl/psalm-unittests
refactor(psalm): Enable psalm for comments unit tests
2026-01-07 14:16:14 +01:00
Joas Schilling 2bd2cc71e5 fix(snowflake): Allow SnowflakeAware to overwrite the field types
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-07 14:06:18 +01:00
Joas Schilling 40b79f5af8 Merge pull request #56795 from nextcloud/feat/noid/extend-entity-to-be-snoflake-aware
feat(snowflake): extend Entity class to support snowflakes
2026-01-07 13:42:49 +01:00
Carl Schwan 6eb1609b35 fix(psalm): Fix InvalidArgument in FilesByType OpenMetrics exporter
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-07 13:22:39 +01:00
Carl Schwan 58de51160c fix(psalm): Fix return type of TokenService::getTokens
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-07 13:21:34 +01:00
Carl Schwan a430702caa refactor(psalm): Enable psalm for comments unit tests
This is the first step to enable psalm for our test suite to find issues
also there.

At the moment, this already found some completely broken and unused
method in TestCase and prepare the way for making ICommentsManager work
with snowflake ids by using string instead of int for the ids
consistently.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-07 13:21:33 +01:00
Benjamin Gaussorgues 351351a832 Merge pull request #57371 from nextcloud/enh/noid/change-config-to-amr 2026-01-07 12:04:36 +01:00
Worker Builder 944341543e build(hub): 33.0.0 beta 2
Signed-off-by: Worker Builder <worker-builder@nextcloud.com>
2026-01-07 10:53:53 +00:00
Joas Schilling e5c989066f Merge pull request #57394 from nextcloud/bugfix/noid/theming-links
fix(settings): Allow clearing legal and privacy links
2026-01-07 11:06:33 +01:00
Benjamin Gaussorgues 62513dfd92 Merge pull request #57165 from nextcloud/feat/openmetrics 2026-01-07 10:43:56 +01:00
Joas Schilling 649e042568 fix(settings): Fix reset button for legal and privacy
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-07 09:45:48 +01:00
Benjamin Gaussorgues 71fa5937b2 feat(openapi): add OpenMetrics controller into OpenAPI
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-01-07 09:38:13 +01:00
Benjamin Gaussorgues 6ee8325b3e feat(files_sharing): add basic OpenMetrics exporter for files shares
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-01-07 09:38:13 +01:00
Benjamin Gaussorgues 47de164946 feat(comments): add basic OpenMetrics exporter
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-01-07 09:38:13 +01:00
Benjamin Gaussorgues c57c4843e8 feat(openmetrics): introduce OpenMetrics exporter
Expose a `/metrics` endpoint with some basic metrics

Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2026-01-07 09:38:13 +01:00
Joas Schilling 7c64394617 fix(settings): Allow clearing legal and privacy links
Signed-off-by: Joas Schilling <coding@schilljs.com>
2026-01-07 09:29:34 +01:00
Nextcloud bot c09168e911 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-07 00:13:32 +00:00
Benjamin Gaussorgues 9f7d4d055e Merge pull request #57361 from nextcloud/release/33.0.0_beta_1 2026-01-06 16:56:21 +01:00
Joas Schilling c3be0b8814 Merge pull request #57380 from nextcloud/automated/noid/master-update-code-signing-crl
[master] fix(security): Update code signing revocation list
2026-01-06 16:54:55 +01:00
nextcloud-command 1432c97584 fix(security): Update code signing revocation list
Signed-off-by: GitHub <noreply@github.com>
2026-01-06 15:38:16 +00:00
Simon L. 178fb77be8 feat(Config.php): change array_merge to array_replace_recursive when merging configs
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-01-06 16:03:38 +01:00
Benjamin Gaussorgues 86fe44d9f4 Merge pull request #56627 from nextcloud/fix/54953/value-is-already-team-id 2026-01-06 16:00:53 +01:00
Tobias Kaminsky fdfaf6b363 Merge pull request #57372 from nextcloud/feat/adapt-webhook
Feat(webhook_listeners): adapt webhook payload format
2026-01-06 15:55:27 +01:00
Tobias Kaminsky ad13a8acc7 Merge pull request #57235 from nextcloud/enh/noid/testing-ocr-provider
Add fake OCR taskprocessing provider in the testing app
2026-01-06 15:52:10 +01:00
Carl Schwan 693a2263cc fix(entity): Do not call getId when inserting and $id is null
Otherwise this breaks some existing code, in particular PublicKeyToken

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-06 15:42:03 +01:00
Jana Peper 65d44b0007 docs: adapt docblock
Signed-off-by: Jana Peper <jana.peper@nextcloud.com>
2026-01-06 15:24:40 +01:00
Jana Peper ec9cac90e0 feat: adapt webhook payload format
Signed-off-by: Jana Peper <jana.peper@nextcloud.com>
2026-01-06 15:19:22 +01:00
Carl Schwan e63c4afdab fix: Usage of a deprecated alias
The deprecated warning:

The requested alias "UserId" is deprecated. Please request "userId" directly.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-06 15:04:07 +01:00
Julien Veyssier e1d19b2c24 feat: add fake OCR taskprocessing provider in the testing app
Signed-off-by: Julien Veyssier <julien-nc@posteo.net>
2026-01-06 14:36:51 +01:00
Kate 72ad2edcd7 Merge pull request #57118 from nextcloud/test/delete-orphaned-files/improve-count-mounts 2026-01-06 14:36:05 +01:00
Robin Appelman 72632faaf1 Merge pull request #57284 from nextcloud/allow-cross-share-move-delete
fix: allow moving from of non-resharable to other share if the user has delete permissions
2026-01-06 14:23:51 +01:00
Côme Chilliet ebab99ec9a Merge pull request #56779 from nextcloud/jtr/needUpgrade-refactor
feat: improve needUpgrade() output and refactor for clarity
2026-01-06 14:04:13 +01:00
Carl Schwan 7c1a8a4060 feat: Adapt a bit the snowflake ids API
- Rename setId() -> generateId() in SnowflakeAwareEntity

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-06 12:57:17 +01:00
Anna Larch 5f797ebc32 refactor: move existing usages of snoflake IDs SnowflakeAwareEntity
Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-01-06 12:57:17 +01:00
Anna Larch a100ede789 feat: extend Entity and adjust QBMapper to support Snowflake IDs
Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-01-06 12:57:17 +01:00
Anna Larch f546daada7 refactor: Rename Snowflake Generator and Decoder
And introduce the Snowflake DTO

Signed-off-by: Anna Larch <anna@nextcloud.com>
2026-01-06 12:57:04 +01:00
Côme Chilliet c32009fd32 Merge pull request #57145 from nextcloud/carl/psalm-dav
refactor(dav): fix psalm for dav endpoints
2026-01-06 12:47:29 +01:00
Benjamin Gaussorgues 72be2f41b3 Merge pull request #57099 from nextcloud/carl/fix-32-bits-job-tests 2026-01-06 11:59:28 +01:00
Worker Builder 758a9c26db build(hub): 33.0.0 beta 1
Signed-off-by: Worker Builder <worker-builder@nextcloud.com>
2026-01-06 10:34:50 +00:00
Ferdinand Thiessen 0c6565ea44 fix(birthday-service): Fix on 32 bits system
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-06 10:44:47 +01:00
Carl Schwan 33e5f2d345 fix(background-jobs): Fix unit tests with 32-bits tests
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2026-01-06 10:44:21 +01:00
Nextcloud bot 0a3cc4dd6f fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-06 00:13:48 +00:00
Ferdinand Thiessen c6b095234e Merge pull request #57236 from nextcloud/refactor/profile-vue3-ts
refactor(profile): migrate to script setup and Vue 3
2026-01-05 22:52:49 +01:00
Ferdinand Thiessen f9d4bb2ba8 chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 22:21:43 +01:00
Ferdinand Thiessen ad61aa7a30 refactor(profile): migrate to script setup and Vue 3
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 22:16:48 +01:00
Ferdinand Thiessen 8cc588fc42 Merge pull request #57341 from nextcloud/refactor/federation-vue3
refactor(federation): migrate app frontend (admin settings) to Vue 3
2026-01-05 20:07:18 +01:00
nextcloud-command 35bfa1d2f0 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-05 17:16:35 +00:00
Ferdinand Thiessen 5d3e1f70b2 refactor(federation): migrate app frontend (admin settings) to Vue 3
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 18:08:29 +01:00
Robin Appelman 8a05a3e01b Merge pull request #57186 from nextcloud/perbucket-without-multibucket
feat: don't gate perBucket object store configuration behind multibucket
2026-01-05 16:49:16 +01:00
Robin Appelman afa23291d6 feat: don't gate perBucket object store configuration behind multibucket
a setup can have multiple bucket without having `multibucket` enabled trough things like per-groupfolder buckets

Signed-off-by: Robin Appelman <robin@icewind.nl>
2026-01-05 16:09:25 +01:00
Ferdinand Thiessen c50c5a9e6b Merge pull request #57277 from nextcloud/refactor/files-sidebar-nodeapi
refactor!: migrate files sidebar to Node API
2026-01-05 13:38:26 +01:00
Maxence Lange eb0369705a Merge pull request #56240 from nextcloud/fix/noid/set-adr-book-local-but-not-system
fix(contacts): allow address book to be local but not system
2026-01-05 09:55:42 -01:00
Joas Schilling fe0c56a1d7 Merge pull request #57332 from nextcloud/jtr/chore-drop-10n-xgettextfiles
chore(l10n): drop unused xgettextfiles
2026-01-05 10:00:42 +01:00
Ferdinand Thiessen 98a4b959ec chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 02:23:41 +01:00
Ferdinand Thiessen fd96a32dda test: adjust cypress tests
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 02:23:30 +01:00
Ferdinand Thiessen 3726596ad0 refactor(systemtags): migrate to new files sidebar API
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 02:23:15 +01:00
Ferdinand Thiessen f9a137ea87 refactor(files): migrate favorite sidebar action to new Sidebar API
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 02:23:15 +01:00
Ferdinand Thiessen 7077685bf8 refactor(files_sharing): migrate to new Files Sidebar API
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 02:23:15 +01:00
Ferdinand Thiessen 34511e9036 refactor(comments): migrate to new Files Sidebar API
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 02:23:15 +01:00
Ferdinand Thiessen 493c371a22 refactor(files_versions): adjust frontend for new files sidebar API
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 02:23:15 +01:00
Ferdinand Thiessen 4a9cdeb01f refactor!(files): migrate sidebar API to use Node API
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-05 02:23:15 +01:00
Nextcloud bot 7abd46fb53 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-05 00:13:26 +00:00
Ferdinand Thiessen fb18804192 chore(deps): update @nextcloud/files to v4.0.0-beta.8
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2026-01-04 22:30:12 +01:00
github-actions[bot] 513c0cceb6 Merge pull request #57320 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/nextcloud/files-4.0.0-beta.8
build(deps): bump @nextcloud/files from 4.0.0-beta.7 to 4.0.0-beta.8 in /build/frontend-legacy
2026-01-04 08:29:45 +00:00
Josh 867a8d1088 chore(l10n): drop unused xgettextfiles
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-01-03 20:32:45 -05:00
Nextcloud bot 56658fc3ef fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-04 00:13:41 +00:00
nextcloud-command dc5d199e3a chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-03 20:41:28 +00:00
dependabot[bot] 41c739d370 build(deps): bump @nextcloud/files in /build/frontend-legacy
Bumps [@nextcloud/files](https://github.com/nextcloud-libraries/nextcloud-files) from 4.0.0-beta.7 to 4.0.0-beta.8.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-files/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-files/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-files/compare/v4.0.0-beta.7...v4.0.0-beta.8)

---
updated-dependencies:
- dependency-name: "@nextcloud/files"
  dependency-version: 4.0.0-beta.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-03 21:33:05 +01:00
github-actions[bot] 68149e01cb Merge pull request #57319 from nextcloud/dependabot/npm_and_yarn/nextcloud/files-4.0.0-beta.8
build(deps): bump @nextcloud/files from 4.0.0-beta.7 to 4.0.0-beta.8
2026-01-03 21:32:35 +01:00
nextcloud-command 44216b36e4 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-03 19:55:53 +00:00
dependabot[bot] 68b8e2662d build(deps): bump @nextcloud/files from 4.0.0-beta.7 to 4.0.0-beta.8
Bumps [@nextcloud/files](https://github.com/nextcloud-libraries/nextcloud-files) from 4.0.0-beta.7 to 4.0.0-beta.8.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-files/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-files/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-files/compare/v4.0.0-beta.7...v4.0.0-beta.8)

---
updated-dependencies:
- dependency-name: "@nextcloud/files"
  dependency-version: 4.0.0-beta.8
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-03 20:47:39 +01:00
github-actions[bot] bc2bdeeac5 Merge pull request #57305 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/multi-c8afcbbcd8
build(deps): bump qs and express in /build/frontend-legacy
2026-01-03 19:34:16 +00:00
Nextcloud bot a6bcb18db9 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-03 00:13:31 +00:00
Andy Scherzinger cbaf6e73a5 Merge pull request #53634 from invario/preview-direct-download
feat(previews): allow ffmpeg to connect direct for AWS S3 buckets
2026-01-02 18:39:42 +01:00
Carl Schwan 98192fc17c feat(external-s3): Expose config option to enable direct s3 preview
Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-02 17:13:43 +01:00
Carl Schwan 2ea1bd4cdc feat(movie-preview): Use getDirectDownloadById for generating preview
Allow to speed-up considerably the creation of previews for movies
stored on S3.

Signed-off-by: Carl Schwan <carlschwan@kde.org>
2026-01-02 17:13:41 +01:00
Robin Appelman 3580680f8f Merge pull request #56166 from nextcloud/dav-file-get-log-id
feat: add fileid to exception message when reading a dav file fails
2026-01-02 15:30:22 +01:00
Carl Schwan 1b12fd0df3 Merge pull request #57308 from nextcloud/jtr/fix-installer-isDownloaded-robustness
fix(installer): make isDownloaded robust + unify parameter naming
2026-01-02 15:07:45 +01:00
Stephan Orbaugh 97ba753e09 Merge pull request #57230 from nextcloud/fix/inodebypath-forbidden-responses
fix: drop readable check
2026-01-02 11:07:45 +01:00
invario ffe91b48dc feat(previews): allow ffmpeg to connect direct for AWS S3 buckets
Co-authored-by: Côme Chilliet <91878298+come-nc@users.noreply.github.com>
Signed-off-by: invario <67800603+invario@users.noreply.github.com>
2026-01-02 10:48:39 +01:00
nextcloud-command 9fed6d849a chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2026-01-02 09:47:55 +00:00
Josh 30f2932817 chore: make lint happy about isDownloaded concat
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-01-01 11:49:02 -05:00
Josh a46f3bd21c fix(installer): make isDownloaded robust + unify parameter naming
Signed-off-by: Josh <josh.t.richards@gmail.com>
2026-01-01 11:42:54 -05:00
dependabot[bot] a1ab869381 build(deps): bump qs and express in /build/frontend-legacy
Bumps [qs](https://github.com/ljharb/qs) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.

Updates `qs` from 6.14.0 to 6.14.1
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.14.0...v6.14.1)

Updates `express` from 4.21.2 to 4.22.1
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/v4.22.1/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.2...v4.22.1)

---
updated-dependencies:
- dependency-name: qs
  dependency-version: 6.14.1
  dependency-type: indirect
- dependency-name: express
  dependency-version: 4.22.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-01-01 13:35:19 +00:00
Nextcloud bot 7baca4264a fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2026-01-01 00:13:23 +00:00
Josh 24ec0e85e5 feat(AppManager): log when cleanAppId drops invalid chars
Log a debug message if invalid characters are replaced in app IDs.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-31 14:30:05 -05:00
Robin Appelman d21fa1c0b5 feat: add fileid to exception message when reading a dav file fails
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-12-31 14:06:46 +01:00
Kate 6a2e0f819c Merge pull request #52442 from nextcloud/ext-store-check-update-filter 2025-12-31 12:50:59 +01:00
Robin Appelman 047ff27e46 test: add tests for watcher check filter
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-12-31 12:23:04 +01:00
Robin Appelman 4720c39048 fix: use interfaces instead of classes in Cache\Watcher type hints
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-12-31 12:23:04 +01:00
Robin Appelman 5c625b7a07 feat: add an option to filter what paths get checked for updates
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-12-31 12:23:04 +01:00
Nextcloud bot b33fdaf085 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-31 00:14:02 +00:00
Andy Scherzinger d40263b2aa Merge pull request #57285 from nextcloud/feature/54562/support-partial-share-providers
feat: introduce API for partial share providers
2025-12-30 19:25:16 +01:00
Salvatore Martire a449af6460 feat: introduce API for partial share providers
Adds support for retrieval of shares by path

Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-12-30 16:43:09 +01:00
Salvatore Martire ed6d0e59bb Merge pull request #57286 from nextcloud/fix/54562/add-forchildren-to-setupforpath
fix: add $forChildren parameter to IPartialMountProvider
2025-12-30 16:37:50 +01:00
Robin Appelman c614a13d4b Merge pull request #57158 from nextcloud/users-for-share
feat: add api to get users for share
2025-12-30 14:24:10 +01:00
Andy Scherzinger 32327c6285 Merge pull request #56773 from nextcloud/carl/remove-sciencemesh
refactor(share): Remove code related to science mesh integration
2025-12-30 14:18:53 +01:00
Maksim Sukharev 752d90c57c Merge pull request #57233 from nextcloud/bugfix/prevent_admin_group_subadmin 2025-12-30 13:26:15 +01:00
nextcloud-command a31d42d47a chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-30 10:44:10 +00:00
Arsalan Ul Haq Sohni c81422ed37 fix(NewUserDialog): update group selection to prevent admin group from being assigned as subadmin
Signed-off-by: Arsalan Ul Haq Sohni <arsalan-ul-haq.sohni@strato.de>
2025-12-30 11:33:28 +01:00
Git'Fellow eafbb5a23c fix(admin_audit): Fix typo in visibility log message
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2025-12-30 10:09:08 +01:00
Salvatore Martire 6e9ba894a2 fix: add $forChildren parameter to IPartialMountProvider
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-12-29 18:06:12 +01:00
Robin Appelman 8cfb49012d test: update cross-share move tests
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-12-29 17:39:44 +01:00
Robin Appelman 39c8141f0c fix: allow moving from of non-resharable to other share if the user has delete permissions
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-12-29 17:39:43 +01:00
Nextcloud bot 4283f4790b fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-29 00:13:35 +00:00
github-actions[bot] 3945981f0d Merge pull request #57251 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/msw-2.12.6
build(deps-dev): bump msw from 2.12.4 to 2.12.6 in /build/frontend-legacy
2025-12-28 09:41:37 +00:00
Nextcloud bot 5d05c8d61e fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-28 00:13:28 +00:00
github-actions[bot] 25ee57fc60 Merge pull request #57246 from nextcloud/dependabot/composer/vendor-bin/rector/rector/rector-2.3.0
build(deps-dev): bump rector/rector from 2.2.14 to 2.3.0 in /vendor-bin/rector
2025-12-27 19:05:49 +01:00
github-actions[bot] e90c114730 Merge pull request #57248 from nextcloud/dependabot/npm_and_yarn/jsdom-27.4.0
build(deps-dev): bump jsdom from 27.3.0 to 27.4.0
2025-12-27 18:49:43 +01:00
Joas Schilling 41feb5d29d Merge pull request #57262 from nextcloud/automated/noid/master-update-code-signing-crl
[master] fix(security): Update code signing revocation list
2025-12-27 12:45:34 +01:00
Josh 5c51b42d3f test(trashbin): Update DAV quotaProvider test cases
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-27 00:40:55 -05:00
Josh 80caedb050 chore: php-cs fixup
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-27 00:30:19 -05:00
Josh 853db93601 chore: typo fixup
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-27 00:26:11 -05:00
Josh 355d6637ff refactor(trashbin): restyle DAV handlers, enhance internal docs, refactor for clarity & robustness
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-27 00:07:19 -05:00
nextcloud-command 06d99eba17 fix(security): Update code signing revocation list
Signed-off-by: GitHub <noreply@github.com>
2025-12-27 02:53:11 +00:00
dependabot[bot] 6f6c655b46 build(deps-dev): bump msw in /build/frontend-legacy
Bumps [msw](https://github.com/mswjs/msw) from 2.12.4 to 2.12.6.
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v2.12.4...v2.12.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-27 02:14:45 +00:00
dependabot[bot] 0c4bc3e495 build(deps-dev): bump jsdom from 27.3.0 to 27.4.0
Bumps [jsdom](https://github.com/jsdom/jsdom) from 27.3.0 to 27.4.0.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md)
- [Commits](https://github.com/jsdom/jsdom/compare/27.3.0...27.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-27 02:14:16 +00:00
dependabot[bot] b307db6b19 build(deps-dev): bump rector/rector in /vendor-bin/rector
Bumps [rector/rector](https://github.com/rectorphp/rector) from 2.2.14 to 2.3.0.
- [Release notes](https://github.com/rectorphp/rector/releases)
- [Commits](https://github.com/rectorphp/rector/compare/2.2.14...2.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-27 02:08:27 +00:00
Nextcloud bot d79cf95ece fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-27 00:13:32 +00:00
Josh 183136d166 chore: Fix comments and formatting in Plugin.php
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-26 19:07:13 -05:00
Josh b872208285 refactor(files_versions): tidy up UA download header logic and modernize class structure
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-26 18:56:56 -05:00
Nextcloud bot a366ec367a fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-26 00:13:26 +00:00
Nextcloud bot 0c8f89c9d7 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-25 00:13:37 +00:00
Nextcloud bot bed17ca424 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-24 00:13:41 +00:00
github-actions[bot] 5cb262391f Merge pull request #57201 from nextcloud/dependabot/npm_and_yarn/nextcloud/files-4.0.0-beta.5
build(deps): Bump @nextcloud/files from 4.0.0-beta.4 to 4.0.0-beta.7
2025-12-23 20:27:57 +00:00
nextcloud-command 0934814a05 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-23 21:10:41 +01:00
Ferdinand Thiessen 9919c2bc91 chore(files): adjust getContents to use AbortController
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-23 21:08:33 +01:00
Ferdinand Thiessen 77f9897060 chore(files): adjust code for breaking change of Navigation.setActive
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-23 20:17:34 +01:00
Ferdinand Thiessen 461d0edecd build(deps): Bump @nextcloud/files from 4.0.0-beta.4 to 4.0.0-beta.6
Bumps [@nextcloud/files](https://github.com/nextcloud-libraries/nextcloud-files) from 4.0.0-beta.4 to 4.0.0-beta.5.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-files/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-files/blob/main/CHANGELOG.md)
- [Commits](nextcloud-libraries/nextcloud-files@v4.0.0-beta.4...v4.0.0-beta.5)

---
updated-dependencies:
- dependency-name: "@nextcloud/files"
  dependency-version: 4.0.0-beta.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-23 20:17:33 +01:00
Ferdinand Thiessen 75e57760c7 Merge pull request #57163 from nextcloud/refactor/themeing-vue3-ts
refactor(theming): migrate to Typescript and Vue 3
2025-12-23 19:38:30 +01:00
Ferdinand Thiessen 105398699d Merge pull request #56780 from nextcloud/jtr/chore-drop-getUserQuota-legacy
chore(legacy): Remove deprecated getUserQuota method
2025-12-23 18:09:32 +01:00
nextcloud-command b820518a2a chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-23 17:00:41 +01:00
Ferdinand Thiessen 32508c1f78 test(theming): adjust cypress tests for Vue3
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-23 17:00:41 +01:00
Ferdinand Thiessen 754422aa00 refactor(theming): migrate to Typescript and Vue 3
- migrate all components to Typescript
- use script setup where feasible
- migrate to Vue 3

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-23 17:00:40 +01:00
Ferdinand Thiessen be8b2bfa8b Merge pull request #57228 from nextcloud/fix/setup-for-path-caching
fix: adjust authoritative setup path caching logic
2025-12-23 16:49:05 +01:00
Ferdinand Thiessen 8c90d4f822 Merge pull request #56919 from nextcloud/jtr/fix-mime-detection-tests
fix(files/type): preserve numeric keys (follow-up)
2025-12-23 16:01:01 +01:00
Andy Scherzinger f791d91c00 Merge pull request #57224 from nextcloud/jtr/docs-iusersession
docs(IUserSession): Improve interface docs
2025-12-23 13:12:20 +01:00
Nextcloud bot 6acf2a6a1b fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-23 00:13:51 +00:00
Salvatore Martire 678bf538bf fix: drop readable check
This check was introduced in a previous PR, causing disruptive
changes in PROPFIND responses in some cases.

Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-12-22 18:48:10 +01:00
Josh fc37abd35a docs(IUserSession): Improve interface docs
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-22 11:26:48 -05:00
Salvatore Martire 6c19fbcf4d fix: adjust authoritative setup path caching logic
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-12-22 15:52:52 +01:00
Robin Appelman bbabf50984 feat: add api to get users for share
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-12-22 15:34:23 +01:00
Maxence Lange b28176458d fix(contacts): not contact, not local
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-12-22 12:36:33 -01:00
github-actions[bot] 22ca454130 Merge pull request #57058 from nextcloud/dependabot/npm_and_yarn/eslint-9.39.2
build(deps-dev): bump eslint from 9.39.1 to 9.39.2
2025-12-22 11:56:32 +00:00
dependabot[bot] 299039e2f2 build(deps-dev): bump eslint from 9.39.1 to 9.39.2
Bumps [eslint](https://github.com/eslint/eslint) from 9.39.1 to 9.39.2.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/compare/v9.39.1...v9.39.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 11:09:35 +00:00
github-actions[bot] 993c359830 Merge pull request #56952 from nextcloud/dependabot/npm_and_yarn/jsdom-27.3.0
build(deps-dev): bump jsdom from 27.2.0 to 27.3.0
2025-12-22 11:07:27 +00:00
dependabot[bot] 1c8a31c36a build(deps-dev): bump jsdom from 27.2.0 to 27.3.0
Bumps [jsdom](https://github.com/jsdom/jsdom) from 27.2.0 to 27.3.0.
- [Release notes](https://github.com/jsdom/jsdom/releases)
- [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md)
- [Commits](https://github.com/jsdom/jsdom/compare/27.2.0...27.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 11:50:13 +01:00
github-actions[bot] c38e604e5e Merge pull request #56889 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/msw-2.12.4
build(deps-dev): bump msw from 2.12.3 to 2.12.4 in /build/frontend-legacy
2025-12-22 08:29:37 +00:00
dependabot[bot] 6498c7d552 build(deps-dev): bump msw in /build/frontend-legacy
Bumps [msw](https://github.com/mswjs/msw) from 2.12.3 to 2.12.4.
- [Release notes](https://github.com/mswjs/msw/releases)
- [Changelog](https://github.com/mswjs/msw/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mswjs/msw/compare/v2.12.3...v2.12.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 09:13:45 +01:00
github-actions[bot] 2835d0cde4 Merge pull request #56979 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/dompurify-3.3.1
build(deps): bump dompurify from 3.3.0 to 3.3.1 in /build/frontend-legacy
2025-12-22 08:09:53 +00:00
nextcloud-command 6fdfa436e1 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-22 07:51:39 +00:00
dependabot[bot] 0fddb6be2d build(deps): bump dompurify in /build/frontend-legacy
Bumps [dompurify](https://github.com/cure53/DOMPurify) from 3.3.0 to 3.3.1.
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](https://github.com/cure53/DOMPurify/compare/3.3.0...3.3.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 08:43:42 +01:00
github-actions[bot] 8c0c0454bd Merge pull request #57203 from nextcloud/dependabot/npm_and_yarn/nextcloud/paths-3.0.0
build(deps): Bump @nextcloud/paths from 2.3.0 to 3.0.0
2025-12-22 03:05:46 +00:00
Ferdinand Thiessen 58fd2d3df8 test(cypress): adjust for breaking changes of @nextcloud/paths
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-22 03:04:35 +01:00
nextcloud-command 34330db471 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-22 01:20:41 +00:00
Ferdinand Thiessen 9a1fd7a629 chore: adjust code for breaking changes of @nextcloud/paths v3
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-22 02:12:19 +01:00
dependabot[bot] 0d890d4217 build(deps): Bump @nextcloud/paths from 2.3.0 to 3.0.0
Bumps [@nextcloud/paths](https://github.com/nextcloud-libraries/nextcloud-paths) from 2.3.0 to 3.0.0.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-paths/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-paths/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-paths/compare/v2.3.0...v3.0.0)

---
updated-dependencies:
- dependency-name: "@nextcloud/paths"
  dependency-version: 3.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 02:12:18 +01:00
github-actions[bot] a8e186dba9 Merge pull request #57196 from nextcloud/dependabot/npm_and_yarn/vitest-238d3985db
build(deps-dev): Bump the vitest group across 2 directories with 3 updates
2025-12-22 02:06:45 +01:00
github-actions[bot] 34267ef563 Merge pull request #57200 from nextcloud/dependabot/npm_and_yarn/nextcloud/dialogs-7.2.0
build(deps): Bump @nextcloud/dialogs from 7.1.0 to 7.2.0
2025-12-22 00:45:51 +00:00
github-actions[bot] f9132111ab Merge pull request #56878 from nextcloud/dependabot/composer/vendor-bin/openapi-extractor/nextcloud/openapi-extractor-1.8.7
build(deps): bump nextcloud/openapi-extractor from 1.8.6 to 1.8.7 in /vendor-bin/openapi-extractor
2025-12-22 01:39:54 +01:00
dependabot[bot] 84e52327f3 build(deps-dev): Bump the vitest group across 2 directories with 3 updates
Bumps the vitest group with 1 update in the / directory: [@vitest/coverage-istanbul](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-istanbul).
Bumps the vitest group with 2 updates in the /build/frontend-legacy directory: [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) and [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8).


Updates `@vitest/coverage-istanbul` from 4.0.15 to 4.0.16
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.16/packages/coverage-istanbul)

Updates `vitest` from 4.0.15 to 4.0.16
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.16/packages/vitest)

Updates `vitest` from 4.0.15 to 4.0.16
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.16/packages/vitest)

Updates `@vitest/coverage-v8` from 4.0.15 to 4.0.16
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.16/packages/coverage-v8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 00:23:05 +00:00
Nextcloud bot 5a1a0b4759 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-22 00:13:29 +00:00
Ferdinand Thiessen 530efa6783 chore: extract new openAPI definitions
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-22 01:02:22 +01:00
dependabot[bot] 0e5dd3d834 build(deps): bump nextcloud/openapi-extractor
Bumps [nextcloud/openapi-extractor](https://github.com/nextcloud-releases/openapi-extractor) from 1.8.6 to 1.8.7.
- [Changelog](https://github.com/nextcloud-releases/openapi-extractor/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-releases/openapi-extractor/compare/v1.8.6...v1.8.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-22 01:01:30 +01:00
nextcloud-command ee04846dec chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-21 23:58:50 +00:00
dependabot[bot] 2d6bd8b86a build(deps): Bump @nextcloud/dialogs from 7.1.0 to 7.2.0
Bumps [@nextcloud/dialogs](https://github.com/nextcloud-libraries/nextcloud-dialogs) from 7.1.0 to 7.2.0.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-dialogs/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-dialogs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-dialogs/compare/v7.1.0...v7.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-21 23:39:12 +00:00
Ferdinand Thiessen cc806fbd8e Merge pull request #57194 from nextcloud/dependabot/npm_and_yarn/vite-4fb37e91ba
build(deps-dev): Bump the vite group across 2 directories with 1 update
2025-12-22 00:37:20 +01:00
nextcloud-command a56e274140 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-21 21:55:31 +00:00
dependabot[bot] 3a20529708 build(deps-dev): Bump the vite group across 2 directories with 1 update
Bumps the vite group with 1 update in the / directory: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).
Bumps the vite group with 1 update in the /build/frontend-legacy directory: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).


Updates `vite` from 7.2.7 to 7.3.0
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v7.3.0/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.3.0/packages/vite)

Updates `vite` from 7.2.7 to 7.3.0
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v7.3.0/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.3.0/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 7.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: vite
- dependency-name: vite
  dependency-version: 7.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: vite
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-21 22:46:23 +01:00
github-actions[bot] 0d0264f057 Merge pull request #57198 from nextcloud/dependabot/npm_and_yarn/vue-3.5.26
build(deps): Bump vue from 3.5.25 to 3.5.26
2025-12-21 20:02:38 +00:00
nextcloud-command 36758db1bc chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-21 19:46:43 +00:00
dependabot[bot] 869108de51 build(deps): Bump vue from 3.5.25 to 3.5.26
Bumps [vue](https://github.com/vuejs/core) from 3.5.25 to 3.5.26.
- [Release notes](https://github.com/vuejs/core/releases)
- [Changelog](https://github.com/vuejs/core/blob/main/CHANGELOG.md)
- [Commits](https://github.com/vuejs/core/compare/v3.5.25...v3.5.26)

---
updated-dependencies:
- dependency-name: vue
  dependency-version: 3.5.26
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-21 20:29:59 +01:00
github-actions[bot] 7f7c1ed3bd Merge pull request #57208 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/webpack-5.104.1
build(deps-dev): Bump webpack from 5.103.0 to 5.104.1 in /build/frontend-legacy
2025-12-21 19:29:02 +00:00
nextcloud-command a6a94fa45c chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-21 19:06:40 +00:00
dependabot[bot] f937e10a08 build(deps-dev): Bump webpack in /build/frontend-legacy
Bumps [webpack](https://github.com/webpack/webpack) from 5.103.0 to 5.104.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack/compare/v5.103.0...v5.104.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-21 19:58:39 +01:00
github-actions[bot] 9abcafb44c Merge pull request #57199 from nextcloud/dependabot/npm_and_yarn/sass-1.97.1
build(deps-dev): Bump sass from 1.95.1 to 1.97.1
2025-12-21 16:29:21 +00:00
Nextcloud bot e963d7e583 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-21 00:13:27 +00:00
Git'Fellow 60cb5a3c90 Merge pull request #57179 from nextcloud/allowListAllUsers
feat(userList): Allow to list all users
2025-12-20 17:49:13 +01:00
github-actions[bot] febc130423 Merge pull request #57205 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/sass-1.97.1
build(deps-dev): Bump sass from 1.95.1 to 1.97.1 in /build/frontend-legacy
2025-12-20 14:18:05 +01:00
Louis 531d4b08e7 Merge pull request #57174 from nextcloud/artonge/fix/inhibit_download
fix(files): Inhibit download for non downloadable nodes in all contexts
2025-12-20 10:18:04 +01:00
Louis 9019c56e70 Merge pull request #57079 from Pringels/enhancement/15632/persist-user-management-columns
feat(settings): persist user management column visibility
2025-12-20 10:02:38 +01:00
dependabot[bot] 7deca60136 build(deps-dev): Bump sass in /build/frontend-legacy
Bumps [sass](https://github.com/sass/dart-sass) from 1.95.1 to 1.97.1.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.95.1...1.97.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-20 02:20:54 +00:00
dependabot[bot] 34448d3410 build(deps-dev): Bump sass from 1.95.1 to 1.97.1
Bumps [sass](https://github.com/sass/dart-sass) from 1.95.1 to 1.97.1.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.95.1...1.97.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-20 02:19:34 +00:00
Nextcloud bot 294057e32f fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-20 00:13:30 +00:00
Robin Appelman 69249a3ce3 feat: also send x-user-id for dav responses
Signed-off-by: Robin Appelman <robin@icewind.nl>
2025-12-19 18:20:01 +01:00
Ferdinand Thiessen 8d164db8e9 Merge pull request #56909 from nextcloud/fix/sharing-external-section
fix(files_sharing): ensure that external section is mounted
2025-12-19 17:49:35 +01:00
nextcloud-command 274ff3692d chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-19 16:28:17 +00:00
github-actions[bot] 6d24abc06f Merge pull request #57190 from nextcloud/dependabot/npm_and_yarn/multi-801a3e5857
build(deps): Bump systeminformation and cypress
2025-12-19 16:26:08 +00:00
Ferdinand Thiessen ec617b6b3e fix(files_sharing): ensure that external section is mounted
Make sure the external section is mounted before trying to assign it the
node prop.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-19 16:25:34 +00:00
dependabot[bot] e0bd85b067 build(deps): Bump systeminformation and cypress
Bumps [systeminformation](https://github.com/sebhildebrandt/systeminformation) to 5.27.14 and updates ancestor dependency [cypress](https://github.com/cypress-io/cypress). These dependencies need to be updated together.


Updates `systeminformation` from 5.27.7 to 5.27.14
- [Changelog](https://github.com/sebhildebrandt/systeminformation/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sebhildebrandt/systeminformation/compare/v5.27.7...v5.27.14)

Updates `cypress` from 15.7.0 to 15.8.1
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v15.7.0...v15.8.1)

---
updated-dependencies:
- dependency-name: systeminformation
  dependency-version: 5.27.14
  dependency-type: indirect
- dependency-name: cypress
  dependency-version: 15.8.1
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-19 15:39:38 +00:00
Joas Schilling aec12f5b51 Merge pull request #57116 from nextcloud/php/8.5
ci(PHP): Test against 8.5 on CI
2025-12-19 16:38:16 +01:00
Joas Schilling 226b7df65e fix(Hooks): Don't use offset null as it's deprecated (and not actually used)
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-12-19 15:58:05 +01:00
Joas Schilling c27db5fdad fix(GdImage): imagedestroy is noop since PHP 8.0
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-12-19 15:57:04 +01:00
Joas Schilling 56793fa5b8 fix(reflection): ReflectionMethod::setAccessible is noop since 8.1
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-12-19 15:57:04 +01:00
Joas Schilling 6bc73b0dab fix(PDO): Switch away from deprecated PDO parts
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-12-19 15:57:03 +01:00
Joas Schilling 121973d336 fix(logger): Fix calls to log normalizer
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-12-19 15:34:34 +01:00
Joas Schilling e863c3c500 ci(PHP): Test against 8.5 on CI
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-12-19 15:34:34 +01:00
nextcloud-command 16727bf781 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-19 13:59:48 +00:00
Louis Chmn 62fd47ee2c fix(files): Inhibit download for non downloadable nodes in all contexts
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-12-19 13:57:18 +00:00
Peter Ringelmann 31605c7495 fix(settings): resolve Cypress crash on undefined showConfig
Signed-off-by: Peter Ringelmann <4850521+Pringels@users.noreply.github.com>
2025-12-19 13:42:36 +01:00
Peter Ringelmann 6a9be2e7f4 chore: fix Psalm rebase issue
Signed-off-by: Peter Ringelmann <4850521+Pringels@users.noreply.github.com>
2025-12-19 09:30:49 +01:00
Nextcloud bot e91840a61a fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-19 00:13:47 +00:00
Julius Knorr c1801b044a Merge pull request #57041 from nextcloud/feat/full-match-displayname
feat: Allow to block full matches on the display name
2025-12-18 20:41:44 +01:00
Joas Schilling 9d86b701ee Merge pull request #57180 from nextcloud/dependabot/composer/doctrine/dbal-3.10.4
build(deps): bump doctrine/dbal from 3.10.2 to 3.10.4
2025-12-18 16:39:03 +01:00
Joas Schilling 9dc11443a2 build(deps): bump doctrine/dbal from 3.10.2 to 3.10.4
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-12-18 15:43:54 +01:00
Joas Schilling 24de30d70f Merge pull request #57172 from nextcloud/dependabot/composer/symfony-32bc18790b
build(deps): bump the symfony group across 1 directory with 3 updates
2025-12-18 15:42:19 +01:00
nextcloud-command 9bbb6dedc3 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-18 14:11:47 +00:00
Maxence Lange 632ffba69d Merge pull request #57156 from nextcloud/fix/noid/ocm-fully-disable-signed-request
fix(ocm): fully disable signed request on config
2025-12-18 13:05:45 -01:00
Julius Knorr 7d5ffa50ae feat: Allow to block full matches on the display name
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-12-18 14:04:46 +00:00
Peter Ringelmann c46510baba refactor(settings): Re-add user email key to lexicon
Signed-off-by: Peter Ringelmann <4850521+Pringels@users.noreply.github.com>
2025-12-18 14:40:08 +01:00
Peter Ringelmann 11eaa0479f refactor(settings): use ConfigLexicon for user list preferences
Signed-off-by: Peter Ringelmann <4850521+Pringels@users.noreply.github.com>
2025-12-18 14:40:08 +01:00
Peter Ringelmann e7aaaff69d feat(settings): persist user management column visibility
Previously, column visibility settings were stored in localStorage, causing them to be lost when logging out or switching browsers.
This change moves the persistence to the database as user preferences.
It also refactors the frontend to use clean `userList.*` keys for better consistency between the store and the API.

Signed-off-by: Peter Ringelmann <4850521+Pringels@users.noreply.github.com>
2025-12-18 14:40:08 +01:00
Joas Schilling 76e86fa920 build(deps): bump the symfony group across 1 directory with 3 updates
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-12-18 13:57:02 +01:00
Git'Fellow b585280534 feat(userList): Allow to list all users
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2025-12-18 13:53:41 +01:00
Louis 75bed8535c Merge pull request #57176 from nextcloud/himehatsumi/master
[local] fix(login): Improve wording for login throttle warning
2025-12-18 13:49:41 +01:00
Joas Schilling 154f3597b4 Merge pull request #57160 from nextcloud/dependabot/composer/guzzlehttp/guzzle-7.10.0
build(deps): Bump guzzlehttp/guzzle from 7.9.3 to 7.10.0
2025-12-18 12:48:18 +01:00
Louis Chmn 637392c084 chore: Compile assets
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-12-18 12:23:21 +01:00
himehatsumi 0677888291 fix(login): Improve wording for login throttle warning
Signed-off-by: himehatsumi <95652868+himehatsumi@users.noreply.github.com>
2025-12-18 12:22:09 +01:00
Côme Chilliet 9b1227749f Merge pull request #57133 from nextcloud/fix-template-headers-injection
fix(lib): include headers from OC\Template\Template as well in produced HTML
2025-12-18 11:59:09 +01:00
Joas Schilling 115c0e93a3 build(deps): Bump guzzlehttp/guzzle from 7.9.3 to 7.10.0
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-12-18 11:09:28 +01:00
Carl Schwan e594e9d0e7 Merge pull request #57155 from nextcloud/carl/fix-insert-preview-version
fix(preview): Correctly insert preview version
2025-12-18 10:34:38 +01:00
Nextcloud bot 0eca299ca8 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-18 00:13:32 +00:00
Maxence Lange 4b684897ed fix(ocm): fully disable signed request on config
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-12-17 18:55:14 -01:00
Joas Schilling 7c7010cdff Merge pull request #57149 from nextcloud/nickvbot/update-nextcloud-lognormalizer-300
build(deps): Bump nextcloud/lognormalizer from 2.0.0 to 3.0.0
2025-12-17 18:49:00 +01:00
Carl Schwan 06b6a5bc05 fix(preview): Correctly insert preview version
Use createNamedParameter otherwise values are not correctly escapted.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-17 18:23:53 +01:00
Joas Schilling 15cd533fcb build(deps): Bump nextcloud/lognormalizer from 2.0.0 to 3.0.0
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-12-17 17:22:17 +01:00
Ferdinand Thiessen cc23025c2a Merge pull request #57127 from nextcloud/addCheckBeforeBitwise
fix(IpNormalizer): Added `inet_pton()` check before bitwise operations
2025-12-17 16:28:37 +01:00
Louis 8406984336 Merge pull request #57078 from Pringels/fix/20685/limit-to-groups-persistence
fix(settings): reset limit to groups state when switching apps
2025-12-17 16:05:33 +01:00
Carl Schwan 3555e00754 refactor(dav): fix psalm for dav endpoints
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-17 15:09:48 +01:00
Benjamin Gaussorgues 89fcefbfa0 Merge pull request #55369 from nextcloud/carl/cleanup-external-manager 2025-12-17 14:14:48 +01:00
Joas Schilling 01feb85809 Merge pull request #57137 from nextcloud/dependabot/composer/pimple/pimple-3.6.0
build(deps): Bump pimple/pimple from 3.5.0 to 3.6.0
2025-12-17 11:53:30 +01:00
Joas Schilling 99a2a31fa8 build(deps): Bump pimple/pimple from 3.5.0 to 3.6.0
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-12-17 10:52:25 +01:00
Carl Schwan 18964750f9 fix(openapi): Fix returned types from external share
We always been returning an int for for accepted, but since it was
returned as a mixed from the DB, psalm never complained about the fact
this was typed as a bool in the API doc.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-17 10:14:41 +01:00
Carl Schwan a011cb7780 refactor: Rename some variables in external share's manager
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-17 10:14:40 +01:00
Carl Schwan bfb7e7dd8e refactor: Add more typing to integration context code
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-17 10:14:40 +01:00
Carl Schwan df2f3a8422 refactor(integration): Refactor and fix federation integration tests
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-17 10:14:35 +01:00
Nextcloud bot 5c7f52f40e fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-17 00:13:28 +00:00
Thomas Citharel 8482302e42 fix(lib): include headers from OC\Template\Template as well in produced HTML
Otherwise we only take those added through deprecated method C_Util::addHeader, not those of
OC\Template\Template::addHeader, which does nothing

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2025-12-16 23:01:38 +01:00
Daniel 61dc0bbff0 Merge pull request #56733 from nextcloud/3rdparty/sabre-vobject-rdate-patch
fix: Add sabre vobject rdate patch
2025-12-16 22:14:46 +01:00
SebastianKrupinski ce3f458ccc fix: Add sabre vobject rdate patch
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2025-12-16 15:28:23 -05:00
Git'Fellow b9d55ba30c fix(IpNormalizer): Added inet_pton() check before bitwise operations
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2025-12-16 15:06:59 +01:00
Côme Chilliet c11cc64470 chore: update psalm baseline
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-12-16 11:09:46 +01:00
Côme Chilliet a6184661bd feat(encryption): Support running decrypt-all when encryption is already disabled
This was an arbitrary limitation since the first thing the command does
 is disabling encryption anyway, it makes little sence to force the admin
 to enable encryption first.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-12-16 11:09:46 +01:00
Maxence Lange 981e987bd0 fix(team-manager): team is already teamid
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-12-16 08:56:46 -01:00
Kate 1829269f9d Merge pull request #56933 from nextcloud/fix/duplicate-mounts 2025-12-16 10:44:32 +01:00
Carl Schwan 3183ea79d2 refactor(external-share): Port more code to string as type for the id
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-16 10:40:09 +01:00
Carl Schwan 91d3c63222 fix: Remove auto increment from share_external
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-16 10:40:09 +01:00
Carl Schwan 3bdb344224 perf(external-sharing): Port to Entity and SnowflakeId
This removes all the read after write and we don't need to queries all
the time the same share in the same request anymore.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-16 10:40:07 +01:00
Carl Schwan 93b258317d refactor: use DI-injected logger instead of Server::get
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-16 10:38:30 +01:00
Carl Schwan aadf842039 fix: Revert change to the cloud integration
This might fixes the test.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-16 10:38:30 +01:00
Carl Schwan b573d8a58b fix(sharing): Adapt Hooks to new API
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-16 10:38:30 +01:00
Carl Schwan 6945a030f5 refactor(OC_Helper): remove buildNotExistingFileNameForView
Move the functionality in the last place it is used OC\Files\Node\Folder

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-16 10:38:29 +01:00
Carl Schwan 7b0f1c6dd0 refactor(external-share): Cleanup OCA\FIles_Sharing\External\Manager
- Port away from Files::buildNotExistingFileName
- Use IUser and IGroup instead of plain string

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-16 10:38:29 +01:00
Kate 5f6e6b305f Merge pull request #57098 from nextcloud/fix/deprecate-ISystemTagManagerFactory 2025-12-16 10:26:32 +01:00
Marcel Klehr 3579c5a6a0 Merge pull request #57094 from nextcloud/fix/snowflake_file_seq
fix(snowflakes): FileSequence generator must always use the same dir
2025-12-16 09:21:12 +01:00
provokateurin f9157c85c2 test(DeleteOrphanedFilesTest): Improve counting mounts
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-12-16 09:11:27 +01:00
Nextcloud bot 05eb4cbf46 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-16 00:13:56 +00:00
Côme Chilliet 197db6aa86 Merge pull request #55813 from nextcloud/fix/fix-infinite-loop-in-share-manager
fix(shares): Fix infinite loop when all shares are invalid
2025-12-15 20:17:26 +01:00
Kate 10fa17938e Merge pull request #57096 from nextcloud/jtr/fix-uploadhome-childexists 2025-12-15 20:15:34 +01:00
Daniel Calviño Sánchez a1c2a25d9d Merge pull request #56922 from nextcloud/fix-phpunit-11-use-in-behat
test: Fix PHPUnit 11 use in Behat
2025-12-15 19:15:12 +01:00
Peter Ringelmann bfd7138133 fix(settings): reset limit to groups state when switching apps
Signed-off-by: Peter Ringelmann <4850521+Pringels@users.noreply.github.com>
2025-12-15 19:00:46 +01:00
Ferdinand Thiessen 58437decb2 Merge pull request #57051 from nextcloud/ci/32bit-save
ci(32bit): use custom image to run PHP unit tests on 32bit
2025-12-15 17:50:15 +01:00
Stephan Orbaugh 582bb11eae Merge pull request #55631 from nextcloud/carl/deprecate-config-user-correctly
refactor: Deprecated user config from IConfig correctly
2025-12-15 17:30:52 +01:00
Côme Chilliet c8ce13236e chore: Deprecate unused ISystemTagManagerFactory, DI is enough
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-12-15 17:28:51 +01:00
Côme Chilliet 3e8502d239 fix(shares): Fix infinite loop when hide_disabled_user_shares is yes
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-12-15 17:02:52 +01:00
Josh c6dd592d60 fix(dav): catch NotFound exception in UploadHome::childExists()
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-15 10:57:47 -05:00
Benjamin Gaussorgues fa7e569a16 fix(snowflakes): FileSequence generator must always use the same dir
`TempManager::getTemporaryFolder` is returning a random directory.
FileSequence needs always the same directory, even if different
processes.

Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2025-12-15 15:58:15 +01:00
Ferdinand Thiessen 922c3e01c7 chore: diable composer timeout
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-15 15:46:11 +01:00
Ferdinand Thiessen 958492d8af ci(32bit): use custom image to run PHP unit tests on 32bit
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-15 15:45:33 +01:00
Marcel Klehr b15e294a6e Merge pull request #57004 from nextcloud/fix/taskprocessing-increase-text-limit
fix(TaskProcessing): Increase EShapeType::Text limit to 256_000 KB
2025-12-15 12:48:53 +01:00
provokateurin 341fd348e6 fix(UserMountCache): Add back unique index for oc_mounts and use normal insert
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-12-15 12:26:23 +01:00
Kate db530d1eae Merge pull request #56921 from nextcloud/fix-caching-routes-by-users-with-an-active-session 2025-12-15 10:53:04 +01:00
Kate 9350a6798c Merge pull request #57084 from nextcloud/carl/fix-32-bits-job 2025-12-15 09:23:06 +01:00
Carl Schwan 8034de84aa fix(jobs): Fix 32 bits jobs
Specifying the type to int force a convertion from string to int which
fails on 32 bits for snowflake ids.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-15 08:41:26 +01:00
Marcel Klehr 0745731806 fix(TaskProcessing): Increase EShapeType::Text limit to 256_000 KB
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-12-15 07:53:26 +01:00
Nextcloud bot b7ef5d5855 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-15 00:13:26 +00:00
Nextcloud bot 0580014b73 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-14 00:13:27 +00:00
Daniel Calviño Sánchez 19c9d88970 test: Fix PHPUnit 11 use in Behat
Starting with PHPUnit 11.3, some complex outputs of certain asserts
(like "assertStringContainsString") require the output of PHPUnit to be
explicitly setup. Otherwise when the assert fails a type error is
thrown (although it does not seem to affect asserts with simpler
outputs, like "assertEquals").

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-12-13 01:22:30 +01:00
Nextcloud bot 48f7dac9b9 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-13 00:13:29 +00:00
Ferdinand Thiessen 0fe787558e Merge pull request #57010 from nextcloud/fix/breaking-points
fix(css): correct boundaries of breaking points
2025-12-12 21:38:21 +01:00
Daniel d957f6190c Merge pull request #57017 from nextcloud/fix/do-not-truncate-birthday-year-to-1970
fix: do not truncate birth year to 1970
2025-12-12 16:41:03 +01:00
Daniel Calviño Sánchez 51ed61bb4a fix: Fix caching routes by users with an active session
When a user has an active session only the apps that are enabled for the
user are initially loaded. In order to cache the routes the routes for
all apps are loaded, but routes defined in routes.php are taken into
account only if the app was already loaded. Therefore, when the routes
were cached in a request by a user with an active session only the
routes for apps enabled for that user were cached, and those routes were
used by any other user, independently of which apps they had access to.
To solve that now all the enabled apps are explicitly loaded before
caching the routes.

Note that this did not affect routes defined using annotations on the
controller files; in that case the loaded routes do not depend on the
previously loaded apps, as it explicitly checks all the enabled apps.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-12-12 16:10:20 +01:00
Daniel Calviño Sánchez de7ddb6e1c test: Fix recording app state when admin is not the current user
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-12-12 16:10:20 +01:00
Daniel Calviño Sánchez 0ba2f5e537 Revert "fix(CachingRouter): Disable cache for findMatchingRoute"
This reverts commit 90948f5096.

It temporary disabled cache for routes until an actual fix was added,
which is done in the following commits.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-12-12 16:06:47 +01:00
Kate 400ade585d Merge pull request #57042 from nextcloud/fix/restrict-enumeration-userid 2025-12-12 15:52:07 +01:00
Julius Knorr a45f4b0cdc fix: Fix setting name inconsistency between backend and frontend
Signed-off-by: Julius Knorr <jus@bitgrid.net>
2025-12-12 13:08:34 +01:00
Joas Schilling 0edaff9426 Merge pull request #57031 from nextcloud/automated/noid/master-update-code-signing-crl
[master] fix(security): Update code signing revocation list
2025-12-12 07:46:15 +01:00
Ferdinand Thiessen d9d8449340 Merge pull request #57012 from nextcloud/refactor/oauth2-to-vue3
refactor(oauth2): migrate to Typescript and Vue 3
2025-12-12 04:44:56 +01:00
nextcloud-command 2c62e695ba fix(security): Update code signing revocation list
Signed-off-by: GitHub <noreply@github.com>
2025-12-12 02:43:46 +00:00
Nextcloud bot 09dfa965b4 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-12 00:13:50 +00:00
Ferdinand Thiessen ad23c85d0c chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-12 00:44:42 +01:00
Ferdinand Thiessen 6a570c0133 refactor(oauth2): migrate to Typescript and Vue 3
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-12 00:42:15 +01:00
Ferdinand Thiessen 6d7a7f3146 Merge pull request #56942 from nextcloud/refactor/federatedfilessharing-vue3
refactor(federatedfilesharing): migrate to Typescript and Vue 3
2025-12-12 00:25:42 +01:00
SebastianKrupinski 7c266d9f23 fix: do not truncate birth year to 1970
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2025-12-11 13:59:28 -05:00
Ferdinand Thiessen e1b9723428 chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-11 19:46:47 +01:00
Ferdinand Thiessen 9edcc864fe test: use istanbul coverage provider
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-11 19:46:47 +01:00
Ferdinand Thiessen 14f52a2303 refactor(federatedfilesharing): migrate to Typescript and Vue 3
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-11 19:08:44 +01:00
Louis 3efb1d80e9 Merge pull request #56646 from nextcloud/fix/no_double_admin_delegations
fix(admin-delegation): Prevent delegation to group if delegation already
2025-12-11 17:45:12 +01:00
John Molakvoæ 52e3762045 Merge pull request #56743 from nextcloud/chore/files-4-0-0 2025-12-11 17:36:51 +01:00
Ferdinand Thiessen 2eaf18dd49 chore: compile assets
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-11 14:31:10 +01:00
Ferdinand Thiessen a95d781989 fix(css): correct boundaries of breaking points
We mixed the logic of breaking points (when to break),
this makes it consistent:
Mobile breaking point is 1024px, so it is applied to width < 1024 and starting with 1024 its "normal".

So we consistently have:
width < 512px: small mobile
512 <= width < 1024px: mobile
width >= 1024px: normal

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-11 14:28:15 +01:00
Stephan Orbaugh 282341a8d6 Merge pull request #55738 from nextcloud/carl/cleanup-preview-command
fix(preview-cleanup): Also delete previews stored in the oc_previews table
2025-12-11 14:07:50 +01:00
Stephan Orbaugh a7a64de6e6 Merge pull request #54441 from nextcloud/fix/directoryAsINodeByPath
Add INodeByPath to Directory
2025-12-11 14:07:23 +01:00
Carl Schwan 1661855f5b refactor: Make some code a bit more correct
- Use PHP_FLOAT_EPSILON for float comparaison
- Simplify some getValueBool code

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-11 13:27:50 +01:00
Carl Schwan 0744d1cf6b fix(IConfig): Change deprecation release to 33.0.0
The implementation was deprecated in 31.0.0 but since this wasn't done on
the interface, this is considered invalid. So change that to 33.0.0.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-11 13:27:50 +01:00
Carl Schwan 2ae9626fec refactor(user_ldap): Port most of the remaining deprecated IConfig usage
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-11 13:27:48 +01:00
Carl Schwan e04072cc54 refactor(weather_status): Port WeatherStatusService to IUserConfig
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-11 13:27:48 +01:00
Carl Schwan 14daf4ca16 refactor(user_ldap): Port User\User to IUserConfig
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-11 13:27:48 +01:00
Carl Schwan 6eabaaf104 refactor: Deprecated user config from IConfig correctly
Mark the methods in the interface deprecated instead of just the one in
the implementation.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-11 13:27:47 +01:00
skjnldsv 2c4b5c6b68 chore: compile assets
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-12-11 12:56:02 +01:00
skjnldsv 7aa6a74b31 chore: update @nextcloud/vue
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-12-11 12:44:17 +01:00
skjnldsv 0eadf1753d fix(settings): adjust systemtags handling and tests
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-12-11 12:44:17 +01:00
skjnldsv 492bdb7010 chore: update @nextcloud/files to 4.0.0
Signed-off-by: skjnldsv <skjnldsv@protonmail.com>
2025-12-11 12:44:16 +01:00
F. E Noel Nfebe d15feb4ba6 Merge pull request #56977 from nextcloud/fix/federated-share-display-in-shared-with-you
fix(files_sharing): Normalize dir type to folder for federated shares
2025-12-11 11:31:34 +01:00
nextcloud-command b92b3e7940 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-11 09:57:48 +00:00
nfebe 13df65850e fix(files_sharing): Normalize dir type to folder for federated shares
The backend returns type 'dir' for folders (from FileInfo::TYPE_FOLDER),
but the frontend expects 'folder'. This mismatch caused federated shared
folders to display incorrectly as files in the "Shared with you" view.

Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-12-11 10:49:41 +01:00
Arthur Schiwon f892437210 Merge pull request #56982 from nextcloud/bugfix/noid/check-comment-object
fix(comments): Check comment object
2025-12-11 09:37:43 +01:00
Joas Schilling 69e6b6a483 fix(comments): Check comment object
Signed-off-by: Joas Schilling <coding@schilljs.com>
2025-12-11 07:55:55 +01:00
github-actions[bot] 0fd888da09 Merge pull request #56980 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/nextcloud/logger-3.0.3
build(deps): bump @nextcloud/logger from 3.0.2 to 3.0.3 in /build/frontend-legacy
2025-12-11 01:21:22 +00:00
github-actions[bot] 986af30032 Merge pull request #56981 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/sass-1.95.1
build(deps-dev): bump sass from 1.94.2 to 1.95.1 in /build/frontend-legacy
2025-12-11 00:17:54 +00:00
Nextcloud bot c4c247d535 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-11 00:13:43 +00:00
nextcloud-command aeca72538a chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-10 23:50:34 +00:00
dependabot[bot] f839d7825a build(deps-dev): bump sass in /build/frontend-legacy
Bumps [sass](https://github.com/sass/dart-sass) from 1.94.2 to 1.95.1.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.94.2...1.95.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-10 23:27:49 +00:00
dependabot[bot] 5682ff4479 build(deps): bump @nextcloud/logger in /build/frontend-legacy
Bumps [@nextcloud/logger](https://github.com/nextcloud-libraries/nextcloud-logger) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/nextcloud-libraries/nextcloud-logger/releases)
- [Changelog](https://github.com/nextcloud-libraries/nextcloud-logger/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nextcloud-libraries/nextcloud-logger/compare/v3.0.2...v3.0.3)

---
updated-dependencies:
- dependency-name: "@nextcloud/logger"
  dependency-version: 3.0.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-10 23:27:38 +00:00
Elizabeth Danzberger 070ec61759 Merge pull request #56722 from nextcloud/fix/deduplicate-templates
fix(templates): deduplicate provider templates
2025-12-10 18:21:40 -05:00
Elizabeth Danzberger 3a89c18888 fix(templates): deduplicate provider templates
Signed-off-by: Elizabeth Danzberger <elizabeth@elzody.dev>
2025-12-10 16:06:21 -05:00
F. E Noel Nfebe 186b12b718 Merge pull request #56620 from nextcloud/fix/filter-interaction-issues
fix(unified-search): prevent provider disabling on content filter apply
2025-12-10 20:07:46 +01:00
github-actions[bot] a86a2a070e Merge pull request #56890 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/libphonenumber-js-1.12.31
build(deps): bump libphonenumber-js from 1.12.29 to 1.12.31 in /build/frontend-legacy
2025-12-10 18:52:47 +00:00
github-actions[bot] 8f82ad358a Merge pull request #56946 from nextcloud/dependabot/composer/vendor-bin/rector/rector/rector-2.2.14
build(deps-dev): bump rector/rector from 2.2.9 to 2.2.14 in /vendor-bin/rector
2025-12-10 19:42:19 +01:00
github-actions[bot] 9af153f5b7 Merge pull request #56950 from nextcloud/dependabot/npm_and_yarn/sass-1.95.1
build(deps-dev): bump sass from 1.94.2 to 1.95.1
2025-12-10 19:41:51 +01:00
nextcloud-command 4a5bacc8c7 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-10 18:00:26 +00:00
Andy Scherzinger d50828aa92 Merge pull request #56887 from nextcloud/dependabot/npm_and_yarn/vitest-afa725de22
build(deps-dev): bump the vitest group across 2 directories with 2 updates
2025-12-10 18:57:16 +01:00
github-actions[bot] 258670de61 Merge pull request #56748 from nextcloud/dependabot/composer/bamarni/composer-bin-plugin-1.8.3
build(deps-dev): bump bamarni/composer-bin-plugin from 1.8.2 to 1.8.3
2025-12-10 17:56:30 +00:00
dependabot[bot] 7f76a6d4aa build(deps): bump libphonenumber-js in /build/frontend-legacy
Bumps [libphonenumber-js](https://gitlab.com/catamphetamine/libphonenumber-js) from 1.12.29 to 1.12.31.
- [Changelog](https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/CHANGELOG.md)
- [Commits](https://gitlab.com/catamphetamine/libphonenumber-js/compare/v1.12.29...v1.12.31)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-10 18:51:25 +01:00
github-actions[bot] edbcb6af6f Merge pull request #56956 from nextcloud/dependabot/npm_and_yarn/vite-1f75bea169
build(deps-dev): bump the vite group across 2 directories with 1 update
2025-12-10 18:50:20 +01:00
F. E Noel Nfebe b07801a2b5 Merge pull request #56652 from nextcloud/fix/federated-share-external-filter
fix(sharing): allow federated shares to non-trusted servers
2025-12-10 18:41:05 +01:00
Salvatore Martire 871262d6f6 chore: update 3rdparty
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-12-10 18:30:44 +01:00
Salvatore Martire 2a4ee2df9f fix: add INodeByPath to Directory
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-12-10 18:30:44 +01:00
Salvatore Martire aaf07ab73e Merge pull request #55072 from nextcloud/feature/54562/pathSpecificFSSetup
Introduces support for mount providers that can provide a partial list of mount points based on a path and the information related to mounts present in that path.
2025-12-10 18:28:15 +01:00
nextcloud-command 5de1d46be4 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-10 17:20:09 +00:00
nextcloud-command cf56d6325a chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-10 17:13:01 +00:00
nfebe 08382282ea fix(sharing): allow federated shares to non-trusted servers
When `showFederatedSharesToTrustedServersAsInternal` is enabled, the
trusted server filter was incorrectly applied to both internal and
external sharing sections. This prevented users from sharing with
federated users on non-trusted servers via the external share UI.

The filter now only applies to the internal section, allowing
non-trusted federated shares to appear in the external section.

Fixes: https://github.com/nextcloud/server/issues/56622

Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-12-10 17:41:11 +01:00
nfebe f035ff3d3a fix(unified-search): Separate filtered and unfiltered results
Show results from providers that don't support active content filters
(date/person) in a separate "Additional results" section with a note
explaining that some filters may have been ignored.

Changes:
- Add computed properties to separate filtered/unfiltered results
- Track filter compatibility using baseProvider for searchFrom providers
- Deduplicate results by resourceUrl across sections
- Skip in-folder results when at root to avoid duplicating Files results
- Fix providerIsCompatibleWithFilters to check correct filter properties
- Add styling for the unfiltered results section

Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-12-10 17:30:32 +01:00
nfebe 61ebc6e251 fix(unified-search): prevent provider disabling on content filter apply
When date range or person filters were applied, providers that didn't
support these filters were automatically disabled in the UI. This made
the in-folder filter appear auto-applied and prevented users from
searching non-compatible providers.

Remove automatic provider disabling logic from updateDateFilter(),
applyPersonFilter(), and removeFilter(). Content filters now apply only
to compatible providers via existing compatibility checks while keeping
all providers available for selection.

Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-12-10 17:30:32 +01:00
dependabot[bot] 6bde5db7da build(deps-dev): bump bamarni/composer-bin-plugin from 1.8.2 to 1.8.3
Bumps [bamarni/composer-bin-plugin](https://github.com/bamarni/composer-bin-plugin) from 1.8.2 to 1.8.3.
- [Release notes](https://github.com/bamarni/composer-bin-plugin/releases)
- [Commits](https://github.com/bamarni/composer-bin-plugin/compare/1.8.2...1.8.3)

---
updated-dependencies:
- dependency-name: bamarni/composer-bin-plugin
  dependency-version: 1.8.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-10 17:13:00 +01:00
Salvatore Martire d14a032220 feat: implement support for authoritative mount providers
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-12-10 16:05:27 +01:00
Salvatore Martire fcdb28e4a3 feat: add IPartialMountProvider to support authoritative mounts
IMountProviders implementing this interface will be able to take
advantage of authoritative mounts.

The function `getMountsFromMountPoints` will receive the path that
the provider is asked to set-up and an array of IMountProviderArgs
providing information regarding the stored mount points and the
file cache data for the related root. The mount provider should verify
the validity of the mounts and return IMountPoints related to them.

Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-12-10 16:05:27 +01:00
Salvatore Martire 9b519b4679 refactor: simplify code
replace array_reduce + array_merge with array_merge(...)
replace conditional assignment with ??=

Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-12-10 16:05:27 +01:00
Salvatore Martire f47a586cdd docs: update comments
Signed-off-by: Salvatore Martire <4652631+salmart-dev@users.noreply.github.com>
2025-12-10 16:05:27 +01:00
Daniel ac4e82d2a5 Merge pull request #56925 from nextcloud/fix/dav/escape-summary-description-location
fix(dav): handle HTML in CalDAV invitations
2025-12-10 15:09:16 +01:00
Misha M.-Kupriyanov 770ad6249e fix(admin-delegation): Prevent delegation to group if delegation already exist
Signed-off-by: Misha M.-Kupriyanov <kupriyanov@strato.de>
2025-12-10 15:08:53 +01:00
nextcloud-command 161e59929a chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-10 13:29:31 +00:00
Carl Schwan 247b66c5ee fix(preview-cleanup): Also delete previews stored in the oc_previews table
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-10 13:49:24 +01:00
Christoph Wurst dac8818102 fix(dav): handle HTML in CalDAV invitations
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2025-12-10 12:51:18 +01:00
dependabot[bot] 08b39e2585 build(deps-dev): bump the vite group across 2 directories with 1 update
Bumps the vite group with 1 update in the / directory: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).
Bumps the vite group with 1 update in the /build/frontend-legacy directory: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite).


Updates `vite` from 7.2.4 to 7.2.7
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v7.2.7/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.2.7/packages/vite)

Updates `vite` from 7.2.4 to 7.2.7
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v7.2.7/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.2.7/packages/vite)

Updates `vite` from 7.2.4 to 7.2.7
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v7.2.7/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.2.7/packages/vite)

Updates `vite` from 7.2.4 to 7.2.7
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v7.2.7/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.2.7/packages/vite)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-10 10:53:40 +00:00
dependabot[bot] 24c0f4b06d build(deps-dev): bump the vitest group across 2 directories with 2 updates
Bumps the vitest group with 1 update in the / directory: [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8).
Bumps the vitest group with 1 update in the /build/frontend-legacy directory: [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8).


Updates `@vitest/coverage-v8` from 4.0.14 to 4.0.15
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.15/packages/coverage-v8)

Updates `vitest` from 4.0.14 to 4.0.15
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.15/packages/vitest)

Updates `@vitest/coverage-v8` from 4.0.14 to 4.0.15
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.15/packages/coverage-v8)

Updates `vitest` from 4.0.14 to 4.0.15
- [Release notes](https://github.com/vitest-dev/vitest/releases)
- [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.15/packages/vitest)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-10 10:52:33 +00:00
dependabot[bot] 077cb3ebba build(deps-dev): bump sass from 1.94.2 to 1.95.1
Bumps [sass](https://github.com/sass/dart-sass) from 1.94.2 to 1.95.1.
- [Release notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sass/dart-sass/compare/1.94.2...1.95.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-10 10:51:34 +00:00
dependabot[bot] 3c809eaceb build(deps-dev): bump rector/rector in /vendor-bin/rector
Bumps [rector/rector](https://github.com/rectorphp/rector) from 2.2.9 to 2.2.14.
- [Release notes](https://github.com/rectorphp/rector/releases)
- [Commits](https://github.com/rectorphp/rector/compare/2.2.9...2.2.14)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-10 10:50:45 +00:00
Ferdinand Thiessen 496404de56 Merge pull request #56718 from nextcloud/chore/move-behat-to-vendor-bin
chore: move behat dependencies to vendor-bin
2025-12-10 11:49:42 +01:00
Joas Schilling da1dd481e9 Merge pull request #56900 from nextcloud/fix/noid/allow-macos-on-ci
fix: Allow installation on macOS CI
2025-12-10 11:39:21 +01:00
Josh b2bc785986 chore: make php-cs happy
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-09 22:26:16 -05:00
Nextcloud bot f3c56f051a fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-10 00:13:59 +00:00
Ferdinand Thiessen e0e2d0fd2e chore: drop usage of -integration docker image
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-10 01:13:50 +01:00
Ferdinand Thiessen 65135bba31 chore: move behat dependencies to vendor-bin
So we do not have 3 locatations to look for PHP dependencies.

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
2025-12-10 01:13:50 +01:00
Daniel Calviño Sánchez fbe2023d39 fix: Unify handling of exclude groups in contacts menu and sharing
If the current user belongs to both one or more groups excluded from
sharing and one or more groups not excluded from sharing the user is
allowed to share. However, in the contacts menu, as soon as the current
user belonged to a group excluded from sharing the user could not search
for local contacts. This has been unified now with the sharing
behaviour, so local contacts can still be searched if the user also
belongs to a group not excluded from sharing (or to no group at all,
which was also allowed before).

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-12-09 19:16:59 +01:00
Daniel Calviño Sánchez d59d8db1d6 test: Add unit test for excluded groups in contacts menu
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-12-09 19:16:59 +01:00
Daniel Calviño Sánchez 694651de3a test: Adjust unit test name to better reflect its behaviour
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-12-09 19:16:59 +01:00
Daniel Calviño Sánchez 70ed393b34 test: Add integration tests for excluded groups in contacts and sharees
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2025-12-09 19:16:59 +01:00
Sebastian Krupinski 75edec9d6c Merge pull request #56784 from nextcloud/fix/calendar-subscription-memory-exhaustion
fix: calendar subscription memory exhaustion
2025-12-09 13:08:24 -05:00
SebastianKrupinski 1a0535aa75 fix: calendar subscription memory exhaustion
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2025-12-09 12:36:16 -05:00
Sebastian Krupinski 4185dfb599 Merge pull request #55415 from nextcloud/fix/issue-legal-footer
fix: legal footer on public page
2025-12-09 12:05:35 -05:00
SebastianKrupinski 162ebfaf3c fix: legal footer on public page
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
2025-12-09 11:21:03 -05:00
Kate 6277ecf480 Merge pull request #56862 from abhinavohri/56609 2025-12-09 16:02:18 +01:00
Josh e476a22a50 fix(file/types): Preserve keys (including numeric-looking ones)
Replace array_merge with array_replace for definitions

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-09 09:22:04 -05:00
Josh 50a94a35ee test(files/type): leading zero extension preservation
- adds a focused DetectionTest that ensures numeric-looking keys (e.g. "001") are preserved
- refactors filesystem tests to use an isolated temp dir with proper cleanup

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-09 09:22:04 -05:00
Abhinav Ohri f78e2a33ea test(settings): add missing logger parameter to MailSettingsController test
Signed-off-by: Abhinav Ohri <abhinavohri13@gmail.com>
2025-12-09 18:34:29 +05:30
Marcel Klehr f967134f58 Merge pull request #56928 from nextcloud/fix/taskprocessing-ocr
fix(TaskProcessing): Adjust OCR task type to allow for multiple files and pdfs
2025-12-09 13:52:57 +01:00
Andy Scherzinger 71c2e94123 Merge pull request #54436 from nextcloud/s3-signed-url
perf(s3): Provide direct pre-signed download link
2025-12-09 12:38:20 +01:00
Carl Schwan b6313f68d3 perf(s3): Expose pre-signed urls for S3
This is faster than going back to nextcloud to download the files.

This is an opt-in setting that can be enabled by setting
use_presigned_url in the object store config.

Additionally add support for the proxy config which is needed in a
docker setup. See https://github.com/juliusknorr/nextcloud-docker-dev/pull/431

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-09 11:21:35 +01:00
Benjamin Gaussorgues d343207b25 Merge pull request #56926 from nextcloud/fix/CachingRouter/disable-cache-find-matching 2025-12-09 10:18:58 +01:00
Marcel Klehr 25044f82ae fix(TaskProcessing): Adjust OCR task type to allow for multiple files and pdfs
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-12-09 09:21:33 +01:00
provokateurin 90948f5096 fix(CachingRouter): Disable cache for findMatchingRoute
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-12-09 09:16:01 +01:00
Nextcloud bot 65d008b40c fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-09 00:13:32 +00:00
Daniel b7b4a3a6d7 Merge pull request #56908 from nextcloud/feat/tasktype-ocr
feat(TaskProcessing): Add OCR TaskType
2025-12-08 17:53:00 +01:00
Marcel Klehr 3355e6a2f7 feat(TaskProcessing): Add OCR TaskType
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
2025-12-08 17:44:37 +01:00
F. E Noel Nfebe 1158319acb Merge pull request #56740 from nextcloud/fix/sharing-password-removal
fix(files_sharing): Allow removing password from link shares
2025-12-08 14:31:11 +01:00
Kate 66d07f4ddd Merge pull request #56896 from nextcloud/fix/flake/eol-php-versions 2025-12-08 14:17:48 +01:00
nextcloud-command f46f41eabc chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-08 12:42:57 +01:00
nfebe 8e7cbcea40 fix(files_sharing): Allow removing password from link shares
Fixes regression from a28834b163

Signed-off-by: nfebe <fenn25.fn@gmail.com>
2025-12-08 12:42:57 +01:00
Andy Scherzinger 2c6d3d6f76 Merge pull request #56628 from nextcloud/carl/snowflake/jobs
feat: Port jobs table to snowflakes ids
2025-12-08 12:23:44 +01:00
Kate c0a4098f14 Merge pull request #56490 from nextcloud/automated/noid/-update-min-supported-desktop-version 2025-12-08 07:07:53 +01:00
nextcloud-command 40c504ec2d chore: Update minimum supported desktop version
Signed-off-by: GitHub <noreply@github.com>
2025-12-08 00:32:02 +00:00
Nextcloud bot ca52687b73 fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-08 00:13:27 +00:00
Marcel Müller ae85eab73c fix: Allow installation on macOS CI
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
2025-12-07 13:32:43 +01:00
Abhinav Ohri 980c243132 fix(settings): log exception when test email fails
Signed-off-by: Abhinav Ohri <abhinavohri13@gmail.com>
2025-12-07 17:36:22 +05:30
Abhinav Ohri babab821a7 fix(settings): improve mail test error handling and logging
Signed-off-by: Abhinav Ohri <abhinavohri13@gmail.com>
2025-12-07 15:06:14 +05:30
Nextcloud bot bbca4fe56e fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-07 00:13:27 +00:00
provokateurin 8136b14d81 fix(flake): Allow using EOL PHP versions
Signed-off-by: provokateurin <kate@provokateurin.de>
2025-12-06 14:49:05 +01:00
Nextcloud bot de381f3b5a fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-06 00:13:28 +00:00
Louis 8ec73e1976 Merge pull request #56726 from nextcloud/artonge/fix/user_ldap/deleting_and_initial_config
fix(user_ldap): Improve case where selected config is undefined
2025-12-05 20:26:25 +01:00
Kate 842df498e0 Merge pull request #56816 from nextcloud/jtr/chore-legacy-drop-mac-checker 2025-12-05 17:42:38 +01:00
Joas Schilling 594d22021a Merge pull request #56076 from nextcloud/carl/cleanup-comment
refactor(comment): Port away from deprecated event comment constant
2025-12-05 11:38:08 +01:00
github-actions[bot] 9d04624fe2 Merge pull request #56785 from nextcloud/dependabot/npm_and_yarn/mdast-util-to-hast-13.2.1
build(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1
2025-12-05 10:15:01 +01:00
github-actions[bot] 309e714f14 Merge pull request #56751 from nextcloud/dependabot/npm_and_yarn/stylelint-16.26.1
build(deps-dev): bump stylelint from 16.26.0 to 16.26.1
2025-12-05 08:02:37 +00:00
dependabot[bot] 61b74102a5 build(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1
Bumps [mdast-util-to-hast](https://github.com/syntax-tree/mdast-util-to-hast) from 13.2.0 to 13.2.1.
- [Release notes](https://github.com/syntax-tree/mdast-util-to-hast/releases)
- [Commits](https://github.com/syntax-tree/mdast-util-to-hast/compare/13.2.0...13.2.1)

---
updated-dependencies:
- dependency-name: mdast-util-to-hast
  dependency-version: 13.2.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-05 08:07:17 +01:00
github-actions[bot] 818ce6ded2 Merge pull request #56860 from nextcloud/dependabot/npm_and_yarn/build/frontend-legacy/mdast-util-to-hast-13.2.1
build(deps): bump mdast-util-to-hast from 13.2.0 to 13.2.1 in /build/frontend-legacy
2025-12-05 08:06:25 +01:00
nextcloud-command 93d1684617 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-05 06:37:53 +00:00
dependabot[bot] 040bdbaf28 build(deps): bump mdast-util-to-hast in /build/frontend-legacy
Bumps [mdast-util-to-hast](https://github.com/syntax-tree/mdast-util-to-hast) from 13.2.0 to 13.2.1.
- [Release notes](https://github.com/syntax-tree/mdast-util-to-hast/releases)
- [Commits](https://github.com/syntax-tree/mdast-util-to-hast/compare/13.2.0...13.2.1)

---
updated-dependencies:
- dependency-name: mdast-util-to-hast
  dependency-version: 13.2.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-05 06:02:48 +00:00
Nextcloud bot 5fcf28942f fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2025-12-05 00:13:36 +00:00
Daniel 9e455f0650 Merge pull request #56032 from nextcloud/carl/share-manager-correct-return-type
refactor(share-manager): Make return type more precise
2025-12-04 23:24:49 +01:00
Josh 511f54324a chore: drop unused Darwin range test variation
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-04 16:48:42 -05:00
Josh d95ce6ac92 chore: drop no longer needed runningOnMac method
Removed deprecated method 'runningOnMac' that checks if PHP is running on macOS.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-04 16:46:55 -05:00
Carl Schwan 8bbd30693c refactor(share-manager): Make return type more precise
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-04 21:39:25 +01:00
dependabot[bot] 4fce62376e build(deps-dev): bump stylelint from 16.26.0 to 16.26.1
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.26.0 to 16.26.1.
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.26.0...16.26.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-04 19:05:45 +01:00
Andy Scherzinger 3cdfe6dbfa Merge pull request #56790 from nextcloud/refactor/password-confirm-attribute-getstrict
refactor: improve reflection attribute typing
2025-12-04 19:04:27 +01:00
nextcloud-command 5e5ed7d912 chore(assets): Recompile assets
Signed-off-by: nextcloud-command <nextcloud-command@users.noreply.github.com>
2025-12-04 17:19:05 +00:00
Louis Chmn 291ec1e474 fix(user_ldap): Fix activation enforcement when testing the config
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-12-04 17:16:21 +00:00
Louis Chmn ae8b6290e1 fix(user_ldap): Improve case where selected config is undefined
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-12-04 17:16:21 +00:00
Louis Chmn 75312017d4 fix(user_ldap): Disable some buttons when clicking them would lead to an issue
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-12-04 17:16:21 +00:00
Louis Chmn 2174e0b4fe fix(user_ldap): Properly update local variable for username and password in server settings
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-12-04 17:16:21 +00:00
Louis Chmn b801f583d8 fix(user_ldap): Properly use fall back message in case of empty response
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-12-04 17:16:21 +00:00
Louis Chmn 06c10586b7 fix(user_ldap): Properly handle new config creation in settings
Signed-off-by: Louis Chmn <louis@chmn.me>
2025-12-04 17:16:21 +00:00
Louis 189e1fcf22 Merge pull request #56834 from nextcloud/artonge/feat/repair_tree_path_and_storage
feat(files): Add support for `storage-id` and `path` in RepairTree command
2025-12-04 18:06:07 +01:00
Carl Schwan 3c9b937e28 refactor(comment): Port away from deprecated event comment constant
Create new events to replace deprecated CommentsEvent constant and use
them when creating CommentsEvents.

On the listener side, we can't yet use these events as deck still send
the old events.

Also fixes some issues reported by psalm level 3 on the comment app.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-04 17:38:53 +01:00
Christoph Wurst 8a581c230b refactor: improve reflection attribute typing
This allows tools to see the correct usage of
PasswordConfirmationRequired::getStrict

Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2025-12-04 17:37:47 +01:00
Andy Scherzinger 1ef465f804 Merge pull request #56251 from nextcloud/carl/template-manager-cleanup
refactor(template-manager): Modernize template manager API
2025-12-04 17:26:53 +01:00
Carl Schwan 0e686fc6a9 feat: Port jobs table to snowflakes ids
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-04 17:16:12 +01:00
Côme Chilliet aeed32cfba Merge pull request #56843 from nextcloud/feat/add-cli-details-to-log
feat(log): Add script name and occ command to log details
2025-12-04 17:06:00 +01:00
Daniel 73017f564a Merge pull request #56768 from nextcloud/feat/log-cache-events-to-audit
feat(admin_audit): Log cache insert/delete to audit log
2025-12-04 16:53:29 +01:00
Maxence Lange b18372e637 Merge pull request #56668 from nextcloud/fix/noid/real-account-on-deleted-federation
fix(trashbin): deletedBy of a file from a federated folder
2025-12-04 13:46:43 -01:00
Côme Chilliet cb80ec7ebb feat(log): Add script name and occ command to log details
This will help when troubleshooting issues. For web request we have
 method and url, but for cron and occ currently we have no way to know if
 it’s one or the other and which command.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-12-04 15:04:59 +01:00
Louis Chmn 55756e626f feat(files): Add support for storage-id and path in RepairTree command
This allows to run the command on specific part of the filecache. When the filecache is big, it prevents overloading the DB.

Signed-off-by: Louis Chmn <louis@chmn.me>
2025-12-04 11:43:12 +01:00
Carl Schwan cc7655136c refactor(share): Remove code related to science mesh integration
The app was not updated for the past 2 years.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-03 14:11:58 +01:00
Carl Schwan f38c8c3d7c fix(formatting): Fix formatting issue
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-12-03 11:10:18 +01:00
Josh aa498654c5 refactor(setup): use OS constant rather than function (macOS)
PHP_OS_FAMILY

- Facilitates elimination of a legacy OC_Util method
  - `runningOnMac()` -- yes, really! ;-)
- Supported since PHP late 7.x-era

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-02 21:54:44 -05:00
Josh d9a7e0855c refactor(tests): use OS constant over function
Use PHP's newer PHP_OS_FAMILY constant.

- Allows us to drop a legacy OC_Util method.
- This test isn't even enabled at the moment.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-02 21:53:03 -05:00
Josh cc873ccaec chore(legacy): deprecate OC_Util::runningOnMac()
- Easy enough query directly these days; Only used in one spot anyhow
- Updated the runningOnMac method to use PHP_OS_FAMILY just for clarity until we can remove the function entirely (same result; supported since PHP ~7.4).

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-02 21:52:58 -05:00
Josh 33fba8c084 chore(legacy): Remove deprecated getUserQuota method
Formally deprecated with 9.0.0 and we dropped final uses of it in #53045.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-01 12:49:27 -05:00
Josh 3de06a2b33 chore: lint happiness
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-01 12:26:03 -05:00
Maxence Lange ea8b133910 fix(trashbin): deletedBy of a file from a federated folder
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>

d
2025-12-01 16:25:05 -01:00
Josh d3432482cc feat: improve needUpgrade() output and refactor for clarity
- Reorganized logic to improve clarity + eliminate duplication
- Switched app handling to non-deprecated IAppManager API
- Make the HintException clearer and more actionable
- Log disallowed downgrade attempts before throwing

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-12-01 12:10:52 -05:00
Côme Chilliet 938e8d3a46 feat(admin_audit): Log cache insert/delete to audit log
That allows to see files added/removed by a filesystem scan for
instance.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
2025-12-01 13:52:09 +01:00
Carl Schwan 9522dde7a2 feat: Add Folder::getOrCreateFolder api
Allow to remove some boilerplate and also this new function is type
safe.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-11-24 11:10:52 +01:00
Carl Schwan 38fd84aa6a refactor(template-manager): Modernize template manager API
And correct openapi types for the size.

Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
2025-11-24 10:00:47 +01:00
Maxence Lange e456f116b8 feat(ocm): handle /well-known/ocm
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2025-11-07 08:55:16 -01:00
ernolf b6ea2bc0f5 refactor(http-client): use direct HTTP/2 cURL hint and align tests
Signed-off-by: ernolf <raphael.gradenwitz@googlemail.com>
2025-10-22 12:17:17 +02:00
ernolf 65aa731ef3 test: add unit test for Accept-Encoding with Brotli support
Signed-off-by: ernolf <raphael.gradenwitz@googlemail.com>
2025-09-30 18:01:38 +02:00
ernolf 812f12ecc4 perf(client): enable HTTP/2 and brotli support in internal HTTP client
- Prefer HTTP/2 by setting RequestOptions::VERSION => "2.0" so clients
  that respect PSR-7 request version will prefer HTTP/2.
- Add a curl hint (CURLOPT_HTTP_VERSION) to prefer HTTP/2 via ALPN
  (CURL_HTTP_VERSION_2TLS or CURL_HTTP_VERSION_2_0 fallback) while allowing
  automatic fallback to HTTP/1.1.
- Advertise Brotli ("br") in Accept-Encoding when the php-brotli extension
  is available (detected via function_exists('brotli_uncompress')), otherwise
  fall back to gzip.

Notes:
- The PSR-7 request version is used as a hint for HTTP client libraries;
  setting the version to "2.0" signals a preference for HTTP/2 at the request
  abstraction level.
- The curl option is defensive: it prefers HTTP/2 where libcurl supports it
  (via ALPN), but will not break on older libcurl/builds (uses defined()).

Compatibility:
- Fully backwards compatible: if the php-brotli extension is not present,
  no Brotli usage will occur and behaviour remains equivalent to previous
  (gzip).

Signed-off-by: ernolf <raphael.gradenwitz@googlemail.com>
2025-09-30 17:01:07 +02:00
Josh a9b17a1a16 chore: Add OCP\Util import
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-26 13:42:47 -04:00
Josh 5f5bb77bf3 fix: Update QuotaPlugin to handle 32-bit numeric lengths correctly
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-26 13:40:59 -04:00
Josh fbe5238d7f fix: review input
Co-authored-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-26 13:17:47 -04:00
Josh cc96a16df5 fix: Apply suggestions from code review
Co-authored-by: Carl Schwan <carl@carlschwan.eu>
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-26 13:11:51 -04:00
Josh 04f30cad62 chore: drop buildFileViewMock cast and give it a docblock
Updated the buildFileViewMock method to accept int, float, or false as quota type.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-24 20:53:57 -04:00
Josh 23546013e1 fix(dav): test hint time in buildFileViewMock method wrong
Doesn't match current interface.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-24 20:46:39 -04:00
Josh 45eb87ba6e chore: Change methods back to public for tests
Tagged with \@internal instead for now.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-24 18:32:54 -04:00
Josh 01e0ca7298 chore: lint compliance :)
Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-24 18:21:49 -04:00
Josh 3bb5ed502a refactor(dav): Clean up QuotaPlugin and add new hints
Add new hints and improve documentation for the QuotaPlugin. This commit also removes unused code and tidies up some code, which improves readability and simplifies maintenance, without introducing breaking changes.

Signed-off-by: Josh <josh.t.richards@gmail.com>
2025-09-24 18:13:48 -04:00
Benjamin Gaussorgues 13bfd8b292 chore: add chunked queries on occ sharing:delete-orphan-shares
Signed-off-by: Benjamin Gaussorgues <benjamin.gaussorgues@nextcloud.com>
2025-09-22 11:12:06 +02:00
2831 changed files with 44185 additions and 33902 deletions
+1 -1
View File
@@ -69,7 +69,7 @@ updates:
target-branch: stable32
directories:
- "/"
- "/build/integration"
- "/vendor-bin/behat"
- "/vendor-bin/cs-fixer"
- "/vendor-bin/openapi-extractor"
- "/vendor-bin/phpunit"
@@ -90,6 +90,7 @@ jobs:
- name: Set up Nextcloud
run: |
composer install
mkdir data
echo '<?php $CONFIG=["${{ matrix.key }}" => ["class" => "OC\Files\ObjectStore\S3", "arguments" => ["bucket" => "nextcloud", "autocreate" => true, "key" => "nextcloud", "secret" => "bWluaW8tc2VjcmV0LWtleS1uZXh0Y2xvdWQ=", "hostname" => "localhost", "port" => 9000, "use_ssl" => false, "use_path_style" => true, "uploadPartSize" => 52428800]]];' > config/config.php
echo '<?php $CONFIG=["redis" => ["host" => "localhost", "port" => 6379], "memcache.local" => "\OC\Memcache\Redis", "memcache.distributed" => "\OC\Memcache\Redis"];' > config/redis.config.php
+3 -6
View File
@@ -131,12 +131,9 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Set up production dependencies
run: composer i --no-dev
- name: Set up behat dependencies
working-directory: build/integration
run: composer i
- name: Set up dependencies
run: |
composer install
- name: Set up Talk dependencies
if: ${{ matrix.test-suite == 'videoverification_features' }}
+1 -1
View File
@@ -47,7 +47,7 @@ jobs:
strategy:
matrix:
php-versions: [ '8.2', '8.3', '8.4' ]
php-versions: [ '8.2', '8.3', '8.4', '8.5' ]
name: php-lint
+15 -27
View File
@@ -26,12 +26,10 @@ jobs:
if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
container: shivammathur/node:latest-i386
strategy:
fail-fast: false
matrix:
php-versions: ["8.2", "8.3", "8.4"]
php-versions: ["8.4"]
steps:
- name: Checkout server
@@ -40,32 +38,22 @@ jobs:
persist-credentials: false
submodules: true
- name: Install tools
run: |
sudo apt-get update
sudo apt-get install -y ffmpeg imagemagick libmagickcore-6.q16-3-extra
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@bf6b4fbd49ca58e4608c9c89fba0b8d90bd2a39f #v2.35.5
with:
php-version: ${{ matrix.php-versions }}
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, imagick, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite, apcu, ldap
coverage: none
ini-file: development
ini-values: apc.enabled=on, apc.enable_cli=on, disable_functions= # https://github.com/shivammathur/setup-php/discussions/573
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Set up dependencies
run: composer i
uses: docker://ghcr.io/nextcloud/continuous-integration-php8.4-32bit:latest
with:
args: /bin/sh -c "
git config --global --add safe.directory /github/workspace &&
composer install --no-interaction"
- name: Set up Nextcloud
env:
DB_PORT: 4444
run: |
mkdir data
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=autotest --database-pass=rootpassword --admin-user admin --admin-pass admin
php -f tests/enable_all.php
uses: docker://ghcr.io/nextcloud/continuous-integration-php8.4-32bit:latest
with:
args: /bin/sh -c "
mkdir data &&
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-user=autotest --database-pass=rootpassword --admin-user admin --admin-pass admin &&
php -f tests/enable_all.php"
- name: PHPUnit
run: composer run test -- --exclude-group PRIMARY-azure --exclude-group PRIMARY-s3 --exclude-group PRIMARY-swift --exclude-group Memcached --exclude-group Redis --exclude-group RoutingWeirdness
uses: docker://ghcr.io/nextcloud/continuous-integration-php8.4-32bit:latest
with:
args: /bin/sh -c "composer run test -- --exclude-group PRIMARY-azure,PRIMARY-s3,PRIMARY-swift,Memcached,Redis,RoutingWeirdness"
+3 -1
View File
@@ -60,13 +60,15 @@ jobs:
fail-fast: false
matrix:
php-versions: ['8.2']
mariadb-versions: ['10.3', '10.6', '10.11', '11.4', '11.8']
mariadb-versions: ['10.6', '10.11', '11.4', '11.8']
include:
- php-versions: '8.3'
mariadb-versions: '10.11'
coverage: ${{ github.event_name != 'pull_request' }}
- php-versions: '8.4'
mariadb-versions: '11.8'
- php-versions: '8.5'
mariadb-versions: '11.8'
name: MariaDB ${{ matrix.mariadb-versions }} (PHP ${{ matrix.php-versions }}) - database tests
+1 -1
View File
@@ -56,7 +56,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.3', '8.4']
php-versions: ['8.3', '8.4', '8.5']
include:
- php-versions: '8.2'
coverage: ${{ github.event_name != 'pull_request' }}
+2
View File
@@ -67,6 +67,8 @@ jobs:
coverage: ${{ github.event_name != 'pull_request' }}
- mysql-versions: '8.4'
php-versions: '8.4'
- mysql-versions: '8.4'
php-versions: '8.5'
name: MySQL ${{ matrix.mysql-versions }} (PHP ${{ matrix.php-versions }}) - database tests
+1 -1
View File
@@ -59,7 +59,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.3', '8.4']
php-versions: ['8.3', '8.4', '8.5']
include:
- php-versions: '8.2'
coverage: ${{ github.event_name != 'pull_request' }}
+2
View File
@@ -69,6 +69,8 @@ jobs:
php-versions: '8.3'
- oracle-versions: '23'
php-versions: '8.4'
- oracle-versions: '23'
php-versions: '8.5'
name: Oracle ${{ matrix.oracle-versions }} (PHP ${{ matrix.php-versions }}) - database tests
+2
View File
@@ -68,6 +68,8 @@ jobs:
coverage: ${{ github.event_name != 'pull_request' }}
- php-versions: '8.4'
postgres-versions: '18'
- php-versions: '8.5'
postgres-versions: '18'
name: PostgreSQL ${{ matrix.postgres-versions }} (PHP ${{ matrix.php-versions }}) - database tests
+1 -1
View File
@@ -59,7 +59,7 @@ jobs:
strategy:
fail-fast: false
matrix:
php-versions: ['8.3', '8.4']
php-versions: ['8.3', '8.4', '8.5']
include:
- php-versions: '8.2'
coverage: ${{ github.event_name != 'pull_request' }}
@@ -15,6 +15,7 @@ on:
permissions:
contents: read
security-events: write
concurrency:
group: static-code-analysis-${{ github.head_ref || github.run_id }}
+1 -1
View File
@@ -256,7 +256,7 @@ SPDX-FileCopyrightText = "2025 Nextcloud GmbH and Nextcloud contributors"
SPDX-License-Identifier = "AGPL-3.0-or-later"
[[annotations]]
path = ["composer.json", "composer.lock", ".github/CODEOWNERS", "__tests__/tsconfig.json", "tsconfig.json", "build/integration/composer.**", "vendor-bin/**/composer.json", "vendor-bin/**/composer.lock", "apps/**/composer/composer.json", "apps/**/composer/composer.lock", "apps/**/composer/composer/installed.json"]
path = ["composer.json", "composer.lock", ".github/CODEOWNERS", "__tests__/tsconfig.json", "tsconfig.json", "apps/**/composer/composer.json", "apps/**/composer/composer.lock", "apps/**/composer/composer/installed.json"]
precedence = "aggregate"
SPDX-FileCopyrightText = "2011-2016 ownCloud, Inc., 2016-2024 Nextcloud GmbH and Nextcloud contributors"
SPDX-License-Identifier = "AGPL-3.0-only OR AGPL-3.0-or-later"
@@ -19,6 +19,7 @@ return array(
'OCA\\AdminAudit\\IAuditLogger' => $baseDir . '/../lib/IAuditLogger.php',
'OCA\\AdminAudit\\Listener\\AppManagementEventListener' => $baseDir . '/../lib/Listener/AppManagementEventListener.php',
'OCA\\AdminAudit\\Listener\\AuthEventListener' => $baseDir . '/../lib/Listener/AuthEventListener.php',
'OCA\\AdminAudit\\Listener\\CacheEventListener' => $baseDir . '/../lib/Listener/CacheEventListener.php',
'OCA\\AdminAudit\\Listener\\ConsoleEventListener' => $baseDir . '/../lib/Listener/ConsoleEventListener.php',
'OCA\\AdminAudit\\Listener\\CriticalActionPerformedEventListener' => $baseDir . '/../lib/Listener/CriticalActionPerformedEventListener.php',
'OCA\\AdminAudit\\Listener\\FileEventListener' => $baseDir . '/../lib/Listener/FileEventListener.php',
@@ -34,6 +34,7 @@ class ComposerStaticInitAdminAudit
'OCA\\AdminAudit\\IAuditLogger' => __DIR__ . '/..' . '/../lib/IAuditLogger.php',
'OCA\\AdminAudit\\Listener\\AppManagementEventListener' => __DIR__ . '/..' . '/../lib/Listener/AppManagementEventListener.php',
'OCA\\AdminAudit\\Listener\\AuthEventListener' => __DIR__ . '/..' . '/../lib/Listener/AuthEventListener.php',
'OCA\\AdminAudit\\Listener\\CacheEventListener' => __DIR__ . '/..' . '/../lib/Listener/CacheEventListener.php',
'OCA\\AdminAudit\\Listener\\ConsoleEventListener' => __DIR__ . '/..' . '/../lib/Listener/ConsoleEventListener.php',
'OCA\\AdminAudit\\Listener\\CriticalActionPerformedEventListener' => __DIR__ . '/..' . '/../lib/Listener/CriticalActionPerformedEventListener.php',
'OCA\\AdminAudit\\Listener\\FileEventListener' => __DIR__ . '/..' . '/../lib/Listener/FileEventListener.php',
@@ -18,7 +18,7 @@ class TagManagement extends Action {
$this->log('System tag "%s" (%s, %s) created',
[
'name' => $tag->getName(),
'visbility' => $tag->isUserVisible() ? 'visible' : 'invisible',
'visibility' => $tag->isUserVisible() ? 'visible' : 'invisible',
'assignable' => $tag->isUserAssignable() ? 'user assignable' : 'system only',
],
['name', 'visibility', 'assignable']
@@ -20,6 +20,7 @@ use OCA\AdminAudit\AuditLogger;
use OCA\AdminAudit\IAuditLogger;
use OCA\AdminAudit\Listener\AppManagementEventListener;
use OCA\AdminAudit\Listener\AuthEventListener;
use OCA\AdminAudit\Listener\CacheEventListener;
use OCA\AdminAudit\Listener\ConsoleEventListener;
use OCA\AdminAudit\Listener\CriticalActionPerformedEventListener;
use OCA\AdminAudit\Listener\FileEventListener;
@@ -40,6 +41,8 @@ use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengeFailed;
use OCP\Authentication\TwoFactorAuth\TwoFactorProviderChallengePassed;
use OCP\Console\ConsoleEvent;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\Files\Cache\CacheEntryInsertedEvent;
use OCP\Files\Cache\CacheEntryRemovedEvent;
use OCP\Files\Events\Node\BeforeNodeDeletedEvent;
use OCP\Files\Events\Node\BeforeNodeReadEvent;
use OCP\Files\Events\Node\NodeCopiedEvent;
@@ -123,6 +126,10 @@ class Application extends App implements IBootstrap {
// Console events
$context->registerEventListener(ConsoleEvent::class, ConsoleEventListener::class);
// Cache events
$context->registerEventListener(CacheEntryInsertedEvent::class, CacheEventListener::class);
$context->registerEventListener(CacheEntryRemovedEvent::class, CacheEventListener::class);
}
public function boot(IBootContext $context): void {
@@ -0,0 +1,51 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Listener;
use OCA\AdminAudit\Actions\Action;
use OCP\EventDispatcher\Event;
use OCP\EventDispatcher\IEventListener;
use OCP\Files\Cache\CacheEntryInsertedEvent;
use OCP\Files\Cache\CacheEntryRemovedEvent;
/**
* @template-implements IEventListener<CacheEntryInsertedEvent|CacheEntryRemovedEvent>
*/
class CacheEventListener extends Action implements IEventListener {
public function handle(Event $event): void {
if ($event instanceof CacheEntryInsertedEvent) {
$this->entryInserted($event);
} elseif ($event instanceof CacheEntryRemovedEvent) {
$this->entryRemoved($event);
}
}
private function entryInserted(CacheEntryInsertedEvent $event): void {
$this->log('Cache entry inserted for fileid "%1$d", path "%2$s" on storageid "%3$d"',
[
'fileid' => $event->getFileId(),
'path' => $event->getPath(),
'storageid' => $event->getStorageId(),
],
['fileid', 'path', 'storageid']
);
}
private function entryRemoved(CacheEntryRemovedEvent $event): void {
$this->log('Cache entry removed for fileid "%1$d", path "%2$s" on storageid "%3$d"',
[
'fileid' => $event->getFileId(),
'path' => $event->getPath(),
'storageid' => $event->getStorageId(),
],
['fileid', 'path', 'storageid']
);
}
}
@@ -148,18 +148,6 @@ class SharingEventListener extends Action implements IEventListener {
'id',
]
),
IShare::TYPE_SCIENCEMESH => $this->log(
'The %s "%s" with ID "%s" has been shared to the sciencemesh user "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'path',
'itemSource',
'shareWith',
'permissions',
'id',
]
),
default => null
};
}
@@ -274,17 +262,6 @@ class SharingEventListener extends Action implements IEventListener {
'id',
]
),
IShare::TYPE_SCIENCEMESH => $this->log(
'The %s "%s" with ID "%s" has been unshared from the sciencemesh user "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
),
default => null
};
}
+10 -1
View File
@@ -25,6 +25,15 @@ return [
'url' => '/invite-accepted',
'verb' => 'POST',
'root' => '/ocm',
]
],
// needs to be kept at the bottom of the list
[
'name' => 'OCMRequest#manageOCMRequests',
'url' => '/{ocmPath}',
'requirements' => ['ocmPath' => '.*'],
'verb' => ['GET', 'POST', 'PUT', 'DELETE'],
'root' => '/ocm',
],
],
];
@@ -10,6 +10,7 @@ return array(
'OCA\\CloudFederationAPI\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php',
'OCA\\CloudFederationAPI\\Capabilities' => $baseDir . '/../lib/Capabilities.php',
'OCA\\CloudFederationAPI\\Config' => $baseDir . '/../lib/Config.php',
'OCA\\CloudFederationAPI\\Controller\\OCMRequestController' => $baseDir . '/../lib/Controller/OCMRequestController.php',
'OCA\\CloudFederationAPI\\Controller\\RequestHandlerController' => $baseDir . '/../lib/Controller/RequestHandlerController.php',
'OCA\\CloudFederationAPI\\Db\\FederatedInvite' => $baseDir . '/../lib/Db/FederatedInvite.php',
'OCA\\CloudFederationAPI\\Db\\FederatedInviteMapper' => $baseDir . '/../lib/Db/FederatedInviteMapper.php',
@@ -25,6 +25,7 @@ class ComposerStaticInitCloudFederationAPI
'OCA\\CloudFederationAPI\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php',
'OCA\\CloudFederationAPI\\Capabilities' => __DIR__ . '/..' . '/../lib/Capabilities.php',
'OCA\\CloudFederationAPI\\Config' => __DIR__ . '/..' . '/../lib/Config.php',
'OCA\\CloudFederationAPI\\Controller\\OCMRequestController' => __DIR__ . '/..' . '/../lib/Controller/OCMRequestController.php',
'OCA\\CloudFederationAPI\\Controller\\RequestHandlerController' => __DIR__ . '/..' . '/../lib/Controller/RequestHandlerController.php',
'OCA\\CloudFederationAPI\\Db\\FederatedInvite' => __DIR__ . '/..' . '/../lib/Db/FederatedInvite.php',
'OCA\\CloudFederationAPI\\Db\\FederatedInviteMapper' => __DIR__ . '/..' . '/../lib/Db/FederatedInviteMapper.php',
@@ -0,0 +1,88 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\CloudFederationAPI\Controller;
use JsonException;
use NCU\Security\Signature\Exceptions\IncomingRequestException;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\Attribute\BruteForceProtection;
use OCP\AppFramework\Http\Attribute\NoCSRFRequired;
use OCP\AppFramework\Http\Attribute\PublicPage;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\Http\Response;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IRequest;
use OCP\OCM\Events\OCMEndpointRequestEvent;
use OCP\OCM\Exceptions\OCMArgumentException;
use OCP\OCM\IOCMDiscoveryService;
use Psr\Log\LoggerInterface;
class OCMRequestController extends Controller {
public function __construct(
string $appName,
IRequest $request,
private readonly IEventDispatcher $eventDispatcher,
private readonly IOCMDiscoveryService $ocmDiscoveryService,
private readonly LoggerInterface $logger,
) {
parent::__construct($appName, $request);
}
/**
* Method will catch any request done to /ocm/[...] and will broadcast an event.
* The first parameter of the remaining subpath (post-/ocm/) is defined as
* capability and should be used by listeners to filter incoming requests.
*
* @see OCMEndpointRequestEvent
* @see OCMEndpointRequestEvent::getArgs
*
* @param string $ocmPath
* @return Response
* @throws OCMArgumentException
*/
#[NoCSRFRequired]
#[PublicPage]
#[BruteForceProtection(action: 'receiveOcmRequest')]
public function manageOCMRequests(string $ocmPath): Response {
if (!mb_check_encoding($ocmPath, 'UTF-8')) {
throw new OCMArgumentException('path is not UTF-8');
}
try {
// if request is signed and well signed, no exceptions are thrown
// if request is not signed and host is known for not supporting signed request, no exceptions are thrown
$signedRequest = $this->ocmDiscoveryService->getIncomingSignedRequest();
} catch (IncomingRequestException $e) {
$this->logger->warning('incoming ocm request exception', ['exception' => $e]);
return new JSONResponse(['message' => $e->getMessage(), 'validationErrors' => []], Http::STATUS_BAD_REQUEST);
}
// assuming that ocm request contains a json array
$payload = $signedRequest?->getBody() ?? file_get_contents('php://input');
try {
$payload = ($payload) ? json_decode($payload, true, 512, JSON_THROW_ON_ERROR) : null;
} catch (JsonException $e) {
$this->logger->debug('json decode error', ['exception' => $e]);
$payload = null;
}
$event = new OCMEndpointRequestEvent(
$this->request->getMethod(),
preg_replace('@/+@', '/', $ocmPath),
$payload,
$signedRequest?->getOrigin()
);
$this->eventDispatcher->dispatchTyped($event);
return $event->getResponse() ?? new DataResponse('', Http::STATUS_NOT_FOUND);
}
}
@@ -11,8 +11,6 @@ use NCU\Federation\ISignedCloudFederationProvider;
use NCU\Security\Signature\Exceptions\IdentityNotFoundException;
use NCU\Security\Signature\Exceptions\IncomingRequestException;
use NCU\Security\Signature\Exceptions\SignatoryNotFoundException;
use NCU\Security\Signature\Exceptions\SignatureException;
use NCU\Security\Signature\Exceptions\SignatureNotFoundException;
use NCU\Security\Signature\IIncomingSignedRequest;
use NCU\Security\Signature\ISignatureManager;
use OC\OCM\OCMSignatoryManager;
@@ -44,6 +42,7 @@ use OCP\IGroupManager;
use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\IUserManager;
use OCP\OCM\IOCMDiscoveryService;
use OCP\Share\Exceptions\ShareNotFound;
use OCP\Util;
use Psr\Log\LoggerInterface;
@@ -74,8 +73,8 @@ class RequestHandlerController extends Controller {
private readonly IAppConfig $appConfig,
private ICloudFederationFactory $factory,
private ICloudIdManager $cloudIdManager,
private readonly IOCMDiscoveryService $ocmDiscoveryService,
private readonly ISignatureManager $signatureManager,
private readonly OCMSignatoryManager $signatoryManager,
private ITimeFactory $timeFactory,
) {
parent::__construct($appName, $request);
@@ -106,14 +105,16 @@ class RequestHandlerController extends Controller {
#[NoCSRFRequired]
#[BruteForceProtection(action: 'receiveFederatedShare')]
public function addShare($shareWith, $name, $description, $providerId, $owner, $ownerDisplayName, $sharedBy, $sharedByDisplayName, $protocol, $shareType, $resourceType) {
try {
// if request is signed and well signed, no exception are thrown
// if request is not signed and host is known for not supporting signed request, no exception are thrown
$signedRequest = $this->getSignedRequest();
$this->confirmSignedOrigin($signedRequest, 'owner', $owner);
} catch (IncomingRequestException $e) {
$this->logger->warning('incoming request exception', ['exception' => $e]);
return new JSONResponse(['message' => $e->getMessage(), 'validationErrors' => []], Http::STATUS_BAD_REQUEST);
if (!$this->appConfig->getValueBool('core', OCMSignatoryManager::APPCONFIG_SIGN_DISABLED, lazy: true)) {
try {
// if request is signed and well signed, no exceptions are thrown
// if request is not signed and host is known for not supporting signed request, no exception are thrown
$signedRequest = $this->ocmDiscoveryService->getIncomingSignedRequest();
$this->confirmSignedOrigin($signedRequest, 'owner', $owner);
} catch (IncomingRequestException $e) {
$this->logger->warning('incoming request exception', ['exception' => $e]);
return new JSONResponse(['message' => $e->getMessage(), 'validationErrors' => []], Http::STATUS_BAD_REQUEST);
}
}
// check if all required parameters are set
@@ -354,14 +355,16 @@ class RequestHandlerController extends Controller {
);
}
try {
// if request is signed and well signed, no exception are thrown
// if request is not signed and host is known for not supporting signed request, no exception are thrown
$signedRequest = $this->getSignedRequest();
$this->confirmNotificationIdentity($signedRequest, $resourceType, $notification);
} catch (IncomingRequestException $e) {
$this->logger->warning('incoming request exception', ['exception' => $e]);
return new JSONResponse(['message' => $e->getMessage(), 'validationErrors' => []], Http::STATUS_BAD_REQUEST);
if (!$this->appConfig->getValueBool('core', OCMSignatoryManager::APPCONFIG_SIGN_DISABLED, lazy: true)) {
try {
// if request is signed and well signed, no exception are thrown
// if request is not signed and host is known for not supporting signed request, no exception are thrown
$signedRequest = $this->ocmDiscoveryService->getIncomingSignedRequest();
$this->confirmNotificationIdentity($signedRequest, $resourceType, $notification);
} catch (IncomingRequestException $e) {
$this->logger->warning('incoming request exception', ['exception' => $e]);
return new JSONResponse(['message' => $e->getMessage(), 'validationErrors' => []], Http::STATUS_BAD_REQUEST);
}
}
try {
@@ -430,37 +433,6 @@ class RequestHandlerController extends Controller {
}
/**
* returns signed request if available.
* throw an exception:
* - if request is signed, but wrongly signed
* - if request is not signed but instance is configured to only accept signed ocm request
*
* @return IIncomingSignedRequest|null null if remote does not (and never did) support signed request
* @throws IncomingRequestException
*/
private function getSignedRequest(): ?IIncomingSignedRequest {
try {
$signedRequest = $this->signatureManager->getIncomingSignedRequest($this->signatoryManager);
$this->logger->debug('signed request available', ['signedRequest' => $signedRequest]);
return $signedRequest;
} catch (SignatureNotFoundException|SignatoryNotFoundException $e) {
$this->logger->debug('remote does not support signed request', ['exception' => $e]);
// remote does not support signed request.
// currently we still accept unsigned request until lazy appconfig
// core.enforce_signed_ocm_request is set to true (default: false)
if ($this->appConfig->getValueBool('core', OCMSignatoryManager::APPCONFIG_SIGN_ENFORCED, lazy: true)) {
$this->logger->notice('ignored unsigned request', ['exception' => $e]);
throw new IncomingRequestException('Unsigned request');
}
} catch (SignatureException $e) {
$this->logger->warning('wrongly signed request', ['exception' => $e]);
throw new IncomingRequestException('Invalid signature');
}
return null;
}
/**
* confirm that the value related to $key entry from the payload is in format userid@hostname
* and compare hostname with the origin of the signed request.
@@ -500,7 +472,6 @@ class RequestHandlerController extends Controller {
*
* @param IIncomingSignedRequest|null $signedRequest
* @param string $resourceType
* @param string $sharedSecret
*
* @throws IncomingRequestException
* @throws BadRequestException
@@ -524,7 +495,7 @@ class RequestHandlerController extends Controller {
return;
}
} catch (\Exception $e) {
throw new IncomingRequestException($e->getMessage());
throw new IncomingRequestException($e->getMessage(), previous: $e);
}
$this->confirmNotificationEntry($signedRequest, $identity);
@@ -10,7 +10,6 @@ declare(strict_types=1);
namespace OCA\CloudFederationApi\Tests;
use NCU\Security\Signature\ISignatureManager;
use OC\OCM\OCMSignatoryManager;
use OCA\CloudFederationAPI\Config;
use OCA\CloudFederationAPI\Controller\RequestHandlerController;
use OCA\CloudFederationAPI\Db\FederatedInvite;
@@ -29,6 +28,7 @@ use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\IUserManager;
use OCP\OCM\IOCMDiscoveryService;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
use Test\TestCase;
@@ -45,10 +45,11 @@ class RequestHandlerControllerTest extends TestCase {
private FederatedInviteMapper&MockObject $federatedInviteMapper;
private AddressHandler&MockObject $addressHandler;
private IAppConfig&MockObject $appConfig;
private ICloudFederationFactory&MockObject $cloudFederationFactory;
private ICloudIdManager&MockObject $cloudIdManager;
private IOCMDiscoveryService&MockObject $discoveryService;
private ISignatureManager&MockObject $signatureManager;
private OCMSignatoryManager&MockObject $signatoryManager;
private ITimeFactory&MockObject $timeFactory;
private RequestHandlerController $requestHandlerController;
@@ -69,8 +70,8 @@ class RequestHandlerControllerTest extends TestCase {
$this->appConfig = $this->createMock(IAppConfig::class);
$this->cloudFederationFactory = $this->createMock(ICloudFederationFactory::class);
$this->cloudIdManager = $this->createMock(ICloudIdManager::class);
$this->discoveryService = $this->createMock(IOCMDiscoveryService::class);
$this->signatureManager = $this->createMock(ISignatureManager::class);
$this->signatoryManager = $this->createMock(OCMSignatoryManager::class);
$this->timeFactory = $this->createMock(ITimeFactory::class);
$this->requestHandlerController = new RequestHandlerController(
@@ -88,8 +89,8 @@ class RequestHandlerControllerTest extends TestCase {
$this->appConfig,
$this->cloudFederationFactory,
$this->cloudIdManager,
$this->discoveryService,
$this->signatureManager,
$this->signatoryManager,
$this->timeFactory,
);
}
+4
View File
@@ -38,6 +38,10 @@
</providers>
</activity>
<openmetrics>
<exporter>OCA\Comments\OpenMetrics\CommentsCountMetric</exporter>
</openmetrics>
<collaboration>
<plugins>
<plugin type="autocomplete-sort">OCA\Comments\Collaboration\CommentersSorter</plugin>
@@ -22,5 +22,6 @@ return array(
'OCA\\Comments\\MaxAutoCompleteResultsInitialState' => $baseDir . '/../lib/MaxAutoCompleteResultsInitialState.php',
'OCA\\Comments\\Notification\\Listener' => $baseDir . '/../lib/Notification/Listener.php',
'OCA\\Comments\\Notification\\Notifier' => $baseDir . '/../lib/Notification/Notifier.php',
'OCA\\Comments\\OpenMetrics\\CommentsCountMetric' => $baseDir . '/../lib/OpenMetrics/CommentsCountMetric.php',
'OCA\\Comments\\Search\\CommentsSearchProvider' => $baseDir . '/../lib/Search/CommentsSearchProvider.php',
);
@@ -37,6 +37,7 @@ class ComposerStaticInitComments
'OCA\\Comments\\MaxAutoCompleteResultsInitialState' => __DIR__ . '/..' . '/../lib/MaxAutoCompleteResultsInitialState.php',
'OCA\\Comments\\Notification\\Listener' => __DIR__ . '/..' . '/../lib/Notification/Listener.php',
'OCA\\Comments\\Notification\\Notifier' => __DIR__ . '/..' . '/../lib/Notification/Notifier.php',
'OCA\\Comments\\OpenMetrics\\CommentsCountMetric' => __DIR__ . '/..' . '/../lib/OpenMetrics/CommentsCountMetric.php',
'OCA\\Comments\\Search\\CommentsSearchProvider' => __DIR__ . '/..' . '/../lib/Search/CommentsSearchProvider.php',
);
+1
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Borrar comentario",
"Cancel edit" : "Cacelar edición",
"New comment" : "Comentario nuevo",
"Write a comment …" : "Escribe un comentario ….",
"Post comment" : "Publicar comentario",
"@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoji, / para selector inteligente",
"Could not reload comments" : "No se pudieron recargar los comentarios",
+1
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Borrar comentario",
"Cancel edit" : "Cacelar edición",
"New comment" : "Comentario nuevo",
"Write a comment …" : "Escribe un comentario ….",
"Post comment" : "Publicar comentario",
"@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoji, / para selector inteligente",
"Could not reload comments" : "No se pudieron recargar los comentarios",
+1
View File
@@ -17,6 +17,7 @@ OC.L10N.register(
"Delete comment" : "Ezabatu iruzkina",
"Cancel edit" : "Utzi editatzeari",
"New comment" : "Iruzkin berria",
"Write a comment …" : "Idatzi iruzkin bat …",
"Post comment" : "Argitaratu iruzkina",
"@ for mentions, : for emoji, / for smart picker" : "@ aipamenetarako, : emojientzako, / hautatzaile adimentsurako",
"Could not reload comments" : "Ezin izan dira iruzkinak freskatu",
+1
View File
@@ -15,6 +15,7 @@
"Delete comment" : "Ezabatu iruzkina",
"Cancel edit" : "Utzi editatzeari",
"New comment" : "Iruzkin berria",
"Write a comment …" : "Idatzi iruzkin bat …",
"Post comment" : "Argitaratu iruzkina",
"@ for mentions, : for emoji, / for smart picker" : "@ aipamenetarako, : emojientzako, / hautatzaile adimentsurako",
"Could not reload comments" : "Ezin izan dira iruzkinak freskatu",
+1
View File
@@ -15,6 +15,7 @@ OC.L10N.register(
"Delete comment" : "Poista kommentti",
"Cancel edit" : "Peruuta muokkaus",
"New comment" : "Uusi kommentti",
"Write a comment …" : "Kirjoita kommentti …",
"Post comment" : "Lähetä viesti",
"@ for mentions, : for emoji, / for smart picker" : "@ maininnoille, : emojille, / älykkäälle valitsimelle",
"Could not reload comments" : "Kommenttien lataus epäonnistui",
+1
View File
@@ -13,6 +13,7 @@
"Delete comment" : "Poista kommentti",
"Cancel edit" : "Peruuta muokkaus",
"New comment" : "Uusi kommentti",
"Write a comment …" : "Kirjoita kommentti …",
"Post comment" : "Lähetä viesti",
"@ for mentions, : for emoji, / for smart picker" : "@ maininnoille, : emojille, / älykkäälle valitsimelle",
"Could not reload comments" : "Kommenttien lataus epäonnistui",
+12 -14
View File
@@ -18,8 +18,6 @@ use OCP\IUserManager;
use OCP\L10N\IFactory;
class Provider implements IProvider {
protected ?IL10N $l = null;
public function __construct(
protected IFactory $languageFactory,
protected IURLGenerator $url,
@@ -42,9 +40,9 @@ class Provider implements IProvider {
throw new UnknownActivityException();
}
$this->l = $this->languageFactory->get('comments', $language);
if ($event->getSubject() === 'add_comment_subject') {
$l = $this->languageFactory->get('comments', $language);
$this->parseMessage($event);
if ($this->activityManager->getRequirePNG()) {
$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/comment.png')));
@@ -54,13 +52,13 @@ class Provider implements IProvider {
if ($this->activityManager->isFormattingFilteredObject()) {
try {
return $this->parseShortVersion($event);
return $this->parseShortVersion($event, $l);
} catch (UnknownActivityException) {
// Ignore and simply use the long version...
}
}
return $this->parseLongVersion($event);
return $this->parseLongVersion($event, $l);
}
throw new UnknownActivityException();
@@ -69,15 +67,15 @@ class Provider implements IProvider {
/**
* @throws UnknownActivityException
*/
protected function parseShortVersion(IEvent $event): IEvent {
protected function parseShortVersion(IEvent $event, IL10N $l): IEvent {
$subjectParameters = $this->getSubjectParameters($event);
if ($event->getSubject() === 'add_comment_subject') {
if ($subjectParameters['actor'] === $this->activityManager->getCurrentUserId()) {
$event->setRichSubject($this->l->t('You commented'), []);
$event->setRichSubject($l->t('You commented'), []);
} else {
$author = $this->generateUserParameter($subjectParameters['actor']);
$event->setRichSubject($this->l->t('{author} commented'), [
$event->setRichSubject($l->t('{author} commented'), [
'author' => $author,
]);
}
@@ -91,24 +89,24 @@ class Provider implements IProvider {
/**
* @throws UnknownActivityException
*/
protected function parseLongVersion(IEvent $event): IEvent {
protected function parseLongVersion(IEvent $event, IL10N $l): IEvent {
$subjectParameters = $this->getSubjectParameters($event);
if ($event->getSubject() === 'add_comment_subject') {
if ($subjectParameters['actor'] === $this->activityManager->getCurrentUserId()) {
$event->setParsedSubject($this->l->t('You commented on %1$s', [
$event->setParsedSubject($l->t('You commented on %1$s', [
$subjectParameters['filePath'],
]))
->setRichSubject($this->l->t('You commented on {file}'), [
->setRichSubject($l->t('You commented on {file}'), [
'file' => $this->generateFileParameter($subjectParameters['fileId'], $subjectParameters['filePath']),
]);
} else {
$author = $this->generateUserParameter($subjectParameters['actor']);
$event->setParsedSubject($this->l->t('%1$s commented on %2$s', [
$event->setParsedSubject($l->t('%1$s commented on %2$s', [
$author['name'],
$subjectParameters['filePath'],
]))
->setRichSubject($this->l->t('{author} commented on {file}'), [
->setRichSubject($l->t('{author} commented on {file}'), [
'author' => $author,
'file' => $this->generateFileParameter($subjectParameters['fileId'], $subjectParameters['filePath']),
]);
+3 -3
View File
@@ -11,7 +11,7 @@ use OCP\IL10N;
class Setting extends ActivitySettings {
public function __construct(
protected IL10N $l,
protected readonly IL10N $l,
) {
}
@@ -23,11 +23,11 @@ class Setting extends ActivitySettings {
return $this->l->t('<strong>Comments</strong> for files');
}
public function getGroupIdentifier() {
public function getGroupIdentifier(): string {
return 'files';
}
public function getGroupName() {
public function getGroupName(): string {
return $this->l->t('Files');
}
@@ -27,6 +27,10 @@ class CommentsEntityEventListener implements IEventListener {
return;
}
if ($this->userId === null) {
return;
}
$event->addEntityCollection('files', function ($name): bool {
$nodes = $this->rootFolder->getUserFolder($this->userId)->getById((int)$name);
return !empty($nodes);
@@ -35,8 +35,7 @@ class CommentsEventListener implements IEventListener {
}
$eventType = $event->getEvent();
if ($eventType === CommentsEvent::EVENT_ADD
) {
if ($eventType === CommentsEvent::EVENT_ADD) {
$this->notificationHandler($event);
$this->activityHandler($event);
return;
@@ -0,0 +1,52 @@
<?php
/**
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\Comments\OpenMetrics;
use Generator;
use OCP\IDBConnection;
use OCP\OpenMetrics\IMetricFamily;
use OCP\OpenMetrics\Metric;
use OCP\OpenMetrics\MetricType;
use Override;
class CommentsCountMetric implements IMetricFamily {
public function __construct(
private IDBConnection $connection,
) {
}
#[Override]
public function name(): string {
return 'comments';
}
#[Override]
public function type(): MetricType {
return MetricType::gauge;
}
#[Override]
public function unit(): string {
return 'comments';
}
#[Override]
public function help(): string {
return 'Number of comments';
}
#[Override]
public function metrics(): Generator {
$qb = $this->connection->getQueryBuilder();
$result = $qb->select($qb->func()->count())
->from('comments')
->where($qb->expr()->eq('verb', $qb->expr()->literal('comment')))
->executeQuery();
yield new Metric($result->fetchOne(), [], time());
}
}
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { View } from '@nextcloud/files'
import type { Folder, View } from '@nextcloud/files'
import { File, FileAction, Permission } from '@nextcloud/files'
import { describe, expect, test, vi } from 'vitest'
@@ -26,15 +26,41 @@ describe('Inline unread comments action display name tests', () => {
attributes: {
'comments-unread': 1,
},
root: '/files/admin',
})
expect(action).toBeInstanceOf(FileAction)
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)).toMatch(/<svg.+<\/svg>/)
expect(action.enabled!([file], view)).toBe(true)
expect(action.inline!(file, view)).toBe(true)
expect(action.displayName({
nodes: [file],
view,
folder: {} as Folder,
contents: [],
})).toBe('')
expect(action.title!({
nodes: [file],
view,
folder: {} as Folder,
contents: [],
})).toBe('1 new comment')
expect(action.iconSvgInline({
nodes: [file],
view,
folder: {} as Folder,
contents: [],
})).toMatch(/<svg.+<\/svg>/)
expect(action.enabled!({
nodes: [file],
view,
folder: {} as Folder,
contents: [],
})).toBe(true)
expect(action.inline!({
nodes: [file],
view,
folder: {} as Folder,
contents: [],
})).toBe(true)
expect(action.default).toBeUndefined()
expect(action.order).toBe(-140)
})
@@ -49,10 +75,21 @@ describe('Inline unread comments action display name tests', () => {
attributes: {
'comments-unread': 2,
},
root: '/files/admin',
})
expect(action.displayName([file], view)).toBe('')
expect(action.title!([file], view)).toBe('2 new comments')
expect(action.displayName({
nodes: [file],
view,
folder: {} as Folder,
contents: [],
})).toBe('')
expect(action.title!({
nodes: [file],
view,
folder: {} as Folder,
contents: [],
})).toBe('2 new comments')
})
})
@@ -64,10 +101,16 @@ describe('Inline unread comments action enabled tests', () => {
owner: 'admin',
mime: 'text/plain',
permissions: Permission.ALL,
attributes: { },
attributes: {},
root: '/files/admin',
})
expect(action.enabled!([file], view)).toBe(false)
expect(action.enabled!({
nodes: [file],
view,
folder: {} as Folder,
contents: [],
})).toBe(false)
})
test('Action is disabled when file does not have unread comments', () => {
@@ -80,9 +123,15 @@ describe('Inline unread comments action enabled tests', () => {
attributes: {
'comments-unread': 0,
},
root: '/files/admin',
})
expect(action.enabled!([file], view)).toBe(false)
expect(action.enabled!({
nodes: [file],
view,
folder: {} as Folder,
contents: [],
})).toBe(false)
})
test('Action is enabled when file has a single unread comment', () => {
@@ -95,9 +144,15 @@ describe('Inline unread comments action enabled tests', () => {
attributes: {
'comments-unread': 1,
},
root: '/files/admin',
})
expect(action.enabled!([file], view)).toBe(true)
expect(action.enabled!({
nodes: [file],
view,
folder: {} as Folder,
contents: [],
})).toBe(true)
})
test('Action is enabled when file has a two unread comments', () => {
@@ -110,23 +165,27 @@ describe('Inline unread comments action enabled tests', () => {
attributes: {
'comments-unread': 2,
},
root: '/files/admin',
})
expect(action.enabled!([file], view)).toBe(true)
expect(action.enabled!({
nodes: [file],
view,
folder: {} as Folder,
contents: [],
})).toBe(true)
})
})
describe('Inline unread comments action execute tests', () => {
test('Action opens sidebar', async () => {
const openMock = vi.fn()
const setActiveTabMock = vi.fn()
window.OCA = {
Files: {
// @ts-expect-error Mocking for testing
Sidebar: {
_sidebar: () => ({
open: openMock,
setActiveTab: setActiveTabMock,
},
}),
},
}
@@ -139,27 +198,30 @@ describe('Inline unread comments action execute tests', () => {
attributes: {
'comments-unread': 1,
},
root: '/files/admin',
})
const result = await action.exec!(file, view, '/')
const result = await action.exec!({
nodes: [file],
view,
folder: {} as Folder,
contents: [],
})
expect(result).toBe(null)
expect(setActiveTabMock).toBeCalledWith('comments')
expect(openMock).toBeCalledWith('/foobar.txt')
expect(openMock).toBeCalledWith(file, 'comments')
})
test('Action handles sidebar open failure', async () => {
const openMock = vi.fn(() => {
throw new Error('Mock error')
})
const setActiveTabMock = vi.fn()
window.OCA = {
Files: {
// @ts-expect-error Mocking for testing
Sidebar: {
_sidebar: () => ({
open: openMock,
setActiveTab: setActiveTabMock,
},
}),
},
}
vi.spyOn(logger, 'error').mockImplementation(() => vi.fn())
@@ -173,13 +235,18 @@ describe('Inline unread comments action execute tests', () => {
attributes: {
'comments-unread': 1,
},
root: '/files/admin',
})
const result = await action.exec!(file, view, '/')
const result = await action.exec!({
nodes: [file],
view,
folder: {} as Folder,
contents: [],
})
expect(result).toBe(false)
expect(setActiveTabMock).toBeCalledWith('comments')
expect(openMock).toBeCalledWith('/foobar.txt')
expect(openMock).toBeCalledWith(file, 'comments')
expect(logger.error).toBeCalledTimes(1)
})
})
@@ -1,21 +1,19 @@
/**
/*!
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import type { Node } from '@nextcloud/files'
import CommentProcessingSvg from '@mdi/svg/svg/comment-processing.svg?raw'
import { FileAction } from '@nextcloud/files'
import { FileAction, getSidebar } from '@nextcloud/files'
import { n, t } from '@nextcloud/l10n'
import logger from '../logger.js'
export const action = new FileAction({
id: 'comments-unread',
title(nodes: Node[]) {
const unread = nodes[0].attributes['comments-unread'] as number
if (unread >= 0) {
title({ nodes }) {
const unread = nodes[0]?.attributes['comments-unread'] as number | undefined
if (typeof unread === 'number' && unread >= 0) {
return n('comments', '1 new comment', '{unread} new comments', unread, { unread })
}
return t('comments', 'Comment')
@@ -26,15 +24,19 @@ export const action = new FileAction({
iconSvgInline: () => CommentProcessingSvg,
enabled(nodes: Node[]) {
const unread = nodes[0].attributes['comments-unread'] as number | undefined
enabled({ nodes }) {
const unread = nodes[0]?.attributes?.['comments-unread'] as number | undefined
return typeof unread === 'number' && unread > 0
},
async exec(node: Node) {
async exec({ nodes }) {
if (nodes.length !== 1 || !nodes[0]) {
return false
}
try {
window.OCA.Files.Sidebar.setActiveTab('comments')
await window.OCA.Files.Sidebar.open(node.path)
const sidebar = getSidebar()
sidebar.open(nodes[0], 'comments')
return null
} catch (error) {
logger.error('Error while opening sidebar', { error })
-59
View File
@@ -1,59 +0,0 @@
/**
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import MessageReplyText from '@mdi/svg/svg/message-reply-text.svg?raw'
import { getCSPNonce } from '@nextcloud/auth'
import { loadState } from '@nextcloud/initial-state'
import { registerCommentsPlugins } from './comments-activity-tab.ts'
// @ts-expect-error __webpack_nonce__ is injected by webpack
__webpack_nonce__ = getCSPNonce()
if (loadState('comments', 'activityEnabled', false) && OCA?.Activity?.registerSidebarAction !== undefined) {
// Do not mount own tab but mount into activity
window.addEventListener('DOMContentLoaded', function() {
registerCommentsPlugins()
})
} else {
// Init Comments tab component
let TabInstance = null
const commentTab = new OCA.Files.Sidebar.Tab({
id: 'comments',
name: t('comments', 'Comments'),
iconSvg: MessageReplyText,
async mount(el, fileInfo, context) {
if (TabInstance) {
TabInstance.$destroy()
}
TabInstance = new OCA.Comments.View('files', {
// Better integration with vue parent component
parent: context,
propsData: {
resourceId: fileInfo.id,
},
})
// Only mount after we have all the info we need
await TabInstance.update(fileInfo.id)
TabInstance.$mount(el)
},
update(fileInfo) {
TabInstance.update(fileInfo.id)
},
destroy() {
TabInstance.$destroy()
TabInstance = null
},
scrollBottomReached() {
TabInstance.onScrollBottomReached()
},
})
window.addEventListener('DOMContentLoaded', function() {
if (OCA.Files && OCA.Files.Sidebar) {
OCA.Files.Sidebar.registerTab(commentTab)
}
})
}
+57
View File
@@ -0,0 +1,57 @@
/**
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import MessageReplyText from '@mdi/svg/svg/message-reply-text.svg?raw'
import { getCSPNonce } from '@nextcloud/auth'
import { registerSidebarTab } from '@nextcloud/files'
import { loadState } from '@nextcloud/initial-state'
import { t } from '@nextcloud/l10n'
import wrap from '@vue/web-component-wrapper'
import { createPinia, PiniaVuePlugin } from 'pinia'
import Vue from 'vue'
import FilesSidebarTab from './views/FilesSidebarTab.vue'
import { registerCommentsPlugins } from './comments-activity-tab.ts'
__webpack_nonce__ = getCSPNonce()
const tagName = 'comments_files-sidebar-tab'
if (loadState('comments', 'activityEnabled', false) && OCA?.Activity?.registerSidebarAction !== undefined) {
// Do not mount own tab but mount into activity
window.addEventListener('DOMContentLoaded', function() {
registerCommentsPlugins()
})
} else {
registerSidebarTab({
id: 'comments',
displayName: t('comments', 'Comments'),
iconSvgInline: MessageReplyText,
order: 50,
tagName,
enabled() {
if (!window.customElements.get(tagName)) {
setupSidebarTab()
}
return true
},
})
}
/**
* Setup the sidebar tab as a web component
*/
function setupSidebarTab() {
Vue.use(PiniaVuePlugin)
Vue.mixin({ pinia: createPinia() })
const webComponent = wrap(Vue, FilesSidebarTab)
// In Vue 2, wrap doesn't support disabling shadow. Disable with a hack
Object.defineProperty(webComponent.prototype, 'attachShadow', {
value() { return this },
})
Object.defineProperty(webComponent.prototype, 'shadowRoot', {
get() { return this },
})
window.customElements.define(tagName, webComponent)
}
+4 -3
View File
@@ -1,8 +1,9 @@
import { getCurrentUser } from '@nextcloud/auth'
/**
/*!
* SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { getCurrentUser } from '@nextcloud/auth'
import axios from '@nextcloud/axios'
import { loadState } from '@nextcloud/initial-state'
import { generateOcsUrl } from '@nextcloud/router'
@@ -32,7 +33,7 @@ export default defineComponent({
},
methods: {
/**
* Autocomplete @mentions
* Autocomplete `@mentions`
*
* @param search the query
* @param callback the callback to process the results with
@@ -0,0 +1,40 @@
<!--
- SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
- SPDX-License-Identifier: AGPL-3.0-or-later
-->
<script setup lang="ts">
import type { IFolder, INode, IView } from '@nextcloud/files'
import { computed } from 'vue'
import Comments from './Comments.vue'
const props = defineProps<{
node?: INode
// eslint-disable-next-line vue/no-unused-properties -- Required on the web component interface
folder?: IFolder
// eslint-disable-next-line vue/no-unused-properties -- Required on the web component interface
view?: IView
}>()
defineExpose({ setActive })
const resourceId = computed(() => props.node?.fileid)
/**
* Set this tab as active
*
* @param active - The active state
*/
function setActive(active: boolean) {
return active
}
</script>
<template>
<Comments
v-if="resourceId !== undefined"
:key="resourceId"
:resource-id="resourceId"
resource-type="files" />
</template>
@@ -12,7 +12,7 @@ use OCA\Comments\Activity\Listener;
use OCP\Activity\IEvent;
use OCP\Activity\IManager;
use OCP\App\IAppManager;
use OCP\Comments\CommentsEvent;
use OCP\Comments\Events\CommentAddedEvent;
use OCP\Comments\IComment;
use OCP\Files\Config\ICachedMountFileInfo;
use OCP\Files\Config\IMountProviderCollection;
@@ -66,14 +66,7 @@ class ListenerTest extends TestCase {
->method('getObjectType')
->willReturn('files');
/** @var CommentsEvent|MockObject $event */
$event = $this->createMock(CommentsEvent::class);
$event->expects($this->any())
->method('getComment')
->willReturn($comment);
$event->expects($this->any())
->method('getEvent')
->willReturn(CommentsEvent::EVENT_ADD);
$event = new CommentAddedEvent($comment);
/** @var IUser|MockObject $ownerUser */
$ownerUser = $this->createMock(IUser::class);
+14 -12
View File
@@ -12,6 +12,10 @@ use OCA\Comments\Activity\Listener as ActivityListener;
use OCA\Comments\Listener\CommentsEventListener;
use OCA\Comments\Notification\Listener as NotificationListener;
use OCP\Comments\CommentsEvent;
use OCP\Comments\Events\BeforeCommentUpdatedEvent;
use OCP\Comments\Events\CommentAddedEvent;
use OCP\Comments\Events\CommentDeletedEvent;
use OCP\Comments\Events\CommentUpdatedEvent;
use OCP\Comments\IComment;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
@@ -50,10 +54,10 @@ class EventHandlerTest extends TestCase {
public static function handledProvider(): array {
return [
[CommentsEvent::EVENT_DELETE],
[CommentsEvent::EVENT_UPDATE],
[CommentsEvent::EVENT_PRE_UPDATE],
[CommentsEvent::EVENT_ADD]
['delete'],
['update'],
['pre_update'],
['add']
];
}
@@ -65,14 +69,12 @@ class EventHandlerTest extends TestCase {
->method('getObjectType')
->willReturn('files');
/** @var CommentsEvent|MockObject $event */
$event = $this->createMock(CommentsEvent::class);
$event->expects($this->atLeastOnce())
->method('getComment')
->willReturn($comment);
$event->expects($this->atLeastOnce())
->method('getEvent')
->willReturn($eventType);
$event = match ($eventType) {
'add' => new CommentAddedEvent($comment),
'pre_update' => new BeforeCommentUpdatedEvent($comment),
'update' => new CommentUpdatedEvent($comment),
'delete' => new CommentDeletedEvent($comment),
};
$this->notificationListener->expects($this->once())
->method('evaluate')
@@ -8,7 +8,10 @@
namespace OCA\Comments\Tests\Unit\Notification;
use OCA\Comments\Notification\Listener;
use OCP\Comments\CommentsEvent;
use OCP\Comments\Events\BeforeCommentUpdatedEvent;
use OCP\Comments\Events\CommentAddedEvent;
use OCP\Comments\Events\CommentDeletedEvent;
use OCP\Comments\Events\CommentUpdatedEvent;
use OCP\Comments\IComment;
use OCP\IURLGenerator;
use OCP\IUserManager;
@@ -37,10 +40,10 @@ class ListenerTest extends TestCase {
public static function eventProvider(): array {
return [
[CommentsEvent::EVENT_ADD, 'notify'],
[CommentsEvent::EVENT_UPDATE, 'notify'],
[CommentsEvent::EVENT_PRE_UPDATE, 'markProcessed'],
[CommentsEvent::EVENT_DELETE, 'markProcessed']
['add', 'notify'],
['update', 'notify'],
['pre_update', 'markProcessed'],
['delete', 'markProcessed']
];
}
@@ -49,7 +52,7 @@ class ListenerTest extends TestCase {
* @param string $notificationMethod
*/
#[\PHPUnit\Framework\Attributes\DataProvider('eventProvider')]
public function testEvaluate($eventType, $notificationMethod): void {
public function testEvaluate(string $eventType, $notificationMethod): void {
/** @var IComment|MockObject $comment */
$comment = $this->createMock(IComment::class);
$comment->expects($this->any())
@@ -72,14 +75,12 @@ class ListenerTest extends TestCase {
->method('getId')
->willReturn('1234');
/** @var CommentsEvent|MockObject $event */
$event = $this->createMock(CommentsEvent::class);
$event->expects($this->once())
->method('getComment')
->willReturn($comment);
$event->expects(($this->any()))
->method(('getEvent'))
->willReturn($eventType);
$event = match ($eventType) {
'add' => new CommentAddedEvent($comment),
'pre_update' => new BeforeCommentUpdatedEvent($comment),
'update' => new CommentUpdatedEvent($comment),
'delete' => new CommentDeletedEvent($comment),
};
/** @var INotification|MockObject $notification */
$notification = $this->createMock(INotification::class);
@@ -124,14 +125,12 @@ class ListenerTest extends TestCase {
->method('getMentions')
->willReturn([]);
/** @var CommentsEvent|MockObject $event */
$event = $this->createMock(CommentsEvent::class);
$event->expects($this->once())
->method('getComment')
->willReturn($comment);
$event->expects(($this->any()))
->method(('getEvent'))
->willReturn($eventType);
$event = match ($eventType) {
'add' => new CommentAddedEvent($comment),
'pre_update' => new BeforeCommentUpdatedEvent($comment),
'update' => new CommentUpdatedEvent($comment),
'delete' => new CommentDeletedEvent($comment),
};
$this->notificationManager->expects($this->never())
->method('createNotification');
@@ -162,14 +161,7 @@ class ListenerTest extends TestCase {
->method('getId')
->willReturn('1234');
/** @var CommentsEvent|MockObject $event */
$event = $this->createMock(CommentsEvent::class);
$event->expects($this->once())
->method('getComment')
->willReturn($comment);
$event->expects(($this->any()))
->method(('getEvent'))
->willReturn(CommentsEvent::EVENT_ADD);
$event = new CommentAddedEvent($comment);
/** @var INotification|MockObject $notification */
$notification = $this->createMock(INotification::class);
+1
View File
@@ -20,6 +20,7 @@ OC.L10N.register(
"Edit widgets" : "Редагувати віджети",
"Get more widgets from the App Store" : "Більше віджетів у каталозі застосунків",
"Weather service" : "Погода",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Для вашої конфіденційності дані погоди буде запитано вашим сервером {productName} від вашого імени, таким чином сервіс надання погоди не отримуватиме ваших приватних даних. ",
"Weather data from Met.no" : "Дані про погоду з Met.no",
"geocoding with Nominatim" : "геокодування за допомогою Nominatim",
"elevation data from OpenTopoData" : "дані про висоту з OpenTopoData",
+1
View File
@@ -18,6 +18,7 @@
"Edit widgets" : "Редагувати віджети",
"Get more widgets from the App Store" : "Більше віджетів у каталозі застосунків",
"Weather service" : "Погода",
"For your privacy, the weather data is requested by your {productName} server on your behalf so the weather service receives no personal information." : "Для вашої конфіденційності дані погоди буде запитано вашим сервером {productName} від вашого імени, таким чином сервіс надання погоди не отримуватиме ваших приватних даних. ",
"Weather data from Met.no" : "Дані про погоду з Met.no",
"geocoding with Nominatim" : "геокодування за допомогою Nominatim",
"elevation data from OpenTopoData" : "дані про висоту з OpenTopoData",
+5 -3
View File
@@ -24,6 +24,7 @@ use OCA\DAV\Connector\Sabre\Principal;
use OCP\Accounts\IAccountManager;
use OCP\App\IAppManager;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IAppConfig;
use OCP\ICacheFactory;
use OCP\IConfig;
use OCP\IDBConnection;
@@ -56,7 +57,7 @@ $principalBackend = new Principal(
Server::get(ProxyMapper::class),
Server::get(KnownUserService::class),
Server::get(IConfig::class),
\OC::$server->getL10NFactory(),
Server::get(IL10NFactory::class),
'principals/'
);
$db = Server::get(IDBConnection::class);
@@ -84,7 +85,7 @@ $calDavBackend = new CalDavBackend(
);
$debugging = Server::get(IConfig::class)->getSystemValue('debug', false);
$sendInvitations = Server::get(IConfig::class)->getAppValue('dav', 'sendInvitations', 'yes') === 'yes';
$sendInvitations = Server::get(IAppConfig::class)->getValueBool('dav', 'sendInvitations', true);
// Root nodes
$principalCollection = new \Sabre\CalDAV\Principal\Collection($principalBackend);
@@ -102,6 +103,7 @@ $nodes = [
$server = new \Sabre\DAV\Server($nodes);
$server::$exposeVersion = false;
$server->httpRequest->setUrl(Server::get(IRequest::class)->getRequestUri());
/** @var string $baseuri defined in remote.php */
$server->setBaseUri($baseuri);
// Add plugins
@@ -126,4 +128,4 @@ $server->addPlugin(Server::get(RateLimitingPlugin::class));
$server->addPlugin(Server::get(CalDavValidatePlugin::class));
// And off we go!
$server->exec();
$server->start();
+5 -3
View File
@@ -30,6 +30,7 @@ use OCP\IRequest;
use OCP\ISession;
use OCP\IUserManager;
use OCP\IUserSession;
use OCP\L10N\IFactory as IL10nFactory;
use OCP\Security\Bruteforce\IThrottler;
use OCP\Server;
use Psr\Log\LoggerInterface;
@@ -53,7 +54,7 @@ $principalBackend = new Principal(
Server::get(ProxyMapper::class),
Server::get(KnownUserService::class),
Server::get(IConfig::class),
\OC::$server->getL10NFactory(),
Server::get(IL10nFactory::class),
'principals/'
);
$db = Server::get(IDBConnection::class);
@@ -85,9 +86,10 @@ $nodes = [
$server = new \Sabre\DAV\Server($nodes);
$server::$exposeVersion = false;
$server->httpRequest->setUrl(Server::get(IRequest::class)->getRequestUri());
/** @var string $baseuri defined in remote.php */
$server->setBaseUri($baseuri);
// Add plugins
$server->addPlugin(new MaintenancePlugin(Server::get(IConfig::class), \OC::$server->getL10N('dav')));
$server->addPlugin(new MaintenancePlugin(Server::get(IConfig::class), \OCP\Server::get(IL10nFactory::class)->get('dav')));
$server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend));
$server->addPlugin(new Plugin());
@@ -104,4 +106,4 @@ $server->addPlugin(Server::get(CardDavRateLimitingPlugin::class));
$server->addPlugin(Server::get(CardDavValidatePlugin::class));
// And off we go!
$server->exec();
$server->start();
+10 -5
View File
@@ -14,6 +14,7 @@ use OCA\DAV\Files\Sharing\FilesDropPlugin;
use OCA\DAV\Files\Sharing\PublicLinkCheckPlugin;
use OCA\DAV\Storage\PublicOwnerWrapper;
use OCA\FederatedFileSharing\FederatedShareProvider;
use OCP\App\IAppManager;
use OCP\BeforeSabrePubliclyLoadedEvent;
use OCP\Constants;
use OCP\EventDispatcher\IEventDispatcher;
@@ -26,16 +27,19 @@ use OCP\IRequest;
use OCP\ISession;
use OCP\ITagManager;
use OCP\IUserSession;
use OCP\L10N\IFactory as IL10nFactory;
use OCP\Security\Bruteforce\IThrottler;
use OCP\Server;
use Psr\Log\LoggerInterface;
// load needed apps
$RUNTIME_APPTYPES = ['filesystem', 'authentication', 'logging'];
Server::get(IAppManager::class)->loadApps($RUNTIME_APPTYPES);
OC_App::loadApps($RUNTIME_APPTYPES);
OC_Util::obEnd();
// Turn off output buffering to prevent memory problems
while (ob_get_level()) {
ob_end_clean();
}
Server::get(ISession::class)->close();
// Backends
@@ -60,7 +64,7 @@ $serverFactory = new ServerFactory(
Server::get(IRequest::class),
Server::get(IPreview::class),
$eventDispatcher,
\OC::$server->getL10N('dav')
Server::get(IL10nFactory::class)->get('dav')
);
$requestUri = Server::get(IRequest::class)->getRequestUri();
@@ -68,6 +72,7 @@ $requestUri = Server::get(IRequest::class)->getRequestUri();
$linkCheckPlugin = new PublicLinkCheckPlugin();
$filesDropPlugin = new FilesDropPlugin();
/** @var string $baseuri defined in public.php */
$server = $serverFactory->createServer(
true,
$baseuri,
@@ -125,4 +130,4 @@ $event = new BeforeSabrePubliclyLoadedEvent($server);
$eventDispatcher->dispatchTyped($event);
// And off we go!
$server->exec();
$server->start();
+7 -3
View File
@@ -19,6 +19,7 @@ use OCP\IRequest;
use OCP\ISession;
use OCP\ITagManager;
use OCP\IUserSession;
use OCP\L10N\IFactory as IL10nFactory;
use OCP\SabrePluginEvent;
use OCP\Security\Bruteforce\IThrottler;
use OCP\Server;
@@ -31,7 +32,9 @@ if (!str_contains(@ini_get('disable_functions'), 'set_time_limit')) {
ignore_user_abort(true);
// Turn off output buffering to prevent memory problems
\OC_Util::obEnd();
while (ob_get_level()) {
ob_end_clean();
}
$dispatcher = Server::get(IEventDispatcher::class);
@@ -45,7 +48,7 @@ $serverFactory = new ServerFactory(
Server::get(IRequest::class),
Server::get(IPreview::class),
$dispatcher,
\OC::$server->getL10N('dav')
Server::get(IL10nFactory::class)->get('dav')
);
// Backends
@@ -68,6 +71,7 @@ $authPlugin->addBackend($bearerAuthPlugin);
$requestUri = Server::get(IRequest::class)->getRequestUri();
/** @var string $baseuri defined in remote.php */
$server = $serverFactory->createServer(false, $baseuri, $requestUri, $authPlugin, function () {
// use the view for the logged in user
return Filesystem::getView();
@@ -80,4 +84,4 @@ $event = new SabrePluginAddEvent($server);
$dispatcher->dispatchTyped($event);
// And off we go!
$server->exec();
$server->start();
+5 -2
View File
@@ -21,12 +21,15 @@ if (!str_contains(@ini_get('disable_functions'), 'set_time_limit')) {
ignore_user_abort(true);
// Turn off output buffering to prevent memory problems
\OC_Util::obEnd();
while (ob_get_level()) {
ob_end_clean();
}
$requestUri = Server::get(IRequest::class)->getRequestUri();
/** @var ServerFactory $serverFactory */
$serverFactory = Server::get(ServerFactory::class);
/** @var string $baseuri defined in remote.php */
$server = $serverFactory->createServer(
$baseuri,
$requestUri,
@@ -37,4 +40,4 @@ $server = $serverFactory->createServer(
Server::get(IRequest::class)
);
$server->exec();
$server->start();
+7 -2
View File
@@ -17,6 +17,7 @@ use OCA\DAV\Storage\PublicShareWrapper;
use OCA\DAV\Upload\ChunkingPlugin;
use OCA\DAV\Upload\ChunkingV2Plugin;
use OCA\FederatedFileSharing\FederatedShareProvider;
use OCP\App\IAppManager;
use OCP\BeforeSabrePubliclyLoadedEvent;
use OCP\Constants;
use OCP\EventDispatcher\IEventDispatcher;
@@ -41,8 +42,12 @@ use Sabre\DAV\Exception\NotFound;
// load needed apps
$RUNTIME_APPTYPES = ['filesystem', 'authentication', 'logging'];
OC_App::loadApps($RUNTIME_APPTYPES);
OC_Util::obEnd();
Server::get(IAppManager::class)->loadApps($RUNTIME_APPTYPES);
// Turn off output buffering to prevent memory problems
while (ob_get_level()) {
ob_end_clean();
}
$session = Server::get(ISession::class);
$request = Server::get(IRequest::class);
+4 -1
View File
@@ -15,8 +15,11 @@ if (!str_contains(@ini_get('disable_functions'), 'set_time_limit')) {
ignore_user_abort(true);
// Turn off output buffering to prevent memory problems
\OC_Util::obEnd();
while (ob_get_level()) {
ob_end_clean();
}
$request = \OCP\Server::get(IRequest::class);
/** @var string $baseuri defined in remote.php */
$server = new Server($request, $baseuri);
$server->exec();
@@ -254,6 +254,7 @@ return array(
'OCA\\DAV\\Connector\\Sabre\\SharesPlugin' => $baseDir . '/../lib/Connector/Sabre/SharesPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\TagList' => $baseDir . '/../lib/Connector/Sabre/TagList.php',
'OCA\\DAV\\Connector\\Sabre\\TagsPlugin' => $baseDir . '/../lib/Connector/Sabre/TagsPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\UserIdHeaderPlugin' => $baseDir . '/../lib/Connector/Sabre/UserIdHeaderPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\ZipFolderPlugin' => $baseDir . '/../lib/Connector/Sabre/ZipFolderPlugin.php',
'OCA\\DAV\\Controller\\BirthdayCalendarController' => $baseDir . '/../lib/Controller/BirthdayCalendarController.php',
'OCA\\DAV\\Controller\\DirectController' => $baseDir . '/../lib/Controller/DirectController.php',
@@ -269,6 +269,7 @@ class ComposerStaticInitDAV
'OCA\\DAV\\Connector\\Sabre\\SharesPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/SharesPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\TagList' => __DIR__ . '/..' . '/../lib/Connector/Sabre/TagList.php',
'OCA\\DAV\\Connector\\Sabre\\TagsPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/TagsPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\UserIdHeaderPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/UserIdHeaderPlugin.php',
'OCA\\DAV\\Connector\\Sabre\\ZipFolderPlugin' => __DIR__ . '/..' . '/../lib/Connector/Sabre/ZipFolderPlugin.php',
'OCA\\DAV\\Controller\\BirthdayCalendarController' => __DIR__ . '/..' . '/../lib/Controller/BirthdayCalendarController.php',
'OCA\\DAV\\Controller\\DirectController' => __DIR__ . '/..' . '/../lib/Controller/DirectController.php',
+2 -2
View File
@@ -202,8 +202,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "تعذّرت إعادة تسمية ملف جزئي إلى ملف نهائي. تمّ الإلغاء من قِبَل الخطّاف hook.",
"Could not rename part file to final file" : "تعذّرت إعادة تسمية ملف جزئي إلى ملف نهائي",
"Failed to check file size: %1$s" : "فشل في تحديد حجم الملف: %1$s",
"Could not open file: %1$s, file does seem to exist" : "يتعذّر فتح الملف: %1$s, يبدو أن الملف غير موجود",
"Could not open file: %1$s, file doesn't seem to exist" : "يتعذّر فتح الملف: %1$s, يبدو أن الملف غير موجود",
"Encryption not ready: %1$s" : "التشفير غير جاهز: %1$s",
"Failed to open file: %1$s" : "تعذّر فتح الملف: %1$s",
"Failed to unlink: %1$s" : "تعذّر فك الارتباط: %1$s",
@@ -319,6 +317,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["في %n أسبوع في %1$s ثم في %2$s و %3$s","في أسبوع واحد في %1$s ثم في %2$s و %3$s","في %n أسبوع في %1$s ثم في %2$s و %3$s","في %n أسابيع في %1$s ثم في %2$s و %3$s","في %n أسبوع في %1$s ثم في %2$s و %3$s","في %n أسبوع في %1$s ثم في %2$s و %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["في %n شهر في %1$s ثم في %2$s و %3$s","في شهر واحد في %1$s ثم في %2$s و %3$s","في %n شهر في %1$s ثم في %2$s و %3$s","في %n شهور في %1$s ثم في %2$s و %3$s","في %n شهر في %1$s ثم في %2$s و %3$s","في %n شهر في %1$s ثم في %2$s و %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["في%n سنة في %1$s ثم في %2$s و %3$s","في سنة واحدة في %1$s ثم في %2$s و %3$s","في %n سنة في %1$s ثم في %2$s و %3$s","في %n سنوات في %1$s ثم في %2$s و %3$s","في %n سنة في %1$s ثم في %2$s و %3$s","في %n سنة في %1$s ثم في %2$s و %3$s"],
"Could not open file: %1$s, file does seem to exist" : "يتعذّر فتح الملف: %1$s, يبدو أن الملف غير موجود",
"Could not open file: %1$s, file doesn't seem to exist" : "يتعذّر فتح الملف: %1$s, يبدو أن الملف غير موجود",
"No results." : "لا نتائج",
"Start typing." : "أبدا الكتابة",
"Time zone:" : "منطقة زمنية:"
+2 -2
View File
@@ -200,8 +200,6 @@
"Could not rename part file to final file, canceled by hook" : "تعذّرت إعادة تسمية ملف جزئي إلى ملف نهائي. تمّ الإلغاء من قِبَل الخطّاف hook.",
"Could not rename part file to final file" : "تعذّرت إعادة تسمية ملف جزئي إلى ملف نهائي",
"Failed to check file size: %1$s" : "فشل في تحديد حجم الملف: %1$s",
"Could not open file: %1$s, file does seem to exist" : "يتعذّر فتح الملف: %1$s, يبدو أن الملف غير موجود",
"Could not open file: %1$s, file doesn't seem to exist" : "يتعذّر فتح الملف: %1$s, يبدو أن الملف غير موجود",
"Encryption not ready: %1$s" : "التشفير غير جاهز: %1$s",
"Failed to open file: %1$s" : "تعذّر فتح الملف: %1$s",
"Failed to unlink: %1$s" : "تعذّر فك الارتباط: %1$s",
@@ -317,6 +315,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["في %n أسبوع في %1$s ثم في %2$s و %3$s","في أسبوع واحد في %1$s ثم في %2$s و %3$s","في %n أسبوع في %1$s ثم في %2$s و %3$s","في %n أسابيع في %1$s ثم في %2$s و %3$s","في %n أسبوع في %1$s ثم في %2$s و %3$s","في %n أسبوع في %1$s ثم في %2$s و %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["في %n شهر في %1$s ثم في %2$s و %3$s","في شهر واحد في %1$s ثم في %2$s و %3$s","في %n شهر في %1$s ثم في %2$s و %3$s","في %n شهور في %1$s ثم في %2$s و %3$s","في %n شهر في %1$s ثم في %2$s و %3$s","في %n شهر في %1$s ثم في %2$s و %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["في%n سنة في %1$s ثم في %2$s و %3$s","في سنة واحدة في %1$s ثم في %2$s و %3$s","في %n سنة في %1$s ثم في %2$s و %3$s","في %n سنوات في %1$s ثم في %2$s و %3$s","في %n سنة في %1$s ثم في %2$s و %3$s","في %n سنة في %1$s ثم في %2$s و %3$s"],
"Could not open file: %1$s, file does seem to exist" : "يتعذّر فتح الملف: %1$s, يبدو أن الملف غير موجود",
"Could not open file: %1$s, file doesn't seem to exist" : "يتعذّر فتح الملف: %1$s, يبدو أن الملف غير موجود",
"No results." : "لا نتائج",
"Start typing." : "أبدا الكتابة",
"Time zone:" : "منطقة زمنية:"
+2 -2
View File
@@ -202,8 +202,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "No s'ha pogut canviar el nom del fitxer de part al fitxer final perquè el ganxo ho ha cancel·lat",
"Could not rename part file to final file" : "No s'ha pogut canviar el nom del fitxer de part al fitxer final",
"Failed to check file size: %1$s" : "No s'ha pogut comprovar la mida del fitxer: %1$s",
"Could not open file: %1$s, file does seem to exist" : "No s'ha pogut obrir el fitxer: %1$s, el fitxer sembla que existeix",
"Could not open file: %1$s, file doesn't seem to exist" : "No s'ha pogut obrir el fitxer: %1$s, sembla que el fitxer no existeix",
"Encryption not ready: %1$s" : "El xifratge no està preparat: %1$s",
"Failed to open file: %1$s" : "No s'ha pogut obrir el fitxer: %1$s",
"Failed to unlink: %1$s" : "No s'ha pogut desenllaçar: %1$s",
@@ -312,6 +310,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["D'aquí a una setmana el %1$s i després el %2$s i el %3$s","Daquí a %n setmanes el %1$s i després el %2$s i el %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["D'aquí a un mes el %1$s i després el %2$s i el %3$s","Daquí a %n mesos el %1$s i després el %2$s i el %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["D'aquí a un any el %1$s i després el %2$s i el %3$s","Daquí a %n anys el %1$s i després el %2$s i el %3$s"],
"Could not open file: %1$s, file does seem to exist" : "No s'ha pogut obrir el fitxer: %1$s, el fitxer sembla que existeix",
"Could not open file: %1$s, file doesn't seem to exist" : "No s'ha pogut obrir el fitxer: %1$s, sembla que el fitxer no existeix",
"No results." : "Cap resultat.",
"Start typing." : "Comença a escriure.",
"Time zone:" : "Fus horari:"
+2 -2
View File
@@ -200,8 +200,6 @@
"Could not rename part file to final file, canceled by hook" : "No s'ha pogut canviar el nom del fitxer de part al fitxer final perquè el ganxo ho ha cancel·lat",
"Could not rename part file to final file" : "No s'ha pogut canviar el nom del fitxer de part al fitxer final",
"Failed to check file size: %1$s" : "No s'ha pogut comprovar la mida del fitxer: %1$s",
"Could not open file: %1$s, file does seem to exist" : "No s'ha pogut obrir el fitxer: %1$s, el fitxer sembla que existeix",
"Could not open file: %1$s, file doesn't seem to exist" : "No s'ha pogut obrir el fitxer: %1$s, sembla que el fitxer no existeix",
"Encryption not ready: %1$s" : "El xifratge no està preparat: %1$s",
"Failed to open file: %1$s" : "No s'ha pogut obrir el fitxer: %1$s",
"Failed to unlink: %1$s" : "No s'ha pogut desenllaçar: %1$s",
@@ -310,6 +308,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["D'aquí a una setmana el %1$s i després el %2$s i el %3$s","Daquí a %n setmanes el %1$s i després el %2$s i el %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["D'aquí a un mes el %1$s i després el %2$s i el %3$s","Daquí a %n mesos el %1$s i després el %2$s i el %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["D'aquí a un any el %1$s i després el %2$s i el %3$s","Daquí a %n anys el %1$s i després el %2$s i el %3$s"],
"Could not open file: %1$s, file does seem to exist" : "No s'ha pogut obrir el fitxer: %1$s, el fitxer sembla que existeix",
"Could not open file: %1$s, file doesn't seem to exist" : "No s'ha pogut obrir el fitxer: %1$s, sembla que el fitxer no existeix",
"No results." : "Cap resultat.",
"Start typing." : "Comença a escriure.",
"Time zone:" : "Fus horari:"
+2 -2
View File
@@ -234,8 +234,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Nedaří se zapsat přejmenovat částečný soubor na ten končený zrušeno háčkem (hook)",
"Could not rename part file to final file" : "Nedaří se přejmenovat částečný soubor na ten konečný",
"Failed to check file size: %1$s" : "Nepodařilo se zkontrolovat velikost souboru: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Nebylo možné otevřít soubor: %1$s soubor zdá se existuje",
"Could not open file: %1$s, file doesn't seem to exist" : "Nebylo možné otevřít soubor: %1$s soubor zdá se neexistuje",
"Encryption not ready: %1$s" : "Šifrování není připraveno: %1$s",
"Failed to open file: %1$s" : "Nepodařilo se otevřít soubor: %1$s",
"Failed to unlink: %1$s" : "Nepodařilo se zrušit propojení: %1$s",
@@ -367,6 +365,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Za týden %1$s, poté %2$s a %3$s","Za %n týdny %1$s, poté %2$s a %3$s","Za %n týdnů %1$s, poté %2$s a %3$s","Za %n týdny %1$s, poté %2$s a %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Za měsíc %1$s, poté %2$s a %3$s","Za %n měsíce %1$s, poté %2$s a %3$s","Za %n měsíců %1$s, poté %2$s a %3$s","Za %n měsíce %1$s, poté %2$s a %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Za rok %1$s, poté %2$s a %3$s","Za %n roky %1$s, poté %2$s a %3$s","Za %n let %1$s, poté %2$s a %3$s","Za %n roky %1$s, poté %2$s a %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Nebylo možné otevřít soubor: %1$s soubor zdá se existuje",
"Could not open file: %1$s, file doesn't seem to exist" : "Nebylo možné otevřít soubor: %1$s soubor zdá se neexistuje",
"No results." : "Nic nenalezeno.",
"Start typing." : "Začněte psát.",
"Time zone:" : "Časové pásmo:"
+2 -2
View File
@@ -232,8 +232,6 @@
"Could not rename part file to final file, canceled by hook" : "Nedaří se zapsat přejmenovat částečný soubor na ten končený zrušeno háčkem (hook)",
"Could not rename part file to final file" : "Nedaří se přejmenovat částečný soubor na ten konečný",
"Failed to check file size: %1$s" : "Nepodařilo se zkontrolovat velikost souboru: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Nebylo možné otevřít soubor: %1$s soubor zdá se existuje",
"Could not open file: %1$s, file doesn't seem to exist" : "Nebylo možné otevřít soubor: %1$s soubor zdá se neexistuje",
"Encryption not ready: %1$s" : "Šifrování není připraveno: %1$s",
"Failed to open file: %1$s" : "Nepodařilo se otevřít soubor: %1$s",
"Failed to unlink: %1$s" : "Nepodařilo se zrušit propojení: %1$s",
@@ -365,6 +363,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Za týden %1$s, poté %2$s a %3$s","Za %n týdny %1$s, poté %2$s a %3$s","Za %n týdnů %1$s, poté %2$s a %3$s","Za %n týdny %1$s, poté %2$s a %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Za měsíc %1$s, poté %2$s a %3$s","Za %n měsíce %1$s, poté %2$s a %3$s","Za %n měsíců %1$s, poté %2$s a %3$s","Za %n měsíce %1$s, poté %2$s a %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Za rok %1$s, poté %2$s a %3$s","Za %n roky %1$s, poté %2$s a %3$s","Za %n let %1$s, poté %2$s a %3$s","Za %n roky %1$s, poté %2$s a %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Nebylo možné otevřít soubor: %1$s soubor zdá se existuje",
"Could not open file: %1$s, file doesn't seem to exist" : "Nebylo možné otevřít soubor: %1$s soubor zdá se neexistuje",
"No results." : "Nic nenalezeno.",
"Start typing." : "Začněte psát.",
"Time zone:" : "Časové pásmo:"
+2 -2
View File
@@ -204,8 +204,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Kunne ikke omdøbe delfilen til den endelige fil, annulleret af hook",
"Could not rename part file to final file" : "Delfilen kunne ikke omdøbes til den endelige fil",
"Failed to check file size: %1$s" : "Kunne ikke kontrollere filstørrelsen: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Kunne ikke åbne filen: %1$s, filen ser ud til at eksistere",
"Could not open file: %1$s, file doesn't seem to exist" : "Kunne ikke åbne filen: %1$s, filen ser ikke ud til at eksistere",
"Encryption not ready: %1$s" : "Kryptering ikke klar: %1$s",
"Failed to open file: %1$s" : "Kunne ikke åbne fil: %1$s",
"Failed to unlink: %1$s" : "Tilknytningen kunne ikke fjernes: %1$s",
@@ -337,6 +335,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["I en uge på %1$s så på %2$s og %3$s","Om %n uger den %1$s derefter den %2$s og %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["I en måned på %1$s så på %2$s og %3$s","Om %n måneder den %1$s derefter den %2$s og %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["I et år på %1$s så på %2$s og %3$s","Om %n år den %1$s derefter den %2$s og %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Kunne ikke åbne filen: %1$s, filen ser ud til at eksistere",
"Could not open file: %1$s, file doesn't seem to exist" : "Kunne ikke åbne filen: %1$s, filen ser ikke ud til at eksistere",
"No results." : "Ingen resultater.",
"Start typing." : "Begynd at skrive.",
"Time zone:" : "Tidszone:"
+2 -2
View File
@@ -202,8 +202,6 @@
"Could not rename part file to final file, canceled by hook" : "Kunne ikke omdøbe delfilen til den endelige fil, annulleret af hook",
"Could not rename part file to final file" : "Delfilen kunne ikke omdøbes til den endelige fil",
"Failed to check file size: %1$s" : "Kunne ikke kontrollere filstørrelsen: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Kunne ikke åbne filen: %1$s, filen ser ud til at eksistere",
"Could not open file: %1$s, file doesn't seem to exist" : "Kunne ikke åbne filen: %1$s, filen ser ikke ud til at eksistere",
"Encryption not ready: %1$s" : "Kryptering ikke klar: %1$s",
"Failed to open file: %1$s" : "Kunne ikke åbne fil: %1$s",
"Failed to unlink: %1$s" : "Tilknytningen kunne ikke fjernes: %1$s",
@@ -335,6 +333,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["I en uge på %1$s så på %2$s og %3$s","Om %n uger den %1$s derefter den %2$s og %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["I en måned på %1$s så på %2$s og %3$s","Om %n måneder den %1$s derefter den %2$s og %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["I et år på %1$s så på %2$s og %3$s","Om %n år den %1$s derefter den %2$s og %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Kunne ikke åbne filen: %1$s, filen ser ud til at eksistere",
"Could not open file: %1$s, file doesn't seem to exist" : "Kunne ikke åbne filen: %1$s, filen ser ikke ud til at eksistere",
"No results." : "Ingen resultater.",
"Start typing." : "Begynd at skrive.",
"Time zone:" : "Tidszone:"
+5 -3
View File
@@ -234,8 +234,8 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Konnte temporäre Datei nicht in die endgültige Datei umbenennen, wurde durch einen Hook abgebrochen",
"Could not rename part file to final file" : "Konnte temporäre Datei nicht in die endgültige Datei umbenennen",
"Failed to check file size: %1$s" : "Dateigröße konnte nicht überprüft werden: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint aber zu existieren.",
"Could not open file: %1$s, file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint nicht zu existieren.",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s (%2$d), Datei scheint aber zu existieren",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s (%2$d), Datei scheint nicht zu existieren",
"Encryption not ready: %1$s" : "Verschlüsselung nicht bereit: %1$s",
"Failed to open file: %1$s" : "Datei konnte nicht geöffnet werden: %1$s",
"Failed to unlink: %1$s" : "Fehler beim Aufheben der Verknüpfung: %1$s",
@@ -252,7 +252,7 @@ OC.L10N.register(
"Completed on %s" : "Erledigt am %s",
"Due on %s by %s" : "Fällig am %s von %s",
"Due on %s" : "Fällig am %s",
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Willkommen bei Nextcloud Calendar!\n\nDies ist ein Beispielereignis entdecke die Flexibilität der Planung mit Nextcloud Calendar und nimm beliebige Änderungen vor!\n\nMit Nextcloud Calendar kannst du:\n Ereignisse mühelos erstellen, bearbeiten und verwalten.\n Mehrere Kalender erstellen und mit Teamkollegen, Freunden oder der Familie teilen.\n Verfügbarkeit prüfen und Ihre Termine anderen anzeigen.\n Nahtlose Integration mit Apps und Geräten über CalDAV.\n Individuelle Gestaltung: Plane wiederkehrende Ereignisse, passe Benachrichtigungen und andere Einstellungen an.",
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Willkommen bei Nextcloud Calendar!\n\nDies ist ein Beispielereignis entdecke die Flexibilität der Planung mit Nextcloud Calendar und nimm beliebige Änderungen vor!\n\nMit Nextcloud Calendar kannst du:\n Ereignisse mühelos erstellen, bearbeiten und verwalten.\n Mehrere Kalender erstellen und mit Teamkollegen, Freunden oder der Familie teilen.\n Verfügbarkeit prüfen und deine Termine anderen anzeigen.\n Nahtlose Integration mit Apps und Geräten über CalDAV.\n Individuelle Gestaltung: Plane wiederkehrende Ereignisse, passe Benachrichtigungen und andere Einstellungen an.",
"Example event - open me!" : "Beispielereignis öffne mich!",
"System Address Book" : "Systemadressbuch",
"The system address book contains contact information for all users in your instance." : "Das Systemadressbuch enthält Kontaktinformationen für alle Benutzer in dieser Instanz.",
@@ -367,6 +367,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["In einer Woche am %1$s danach am %2$s und %3$s","In %n Wochen am %1$s danach am %2$s und %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["In einem Monat am %1$s danach am %2$s und %3$s","In %n Monaten am %1$s danach am %2$s und %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["In einem Jahr am %1$s danach am %2$s und %3$s","In %n Jahren am %1$s danach am %2$s und %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint aber zu existieren.",
"Could not open file: %1$s, file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint nicht zu existieren.",
"No results." : "Keine Ergebnisse",
"Start typing." : "Mit dem Schreiben beginnen.",
"Time zone:" : "Zeitzone:"
+5 -3
View File
@@ -232,8 +232,8 @@
"Could not rename part file to final file, canceled by hook" : "Konnte temporäre Datei nicht in die endgültige Datei umbenennen, wurde durch einen Hook abgebrochen",
"Could not rename part file to final file" : "Konnte temporäre Datei nicht in die endgültige Datei umbenennen",
"Failed to check file size: %1$s" : "Dateigröße konnte nicht überprüft werden: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint aber zu existieren.",
"Could not open file: %1$s, file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint nicht zu existieren.",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s (%2$d), Datei scheint aber zu existieren",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s (%2$d), Datei scheint nicht zu existieren",
"Encryption not ready: %1$s" : "Verschlüsselung nicht bereit: %1$s",
"Failed to open file: %1$s" : "Datei konnte nicht geöffnet werden: %1$s",
"Failed to unlink: %1$s" : "Fehler beim Aufheben der Verknüpfung: %1$s",
@@ -250,7 +250,7 @@
"Completed on %s" : "Erledigt am %s",
"Due on %s by %s" : "Fällig am %s von %s",
"Due on %s" : "Fällig am %s",
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Willkommen bei Nextcloud Calendar!\n\nDies ist ein Beispielereignis entdecke die Flexibilität der Planung mit Nextcloud Calendar und nimm beliebige Änderungen vor!\n\nMit Nextcloud Calendar kannst du:\n Ereignisse mühelos erstellen, bearbeiten und verwalten.\n Mehrere Kalender erstellen und mit Teamkollegen, Freunden oder der Familie teilen.\n Verfügbarkeit prüfen und Ihre Termine anderen anzeigen.\n Nahtlose Integration mit Apps und Geräten über CalDAV.\n Individuelle Gestaltung: Plane wiederkehrende Ereignisse, passe Benachrichtigungen und andere Einstellungen an.",
"Welcome to Nextcloud Calendar!\n\nThis is a sample event - explore the flexibility of planning with Nextcloud Calendar by making any edits you want!\n\nWith Nextcloud Calendar, you can:\n- Create, edit, and manage events effortlessly.\n- Create multiple calendars and share them with teammates, friends, or family.\n- Check availability and display your busy times to others.\n- Seamlessly integrate with apps and devices via CalDAV.\n- Customize your experience: schedule recurring events, adjust notifications and other settings." : "Willkommen bei Nextcloud Calendar!\n\nDies ist ein Beispielereignis entdecke die Flexibilität der Planung mit Nextcloud Calendar und nimm beliebige Änderungen vor!\n\nMit Nextcloud Calendar kannst du:\n Ereignisse mühelos erstellen, bearbeiten und verwalten.\n Mehrere Kalender erstellen und mit Teamkollegen, Freunden oder der Familie teilen.\n Verfügbarkeit prüfen und deine Termine anderen anzeigen.\n Nahtlose Integration mit Apps und Geräten über CalDAV.\n Individuelle Gestaltung: Plane wiederkehrende Ereignisse, passe Benachrichtigungen und andere Einstellungen an.",
"Example event - open me!" : "Beispielereignis öffne mich!",
"System Address Book" : "Systemadressbuch",
"The system address book contains contact information for all users in your instance." : "Das Systemadressbuch enthält Kontaktinformationen für alle Benutzer in dieser Instanz.",
@@ -365,6 +365,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["In einer Woche am %1$s danach am %2$s und %3$s","In %n Wochen am %1$s danach am %2$s und %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["In einem Monat am %1$s danach am %2$s und %3$s","In %n Monaten am %1$s danach am %2$s und %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["In einem Jahr am %1$s danach am %2$s und %3$s","In %n Jahren am %1$s danach am %2$s und %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint aber zu existieren.",
"Could not open file: %1$s, file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint nicht zu existieren.",
"No results." : "Keine Ergebnisse",
"Start typing." : "Mit dem Schreiben beginnen.",
"Time zone:" : "Zeitzone:"
+4 -2
View File
@@ -234,8 +234,8 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Konnte Teildatei nicht in endgültige Datei umbenennen, wurde durch Hook abgebrochen.",
"Could not rename part file to final file" : "Konnte Teildatei nicht in endgültige Datei umbenennen",
"Failed to check file size: %1$s" : "Dateigröße konnte nicht überprüft werden: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint zu existieren",
"Could not open file: %1$s, file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint nicht zu existieren",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s (%2$d), Datei scheint aber zu existieren",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s (%2$d), Datei scheint nicht zu existieren",
"Encryption not ready: %1$s" : "Verschlüsselung nicht bereit: %1$s",
"Failed to open file: %1$s" : "Datei konnte nicht geöffnet werden: %1$s",
"Failed to unlink: %1$s" : "Fehler beim Aufheben der Verknüpfung: %1$s",
@@ -367,6 +367,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["In einer Woche am %1$s danach am %2$s und %3$s","In %n Wochen am %1$s danach am %2$s und %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["In einem Monat am %1$s danach am %2$s und %3$s","In %n Monaten am %1$s danach am %2$s und %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["In einem Jahr am %1$s danach am %2$s und %3$s","In %n Jahren am %1$s danach am %2$s und %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint zu existieren",
"Could not open file: %1$s, file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint nicht zu existieren",
"No results." : "Keine Ergebnisse.",
"Start typing." : "Anfangen zu tippen.",
"Time zone:" : "Zeitzone:"
+4 -2
View File
@@ -232,8 +232,8 @@
"Could not rename part file to final file, canceled by hook" : "Konnte Teildatei nicht in endgültige Datei umbenennen, wurde durch Hook abgebrochen.",
"Could not rename part file to final file" : "Konnte Teildatei nicht in endgültige Datei umbenennen",
"Failed to check file size: %1$s" : "Dateigröße konnte nicht überprüft werden: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint zu existieren",
"Could not open file: %1$s, file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint nicht zu existieren",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s (%2$d), Datei scheint aber zu existieren",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s (%2$d), Datei scheint nicht zu existieren",
"Encryption not ready: %1$s" : "Verschlüsselung nicht bereit: %1$s",
"Failed to open file: %1$s" : "Datei konnte nicht geöffnet werden: %1$s",
"Failed to unlink: %1$s" : "Fehler beim Aufheben der Verknüpfung: %1$s",
@@ -365,6 +365,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["In einer Woche am %1$s danach am %2$s und %3$s","In %n Wochen am %1$s danach am %2$s und %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["In einem Monat am %1$s danach am %2$s und %3$s","In %n Monaten am %1$s danach am %2$s und %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["In einem Jahr am %1$s danach am %2$s und %3$s","In %n Jahren am %1$s danach am %2$s und %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint zu existieren",
"Could not open file: %1$s, file doesn't seem to exist" : "Datei konnte nicht geöffnet werden: %1$s, Datei scheint nicht zu existieren",
"No results." : "Keine Ergebnisse.",
"Start typing." : "Anfangen zu tippen.",
"Time zone:" : "Zeitzone:"
+2 -2
View File
@@ -204,8 +204,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Αδυναμία μετονομασίας μερικού αρχείου σε τελικό αρχείο, ακυρώθηκε από hook",
"Could not rename part file to final file" : "Αδυναμία μετονομασίας μερικού αρχείου σε τελικό αρχείο",
"Failed to check file size: %1$s" : "Αποτυχία ελέγχου μεγέθους αρχείου: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Αδυναμία ανοίγματος αρχείου: %1$s, το αρχείο φαίνεται να υπάρχει",
"Could not open file: %1$s, file doesn't seem to exist" : "Αδυναμία ανοίγματος αρχείου: %1$s, το αρχείο δεν φαίνεται να υπάρχει",
"Encryption not ready: %1$s" : "Η κρυπτογράφηση δεν είναι έτοιμη: %1$s",
"Failed to open file: %1$s" : "Αποτυχία ανοίγματος αρχείου: %1$s",
"Failed to unlink: %1$s" : "Αποτυχία unlink: %1$s",
@@ -337,6 +335,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Σε μία εβδομάδα στις %1$s και έπειτα στις %2$s και %3$s","Σε %n εβδομάδες στις %极$s και έπειτα στις %2$s και %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Σε έναν μήνα στις %1$s και έπειτα στις %2$s και %3$s","Σε %n μήνες στις %1$s και έπειτα στις %2$s και %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Σε έναν χρόνο στις %1$s και έπειτα στις %2$s και %3$s","Σε %n χρόνια στις %1$s και έπειτα στις %2$s και %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Αδυναμία ανοίγματος αρχείου: %1$s, το αρχείο φαίνεται να υπάρχει",
"Could not open file: %1$s, file doesn't seem to exist" : "Αδυναμία ανοίγματος αρχείου: %1$s, το αρχείο δεν φαίνεται να υπάρχει",
"No results." : "Κανένα αποτέλεσμα.",
"Start typing." : "Ξεκινήστε να πληκτρολογείτε.",
"Time zone:" : "Ζώνη ώρας:"
+2 -2
View File
@@ -202,8 +202,6 @@
"Could not rename part file to final file, canceled by hook" : "Αδυναμία μετονομασίας μερικού αρχείου σε τελικό αρχείο, ακυρώθηκε από hook",
"Could not rename part file to final file" : "Αδυναμία μετονομασίας μερικού αρχείου σε τελικό αρχείο",
"Failed to check file size: %1$s" : "Αποτυχία ελέγχου μεγέθους αρχείου: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Αδυναμία ανοίγματος αρχείου: %1$s, το αρχείο φαίνεται να υπάρχει",
"Could not open file: %1$s, file doesn't seem to exist" : "Αδυναμία ανοίγματος αρχείου: %1$s, το αρχείο δεν φαίνεται να υπάρχει",
"Encryption not ready: %1$s" : "Η κρυπτογράφηση δεν είναι έτοιμη: %1$s",
"Failed to open file: %1$s" : "Αποτυχία ανοίγματος αρχείου: %1$s",
"Failed to unlink: %1$s" : "Αποτυχία unlink: %1$s",
@@ -335,6 +333,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Σε μία εβδομάδα στις %1$s και έπειτα στις %2$s και %3$s","Σε %n εβδομάδες στις %极$s και έπειτα στις %2$s και %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Σε έναν μήνα στις %1$s και έπειτα στις %2$s και %3$s","Σε %n μήνες στις %1$s και έπειτα στις %2$s και %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Σε έναν χρόνο στις %1$s και έπειτα στις %2$s και %3$s","Σε %n χρόνια στις %1$s και έπειτα στις %2$s και %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Αδυναμία ανοίγματος αρχείου: %1$s, το αρχείο φαίνεται να υπάρχει",
"Could not open file: %1$s, file doesn't seem to exist" : "Αδυναμία ανοίγματος αρχείου: %1$s, το αρχείο δεν φαίνεται να υπάρχει",
"No results." : "Κανένα αποτέλεσμα.",
"Start typing." : "Ξεκινήστε να πληκτρολογείτε.",
"Time zone:" : "Ζώνη ώρας:"
+4 -2
View File
@@ -234,8 +234,8 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Could not rename part file to final file, cancelled by hook",
"Could not rename part file to final file" : "Could not rename part file to final file",
"Failed to check file size: %1$s" : "Failed to check file size: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Could not open file: %1$s, file does seem to exist",
"Could not open file: %1$s, file doesn't seem to exist" : "Could not open file: %1$s, file doesn't seem to exist",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Could not open file: %1$s (%2$d), file does seem to exist",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Could not open file: %1$s (%2$d), file doesn't seem to exist",
"Encryption not ready: %1$s" : "Encryption not ready: %1$s",
"Failed to open file: %1$s" : "Failed to open file: %1$s",
"Failed to unlink: %1$s" : "Failed to unlink: %1$s",
@@ -367,6 +367,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["In a week on %1$s then on %2$s and %3$s","In %n weeks on %1$s then on %2$s and %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["In a month on %1$s then on %2$s and %3$s","In %n months on %1$s then on %2$s and %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["In a year on %1$s then on %2$s and %3$s","In %n years on %1$s then on %2$s and %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Could not open file: %1$s, file does seem to exist",
"Could not open file: %1$s, file doesn't seem to exist" : "Could not open file: %1$s, file doesn't seem to exist",
"No results." : "No results.",
"Start typing." : "Start typing.",
"Time zone:" : "Time zone:"
+4 -2
View File
@@ -232,8 +232,8 @@
"Could not rename part file to final file, canceled by hook" : "Could not rename part file to final file, cancelled by hook",
"Could not rename part file to final file" : "Could not rename part file to final file",
"Failed to check file size: %1$s" : "Failed to check file size: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Could not open file: %1$s, file does seem to exist",
"Could not open file: %1$s, file doesn't seem to exist" : "Could not open file: %1$s, file doesn't seem to exist",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Could not open file: %1$s (%2$d), file does seem to exist",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Could not open file: %1$s (%2$d), file doesn't seem to exist",
"Encryption not ready: %1$s" : "Encryption not ready: %1$s",
"Failed to open file: %1$s" : "Failed to open file: %1$s",
"Failed to unlink: %1$s" : "Failed to unlink: %1$s",
@@ -365,6 +365,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["In a week on %1$s then on %2$s and %3$s","In %n weeks on %1$s then on %2$s and %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["In a month on %1$s then on %2$s and %3$s","In %n months on %1$s then on %2$s and %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["In a year on %1$s then on %2$s and %3$s","In %n years on %1$s then on %2$s and %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Could not open file: %1$s, file does seem to exist",
"Could not open file: %1$s, file doesn't seem to exist" : "Could not open file: %1$s, file doesn't seem to exist",
"No results." : "No results.",
"Start typing." : "Start typing.",
"Time zone:" : "Time zone:"
+2 -2
View File
@@ -204,8 +204,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "No se pudo renombrar del archivo parcial como el archivo final, cancelado por el sistema.",
"Could not rename part file to final file" : "No se ha podido renombrar el archivo parcial como el archivo final",
"Failed to check file size: %1$s" : "Fallo al comprobar el tamaño del archivo: %1$s",
"Could not open file: %1$s, file does seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo existe",
"Could not open file: %1$s, file doesn't seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo no existe",
"Encryption not ready: %1$s" : "El cifrado no está listo: %1$s",
"Failed to open file: %1$s" : "Fallo al abrir el archivo: %1$s",
"Failed to unlink: %1$s" : "Fallo al desenlazar: %1$s",
@@ -337,6 +335,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["En una semana el %1$s y luego el %2$s y %3$s","En %n semanas el %1$s y luego el %2$s y %3$s","En %n semanas el %1$s y luego el %2$s y %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["En un mes el %1$s y luego el %2$s y %3$s","En %n meses el %1$s y luego el %2$s y %3$s","En %n meses el %1$s y luego el %2$s y %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["En un año el %1$s y luego el %2$s y %3$s","En %n años el %1$s y luego el %2$s y %3$s","En %n años el %1$s y luego el %2$s y %3$s"],
"Could not open file: %1$s, file does seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo existe",
"Could not open file: %1$s, file doesn't seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo no existe",
"No results." : "Sin resultados.",
"Start typing." : "Empiece a escribir.",
"Time zone:" : "Zona horaria:"
+2 -2
View File
@@ -202,8 +202,6 @@
"Could not rename part file to final file, canceled by hook" : "No se pudo renombrar del archivo parcial como el archivo final, cancelado por el sistema.",
"Could not rename part file to final file" : "No se ha podido renombrar el archivo parcial como el archivo final",
"Failed to check file size: %1$s" : "Fallo al comprobar el tamaño del archivo: %1$s",
"Could not open file: %1$s, file does seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo existe",
"Could not open file: %1$s, file doesn't seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo no existe",
"Encryption not ready: %1$s" : "El cifrado no está listo: %1$s",
"Failed to open file: %1$s" : "Fallo al abrir el archivo: %1$s",
"Failed to unlink: %1$s" : "Fallo al desenlazar: %1$s",
@@ -335,6 +333,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["En una semana el %1$s y luego el %2$s y %3$s","En %n semanas el %1$s y luego el %2$s y %3$s","En %n semanas el %1$s y luego el %2$s y %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["En un mes el %1$s y luego el %2$s y %3$s","En %n meses el %1$s y luego el %2$s y %3$s","En %n meses el %1$s y luego el %2$s y %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["En un año el %1$s y luego el %2$s y %3$s","En %n años el %1$s y luego el %2$s y %3$s","En %n años el %1$s y luego el %2$s y %3$s"],
"Could not open file: %1$s, file does seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo existe",
"Could not open file: %1$s, file doesn't seem to exist" : "No se pudo abrir el archivo: %1$s, parece que el archivo no existe",
"No results." : "Sin resultados.",
"Start typing." : "Empiece a escribir.",
"Time zone:" : "Zona horaria:"
+34 -2
View File
@@ -73,7 +73,19 @@ OC.L10N.register(
"Where: %s" : "Kus: %s",
"%1$s via %2$s" : "%1$s %2$s kaudu",
"In the past on %1$s for the entire day" : "Minevikus kogu päeva: %1$s",
"_In %n minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["%n minuti pärast %1$s kogu päeva kestel","%n minuti pärast %1$s kogu päeva kestel"],
"_In %n hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["%n tunni pärast %1$s kogu päeva kestel","%n tunni pärast %1$s kogu päeva kestel"],
"_In %n day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["%n tunni päeva %1$s kogu päeva kestel","%n tunni pärast %1$s kogu päeva kestel"],
"_In %n week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["%n nädala pärast %1$s kogu päeva kestel","%n nädala pärast %1$s kogu päeva kestel"],
"_In %n month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["%n kuu pärast %1$s kogu päeva kestel","%n kuu pärast %1$s kogu päeva kestel"],
"_In %n year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["%n aasta pärast %1$s kogu päeva kestel","%n aasta pärast %1$s kogu päeva kestel"],
"In the past on %1$s between %2$s - %3$s" : "Minevikus: %1$s ajavahemikus %2$s - %3$s",
"_In %n minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["%n minuti pärast %1$s ajavahemikus %2$s kuni %3$s","%n minuti pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["%n tunni pärast %1$s ajavahemikus %2$s kuni %3$s","%n tunni pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["%n päeva pärast %1$s ajavahemikus %2$s kuni %3$s","%n päeva pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["%n nädala pärast %1$s ajavahemikus %2$s kuni %3$s","%n nädala pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["%n kuu pärast %1$s ajavahemikus %2$s kuni %3$s","%n kuu pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["%n aasta pärast %1$s ajavahemikus %2$s kuni %3$s","%n aasta pärast %1$s ajavahemikus %2$s kuni %3$s"],
"Could not generate when statement" : "Ei õnnestunud koostada tingimuslikku „when“ lausendit",
"Every Day for the entire day" : "Iga päev kogu päeva jooksul",
"Every Day for the entire day until %1$s" : "Iga päev kogu päeva jooksul kuni %1$s",
@@ -111,8 +123,26 @@ OC.L10N.register(
"On specific dates for the entire day until %1$s" : "Kindlatel päevadel kogu päeva jooksul kuni %1$s",
"On specific dates between %1$s - %2$s until %3$s" : "Kindlatel päevadel ajavahemikus %1$s - %2$s kuni %3$s",
"In the past on %1$s" : "Minevikus %1$s",
"_In %n minute on %1$s_::_In %n minutes on %1$s_" : ["%n minuti pärast %1$s","%n minuti pärast %1$s"],
"_In %n hour on %1$s_::_In %n hours on %1$s_" : ["%n tunni pärast %1$s","%n tunni pärast %1$s"],
"_In %n day on %1$s_::_In %n days on %1$s_" : ["%n päeva pärast %1$s","%n päeva pärast %1$s"],
"_In %n week on %1$s_::_In %n weeks on %1$s_" : ["%n nädala pärast %1$s","%n nädala pärast %1$s"],
"_In %n month on %1$s_::_In %n months on %1$s_" : ["%n kuu pärast %1$s","%n kuu pärast %1$s"],
"_In %n year on %1$s_::_In %n years on %1$s_" : ["%n aasta pärast %1$s","%n aasta pärast %1$s"],
"In the past on %1$s then on %2$s" : "Minevikus: %1$s ja siis %2$s",
"_In %n minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["%n minuti pärast %1$s, seejärel %2$s","%n minuti pärast %1$s, seejärel %2$s"],
"_In %n hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["%n tunni pärast %1$s, seejärel %2$s","%n tunni pärast %1$s, seejärel %2$s"],
"_In %n day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["%n päeva pärast %1$s, seejärel %2$s","%n päeva pärast %1$s, seejärel %2$s"],
"_In %n week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["%n nädala pärast %1$s, seejärel %2$s","%n nädala pärast %1$s, seejärel %2$s"],
"_In %n month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["%n kuu pärast %1$s, seejärel %2$s","%n kuu pärast %1$s, seejärel %2$s"],
"_In %n year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["%n aasta pärast %1$s, seejärel %2$s","%n aasta pärast %1$s, seejärel %2$s"],
"In the past on %1$s then on %2$s and %3$s" : "Minevikus: %1$s ja siis %2$s ning %3$s",
"_In %n minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["%n minuti pärast %1$s, seejärel %2$s ja %3$s","%n minuti pärast %1$s, seejärel %2$s ja %3$s"],
"_In %n hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["%n tunni pärast %1$s, seejärel %2$s ja %3$s","%n tunni pärast %1$s, seejärel %2$s ja %3$s"],
"_In %n day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["%n päeva pärast %1$s, seejärel %2$s ja %3$s","%n päeva pärast %1$s, seejärel %2$s ja %3$s"],
"_In %n week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["%n nädala pärast %1$s, seejärel %2$s ja %3$s","%n nädala pärast %1$s, seejärel %2$s ja %3$s"],
"_In %n month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["%n kuu pärast %1$s, seejärel %2$s ja %3$s","%n kuu pärast %1$s, seejärel %2$s ja %3$s"],
"_In %n year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["%n aasta pärast %1$s, seejärel %2$s ja %3$s","%n aasta pärast %1$s, seejärel %2$s ja %3$s"],
"Could not generate next recurrence statement" : "Ei õnnestunud koostada korduva ürituse järgmise toimumise lausendit",
"Cancelled: %1$s" : "Tühistatud: %1$s",
"\"%1$s\" has been canceled" : "„%1$s“ on tühistatud",
@@ -204,8 +234,8 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Osalise faili nime muutmine lõplikuks nimeks ei õnnestunud, selle katkestas programmi haak",
"Could not rename part file to final file" : "Osalise faili nime muutmine lõplikuks nimeks ei õnnestunud",
"Failed to check file size: %1$s" : "Faili suuruse kontrollimine ei õnnestunud: %1$s",
"Could not open file: %1$s, file does seem to exist" : "„%1$s“ faili avamine ei õnnestunud - aga tundub, et ta on olemas",
"Could not open file: %1$s, file doesn't seem to exist" : "„%1$s“ faili avamine ei õnnestunud - tundub, et teda pole olemas",
"Could not open file: %1$s (%2$d), file does seem to exist" : "„%1$s“ (%2$d) faili avamine ei õnnestunud, aga tundub, et ta on olemas",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "„%1$s“ (%2$d) faili avamine ei õnnestunud, tundub, et teda pole olemas",
"Encryption not ready: %1$s" : "Krüptimine pole veel kasutatav: %1$s",
"Failed to open file: %1$s" : "Faili avamine ei õnnestunud: %1$s",
"Failed to unlink: %1$s" : "Lingi eemaldamine ei õnnestunud: %1$s",
@@ -337,6 +367,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Nädala möödudes: %1$s ja siis %2$s ning %3$s","%n nädala möödudes: %1$s ja siis %2$s ning %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Kuu möödudes: %1$s ja siis %2$s ning %3$s","%n kuu möödudes: %1$s ja siis %2$s ning %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Aasta möödudes: %1$s ja siis %2$s ning %3$s","%n aasta möödudes: %1$s ja siis %2$s ning %3$s"],
"Could not open file: %1$s, file does seem to exist" : "„%1$s“ faili avamine ei õnnestunud - aga tundub, et ta on olemas",
"Could not open file: %1$s, file doesn't seem to exist" : "„%1$s“ faili avamine ei õnnestunud - tundub, et teda pole olemas",
"No results." : "Vasteid ei leitud.",
"Start typing." : "Alusta kirjutamist.",
"Time zone:" : "Ajavöönd:"
+34 -2
View File
@@ -71,7 +71,19 @@
"Where: %s" : "Kus: %s",
"%1$s via %2$s" : "%1$s %2$s kaudu",
"In the past on %1$s for the entire day" : "Minevikus kogu päeva: %1$s",
"_In %n minute on %1$s for the entire day_::_In %n minutes on %1$s for the entire day_" : ["%n minuti pärast %1$s kogu päeva kestel","%n minuti pärast %1$s kogu päeva kestel"],
"_In %n hour on %1$s for the entire day_::_In %n hours on %1$s for the entire day_" : ["%n tunni pärast %1$s kogu päeva kestel","%n tunni pärast %1$s kogu päeva kestel"],
"_In %n day on %1$s for the entire day_::_In %n days on %1$s for the entire day_" : ["%n tunni päeva %1$s kogu päeva kestel","%n tunni pärast %1$s kogu päeva kestel"],
"_In %n week on %1$s for the entire day_::_In %n weeks on %1$s for the entire day_" : ["%n nädala pärast %1$s kogu päeva kestel","%n nädala pärast %1$s kogu päeva kestel"],
"_In %n month on %1$s for the entire day_::_In %n months on %1$s for the entire day_" : ["%n kuu pärast %1$s kogu päeva kestel","%n kuu pärast %1$s kogu päeva kestel"],
"_In %n year on %1$s for the entire day_::_In %n years on %1$s for the entire day_" : ["%n aasta pärast %1$s kogu päeva kestel","%n aasta pärast %1$s kogu päeva kestel"],
"In the past on %1$s between %2$s - %3$s" : "Minevikus: %1$s ajavahemikus %2$s - %3$s",
"_In %n minute on %1$s between %2$s - %3$s_::_In %n minutes on %1$s between %2$s - %3$s_" : ["%n minuti pärast %1$s ajavahemikus %2$s kuni %3$s","%n minuti pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n hour on %1$s between %2$s - %3$s_::_In %n hours on %1$s between %2$s - %3$s_" : ["%n tunni pärast %1$s ajavahemikus %2$s kuni %3$s","%n tunni pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n day on %1$s between %2$s - %3$s_::_In %n days on %1$s between %2$s - %3$s_" : ["%n päeva pärast %1$s ajavahemikus %2$s kuni %3$s","%n päeva pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n week on %1$s between %2$s - %3$s_::_In %n weeks on %1$s between %2$s - %3$s_" : ["%n nädala pärast %1$s ajavahemikus %2$s kuni %3$s","%n nädala pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n month on %1$s between %2$s - %3$s_::_In %n months on %1$s between %2$s - %3$s_" : ["%n kuu pärast %1$s ajavahemikus %2$s kuni %3$s","%n kuu pärast %1$s ajavahemikus %2$s kuni %3$s"],
"_In %n year on %1$s between %2$s - %3$s_::_In %n years on %1$s between %2$s - %3$s_" : ["%n aasta pärast %1$s ajavahemikus %2$s kuni %3$s","%n aasta pärast %1$s ajavahemikus %2$s kuni %3$s"],
"Could not generate when statement" : "Ei õnnestunud koostada tingimuslikku „when“ lausendit",
"Every Day for the entire day" : "Iga päev kogu päeva jooksul",
"Every Day for the entire day until %1$s" : "Iga päev kogu päeva jooksul kuni %1$s",
@@ -109,8 +121,26 @@
"On specific dates for the entire day until %1$s" : "Kindlatel päevadel kogu päeva jooksul kuni %1$s",
"On specific dates between %1$s - %2$s until %3$s" : "Kindlatel päevadel ajavahemikus %1$s - %2$s kuni %3$s",
"In the past on %1$s" : "Minevikus %1$s",
"_In %n minute on %1$s_::_In %n minutes on %1$s_" : ["%n minuti pärast %1$s","%n minuti pärast %1$s"],
"_In %n hour on %1$s_::_In %n hours on %1$s_" : ["%n tunni pärast %1$s","%n tunni pärast %1$s"],
"_In %n day on %1$s_::_In %n days on %1$s_" : ["%n päeva pärast %1$s","%n päeva pärast %1$s"],
"_In %n week on %1$s_::_In %n weeks on %1$s_" : ["%n nädala pärast %1$s","%n nädala pärast %1$s"],
"_In %n month on %1$s_::_In %n months on %1$s_" : ["%n kuu pärast %1$s","%n kuu pärast %1$s"],
"_In %n year on %1$s_::_In %n years on %1$s_" : ["%n aasta pärast %1$s","%n aasta pärast %1$s"],
"In the past on %1$s then on %2$s" : "Minevikus: %1$s ja siis %2$s",
"_In %n minute on %1$s then on %2$s_::_In %n minutes on %1$s then on %2$s_" : ["%n minuti pärast %1$s, seejärel %2$s","%n minuti pärast %1$s, seejärel %2$s"],
"_In %n hour on %1$s then on %2$s_::_In %n hours on %1$s then on %2$s_" : ["%n tunni pärast %1$s, seejärel %2$s","%n tunni pärast %1$s, seejärel %2$s"],
"_In %n day on %1$s then on %2$s_::_In %n days on %1$s then on %2$s_" : ["%n päeva pärast %1$s, seejärel %2$s","%n päeva pärast %1$s, seejärel %2$s"],
"_In %n week on %1$s then on %2$s_::_In %n weeks on %1$s then on %2$s_" : ["%n nädala pärast %1$s, seejärel %2$s","%n nädala pärast %1$s, seejärel %2$s"],
"_In %n month on %1$s then on %2$s_::_In %n months on %1$s then on %2$s_" : ["%n kuu pärast %1$s, seejärel %2$s","%n kuu pärast %1$s, seejärel %2$s"],
"_In %n year on %1$s then on %2$s_::_In %n years on %1$s then on %2$s_" : ["%n aasta pärast %1$s, seejärel %2$s","%n aasta pärast %1$s, seejärel %2$s"],
"In the past on %1$s then on %2$s and %3$s" : "Minevikus: %1$s ja siis %2$s ning %3$s",
"_In %n minute on %1$s then on %2$s and %3$s_::_In %n minutes on %1$s then on %2$s and %3$s_" : ["%n minuti pärast %1$s, seejärel %2$s ja %3$s","%n minuti pärast %1$s, seejärel %2$s ja %3$s"],
"_In %n hour on %1$s then on %2$s and %3$s_::_In %n hours on %1$s then on %2$s and %3$s_" : ["%n tunni pärast %1$s, seejärel %2$s ja %3$s","%n tunni pärast %1$s, seejärel %2$s ja %3$s"],
"_In %n day on %1$s then on %2$s and %3$s_::_In %n days on %1$s then on %2$s and %3$s_" : ["%n päeva pärast %1$s, seejärel %2$s ja %3$s","%n päeva pärast %1$s, seejärel %2$s ja %3$s"],
"_In %n week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["%n nädala pärast %1$s, seejärel %2$s ja %3$s","%n nädala pärast %1$s, seejärel %2$s ja %3$s"],
"_In %n month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["%n kuu pärast %1$s, seejärel %2$s ja %3$s","%n kuu pärast %1$s, seejärel %2$s ja %3$s"],
"_In %n year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["%n aasta pärast %1$s, seejärel %2$s ja %3$s","%n aasta pärast %1$s, seejärel %2$s ja %3$s"],
"Could not generate next recurrence statement" : "Ei õnnestunud koostada korduva ürituse järgmise toimumise lausendit",
"Cancelled: %1$s" : "Tühistatud: %1$s",
"\"%1$s\" has been canceled" : "„%1$s“ on tühistatud",
@@ -202,8 +232,8 @@
"Could not rename part file to final file, canceled by hook" : "Osalise faili nime muutmine lõplikuks nimeks ei õnnestunud, selle katkestas programmi haak",
"Could not rename part file to final file" : "Osalise faili nime muutmine lõplikuks nimeks ei õnnestunud",
"Failed to check file size: %1$s" : "Faili suuruse kontrollimine ei õnnestunud: %1$s",
"Could not open file: %1$s, file does seem to exist" : "„%1$s“ faili avamine ei õnnestunud - aga tundub, et ta on olemas",
"Could not open file: %1$s, file doesn't seem to exist" : "„%1$s“ faili avamine ei õnnestunud - tundub, et teda pole olemas",
"Could not open file: %1$s (%2$d), file does seem to exist" : "„%1$s“ (%2$d) faili avamine ei õnnestunud, aga tundub, et ta on olemas",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "„%1$s“ (%2$d) faili avamine ei õnnestunud, tundub, et teda pole olemas",
"Encryption not ready: %1$s" : "Krüptimine pole veel kasutatav: %1$s",
"Failed to open file: %1$s" : "Faili avamine ei õnnestunud: %1$s",
"Failed to unlink: %1$s" : "Lingi eemaldamine ei õnnestunud: %1$s",
@@ -335,6 +365,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Nädala möödudes: %1$s ja siis %2$s ning %3$s","%n nädala möödudes: %1$s ja siis %2$s ning %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Kuu möödudes: %1$s ja siis %2$s ning %3$s","%n kuu möödudes: %1$s ja siis %2$s ning %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Aasta möödudes: %1$s ja siis %2$s ning %3$s","%n aasta möödudes: %1$s ja siis %2$s ning %3$s"],
"Could not open file: %1$s, file does seem to exist" : "„%1$s“ faili avamine ei õnnestunud - aga tundub, et ta on olemas",
"Could not open file: %1$s, file doesn't seem to exist" : "„%1$s“ faili avamine ei õnnestunud - tundub, et teda pole olemas",
"No results." : "Vasteid ei leitud.",
"Start typing." : "Alusta kirjutamist.",
"Time zone:" : "Ajavöönd:"
+2 -2
View File
@@ -204,8 +204,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Ezin izan da zati-fitxategiaren izena aldatu azken fitxategira, kakoak bertan behera utzi du",
"Could not rename part file to final file" : "Ezin izan da zati-fitxategia azken fitxategira aldatu",
"Failed to check file size: %1$s" : "Ezin izan da egiaztatu fitxategiaren tamaina:%1$s",
"Could not open file: %1$s, file does seem to exist" : "Ezin da fitxategi hau ireki: %1$s, badirudi fitxategia existitzen dela",
"Could not open file: %1$s, file doesn't seem to exist" : "Ezin da fitxategi hau ireki: %1$s, badirudi fitxategia ez dela existitzen",
"Encryption not ready: %1$s" : "Enkriptatzea ez dago prest:%1$s",
"Failed to open file: %1$s" : "Ezin izan da fitxategia ireki:%1$s",
"Failed to unlink: %1$s" : "Ezin izan da deskonektatu:%1$s",
@@ -337,6 +335,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Aste batean %1$s(e)an, %2$s(e)an eta %3$s(e)an","%n astetan %1$s(e)an, %2$s(e)an eta %3$s(e)an"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Hilabete batean %1$s(e)an, %2$s(e)an eta %3$s(e)an","%n hilabetetan %1$s(e)an, %2$s(e)an eta %3$s(e)an"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Urte batean %1$s(e)an, %2$s(e)an eta %3$s(e)an","%n urtetan %1$s(e)an, %2$s(e)an eta %3$s(e)an"],
"Could not open file: %1$s, file does seem to exist" : "Ezin da fitxategi hau ireki: %1$s, badirudi fitxategia existitzen dela",
"Could not open file: %1$s, file doesn't seem to exist" : "Ezin da fitxategi hau ireki: %1$s, badirudi fitxategia ez dela existitzen",
"No results." : "Ez dago emaitzarik.",
"Start typing." : "Hasi idazten.",
"Time zone:" : "Ordu-zona:"
+2 -2
View File
@@ -202,8 +202,6 @@
"Could not rename part file to final file, canceled by hook" : "Ezin izan da zati-fitxategiaren izena aldatu azken fitxategira, kakoak bertan behera utzi du",
"Could not rename part file to final file" : "Ezin izan da zati-fitxategia azken fitxategira aldatu",
"Failed to check file size: %1$s" : "Ezin izan da egiaztatu fitxategiaren tamaina:%1$s",
"Could not open file: %1$s, file does seem to exist" : "Ezin da fitxategi hau ireki: %1$s, badirudi fitxategia existitzen dela",
"Could not open file: %1$s, file doesn't seem to exist" : "Ezin da fitxategi hau ireki: %1$s, badirudi fitxategia ez dela existitzen",
"Encryption not ready: %1$s" : "Enkriptatzea ez dago prest:%1$s",
"Failed to open file: %1$s" : "Ezin izan da fitxategia ireki:%1$s",
"Failed to unlink: %1$s" : "Ezin izan da deskonektatu:%1$s",
@@ -335,6 +333,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Aste batean %1$s(e)an, %2$s(e)an eta %3$s(e)an","%n astetan %1$s(e)an, %2$s(e)an eta %3$s(e)an"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Hilabete batean %1$s(e)an, %2$s(e)an eta %3$s(e)an","%n hilabetetan %1$s(e)an, %2$s(e)an eta %3$s(e)an"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Urte batean %1$s(e)an, %2$s(e)an eta %3$s(e)an","%n urtetan %1$s(e)an, %2$s(e)an eta %3$s(e)an"],
"Could not open file: %1$s, file does seem to exist" : "Ezin da fitxategi hau ireki: %1$s, badirudi fitxategia existitzen dela",
"Could not open file: %1$s, file doesn't seem to exist" : "Ezin da fitxategi hau ireki: %1$s, badirudi fitxategia ez dela existitzen",
"No results." : "Ez dago emaitzarik.",
"Start typing." : "Hasi idazten.",
"Time zone:" : "Ordu-zona:"
+2 -2
View File
@@ -234,8 +234,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "امکان تغییر نام فایل جزئی به فایل نهایی وجود نداشت، توسط هوک لغو شد",
"Could not rename part file to final file" : "امکان تغییر نام فایل جزئی به فایل نهایی وجود ندارد",
"Failed to check file size: %1$s" : "بررسی حجم فایل با شکست مواجه شد: %1$s",
"Could not open file: %1$s, file does seem to exist" : "امکان باز کردن فایل وجود ندارد: %1$s، به نظر می‌رسد فایل وجود دارد",
"Could not open file: %1$s, file doesn't seem to exist" : "امکان باز کردن فایل وجود ندارد: %1$s، به نظر می‌رسد فایل وجود ندارد",
"Encryption not ready: %1$s" : "رمزگذاری آماده نیست: %1$s",
"Failed to open file: %1$s" : "باز کردن فایل با شکست مواجه شد: %1$s",
"Failed to unlink: %1$s" : "حذف پیوند با شکست مواجه شد: %1$s",
@@ -367,6 +365,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["در یک هفته در %1$s سپس در %2$s و %3$s","در %n هفته در %1$s سپس در %2$s و %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["در یک ماه در %1$s سپس در %2$s و %3$s","در %n ماه در %1$s سپس در %2$s و %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["در یک سال در %1$s سپس در %2$s و %3$s","در %n سال در %1$s سپس در %2$s و %3$s"],
"Could not open file: %1$s, file does seem to exist" : "امکان باز کردن فایل وجود ندارد: %1$s، به نظر می‌رسد فایل وجود دارد",
"Could not open file: %1$s, file doesn't seem to exist" : "امکان باز کردن فایل وجود ندارد: %1$s، به نظر می‌رسد فایل وجود ندارد",
"No results." : "نتیجه‌ای یافت نشد.",
"Start typing." : "شروع به تایپ کنید.",
"Time zone:" : "منطقه زمانی:"
+2 -2
View File
@@ -232,8 +232,6 @@
"Could not rename part file to final file, canceled by hook" : "امکان تغییر نام فایل جزئی به فایل نهایی وجود نداشت، توسط هوک لغو شد",
"Could not rename part file to final file" : "امکان تغییر نام فایل جزئی به فایل نهایی وجود ندارد",
"Failed to check file size: %1$s" : "بررسی حجم فایل با شکست مواجه شد: %1$s",
"Could not open file: %1$s, file does seem to exist" : "امکان باز کردن فایل وجود ندارد: %1$s، به نظر می‌رسد فایل وجود دارد",
"Could not open file: %1$s, file doesn't seem to exist" : "امکان باز کردن فایل وجود ندارد: %1$s، به نظر می‌رسد فایل وجود ندارد",
"Encryption not ready: %1$s" : "رمزگذاری آماده نیست: %1$s",
"Failed to open file: %1$s" : "باز کردن فایل با شکست مواجه شد: %1$s",
"Failed to unlink: %1$s" : "حذف پیوند با شکست مواجه شد: %1$s",
@@ -365,6 +363,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["در یک هفته در %1$s سپس در %2$s و %3$s","در %n هفته در %1$s سپس در %2$s و %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["در یک ماه در %1$s سپس در %2$s و %3$s","در %n ماه در %1$s سپس در %2$s و %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["در یک سال در %1$s سپس در %2$s و %3$s","در %n سال در %1$s سپس در %2$s و %3$s"],
"Could not open file: %1$s, file does seem to exist" : "امکان باز کردن فایل وجود ندارد: %1$s، به نظر می‌رسد فایل وجود دارد",
"Could not open file: %1$s, file doesn't seem to exist" : "امکان باز کردن فایل وجود ندارد: %1$s، به نظر می‌رسد فایل وجود ندارد",
"No results." : "نتیجه‌ای یافت نشد.",
"Start typing." : "شروع به تایپ کنید.",
"Time zone:" : "منطقه زمانی:"
+2 -2
View File
@@ -202,8 +202,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Impossible de renommer le fichier partiel en fichier final, annulé par le hook",
"Could not rename part file to final file" : "Impossible de renommer le fichier partiel en fichier définitif",
"Failed to check file size: %1$s" : "Impossible de vérifier la taille du fichier : %1$s",
"Could not open file: %1$s, file does seem to exist" : "Impossible d'ouvrir le fichier %1$s, le fichier semble présent.",
"Could not open file: %1$s, file doesn't seem to exist" : "Impossible d'ouvrir le fichier %1$s, le fichier ne semble pas exister.",
"Encryption not ready: %1$s" : "Chiffrement pas prêt : %1$s",
"Failed to open file: %1$s" : "Impossible d'ouvrir le fichier : %1$s",
"Failed to unlink: %1$s" : "Impossible de supprimer le lien :%1$s",
@@ -331,6 +329,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["La semaine prochaine le %1$s puis le %2$s et %3$s","Dans %n semaines le %1$s puis le %2$s et %3$s","Dans %n semaines le %1$s puis le %2$s et %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Dans un mois le %1$s puis le %2$s et %3$s","Dans %n mois le %1$s puis le %2$s et %3$s","Dans %n mois le %1$s puis le %2$s et %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Dans un an sur %1$spuis sur %2$s et %3$s","Dans %n années sur %1$s puis sur %2$s et %3$s","Dans %n années sur %1$s puis sur %2$s et %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Impossible d'ouvrir le fichier %1$s, le fichier semble présent.",
"Could not open file: %1$s, file doesn't seem to exist" : "Impossible d'ouvrir le fichier %1$s, le fichier ne semble pas exister.",
"No results." : "Pas de résultat.",
"Start typing." : "Commencez à écrire.",
"Time zone:" : "Fuseau horaire :"
+2 -2
View File
@@ -200,8 +200,6 @@
"Could not rename part file to final file, canceled by hook" : "Impossible de renommer le fichier partiel en fichier final, annulé par le hook",
"Could not rename part file to final file" : "Impossible de renommer le fichier partiel en fichier définitif",
"Failed to check file size: %1$s" : "Impossible de vérifier la taille du fichier : %1$s",
"Could not open file: %1$s, file does seem to exist" : "Impossible d'ouvrir le fichier %1$s, le fichier semble présent.",
"Could not open file: %1$s, file doesn't seem to exist" : "Impossible d'ouvrir le fichier %1$s, le fichier ne semble pas exister.",
"Encryption not ready: %1$s" : "Chiffrement pas prêt : %1$s",
"Failed to open file: %1$s" : "Impossible d'ouvrir le fichier : %1$s",
"Failed to unlink: %1$s" : "Impossible de supprimer le lien :%1$s",
@@ -329,6 +327,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["La semaine prochaine le %1$s puis le %2$s et %3$s","Dans %n semaines le %1$s puis le %2$s et %3$s","Dans %n semaines le %1$s puis le %2$s et %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Dans un mois le %1$s puis le %2$s et %3$s","Dans %n mois le %1$s puis le %2$s et %3$s","Dans %n mois le %1$s puis le %2$s et %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Dans un an sur %1$spuis sur %2$s et %3$s","Dans %n années sur %1$s puis sur %2$s et %3$s","Dans %n années sur %1$s puis sur %2$s et %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Impossible d'ouvrir le fichier %1$s, le fichier semble présent.",
"Could not open file: %1$s, file doesn't seem to exist" : "Impossible d'ouvrir le fichier %1$s, le fichier ne semble pas exister.",
"No results." : "Pas de résultat.",
"Start typing." : "Commencez à écrire.",
"Time zone:" : "Fuseau horaire :"
+4 -2
View File
@@ -234,8 +234,8 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Níorbh fhéidir páirtchomhad a athainmniú go comhad deiridh, curtha ar ceal le hook",
"Could not rename part file to final file" : "Níorbh fhéidir páirtchomhad a athainmniú go dtí an comhad deiridh",
"Failed to check file size: %1$s" : "Níorbh fhéidir méid an chomhaid a sheiceáil: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Níorbh fhéidir comhad a oscailt: %1$s, is cosúil go bhfuil an comhad ann",
"Could not open file: %1$s, file doesn't seem to exist" : "Níorbh fhéidir comhad a oscailt: %1$s, is cosúil nach bhfuil an comhad ann",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Níorbh fhéidir an comhad a oscailt: %1$s (%2$d), is cosúil go bhfuil an comhad ann",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Níorbh fhéidir an comhad a oscailt: %1$s (%2$d), is cosúil nach bhfuil an comhad ann.",
"Encryption not ready: %1$s" : "Níl an criptiúchán réidh: %1$s",
"Failed to open file: %1$s" : "Níorbh fhéidir an comhad a oscailt: %1$s",
"Failed to unlink: %1$s" : "Theip ar dhínascadh: %1$s",
@@ -367,6 +367,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["I gceann seachtaine ar %1$s ansin ar %2$s agus %3$s","I gceann %n seachtain ar %1$s ansin ar %2$s agus %3$s","I gceann %n seachtain ar %1$s ansin ar %2$s agus %3$s","I gceann %n seachtain ar %1$s ansin ar %2$s agus %3$s","I gceann %n seachtain ar %1$s ansin ar %2$s agus %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["I gceann míosa ar %1$s ansin ar %2$s agus %3$s","I gceann %n mí ar %1$s ansin ar %2$s agus %3$s","I gceann %n mí ar %1$s ansin ar %2$s agus %3$s","I gceann %n mí ar %1$s ansin ar %2$s agus %3$s","I gceann %n mí ar %1$s ansin ar %2$s agus %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["I mbliain ar %1$s ansin ar %2$s agus %3$s","I gceann %n bliain ar %1$s ansin ar %2$s agus %3$s","I gceann %n bliain ar %1$s ansin ar %2$s agus %3$s","I gceann %n bliain ar %1$s ansin ar %2$s agus %3$s","I gceann %n bliain ar %1$s ansin ar %2$s agus %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Níorbh fhéidir comhad a oscailt: %1$s, is cosúil go bhfuil an comhad ann",
"Could not open file: %1$s, file doesn't seem to exist" : "Níorbh fhéidir comhad a oscailt: %1$s, is cosúil nach bhfuil an comhad ann",
"No results." : "Gan torthaí.",
"Start typing." : "Tosaigh ag clóscríobh.",
"Time zone:" : "Crios ama:"
+4 -2
View File
@@ -232,8 +232,8 @@
"Could not rename part file to final file, canceled by hook" : "Níorbh fhéidir páirtchomhad a athainmniú go comhad deiridh, curtha ar ceal le hook",
"Could not rename part file to final file" : "Níorbh fhéidir páirtchomhad a athainmniú go dtí an comhad deiridh",
"Failed to check file size: %1$s" : "Níorbh fhéidir méid an chomhaid a sheiceáil: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Níorbh fhéidir comhad a oscailt: %1$s, is cosúil go bhfuil an comhad ann",
"Could not open file: %1$s, file doesn't seem to exist" : "Níorbh fhéidir comhad a oscailt: %1$s, is cosúil nach bhfuil an comhad ann",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Níorbh fhéidir an comhad a oscailt: %1$s (%2$d), is cosúil go bhfuil an comhad ann",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Níorbh fhéidir an comhad a oscailt: %1$s (%2$d), is cosúil nach bhfuil an comhad ann.",
"Encryption not ready: %1$s" : "Níl an criptiúchán réidh: %1$s",
"Failed to open file: %1$s" : "Níorbh fhéidir an comhad a oscailt: %1$s",
"Failed to unlink: %1$s" : "Theip ar dhínascadh: %1$s",
@@ -365,6 +365,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["I gceann seachtaine ar %1$s ansin ar %2$s agus %3$s","I gceann %n seachtain ar %1$s ansin ar %2$s agus %3$s","I gceann %n seachtain ar %1$s ansin ar %2$s agus %3$s","I gceann %n seachtain ar %1$s ansin ar %2$s agus %3$s","I gceann %n seachtain ar %1$s ansin ar %2$s agus %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["I gceann míosa ar %1$s ansin ar %2$s agus %3$s","I gceann %n mí ar %1$s ansin ar %2$s agus %3$s","I gceann %n mí ar %1$s ansin ar %2$s agus %3$s","I gceann %n mí ar %1$s ansin ar %2$s agus %3$s","I gceann %n mí ar %1$s ansin ar %2$s agus %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["I mbliain ar %1$s ansin ar %2$s agus %3$s","I gceann %n bliain ar %1$s ansin ar %2$s agus %3$s","I gceann %n bliain ar %1$s ansin ar %2$s agus %3$s","I gceann %n bliain ar %1$s ansin ar %2$s agus %3$s","I gceann %n bliain ar %1$s ansin ar %2$s agus %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Níorbh fhéidir comhad a oscailt: %1$s, is cosúil go bhfuil an comhad ann",
"Could not open file: %1$s, file doesn't seem to exist" : "Níorbh fhéidir comhad a oscailt: %1$s, is cosúil nach bhfuil an comhad ann",
"No results." : "Gan torthaí.",
"Start typing." : "Tosaigh ag clóscríobh.",
"Time zone:" : "Crios ama:"
+4 -2
View File
@@ -234,8 +234,8 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Non foi posíbel cambiar o nome do ficheiro parcial ao ficheiro final, foi cancelado polo sistema",
"Could not rename part file to final file" : "Non foi posíbel cambiar o nome do ficheiro parcial ao ficheiro final",
"Failed to check file size: %1$s" : "Produciuse un erro ao comprobar o tamaño do ficheiro: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s, semella o ficheiro existe",
"Could not open file: %1$s, file doesn't seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s, semella o ficheiro non existe",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s (%2$d), semella o ficheiro existe",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s (%2$d), semella o ficheiro non existe",
"Encryption not ready: %1$s" : "A cifraxe non está preparada: %1$s",
"Failed to open file: %1$s" : "Produciuse un erro ao abrir o ficheiro: %1$s",
"Failed to unlink: %1$s" : "Produciuse un erro ao desligar: %1$s",
@@ -367,6 +367,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Dentro dunha semana o %1$s e após o %2$s e o %3$s","Dentro de %n semanas o %1$s e após o %2$s e o %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Dentro dun mes o %1$s e após o %2$s e o %3$s","Dentro de %n meses o %1$s e após o %2$s e o %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Dentro dun ano o %1$s e após o %2$s e o %3$s","Dentro de %n anos o %1$s e após o %2$s e o %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s, semella o ficheiro existe",
"Could not open file: %1$s, file doesn't seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s, semella o ficheiro non existe",
"No results." : "Sen resultados",
"Start typing." : "Comece a escribir.",
"Time zone:" : "Fuso horario:"
+4 -2
View File
@@ -232,8 +232,8 @@
"Could not rename part file to final file, canceled by hook" : "Non foi posíbel cambiar o nome do ficheiro parcial ao ficheiro final, foi cancelado polo sistema",
"Could not rename part file to final file" : "Non foi posíbel cambiar o nome do ficheiro parcial ao ficheiro final",
"Failed to check file size: %1$s" : "Produciuse un erro ao comprobar o tamaño do ficheiro: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s, semella o ficheiro existe",
"Could not open file: %1$s, file doesn't seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s, semella o ficheiro non existe",
"Could not open file: %1$s (%2$d), file does seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s (%2$d), semella o ficheiro existe",
"Could not open file: %1$s (%2$d), file doesn't seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s (%2$d), semella o ficheiro non existe",
"Encryption not ready: %1$s" : "A cifraxe non está preparada: %1$s",
"Failed to open file: %1$s" : "Produciuse un erro ao abrir o ficheiro: %1$s",
"Failed to unlink: %1$s" : "Produciuse un erro ao desligar: %1$s",
@@ -365,6 +365,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Dentro dunha semana o %1$s e após o %2$s e o %3$s","Dentro de %n semanas o %1$s e após o %2$s e o %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Dentro dun mes o %1$s e após o %2$s e o %3$s","Dentro de %n meses o %1$s e após o %2$s e o %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Dentro dun ano o %1$s e após o %2$s e o %3$s","Dentro de %n anos o %1$s e após o %2$s e o %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s, semella o ficheiro existe",
"Could not open file: %1$s, file doesn't seem to exist" : "Non foi posíbel abrir o ficheiro: %1$s, semella o ficheiro non existe",
"No results." : "Sen resultados",
"Start typing." : "Comece a escribir.",
"Time zone:" : "Fuso horario:"
+2 -2
View File
@@ -204,8 +204,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Gat ekki endurnefnt hlutaskrá sem endanlega skrá, hætt við af tengikrækju",
"Could not rename part file to final file" : "Gat ekki endurnefnt hlutaskrá sem endanlega skrá",
"Failed to check file size: %1$s" : "Mistókst að athuga skráarstærð: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Gat ekki opnað skrá: %1$s, skráin virðist vera til.",
"Could not open file: %1$s, file doesn't seem to exist" : "Gat ekki opnað skrá: %1$s, skráin virðist ekki vera til.",
"Encryption not ready: %1$s" : "Dulritun ekki tilbúin: %1$s",
"Failed to open file: %1$s" : "Mistókst að opna skrá: %1$s",
"Failed to unlink: %1$s" : "Mistókst að aftengja: %1$s",
@@ -337,6 +335,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Eftir viku þann %1$s og síðan þann %2$s og %3$s","Eftir %n vikur þann %1$s og síðan þann %2$s og %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Eftir mánuð þann %1$s og síðan þann %2$s og %3$s","Eftir %n mánuði þann %1$s og síðan þann %2$s og %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Eftir ár þann %1$s og síðan þann %2$s og %3$s","Eftir %n ár þann %1$s og síðan þann %2$s og %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Gat ekki opnað skrá: %1$s, skráin virðist vera til.",
"Could not open file: %1$s, file doesn't seem to exist" : "Gat ekki opnað skrá: %1$s, skráin virðist ekki vera til.",
"No results." : "Engar niðurstöður.",
"Start typing." : "Byrjaðu að skrifa.",
"Time zone:" : "Tímabelti:"
+2 -2
View File
@@ -202,8 +202,6 @@
"Could not rename part file to final file, canceled by hook" : "Gat ekki endurnefnt hlutaskrá sem endanlega skrá, hætt við af tengikrækju",
"Could not rename part file to final file" : "Gat ekki endurnefnt hlutaskrá sem endanlega skrá",
"Failed to check file size: %1$s" : "Mistókst að athuga skráarstærð: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Gat ekki opnað skrá: %1$s, skráin virðist vera til.",
"Could not open file: %1$s, file doesn't seem to exist" : "Gat ekki opnað skrá: %1$s, skráin virðist ekki vera til.",
"Encryption not ready: %1$s" : "Dulritun ekki tilbúin: %1$s",
"Failed to open file: %1$s" : "Mistókst að opna skrá: %1$s",
"Failed to unlink: %1$s" : "Mistókst að aftengja: %1$s",
@@ -335,6 +333,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Eftir viku þann %1$s og síðan þann %2$s og %3$s","Eftir %n vikur þann %1$s og síðan þann %2$s og %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Eftir mánuð þann %1$s og síðan þann %2$s og %3$s","Eftir %n mánuði þann %1$s og síðan þann %2$s og %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Eftir ár þann %1$s og síðan þann %2$s og %3$s","Eftir %n ár þann %1$s og síðan þann %2$s og %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Gat ekki opnað skrá: %1$s, skráin virðist vera til.",
"Could not open file: %1$s, file doesn't seem to exist" : "Gat ekki opnað skrá: %1$s, skráin virðist ekki vera til.",
"No results." : "Engar niðurstöður.",
"Start typing." : "Byrjaðu að skrifa.",
"Time zone:" : "Tímabelti:"
+2 -2
View File
@@ -234,8 +234,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Impossibile rinominare il file di parte in file finale, annullato da hook",
"Could not rename part file to final file" : "Impossibile rinominare il file di parte in file finale",
"Failed to check file size: %1$s" : "Verifica della dimensione del file non riuscito: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Impossibile aprire il file: %1$s, il file sembra esistere",
"Could not open file: %1$s, file doesn't seem to exist" : "Impossibile aprire il file: %1$s, il file non sembra esistere",
"Encryption not ready: %1$s" : "Cifratura non pronta: %1$s",
"Failed to open file: %1$s" : "Apertura del file non riuscito: %1$s",
"Failed to unlink: %1$s" : "Scollegamento non riuscito: %1$s",
@@ -367,6 +365,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Fra una settimana il %1$s successivamente il %2$s e %3$s","Fra %n settimane il %1$s successivamente il %2$s e %3$s","Fra %n settimane il %1$s successivamente il %2$s e %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Fra un mese il %1$s successivamente il %2$s e %3$s","Fra %n mesi il %1$s successivamente il %2$s e %3$s","Fra %n mesi il %1$s successivamente il %2$s e %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Fra un anno il %1$s successivamente il %2$s e %3$s","Fra %n anni il %1$s successivamente il %2$s e %3$s","Fra %n anni il %1$s successivamente il %2$s e %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Impossibile aprire il file: %1$s, il file sembra esistere",
"Could not open file: %1$s, file doesn't seem to exist" : "Impossibile aprire il file: %1$s, il file non sembra esistere",
"No results." : "Nessun risultato.",
"Start typing." : "Inizia a scrivere.",
"Time zone:" : "Fuso orario:"
+2 -2
View File
@@ -232,8 +232,6 @@
"Could not rename part file to final file, canceled by hook" : "Impossibile rinominare il file di parte in file finale, annullato da hook",
"Could not rename part file to final file" : "Impossibile rinominare il file di parte in file finale",
"Failed to check file size: %1$s" : "Verifica della dimensione del file non riuscito: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Impossibile aprire il file: %1$s, il file sembra esistere",
"Could not open file: %1$s, file doesn't seem to exist" : "Impossibile aprire il file: %1$s, il file non sembra esistere",
"Encryption not ready: %1$s" : "Cifratura non pronta: %1$s",
"Failed to open file: %1$s" : "Apertura del file non riuscito: %1$s",
"Failed to unlink: %1$s" : "Scollegamento non riuscito: %1$s",
@@ -365,6 +363,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["Fra una settimana il %1$s successivamente il %2$s e %3$s","Fra %n settimane il %1$s successivamente il %2$s e %3$s","Fra %n settimane il %1$s successivamente il %2$s e %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["Fra un mese il %1$s successivamente il %2$s e %3$s","Fra %n mesi il %1$s successivamente il %2$s e %3$s","Fra %n mesi il %1$s successivamente il %2$s e %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["Fra un anno il %1$s successivamente il %2$s e %3$s","Fra %n anni il %1$s successivamente il %2$s e %3$s","Fra %n anni il %1$s successivamente il %2$s e %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Impossibile aprire il file: %1$s, il file sembra esistere",
"Could not open file: %1$s, file doesn't seem to exist" : "Impossibile aprire il file: %1$s, il file non sembra esistere",
"No results." : "Nessun risultato.",
"Start typing." : "Inizia a scrivere.",
"Time zone:" : "Fuso orario:"
+2 -2
View File
@@ -204,8 +204,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "最終ファイルの名前の変更が出来なかったため、フックによりキャンセルされました",
"Could not rename part file to final file" : "最終ファイルの名前の変更が出来ませんでした",
"Failed to check file size: %1$s" : "ファイルサイズの確認に失敗: %1$s",
"Could not open file: %1$s, file does seem to exist" : "ファイルを開けませんでした: %1$s、ファイルは存在するようです",
"Could not open file: %1$s, file doesn't seem to exist" : "ファイルを開けませんでした: %1$s ファイルが存在しないようです。",
"Encryption not ready: %1$s" : "暗号化の準備が出来ていません: %1$s",
"Failed to open file: %1$s" : "ファイルを開くのに失敗: %1$s",
"Failed to unlink: %1$s" : "リンクの解除に失敗: %1$s",
@@ -337,6 +335,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["%1$sの%n週間、その後%2$sと%3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["%1$sの%nヶ月、その後%2$sと%3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["%1$sの%n年間、その後%2$sと%3$s"],
"Could not open file: %1$s, file does seem to exist" : "ファイルを開けませんでした: %1$s、ファイルは存在するようです",
"Could not open file: %1$s, file doesn't seem to exist" : "ファイルを開けませんでした: %1$s ファイルが存在しないようです。",
"No results." : "結果はありません。",
"Start typing." : "入力を開始する。",
"Time zone:" : "タイムゾーン:"
+2 -2
View File
@@ -202,8 +202,6 @@
"Could not rename part file to final file, canceled by hook" : "最終ファイルの名前の変更が出来なかったため、フックによりキャンセルされました",
"Could not rename part file to final file" : "最終ファイルの名前の変更が出来ませんでした",
"Failed to check file size: %1$s" : "ファイルサイズの確認に失敗: %1$s",
"Could not open file: %1$s, file does seem to exist" : "ファイルを開けませんでした: %1$s、ファイルは存在するようです",
"Could not open file: %1$s, file doesn't seem to exist" : "ファイルを開けませんでした: %1$s ファイルが存在しないようです。",
"Encryption not ready: %1$s" : "暗号化の準備が出来ていません: %1$s",
"Failed to open file: %1$s" : "ファイルを開くのに失敗: %1$s",
"Failed to unlink: %1$s" : "リンクの解除に失敗: %1$s",
@@ -335,6 +333,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["%1$sの%n週間、その後%2$sと%3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["%1$sの%nヶ月、その後%2$sと%3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["%1$sの%n年間、その後%2$sと%3$s"],
"Could not open file: %1$s, file does seem to exist" : "ファイルを開けませんでした: %1$s、ファイルは存在するようです",
"Could not open file: %1$s, file doesn't seem to exist" : "ファイルを開けませんでした: %1$s ファイルが存在しないようです。",
"No results." : "結果はありません。",
"Start typing." : "入力を開始する。",
"Time zone:" : "タイムゾーン:"
+2 -2
View File
@@ -204,8 +204,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Could not rename part file to final file, canceled by hook",
"Could not rename part file to final file" : "Could not rename part file to final file",
"Failed to check file size: %1$s" : "Failed to check file size: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Could not open file: %1$s, file does seem to exist",
"Could not open file: %1$s, file doesn't seem to exist" : "Could not open file: %1$s, file doesn't seem to exist",
"Encryption not ready: %1$s" : "Encryption not ready: %1$s",
"Failed to open file: %1$s" : "Failed to open file: %1$s",
"Failed to unlink: %1$s" : "Failed to unlink: %1$s",
@@ -337,6 +335,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["In %n weeks on %1$s then on %2$s and %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["In %n months on %1$s then on %2$s and %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["In %n years on %1$s then on %2$s and %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Could not open file: %1$s, file does seem to exist",
"Could not open file: %1$s, file doesn't seem to exist" : "Could not open file: %1$s, file doesn't seem to exist",
"No results." : "No results.",
"Start typing." : "Start typing.",
"Time zone:" : "Time zone:"
+2 -2
View File
@@ -202,8 +202,6 @@
"Could not rename part file to final file, canceled by hook" : "Could not rename part file to final file, canceled by hook",
"Could not rename part file to final file" : "Could not rename part file to final file",
"Failed to check file size: %1$s" : "Failed to check file size: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Could not open file: %1$s, file does seem to exist",
"Could not open file: %1$s, file doesn't seem to exist" : "Could not open file: %1$s, file doesn't seem to exist",
"Encryption not ready: %1$s" : "Encryption not ready: %1$s",
"Failed to open file: %1$s" : "Failed to open file: %1$s",
"Failed to unlink: %1$s" : "Failed to unlink: %1$s",
@@ -335,6 +333,8 @@
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["In %n weeks on %1$s then on %2$s and %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["In %n months on %1$s then on %2$s and %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["In %n years on %1$s then on %2$s and %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Could not open file: %1$s, file does seem to exist",
"Could not open file: %1$s, file doesn't seem to exist" : "Could not open file: %1$s, file doesn't seem to exist",
"No results." : "No results.",
"Start typing." : "Start typing.",
"Time zone:" : "Time zone:"
+2 -2
View File
@@ -234,8 +234,6 @@ OC.L10N.register(
"Could not rename part file to final file, canceled by hook" : "Не можеше да се преименува делумната датотека во финална, поништено од hook",
"Could not rename part file to final file" : "Не можеше да се преименува делумната датотека во финална",
"Failed to check file size: %1$s" : "Не успеа да се провери големината на датотеката: %1$s",
"Could not open file: %1$s, file does seem to exist" : "Не може да се отвори датотеката: %1$s, датотеката изгледа дека постои",
"Could not open file: %1$s, file doesn't seem to exist" : "Не може да се отвори датотеката: %1$s, датотеката изгледа дека не постои",
"Encryption not ready: %1$s" : "Шифрирањето не е подготвено: %1$s",
"Failed to open file: %1$s" : "Неуспешно отварање на датотека: %1$s",
"Failed to unlink: %1$s" : "Не успеа да се отстрани врската: %1$s",
@@ -367,6 +365,8 @@ OC.L10N.register(
"_In a week on %1$s then on %2$s and %3$s_::_In %n weeks on %1$s then on %2$s and %3$s_" : ["За една недела, на %1$s, па на %2$s и %3$s","За %n недели, на %1$s, па на %2$s и %3$s"],
"_In a month on %1$s then on %2$s and %3$s_::_In %n months on %1$s then on %2$s and %3$s_" : ["За еден месец, на %1$s, па на %2$s и %3$s","За %n месеци, на %1$s, па на %2$s и %3$s"],
"_In a year on %1$s then on %2$s and %3$s_::_In %n years on %1$s then on %2$s and %3$s_" : ["За една година, на %1$s, па на %2$s и %3$s","За %n години, на %1$s, па на %2$s и %3$s"],
"Could not open file: %1$s, file does seem to exist" : "Не може да се отвори датотеката: %1$s, датотеката изгледа дека постои",
"Could not open file: %1$s, file doesn't seem to exist" : "Не може да се отвори датотеката: %1$s, датотеката изгледа дека не постои",
"No results." : "Нема резултати.",
"Start typing." : "Започни со пишување.",
"Time zone:" : "Временска зона:"

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