Compare commits
262 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 41df2668f2 | |||
| 1cb1f39279 | |||
| 115cca57aa | |||
| 58ffd9d06e | |||
| 6a2c0a254e | |||
| e5676ce0a9 | |||
| e2a54af254 | |||
| 8ca23f2c7d | |||
| 5862d5aea1 | |||
| b3bea71f1e | |||
| 71463f984a | |||
| 3b63ad000a | |||
| 902d01cc47 | |||
| 02da7fdeb7 | |||
| dabe0ec29f | |||
| e2291024f0 | |||
| 1ba88da113 | |||
| 6d8c49f0d4 | |||
| 8cc0c266d5 | |||
| 8df3310cc4 | |||
| 8c01acc13c | |||
| fa3caf1763 | |||
| 3ea86c1087 | |||
| 832b1509f4 | |||
| 5fbce0d1c1 | |||
| edf6279a95 | |||
| bb886258e0 | |||
| e49bda0e20 | |||
| 668b456ddd | |||
| a7fd536570 | |||
| e5c5023844 | |||
| a452afd77c | |||
| 20347c216d | |||
| 1386b8096d | |||
| 7cbca23e51 | |||
| 16dd61cc28 | |||
| de23547ef9 | |||
| 5f40fad790 | |||
| bfd8c1db47 | |||
| 5dfbac867f | |||
| 109422f24e | |||
| 84e9aff847 | |||
| 3bdc173644 | |||
| f154e60af3 | |||
| 6454cb5124 | |||
| 26cb5ebd8a | |||
| 258983e665 | |||
| 7962df9427 | |||
| 8524955091 | |||
| 616716cd6a | |||
| 0c3ebbfed5 | |||
| 1ae57fb054 | |||
| c45c792622 | |||
| 3b85743cf9 | |||
| 34949e4a36 | |||
| cc5ca58816 | |||
| 0051db7a43 | |||
| 4114fbfaff | |||
| 4fc5eaeff0 | |||
| 85b43f62a3 | |||
| 43c5232333 | |||
| 7a1c947ef0 | |||
| 3c73f3fcae | |||
| 0567332af1 | |||
| 9ae83f4bae | |||
| 4cb41d6111 | |||
| 94538c11c7 | |||
| be5431253a | |||
| aa8c0a68cb | |||
| 7a50f612d7 | |||
| d86189adc5 | |||
| 3845a64df0 | |||
| 9fce0f9297 | |||
| 1cc990358c | |||
| 2c8c036bdb | |||
| 8b1dcb9759 | |||
| d980e69f74 | |||
| 25ef415e14 | |||
| 9bfea21520 | |||
| f5f5a07e38 | |||
| 8503ce8968 | |||
| 6951053c90 | |||
| 56b9974c41 | |||
| 366eb9c2b6 | |||
| 271df14e6b | |||
| 9794f90b9d | |||
| 05fecce17d | |||
| cc17e4c1fe | |||
| 5e03c6fb58 | |||
| 9bfa1e7bd9 | |||
| 09854b4549 | |||
| 38f7e0f1d1 | |||
| a68e0355d9 | |||
| 21c128754d | |||
| b27d76059e | |||
| de5142545f | |||
| 893d81a5a5 | |||
| 9ed33cf6aa | |||
| 49baa914cf | |||
| 4a924bf400 | |||
| d1a94f3c9c | |||
| 14868ac0ee | |||
| 0c177240c3 | |||
| 1f81bc05b9 | |||
| 731060fe69 | |||
| 4628f85f85 | |||
| 12327fea1e | |||
| 9a8c099b48 | |||
| bd05af4273 | |||
| 743924ce4d | |||
| ce26d5450a | |||
| 796e089c0d | |||
| 056f510228 | |||
| 32d90b528c | |||
| cb92b5a64a | |||
| 12490b2837 | |||
| efa2cda370 | |||
| 25bc18c6dc | |||
| 9f6b2b8e45 | |||
| b4255a9652 | |||
| 6141ab1da6 | |||
| fd22b9cb18 | |||
| fe7c1c0aad | |||
| 703af4bd44 | |||
| f24d178d0f | |||
| c4b9e9d4a1 | |||
| f1448fcf07 | |||
| 36230f78c6 | |||
| 35056e5c33 | |||
| 98e3afce9e | |||
| 3fc9a99521 | |||
| cb4fcd0f40 | |||
| db8e570802 | |||
| 07f26fc789 | |||
| 91ded2c005 | |||
| 2ca168f717 | |||
| 0955b0a39d | |||
| 9cd42d67fb | |||
| 368ce76528 | |||
| 03b65867a8 | |||
| 69823fe160 | |||
| 8ebe423360 | |||
| 3c8990eb87 | |||
| 682b9f43b1 | |||
| a4cb653db0 | |||
| 0e60b5c123 | |||
| 454dab3ab7 | |||
| 77b663231f | |||
| 871ea1c9cd | |||
| 630c454db6 | |||
| 3a7c3e029e | |||
| 32881e298b | |||
| bc4c940b6e | |||
| c337020446 | |||
| 29161c0dfd | |||
| 1eb9000b0d | |||
| 8410d67fc7 | |||
| fb724416ba | |||
| 6b89838cc2 | |||
| 47f1950a40 | |||
| fe52a03ff8 | |||
| ed6bf0815c | |||
| dc8e16c520 | |||
| 55233c530a | |||
| a80cf40329 | |||
| f1202c4017 | |||
| fe99d38aab | |||
| 37fae11d5c | |||
| 8f8c11ad4e | |||
| 1ada9910b1 | |||
| 253a741013 | |||
| f0154a75ca | |||
| 9f666c2b73 | |||
| f34466c99e | |||
| f20d79e041 | |||
| e5291caa22 | |||
| e2df8f3d69 | |||
| 47d1afbb7f | |||
| a799d8dccf | |||
| 11594df799 | |||
| ba3c504812 | |||
| 775ca882f3 | |||
| d0658e85ea | |||
| 85d2ee5262 | |||
| a8328b06d6 | |||
| 3e5a3063ae | |||
| f81b54a370 | |||
| cd6e5ababb | |||
| 63ed670458 | |||
| 3e9454ad72 | |||
| fa8b389b6e | |||
| e5b34b700d | |||
| ace0928759 | |||
| 02efad600a | |||
| fbb77270c2 | |||
| 50dcbdeec6 | |||
| 75063cd71b | |||
| b2a187d296 | |||
| f4841e1172 | |||
| 59d1a49acc | |||
| 338ab64365 | |||
| a75f47f216 | |||
| f7cb282118 | |||
| bc70e0ded0 | |||
| 6a0d92dedf | |||
| f37026034e | |||
| f321646a67 | |||
| 649ea5df71 | |||
| d13798671c | |||
| d3a41b69c9 | |||
| c1e1b2b4f8 | |||
| bc456bbb8a | |||
| 8ff9747cbf | |||
| 95ffa38cb8 | |||
| f8391e60ce | |||
| 696e163ba2 | |||
| 96a8a74403 | |||
| 12b1342316 | |||
| 92038229fa | |||
| bbe3bc2ad3 | |||
| 988da9622c | |||
| 62bedebe7c | |||
| c74e4ad922 | |||
| 6a14a78444 | |||
| 56c7a93ef5 | |||
| 6e2afef860 | |||
| d385e024b9 | |||
| bc4fc5d7f0 | |||
| fc3067679d | |||
| ca47be30de | |||
| 19ede62b90 | |||
| caf30f048b | |||
| 88df96d69d | |||
| 61ab5cf157 | |||
| 0ceea33749 | |||
| e761c9e3eb | |||
| 8eb3c975ad | |||
| 8537b67eff | |||
| 9dd4206ee1 | |||
| 5c54f64db0 | |||
| 9662ce460b | |||
| ab7a4ee2dd | |||
| e65e8c893b | |||
| d494169e3f | |||
| 6bc4eda3cb | |||
| 2494eff627 | |||
| a81440d11c | |||
| f61cec4b8e | |||
| 816ca72c64 | |||
| 2ea3491240 | |||
| 5e9ebe4acb | |||
| d16bc3b550 | |||
| b4dcace2ac | |||
| 7f569205d9 | |||
| 5e6478fd64 | |||
| 0cf4f3cc71 | |||
| ddd7d4ed13 | |||
| 3bb2a92962 | |||
| 8fdf2a7eae | |||
| f436ab066e | |||
| 8388646ae7 | |||
| 778ae6a487 |
+135
-226
@@ -1,233 +1,8 @@
|
||||
# SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
# Linting and coding style
|
||||
- package-ecosystem: composer
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
|
||||
# cs-fixer
|
||||
- package-ecosystem: composer
|
||||
directory: "/vendor-bin/cs-fixer"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "04:10"
|
||||
timezone: Europe/Copenhagen
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
|
||||
# openapi-extractor
|
||||
- package-ecosystem: composer
|
||||
directory: "/vendor-bin/openapi-extractor"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "04:20"
|
||||
timezone: Europe/Brussels
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
- "provokateurin"
|
||||
|
||||
# psalm
|
||||
- package-ecosystem: composer
|
||||
directory: "/vendor-bin/psalm"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "04:30"
|
||||
timezone: Europe/Madrid
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
|
||||
# phpunit
|
||||
- package-ecosystem: composer
|
||||
directory: "/vendor-bin/phpunit"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "04:40"
|
||||
timezone: Europe/Madrid
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
|
||||
# Main master npm
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
open-pull-requests-limit: 20
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
# Disable automatic rebasing because without a build CI will likely fail anyway
|
||||
rebase-strategy: "disabled"
|
||||
|
||||
# Testing master npm
|
||||
- package-ecosystem: npm
|
||||
directory: "/build"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
|
||||
# Testing master composer
|
||||
- package-ecosystem: composer
|
||||
directory: "/build/integration"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
open-pull-requests-limit: 20
|
||||
target-branch: stable29
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
# Disable automatic rebasing because without a build CI will likely fail anyway
|
||||
rebase-strategy: "disabled"
|
||||
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
open-pull-requests-limit: 20
|
||||
target-branch: stable30
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
# Disable automatic rebasing because without a build CI will likely fail anyway
|
||||
rebase-strategy: "disabled"
|
||||
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
open-pull-requests-limit: 20
|
||||
target-branch: stable31
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
# Disable automatic rebasing because without a build CI will likely fail anyway
|
||||
rebase-strategy: "disabled"
|
||||
|
||||
- package-ecosystem: composer
|
||||
directory: "/build/integration"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable29
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
ignore:
|
||||
# ignore all GitHub linguist patch updates
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
|
||||
|
||||
- package-ecosystem: composer
|
||||
directory: "/build/integration"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable30
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
ignore:
|
||||
# ignore all GitHub linguist patch updates
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
|
||||
|
||||
- package-ecosystem: composer
|
||||
directory: "/build/integration"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
target-branch: stable31
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
ignore:
|
||||
# ignore all GitHub linguist patch updates
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor", "version-update:semver-patch"]
|
||||
|
||||
# GitHub Actions
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
@@ -244,3 +19,137 @@ updates:
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
|
||||
# Main composer (linting, testing, openapi)
|
||||
- package-ecosystem: composer
|
||||
directories:
|
||||
- "/"
|
||||
- "/build/integration"
|
||||
- "/vendor-bin/cs-fixer"
|
||||
- "/vendor-bin/openapi-extractor"
|
||||
- "/vendor-bin/phpunit"
|
||||
- "/vendor-bin/psalm"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
|
||||
# Main master npm frontend dependencies
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
open-pull-requests-limit: 20
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
# Disable automatic rebasing because without a build CI will likely fail anyway
|
||||
rebase-strategy: "disabled"
|
||||
|
||||
# Latest stable release
|
||||
# Composer dependencies for linting and testing
|
||||
- package-ecosystem: composer
|
||||
target-branch: stable31
|
||||
directories:
|
||||
- "/"
|
||||
- "/build/integration"
|
||||
- "/vendor-bin/cs-fixer"
|
||||
- "/vendor-bin/openapi-extractor"
|
||||
- "/vendor-bin/phpunit"
|
||||
- "/vendor-bin/psalm"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:30"
|
||||
timezone: Europe/Paris
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
ignore:
|
||||
# only patch updates on stable branches
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
|
||||
# Latest stable branch
|
||||
# frontend dependencies
|
||||
- package-ecosystem: npm
|
||||
target-branch: stable31
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:30"
|
||||
timezone: Europe/Paris
|
||||
open-pull-requests-limit: 20
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
# Disable automatic rebasing because without a build CI will likely fail anyway
|
||||
rebase-strategy: "disabled"
|
||||
ignore:
|
||||
# no major updates on stable branches
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major"]
|
||||
|
||||
# Older stable releases
|
||||
|
||||
# Composer dependencies for linting and testing
|
||||
- package-ecosystem: composer
|
||||
target-branch: stable30
|
||||
directories:
|
||||
- "/"
|
||||
- "/build/integration"
|
||||
- "/vendor-bin/cs-fixer"
|
||||
- "/vendor-bin/openapi-extractor"
|
||||
- "/vendor-bin/phpunit"
|
||||
- "/vendor-bin/psalm"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "04:00"
|
||||
timezone: Europe/Paris
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
ignore:
|
||||
# only patch updates on stable branches
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major", "version-update:semver-minor"]
|
||||
|
||||
# frontend dependencies
|
||||
- package-ecosystem: npm
|
||||
target-branch: stable30
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "04:00"
|
||||
timezone: Europe/Paris
|
||||
open-pull-requests-limit: 20
|
||||
labels:
|
||||
- "3. to review"
|
||||
- "feature: dependencies"
|
||||
reviewers:
|
||||
- "nextcloud/server-dependabot"
|
||||
# Disable automatic rebasing because without a build CI will likely fail anyway
|
||||
rebase-strategy: "disabled"
|
||||
ignore:
|
||||
# no major updates on stable branches
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major"]
|
||||
|
||||
@@ -36,6 +36,7 @@ jobs:
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
- '**.php'
|
||||
- build/autoloaderchecker.sh
|
||||
|
||||
autoloader:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -57,7 +58,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
@@ -66,9 +67,6 @@ jobs:
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Set up dependencies
|
||||
run: composer i
|
||||
|
||||
- name: Check auto loaders
|
||||
run: bash ./build/autoloaderchecker.sh
|
||||
|
||||
@@ -89,7 +87,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
|
||||
@@ -120,7 +120,7 @@ jobs:
|
||||
fallbackNpm: '^10'
|
||||
|
||||
- name: Set up node ${{ steps.package-engines-versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
with:
|
||||
node-version: ${{ steps.package-engines-versions.outputs.nodeVersion }}
|
||||
cache: npm
|
||||
|
||||
@@ -64,7 +64,7 @@ jobs:
|
||||
fallbackNpm: "^10"
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -110,7 +110,7 @@ jobs:
|
||||
path: ./
|
||||
|
||||
- name: Set up node ${{ needs.init.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
with:
|
||||
node-version: ${{ needs.init.outputs.nodeVersion }}
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ jobs:
|
||||
if [[ "${{ matrix.ftpd }}" == 'pure-ftpd' ]]; then docker run --name ftp -d --net host -e "PUBLICHOST=localhost" -e FTP_USER_NAME=test -e FTP_USER_PASS=test -e FTP_USER_HOME=/home/test -v /tmp/ftp:/home/test -v /tmp/ftp:/etc/pure-ftpd/passwd stilliard/pure-ftpd; fi
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -100,7 +100,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v5.4.0
|
||||
uses: codecov/codecov-action@v5.4.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-files-external-ftp
|
||||
|
||||
@@ -65,7 +65,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -98,7 +98,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v5.4.0
|
||||
uses: codecov/codecov-action@v5.4.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-files-external-s3
|
||||
@@ -140,7 +140,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -165,7 +165,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v5.4.0
|
||||
uses: codecov/codecov-action@v5.4.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-files-external-s3
|
||||
|
||||
@@ -64,7 +64,7 @@ jobs:
|
||||
if [[ '${{ matrix.sftpd }}' == 'openssh' ]]; then docker run -p 2222:22 --name sftp -d -v /tmp/sftp:/home/test atmoz/sftp 'test:test:::data'; fi
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -89,7 +89,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v5.4.0
|
||||
uses: codecov/codecov-action@v5.4.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-files-external-sftp
|
||||
|
||||
@@ -61,7 +61,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -94,7 +94,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v4.1.1
|
||||
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v4.1.1
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-files-external-smb
|
||||
|
||||
@@ -61,7 +61,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -91,7 +91,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v4.1.1
|
||||
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v4.1.1
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-files-external-webdav
|
||||
|
||||
@@ -54,7 +54,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -79,7 +79,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v5.4.0
|
||||
uses: codecov/codecov-action@v5.4.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-files-external-generic
|
||||
|
||||
@@ -56,7 +56,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
|
||||
@@ -55,7 +55,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
|
||||
@@ -70,7 +70,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
|
||||
@@ -114,7 +114,7 @@ jobs:
|
||||
ref: ${{ matrix.activity-versions }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
|
||||
@@ -63,7 +63,7 @@ jobs:
|
||||
fallbackNpm: '^10'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v3
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v3
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ jobs:
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
- name: Set up php8.1
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: 8.1
|
||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
|
||||
@@ -56,7 +56,7 @@ jobs:
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
coverage: none
|
||||
|
||||
@@ -35,7 +35,7 @@ jobs:
|
||||
fallbackNpm: '^10'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@ jobs:
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
with:
|
||||
node-version: ${{ needs.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -99,7 +99,7 @@ jobs:
|
||||
run: npm run test:coverage --if-present
|
||||
|
||||
- name: Collect coverage
|
||||
uses: codecov/codecov-action@0565863a31f2c772f9f0395002a31e3f06189574 # v4.3.1
|
||||
uses: codecov/codecov-action@ad3126e916f78f00edff4ed0317cf185271ccc2d # v4.3.1
|
||||
with:
|
||||
files: ./coverage/lcov.info
|
||||
|
||||
@@ -117,7 +117,7 @@ jobs:
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
with:
|
||||
node-version: ${{ needs.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -145,7 +145,7 @@ jobs:
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
with:
|
||||
node-version: ${{ needs.versions.outputs.nodeVersion }}
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ jobs:
|
||||
fallbackNpm: '^10'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v3
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v3
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ jobs:
|
||||
fallbackNpm: '^10'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0
|
||||
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -54,7 +54,7 @@ jobs:
|
||||
|
||||
- name: Fix npm audit
|
||||
id: npm-audit
|
||||
uses: nextcloud-libraries/npm-audit-action@2a60bd2e79cc77f2cc4d9a3fe40f1a69896f3a87 # v0.1.0
|
||||
uses: nextcloud-libraries/npm-audit-action@1b1728b2b4a7a78d69de65608efcf4db0e3e42d0 # v0.2.0
|
||||
|
||||
- name: Run npm ci and npm run build
|
||||
if: steps.checkout.outcome == 'success'
|
||||
|
||||
@@ -74,7 +74,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -105,7 +105,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v5.4.0
|
||||
uses: codecov/codecov-action@v5.4.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-azure
|
||||
|
||||
@@ -75,7 +75,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -111,7 +111,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v5.4.0
|
||||
uses: codecov/codecov-action@v5.4.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-s3
|
||||
|
||||
@@ -72,7 +72,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -101,7 +101,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v5.4.0
|
||||
uses: codecov/codecov-action@v5.4.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-swift
|
||||
|
||||
@@ -29,7 +29,7 @@ jobs:
|
||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: '8.1'
|
||||
extensions: ctype, curl, dom, fileinfo, gd, json, libxml, mbstring, openssl, pcntl, pdo, posix, session, simplexml, xml, xmlreader, xmlwriter, zip, zlib
|
||||
|
||||
@@ -35,7 +35,7 @@ jobs:
|
||||
ref: ${{ github.event.pull_request.base.ref }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
|
||||
@@ -42,7 +42,7 @@ jobs:
|
||||
sudo apt-get install -y ffmpeg imagemagick libmagickcore-6.q16-3-extra
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: ctype, curl, dom, fileinfo, gd, imagick, intl, json, mbstring, openssl, pdo_sqlite, posix, sqlite, xml, zip, apcu
|
||||
|
||||
@@ -91,7 +91,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -124,7 +124,7 @@ jobs:
|
||||
|
||||
- name: Upload db code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v5.4.0
|
||||
uses: codecov/codecov-action@v5.4.2
|
||||
with:
|
||||
files: ./clover.db.xml
|
||||
flags: phpunit-mariadb
|
||||
|
||||
@@ -76,7 +76,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -101,7 +101,7 @@ jobs:
|
||||
|
||||
- name: Upload code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v5.4.0
|
||||
uses: codecov/codecov-action@v5.4.2
|
||||
with:
|
||||
files: ./clover.xml
|
||||
flags: phpunit-memcached
|
||||
|
||||
@@ -125,7 +125,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -159,7 +159,7 @@ jobs:
|
||||
|
||||
- name: Upload db code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v5.4.0
|
||||
uses: codecov/codecov-action@v5.4.2
|
||||
with:
|
||||
files: ./clover.db.xml
|
||||
flags: phpunit-mysql
|
||||
|
||||
@@ -91,7 +91,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -124,7 +124,7 @@ jobs:
|
||||
|
||||
- name: Upload db code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v5.4.0
|
||||
uses: codecov/codecov-action@v5.4.2
|
||||
with:
|
||||
files: ./clover.db.xml
|
||||
flags: phpunit-mysql
|
||||
|
||||
@@ -79,7 +79,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -107,7 +107,7 @@ jobs:
|
||||
|
||||
- name: Upload nodb code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v5.4.0
|
||||
uses: codecov/codecov-action@v5.4.2
|
||||
with:
|
||||
files: ./clover.nodb.xml
|
||||
flags: phpunit-nodb
|
||||
|
||||
@@ -75,7 +75,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, redis, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
|
||||
@@ -103,7 +103,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -129,7 +129,7 @@ jobs:
|
||||
|
||||
- name: Upload db code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v5.4.0
|
||||
uses: codecov/codecov-action@v5.4.2
|
||||
with:
|
||||
files: ./clover.db.xml
|
||||
flags: phpunit-oci
|
||||
|
||||
@@ -91,7 +91,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -119,7 +119,7 @@ jobs:
|
||||
|
||||
- name: Upload db code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v5.4.0
|
||||
uses: codecov/codecov-action@v5.4.2
|
||||
with:
|
||||
files: ./clover.db.xml
|
||||
flags: phpunit-postgres
|
||||
|
||||
@@ -76,7 +76,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
@@ -105,7 +105,7 @@ jobs:
|
||||
|
||||
- name: Upload db code coverage
|
||||
if: ${{ !cancelled() && matrix.coverage }}
|
||||
uses: codecov/codecov-action@v5.4.0
|
||||
uses: codecov/codecov-action@v5.4.2
|
||||
with:
|
||||
files: ./clover.db.xml
|
||||
flags: phpunit-sqlite
|
||||
|
||||
@@ -30,7 +30,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: '8.1'
|
||||
extensions: apcu,ctype,curl,dom,fileinfo,ftp,gd,imagick,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
@@ -60,7 +60,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: '8.1'
|
||||
extensions: ctype,curl,dom,fileinfo,ftp,gd,imagick,intl,json,ldap,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
@@ -94,7 +94,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: '8.1'
|
||||
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
@@ -124,7 +124,7 @@ jobs:
|
||||
submodules: true
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@9e72090525849c5e82e596468b86eb55e9cc5401 #v2.32.0
|
||||
uses: shivammathur/setup-php@cf4cade2721270509d5b1c766ab3549210a39a2a #v2.33.0
|
||||
with:
|
||||
php-version: '8.1'
|
||||
extensions: ctype,curl,dom,fileinfo,gd,imagick,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
|
||||
@@ -131,6 +131,10 @@ Files: build/stubs/pcntl.php build/stubs/zip.php
|
||||
Copyright: 2022 JetBrains
|
||||
License: Apache-2.0
|
||||
|
||||
Files: build/stubs/excimer.php
|
||||
Copyright: 2019 Wikimedia Foundation
|
||||
License: Apache-2.0
|
||||
|
||||
Files: core/js/mimetypelist.js core/js/core.json themes/example/core/img
|
||||
Copyright: 2016 ownCloud, Inc., 2016-2024 Nextcloud GmbH and Nextcloud contributors
|
||||
License: AGPL-3.0-only
|
||||
|
||||
+1
-1
Submodule 3rdparty updated: d8eb3e1e51...e0a509739b
@@ -67,7 +67,7 @@
|
||||
- Bernhard Posselt <dev@bernhard-posselt.com>
|
||||
- Bernhard Reiter <ockham@raz.or.at>
|
||||
- Bill McGonigle <bill-github.com@bfccomputing.com>
|
||||
- Birk Borkason <daniel.niccoli@gmail.com>
|
||||
- Daniel Niccoli <daniel.niccoli@gmail.com>
|
||||
- Bjoern Schiessle <bjoern@schiessle.org>
|
||||
- Björn Schießle <bjoern@schiessle.org>
|
||||
- Bjørn Forsman <bjorn.forsman@gmail.com>
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
OC.L10N.register(
|
||||
"admin_audit",
|
||||
{
|
||||
"Auditing / Logging" : "Aodit / Kerzhlevr"
|
||||
},
|
||||
"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);");
|
||||
@@ -0,0 +1,4 @@
|
||||
{ "translations": {
|
||||
"Auditing / Logging" : "Aodit / Kerzhlevr"
|
||||
},"pluralForm" :"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);"
|
||||
}
|
||||
@@ -8,16 +8,6 @@ declare(strict_types=1);
|
||||
namespace OCA\AdminAudit\Actions;
|
||||
|
||||
class Versions extends Action {
|
||||
public function rollback(array $params): void {
|
||||
$this->log('Version "%s" of "%s" was restored.',
|
||||
[
|
||||
'version' => $params['revision'],
|
||||
'path' => $params['path']
|
||||
],
|
||||
['version', 'path']
|
||||
);
|
||||
}
|
||||
|
||||
public function delete(array $params): void {
|
||||
$this->log('Version "%s" was deleted.',
|
||||
['path' => $params['path']],
|
||||
|
||||
@@ -27,6 +27,7 @@ use OCA\AdminAudit\Listener\GroupManagementEventListener;
|
||||
use OCA\AdminAudit\Listener\SecurityEventListener;
|
||||
use OCA\AdminAudit\Listener\SharingEventListener;
|
||||
use OCA\AdminAudit\Listener\UserManagementEventListener;
|
||||
use OCA\Files_Versions\Events\VersionRestoredEvent;
|
||||
use OCP\App\Events\AppDisableEvent;
|
||||
use OCP\App\Events\AppEnableEvent;
|
||||
use OCP\App\Events\AppUpdateEvent;
|
||||
@@ -110,6 +111,7 @@ class Application extends App implements IBootstrap {
|
||||
|
||||
// File events
|
||||
$context->registerEventListener(BeforePreviewFetchedEvent::class, FileEventListener::class);
|
||||
$context->registerEventListener(VersionRestoredEvent::class, FileEventListener::class);
|
||||
|
||||
// Security events
|
||||
$context->registerEventListener(TwoFactorProviderChallengePassed::class, SecurityEventListener::class);
|
||||
@@ -220,7 +222,6 @@ class Application extends App implements IBootstrap {
|
||||
|
||||
private function versionsHooks(IAuditLogger $logger): void {
|
||||
$versionsActions = new Versions($logger);
|
||||
Util::connectHook('\OCP\Versions', 'rollback', $versionsActions, 'rollback');
|
||||
Util::connectHook('\OCP\Versions', 'delete', $versionsActions, 'delete');
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ declare(strict_types=1);
|
||||
namespace OCA\AdminAudit\Listener;
|
||||
|
||||
use OCA\AdminAudit\Actions\Action;
|
||||
use OCA\Files_Versions\Events\VersionRestoredEvent;
|
||||
use OCP\EventDispatcher\Event;
|
||||
use OCP\EventDispatcher\IEventListener;
|
||||
use OCP\Files\InvalidPathException;
|
||||
@@ -19,12 +20,14 @@ use OCP\Server;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
/**
|
||||
* @template-implements IEventListener<BeforePreviewFetchedEvent>
|
||||
* @template-implements IEventListener<BeforePreviewFetchedEvent|VersionRestoredEvent>
|
||||
*/
|
||||
class FileEventListener extends Action implements IEventListener {
|
||||
public function handle(Event $event): void {
|
||||
if ($event instanceof BeforePreviewFetchedEvent) {
|
||||
$this->beforePreviewFetched($event);
|
||||
} elseif ($event instanceof VersionRestoredEvent) {
|
||||
$this->versionRestored($event);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,4 +57,18 @@ class FileEventListener extends Action implements IEventListener {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Logs when a version is restored
|
||||
*/
|
||||
private function versionRestored(VersionRestoredEvent $event): void {
|
||||
$version = $event->getVersion();
|
||||
$this->log('Version "%s" of "%s" was restored.',
|
||||
[
|
||||
'version' => $version->getRevisionId(),
|
||||
'path' => $version->getVersionPath()
|
||||
],
|
||||
['version', 'path']
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
namespace OCA\CloudFederationAPI;
|
||||
|
||||
use OCP\Federation\ICloudFederationProviderManager;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
/**
|
||||
* Class config
|
||||
@@ -18,6 +19,7 @@ class Config {
|
||||
|
||||
public function __construct(
|
||||
private ICloudFederationProviderManager $cloudFederationProviderManager,
|
||||
private LoggerInterface $logger,
|
||||
) {
|
||||
}
|
||||
|
||||
@@ -32,6 +34,7 @@ class Config {
|
||||
$provider = $this->cloudFederationProviderManager->getCloudFederationProvider($resourceType);
|
||||
return $provider->getSupportedShareTypes();
|
||||
} catch (\Exception $e) {
|
||||
$this->logger->error('Failed to create federation provider', ['exception' => $e]);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -452,7 +452,7 @@ class RequestHandlerController extends Controller {
|
||||
*/
|
||||
private function getHostFromFederationId(string $entry): string {
|
||||
if (!str_contains($entry, '@')) {
|
||||
throw new IncomingRequestException('entry ' . $entry . ' does not contains @');
|
||||
throw new IncomingRequestException('entry ' . $entry . ' does not contain @');
|
||||
}
|
||||
$rightPart = substr($entry, strrpos($entry, '@') + 1);
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
OC.L10N.register(
|
||||
"dashboard",
|
||||
{
|
||||
"Dashboard" : "Töölaud",
|
||||
"Dashboard app" : "Töölaua rakendus",
|
||||
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Alustage oma päeva teadlikult\n\nNextcloudi avaleht on su päeva alguspunkt, mis annab ülevaate eelseisvatest kohtumistest, kiireloomulistest meilidest, vestlussõnumitest, sissetulevatest päringutest, viimastest säutsudest ja paljust muust! Inimesed saavad lisada neile meeldivaid vidinaid ja muuta tausta oma maitse järgi.",
|
||||
"Dashboard" : "Töölaud/Juhtpaneel",
|
||||
"Dashboard app" : "Töölaua/juhtpaneeli rakendus",
|
||||
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Alusta oma päeva teadlikult\n\nNextcloudi avaleht on su päeva alguspunkt, mis annab ülevaate eelseisvatest kohtumistest, kiireloomulistest kirjadest, vestlussõnumitest, sissetulevatest päringutest, viimastest säutsudest ja paljust muust! Inimesed saavad lisada neile meeldivaid vidinaid ja muuta tausta oma maitse järgi.",
|
||||
"Weather" : "Ilm",
|
||||
"Status" : "Staatus",
|
||||
"Status" : "Olek",
|
||||
"Good morning" : "Tere hommikust",
|
||||
"Good morning, {name}" : "Tere hommikust, {name}",
|
||||
"Good afternoon" : "Tere päevast",
|
||||
@@ -16,14 +16,14 @@ OC.L10N.register(
|
||||
"Hello, {name}" : "Tere, {name}",
|
||||
"Happy birthday 🥳🤩🎂🎉" : "Palju õnne sünnipäevaks 🥳🤩🎂🎉",
|
||||
"Happy birthday, {name} 🥳🤩🎂🎉" : "Palju õnne, {name} 🥳🤩🎂🎉",
|
||||
"\"{title} icon\"" : "\"{title} ikoon\"",
|
||||
"\"{title} icon\"" : "„{title} ikoon“",
|
||||
"Customize" : "Kohanda",
|
||||
"Edit widgets" : "Redigeeri vidinaid",
|
||||
"Edit widgets" : "Muuda vidinaid",
|
||||
"Get more widgets from the App Store" : "Hangi rohkem vidinaid Rakenduste Poest",
|
||||
"Weather service" : "Ilmateenus",
|
||||
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Sinu privaatsuse huvides küsib su nimel ilmaandmeid Nextcloudi server, nii et ilmateenistus ei saa isiklikku teavet.",
|
||||
"Weather data from Met.no" : "Ilmaandmed Met.no-st",
|
||||
"geocoding with Nominatim" : "geoprogrammeerimine Nominatim-iga",
|
||||
"elevation data from OpenTopoData" : "kõrgusandmed OpenTopoData-st"
|
||||
"geocoding with Nominatim" : "geoprogrammeerimine Nominatimiga",
|
||||
"elevation data from OpenTopoData" : "kõrgusandmed OpenTopoDatast"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{ "translations": {
|
||||
"Dashboard" : "Töölaud",
|
||||
"Dashboard app" : "Töölaua rakendus",
|
||||
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Alustage oma päeva teadlikult\n\nNextcloudi avaleht on su päeva alguspunkt, mis annab ülevaate eelseisvatest kohtumistest, kiireloomulistest meilidest, vestlussõnumitest, sissetulevatest päringutest, viimastest säutsudest ja paljust muust! Inimesed saavad lisada neile meeldivaid vidinaid ja muuta tausta oma maitse järgi.",
|
||||
"Dashboard" : "Töölaud/Juhtpaneel",
|
||||
"Dashboard app" : "Töölaua/juhtpaneeli rakendus",
|
||||
"Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an overview of your upcoming appointments, urgent emails, chat messages, incoming tickets, latest tweets and much more! People can add the widgets they like and change the background to their liking." : "Alusta oma päeva teadlikult\n\nNextcloudi avaleht on su päeva alguspunkt, mis annab ülevaate eelseisvatest kohtumistest, kiireloomulistest kirjadest, vestlussõnumitest, sissetulevatest päringutest, viimastest säutsudest ja paljust muust! Inimesed saavad lisada neile meeldivaid vidinaid ja muuta tausta oma maitse järgi.",
|
||||
"Weather" : "Ilm",
|
||||
"Status" : "Staatus",
|
||||
"Status" : "Olek",
|
||||
"Good morning" : "Tere hommikust",
|
||||
"Good morning, {name}" : "Tere hommikust, {name}",
|
||||
"Good afternoon" : "Tere päevast",
|
||||
@@ -14,14 +14,14 @@
|
||||
"Hello, {name}" : "Tere, {name}",
|
||||
"Happy birthday 🥳🤩🎂🎉" : "Palju õnne sünnipäevaks 🥳🤩🎂🎉",
|
||||
"Happy birthday, {name} 🥳🤩🎂🎉" : "Palju õnne, {name} 🥳🤩🎂🎉",
|
||||
"\"{title} icon\"" : "\"{title} ikoon\"",
|
||||
"\"{title} icon\"" : "„{title} ikoon“",
|
||||
"Customize" : "Kohanda",
|
||||
"Edit widgets" : "Redigeeri vidinaid",
|
||||
"Edit widgets" : "Muuda vidinaid",
|
||||
"Get more widgets from the App Store" : "Hangi rohkem vidinaid Rakenduste Poest",
|
||||
"Weather service" : "Ilmateenus",
|
||||
"For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Sinu privaatsuse huvides küsib su nimel ilmaandmeid Nextcloudi server, nii et ilmateenistus ei saa isiklikku teavet.",
|
||||
"Weather data from Met.no" : "Ilmaandmed Met.no-st",
|
||||
"geocoding with Nominatim" : "geoprogrammeerimine Nominatim-iga",
|
||||
"elevation data from OpenTopoData" : "kõrgusandmed OpenTopoData-st"
|
||||
"geocoding with Nominatim" : "geoprogrammeerimine Nominatimiga",
|
||||
"elevation data from OpenTopoData" : "kõrgusandmed OpenTopoDatast"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -250,6 +250,9 @@ OC.L10N.register(
|
||||
"Completed on %s" : "Fuldført den %s",
|
||||
"Due on %s by %s" : "Forfalder på %s til %s",
|
||||
"Due on %s" : "Forfalder på %s",
|
||||
"System Address Book" : "System adressebog",
|
||||
"The system address book contains contact information for all users in your instance." : "System adressebogen indeholder kontaktoplysninger for alle brugere i din instans.",
|
||||
"Enable System Address Book" : "Aktivér System adressebog",
|
||||
"DAV system address book" : "DAV system adressebog",
|
||||
"No outstanding DAV system address book sync." : "Ingen udestående synkronisering af DAV-systemets adressebog.",
|
||||
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "DAV-systemets adressebogssynkronisering er ikke kørt endnu, da din instans har mere end 1000 brugere, eller fordi der opstod en fejl. Kør det manuelt ved at kalde \"occ dav:sync-system-addressbook\".",
|
||||
@@ -306,6 +309,16 @@ OC.L10N.register(
|
||||
"Cancel" : "Annuller",
|
||||
"Import" : "Importer",
|
||||
"Error while saving settings" : "Der opstod en fejl under lagring af indstillinger",
|
||||
"Contact reset successfully" : "Kontakten blev nulstillet",
|
||||
"Error while resetting contact" : "Fejl under nulstilling af kontakt",
|
||||
"Contact imported successfully" : "Kontakten blev importeret",
|
||||
"Error while importing contact" : "Fejl under import af kontakt",
|
||||
"Example Content" : "Eksempelindhold",
|
||||
"Set example content to be created on new user first login." : "Indstil eksempel på indhold, der skal oprettes ved ny brugers første login.",
|
||||
"Import contact" : "Importér kontakt",
|
||||
"Reset to default contact" : "Nulstil til standardkontakt",
|
||||
"Import contacts" : "Importér kontakter",
|
||||
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Import af en ny .vcf-fil vil slette den eksisterende standardkontakt og erstatte den med den nye. Vil du fortsætte?",
|
||||
"There was an error updating your attendance status." : "Der opstod en fejl under opdatering af din fremmødestatus.",
|
||||
"Please contact the organizer directly." : "Kontakt venligst arrangøren direkte.",
|
||||
"Are you accepting the invitation?" : "Accepter du invitationen?",
|
||||
|
||||
@@ -248,6 +248,9 @@
|
||||
"Completed on %s" : "Fuldført den %s",
|
||||
"Due on %s by %s" : "Forfalder på %s til %s",
|
||||
"Due on %s" : "Forfalder på %s",
|
||||
"System Address Book" : "System adressebog",
|
||||
"The system address book contains contact information for all users in your instance." : "System adressebogen indeholder kontaktoplysninger for alle brugere i din instans.",
|
||||
"Enable System Address Book" : "Aktivér System adressebog",
|
||||
"DAV system address book" : "DAV system adressebog",
|
||||
"No outstanding DAV system address book sync." : "Ingen udestående synkronisering af DAV-systemets adressebog.",
|
||||
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "DAV-systemets adressebogssynkronisering er ikke kørt endnu, da din instans har mere end 1000 brugere, eller fordi der opstod en fejl. Kør det manuelt ved at kalde \"occ dav:sync-system-addressbook\".",
|
||||
@@ -304,6 +307,16 @@
|
||||
"Cancel" : "Annuller",
|
||||
"Import" : "Importer",
|
||||
"Error while saving settings" : "Der opstod en fejl under lagring af indstillinger",
|
||||
"Contact reset successfully" : "Kontakten blev nulstillet",
|
||||
"Error while resetting contact" : "Fejl under nulstilling af kontakt",
|
||||
"Contact imported successfully" : "Kontakten blev importeret",
|
||||
"Error while importing contact" : "Fejl under import af kontakt",
|
||||
"Example Content" : "Eksempelindhold",
|
||||
"Set example content to be created on new user first login." : "Indstil eksempel på indhold, der skal oprettes ved ny brugers første login.",
|
||||
"Import contact" : "Importér kontakt",
|
||||
"Reset to default contact" : "Nulstil til standardkontakt",
|
||||
"Import contacts" : "Importér kontakter",
|
||||
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Import af en ny .vcf-fil vil slette den eksisterende standardkontakt og erstatte den med den nye. Vil du fortsætte?",
|
||||
"There was an error updating your attendance status." : "Der opstod en fejl under opdatering af din fremmødestatus.",
|
||||
"Please contact the organizer directly." : "Kontakt venligst arrangøren direkte.",
|
||||
"Are you accepting the invitation?" : "Accepter du invitationen?",
|
||||
|
||||
+5
-5
@@ -255,11 +255,11 @@ OC.L10N.register(
|
||||
"Enable System Address Book" : "Systemadressbuch aktivieren",
|
||||
"DAV system address book" : "DAV-Systemadressbuch",
|
||||
"No outstanding DAV system address book sync." : "Keine ausstehende Synchronisierung des DAV-Systemadressbuchs",
|
||||
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "Die Synchronisierung des DAV-Systemadressbuchs wurde noch nicht ausgeführt, da deine Instanz mehr als 1000 Benutzer hat oder weil ein Fehler aufgetreten ist. Bitte führe sie manuell aus, indem du \"occ dav:sync-system-addressbook\" ausführst.",
|
||||
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "Die Synchronisierung des DAV-Systemadressbuchs wurde noch nicht ausgeführt, da diese Instanz mehr als 1000 Benutzer hat oder weil ein Fehler aufgetreten ist. Bitte manuell ausführen, mittels \"occ dav:sync-system-addressbook\".",
|
||||
"WebDAV endpoint" : "WebDAV-Endpunkt",
|
||||
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Es konnte nicht überprüft werden, ob dein Webserver ordnungsgemäß eingerichtet ist, um Dateisynchronisation über WebDAV zu ermöglichen. Bitte überprüfe dies manuell.",
|
||||
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Dein Webserver ist noch nicht hinreichend für Datei-Synchronisierung konfiguriert, da die WebDAV-Schnittstelle vermutlich nicht funktioniert.",
|
||||
"Your web server is properly set up to allow file synchronization over WebDAV." : "Dein Webserver ist ordnungsgemäß eingerichtet um Dateisynchronisation über WebDAV zu ermöglichen.",
|
||||
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Es konnte nicht überprüft werden, ob der Webserver ordnungsgemäß eingerichtet ist, um Dateisynchronisation über WebDAV zu ermöglichen. Bitte dies manuell überprüfen.",
|
||||
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Der Webserver ist noch nicht hinreichend für Datei-Synchronisierung konfiguriert, da die WebDAV-Schnittstelle vermutlich nicht funktioniert.",
|
||||
"Your web server is properly set up to allow file synchronization over WebDAV." : "Der Webserver ist ordnungsgemäß eingerichtet um Dateisynchronisation über WebDAV zu ermöglichen.",
|
||||
"Migrated calendar (%1$s)" : "Migrierter Kalender (%1$s)",
|
||||
"Calendars including events, details and attendees" : "Kalender mit Terminen, Details und Teilnehmern",
|
||||
"Contacts and groups" : "Kontakte und Gruppen",
|
||||
@@ -273,7 +273,7 @@ OC.L10N.register(
|
||||
"Out of office replacement (optional)" : "Abwesenheitsvertretung (optional)",
|
||||
"Name of the replacement" : "Name der Vertretung",
|
||||
"No results." : "Keine Ergebnisse",
|
||||
"Start typing." : "Beginne mit Schreiben",
|
||||
"Start typing." : "Mit dem Schreiben beginnen.",
|
||||
"Short absence status" : "Kurze Abwesenheits Meldung",
|
||||
"Long absence Message" : "Lange Abwesenheits Meldung",
|
||||
"Save" : "Speichern",
|
||||
|
||||
@@ -253,11 +253,11 @@
|
||||
"Enable System Address Book" : "Systemadressbuch aktivieren",
|
||||
"DAV system address book" : "DAV-Systemadressbuch",
|
||||
"No outstanding DAV system address book sync." : "Keine ausstehende Synchronisierung des DAV-Systemadressbuchs",
|
||||
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "Die Synchronisierung des DAV-Systemadressbuchs wurde noch nicht ausgeführt, da deine Instanz mehr als 1000 Benutzer hat oder weil ein Fehler aufgetreten ist. Bitte führe sie manuell aus, indem du \"occ dav:sync-system-addressbook\" ausführst.",
|
||||
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "Die Synchronisierung des DAV-Systemadressbuchs wurde noch nicht ausgeführt, da diese Instanz mehr als 1000 Benutzer hat oder weil ein Fehler aufgetreten ist. Bitte manuell ausführen, mittels \"occ dav:sync-system-addressbook\".",
|
||||
"WebDAV endpoint" : "WebDAV-Endpunkt",
|
||||
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Es konnte nicht überprüft werden, ob dein Webserver ordnungsgemäß eingerichtet ist, um Dateisynchronisation über WebDAV zu ermöglichen. Bitte überprüfe dies manuell.",
|
||||
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Dein Webserver ist noch nicht hinreichend für Datei-Synchronisierung konfiguriert, da die WebDAV-Schnittstelle vermutlich nicht funktioniert.",
|
||||
"Your web server is properly set up to allow file synchronization over WebDAV." : "Dein Webserver ist ordnungsgemäß eingerichtet um Dateisynchronisation über WebDAV zu ermöglichen.",
|
||||
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Es konnte nicht überprüft werden, ob der Webserver ordnungsgemäß eingerichtet ist, um Dateisynchronisation über WebDAV zu ermöglichen. Bitte dies manuell überprüfen.",
|
||||
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Der Webserver ist noch nicht hinreichend für Datei-Synchronisierung konfiguriert, da die WebDAV-Schnittstelle vermutlich nicht funktioniert.",
|
||||
"Your web server is properly set up to allow file synchronization over WebDAV." : "Der Webserver ist ordnungsgemäß eingerichtet um Dateisynchronisation über WebDAV zu ermöglichen.",
|
||||
"Migrated calendar (%1$s)" : "Migrierter Kalender (%1$s)",
|
||||
"Calendars including events, details and attendees" : "Kalender mit Terminen, Details und Teilnehmern",
|
||||
"Contacts and groups" : "Kontakte und Gruppen",
|
||||
@@ -271,7 +271,7 @@
|
||||
"Out of office replacement (optional)" : "Abwesenheitsvertretung (optional)",
|
||||
"Name of the replacement" : "Name der Vertretung",
|
||||
"No results." : "Keine Ergebnisse",
|
||||
"Start typing." : "Beginne mit Schreiben",
|
||||
"Start typing." : "Mit dem Schreiben beginnen.",
|
||||
"Short absence status" : "Kurze Abwesenheits Meldung",
|
||||
"Long absence Message" : "Lange Abwesenheits Meldung",
|
||||
"Save" : "Speichern",
|
||||
|
||||
+134
-18
@@ -2,7 +2,7 @@ OC.L10N.register(
|
||||
"dav",
|
||||
{
|
||||
"Calendar" : "Kalender",
|
||||
"Todos" : "Ülesanded",
|
||||
"Tasks" : "Ülesanded",
|
||||
"Personal" : "Isiklik",
|
||||
"{actor} created calendar {calendar}" : "{actor} lõi kalendri {calendar}",
|
||||
"You created calendar {calendar}" : "Sa lõid kalendri {calendar}",
|
||||
@@ -10,6 +10,10 @@ OC.L10N.register(
|
||||
"You deleted calendar {calendar}" : "Sa kustutasid kalendri {calendar}",
|
||||
"{actor} updated calendar {calendar}" : "{actor} uuendas kalendrit {calendar}",
|
||||
"You updated calendar {calendar}" : "Sa uuendasid kalendrit {calendar}",
|
||||
"{actor} restored calendar {calendar}" : "{actor} taastas kalendri {calendar}",
|
||||
"You restored calendar {calendar}" : "Sina taastasid kalendri {calendar}",
|
||||
"You shared calendar {calendar} as public link" : "Sina jagasid „{calendar}“ kalendrit avaliku lingina",
|
||||
"You removed public link for calendar {calendar}" : "Sa eemaldasid „{calendar}“ kalendri avaliku lingi",
|
||||
"{actor} shared calendar {calendar} with you" : "{actor} jagas kalendrit {calendar} sinuga",
|
||||
"You shared calendar {calendar} with {user}" : "Sa jagasid kalendrit {calendar} kasutajaga {user}",
|
||||
"{actor} shared calendar {calendar} with {user}" : "{actor} jagas kalendrit {calendar} kasutajaga {user}",
|
||||
@@ -21,41 +25,153 @@ OC.L10N.register(
|
||||
"{actor} shared calendar {calendar} with group {group}" : "{actor} jagas kalendrit {calendar} grupiga {group}",
|
||||
"You unshared calendar {calendar} from group {group}" : "Sa lõpetasid kalendri {calendar} jagamise grupiga {group}",
|
||||
"{actor} unshared calendar {calendar} from group {group}" : "{actor} lõpetas kalendri {calendar} jagamise grupiga {group}",
|
||||
"Untitled event" : "Ilma nimeta sündmus",
|
||||
"{actor} created event {event} in calendar {calendar}" : "{actor} lõi sündmuse {event} kalendrisse {calendar}",
|
||||
"You created event {event} in calendar {calendar}" : "Sa lõid sündmuse {event} kalendrisse {calendar}",
|
||||
"{actor} deleted event {event} from calendar {calendar}" : "{actor} kustutas sündmuse {event} kalendrist {calendar}",
|
||||
"You deleted event {event} from calendar {calendar}" : "Sa kustutasid sündmuse {event} kalendrist {calendar}",
|
||||
"{actor} updated event {event} in calendar {calendar}" : "{actor} uuendas sündmust {event} kalendris {calendar}",
|
||||
"You updated event {event} in calendar {calendar}" : "Sa uuendasid sündmust {event} kalendris {calendar}",
|
||||
"{actor} created todo {todo} in list {calendar}" : "{actor} lõi ülesande {todo} nimekirjas {calendar}",
|
||||
"You created todo {todo} in list {calendar}" : "Sa lõid ülesande {todo} nimekirjas {calendar}",
|
||||
"{actor} deleted todo {todo} from list {calendar}" : "{actor} kustutas ülesande {todo} nimekirjast {calendar}",
|
||||
"You deleted todo {todo} from list {calendar}" : "Sa kustutasid ülesande {todo} nimekirjast {calendar}",
|
||||
"{actor} updated todo {todo} in list {calendar}" : "{actor} uuendas ülesande {todo} nimekirjas {calendar}",
|
||||
"You updated todo {todo} in list {calendar}" : "Sa uuendasid ülesande {todo} nimekirjas {calendar}",
|
||||
"{actor} solved todo {todo} in list {calendar}" : "{actor} lõpetas ülesande {todo} nimekirjas {calendar}",
|
||||
"You solved todo {todo} in list {calendar}" : "Sa lõpetasid ülesande {todo} nimekirjas {calendar}",
|
||||
"{actor} reopened todo {todo} in list {calendar}" : "{actor} taasavas ülesande {todo} nimekirjas {calendar}",
|
||||
"You reopened todo {todo} in list {calendar}" : "Sa taasavasid ülesande {todo} nimekirjas {calendar}",
|
||||
"Busy" : "Hõivatud",
|
||||
"{actor} created to-do {todo} in list {calendar}" : "{actor} lisas {todo} ülesande {calendar} loendissse",
|
||||
"You created to-do {todo} in list {calendar}" : "Sina lisasid {todo} ülesande {calendar} loendisse",
|
||||
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} kustutas {todo} ülesande {calendar} loendist",
|
||||
"You deleted to-do {todo} from list {calendar}" : "Sina kustutasid {todo} ülesande {calendar} loendist",
|
||||
"{actor} updated to-do {todo} in list {calendar}" : "{actor} uuendas {todo} ülesannnet {calendar} loendist",
|
||||
"You updated to-do {todo} in list {calendar}" : "Sina uuendasid {todo} ülesannet {calendar} loendist",
|
||||
"{actor} solved to-do {todo} in list {calendar}" : "{actor} lahendas {todo} ülesande {calendar} loendist",
|
||||
"You solved to-do {todo} in list {calendar}" : "Sina lahendasid {todo} ülesande {calendar} loendist",
|
||||
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} avas uuesti {todo} ülesande {calendar} loendist",
|
||||
"You reopened to-do {todo} in list {calendar}" : "Sina avasid uuesti {todo} ülesande {calendar} loendist",
|
||||
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} teisaldas {todo} ülesande {sourceCalendar} loendist {targetCalendar} loendisse",
|
||||
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Sina teisaldasid {todo} ülesande {sourceCalendar} loendist {targetCalendar} loendisse",
|
||||
"Calendar, contacts and tasks" : "Kalender, kontaktid ja ülesanded",
|
||||
"A <strong>calendar</strong> was modified" : " <strong>Kalendrit</strong> muudeti",
|
||||
"A calendar <strong>event</strong> was modified" : "Kalendri <strong>sündmust </strong> muudeti",
|
||||
"A calendar <strong>todo</strong> was modified" : "Kalendri <strong>ülesannet</strong> muudeti",
|
||||
"A calendar <strong>to-do</strong> was modified" : "Kalendri <strong>ülesannet</strong> muudeti",
|
||||
"Contact birthdays" : "Kontaktide sünnipäevad",
|
||||
"Death of %s" : "%s surm",
|
||||
"Untitled calendar" : "Nimetu kalender",
|
||||
"Calendar:" : "Kalender:",
|
||||
"Date:" : "Kuupäev:",
|
||||
"Where:" : "Kus:",
|
||||
"Description:" : "Kirjeldus:",
|
||||
"Invitation canceled" : "Kutse on tühistatud",
|
||||
"Invitation updated" : "Kutse uuendatud",
|
||||
"_%n year_::_%n years_" : ["%n aasta","%n aastat"],
|
||||
"_%n month_::_%n months_" : ["%n kuu","%n kuud"],
|
||||
"_%n day_::_%n days_" : ["%n päev","%n päeva"],
|
||||
"_%n hour_::_%n hours_" : ["%n tund","%n tundi"],
|
||||
"_%n minute_::_%n minutes_" : ["%n minut","%n minutit"],
|
||||
"%s (in %s)" : "%s (%s pärast)",
|
||||
"%s (%s ago)" : "%s (%s eest)",
|
||||
"Calendar: %s" : "Kalender: %s",
|
||||
"Date: %s" : "Kuupäev: %s",
|
||||
"Description: %s" : "Kirjeldus: %s",
|
||||
"Where: %s" : "Kus: %s",
|
||||
"%1$s via %2$s" : "%1$s %2$s kaudu",
|
||||
"When:" : "Millal:",
|
||||
"Location:" : "Asukoht:",
|
||||
"Link:" : "Link:",
|
||||
"Accept" : "Nõustu",
|
||||
"Decline" : "Keeldu",
|
||||
"Monday" : "Esmaspäev",
|
||||
"Tuesday" : "Teisipäev",
|
||||
"Wednesday" : "Kolmapäev",
|
||||
"Thursday" : "Neljapäev",
|
||||
"Friday" : "Reede",
|
||||
"Saturday" : "Laupäev",
|
||||
"Sunday" : "Pühapäev",
|
||||
"January" : "Jaanuar",
|
||||
"February" : "Veebruar",
|
||||
"March" : "Märts",
|
||||
"April" : "Aprill",
|
||||
"May" : "Mai",
|
||||
"June" : "Juuni",
|
||||
"July" : "Juuli",
|
||||
"August" : "August",
|
||||
"September" : "September",
|
||||
"October" : "Oktoober",
|
||||
"November" : "November",
|
||||
"December" : "Detsember",
|
||||
"First" : "Esimene",
|
||||
"Second" : "Teine",
|
||||
"Third" : "Kolmas",
|
||||
"Fourth" : "Neljas",
|
||||
"Fifth" : "Viies",
|
||||
"Last" : "Viimane",
|
||||
"Contacts" : "Kontaktid",
|
||||
"Tasks" : "Ülesanded",
|
||||
"Accounts" : "Kasutajakontod",
|
||||
"System address book which holds all accounts" : "Süsteemne aadressiraamat, kus leiduvad kõik kasutajakontod",
|
||||
"File is not updatable: %1$s" : "Fail pole uuendatav: %1$s",
|
||||
"Failed to get storage for file" : "Failile ei õnnestunud eraldada andmeruumi",
|
||||
"Could not write file contents" : "Ei õnnestunud kirjutada faili sisu",
|
||||
"_%n byte_::_%n bytes_" : ["%n bait","%n baiti"],
|
||||
"Failed to check file size: %1$s" : "Faili suuruse kontrollimine ei õnnestunud: %1$s",
|
||||
"Could not open file: %1$s, file does seem to exist" : "„%1$s“ faili avamine ei õnnestunud - aga tundub, et ta on olemas",
|
||||
"Could not open file: %1$s, file doesn't seem to exist" : "„%1$s“ faili avamine ei õnnestunud - tundub, et teda pole olemas",
|
||||
"Encryption not ready: %1$s" : "Krüptimine pole veel kasutatav: %1$s",
|
||||
"Failed to open file: %1$s" : "Faili avamine ei õnnestunud: %1$s",
|
||||
"Failed to unlink: %1$s" : "Lingi eemaldamine ei õnnestunud: %1$s",
|
||||
"Failed to write file contents: %1$s" : "Faili sisu salvestamine ei õnnestunud: %1$s",
|
||||
"File not found: %1$s" : "Faili ei leidu: %1$s",
|
||||
"System is in maintenance mode." : "Server on hooldusrežiimis.",
|
||||
"Upgrade needed" : "Uuendus on vajalik",
|
||||
"Configures a CalDAV account" : "Seadistab CalDAV-i kasutajakonto",
|
||||
"Configures a CardDAV account" : "Seadistab CardDAV-i kasutajakonto",
|
||||
"Events" : "Sündmused",
|
||||
"Untitled task" : "Ilma nimeta pealkiri",
|
||||
"Due on %s" : "Tähtaeg: %s",
|
||||
"System Address Book" : "Süsteemne aadressiraamat",
|
||||
"The system address book contains contact information for all users in your instance." : "Süsteemses aadressiraamatus leiduvad kõikde selle serveri kasutajate kontaktteave.",
|
||||
"Enable System Address Book" : "Kasuta süsteemset aadressiraamatut",
|
||||
"DAV system address book" : "DAV-i süsteemne aadressiraamat",
|
||||
"WebDAV endpoint" : "WebDAV-i teenuse otspunkt",
|
||||
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Ei õnnestunud kontrollida, kas sinu veebiserver on korrektselt seadistatud ja võimaldab kasutada failide sünkroniseerimist WebDAV-i vahendusel. Palun kontrolli seda käsitsi.",
|
||||
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Sinu veebiserver pole veel failide sünkroniseerimiseks vajalikult seadistatud, kuna WebDAV liides paistab olevat katki.",
|
||||
"Your web server is properly set up to allow file synchronization over WebDAV." : "Sinu veebiserver on korrektselt seadistatud ja võimaldab kasutada failide sünkroniseerimist WebDAV-i vahendusel.",
|
||||
"Calendars including events, details and attendees" : "Kalendrid, sealhulgas sündmused, üksikasjad ja osalejad",
|
||||
"Contacts and groups" : "Kontaktid ja grupid",
|
||||
"WebDAV" : "WebDAV",
|
||||
"Tentative" : "Esialgne",
|
||||
"Absence saved" : "Äraoleku teave on salvestatud",
|
||||
"Failed to save your absence settings" : "Sinu äraoleku seadistuste salvestamine ei õnnestunud",
|
||||
"Absence cleared" : "Äraolek on eemaldatud",
|
||||
"Failed to clear your absence settings" : "Sinu äraoleku seadistuste eemaldamine ei õnnestunud",
|
||||
"First day" : "Esimene päev",
|
||||
"Last day (inclusive)" : "Viimane päev (kaasaarvatud)",
|
||||
"No results." : "Vasteid ei leitud.",
|
||||
"Start typing." : "Alusta kirjutamist.",
|
||||
"Short absence status" : "Äraoleku lühinimi",
|
||||
"Long absence Message" : "Äraoleku pikk sõnum",
|
||||
"Save" : "Salvesta",
|
||||
"Disable absence" : "Lülita äraolek välja",
|
||||
"Failed to load availability" : "Saadavuse laadimine ei õnnestunud",
|
||||
"Saved availability" : "Saadavus on salvestatud",
|
||||
"Failed to save availability" : "Saadavuse salvestamine ei õnnestunud",
|
||||
"Time zone:" : "Ajavöönd:",
|
||||
"to" : "saaja",
|
||||
"Availability" : "Saadavus",
|
||||
"Absence" : "Äraolek",
|
||||
"Configure your next absence period." : "Seadista järgmise äraoleku ajavahemik.",
|
||||
"Send invitations to attendees" : "Saada osalejatele kutsed",
|
||||
"Hello %s," : "Tere %s,",
|
||||
"When:" : "Millal:"
|
||||
"Enable notifications for events via push" : "Võta kasutusele tõuketeenustepõhised teavitused",
|
||||
"Cancel" : "Tühista",
|
||||
"Import" : "Impordi",
|
||||
"Error while saving settings" : "Viga seadistuste salvestamisel",
|
||||
"Contact reset successfully" : "Kontakti lähtestamine õnnestus",
|
||||
"Error while resetting contact" : "Viga kontakti lähtestamisel",
|
||||
"Contact imported successfully" : "Kontakti importimine õnnestus",
|
||||
"Error while importing contact" : "Viga kontakti importimisel",
|
||||
"Example Content" : "Sisunäidis",
|
||||
"Set example content to be created on new user first login." : "Kirjelda näidissisu, mis uue kasutaja esimesel sisselogimisel luuakse.",
|
||||
"Import contact" : "Impordi kontakt",
|
||||
"Reset to default contact" : "Lähtesta vaikimisi kontakstiks",
|
||||
"Import contacts" : "Impordi kontaktid",
|
||||
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Uue .vcf faili importimisel olemasolev vaikimisi kontakt kustutatakse ja asendatakse uuega. Kas sa soovid jätkata?",
|
||||
"There was an error updating your attendance status." : "Sinu osalemise oleku muutmisel tekkis viga.",
|
||||
"Please contact the organizer directly." : "Palun võta ühendust korraldajaga otse.",
|
||||
"Are you accepting the invitation?" : "Kas sa nõustud kutsega?",
|
||||
"Tentative" : "Esialgne",
|
||||
"Your attendance was updated successfully." : "Sinu osalemise oleku muutmine õnnestus.",
|
||||
"Time:" : "Aeg:",
|
||||
"Could not open file" : "Ei õnnestunud avada faili"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
+134
-18
@@ -1,6 +1,6 @@
|
||||
{ "translations": {
|
||||
"Calendar" : "Kalender",
|
||||
"Todos" : "Ülesanded",
|
||||
"Tasks" : "Ülesanded",
|
||||
"Personal" : "Isiklik",
|
||||
"{actor} created calendar {calendar}" : "{actor} lõi kalendri {calendar}",
|
||||
"You created calendar {calendar}" : "Sa lõid kalendri {calendar}",
|
||||
@@ -8,6 +8,10 @@
|
||||
"You deleted calendar {calendar}" : "Sa kustutasid kalendri {calendar}",
|
||||
"{actor} updated calendar {calendar}" : "{actor} uuendas kalendrit {calendar}",
|
||||
"You updated calendar {calendar}" : "Sa uuendasid kalendrit {calendar}",
|
||||
"{actor} restored calendar {calendar}" : "{actor} taastas kalendri {calendar}",
|
||||
"You restored calendar {calendar}" : "Sina taastasid kalendri {calendar}",
|
||||
"You shared calendar {calendar} as public link" : "Sina jagasid „{calendar}“ kalendrit avaliku lingina",
|
||||
"You removed public link for calendar {calendar}" : "Sa eemaldasid „{calendar}“ kalendri avaliku lingi",
|
||||
"{actor} shared calendar {calendar} with you" : "{actor} jagas kalendrit {calendar} sinuga",
|
||||
"You shared calendar {calendar} with {user}" : "Sa jagasid kalendrit {calendar} kasutajaga {user}",
|
||||
"{actor} shared calendar {calendar} with {user}" : "{actor} jagas kalendrit {calendar} kasutajaga {user}",
|
||||
@@ -19,41 +23,153 @@
|
||||
"{actor} shared calendar {calendar} with group {group}" : "{actor} jagas kalendrit {calendar} grupiga {group}",
|
||||
"You unshared calendar {calendar} from group {group}" : "Sa lõpetasid kalendri {calendar} jagamise grupiga {group}",
|
||||
"{actor} unshared calendar {calendar} from group {group}" : "{actor} lõpetas kalendri {calendar} jagamise grupiga {group}",
|
||||
"Untitled event" : "Ilma nimeta sündmus",
|
||||
"{actor} created event {event} in calendar {calendar}" : "{actor} lõi sündmuse {event} kalendrisse {calendar}",
|
||||
"You created event {event} in calendar {calendar}" : "Sa lõid sündmuse {event} kalendrisse {calendar}",
|
||||
"{actor} deleted event {event} from calendar {calendar}" : "{actor} kustutas sündmuse {event} kalendrist {calendar}",
|
||||
"You deleted event {event} from calendar {calendar}" : "Sa kustutasid sündmuse {event} kalendrist {calendar}",
|
||||
"{actor} updated event {event} in calendar {calendar}" : "{actor} uuendas sündmust {event} kalendris {calendar}",
|
||||
"You updated event {event} in calendar {calendar}" : "Sa uuendasid sündmust {event} kalendris {calendar}",
|
||||
"{actor} created todo {todo} in list {calendar}" : "{actor} lõi ülesande {todo} nimekirjas {calendar}",
|
||||
"You created todo {todo} in list {calendar}" : "Sa lõid ülesande {todo} nimekirjas {calendar}",
|
||||
"{actor} deleted todo {todo} from list {calendar}" : "{actor} kustutas ülesande {todo} nimekirjast {calendar}",
|
||||
"You deleted todo {todo} from list {calendar}" : "Sa kustutasid ülesande {todo} nimekirjast {calendar}",
|
||||
"{actor} updated todo {todo} in list {calendar}" : "{actor} uuendas ülesande {todo} nimekirjas {calendar}",
|
||||
"You updated todo {todo} in list {calendar}" : "Sa uuendasid ülesande {todo} nimekirjas {calendar}",
|
||||
"{actor} solved todo {todo} in list {calendar}" : "{actor} lõpetas ülesande {todo} nimekirjas {calendar}",
|
||||
"You solved todo {todo} in list {calendar}" : "Sa lõpetasid ülesande {todo} nimekirjas {calendar}",
|
||||
"{actor} reopened todo {todo} in list {calendar}" : "{actor} taasavas ülesande {todo} nimekirjas {calendar}",
|
||||
"You reopened todo {todo} in list {calendar}" : "Sa taasavasid ülesande {todo} nimekirjas {calendar}",
|
||||
"Busy" : "Hõivatud",
|
||||
"{actor} created to-do {todo} in list {calendar}" : "{actor} lisas {todo} ülesande {calendar} loendissse",
|
||||
"You created to-do {todo} in list {calendar}" : "Sina lisasid {todo} ülesande {calendar} loendisse",
|
||||
"{actor} deleted to-do {todo} from list {calendar}" : "{actor} kustutas {todo} ülesande {calendar} loendist",
|
||||
"You deleted to-do {todo} from list {calendar}" : "Sina kustutasid {todo} ülesande {calendar} loendist",
|
||||
"{actor} updated to-do {todo} in list {calendar}" : "{actor} uuendas {todo} ülesannnet {calendar} loendist",
|
||||
"You updated to-do {todo} in list {calendar}" : "Sina uuendasid {todo} ülesannet {calendar} loendist",
|
||||
"{actor} solved to-do {todo} in list {calendar}" : "{actor} lahendas {todo} ülesande {calendar} loendist",
|
||||
"You solved to-do {todo} in list {calendar}" : "Sina lahendasid {todo} ülesande {calendar} loendist",
|
||||
"{actor} reopened to-do {todo} in list {calendar}" : "{actor} avas uuesti {todo} ülesande {calendar} loendist",
|
||||
"You reopened to-do {todo} in list {calendar}" : "Sina avasid uuesti {todo} ülesande {calendar} loendist",
|
||||
"{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} teisaldas {todo} ülesande {sourceCalendar} loendist {targetCalendar} loendisse",
|
||||
"You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Sina teisaldasid {todo} ülesande {sourceCalendar} loendist {targetCalendar} loendisse",
|
||||
"Calendar, contacts and tasks" : "Kalender, kontaktid ja ülesanded",
|
||||
"A <strong>calendar</strong> was modified" : " <strong>Kalendrit</strong> muudeti",
|
||||
"A calendar <strong>event</strong> was modified" : "Kalendri <strong>sündmust </strong> muudeti",
|
||||
"A calendar <strong>todo</strong> was modified" : "Kalendri <strong>ülesannet</strong> muudeti",
|
||||
"A calendar <strong>to-do</strong> was modified" : "Kalendri <strong>ülesannet</strong> muudeti",
|
||||
"Contact birthdays" : "Kontaktide sünnipäevad",
|
||||
"Death of %s" : "%s surm",
|
||||
"Untitled calendar" : "Nimetu kalender",
|
||||
"Calendar:" : "Kalender:",
|
||||
"Date:" : "Kuupäev:",
|
||||
"Where:" : "Kus:",
|
||||
"Description:" : "Kirjeldus:",
|
||||
"Invitation canceled" : "Kutse on tühistatud",
|
||||
"Invitation updated" : "Kutse uuendatud",
|
||||
"_%n year_::_%n years_" : ["%n aasta","%n aastat"],
|
||||
"_%n month_::_%n months_" : ["%n kuu","%n kuud"],
|
||||
"_%n day_::_%n days_" : ["%n päev","%n päeva"],
|
||||
"_%n hour_::_%n hours_" : ["%n tund","%n tundi"],
|
||||
"_%n minute_::_%n minutes_" : ["%n minut","%n minutit"],
|
||||
"%s (in %s)" : "%s (%s pärast)",
|
||||
"%s (%s ago)" : "%s (%s eest)",
|
||||
"Calendar: %s" : "Kalender: %s",
|
||||
"Date: %s" : "Kuupäev: %s",
|
||||
"Description: %s" : "Kirjeldus: %s",
|
||||
"Where: %s" : "Kus: %s",
|
||||
"%1$s via %2$s" : "%1$s %2$s kaudu",
|
||||
"When:" : "Millal:",
|
||||
"Location:" : "Asukoht:",
|
||||
"Link:" : "Link:",
|
||||
"Accept" : "Nõustu",
|
||||
"Decline" : "Keeldu",
|
||||
"Monday" : "Esmaspäev",
|
||||
"Tuesday" : "Teisipäev",
|
||||
"Wednesday" : "Kolmapäev",
|
||||
"Thursday" : "Neljapäev",
|
||||
"Friday" : "Reede",
|
||||
"Saturday" : "Laupäev",
|
||||
"Sunday" : "Pühapäev",
|
||||
"January" : "Jaanuar",
|
||||
"February" : "Veebruar",
|
||||
"March" : "Märts",
|
||||
"April" : "Aprill",
|
||||
"May" : "Mai",
|
||||
"June" : "Juuni",
|
||||
"July" : "Juuli",
|
||||
"August" : "August",
|
||||
"September" : "September",
|
||||
"October" : "Oktoober",
|
||||
"November" : "November",
|
||||
"December" : "Detsember",
|
||||
"First" : "Esimene",
|
||||
"Second" : "Teine",
|
||||
"Third" : "Kolmas",
|
||||
"Fourth" : "Neljas",
|
||||
"Fifth" : "Viies",
|
||||
"Last" : "Viimane",
|
||||
"Contacts" : "Kontaktid",
|
||||
"Tasks" : "Ülesanded",
|
||||
"Accounts" : "Kasutajakontod",
|
||||
"System address book which holds all accounts" : "Süsteemne aadressiraamat, kus leiduvad kõik kasutajakontod",
|
||||
"File is not updatable: %1$s" : "Fail pole uuendatav: %1$s",
|
||||
"Failed to get storage for file" : "Failile ei õnnestunud eraldada andmeruumi",
|
||||
"Could not write file contents" : "Ei õnnestunud kirjutada faili sisu",
|
||||
"_%n byte_::_%n bytes_" : ["%n bait","%n baiti"],
|
||||
"Failed to check file size: %1$s" : "Faili suuruse kontrollimine ei õnnestunud: %1$s",
|
||||
"Could not open file: %1$s, file does seem to exist" : "„%1$s“ faili avamine ei õnnestunud - aga tundub, et ta on olemas",
|
||||
"Could not open file: %1$s, file doesn't seem to exist" : "„%1$s“ faili avamine ei õnnestunud - tundub, et teda pole olemas",
|
||||
"Encryption not ready: %1$s" : "Krüptimine pole veel kasutatav: %1$s",
|
||||
"Failed to open file: %1$s" : "Faili avamine ei õnnestunud: %1$s",
|
||||
"Failed to unlink: %1$s" : "Lingi eemaldamine ei õnnestunud: %1$s",
|
||||
"Failed to write file contents: %1$s" : "Faili sisu salvestamine ei õnnestunud: %1$s",
|
||||
"File not found: %1$s" : "Faili ei leidu: %1$s",
|
||||
"System is in maintenance mode." : "Server on hooldusrežiimis.",
|
||||
"Upgrade needed" : "Uuendus on vajalik",
|
||||
"Configures a CalDAV account" : "Seadistab CalDAV-i kasutajakonto",
|
||||
"Configures a CardDAV account" : "Seadistab CardDAV-i kasutajakonto",
|
||||
"Events" : "Sündmused",
|
||||
"Untitled task" : "Ilma nimeta pealkiri",
|
||||
"Due on %s" : "Tähtaeg: %s",
|
||||
"System Address Book" : "Süsteemne aadressiraamat",
|
||||
"The system address book contains contact information for all users in your instance." : "Süsteemses aadressiraamatus leiduvad kõikde selle serveri kasutajate kontaktteave.",
|
||||
"Enable System Address Book" : "Kasuta süsteemset aadressiraamatut",
|
||||
"DAV system address book" : "DAV-i süsteemne aadressiraamat",
|
||||
"WebDAV endpoint" : "WebDAV-i teenuse otspunkt",
|
||||
"Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Ei õnnestunud kontrollida, kas sinu veebiserver on korrektselt seadistatud ja võimaldab kasutada failide sünkroniseerimist WebDAV-i vahendusel. Palun kontrolli seda käsitsi.",
|
||||
"Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Sinu veebiserver pole veel failide sünkroniseerimiseks vajalikult seadistatud, kuna WebDAV liides paistab olevat katki.",
|
||||
"Your web server is properly set up to allow file synchronization over WebDAV." : "Sinu veebiserver on korrektselt seadistatud ja võimaldab kasutada failide sünkroniseerimist WebDAV-i vahendusel.",
|
||||
"Calendars including events, details and attendees" : "Kalendrid, sealhulgas sündmused, üksikasjad ja osalejad",
|
||||
"Contacts and groups" : "Kontaktid ja grupid",
|
||||
"WebDAV" : "WebDAV",
|
||||
"Tentative" : "Esialgne",
|
||||
"Absence saved" : "Äraoleku teave on salvestatud",
|
||||
"Failed to save your absence settings" : "Sinu äraoleku seadistuste salvestamine ei õnnestunud",
|
||||
"Absence cleared" : "Äraolek on eemaldatud",
|
||||
"Failed to clear your absence settings" : "Sinu äraoleku seadistuste eemaldamine ei õnnestunud",
|
||||
"First day" : "Esimene päev",
|
||||
"Last day (inclusive)" : "Viimane päev (kaasaarvatud)",
|
||||
"No results." : "Vasteid ei leitud.",
|
||||
"Start typing." : "Alusta kirjutamist.",
|
||||
"Short absence status" : "Äraoleku lühinimi",
|
||||
"Long absence Message" : "Äraoleku pikk sõnum",
|
||||
"Save" : "Salvesta",
|
||||
"Disable absence" : "Lülita äraolek välja",
|
||||
"Failed to load availability" : "Saadavuse laadimine ei õnnestunud",
|
||||
"Saved availability" : "Saadavus on salvestatud",
|
||||
"Failed to save availability" : "Saadavuse salvestamine ei õnnestunud",
|
||||
"Time zone:" : "Ajavöönd:",
|
||||
"to" : "saaja",
|
||||
"Availability" : "Saadavus",
|
||||
"Absence" : "Äraolek",
|
||||
"Configure your next absence period." : "Seadista järgmise äraoleku ajavahemik.",
|
||||
"Send invitations to attendees" : "Saada osalejatele kutsed",
|
||||
"Hello %s," : "Tere %s,",
|
||||
"When:" : "Millal:"
|
||||
"Enable notifications for events via push" : "Võta kasutusele tõuketeenustepõhised teavitused",
|
||||
"Cancel" : "Tühista",
|
||||
"Import" : "Impordi",
|
||||
"Error while saving settings" : "Viga seadistuste salvestamisel",
|
||||
"Contact reset successfully" : "Kontakti lähtestamine õnnestus",
|
||||
"Error while resetting contact" : "Viga kontakti lähtestamisel",
|
||||
"Contact imported successfully" : "Kontakti importimine õnnestus",
|
||||
"Error while importing contact" : "Viga kontakti importimisel",
|
||||
"Example Content" : "Sisunäidis",
|
||||
"Set example content to be created on new user first login." : "Kirjelda näidissisu, mis uue kasutaja esimesel sisselogimisel luuakse.",
|
||||
"Import contact" : "Impordi kontakt",
|
||||
"Reset to default contact" : "Lähtesta vaikimisi kontakstiks",
|
||||
"Import contacts" : "Impordi kontaktid",
|
||||
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Uue .vcf faili importimisel olemasolev vaikimisi kontakt kustutatakse ja asendatakse uuega. Kas sa soovid jätkata?",
|
||||
"There was an error updating your attendance status." : "Sinu osalemise oleku muutmisel tekkis viga.",
|
||||
"Please contact the organizer directly." : "Palun võta ühendust korraldajaga otse.",
|
||||
"Are you accepting the invitation?" : "Kas sa nõustud kutsega?",
|
||||
"Tentative" : "Esialgne",
|
||||
"Your attendance was updated successfully." : "Sinu osalemise oleku muutmine õnnestus.",
|
||||
"Time:" : "Aeg:",
|
||||
"Could not open file" : "Ei õnnestunud avada faili"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -275,6 +275,13 @@ OC.L10N.register(
|
||||
"Cancel" : "Annuler",
|
||||
"Import" : "Importation",
|
||||
"Error while saving settings" : "Erreur lors de l'enregistrement des paramètres",
|
||||
"Contact reset successfully" : "Contact réinitialisé avec succès",
|
||||
"Error while resetting contact" : "Erreur lors de la remise à zéro du contact",
|
||||
"Contact imported successfully" : "Contact importé avec succès",
|
||||
"Error while importing contact" : "Erreur lors de l'importation du contact",
|
||||
"Import contact" : "Importer un contact",
|
||||
"Import contacts" : "Importer des contacts",
|
||||
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Importer un nouveau fichier .vcf supprimera le contact par défaut existant et le remplacera. Voulez-vous continuer ?",
|
||||
"There was an error updating your attendance status." : "Une erreur s'est produite lors de la mise à jour de votre statut de présence.",
|
||||
"Please contact the organizer directly." : "Merci de contacter l'organisateur directement.",
|
||||
"Are you accepting the invitation?" : "Acceptez-vous l'invitation ?",
|
||||
|
||||
@@ -273,6 +273,13 @@
|
||||
"Cancel" : "Annuler",
|
||||
"Import" : "Importation",
|
||||
"Error while saving settings" : "Erreur lors de l'enregistrement des paramètres",
|
||||
"Contact reset successfully" : "Contact réinitialisé avec succès",
|
||||
"Error while resetting contact" : "Erreur lors de la remise à zéro du contact",
|
||||
"Contact imported successfully" : "Contact importé avec succès",
|
||||
"Error while importing contact" : "Erreur lors de l'importation du contact",
|
||||
"Import contact" : "Importer un contact",
|
||||
"Import contacts" : "Importer des contacts",
|
||||
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Importer un nouveau fichier .vcf supprimera le contact par défaut existant et le remplacera. Voulez-vous continuer ?",
|
||||
"There was an error updating your attendance status." : "Une erreur s'est produite lors de la mise à jour de votre statut de présence.",
|
||||
"Please contact the organizer directly." : "Merci de contacter l'organisateur directement.",
|
||||
"Are you accepting the invitation?" : "Acceptez-vous l'invitation ?",
|
||||
|
||||
@@ -270,7 +270,7 @@ OC.L10N.register(
|
||||
"Failed to clear your absence settings" : "Falha ao limpar suas configurações de ausência",
|
||||
"First day" : "Primeiro dia",
|
||||
"Last day (inclusive)" : "Último dia (inclusive)",
|
||||
"Out of office replacement (optional)" : "Substituição fora do escritório (opcional)",
|
||||
"Out of office replacement (optional)" : "Substituto durante sua ausência (opcional)",
|
||||
"Name of the replacement" : "Nome do substituto",
|
||||
"No results." : "Nenhum resultado.",
|
||||
"Start typing." : "Comece a digitar.",
|
||||
@@ -303,8 +303,8 @@ OC.L10N.register(
|
||||
"Hence they will not be available immediately after enabling but will show up after some time." : "Portanto, eles não estarão disponíveis imediatamente após a ativação, mas depois de algum tempo.",
|
||||
"Send notifications for events" : "Enviar notificações para eventos",
|
||||
"Notifications are sent via background jobs, so these must occur often enough." : "As notificações são enviadas via trabalhos em segundo plano, portanto, elas devem ocorrer com frequência suficiente.",
|
||||
"Send reminder notifications to calendar sharees as well" : "Envie notificações de lembrete para compartilhamentos de calendário também",
|
||||
"Reminders are always sent to organizers and attendees." : "Os lembretes são sempre enviados aos organizadores e participantes.",
|
||||
"Send reminder notifications to calendar sharees as well" : "Enviar notificações de lembrete também para os compartilhadores de calendário",
|
||||
"Reminders are always sent to organizers and attendees." : "Lembretes são sempre enviados aos organizadores e participantes.",
|
||||
"Enable notifications for events via push" : "Ativar notificações para eventos via push",
|
||||
"Cancel" : "Cancelar",
|
||||
"Import" : "Importar",
|
||||
|
||||
@@ -268,7 +268,7 @@
|
||||
"Failed to clear your absence settings" : "Falha ao limpar suas configurações de ausência",
|
||||
"First day" : "Primeiro dia",
|
||||
"Last day (inclusive)" : "Último dia (inclusive)",
|
||||
"Out of office replacement (optional)" : "Substituição fora do escritório (opcional)",
|
||||
"Out of office replacement (optional)" : "Substituto durante sua ausência (opcional)",
|
||||
"Name of the replacement" : "Nome do substituto",
|
||||
"No results." : "Nenhum resultado.",
|
||||
"Start typing." : "Comece a digitar.",
|
||||
@@ -301,8 +301,8 @@
|
||||
"Hence they will not be available immediately after enabling but will show up after some time." : "Portanto, eles não estarão disponíveis imediatamente após a ativação, mas depois de algum tempo.",
|
||||
"Send notifications for events" : "Enviar notificações para eventos",
|
||||
"Notifications are sent via background jobs, so these must occur often enough." : "As notificações são enviadas via trabalhos em segundo plano, portanto, elas devem ocorrer com frequência suficiente.",
|
||||
"Send reminder notifications to calendar sharees as well" : "Envie notificações de lembrete para compartilhamentos de calendário também",
|
||||
"Reminders are always sent to organizers and attendees." : "Os lembretes são sempre enviados aos organizadores e participantes.",
|
||||
"Send reminder notifications to calendar sharees as well" : "Enviar notificações de lembrete também para os compartilhadores de calendário",
|
||||
"Reminders are always sent to organizers and attendees." : "Lembretes são sempre enviados aos organizadores e participantes.",
|
||||
"Enable notifications for events via push" : "Ativar notificações para eventos via push",
|
||||
"Cancel" : "Cancelar",
|
||||
"Import" : "Importar",
|
||||
|
||||
@@ -309,6 +309,16 @@ OC.L10N.register(
|
||||
"Cancel" : "Zrušiť",
|
||||
"Import" : "Import",
|
||||
"Error while saving settings" : "Chyba pri ukladaní nastavení",
|
||||
"Contact reset successfully" : "Kontakt bol úspešne resetovaný",
|
||||
"Error while resetting contact" : "Chyba počas resetovania kontaktu ",
|
||||
"Contact imported successfully" : "Kontakt bol úspešne importovaný",
|
||||
"Error while importing contact" : "Chyba pri importovaní kontaktu",
|
||||
"Example Content" : "Príklad Obsahu",
|
||||
"Set example content to be created on new user first login." : "Nastavte vzorový obsah, ktorý sa vytvorí pri prvom prihlásení nového používateľa.",
|
||||
"Import contact" : "Importovať kontakt",
|
||||
"Reset to default contact" : "Resetovať na predvolený kontakt",
|
||||
"Import contacts" : "Importovať kontakty",
|
||||
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Importovaním nového súboru .vcf sa vymaže existujúci predvolený kontakt a nahradí sa novým. Chcete pokračovať?",
|
||||
"There was an error updating your attendance status." : "Nastal problém pri aktualizácii Vašej účasti.",
|
||||
"Please contact the organizer directly." : "Prosím kontaktujte priamo organizátora.",
|
||||
"Are you accepting the invitation?" : "Príjmate pozvánku?",
|
||||
|
||||
@@ -307,6 +307,16 @@
|
||||
"Cancel" : "Zrušiť",
|
||||
"Import" : "Import",
|
||||
"Error while saving settings" : "Chyba pri ukladaní nastavení",
|
||||
"Contact reset successfully" : "Kontakt bol úspešne resetovaný",
|
||||
"Error while resetting contact" : "Chyba počas resetovania kontaktu ",
|
||||
"Contact imported successfully" : "Kontakt bol úspešne importovaný",
|
||||
"Error while importing contact" : "Chyba pri importovaní kontaktu",
|
||||
"Example Content" : "Príklad Obsahu",
|
||||
"Set example content to be created on new user first login." : "Nastavte vzorový obsah, ktorý sa vytvorí pri prvom prihlásení nového používateľa.",
|
||||
"Import contact" : "Importovať kontakt",
|
||||
"Reset to default contact" : "Resetovať na predvolený kontakt",
|
||||
"Import contacts" : "Importovať kontakty",
|
||||
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Importovaním nového súboru .vcf sa vymaže existujúci predvolený kontakt a nahradí sa novým. Chcete pokračovať?",
|
||||
"There was an error updating your attendance status." : "Nastal problém pri aktualizácii Vašej účasti.",
|
||||
"Please contact the organizer directly." : "Prosím kontaktujte priamo organizátora.",
|
||||
"Are you accepting the invitation?" : "Príjmate pozvánku?",
|
||||
|
||||
@@ -250,6 +250,9 @@ OC.L10N.register(
|
||||
"Completed on %s" : "%s tarihinde tamamlandı",
|
||||
"Due on %s by %s" : "%s tarihine kadar %s tarafından",
|
||||
"Due on %s" : "%s tarihine kadar",
|
||||
"System Address Book" : "Sistem adres defteri",
|
||||
"The system address book contains contact information for all users in your instance." : "Sistem adres defterinde, kopyanızdaki tüm kullanıcıların iletişim bilgileri bulunur.",
|
||||
"Enable System Address Book" : "Sistem adres defteri kullanılsın",
|
||||
"DAV system address book" : "DAV sistem adres defteri",
|
||||
"No outstanding DAV system address book sync." : "Bekleyen bir DAV sistemi adres defteri eşitlemesi yok.",
|
||||
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "Kopyanızda 1000 üzerinde kullanıcı olduğundan ya da bir sorun çıktığından DAV sistemi adres defteri eşitlemesi henüz yapılmamış. Lütfen \"occ dav:sync-system-addressbook\" komutunu yürüterek el ile eşitleyin.",
|
||||
@@ -306,6 +309,16 @@ OC.L10N.register(
|
||||
"Cancel" : "İptal",
|
||||
"Import" : "İçe aktar",
|
||||
"Error while saving settings" : "Ayarlar kaydedilirken sorun çıktı",
|
||||
"Contact reset successfully" : "Kişi sıfırlandı",
|
||||
"Error while resetting contact" : "Kişi sıfırlanırken sorun çıktı",
|
||||
"Contact imported successfully" : "Kişi içe aktarıldı",
|
||||
"Error while importing contact" : "Kişi içe aktarılırken sorun çıktı",
|
||||
"Example Content" : "Örnek içerik",
|
||||
"Set example content to be created on new user first login." : "Yeni kullanıcının ilk oturum açmasında oluşturulacak örnek içeriği ayarlayın.",
|
||||
"Import contact" : "Kişiyi içe aktar",
|
||||
"Reset to default contact" : "Varsayılan kişiye sıfırla",
|
||||
"Import contacts" : "Kişileri içe aktar",
|
||||
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Yeni bir .vcf dosyasını içe aktarmak, var olan varsayılan kişiyi siler ve yenisiyle değiştirir. İlerlemek istiyor musunuz?",
|
||||
"There was an error updating your attendance status." : "Katılım durumunuz güncellenirken bir sorun çıktı.",
|
||||
"Please contact the organizer directly." : "Lütfen düzenleyici ile doğrudan görüşün.",
|
||||
"Are you accepting the invitation?" : "Daveti kabul ediyor musunuz?",
|
||||
|
||||
@@ -248,6 +248,9 @@
|
||||
"Completed on %s" : "%s tarihinde tamamlandı",
|
||||
"Due on %s by %s" : "%s tarihine kadar %s tarafından",
|
||||
"Due on %s" : "%s tarihine kadar",
|
||||
"System Address Book" : "Sistem adres defteri",
|
||||
"The system address book contains contact information for all users in your instance." : "Sistem adres defterinde, kopyanızdaki tüm kullanıcıların iletişim bilgileri bulunur.",
|
||||
"Enable System Address Book" : "Sistem adres defteri kullanılsın",
|
||||
"DAV system address book" : "DAV sistem adres defteri",
|
||||
"No outstanding DAV system address book sync." : "Bekleyen bir DAV sistemi adres defteri eşitlemesi yok.",
|
||||
"The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "Kopyanızda 1000 üzerinde kullanıcı olduğundan ya da bir sorun çıktığından DAV sistemi adres defteri eşitlemesi henüz yapılmamış. Lütfen \"occ dav:sync-system-addressbook\" komutunu yürüterek el ile eşitleyin.",
|
||||
@@ -304,6 +307,16 @@
|
||||
"Cancel" : "İptal",
|
||||
"Import" : "İçe aktar",
|
||||
"Error while saving settings" : "Ayarlar kaydedilirken sorun çıktı",
|
||||
"Contact reset successfully" : "Kişi sıfırlandı",
|
||||
"Error while resetting contact" : "Kişi sıfırlanırken sorun çıktı",
|
||||
"Contact imported successfully" : "Kişi içe aktarıldı",
|
||||
"Error while importing contact" : "Kişi içe aktarılırken sorun çıktı",
|
||||
"Example Content" : "Örnek içerik",
|
||||
"Set example content to be created on new user first login." : "Yeni kullanıcının ilk oturum açmasında oluşturulacak örnek içeriği ayarlayın.",
|
||||
"Import contact" : "Kişiyi içe aktar",
|
||||
"Reset to default contact" : "Varsayılan kişiye sıfırla",
|
||||
"Import contacts" : "Kişileri içe aktar",
|
||||
"Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?" : "Yeni bir .vcf dosyasını içe aktarmak, var olan varsayılan kişiyi siler ve yenisiyle değiştirir. İlerlemek istiyor musunuz?",
|
||||
"There was an error updating your attendance status." : "Katılım durumunuz güncellenirken bir sorun çıktı.",
|
||||
"Please contact the organizer directly." : "Lütfen düzenleyici ile doğrudan görüşün.",
|
||||
"Are you accepting the invitation?" : "Daveti kabul ediyor musunuz?",
|
||||
|
||||
@@ -72,6 +72,7 @@ OC.L10N.register(
|
||||
"Description: %s" : "Опис: %s",
|
||||
"Where: %s" : "Місце: %s",
|
||||
"%1$s via %2$s" : "%1$s через %2$s",
|
||||
"In the past on %1$s for the entire day" : "Раніше у %1$s протягом цілого дня",
|
||||
"Could not generate when statement" : "Не вдалося створити оператор \"коли\"",
|
||||
"Every Day for the entire day" : "Щодня впродовж усього дня",
|
||||
"Every Day for the entire day until %1$s" : "Щодня впродовж усього дня до %1$s",
|
||||
@@ -108,6 +109,8 @@ OC.L10N.register(
|
||||
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Що %1$d роки в %2$s, %3$s, між %4$s - %5$s до %6$s",
|
||||
"On specific dates for the entire day until %1$s" : "У визначені дати впродовж усього дня до %1$s",
|
||||
"On specific dates between %1$s - %2$s until %3$s" : "У визначені дати між %1$s - %2$s до %3$s",
|
||||
"In the past on %1$s" : "Раніше у %1$s",
|
||||
"In the past on %1$s then on %2$s" : "Раніше у %1$s, потім у %2$s",
|
||||
"Could not generate next recurrence statement" : "Не вдалося створити оператор наступного повторення",
|
||||
"Cancelled: %1$s" : "Скасовано: %1$s",
|
||||
"\"%1$s\" has been canceled" : "\"%1$s\" скасовано",
|
||||
@@ -154,10 +157,12 @@ OC.L10N.register(
|
||||
"Second" : "Другий",
|
||||
"Third" : "Третій",
|
||||
"Fourth" : "Четвертий",
|
||||
"Fifth" : "П'ятий",
|
||||
"Last" : "Останній",
|
||||
"Second Last" : "Другий(-а) останній(-я)",
|
||||
"Third Last" : "Третій(-я) останній(-я)",
|
||||
"Fourth Last" : "Четвертий(-а) останній(-я)",
|
||||
"Fifth Last" : "Останній п'ятий",
|
||||
"Contacts" : "Контакти",
|
||||
"{actor} created address book {addressbook}" : "{actor} створив(-ла) адресну книгу {addressbook}",
|
||||
"You created address book {addressbook}" : "Ви створили адресну книгу {addressbook}",
|
||||
@@ -272,6 +277,9 @@ OC.L10N.register(
|
||||
"Cancel" : "Скасувати",
|
||||
"Import" : "Імпорт",
|
||||
"Error while saving settings" : "Помилка під час збереження налаштувань",
|
||||
"Import contact" : "Імпортувати контакт",
|
||||
"Reset to default contact" : "Скинути то типового контакту",
|
||||
"Import contacts" : "Імпортувати контакти",
|
||||
"There was an error updating your attendance status." : "Виникла помилка при оновленні вашого статусу учасника.",
|
||||
"Please contact the organizer directly." : "Будь-ласка повідомте організатора.",
|
||||
"Are you accepting the invitation?" : "Чи приймаєте ви запрошення?",
|
||||
|
||||
@@ -70,6 +70,7 @@
|
||||
"Description: %s" : "Опис: %s",
|
||||
"Where: %s" : "Місце: %s",
|
||||
"%1$s via %2$s" : "%1$s через %2$s",
|
||||
"In the past on %1$s for the entire day" : "Раніше у %1$s протягом цілого дня",
|
||||
"Could not generate when statement" : "Не вдалося створити оператор \"коли\"",
|
||||
"Every Day for the entire day" : "Щодня впродовж усього дня",
|
||||
"Every Day for the entire day until %1$s" : "Щодня впродовж усього дня до %1$s",
|
||||
@@ -106,6 +107,8 @@
|
||||
"Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Що %1$d роки в %2$s, %3$s, між %4$s - %5$s до %6$s",
|
||||
"On specific dates for the entire day until %1$s" : "У визначені дати впродовж усього дня до %1$s",
|
||||
"On specific dates between %1$s - %2$s until %3$s" : "У визначені дати між %1$s - %2$s до %3$s",
|
||||
"In the past on %1$s" : "Раніше у %1$s",
|
||||
"In the past on %1$s then on %2$s" : "Раніше у %1$s, потім у %2$s",
|
||||
"Could not generate next recurrence statement" : "Не вдалося створити оператор наступного повторення",
|
||||
"Cancelled: %1$s" : "Скасовано: %1$s",
|
||||
"\"%1$s\" has been canceled" : "\"%1$s\" скасовано",
|
||||
@@ -152,10 +155,12 @@
|
||||
"Second" : "Другий",
|
||||
"Third" : "Третій",
|
||||
"Fourth" : "Четвертий",
|
||||
"Fifth" : "П'ятий",
|
||||
"Last" : "Останній",
|
||||
"Second Last" : "Другий(-а) останній(-я)",
|
||||
"Third Last" : "Третій(-я) останній(-я)",
|
||||
"Fourth Last" : "Четвертий(-а) останній(-я)",
|
||||
"Fifth Last" : "Останній п'ятий",
|
||||
"Contacts" : "Контакти",
|
||||
"{actor} created address book {addressbook}" : "{actor} створив(-ла) адресну книгу {addressbook}",
|
||||
"You created address book {addressbook}" : "Ви створили адресну книгу {addressbook}",
|
||||
@@ -270,6 +275,9 @@
|
||||
"Cancel" : "Скасувати",
|
||||
"Import" : "Імпорт",
|
||||
"Error while saving settings" : "Помилка під час збереження налаштувань",
|
||||
"Import contact" : "Імпортувати контакт",
|
||||
"Reset to default contact" : "Скинути то типового контакту",
|
||||
"Import contacts" : "Імпортувати контакти",
|
||||
"There was an error updating your attendance status." : "Виникла помилка при оновленні вашого статусу учасника.",
|
||||
"Please contact the organizer directly." : "Будь-ласка повідомте організатора.",
|
||||
"Are you accepting the invitation?" : "Чи приймаєте ви запрошення?",
|
||||
|
||||
@@ -289,7 +289,7 @@ OC.L10N.register(
|
||||
"Weekdays" : "工作日",
|
||||
"Pick a start time for {dayName}" : "选择 {dayName} 的开始时间",
|
||||
"Pick a end time for {dayName}" : "选择 {dayName} 的结束时间",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "不在工作时间内时,自动将用户状态设置为“请勿打扰”并静音所有通知。",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "不在工作时间内时,自动将用户状态设置为“勿扰”并静音所有通知。",
|
||||
"Availability" : "工作时间",
|
||||
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "如果你配置了工作时间,其他人在预订会议时会看到你何时不在办公室。",
|
||||
"Absence" : "离开",
|
||||
|
||||
@@ -287,7 +287,7 @@
|
||||
"Weekdays" : "工作日",
|
||||
"Pick a start time for {dayName}" : "选择 {dayName} 的开始时间",
|
||||
"Pick a end time for {dayName}" : "选择 {dayName} 的结束时间",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "不在工作时间内时,自动将用户状态设置为“请勿打扰”并静音所有通知。",
|
||||
"Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "不在工作时间内时,自动将用户状态设置为“勿扰”并静音所有通知。",
|
||||
"Availability" : "工作时间",
|
||||
"If you configure your working hours, other people will see when you are out of office when they book a meeting." : "如果你配置了工作时间,其他人在预订会议时会看到你何时不在办公室。",
|
||||
"Absence" : "离开",
|
||||
|
||||
@@ -9,7 +9,6 @@ declare(strict_types=1);
|
||||
*/
|
||||
namespace OCA\DAV\AppInfo;
|
||||
|
||||
use OCA\DAV\CalDAV\Activity\Backend;
|
||||
use OCA\DAV\CalDAV\AppCalendar\AppCalendarPlugin;
|
||||
use OCA\DAV\CalDAV\CachedSubscriptionProvider;
|
||||
use OCA\DAV\CalDAV\CalendarManager;
|
||||
@@ -82,7 +81,6 @@ use OCP\Config\BeforePreferenceDeletedEvent;
|
||||
use OCP\Config\BeforePreferenceSetEvent;
|
||||
use OCP\Contacts\IManager as IContactsManager;
|
||||
use OCP\DB\Events\AddMissingIndicesEvent;
|
||||
use OCP\EventDispatcher\IEventDispatcher;
|
||||
use OCP\Federation\Events\TrustedServerRemovedEvent;
|
||||
use OCP\Files\AppData\IAppDataFactory;
|
||||
use OCP\IUserSession;
|
||||
@@ -205,6 +203,7 @@ class Application extends App implements IBootstrap {
|
||||
$context->registerEventListener(UserDeletedEvent::class, UserEventsListener::class);
|
||||
$context->registerEventListener(UserCreatedEvent::class, UserEventsListener::class);
|
||||
$context->registerEventListener(UserChangedEvent::class, UserEventsListener::class);
|
||||
$context->registerEventListener(UserUpdatedEvent::class, UserEventsListener::class);
|
||||
|
||||
$context->registerNotifierService(Notifier::class);
|
||||
|
||||
@@ -228,35 +227,9 @@ class Application extends App implements IBootstrap {
|
||||
// Load all dav apps
|
||||
\OC_App::loadApps(['dav']);
|
||||
|
||||
$context->injectFn([$this, 'registerHooks']);
|
||||
$context->injectFn([$this, 'registerContactsManager']);
|
||||
$context->injectFn([$this, 'registerCalendarManager']);
|
||||
$context->injectFn([$this, 'registerCalendarReminders']);
|
||||
}
|
||||
|
||||
public function registerHooks(
|
||||
IEventDispatcher $dispatcher,
|
||||
IAppContainer $container,
|
||||
): void {
|
||||
$dispatcher->addListener(UserUpdatedEvent::class, function (UserUpdatedEvent $event) use ($container): void {
|
||||
/** @var SyncService $syncService */
|
||||
$syncService = Server::get(SyncService::class);
|
||||
$syncService->updateUser($event->getUser());
|
||||
});
|
||||
|
||||
|
||||
$dispatcher->addListener(CalendarShareUpdatedEvent::class, function (CalendarShareUpdatedEvent $event) use ($container): void {
|
||||
/** @var Backend $backend */
|
||||
$backend = $container->query(Backend::class);
|
||||
$backend->onCalendarUpdateShares(
|
||||
$event->getCalendarData(),
|
||||
$event->getOldShares(),
|
||||
$event->getAdded(),
|
||||
$event->getRemoved()
|
||||
);
|
||||
|
||||
// Here we should recalculate if reminders should be sent to new or old sharees
|
||||
});
|
||||
$context->injectFn($this->registerContactsManager(...));
|
||||
$context->injectFn($this->registerCalendarManager(...));
|
||||
$context->injectFn($this->registerCalendarReminders(...));
|
||||
}
|
||||
|
||||
public function registerContactsManager(IContactsManager $cm, IAppContainer $container): void {
|
||||
|
||||
@@ -134,7 +134,10 @@ class MultipartRequestParser {
|
||||
|
||||
$headers = $this->readPartHeaders();
|
||||
|
||||
$content = $this->readPartContent((int)$headers['content-length'], $headers['x-file-md5']);
|
||||
$length = (int)$headers['content-length'];
|
||||
|
||||
$this->validateHash($length, $headers['x-file-md5'] ?? '', $headers['oc-checksum'] ?? '');
|
||||
$content = $this->readPartContent($length);
|
||||
|
||||
return [$headers, $content];
|
||||
}
|
||||
@@ -184,8 +187,9 @@ class MultipartRequestParser {
|
||||
throw new LengthRequired('The Content-Length header must not be null.');
|
||||
}
|
||||
|
||||
if (!isset($headers['x-file-md5'])) {
|
||||
throw new BadRequest('The X-File-MD5 header must not be null.');
|
||||
// TODO: Drop $md5 condition when the latest desktop client that uses it is no longer supported.
|
||||
if (!isset($headers['x-file-md5']) && !isset($headers['oc-checksum'])) {
|
||||
throw new BadRequest('The hash headers must not be null.');
|
||||
}
|
||||
|
||||
return $headers;
|
||||
@@ -197,13 +201,7 @@ class MultipartRequestParser {
|
||||
* @throws Exception
|
||||
* @throws BadRequest
|
||||
*/
|
||||
private function readPartContent(int $length, string $md5): string {
|
||||
$computedMd5 = $this->computeMd5Hash($length);
|
||||
|
||||
if ($md5 !== $computedMd5) {
|
||||
throw new BadRequest('Computed md5 hash is incorrect.');
|
||||
}
|
||||
|
||||
private function readPartContent(int $length): string {
|
||||
if ($length === 0) {
|
||||
$content = '';
|
||||
} else {
|
||||
@@ -225,12 +223,25 @@ class MultipartRequestParser {
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute the MD5 hash of the next x bytes.
|
||||
* Compute the MD5 or checksum hash of the next x bytes.
|
||||
* TODO: Drop $md5 argument when the latest desktop client that uses it is no longer supported.
|
||||
*/
|
||||
private function computeMd5Hash(int $length): string {
|
||||
$context = hash_init('md5');
|
||||
private function validateHash(int $length, string $fileMd5Header, string $checksumHeader): void {
|
||||
if ($checksumHeader !== '') {
|
||||
[$algorithm, $hash] = explode(':', $checksumHeader, 2);
|
||||
} elseif ($fileMd5Header !== '') {
|
||||
$algorithm = 'md5';
|
||||
$hash = $fileMd5Header;
|
||||
} else {
|
||||
throw new BadRequest('No hash provided.');
|
||||
}
|
||||
|
||||
$context = hash_init($algorithm);
|
||||
hash_update_stream($context, $this->stream, $length);
|
||||
fseek($this->stream, -$length, SEEK_CUR);
|
||||
return hash_final($context);
|
||||
$computedHash = hash_final($context);
|
||||
if ($hash !== $computedHash) {
|
||||
throw new BadRequest("Computed $algorithm hash is incorrect ($computedHash).");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -261,7 +261,7 @@ class Plugin extends \Sabre\CalDAV\Schedule\Plugin {
|
||||
$principalUri = $aclPlugin->getPrincipalByUri($iTipMessage->recipient);
|
||||
$calendarUserType = $this->getCalendarUserTypeForPrincipal($principalUri);
|
||||
if (strcasecmp($calendarUserType, 'ROOM') !== 0 && strcasecmp($calendarUserType, 'RESOURCE') !== 0) {
|
||||
$this->logger->debug('Calendar user type is room or resource, not processing further');
|
||||
$this->logger->debug('Calendar user type is neither room nor resource, not processing further');
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -129,8 +129,9 @@ class File extends Node implements IFile {
|
||||
$view = Filesystem::getView();
|
||||
|
||||
if ($needsPartFile) {
|
||||
$transferId = \rand();
|
||||
// mark file as partial while uploading (ignored by the scanner)
|
||||
$partFilePath = $this->getPartFileBasePath($this->path) . '.ocTransferId' . rand() . '.part';
|
||||
$partFilePath = $this->getPartFileBasePath($this->path) . '.ocTransferId' . $transferId . '.part';
|
||||
|
||||
if (!$view->isCreatable($partFilePath) && $view->isUpdatable($this->path)) {
|
||||
$needsPartFile = false;
|
||||
@@ -232,42 +233,36 @@ class File extends Node implements IFile {
|
||||
fclose($target);
|
||||
}
|
||||
|
||||
if ($result === false) {
|
||||
$expected = -1;
|
||||
$lengthHeader = $this->request->getHeader('content-length');
|
||||
if ($lengthHeader) {
|
||||
$expected = (int)$lengthHeader;
|
||||
}
|
||||
if ($expected !== 0) {
|
||||
throw new Exception(
|
||||
$this->l10n->t(
|
||||
'Error while copying file to target location (copied: %1$s, expected filesize: %2$s)',
|
||||
[
|
||||
$this->l10n->n('%n byte', '%n bytes', $count),
|
||||
$this->l10n->n('%n byte', '%n bytes', $expected),
|
||||
],
|
||||
)
|
||||
);
|
||||
}
|
||||
$lengthHeader = $this->request->getHeader('content-length');
|
||||
$expected = $lengthHeader !== '' ? (int)$lengthHeader : -1;
|
||||
if ($result === false && $expected >= 0) {
|
||||
throw new Exception(
|
||||
$this->l10n->t(
|
||||
'Error while copying file to target location (copied: %1$s, expected filesize: %2$s)',
|
||||
[
|
||||
$this->l10n->n('%n byte', '%n bytes', $count),
|
||||
$this->l10n->n('%n byte', '%n bytes', $expected),
|
||||
],
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// if content length is sent by client:
|
||||
// double check if the file was fully received
|
||||
// compare expected and actual size
|
||||
$lengthHeader = $this->request->getHeader('content-length');
|
||||
if ($lengthHeader && $this->request->getMethod() === 'PUT') {
|
||||
$expected = (int)$lengthHeader;
|
||||
if ($count !== $expected) {
|
||||
throw new BadRequest(
|
||||
$this->l10n->t(
|
||||
'Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side.',
|
||||
[
|
||||
$this->l10n->n('%n byte', '%n bytes', $expected),
|
||||
$this->l10n->n('%n byte', '%n bytes', $count),
|
||||
],
|
||||
)
|
||||
);
|
||||
}
|
||||
if ($expected >= 0
|
||||
&& $expected !== $count
|
||||
&& $this->request->getMethod() === 'PUT'
|
||||
) {
|
||||
throw new BadRequest(
|
||||
$this->l10n->t(
|
||||
'Expected filesize of %1$s but read (from Nextcloud client) and wrote (to Nextcloud storage) %2$s. Could either be a network problem on the sending side or a problem writing to the storage on the server side.',
|
||||
[
|
||||
$this->l10n->n('%n byte', '%n bytes', $expected),
|
||||
$this->l10n->n('%n byte', '%n bytes', $count),
|
||||
],
|
||||
)
|
||||
);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
if ($e instanceof LockedException) {
|
||||
@@ -383,9 +378,14 @@ class File extends Node implements IFile {
|
||||
private function getPartFileBasePath($path) {
|
||||
$partFileInStorage = Server::get(IConfig::class)->getSystemValue('part_file_in_storage', true);
|
||||
if ($partFileInStorage) {
|
||||
return $path;
|
||||
$filename = basename($path);
|
||||
// hash does not need to be secure but fast and semi unique
|
||||
$hashedFilename = hash('xxh128', $filename);
|
||||
return substr($path, 0, strlen($path) - strlen($filename)) . $hashedFilename;
|
||||
} else {
|
||||
return md5($path); // will place it in the root of the view with a unique name
|
||||
// will place the .part file in the users root directory
|
||||
// therefor we need to make the name (semi) unique - hash does not need to be secure but fast.
|
||||
return hash('xxh128', $path);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ use OCP\Constants;
|
||||
use OCP\Files\ForbiddenException;
|
||||
use OCP\Files\IFilenameValidator;
|
||||
use OCP\Files\InvalidPathException;
|
||||
use OCP\Files\Storage\ISharedStorage;
|
||||
use OCP\Files\StorageNotAvailableException;
|
||||
use OCP\FilesMetadata\Exceptions\FilesMetadataException;
|
||||
use OCP\FilesMetadata\Exceptions\FilesMetadataNotFoundException;
|
||||
@@ -64,6 +65,7 @@ class FilesPlugin extends ServerPlugin {
|
||||
public const UPLOAD_TIME_PROPERTYNAME = '{http://nextcloud.org/ns}upload_time';
|
||||
public const CREATION_TIME_PROPERTYNAME = '{http://nextcloud.org/ns}creation_time';
|
||||
public const SHARE_NOTE = '{http://nextcloud.org/ns}note';
|
||||
public const SHARE_HIDE_DOWNLOAD_PROPERTYNAME = '{http://nextcloud.org/ns}hide-download';
|
||||
public const SUBFOLDER_COUNT_PROPERTYNAME = '{http://nextcloud.org/ns}contained-folder-count';
|
||||
public const SUBFILE_COUNT_PROPERTYNAME = '{http://nextcloud.org/ns}contained-file-count';
|
||||
public const FILE_METADATA_PREFIX = '{http://nextcloud.org/ns}metadata-';
|
||||
@@ -391,6 +393,19 @@ class FilesPlugin extends ServerPlugin {
|
||||
);
|
||||
});
|
||||
|
||||
$propFind->handle(self::SHARE_HIDE_DOWNLOAD_PROPERTYNAME, function () use ($node) {
|
||||
$storage = $node->getNode()->getStorage();
|
||||
if ($storage->instanceOfStorage(ISharedStorage::class)) {
|
||||
/** @var ISharedStorage $storage */
|
||||
return match($storage->getShare()->getHideDownload()) {
|
||||
true => 'true',
|
||||
false => 'false',
|
||||
};
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
$propFind->handle(self::DATA_FINGERPRINT_PROPERTYNAME, function () {
|
||||
return $this->config->getSystemValue('data-fingerprint', '');
|
||||
});
|
||||
@@ -678,8 +693,6 @@ class FilesPlugin extends ServerPlugin {
|
||||
return IMetadataValueWrapper::EDIT_REQ_READ_PERMISSION;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @param string $filePath
|
||||
* @param ?\Sabre\DAV\INode $node
|
||||
|
||||
@@ -39,5 +39,7 @@ class CalendarShareUpdateListener implements IEventListener {
|
||||
$event->getAdded(),
|
||||
$event->getRemoved()
|
||||
);
|
||||
|
||||
// Here we should recalculate if reminders should be sent to new or old sharees
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ use OCA\DAV\CalDAV\CalDavBackend;
|
||||
use OCA\DAV\CardDAV\CardDavBackend;
|
||||
use OCA\DAV\CardDAV\SyncService;
|
||||
use OCA\DAV\Service\DefaultContactService;
|
||||
use OCP\Accounts\UserUpdatedEvent;
|
||||
use OCP\Defaults;
|
||||
use OCP\EventDispatcher\Event;
|
||||
use OCP\EventDispatcher\IEventListener;
|
||||
@@ -29,7 +30,7 @@ use OCP\User\Events\UserIdAssignedEvent;
|
||||
use OCP\User\Events\UserIdUnassignedEvent;
|
||||
use Psr\Log\LoggerInterface;
|
||||
|
||||
/** @template-implements IEventListener<UserFirstTimeLoggedInEvent|UserIdAssignedEvent|BeforeUserIdUnassignedEvent|UserIdUnassignedEvent|BeforeUserDeletedEvent|UserDeletedEvent|UserCreatedEvent|UserChangedEvent> */
|
||||
/** @template-implements IEventListener<UserFirstTimeLoggedInEvent|UserIdAssignedEvent|BeforeUserIdUnassignedEvent|UserIdUnassignedEvent|BeforeUserDeletedEvent|UserDeletedEvent|UserCreatedEvent|UserChangedEvent|UserUpdatedEvent> */
|
||||
class UserEventsListener implements IEventListener {
|
||||
|
||||
/** @var IUser[] */
|
||||
@@ -69,6 +70,8 @@ class UserEventsListener implements IEventListener {
|
||||
$this->changeUser($event->getUser(), $event->getFeature());
|
||||
} elseif ($event instanceof UserFirstTimeLoggedInEvent) {
|
||||
$this->firstLogin($event->getUser());
|
||||
} elseif ($event instanceof UserUpdatedEvent) {
|
||||
$this->updateUser($event->getUser());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,6 +79,10 @@ class UserEventsListener implements IEventListener {
|
||||
$this->syncService->updateUser($user);
|
||||
}
|
||||
|
||||
public function updateUser(IUser $user): void {
|
||||
$this->syncService->updateUser($user);
|
||||
}
|
||||
|
||||
public function preDeleteUser(IUser $user): void {
|
||||
$uid = $user->getUID();
|
||||
$userPrincipalUri = 'principals/users/' . $uid;
|
||||
|
||||
@@ -28,7 +28,10 @@ class Version1004Date20170924124212 extends SimpleMigrationStep {
|
||||
$table->addIndex(['addressbookid', 'uri'], 'cards_abiduri');
|
||||
|
||||
$table = $schema->getTable('cards_properties');
|
||||
$table->addIndex(['addressbookid'], 'cards_prop_abid');
|
||||
// Removed later on
|
||||
// $table->addIndex(['addressbookid'], 'cards_prop_abid');
|
||||
// Added later on
|
||||
$table->addIndex(['addressbookid', 'name', 'value'], 'cards_prop_abid_name_value', );
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
||||
@@ -9,9 +9,11 @@ declare(strict_types=1);
|
||||
|
||||
namespace OCA\DAV\Service;
|
||||
|
||||
use OCA\DAV\AppInfo\Application;
|
||||
use OCA\DAV\CardDAV\CardDavBackend;
|
||||
use OCP\App\IAppManager;
|
||||
use OCP\Files\AppData\IAppDataFactory;
|
||||
use OCP\IAppConfig;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Component\Uid\Uuid;
|
||||
|
||||
@@ -20,11 +22,16 @@ class DefaultContactService {
|
||||
private CardDavBackend $cardDav,
|
||||
private IAppManager $appManager,
|
||||
private IAppDataFactory $appDataFactory,
|
||||
private IAppConfig $config,
|
||||
private LoggerInterface $logger,
|
||||
) {
|
||||
}
|
||||
|
||||
public function createDefaultContact(int $addressBookId): void {
|
||||
$enableDefaultContact = $this->config->getValueString(Application::APP_ID, 'enableDefaultContact', 'no');
|
||||
if ($enableDefaultContact !== 'yes') {
|
||||
return;
|
||||
}
|
||||
$appData = $this->appDataFactory->get('dav');
|
||||
try {
|
||||
$folder = $appData->getFolder('defaultContact');
|
||||
|
||||
@@ -7,12 +7,14 @@
|
||||
namespace OCA\DAV\Tests\unit\DAV;
|
||||
|
||||
use OCA\DAV\BulkUpload\MultipartRequestParser;
|
||||
use PHPUnit\Framework\MockObject\MockObject;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Sabre\HTTP\RequestInterface;
|
||||
use Test\TestCase;
|
||||
|
||||
class MultipartRequestParserTest extends TestCase {
|
||||
|
||||
protected LoggerInterface $logger;
|
||||
protected LoggerInterface&MockObject $logger;
|
||||
|
||||
protected function setUp(): void {
|
||||
$this->logger = $this->createMock(LoggerInterface::class);
|
||||
@@ -24,6 +26,7 @@ class MultipartRequestParserTest extends TestCase {
|
||||
'headers' => [
|
||||
'Content-Length' => 7,
|
||||
'X-File-MD5' => '4f2377b4d911f7ec46325fe603c3af03',
|
||||
'OC-Checksum' => 'md5:4f2377b4d911f7ec46325fe603c3af03',
|
||||
'X-File-Path' => '/coucou.txt'
|
||||
],
|
||||
'content' => "Coucou\n"
|
||||
@@ -32,7 +35,8 @@ class MultipartRequestParserTest extends TestCase {
|
||||
}
|
||||
|
||||
private function getMultipartParser(array $parts, array $headers = [], string $boundary = 'boundary_azertyuiop'): MultipartRequestParser {
|
||||
$request = $this->getMockBuilder('Sabre\HTTP\RequestInterface')
|
||||
/** @var RequestInterface&MockObject $request */
|
||||
$request = $this->getMockBuilder(RequestInterface::class)
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
|
||||
@@ -74,7 +78,8 @@ class MultipartRequestParserTest extends TestCase {
|
||||
*/
|
||||
public function testBodyTypeValidation(): void {
|
||||
$bodyStream = 'I am not a stream, but pretend to be';
|
||||
$request = $this->getMockBuilder('Sabre\HTTP\RequestInterface')
|
||||
/** @var RequestInterface&MockObject $request */
|
||||
$request = $this->getMockBuilder(RequestInterface::class)
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$request->expects($this->any())
|
||||
@@ -88,15 +93,39 @@ class MultipartRequestParserTest extends TestCase {
|
||||
/**
|
||||
* Test with valid request.
|
||||
* - valid boundary
|
||||
* - valid md5 hash
|
||||
* - valid hash
|
||||
* - valid content-length
|
||||
* - valid file content
|
||||
* - valid file path
|
||||
*/
|
||||
public function testValidRequest(): void {
|
||||
$multipartParser = $this->getMultipartParser(
|
||||
$this->getValidBodyObject()
|
||||
);
|
||||
$bodyObject = $this->getValidBodyObject();
|
||||
unset($bodyObject['0']['headers']['X-File-MD5']);
|
||||
|
||||
$multipartParser = $this->getMultipartParser($bodyObject);
|
||||
|
||||
[$headers, $content] = $multipartParser->parseNextPart();
|
||||
|
||||
$this->assertSame((int)$headers['content-length'], 7, 'Content-Length header should be the same as provided.');
|
||||
$this->assertSame($headers['oc-checksum'], 'md5:4f2377b4d911f7ec46325fe603c3af03', 'OC-Checksum header should be the same as provided.');
|
||||
$this->assertSame($headers['x-file-path'], '/coucou.txt', 'X-File-Path header should be the same as provided.');
|
||||
|
||||
$this->assertSame($content, "Coucou\n", 'Content should be the same');
|
||||
}
|
||||
|
||||
/**
|
||||
* Test with valid request.
|
||||
* - valid boundary
|
||||
* - valid md5 hash
|
||||
* - valid content-length
|
||||
* - valid file content
|
||||
* - valid file path
|
||||
*/
|
||||
public function testValidRequestWithMd5(): void {
|
||||
$bodyObject = $this->getValidBodyObject();
|
||||
unset($bodyObject['0']['headers']['OC-Checksum']);
|
||||
|
||||
$multipartParser = $this->getMultipartParser($bodyObject);
|
||||
|
||||
[$headers, $content] = $multipartParser->parseNextPart();
|
||||
|
||||
@@ -108,30 +137,47 @@ class MultipartRequestParserTest extends TestCase {
|
||||
}
|
||||
|
||||
/**
|
||||
* Test with invalid md5 hash.
|
||||
* Test with invalid hash.
|
||||
*/
|
||||
public function testInvalidMd5Hash(): void {
|
||||
$bodyObject = $this->getValidBodyObject();
|
||||
$bodyObject['0']['headers']['X-File-MD5'] = 'f2377b4d911f7ec46325fe603c3af03';
|
||||
$multipartParser = $this->getMultipartParser(
|
||||
$bodyObject
|
||||
);
|
||||
|
||||
$this->expectExceptionMessage('Computed md5 hash is incorrect.');
|
||||
$multipartParser->parseNextPart();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test with a null md5 hash.
|
||||
*/
|
||||
public function testNullMd5Hash(): void {
|
||||
public function testInvalidHash(): void {
|
||||
$bodyObject = $this->getValidBodyObject();
|
||||
$bodyObject['0']['headers']['OC-Checksum'] = 'md5:f2377b4d911f7ec46325fe603c3af03';
|
||||
unset($bodyObject['0']['headers']['X-File-MD5']);
|
||||
$multipartParser = $this->getMultipartParser(
|
||||
$bodyObject
|
||||
);
|
||||
|
||||
$this->expectExceptionMessage('The X-File-MD5 header must not be null.');
|
||||
$this->expectExceptionMessage('Computed md5 hash is incorrect (4f2377b4d911f7ec46325fe603c3af03).');
|
||||
$multipartParser->parseNextPart();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test with invalid md5 hash.
|
||||
*/
|
||||
public function testInvalidMd5Hash(): void {
|
||||
$bodyObject = $this->getValidBodyObject();
|
||||
unset($bodyObject['0']['headers']['OC-Checksum']);
|
||||
$bodyObject['0']['headers']['X-File-MD5'] = 'f2377b4d911f7ec46325fe603c3af03';
|
||||
$multipartParser = $this->getMultipartParser(
|
||||
$bodyObject
|
||||
);
|
||||
|
||||
$this->expectExceptionMessage('Computed md5 hash is incorrect (4f2377b4d911f7ec46325fe603c3af03).');
|
||||
$multipartParser->parseNextPart();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test with a null hash headers.
|
||||
*/
|
||||
public function testNullHash(): void {
|
||||
$bodyObject = $this->getValidBodyObject();
|
||||
unset($bodyObject['0']['headers']['OC-Checksum']);
|
||||
unset($bodyObject['0']['headers']['X-File-MD5']);
|
||||
$multipartParser = $this->getMultipartParser(
|
||||
$bodyObject
|
||||
);
|
||||
|
||||
$this->expectExceptionMessage('The hash headers must not be null.');
|
||||
$multipartParser->parseNextPart();
|
||||
}
|
||||
|
||||
@@ -159,7 +205,7 @@ class MultipartRequestParserTest extends TestCase {
|
||||
$bodyObject
|
||||
);
|
||||
|
||||
$this->expectExceptionMessage('Computed md5 hash is incorrect.');
|
||||
$this->expectExceptionMessage('Computed md5 hash is incorrect (41060d3ddfdf63e68fc2bf196f652ee9).');
|
||||
$multipartParser->parseNextPart();
|
||||
}
|
||||
|
||||
@@ -173,7 +219,7 @@ class MultipartRequestParserTest extends TestCase {
|
||||
$bodyObject
|
||||
);
|
||||
|
||||
$this->expectExceptionMessage('Computed md5 hash is incorrect.');
|
||||
$this->expectExceptionMessage('Computed md5 hash is incorrect (0161002bbee6a744f18741b8a914e413).');
|
||||
$multipartParser->parseNextPart();
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ use OCP\Files\IAppData;
|
||||
use OCP\Files\NotFoundException;
|
||||
use OCP\Files\SimpleFS\ISimpleFile;
|
||||
use OCP\Files\SimpleFS\ISimpleFolder;
|
||||
use OCP\IAppConfig;
|
||||
use PHPUnit\Framework\MockObject\MockObject;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Component\Uid\Uuid;
|
||||
@@ -28,6 +29,7 @@ class DefaultContactServiceTest extends TestCase {
|
||||
private MockObject|IAppManager $appManager;
|
||||
private MockObject|IAppDataFactory $appDataFactory;
|
||||
private MockObject|LoggerInterface $logger;
|
||||
private MockObject|IAppConfig $config;
|
||||
|
||||
protected function setUp(): void {
|
||||
parent::setUp();
|
||||
@@ -36,19 +38,21 @@ class DefaultContactServiceTest extends TestCase {
|
||||
$this->appManager = $this->createMock(IAppManager::class);
|
||||
$this->appDataFactory = $this->createMock(IAppDataFactory::class);
|
||||
$this->logger = $this->createMock(LoggerInterface::class);
|
||||
$this->config = $this->createMock(IAppConfig::class);
|
||||
|
||||
$this->service = new DefaultContactService(
|
||||
$this->cardDav,
|
||||
$this->appManager,
|
||||
$this->appDataFactory,
|
||||
$this->logger
|
||||
$this->config,
|
||||
$this->logger,
|
||||
);
|
||||
}
|
||||
|
||||
public function testCreateDefaultContactWithInvalidCard(): void {
|
||||
// Invalid vCard missing required FN property
|
||||
$vcardContent = "BEGIN:VCARD\nVERSION:3.0\nEND:VCARD";
|
||||
|
||||
$this->config->method('getValueString')->willReturn('yes');
|
||||
$appData = $this->createMock(IAppData::class);
|
||||
$folder = $this->createMock(ISimpleFolder::class);
|
||||
$file = $this->createMock(ISimpleFile::class);
|
||||
@@ -72,6 +76,7 @@ class DefaultContactServiceTest extends TestCase {
|
||||
$originalRev = '20200101T000000Z';
|
||||
$vcardContent = "BEGIN:VCARD\nVERSION:3.0\nFN:Test User\nUID:$originalUid\nREV:$originalRev\nEND:VCARD";
|
||||
|
||||
$this->config->method('getValueString')->willReturn('yes');
|
||||
$appData = $this->createMock(IAppData::class);
|
||||
$folder = $this->createMock(ISimpleFolder::class);
|
||||
$file = $this->createMock(ISimpleFile::class);
|
||||
@@ -103,6 +108,7 @@ class DefaultContactServiceTest extends TestCase {
|
||||
|
||||
public function testDefaultContactFileDoesNotExist(): void {
|
||||
$appData = $this->createMock(IAppData::class);
|
||||
$this->config->method('getValueString')->willReturn('yes');
|
||||
$appData->method('getFolder')->willThrowException(new NotFoundException());
|
||||
$this->appDataFactory->method('get')->willReturn($appData);
|
||||
|
||||
@@ -115,6 +121,7 @@ class DefaultContactServiceTest extends TestCase {
|
||||
public function testUidAndRevAreAddedIfMissing(): void {
|
||||
$vcardContent = "BEGIN:VCARD\nVERSION:3.0\nFN:Test User\nEND:VCARD";
|
||||
|
||||
$this->config->method('getValueString')->willReturn('yes');
|
||||
$appData = $this->createMock(IAppData::class);
|
||||
$folder = $this->createMock(ISimpleFolder::class);
|
||||
$file = $this->createMock(ISimpleFile::class);
|
||||
@@ -145,4 +152,14 @@ class DefaultContactServiceTest extends TestCase {
|
||||
$this->assertNotNull($vcard->UID);
|
||||
$this->assertTrue(Uuid::isValid($vcard->UID->getValue()));
|
||||
}
|
||||
|
||||
public function testDefaultContactIsNotCreatedIfEnabled(): void {
|
||||
$this->config->method('getValueString')->willReturn('no');
|
||||
$this->logger->expects($this->never())
|
||||
->method('error');
|
||||
$this->cardDav->expects($this->never())
|
||||
->method('createCard');
|
||||
|
||||
$this->service->createDefaultContact(123);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,6 +53,7 @@ OC.L10N.register(
|
||||
"Basic encryption module" : "기본 암호화 모듈",
|
||||
"Your private key password no longer matches your log-in password." : "개인 키 암호와 로그인 암호가 일치하지 않습니다.",
|
||||
"Set your old private key password to your current log-in password:" : "기존 개인 키 암호를 로그인 암호와 동일하게 설정하십시오:",
|
||||
"If you do not remember your old password you can ask your administrator to recover your files." : "기존 암호가 기억나지 않는다면 관리자에게 파일을 복구하도록 요청할 수 있습니다.",
|
||||
"Old log-in password" : "이전 로그인 암호",
|
||||
"Current log-in password" : "현재 로그인 암호",
|
||||
"Update Private Key Password" : "개인 키 암호 업데이트",
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
"Basic encryption module" : "기본 암호화 모듈",
|
||||
"Your private key password no longer matches your log-in password." : "개인 키 암호와 로그인 암호가 일치하지 않습니다.",
|
||||
"Set your old private key password to your current log-in password:" : "기존 개인 키 암호를 로그인 암호와 동일하게 설정하십시오:",
|
||||
"If you do not remember your old password you can ask your administrator to recover your files." : "기존 암호가 기억나지 않는다면 관리자에게 파일을 복구하도록 요청할 수 있습니다.",
|
||||
"Old log-in password" : "이전 로그인 암호",
|
||||
"Current log-in password" : "현재 로그인 암호",
|
||||
"Update Private Key Password" : "개인 키 암호 업데이트",
|
||||
|
||||
@@ -28,6 +28,9 @@ OC.L10N.register(
|
||||
"Bad Signature" : "签名已损坏",
|
||||
"Missing Signature" : "签名已丢失",
|
||||
"one-time password for server-side-encryption" : "用于服务端加密的一次性密码",
|
||||
"Encryption password" : "加密密码",
|
||||
"The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>." : "服务器端加密已启用,您的文件已经使用密码<strong>%s</strong>加密。",
|
||||
"The administration enabled server-side-encryption. Your files were encrypted using the password \"%s\"." : "服务器端加密已启用,您的文件已经使用密码“%s”加密。",
|
||||
"Please login to the web interface, go to the \"Security\" section of your personal settings and update your encryption password by entering this password into the \"Old login password\" field and your current login password." : "请登录网络界面,进入个人设置的 \"安全\" 部分,在“旧登录密码”字段中输入此密码,并在当前登录密码中输入该密码,以更新您的加密密码。",
|
||||
"Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "无法解密此文件,可能这是一个共享文件。请通知文件所有者与你重新共享该文件。",
|
||||
"Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "无法读取此文件,可能这是一个共享文件。请通知文件所有者与你重新共享该文件。",
|
||||
|
||||
@@ -26,6 +26,9 @@
|
||||
"Bad Signature" : "签名已损坏",
|
||||
"Missing Signature" : "签名已丢失",
|
||||
"one-time password for server-side-encryption" : "用于服务端加密的一次性密码",
|
||||
"Encryption password" : "加密密码",
|
||||
"The administration enabled server-side-encryption. Your files were encrypted using the password <strong>%s</strong>." : "服务器端加密已启用,您的文件已经使用密码<strong>%s</strong>加密。",
|
||||
"The administration enabled server-side-encryption. Your files were encrypted using the password \"%s\"." : "服务器端加密已启用,您的文件已经使用密码“%s”加密。",
|
||||
"Please login to the web interface, go to the \"Security\" section of your personal settings and update your encryption password by entering this password into the \"Old login password\" field and your current login password." : "请登录网络界面,进入个人设置的 \"安全\" 部分,在“旧登录密码”字段中输入此密码,并在当前登录密码中输入该密码,以更新您的加密密码。",
|
||||
"Cannot decrypt this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "无法解密此文件,可能这是一个共享文件。请通知文件所有者与你重新共享该文件。",
|
||||
"Cannot read this file, probably this is a shared file. Please ask the file owner to reshare the file with you." : "无法读取此文件,可能这是一个共享文件。请通知文件所有者与你重新共享该文件。",
|
||||
|
||||
@@ -23,12 +23,23 @@ OC.L10N.register(
|
||||
"Sharing" : "Deling",
|
||||
"Federated file sharing" : "Sammenkoblet fildeling",
|
||||
"Provide federated file sharing across servers" : "Lever sammenkoblet fildeling på tværs af servere",
|
||||
"Confirm data upload to lookup server" : "Bekræft dataoverførsel til opslagsserver",
|
||||
"When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Når det er aktiveret, vil alle kontoegenskaber (f.eks. mailadresse) med omfangssynlighed indstillet til \"publiceret\", automatisk blive synkroniseret og transmitteret til et eksternt system og gjort tilgængelige i en offentlig, global adressebog.",
|
||||
"Disable upload" : "Deaktivér upload",
|
||||
"Enable data upload" : "Aktivér data upload",
|
||||
"Confirm querying lookup server" : "Bekræft forespørgsel til opslagsserver",
|
||||
"When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Når det er aktiveret, vil søgeinputtet, når der oprettes delinger, blive sendt til et eksternt system, der leverer en offentlig og global adressebog.",
|
||||
"This is used to retrieve the federated cloud ID to make federated sharing easier." : "Dette bruges til at hente det fødererede cloud ID for at gøre fødereret deling nemmere.",
|
||||
"Moreover, email addresses of users might be sent to that system in order to verify them." : "Desuden kan mailadresser på brugere blive sendt til dette system for at verificere dem.",
|
||||
"Disable querying" : "Deaktivér forespørgsler",
|
||||
"Enable querying" : "Aktivér forespørgsler",
|
||||
"Unable to update federated files sharing config" : "Kan ikke opdatere sammenkoblet fildelingskonfiguration",
|
||||
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Juster, hvordan brugere kan dele mellem servere. Dette inkluderer også delinger mellem brugere på denne server, hvis de bruger sammenkoblet deling.",
|
||||
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Tillad brugere på denne server at sende shares til andre servere (denne mulighed giver også WebDAV adgang til offentlige shares)",
|
||||
"Allow people on this server to receive shares from other servers" : "Tillad brugere på denne server at modtage delinger fra andre servere",
|
||||
"Allow people on this server to send shares to groups on other servers" : "Tillad brugere på denne server at sende delinger til grupper på andre servere",
|
||||
"Allow people on this server to receive group shares from other servers" : "Tillad brugere på denne server at modtage gruppedelinger fra andre servere",
|
||||
"The lookup server is only available for global scale." : "Opslagsserveren er kun tilgængelig for global skala.",
|
||||
"Search global and public address book for people" : "Søg global og offentlig adressebog efter personer",
|
||||
"Allow people to publish their data to a global and public address book" : "Tillad brugere at udgive deres data til en global og offentlig adressebog",
|
||||
"Trusted federation" : "Betroet sammenkobling",
|
||||
@@ -49,7 +60,7 @@ OC.L10N.register(
|
||||
"Mastodon" : "Mastodont",
|
||||
"Add to your website" : "Tilføj til dit websted",
|
||||
"Share with me via Nextcloud" : "Del med mig gennem Nextcloud",
|
||||
"HTML Code:" : "HTMLkode:",
|
||||
"HTML Code:" : "HTML kode:",
|
||||
"Cancel" : "Annuller",
|
||||
"Add remote share" : "Tilføj ekstern deling",
|
||||
"Remote share" : "Eksterne drev",
|
||||
|
||||
@@ -21,12 +21,23 @@
|
||||
"Sharing" : "Deling",
|
||||
"Federated file sharing" : "Sammenkoblet fildeling",
|
||||
"Provide federated file sharing across servers" : "Lever sammenkoblet fildeling på tværs af servere",
|
||||
"Confirm data upload to lookup server" : "Bekræft dataoverførsel til opslagsserver",
|
||||
"When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Når det er aktiveret, vil alle kontoegenskaber (f.eks. mailadresse) med omfangssynlighed indstillet til \"publiceret\", automatisk blive synkroniseret og transmitteret til et eksternt system og gjort tilgængelige i en offentlig, global adressebog.",
|
||||
"Disable upload" : "Deaktivér upload",
|
||||
"Enable data upload" : "Aktivér data upload",
|
||||
"Confirm querying lookup server" : "Bekræft forespørgsel til opslagsserver",
|
||||
"When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Når det er aktiveret, vil søgeinputtet, når der oprettes delinger, blive sendt til et eksternt system, der leverer en offentlig og global adressebog.",
|
||||
"This is used to retrieve the federated cloud ID to make federated sharing easier." : "Dette bruges til at hente det fødererede cloud ID for at gøre fødereret deling nemmere.",
|
||||
"Moreover, email addresses of users might be sent to that system in order to verify them." : "Desuden kan mailadresser på brugere blive sendt til dette system for at verificere dem.",
|
||||
"Disable querying" : "Deaktivér forespørgsler",
|
||||
"Enable querying" : "Aktivér forespørgsler",
|
||||
"Unable to update federated files sharing config" : "Kan ikke opdatere sammenkoblet fildelingskonfiguration",
|
||||
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Juster, hvordan brugere kan dele mellem servere. Dette inkluderer også delinger mellem brugere på denne server, hvis de bruger sammenkoblet deling.",
|
||||
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Tillad brugere på denne server at sende shares til andre servere (denne mulighed giver også WebDAV adgang til offentlige shares)",
|
||||
"Allow people on this server to receive shares from other servers" : "Tillad brugere på denne server at modtage delinger fra andre servere",
|
||||
"Allow people on this server to send shares to groups on other servers" : "Tillad brugere på denne server at sende delinger til grupper på andre servere",
|
||||
"Allow people on this server to receive group shares from other servers" : "Tillad brugere på denne server at modtage gruppedelinger fra andre servere",
|
||||
"The lookup server is only available for global scale." : "Opslagsserveren er kun tilgængelig for global skala.",
|
||||
"Search global and public address book for people" : "Søg global og offentlig adressebog efter personer",
|
||||
"Allow people to publish their data to a global and public address book" : "Tillad brugere at udgive deres data til en global og offentlig adressebog",
|
||||
"Trusted federation" : "Betroet sammenkobling",
|
||||
@@ -47,7 +58,7 @@
|
||||
"Mastodon" : "Mastodont",
|
||||
"Add to your website" : "Tilføj til dit websted",
|
||||
"Share with me via Nextcloud" : "Del med mig gennem Nextcloud",
|
||||
"HTML Code:" : "HTMLkode:",
|
||||
"HTML Code:" : "HTML kode:",
|
||||
"Cancel" : "Annuller",
|
||||
"Add remote share" : "Tilføj ekstern deling",
|
||||
"Remote share" : "Eksterne drev",
|
||||
|
||||
@@ -23,6 +23,8 @@ OC.L10N.register(
|
||||
"Sharing" : "Partage",
|
||||
"Federated file sharing" : "Partage de fichiers fédéré",
|
||||
"Provide federated file sharing across servers" : "Fourni un partage de fichiers fédéré entre plusieurs serveurs",
|
||||
"Disable upload" : "Désactiver le téléchargement",
|
||||
"Moreover, email addresses of users might be sent to that system in order to verify them." : "De plus, les adresses mail des utilisateurs peuvent être envoyées à ce système pour les vérifier.",
|
||||
"Unable to update federated files sharing config" : "Impossible de mettre à jour la configuration du partage fédéré de fichiers ",
|
||||
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Configurer comment les utilisateurs peuvent faire des partages entre serveurs. Cela inclut aussi les partages entre personnes de ce serveur s'ils utilisent des partages fédérés.",
|
||||
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Autoriser les personnes de ce serveur à envoyer des partages vers d'autres serveurs (cette option permet aussi l'accès WebDAV aux partages publics)",
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
"Sharing" : "Partage",
|
||||
"Federated file sharing" : "Partage de fichiers fédéré",
|
||||
"Provide federated file sharing across servers" : "Fourni un partage de fichiers fédéré entre plusieurs serveurs",
|
||||
"Disable upload" : "Désactiver le téléchargement",
|
||||
"Moreover, email addresses of users might be sent to that system in order to verify them." : "De plus, les adresses mail des utilisateurs peuvent être envoyées à ce système pour les vérifier.",
|
||||
"Unable to update federated files sharing config" : "Impossible de mettre à jour la configuration du partage fédéré de fichiers ",
|
||||
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Configurer comment les utilisateurs peuvent faire des partages entre serveurs. Cela inclut aussi les partages entre personnes de ce serveur s'ils utilisent des partages fédérés.",
|
||||
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Autoriser les personnes de ce serveur à envoyer des partages vers d'autres serveurs (cette option permet aussi l'accès WebDAV aux partages publics)",
|
||||
|
||||
@@ -35,24 +35,24 @@ OC.L10N.register(
|
||||
"Enable querying" : "Ativar consulta",
|
||||
"Unable to update federated files sharing config" : "Não é possível atualizar a configuração de compartilhamento de arquivos federados",
|
||||
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Ajuste como as pessoas podem compartilhar entre servidores. Isso também inclui compartilhamentos entre pessoas neste servidor, se elas estiverem usando compartilhamento federado.",
|
||||
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Permitir que pessoas neste servidor enviem compartilhamentos para outros servidores (esta opção também permite acesso WebDAV a compartilhamentos públicos)",
|
||||
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Permitir que as pessoas neste servidor enviem compartilhamentos para outros servidores (esta opção também permite acesso WebDAV a compartilhamentos públicos)",
|
||||
"Allow people on this server to receive shares from other servers" : "Permitir que pessoas neste servidor recebam compartilhamentos de outros servidores",
|
||||
"Allow people on this server to send shares to groups on other servers" : "Permitir que pessoas neste servidor enviem compartilhamentos para grupos em outros servidores",
|
||||
"Allow people on this server to receive group shares from other servers" : "Permitir que as pessoas neste servidor recebam compartilhamentos de grupo de outros servidores",
|
||||
"The lookup server is only available for global scale." : "O servidor de pesquisa só está disponível para escala global.",
|
||||
"Search global and public address book for people" : "Pesquise pessoas no catálogo de endereços global e público",
|
||||
"Search global and public address book for people" : "Pesquisar pessoas no catálogo de endereços global e público",
|
||||
"Allow people to publish their data to a global and public address book" : "Permitir que as pessoas publiquem seus dados em um catálogo de endereços público e global",
|
||||
"Trusted federation" : "Federação confiável",
|
||||
"Automatically accept shares from trusted federated accounts and groups by default" : "Aceitar automaticamente compartilhamentos de contas e grupos federados confiáveis por padrão",
|
||||
"Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Compartilhe comigo por meio do meu ID de nuvem federado #Nextcloud, consulte {url}",
|
||||
"Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Compartilhe comigo por meio do meu ID de Nuvem Federada #Nextcloud, consulte {url}",
|
||||
"Share with me through my #Nextcloud Federated Cloud ID" : "Compartilhe comigo através do meu ID de Nuvem Federada #Nextcloud",
|
||||
"Cloud ID copied to the clipboard" : "Cloud ID copiado para a área de transferência",
|
||||
"Cloud ID copied to the clipboard" : "ID de Nuvem copiado para a área de transferência",
|
||||
"Copy to clipboard" : "Copiar para área de transferência",
|
||||
"Clipboard not available. Please copy the cloud ID manually." : "Área de transferência indisponível. Copie o ID da nuvem manualmente.",
|
||||
"Clipboard not available. Please copy the cloud ID manually." : "Área de transferência indisponível. Copie o ID de Nuvem manualmente.",
|
||||
"Copied!" : "Copiado!",
|
||||
"Federated Cloud" : "Nuvem Federada",
|
||||
"You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Você pode compartilhar com qualquer pessoa que use Nextcloud ou outros servidores compatíveis com o Open Cloud Mesh (OCM)! Basta colocar sua ID de nuvem federada na caixa de diálogo de compartilhamento. Algo como person@cloud.example.com",
|
||||
"Your Federated Cloud ID" : "Seu ID de nuvem federada",
|
||||
"Your Federated Cloud ID" : "Seu ID de Nuvem Federada",
|
||||
"Share it so your friends can share files with you:" : "Compartilhe para que seus amigos possam compartilhar arquivos com você:",
|
||||
"Facebook" : "Facebook",
|
||||
"X (formerly Twitter)" : "X (anteriormente Twitter)",
|
||||
|
||||
@@ -33,24 +33,24 @@
|
||||
"Enable querying" : "Ativar consulta",
|
||||
"Unable to update federated files sharing config" : "Não é possível atualizar a configuração de compartilhamento de arquivos federados",
|
||||
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Ajuste como as pessoas podem compartilhar entre servidores. Isso também inclui compartilhamentos entre pessoas neste servidor, se elas estiverem usando compartilhamento federado.",
|
||||
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Permitir que pessoas neste servidor enviem compartilhamentos para outros servidores (esta opção também permite acesso WebDAV a compartilhamentos públicos)",
|
||||
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Permitir que as pessoas neste servidor enviem compartilhamentos para outros servidores (esta opção também permite acesso WebDAV a compartilhamentos públicos)",
|
||||
"Allow people on this server to receive shares from other servers" : "Permitir que pessoas neste servidor recebam compartilhamentos de outros servidores",
|
||||
"Allow people on this server to send shares to groups on other servers" : "Permitir que pessoas neste servidor enviem compartilhamentos para grupos em outros servidores",
|
||||
"Allow people on this server to receive group shares from other servers" : "Permitir que as pessoas neste servidor recebam compartilhamentos de grupo de outros servidores",
|
||||
"The lookup server is only available for global scale." : "O servidor de pesquisa só está disponível para escala global.",
|
||||
"Search global and public address book for people" : "Pesquise pessoas no catálogo de endereços global e público",
|
||||
"Search global and public address book for people" : "Pesquisar pessoas no catálogo de endereços global e público",
|
||||
"Allow people to publish their data to a global and public address book" : "Permitir que as pessoas publiquem seus dados em um catálogo de endereços público e global",
|
||||
"Trusted federation" : "Federação confiável",
|
||||
"Automatically accept shares from trusted federated accounts and groups by default" : "Aceitar automaticamente compartilhamentos de contas e grupos federados confiáveis por padrão",
|
||||
"Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Compartilhe comigo por meio do meu ID de nuvem federado #Nextcloud, consulte {url}",
|
||||
"Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Compartilhe comigo por meio do meu ID de Nuvem Federada #Nextcloud, consulte {url}",
|
||||
"Share with me through my #Nextcloud Federated Cloud ID" : "Compartilhe comigo através do meu ID de Nuvem Federada #Nextcloud",
|
||||
"Cloud ID copied to the clipboard" : "Cloud ID copiado para a área de transferência",
|
||||
"Cloud ID copied to the clipboard" : "ID de Nuvem copiado para a área de transferência",
|
||||
"Copy to clipboard" : "Copiar para área de transferência",
|
||||
"Clipboard not available. Please copy the cloud ID manually." : "Área de transferência indisponível. Copie o ID da nuvem manualmente.",
|
||||
"Clipboard not available. Please copy the cloud ID manually." : "Área de transferência indisponível. Copie o ID de Nuvem manualmente.",
|
||||
"Copied!" : "Copiado!",
|
||||
"Federated Cloud" : "Nuvem Federada",
|
||||
"You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Você pode compartilhar com qualquer pessoa que use Nextcloud ou outros servidores compatíveis com o Open Cloud Mesh (OCM)! Basta colocar sua ID de nuvem federada na caixa de diálogo de compartilhamento. Algo como person@cloud.example.com",
|
||||
"Your Federated Cloud ID" : "Seu ID de nuvem federada",
|
||||
"Your Federated Cloud ID" : "Seu ID de Nuvem Federada",
|
||||
"Share it so your friends can share files with you:" : "Compartilhe para que seus amigos possam compartilhar arquivos com você:",
|
||||
"Facebook" : "Facebook",
|
||||
"X (formerly Twitter)" : "X (anteriormente Twitter)",
|
||||
|
||||
@@ -23,12 +23,23 @@ OC.L10N.register(
|
||||
"Sharing" : "Paylaşım",
|
||||
"Federated file sharing" : "Birleşik dosya paylaşımı",
|
||||
"Provide federated file sharing across servers" : "Sunucular arasında birleşik dosya paylaşımı yapılmasını sağlar",
|
||||
"Confirm data upload to lookup server" : "Arama sunucusuna veri yüklemeyi onaylayın",
|
||||
"When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Bu seçenek etkinleştirildiğinde, kapsam görünürlüğü \"yayınlanmış\" olarak ayarlanmış tüm hesap özellikleri (e-posta adresi gibi) otomatik olarak eşitlenerek ve bir dış sisteme iletilerek, herkese açık, genel bir adres defterinde yayınlanır.",
|
||||
"Disable upload" : "Yüklenmesin",
|
||||
"Enable data upload" : "Veriler yüklensin",
|
||||
"Confirm querying lookup server" : "Arama sunucusu sorgulanabilsin",
|
||||
"When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Bu seçenek etkinleştirildiğinde, paylaşım oluştururken arama kaydı, herkese açık ve genel bir adres defteri sunan bir dış sisteme gönderilir.",
|
||||
"This is used to retrieve the federated cloud ID to make federated sharing easier." : "Birleşik paylaşımı kolaylaştırmak için birleşik bulut kimliğini almakta kullanılır.",
|
||||
"Moreover, email addresses of users might be sent to that system in order to verify them." : "Ayrıca, kullanıcıların e-posta adresleri onları doğrulamak için bu sisteme gönderilebilir.",
|
||||
"Disable querying" : "Sorgulanamasın",
|
||||
"Enable querying" : "Sorgulansın",
|
||||
"Unable to update federated files sharing config" : "Birleşik dosya paylaşımı yapılandırması güncellenemedi",
|
||||
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Kişilerin sunucular arasındaki paylaşım yöntemini ayarlayın. Bu yöntem, bu sunucuda bulunan ve birleşik paylaşım kullanan kişiler arasındaki paylaşımları da belirler.",
|
||||
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Bu sunucudaki kişiler diğer sunuculara paylaşım gönderebilsin (herkese açık paylaşımlara WebDAV erişimi de sağlar)",
|
||||
"Allow people on this server to receive shares from other servers" : "Bu sunucudaki kişiler diğer sunuculardan paylaşım alabilsin",
|
||||
"Allow people on this server to send shares to groups on other servers" : "Bu sunucudaki kişiler diğer sunuculardaki gruplara paylaşım gönderebilsin",
|
||||
"Allow people on this server to receive group shares from other servers" : "Bu sunucudaki kişiler diğer sunuculardaki grup paylaşımlarını alabilsin",
|
||||
"The lookup server is only available for global scale." : "Arama sunucusu yalnızca genel ölçekte kullanılabilir.",
|
||||
"Search global and public address book for people" : "Genel ve herkese açık adres defterindeki kişiler aranabilsin",
|
||||
"Allow people to publish their data to a global and public address book" : "Kişiler bilgilerini genel ve herkese açık bir adres defterinde paylaşabilsin",
|
||||
"Trusted federation" : "Güvenilen birleşim",
|
||||
|
||||
@@ -21,12 +21,23 @@
|
||||
"Sharing" : "Paylaşım",
|
||||
"Federated file sharing" : "Birleşik dosya paylaşımı",
|
||||
"Provide federated file sharing across servers" : "Sunucular arasında birleşik dosya paylaşımı yapılmasını sağlar",
|
||||
"Confirm data upload to lookup server" : "Arama sunucusuna veri yüklemeyi onaylayın",
|
||||
"When enabled, all account properties (e.g. email address) with scope visibility set to \"published\", will be automatically synced and transmitted to an external system and made available in a public, global address book." : "Bu seçenek etkinleştirildiğinde, kapsam görünürlüğü \"yayınlanmış\" olarak ayarlanmış tüm hesap özellikleri (e-posta adresi gibi) otomatik olarak eşitlenerek ve bir dış sisteme iletilerek, herkese açık, genel bir adres defterinde yayınlanır.",
|
||||
"Disable upload" : "Yüklenmesin",
|
||||
"Enable data upload" : "Veriler yüklensin",
|
||||
"Confirm querying lookup server" : "Arama sunucusu sorgulanabilsin",
|
||||
"When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book." : "Bu seçenek etkinleştirildiğinde, paylaşım oluştururken arama kaydı, herkese açık ve genel bir adres defteri sunan bir dış sisteme gönderilir.",
|
||||
"This is used to retrieve the federated cloud ID to make federated sharing easier." : "Birleşik paylaşımı kolaylaştırmak için birleşik bulut kimliğini almakta kullanılır.",
|
||||
"Moreover, email addresses of users might be sent to that system in order to verify them." : "Ayrıca, kullanıcıların e-posta adresleri onları doğrulamak için bu sisteme gönderilebilir.",
|
||||
"Disable querying" : "Sorgulanamasın",
|
||||
"Enable querying" : "Sorgulansın",
|
||||
"Unable to update federated files sharing config" : "Birleşik dosya paylaşımı yapılandırması güncellenemedi",
|
||||
"Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing." : "Kişilerin sunucular arasındaki paylaşım yöntemini ayarlayın. Bu yöntem, bu sunucuda bulunan ve birleşik paylaşım kullanan kişiler arasındaki paylaşımları da belirler.",
|
||||
"Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)" : "Bu sunucudaki kişiler diğer sunuculara paylaşım gönderebilsin (herkese açık paylaşımlara WebDAV erişimi de sağlar)",
|
||||
"Allow people on this server to receive shares from other servers" : "Bu sunucudaki kişiler diğer sunuculardan paylaşım alabilsin",
|
||||
"Allow people on this server to send shares to groups on other servers" : "Bu sunucudaki kişiler diğer sunuculardaki gruplara paylaşım gönderebilsin",
|
||||
"Allow people on this server to receive group shares from other servers" : "Bu sunucudaki kişiler diğer sunuculardaki grup paylaşımlarını alabilsin",
|
||||
"The lookup server is only available for global scale." : "Arama sunucusu yalnızca genel ölçekte kullanılabilir.",
|
||||
"Search global and public address book for people" : "Genel ve herkese açık adres defterindeki kişiler aranabilsin",
|
||||
"Allow people to publish their data to a global and public address book" : "Kişiler bilgilerini genel ve herkese açık bir adres defterinde paylaşabilsin",
|
||||
"Trusted federation" : "Güvenilen birleşim",
|
||||
|
||||
@@ -67,7 +67,6 @@ class CloudFederationProviderFiles implements ISignedCloudFederationProvider {
|
||||
private LoggerInterface $logger,
|
||||
private IFilenameValidator $filenameValidator,
|
||||
private readonly IProviderFactory $shareProviderFactory,
|
||||
private TrustedServers $trustedServers,
|
||||
) {
|
||||
}
|
||||
|
||||
@@ -156,6 +155,17 @@ class CloudFederationProviderFiles implements ISignedCloudFederationProvider {
|
||||
// get DisplayName about the owner of the share
|
||||
$ownerDisplayName = $this->getUserDisplayName($ownerFederatedId);
|
||||
|
||||
$trustedServers = null;
|
||||
if ($this->appManager->isEnabledForAnyone('federation')
|
||||
&& class_exists(TrustedServers::class)) {
|
||||
try {
|
||||
$trustedServers = Server::get(TrustedServers::class);
|
||||
} catch (\Throwable $e) {
|
||||
$this->logger->debug('Failed to create TrustedServers', ['exception' => $e]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($shareType === IShare::TYPE_USER) {
|
||||
$event = $this->activityManager->generateEvent();
|
||||
$event->setApp('files_sharing')
|
||||
@@ -167,7 +177,7 @@ class CloudFederationProviderFiles implements ISignedCloudFederationProvider {
|
||||
$this->notifyAboutNewShare($shareWith, $shareId, $ownerFederatedId, $sharedByFederatedId, $name, $ownerDisplayName);
|
||||
|
||||
// If auto-accept is enabled, accept the share
|
||||
if ($this->federatedShareProvider->isFederatedTrustedShareAutoAccept() && $this->trustedServers->isTrustedServer($remote)) {
|
||||
if ($this->federatedShareProvider->isFederatedTrustedShareAutoAccept() && $trustedServers?->isTrustedServer($remote) === true) {
|
||||
$this->externalShareManager->acceptShare($shareId, $shareWith);
|
||||
}
|
||||
} else {
|
||||
@@ -183,7 +193,7 @@ class CloudFederationProviderFiles implements ISignedCloudFederationProvider {
|
||||
$this->notifyAboutNewShare($user->getUID(), $shareId, $ownerFederatedId, $sharedByFederatedId, $name, $ownerDisplayName);
|
||||
|
||||
// If auto-accept is enabled, accept the share
|
||||
if ($this->federatedShareProvider->isFederatedTrustedShareAutoAccept() && $this->trustedServers->isTrustedServer($remote)) {
|
||||
if ($this->federatedShareProvider->isFederatedTrustedShareAutoAccept() && $trustedServers?->isTrustedServer($remote) === true) {
|
||||
$this->externalShareManager->acceptShare($shareId, $user->getUID());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,12 +29,12 @@ abstract class TestCase extends \Test\TestCase {
|
||||
parent::setUpBeforeClass();
|
||||
|
||||
// reset backend
|
||||
\OC_User::clearBackends();
|
||||
Server::get(IUserManager::class)->clearBackends();
|
||||
Server::get(IGroupManager::class)->clearBackends();
|
||||
|
||||
// create users
|
||||
$backend = new \Test\Util\User\Dummy();
|
||||
\OC_User::useBackend($backend);
|
||||
Server::get(IUserManager::class)->registerBackend($backend);
|
||||
$backend->createUser(self::TEST_FILES_SHARING_API_USER1, self::TEST_FILES_SHARING_API_USER1);
|
||||
$backend->createUser(self::TEST_FILES_SHARING_API_USER2, self::TEST_FILES_SHARING_API_USER2);
|
||||
}
|
||||
@@ -62,8 +62,8 @@ abstract class TestCase extends \Test\TestCase {
|
||||
Filesystem::tearDown();
|
||||
|
||||
// reset backend
|
||||
\OC_User::clearBackends();
|
||||
\OC_User::useBackend('database');
|
||||
Server::get(IUserManager::class)->clearBackends();
|
||||
Server::get(IUserManager::class)->registerBackend(new \OC\User\Database());
|
||||
Server::get(IGroupManager::class)->clearBackends();
|
||||
Server::get(IGroupManager::class)->addBackend(new Database());
|
||||
|
||||
|
||||
@@ -331,6 +331,7 @@ OC.L10N.register(
|
||||
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fil og {folderCount} mapper","1 fil og {folderCount} mapper"],
|
||||
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fil og 1 mapper","{fileCount} filer og 1 mapper"],
|
||||
"{fileCount} files and {folderCount} folders" : "{fileCount} filer og {folderCount} mapper",
|
||||
"_(%n hidden)_::_ (%n hidden)_" : ["(%n skjult)","(%n skjult)"],
|
||||
"Filename must not be empty." : "Filnavnet må ikke være tomt.",
|
||||
"\"{char}\" is not allowed inside a filename." : "\"{char}\" er ikke tilladt i et filnavn.",
|
||||
"\"{segment}\" is a reserved name and not allowed for filenames." : "\"{segment}\" er et reserveret navn og er ikke tilladt til filnavne.",
|
||||
@@ -364,8 +365,8 @@ OC.L10N.register(
|
||||
"Upload cancelled." : "Upload afbrudt.",
|
||||
"Processing files …" : "Behandler filer...",
|
||||
"…" : "...",
|
||||
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Kan ikke upload {filename} da det er enten en mappe eller indholder 0 bytes.",
|
||||
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Der er ikke tilstrækkeligt friplads. Du uplaoder {size1} men der er kun {size2} tilbage",
|
||||
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Kan ikke uploade {filename} da det er enten en mappe eller indeholder 0 bytes.",
|
||||
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Der er ikke tilstrækkelig fri plads. Du uplaoder {size1} men der er kun {size2} tilbage",
|
||||
"Target folder \"{dir}\" does not exist any more" : "Destinationsmappen \"{dir}\" findes ikke længere",
|
||||
"An unknown error has occurred" : "En ukendt fejl er opstået",
|
||||
"File could not be uploaded" : "Filen kunne ikke uploades",
|
||||
|
||||
@@ -329,6 +329,7 @@
|
||||
"_1 file and {folderCount} folder_::_1 file and {folderCount} folders_" : ["1 fil og {folderCount} mapper","1 fil og {folderCount} mapper"],
|
||||
"_{fileCount} file and 1 folder_::_{fileCount} files and 1 folder_" : ["{fileCount} fil og 1 mapper","{fileCount} filer og 1 mapper"],
|
||||
"{fileCount} files and {folderCount} folders" : "{fileCount} filer og {folderCount} mapper",
|
||||
"_(%n hidden)_::_ (%n hidden)_" : ["(%n skjult)","(%n skjult)"],
|
||||
"Filename must not be empty." : "Filnavnet må ikke være tomt.",
|
||||
"\"{char}\" is not allowed inside a filename." : "\"{char}\" er ikke tilladt i et filnavn.",
|
||||
"\"{segment}\" is a reserved name and not allowed for filenames." : "\"{segment}\" er et reserveret navn og er ikke tilladt til filnavne.",
|
||||
@@ -362,8 +363,8 @@
|
||||
"Upload cancelled." : "Upload afbrudt.",
|
||||
"Processing files …" : "Behandler filer...",
|
||||
"…" : "...",
|
||||
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Kan ikke upload {filename} da det er enten en mappe eller indholder 0 bytes.",
|
||||
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Der er ikke tilstrækkeligt friplads. Du uplaoder {size1} men der er kun {size2} tilbage",
|
||||
"Unable to upload {filename} as it is a directory or has 0 bytes" : "Kan ikke uploade {filename} da det er enten en mappe eller indeholder 0 bytes.",
|
||||
"Not enough free space, you are uploading {size1} but only {size2} is left" : "Der er ikke tilstrækkelig fri plads. Du uplaoder {size1} men der er kun {size2} tilbage",
|
||||
"Target folder \"{dir}\" does not exist any more" : "Destinationsmappen \"{dir}\" findes ikke længere",
|
||||
"An unknown error has occurred" : "En ukendt fejl er opstået",
|
||||
"File could not be uploaded" : "Filen kunne ikke uploades",
|
||||
|
||||
@@ -191,7 +191,7 @@ OC.L10N.register(
|
||||
"WebDAV URL" : "WebDAV-i võrguaadress",
|
||||
"Copy to clipboard" : "Kopeeri lõikelauale",
|
||||
"Use this address to access your Files via WebDAV" : "Oma failidele WebDAV-i kaudu ligipääsemiseks kasuta seda aadressi",
|
||||
"If you have enabled 2FA, you must create and use a new app password by clicking here." : "Kui sa oled kaheastmelise autentimise kasutusele võtnud, siis peal looma ja kasutama rakenduse uut salasõna klikates siia.",
|
||||
"If you have enabled 2FA, you must create and use a new app password by clicking here." : "Kui sa oled kaheastmelise autentimise kasutusele võtnud, siis pead looma ja kasutama rakenduse uut salasõna klikates siia.",
|
||||
"Warnings" : "Hoiatused",
|
||||
"Prevent warning dialogs from open or reenable them." : "Ära kasuta hoiatusteateid nende avamisel või uuesti kasutusele võtmisel.",
|
||||
"Show a warning dialog when changing a file extension." : "Faililaiendi muutmisel näita hoiatust.",
|
||||
|
||||
@@ -189,7 +189,7 @@
|
||||
"WebDAV URL" : "WebDAV-i võrguaadress",
|
||||
"Copy to clipboard" : "Kopeeri lõikelauale",
|
||||
"Use this address to access your Files via WebDAV" : "Oma failidele WebDAV-i kaudu ligipääsemiseks kasuta seda aadressi",
|
||||
"If you have enabled 2FA, you must create and use a new app password by clicking here." : "Kui sa oled kaheastmelise autentimise kasutusele võtnud, siis peal looma ja kasutama rakenduse uut salasõna klikates siia.",
|
||||
"If you have enabled 2FA, you must create and use a new app password by clicking here." : "Kui sa oled kaheastmelise autentimise kasutusele võtnud, siis pead looma ja kasutama rakenduse uut salasõna klikates siia.",
|
||||
"Warnings" : "Hoiatused",
|
||||
"Prevent warning dialogs from open or reenable them." : "Ära kasuta hoiatusteateid nende avamisel või uuesti kasutusele võtmisel.",
|
||||
"Show a warning dialog when changing a file extension." : "Faililaiendi muutmisel näita hoiatust.",
|
||||
|
||||
+11
-4
@@ -157,7 +157,7 @@ OC.L10N.register(
|
||||
"Shared by link" : "링크로 공유됨",
|
||||
"Shared" : "공유됨",
|
||||
"Switch to list view" : "목록 보기로 전환",
|
||||
"Switch to grid view" : "그리드뷰로 전환",
|
||||
"Switch to grid view" : "바둑판식 보기로 전환",
|
||||
"The file could not be found" : "파일을 찾을 수 없음",
|
||||
"Upload was cancelled by user" : "사용자에 의해 업로드가 취소됨",
|
||||
"Not enough free space" : "남은 공간이 부족함",
|
||||
@@ -183,7 +183,7 @@ OC.L10N.register(
|
||||
"Sort folders before files" : "폴더를 파일보다 먼저 정렬",
|
||||
"Show hidden files" : "숨김 파일 보이기",
|
||||
"Crop image previews" : "이미지 미리보기 확대",
|
||||
"Enable the grid view" : "그리드뷰 활성화",
|
||||
"Enable the grid view" : "바둑판식 보기 활성화",
|
||||
"Enable folder tree" : "폴더 트리 활성화",
|
||||
"Additional settings" : "고급 설정",
|
||||
"WebDAV" : "WebDAV",
|
||||
@@ -210,7 +210,7 @@ OC.L10N.register(
|
||||
"Navigate to the file on the left (in grid mode)" : "왼쪽 파일로 이동 (그리드 모드에서)",
|
||||
"Navigate to the file on the right (in grid mode)" : "오른쪽 파일로 이동 (그리드 모드에서)",
|
||||
"View" : "보기",
|
||||
"Toggle the grid view" : "그리드 뷰 전환",
|
||||
"Toggle the grid view" : "바둑판식 보기 전환",
|
||||
"Open the sidebar for a file" : "파일 사이드바 열기",
|
||||
"Show those shortcuts" : "다음 단축키 표시",
|
||||
"You" : "당신",
|
||||
@@ -225,6 +225,12 @@ OC.L10N.register(
|
||||
"Pick a template for {name}" : "{name}을(를) 위한 템플릿 선택",
|
||||
"Create a new file with the selected template" : "선택한 템플릿으로 새 파일 만들기",
|
||||
"Creating file" : "파일 만들기",
|
||||
"Save as {displayName}" : "{displayName}으로 저장하기",
|
||||
"Save as …" : "... 으로 저장하기",
|
||||
"Converting files …" : "파일 변환하기 ...",
|
||||
"Failed to convert files: {message}" : "파일 변환에 실패함:{message}",
|
||||
"All files failed to be converted" : "모든 파일이 변환에 실패했습니다.",
|
||||
"Failed to convert files" : "파일 변환에 실패했습니다",
|
||||
"Deletion cancelled" : "삭제가 취소됨",
|
||||
"Leave this share" : "이 공유에서 떠나기",
|
||||
"Leave these shares" : "이 공유에서 떠나기",
|
||||
@@ -338,7 +344,7 @@ OC.L10N.register(
|
||||
"File could not be found" : "파일을 찾을 수 없음",
|
||||
"Download" : "다운로드",
|
||||
"Show list view" : "리스트 보기",
|
||||
"Show grid view" : "그리드뷰 보기",
|
||||
"Show grid view" : "바둑판식 보기",
|
||||
"Close" : "닫기",
|
||||
"Could not create folder \"{dir}\"" : "폴더 \"{dir}\"을(를) 만들 수 없음",
|
||||
"This will stop your current uploads." : "이것은 현재 업로드를 중단시킬 것입니다.",
|
||||
@@ -417,6 +423,7 @@ OC.L10N.register(
|
||||
"Upload file" : "파일 업로드",
|
||||
"Not favorited" : "즐겨찾기에 없음",
|
||||
"An error occurred while trying to update the tags" : "태그를 업데이트하는 중 오류 발생",
|
||||
"You don't have permission to upload or create files here." : "여기에 파일을 업로드하거나 만들 권한이 없습니다.",
|
||||
"Storage informations" : "저장소 정보",
|
||||
"Choose file" : "파일 선택",
|
||||
"Go to the previous folder" : "이전 폴더로 이동",
|
||||
|
||||
+11
-4
@@ -155,7 +155,7 @@
|
||||
"Shared by link" : "링크로 공유됨",
|
||||
"Shared" : "공유됨",
|
||||
"Switch to list view" : "목록 보기로 전환",
|
||||
"Switch to grid view" : "그리드뷰로 전환",
|
||||
"Switch to grid view" : "바둑판식 보기로 전환",
|
||||
"The file could not be found" : "파일을 찾을 수 없음",
|
||||
"Upload was cancelled by user" : "사용자에 의해 업로드가 취소됨",
|
||||
"Not enough free space" : "남은 공간이 부족함",
|
||||
@@ -181,7 +181,7 @@
|
||||
"Sort folders before files" : "폴더를 파일보다 먼저 정렬",
|
||||
"Show hidden files" : "숨김 파일 보이기",
|
||||
"Crop image previews" : "이미지 미리보기 확대",
|
||||
"Enable the grid view" : "그리드뷰 활성화",
|
||||
"Enable the grid view" : "바둑판식 보기 활성화",
|
||||
"Enable folder tree" : "폴더 트리 활성화",
|
||||
"Additional settings" : "고급 설정",
|
||||
"WebDAV" : "WebDAV",
|
||||
@@ -208,7 +208,7 @@
|
||||
"Navigate to the file on the left (in grid mode)" : "왼쪽 파일로 이동 (그리드 모드에서)",
|
||||
"Navigate to the file on the right (in grid mode)" : "오른쪽 파일로 이동 (그리드 모드에서)",
|
||||
"View" : "보기",
|
||||
"Toggle the grid view" : "그리드 뷰 전환",
|
||||
"Toggle the grid view" : "바둑판식 보기 전환",
|
||||
"Open the sidebar for a file" : "파일 사이드바 열기",
|
||||
"Show those shortcuts" : "다음 단축키 표시",
|
||||
"You" : "당신",
|
||||
@@ -223,6 +223,12 @@
|
||||
"Pick a template for {name}" : "{name}을(를) 위한 템플릿 선택",
|
||||
"Create a new file with the selected template" : "선택한 템플릿으로 새 파일 만들기",
|
||||
"Creating file" : "파일 만들기",
|
||||
"Save as {displayName}" : "{displayName}으로 저장하기",
|
||||
"Save as …" : "... 으로 저장하기",
|
||||
"Converting files …" : "파일 변환하기 ...",
|
||||
"Failed to convert files: {message}" : "파일 변환에 실패함:{message}",
|
||||
"All files failed to be converted" : "모든 파일이 변환에 실패했습니다.",
|
||||
"Failed to convert files" : "파일 변환에 실패했습니다",
|
||||
"Deletion cancelled" : "삭제가 취소됨",
|
||||
"Leave this share" : "이 공유에서 떠나기",
|
||||
"Leave these shares" : "이 공유에서 떠나기",
|
||||
@@ -336,7 +342,7 @@
|
||||
"File could not be found" : "파일을 찾을 수 없음",
|
||||
"Download" : "다운로드",
|
||||
"Show list view" : "리스트 보기",
|
||||
"Show grid view" : "그리드뷰 보기",
|
||||
"Show grid view" : "바둑판식 보기",
|
||||
"Close" : "닫기",
|
||||
"Could not create folder \"{dir}\"" : "폴더 \"{dir}\"을(를) 만들 수 없음",
|
||||
"This will stop your current uploads." : "이것은 현재 업로드를 중단시킬 것입니다.",
|
||||
@@ -415,6 +421,7 @@
|
||||
"Upload file" : "파일 업로드",
|
||||
"Not favorited" : "즐겨찾기에 없음",
|
||||
"An error occurred while trying to update the tags" : "태그를 업데이트하는 중 오류 발생",
|
||||
"You don't have permission to upload or create files here." : "여기에 파일을 업로드하거나 만들 권한이 없습니다.",
|
||||
"Storage informations" : "저장소 정보",
|
||||
"Choose file" : "파일 선택",
|
||||
"Go to the previous folder" : "이전 폴더로 이동",
|
||||
|
||||
@@ -88,7 +88,10 @@ OC.L10N.register(
|
||||
"Actions" : "Veiksmai",
|
||||
"List of files and folders." : "Failų ir aplankų sąrašas.",
|
||||
"File not found" : "Failas nerastas",
|
||||
"{count} selected" : "Pažymėta {count}",
|
||||
"{usedQuotaByte} used" : "Naudojama {usedQuotaByte}",
|
||||
"{used} of {quota} used" : "panaudota {used} iš {quota}",
|
||||
"{relative}% used" : "Naudojama {relative}",
|
||||
"Could not refresh storage stats" : "Nepavyko iš naujo įkelti saugyklos statistikos",
|
||||
"Your storage is full, files can not be updated or synced anymore!" : "Jūsų saugykla pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!",
|
||||
"Storage information" : "Informacija apie saugyklą",
|
||||
@@ -107,13 +110,17 @@ OC.L10N.register(
|
||||
"Choose file or folder to transfer" : "Pasirinkti norimą perduoti failą ar aplanką",
|
||||
"Change" : "Keisti",
|
||||
"New owner" : "Naujasis savininkas",
|
||||
"Choose {file}" : "Pasirinkti{file}",
|
||||
"Share" : "Bendrinti",
|
||||
"Shared by link" : "Bendrinama pagal nuorodą",
|
||||
"Shared" : "Bendrinama",
|
||||
"Switch to list view" : "Perjungti į sąrašo rodinį",
|
||||
"Switch to grid view" : "Perjungti į tinklelio rodinį",
|
||||
"The file could not be found" : "Failas nerastas",
|
||||
"Upload was cancelled by user" : "Įkelimas buvo atšauktas vartotojo",
|
||||
"Not enough free space" : "Trūksta laisvos vietos",
|
||||
"Operation is blocked by access control" : "Operacija yra užblokuota prieigos valdymo",
|
||||
"Error during upload: {message}" : "Įkėlimo klaida: {message}",
|
||||
"Loading current folder" : "Įkeliamas dabartinis aplankas",
|
||||
"Retry" : "Bandyti dar kartą",
|
||||
"No files in here" : "Čia failų nėra",
|
||||
@@ -127,11 +134,14 @@ OC.L10N.register(
|
||||
"Clipboard is not available" : "Iškarpinė neprieinama",
|
||||
"WebDAV URL copied to clipboard" : "WebDAV URL nukopijuotas į iškarpinę",
|
||||
"Show hidden files" : "Rodyti paslėptus failus",
|
||||
"Crop image previews" : "Apkirpti paveikslų peržiūras",
|
||||
"Crop image previews" : "Apkirpti paveikslėlių peržiūras",
|
||||
"Enable the grid view" : "Įjungti grid peržiūrą",
|
||||
"Enable folder tree" : "Įjungti direktorijų medį",
|
||||
"Additional settings" : "Papildomi nustatymai",
|
||||
"WebDAV" : "WebDAV",
|
||||
"Copy to clipboard" : "Kopijuoti į iškarpinę",
|
||||
"Use this address to access your Files via WebDAV" : "Naudokite šį adresą norėdami pasiekti failus per WebDAV",
|
||||
"Warnings" : "Įspėjimai",
|
||||
"Keyboard shortcuts" : "Spartieji klavišai",
|
||||
"Rename a file" : "Pervadinti failą",
|
||||
"Delete a file" : "Ištrinti failą",
|
||||
@@ -143,7 +153,7 @@ OC.L10N.register(
|
||||
"Owner" : "Savivinkas",
|
||||
"Remove from favorites" : "Šalinti iš mėgstamų",
|
||||
"Add to favorites" : "Pridėti į mėgstamus",
|
||||
"Tags" : "Žymės",
|
||||
"Tags" : "Žymos",
|
||||
"Unable to create new file from template" : "Nepavyko sukurti naujo failo iš šablono",
|
||||
"Pick a template for {name}" : "Pasirinkite šabloną, skirtą {name}",
|
||||
"Create a new file with the selected template" : "Sukurti naują failą naudojant pasirinktą šabloną",
|
||||
@@ -253,8 +263,8 @@ OC.L10N.register(
|
||||
"Open" : "Atverti",
|
||||
"Could not load info for file \"{file}\"" : "Nepavyko įkelti informacijos failui „{file}“",
|
||||
"Details" : "Išsamiau",
|
||||
"Please select tag(s) to add to the selection" : "Pasirinkite raktažodžius pridėti prie pažymėtų",
|
||||
"Apply tag(s) to selection" : "Pritaikyti raktažodžiuis pasirinktiems",
|
||||
"Please select tag(s) to add to the selection" : "Pasirinkite žymas, kurias pridėsite prie pažymėtų",
|
||||
"Apply tag(s) to selection" : "Pritaikyti žymą(-as) pažymėtiems",
|
||||
"Select directory \"{dirName}\"" : "Pasirinkite direktoriją \"{dirName}\"",
|
||||
"Select file \"{fileName}\"" : "Pasirinkite failą \"{fileName}\"",
|
||||
"Unable to determine date" : "Nepavyksta nustatyti datos",
|
||||
@@ -301,7 +311,7 @@ OC.L10N.register(
|
||||
"Copy direct link (only works for people who have access to this file/folder)" : "Kopijuoti tiesioginę nuorodą (veiks tik žmonėms, turintiems prieigą prie šio failo/aplanko)",
|
||||
"Upload file" : "Įkelti failą",
|
||||
"Not favorited" : "Nepažymėtas mėgstamu",
|
||||
"An error occurred while trying to update the tags" : "Bandant atnaujinti žymes įvyko klaida",
|
||||
"An error occurred while trying to update the tags" : "Įvyko klaida bandant atnaujinti žymas",
|
||||
"Storage informations" : "Informacija apie saugyklą",
|
||||
"Go to the previous folder" : "Eiti į ankstesnį aplanką",
|
||||
"Unable to change the favourite state of the file" : "Nepavyksta pakeisti failo Lankomiausiųjų būsenos",
|
||||
|
||||
@@ -86,7 +86,10 @@
|
||||
"Actions" : "Veiksmai",
|
||||
"List of files and folders." : "Failų ir aplankų sąrašas.",
|
||||
"File not found" : "Failas nerastas",
|
||||
"{count} selected" : "Pažymėta {count}",
|
||||
"{usedQuotaByte} used" : "Naudojama {usedQuotaByte}",
|
||||
"{used} of {quota} used" : "panaudota {used} iš {quota}",
|
||||
"{relative}% used" : "Naudojama {relative}",
|
||||
"Could not refresh storage stats" : "Nepavyko iš naujo įkelti saugyklos statistikos",
|
||||
"Your storage is full, files can not be updated or synced anymore!" : "Jūsų saugykla pilna, failai daugiau nebegali būti atnaujinti arba sinchronizuojami!",
|
||||
"Storage information" : "Informacija apie saugyklą",
|
||||
@@ -105,13 +108,17 @@
|
||||
"Choose file or folder to transfer" : "Pasirinkti norimą perduoti failą ar aplanką",
|
||||
"Change" : "Keisti",
|
||||
"New owner" : "Naujasis savininkas",
|
||||
"Choose {file}" : "Pasirinkti{file}",
|
||||
"Share" : "Bendrinti",
|
||||
"Shared by link" : "Bendrinama pagal nuorodą",
|
||||
"Shared" : "Bendrinama",
|
||||
"Switch to list view" : "Perjungti į sąrašo rodinį",
|
||||
"Switch to grid view" : "Perjungti į tinklelio rodinį",
|
||||
"The file could not be found" : "Failas nerastas",
|
||||
"Upload was cancelled by user" : "Įkelimas buvo atšauktas vartotojo",
|
||||
"Not enough free space" : "Trūksta laisvos vietos",
|
||||
"Operation is blocked by access control" : "Operacija yra užblokuota prieigos valdymo",
|
||||
"Error during upload: {message}" : "Įkėlimo klaida: {message}",
|
||||
"Loading current folder" : "Įkeliamas dabartinis aplankas",
|
||||
"Retry" : "Bandyti dar kartą",
|
||||
"No files in here" : "Čia failų nėra",
|
||||
@@ -125,11 +132,14 @@
|
||||
"Clipboard is not available" : "Iškarpinė neprieinama",
|
||||
"WebDAV URL copied to clipboard" : "WebDAV URL nukopijuotas į iškarpinę",
|
||||
"Show hidden files" : "Rodyti paslėptus failus",
|
||||
"Crop image previews" : "Apkirpti paveikslų peržiūras",
|
||||
"Crop image previews" : "Apkirpti paveikslėlių peržiūras",
|
||||
"Enable the grid view" : "Įjungti grid peržiūrą",
|
||||
"Enable folder tree" : "Įjungti direktorijų medį",
|
||||
"Additional settings" : "Papildomi nustatymai",
|
||||
"WebDAV" : "WebDAV",
|
||||
"Copy to clipboard" : "Kopijuoti į iškarpinę",
|
||||
"Use this address to access your Files via WebDAV" : "Naudokite šį adresą norėdami pasiekti failus per WebDAV",
|
||||
"Warnings" : "Įspėjimai",
|
||||
"Keyboard shortcuts" : "Spartieji klavišai",
|
||||
"Rename a file" : "Pervadinti failą",
|
||||
"Delete a file" : "Ištrinti failą",
|
||||
@@ -141,7 +151,7 @@
|
||||
"Owner" : "Savivinkas",
|
||||
"Remove from favorites" : "Šalinti iš mėgstamų",
|
||||
"Add to favorites" : "Pridėti į mėgstamus",
|
||||
"Tags" : "Žymės",
|
||||
"Tags" : "Žymos",
|
||||
"Unable to create new file from template" : "Nepavyko sukurti naujo failo iš šablono",
|
||||
"Pick a template for {name}" : "Pasirinkite šabloną, skirtą {name}",
|
||||
"Create a new file with the selected template" : "Sukurti naują failą naudojant pasirinktą šabloną",
|
||||
@@ -251,8 +261,8 @@
|
||||
"Open" : "Atverti",
|
||||
"Could not load info for file \"{file}\"" : "Nepavyko įkelti informacijos failui „{file}“",
|
||||
"Details" : "Išsamiau",
|
||||
"Please select tag(s) to add to the selection" : "Pasirinkite raktažodžius pridėti prie pažymėtų",
|
||||
"Apply tag(s) to selection" : "Pritaikyti raktažodžiuis pasirinktiems",
|
||||
"Please select tag(s) to add to the selection" : "Pasirinkite žymas, kurias pridėsite prie pažymėtų",
|
||||
"Apply tag(s) to selection" : "Pritaikyti žymą(-as) pažymėtiems",
|
||||
"Select directory \"{dirName}\"" : "Pasirinkite direktoriją \"{dirName}\"",
|
||||
"Select file \"{fileName}\"" : "Pasirinkite failą \"{fileName}\"",
|
||||
"Unable to determine date" : "Nepavyksta nustatyti datos",
|
||||
@@ -299,7 +309,7 @@
|
||||
"Copy direct link (only works for people who have access to this file/folder)" : "Kopijuoti tiesioginę nuorodą (veiks tik žmonėms, turintiems prieigą prie šio failo/aplanko)",
|
||||
"Upload file" : "Įkelti failą",
|
||||
"Not favorited" : "Nepažymėtas mėgstamu",
|
||||
"An error occurred while trying to update the tags" : "Bandant atnaujinti žymes įvyko klaida",
|
||||
"An error occurred while trying to update the tags" : "Įvyko klaida bandant atnaujinti žymas",
|
||||
"Storage informations" : "Informacija apie saugyklą",
|
||||
"Go to the previous folder" : "Eiti į ankstesnį aplanką",
|
||||
"Unable to change the favourite state of the file" : "Nepavyksta pakeisti failo Lankomiausiųjų būsenos",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user