Browse Source

Merge branch 'master' into enh/text-processing-provider-with-id

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
tags/v29.0.0beta1
Marcel Klehr 6 months ago
parent
commit
2e0141165a
No account linked to committer's email address
100 changed files with 459 additions and 455 deletions
  1. 2
    122
      .drone.yml
  2. 2
    2
      .github/ISSUE_TEMPLATE/BUG_REPORT.yml
  3. 6
    6
      .github/dependabot.yml
  4. 2
    1
      .github/workflows/command-compile.yml
  5. 18
    14
      .github/workflows/cypress.yml
  6. 4
    7
      .github/workflows/ftp.yml
  7. 0
    39
      .github/workflows/lint-eslint-when-unrelated.yml
  8. 47
    15
      .github/workflows/lint-eslint.yml
  9. 41
    3
      .github/workflows/lint-php-cs.yml
  10. 32
    10
      .github/workflows/lint-php.yml
  11. 64
    13
      .github/workflows/node-tests.yml
  12. 0
    43
      .github/workflows/node-when-unrelated.yml
  13. 44
    17
      .github/workflows/node.yml
  14. 4
    3
      .github/workflows/npm-audit-fix.yml
  15. 4
    4
      .github/workflows/openapi.yml
  16. 5
    1
      .github/workflows/performance.yml
  17. 27
    3
      .github/workflows/phpunit-oci.yml
  18. 4
    6
      .github/workflows/s3-external.yml
  19. 14
    4
      .github/workflows/s3-primary-integration.yml
  20. 14
    4
      .github/workflows/s3-primary.yml
  21. 4
    6
      .github/workflows/sftp.yml
  22. 4
    7
      .github/workflows/smb-kerberos.yml
  23. 1
    1
      .github/workflows/stale.yml
  24. 6
    6
      .github/workflows/static-code-analysis.yml
  25. 1
    1
      .github/workflows/update-cacert-bundle.yml
  26. 1
    1
      .github/workflows/update-psalm-baseline.yml
  27. 1
    0
      .gitignore
  28. 1
    0
      .php-cs-fixer.dist.php
  29. 1
    1
      3rdparty
  30. 5
    5
      README.md
  31. 2
    2
      apps/admin_audit/appinfo/info.xml
  32. 1
    1
      apps/admin_audit/l10n/de.js
  33. 1
    1
      apps/admin_audit/l10n/de.json
  34. 7
    0
      apps/admin_audit/l10n/is.js
  35. 5
    0
      apps/admin_audit/l10n/is.json
  36. 5
    4
      apps/admin_audit/lib/Actions/Action.php
  37. 1
    1
      apps/admin_audit/lib/Actions/UserManagement.php
  38. 7
    7
      apps/admin_audit/lib/AppInfo/Application.php
  39. 1
    1
      apps/admin_audit/lib/BackgroundJobs/Rotate.php
  40. 2
    2
      apps/cloud_federation_api/appinfo/info.xml
  41. 6
    6
      apps/cloud_federation_api/appinfo/routes.php
  42. 5
    5
      apps/cloud_federation_api/lib/Controller/RequestHandlerController.php
  43. 4
    3
      apps/cloud_federation_api/lib/ResponseDefinitions.php
  44. 0
    3
      apps/comments/.bowerrc
  45. 0
    3
      apps/comments/.l10nignore
  46. 2
    2
      apps/comments/appinfo/info.xml
  47. 0
    1
      apps/comments/l10n/af.js
  48. 0
    1
      apps/comments/l10n/af.json
  49. 2
    2
      apps/comments/l10n/ar.js
  50. 2
    2
      apps/comments/l10n/ar.json
  51. 0
    1
      apps/comments/l10n/bg.js
  52. 0
    1
      apps/comments/l10n/bg.json
  53. 2
    1
      apps/comments/l10n/ca.js
  54. 2
    1
      apps/comments/l10n/ca.json
  55. 2
    2
      apps/comments/l10n/cs.js
  56. 2
    2
      apps/comments/l10n/cs.json
  57. 0
    1
      apps/comments/l10n/da.js
  58. 0
    1
      apps/comments/l10n/da.json
  59. 3
    1
      apps/comments/l10n/de.js
  60. 3
    1
      apps/comments/l10n/de.json
  61. 2
    2
      apps/comments/l10n/de_DE.js
  62. 2
    2
      apps/comments/l10n/de_DE.json
  63. 0
    1
      apps/comments/l10n/el.js
  64. 0
    1
      apps/comments/l10n/el.json
  65. 2
    2
      apps/comments/l10n/en_GB.js
  66. 2
    2
      apps/comments/l10n/en_GB.json
  67. 0
    1
      apps/comments/l10n/eo.js
  68. 0
    1
      apps/comments/l10n/eo.json
  69. 2
    2
      apps/comments/l10n/es.js
  70. 2
    2
      apps/comments/l10n/es.json
  71. 0
    1
      apps/comments/l10n/es_AR.js
  72. 0
    1
      apps/comments/l10n/es_AR.json
  73. 0
    1
      apps/comments/l10n/es_CO.js
  74. 0
    1
      apps/comments/l10n/es_CO.json
  75. 0
    1
      apps/comments/l10n/es_EC.js
  76. 0
    1
      apps/comments/l10n/es_EC.json
  77. 0
    1
      apps/comments/l10n/es_MX.js
  78. 0
    1
      apps/comments/l10n/es_MX.json
  79. 0
    1
      apps/comments/l10n/et_EE.js
  80. 0
    1
      apps/comments/l10n/et_EE.json
  81. 2
    2
      apps/comments/l10n/eu.js
  82. 2
    2
      apps/comments/l10n/eu.json
  83. 0
    1
      apps/comments/l10n/fa.js
  84. 0
    1
      apps/comments/l10n/fa.json
  85. 0
    1
      apps/comments/l10n/fi.js
  86. 0
    1
      apps/comments/l10n/fi.json
  87. 2
    2
      apps/comments/l10n/fr.js
  88. 2
    2
      apps/comments/l10n/fr.json
  89. 2
    1
      apps/comments/l10n/gl.js
  90. 2
    1
      apps/comments/l10n/gl.json
  91. 0
    1
      apps/comments/l10n/he.js
  92. 0
    1
      apps/comments/l10n/he.json
  93. 0
    1
      apps/comments/l10n/hr.js
  94. 0
    1
      apps/comments/l10n/hr.json
  95. 2
    2
      apps/comments/l10n/hu.js
  96. 2
    2
      apps/comments/l10n/hu.json
  97. 0
    1
      apps/comments/l10n/id.js
  98. 0
    1
      apps/comments/l10n/id.json
  99. 5
    1
      apps/comments/l10n/is.js
  100. 0
    0
      apps/comments/l10n/is.json

+ 2
- 122
.drone.yml View File

@@ -1241,7 +1241,7 @@ steps:
commands:
# JavaScript files are not used in integration tests, so it is not needed to
# build them.
- git clone --depth 1 --branch master https://github.com/nextcloud/spreed apps/spreed
- git clone --depth 1 --branch main https://github.com/nextcloud/spreed apps/spreed
- cd apps/spreed
- composer --version
- composer self-update --2
@@ -1561,126 +1561,6 @@ trigger:
- pull_request
- push

---
kind: pipeline
name: acceptance-access-levels

steps:
- name: submodules
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
commands:
- git submodule update --init
- name: acceptance-access-levels
image: ghcr.io/nextcloud/continuous-integration-acceptance-php8.0:latest
commands:
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-access-levels --selenium-server selenium:4444 allow-git-repository-modifications features/access-levels.feature

services:
- name: selenium
image: ghcr.io/nextcloud/continuous-integration-selenium:3.141.59
environment:
# Reduce default log level for Selenium server (INFO) as it is too
# verbose.
JAVA_OPTS: -Dselenium.LOGGER.level=WARNING

trigger:
branch:
- master
- stable*
event:
- pull_request
- push

---
kind: pipeline
name: acceptance-header

steps:
- name: submodules
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
commands:
- git submodule update --init
- name: acceptance-header
image: ghcr.io/nextcloud/continuous-integration-acceptance-php8.0:latest
commands:
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-header --selenium-server selenium:4444 allow-git-repository-modifications features/header.feature

services:
- name: selenium
image: ghcr.io/nextcloud/continuous-integration-selenium:3.141.59
environment:
# Reduce default log level for Selenium server (INFO) as it is too
# verbose.
JAVA_OPTS: -Dselenium.LOGGER.level=WARNING

trigger:
branch:
- master
- stable*
event:
- pull_request
- push

---
kind: pipeline
name: acceptance-users

steps:
- name: submodules
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
commands:
- git submodule update --init
- name: acceptance-users
image: ghcr.io/nextcloud/continuous-integration-acceptance-php8.0:latest
commands:
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-users --selenium-server selenium:4444 allow-git-repository-modifications features/users.feature

services:
- name: selenium
image: ghcr.io/nextcloud/continuous-integration-selenium:3.141.59
environment:
# Reduce default log level for Selenium server (INFO) as it is too
# verbose.
JAVA_OPTS: -Dselenium.LOGGER.level=WARNING

trigger:
branch:
- master
- stable*
event:
- pull_request
- push

---
kind: pipeline
name: acceptance-apps

steps:
- name: submodules
image: ghcr.io/nextcloud/continuous-integration-alpine-git:latest
commands:
- git submodule update --init
- name: acceptance-apps
image: ghcr.io/nextcloud/continuous-integration-acceptance-php8.0:latest
commands:
- tests/acceptance/run-local.sh --timeout-multiplier 10 --nextcloud-server-domain acceptance-apps --selenium-server selenium:4444 allow-git-repository-modifications features/apps.feature

services:
- name: selenium
image: ghcr.io/nextcloud/continuous-integration-selenium:3.141.59
environment:
# Reduce default log level for Selenium server (INFO) as it is too
# verbose.
JAVA_OPTS: -Dselenium.LOGGER.level=WARNING

trigger:
branch:
- master
- stable*
event:
- pull_request
- push

---
kind: pipeline
name: nodb-codecov
@@ -1848,4 +1728,4 @@ trigger:
- push
---
kind: signature
hmac: 6814dc276b076a391796f3639b27499592e974db8e5e7a4043a120ce215b78cd
hmac: 641c0bf70ed3d9561f41687c19dd5223da37143cbd6c2ad829836da41b57d4c5

+ 2
- 2
.github/ISSUE_TEMPLATE/BUG_REPORT.yml View File

@@ -76,9 +76,9 @@ body:
Select Nextcloud Server version.
_Versions not listed here are not maintained and not supported anymore_
options:
- "25"
- "26"
- "27"
- "28"
- "master"
validations:
required: true
@@ -101,10 +101,10 @@ body:
Select PHP engine version serving Nextcloud Server.
_Describe in the "Additional info" section if you chose "Other"._
options:
- "PHP 7.4"
- "PHP 8.0"
- "PHP 8.1"
- "PHP 8.2"
- "PHP 8.3"
- "Other"
- type: dropdown
id: webserver

+ 6
- 6
.github/dependabot.yml View File

@@ -64,7 +64,7 @@ updates:
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable25
target-branch: stable26
labels:
- "3. to review"
- "feature: dependencies"
@@ -84,7 +84,7 @@ updates:
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable26
target-branch: stable27
labels:
- "3. to review"
- "feature: dependencies"
@@ -104,7 +104,7 @@ updates:
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable27
target-branch: stable28
labels:
- "3. to review"
- "feature: dependencies"
@@ -125,7 +125,7 @@ updates:
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable25
target-branch: stable26
labels:
- "3. to review"
- "feature: dependencies"
@@ -143,7 +143,7 @@ updates:
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable26
target-branch: stable27
labels:
- "3. to review"
- "feature: dependencies"
@@ -161,7 +161,7 @@ updates:
day: saturday
time: "03:00"
timezone: Europe/Paris
target-branch: stable27
target-branch: stable28
labels:
- "3. to review"
- "feature: dependencies"

+ 2
- 1
.github/workflows/command-compile.yml View File

@@ -79,7 +79,7 @@ jobs:
fallbackNpm: '^9'

- name: Set up node ${{ steps.package-engines-versions.outputs.nodeVersion }}
uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
with:
node-version: ${{ steps.package-engines-versions.outputs.nodeVersion }}
cache: npm
@@ -90,6 +90,7 @@ jobs:
- name: Install dependencies & build
env:
CYPRESS_INSTALL_BINARY: 0
PUPPETEER_SKIP_DOWNLOAD: true
run: |
npm ci
npm run build --if-present

+ 18
- 14
.github/workflows/cypress.yml View File

@@ -1,12 +1,10 @@
name: Cypress

on:
pull_request:
push:
branches:
- main
- master
- stable*
on: pull_request

concurrency:
group: cypress-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

env:
# Adjust APP_NAME if your repository name is different
@@ -21,9 +19,15 @@ jobs:
nodeVersion: ${{ steps.versions.outputs.nodeVersion }}
npmVersion: ${{ steps.versions.outputs.npmVersion }}

env:
PUPPETEER_SKIP_DOWNLOAD: true

steps:
- name: Checkout app
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3.5.2
- name: Checkout server
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
# We need to checkout submodules for 3rdparty
submodules: true

- name: Check composer.json
id: check_composer
@@ -39,11 +43,11 @@ jobs:
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
id: versions
with:
fallbackNode: "^14"
fallbackNpm: "^7"
fallbackNode: "^20"
fallbackNpm: "^9"

- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3.8.1
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}

@@ -89,7 +93,7 @@ jobs:
path: ./

- name: Set up node ${{ needs.init.outputs.nodeVersion }}
uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3.8.1
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
with:
node-version: ${{ needs.init.outputs.nodeVersion }}

@@ -97,7 +101,7 @@ jobs:
run: npm i -g npm@"${{ needs.init.outputs.npmVersion }}"

- name: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }} cypress tests
uses: cypress-io/github-action@59810ebfa5a5ac6fcfdcfdf036d1cd4d083a88f2 # v6.5.0
uses: cypress-io/github-action@ebe8b24c4428922d0f793a5c4c96853a633180e3 # v6.6.0
with:
component: ${{ matrix.containers == 'component' }}
group: ${{ matrix.use-cypress-cloud && matrix.containers == 'component' && 'Run component' || matrix.use-cypress-cloud && 'Run E2E' || '' }}

+ 4
- 7
.github/workflows/ftp.yml View File

@@ -1,17 +1,14 @@
name: FTP unit tests
on:
push:
branches:
- master
- stable*
paths:
- '.github/**'
- 'apps/files_external/**'
pull_request:
paths:
- '.github/**'
- 'apps/files_external/**'

concurrency:
group: ftp-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

env:
APP_NAME: files_external


+ 0
- 39
.github/workflows/lint-eslint-when-unrelated.yml View File

@@ -1,39 +0,0 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# Use lint-eslint together with lint-eslint-when-unrelated to make eslint a required check for GitHub actions
# https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks

name: Lint eslint

on:
pull_request:
paths-ignore:
- '.github/workflows/**'
- 'src/**'
- 'apps/**/appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '.eslintrc.*'
- '.eslintignore'
- '**.js'
- '**.ts'
- '**.vue'

permissions:
contents: read

jobs:
lint:
permissions:
contents: none

runs-on: ubuntu-latest

name: eslint

steps:
- run: 'echo "No eslint required"'

+ 47
- 15
.github/workflows/lint-eslint.yml View File

@@ -10,18 +10,6 @@ name: Lint eslint

on:
pull_request:
paths:
- '.github/workflows/**'
- 'src/**'
- 'appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '.eslintrc.*'
- '.eslintignore'
- '**.js'
- '**.ts'
- '**.vue'

permissions:
contents: read
@@ -31,14 +19,42 @@ concurrency:
cancel-in-progress: true

jobs:
changes:
runs-on: ubuntu-latest

outputs:
src: ${{ steps.changes.outputs.src}}

steps:
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- '**/src/**'
- '**/appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '.eslintrc.*'
- '.eslintignore'
- '**.js'
- '**.ts'
- '**.vue'

lint:
runs-on: ubuntu-latest

name: eslint
needs: changes
if: needs.changes.outputs.src != 'false'

name: NPM lint

steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3.6.0
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
@@ -48,7 +64,7 @@ jobs:
fallbackNpm: '^9'

- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}

@@ -58,7 +74,23 @@ jobs:
- name: Install dependencies
env:
CYPRESS_INSTALL_BINARY: 0
PUPPETEER_SKIP_DOWNLOAD: true
run: npm ci

- name: Lint
run: npm run lint

summary:
permissions:
contents: none
runs-on: ubuntu-latest
needs: [changes, lint]

if: always()

# This is the summary, we just avoid to rename it so that branch protection rules still match
name: eslint

steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi

+ 41
- 3
.github/workflows/lint-php-cs.yml View File

@@ -15,17 +15,40 @@ concurrency:
cancel-in-progress: true

jobs:
changes:
runs-on: ubuntu-latest

outputs:
src: ${{ steps.changes.outputs.src}}

steps:
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- '3rdparty/**'
- '**/lib/**'
- '**/tests/**'
- '**/vendor-bin/**'
- '.php-cs-fixer.dist.php'
- 'composer.json'
- 'composer.lock'
- '**.php'

lint:
runs-on: ubuntu-latest

name: php-cs
name: PHP CS fixer lint

steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3.5.2
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

- name: Set up php
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d # v2
uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2
with:
php-version: 8.1
coverage: none
@@ -38,3 +61,18 @@ jobs:

- name: Lint
run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 )

summary:
permissions:
contents: none
runs-on: ubuntu-latest
needs: [changes, lint]

if: always()

# This is the summary, we just avoid to rename it so that branch protection rules still match
name: php-cs

steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi

+ 32
- 10
.github/workflows/lint-php.yml View File

@@ -7,11 +7,6 @@ name: Lint php

on:
pull_request:
push:
branches:
- main
- master
- stable*

permissions:
contents: read
@@ -21,8 +16,35 @@ concurrency:
cancel-in-progress: true

jobs:
php-lint:
changes:
runs-on: ubuntu-latest

outputs:
src: ${{ steps.changes.outputs.src}}

steps:
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- '3rdparty/**'
- '**/lib/**'
- '**/tests/**'
- '**/vendor-bin/**'
- '.php-cs-fixer.dist.php'
- 'composer.json'
- 'composer.lock'
- '**.php'

lint:
runs-on: ubuntu-latest

needs: changes
if: needs.changes.outputs.src != 'false'

strategy:
matrix:
php-versions: [ "8.0", "8.1", "8.2", "8.3" ]
@@ -31,10 +53,10 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3.5.2
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d # v2
uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2
with:
php-version: ${{ matrix.php-versions }}
coverage: none
@@ -49,7 +71,7 @@ jobs:
permissions:
contents: none
runs-on: ubuntu-latest
needs: php-lint
needs: [changes, lint]

if: always()

@@ -57,4 +79,4 @@ jobs:

steps:
- name: Summary status
run: if ${{ needs.php-lint.result != 'success' && needs.php-lint.result != 'skipped' }}; then exit 1; fi
run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi

+ 64
- 13
.github/workflows/node-tests.yml View File

@@ -2,16 +2,45 @@ name: Node tests

on:
pull_request:
push:
branches:
- master
- stable*
schedule:
- cron: "5 2 * * *"

concurrency:
group: node-tests-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
changes:
runs-on: ubuntu-latest

outputs:
src: ${{ steps.changes.outputs.src}}

steps:
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- '**/__tests__/**'
- '**/__mocks__/**'
- '**/src/**'
- '**/appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '**.js'
- '**.ts'
- '**.vue'
- '**.handlebars'

versions:
runs-on: ubuntu-latest
needs: changes

if: ${{ github.repository_owner != 'nextcloud-gmbh' }}
if: ${{ github.repository_owner != 'nextcloud-gmbh' && needs.changes.outputs.src != 'false' }}

outputs:
nodeVersion: ${{ steps.versions.outputs.nodeVersion }}
@@ -25,22 +54,25 @@ jobs:
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1
id: versions
with:
fallbackNode: '^16'
fallbackNpm: '^7'
fallbackNode: '^20'
fallbackNpm: '^9'

test:
runs-on: ubuntu-latest
needs: versions
needs: [versions, changes]

if: ${{ needs.versions.result != 'failure' && needs.changes.outputs.src != 'false' }}

env:
CYPRESS_INSTALL_BINARY: 0
PUPPETEER_SKIP_DOWNLOAD: true

steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11

- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65
with:
node-version: ${{ needs.versions.outputs.nodeVersion }}

@@ -63,7 +95,9 @@ jobs:

jsunit:
runs-on: ubuntu-latest
needs: versions
needs: [versions, changes]

if: ${{ needs.versions.result != 'failure' && needs.changes.outputs.src != 'false' }}

env:
CYPRESS_INSTALL_BINARY: 0
@@ -73,7 +107,7 @@ jobs:
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11

- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65
with:
node-version: ${{ needs.versions.outputs.nodeVersion }}

@@ -91,17 +125,20 @@ jobs:

handlebars:
runs-on: ubuntu-latest
needs: versions
needs: [versions, changes]

if: ${{ needs.versions.result != 'failure' && needs.changes.outputs.src != 'false' }}

env:
CYPRESS_INSTALL_BINARY: 0
PUPPETEER_SKIP_DOWNLOAD: true

steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11

- name: Set up node ${{ needs.versions.outputs.nodeVersion }}
uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65
with:
node-version: ${{ needs.versions.outputs.nodeVersion }}

@@ -116,3 +153,17 @@ jobs:

- name: Run compile
run: ./build/compile-handlebars-templates.sh

summary:
permissions:
contents: none
runs-on: ubuntu-latest
needs: [changes, test, jsunit, handlebars]

if: always()

name: node-test-summary

steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && needs.test.result != 'success' && needs.jsunit.result != 'success' && needs.handlebars.result != 'success' }}; then exit 1; fi

+ 0
- 43
.github/workflows/node-when-unrelated.yml View File

@@ -1,43 +0,0 @@
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
#
# Use node together with node-when-unrelated to make eslint a required check for GitHub actions
# https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks

name: Node

on:
pull_request:
paths-ignore:
- '.github/workflows/**'
- 'src/**'
- 'apps/**/appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '**.js'
- '**.ts'
- '**.vue'
push:
branches:
- main
- master
- stable*

concurrency:
group: node-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
build:
permissions:
contents: none

runs-on: ubuntu-latest

name: node
steps:
- name: Skip
run: 'echo "No JS/TS files changed, skipped Node"'

+ 44
- 17
.github/workflows/node.yml View File

@@ -7,21 +7,6 @@ name: Node

on:
pull_request:
paths:
- '.github/workflows/**'
- 'src/**'
- 'appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '**.js'
- '**.ts'
- '**.vue'
push:
branches:
- main
- master
- stable*

permissions:
contents: read
@@ -31,10 +16,36 @@ concurrency:
cancel-in-progress: true

jobs:
changes:
runs-on: ubuntu-latest

outputs:
src: ${{ steps.changes.outputs.src}}

steps:
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- '**/src/**'
- '**/appinfo/info.xml'
- 'package.json'
- 'package-lock.json'
- 'tsconfig.json'
- '**.js'
- '**.ts'
- '**.vue'

build:
runs-on: ubuntu-latest

name: node
needs: changes
if: needs.changes.outputs.src != 'false'

name: NPM build
steps:
- name: Checkout
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v3.6.0
@@ -47,7 +58,7 @@ jobs:
fallbackNpm: '^9'

- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}

@@ -57,6 +68,7 @@ jobs:
- name: Install dependencies & build
env:
CYPRESS_INSTALL_BINARY: 0
PUPPETEER_SKIP_DOWNLOAD: true
run: |
npm ci
npm run build --if-present
@@ -71,3 +83,18 @@ jobs:
git status
git --no-pager diff
exit 1 # make it red to grab attention

summary:
permissions:
contents: none
runs-on: ubuntu-latest
needs: [changes, build]

if: always()

# This is the summary, we just avoid to rename it so that branch protection rules still match
name: node

steps:
- name: Summary status
run: if ${{ needs.changes.outputs.src != 'false' && needs.build.result != 'success' }}; then exit 1; fi

+ 4
- 3
.github/workflows/npm-audit-fix.yml View File

@@ -18,8 +18,8 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ["main", "master", "stable27", "stable26", "stable25", "stable24"]
branches: ["main", "master", "stable28", "stable27", "stable26", "stable25", "stable24"]
name: npm-audit-fix-${{ matrix.branches }}

steps:
@@ -36,7 +36,7 @@ jobs:
fallbackNpm: '^9'

- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@5e21ff4d9bc1a8cf6de233a3057d20ec6b3fb69d # v3
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v4.0.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}

@@ -51,6 +51,7 @@ jobs:
if: always()
env:
CYPRESS_INSTALL_BINARY: 0
PUPPETEER_SKIP_DOWNLOAD: true
run: |
npm ci
npm run build --if-present

+ 4
- 4
.github/workflows/openapi.yml View File

@@ -2,10 +2,10 @@ name: OpenAPI

on:
pull_request:
push:
branches:
- master
- stable*
concurrency:
group: openapi-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
openapi:

+ 5
- 1
.github/workflows/performance.yml View File

@@ -2,6 +2,10 @@ name: Performance testing
on:
pull_request:

concurrency:
group: performance-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
performance-testing:
runs-on: ubuntu-latest
@@ -85,7 +89,7 @@ jobs:
before.json
after.json

- uses: actions/github-script@v6
- uses: actions/github-script@v7
if: failure() && steps.compare.outcome == 'failure'
with:
github-token: ${{secrets.GITHUB_TOKEN}}

.github/workflows/oci.yml → .github/workflows/phpunit-oci.yml View File

@@ -1,6 +1,7 @@
name: PHPUnit oci

on: pull_request
on:
pull_request:

permissions:
contents: read
@@ -10,6 +11,29 @@ concurrency:
cancel-in-progress: true

jobs:
changes:
runs-on: ubuntu-latest

outputs:
src: ${{ steps.changes.outputs.src}}

steps:
- uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1
id: changes
continue-on-error: true
with:
filters: |
src:
- '.github/workflows/**'
- '3rdparty/**'
- '**/lib/**'
- '**/tests/**'
- '**/vendor-bin/**'
- '.php-cs-fixer.dist.php'
- 'composer.json'
- 'composer.lock'
- '**.php'

phpunit-oci:
runs-on: ubuntu-20.04

@@ -74,7 +98,7 @@ jobs:
permissions:
contents: none
runs-on: ubuntu-latest
needs: phpunit-oci
needs: [changes, phpunit-oci]

if: always()

@@ -82,4 +106,4 @@ jobs:

steps:
- name: Summary status
run: if ${{ needs.phpunit-oci.result != 'success' }}; then exit 1; fi
run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-oci.result != 'success' }}; then exit 1; fi

+ 4
- 6
.github/workflows/s3-external.yml View File

@@ -1,15 +1,13 @@
name: S3 External storage
on:
push:
branches:
- master
- stable*
paths:
- 'apps/files_external/**'
pull_request:
paths:
- 'apps/files_external/**'

concurrency:
group: s3-external-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

env:
APP_NAME: files_external


+ 14
- 4
.github/workflows/s3-primary-integration.yml View File

@@ -1,10 +1,20 @@
name: S3 primary storage integration tests
on:
pull_request:
push:
branches:
- master
- stable*
paths:
- '.github/workflows/**'
- '3rdparty/**'
- '**/*.php'
- '**/lib/**'
- '**/tests/**'
- '**/vendor-bin/**'
- '.php-cs-fixer.dist.php'
- 'composer.json'
- 'composer.lock'

concurrency:
group: s3-external-integration-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
s3-primary-integration-tests-minio:

+ 14
- 4
.github/workflows/s3-primary.yml View File

@@ -1,10 +1,20 @@
name: S3 primary storage
on:
pull_request:
push:
branches:
- master
- stable*
paths:
- '.github/workflows/**'
- '3rdparty/**'
- '**/*.php'
- '**/lib/**'
- '**/tests/**'
- '**/vendor-bin/**'
- '.php-cs-fixer.dist.php'
- 'composer.json'
- 'composer.lock'

concurrency:
group: s3-primary-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
s3-primary-tests-minio:

+ 4
- 6
.github/workflows/sftp.yml View File

@@ -1,11 +1,5 @@
name: SFTP unit tests
on:
push:
branches:
- master
- stable*
paths:
- 'apps/files_external/**'
pull_request:
paths:
- 'apps/files_external/**'
@@ -13,6 +7,10 @@ on:
env:
APP_NAME: files_external

concurrency:
group: sftp-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
sftp-tests:
runs-on: ubuntu-latest

+ 4
- 7
.github/workflows/smb-kerberos.yml View File

@@ -1,17 +1,14 @@
name: Samba Kerberos SSO
on:
push:
branches:
- master
- stable*
paths:
- 'apps/files_external/**'
- '.github/workflows/smb-kerberos.yml'
pull_request:
paths:
- 'apps/files_external/**'
- '.github/workflows/smb-kerberos.yml'

concurrency:
group: smb-kerberos-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
smb-kerberos-tests:
runs-on: ubuntu-latest

+ 1
- 1
.github/workflows/stale.yml View File

@@ -15,7 +15,7 @@ jobs:
issues: write

steps:
- uses: actions/stale@v8
- uses: actions/stale@v9
with:
repo-token: ${{ secrets.COMMAND_BOT_PAT }}
stale-issue-message: >

+ 6
- 6
.github/workflows/static-code-analysis.yml View File

@@ -2,10 +2,10 @@ name: Psalm static code analysis

on:
pull_request:
push:
branches:
- master
- stable*
concurrency:
group: static-code-analysis-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
static-code-analysis:
@@ -40,7 +40,7 @@ jobs:

- name: Upload Analysis results to GitHub
if: always()
uses: github/codeql-action/upload-sarif@v2
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif

@@ -68,7 +68,7 @@ jobs:

- name: Upload Security Analysis results to GitHub
if: always()
uses: github/codeql-action/upload-sarif@v2
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif


+ 1
- 1
.github/workflows/update-cacert-bundle.yml View File

@@ -12,7 +12,7 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ["master", "stable27", "stable26", "stable25", "stable24", "stable23", "stable22"]
branches: ["master", "stable28", "stable27", "stable26", "stable25", "stable24", "stable23", "stable22"]

name: update-ca-certificate-bundle-${{ matrix.branches }}


+ 1
- 1
.github/workflows/update-psalm-baseline.yml View File

@@ -14,7 +14,7 @@ jobs:
strategy:
fail-fast: false
matrix:
branches: ["master", "stable27", "stable26", "stable25"]
branches: ["master", "stable28", "stable27", "stable26"]

name: update-psalm-baseline-${{ matrix.branches }}


+ 1
- 0
.gitignore View File

@@ -162,6 +162,7 @@ tests/acceptance/vendor/

composer.phar
/lib/composer/bin
/lib/composer/bamarni
/vendor-bin/**/vendor

./.htaccess

+ 1
- 0
.php-cs-fixer.dist.php View File

@@ -20,6 +20,7 @@ $config
->notPath('composer')
->notPath('node_modules')
->notPath('vendor')
->in('apps')
->in(__DIR__);

// Ignore additional app directories

+ 1
- 1
3rdparty

@@ -1 +1 @@
Subproject commit e6c45c6c0d4f92ffec621446fcc3b34584772b13
Subproject commit 5b8a5fc015968956a000d269561cb5ec9d931870

+ 5
- 5
README.md View File

@@ -16,12 +16,12 @@
* 🚀 **Expandable with hundreds of Apps** ...like [Calendar](https://github.com/nextcloud/calendar), [Contacts](https://github.com/nextcloud/contacts), [Mail](https://github.com/nextcloud/mail), [Video Chat](https://github.com/nextcloud/spreed) and all those you can discover in our [App Store](https://apps.nextcloud.com)
* 🔒 **Security** with our encryption mechanisms, [HackerOne bounty program](https://hackerone.com/nextcloud) and two-factor authentication.

Do you want to learn more about how you can use Nextcloud to access, share and protect your files, calendars, contacts, communication & more at home and in your organization? [**Learn about all our Features**](https://nextcloud.com/athome/).
Do you want to learn more about how you can use Nextcloud to access, share, and protect your files, calendars, contacts, communication & more at home and in your organization? [**Learn about all our Features**](https://nextcloud.com/athome/).

## Get your Nextcloud 🚚

- ☑️ [**Simply sign up**](https://nextcloud.com/signup/) at one of our providers either through our website or through the apps directly.
- 🖥 [**Install** a server by yourself](https://nextcloud.com/install/#instructions-server) on your hardware or by using one of our ready to use **appliances**
- 🖥 [**Install** a server by yourself](https://nextcloud.com/install/#instructions-server) on your hardware or by using one of our ready-to-use **appliances**
- 📦 Buy one of the [awesome **devices** coming with a preinstalled Nextcloud](https://nextcloud.com/devices/)
- 🏢 Find a [service **provider**](https://nextcloud.com/providers/) who hosts Nextcloud for you or your company

@@ -64,7 +64,7 @@ Otherwise, git checkouts can be handled the same as release archives, by using t
- [🌊 WAVE](https://wave.webaim.org/extension/) for accessibility testing
- [🚨 Lighthouse](https://developers.google.com/web/tools/lighthouse/) for testing performance, accessibility, and more

#### Helpful bots at github :robot:
#### Helpful bots at GitHub :robot:

- Comment on a pull request with `/update-3rdparty` to update the 3rd party submodule. It will update to the last commit of the 3rd party branch named like the PR target.

@@ -82,8 +82,8 @@ changed it substantially:
@copyright Copyright (c) <year>, <your name> (<your email address>)
```

Please read the [Code of Conduct](https://nextcloud.com/community/code-of-conduct/). This document offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other.
Please read the [Code of Conduct](https://nextcloud.com/community/code-of-conduct/). This document offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere and to explain how together we can strengthen and support each other.

Please review the [guidelines for contributing](.github/CONTRIBUTING.md) to this repository.

More information how to contribute: [https://nextcloud.com/contribute/](https://nextcloud.com/contribute/)
More information on how to contribute: [https://nextcloud.com/contribute/](https://nextcloud.com/contribute/)

+ 2
- 2
apps/admin_audit/appinfo/info.xml View File

@@ -5,7 +5,7 @@
<name>Auditing / Logging</name>
<summary>Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.</summary>
<description>Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.</description>
<version>1.18.0</version>
<version>1.19.0</version>
<licence>agpl</licence>
<author>Nextcloud</author>
<namespace>AdminAudit</namespace>
@@ -15,7 +15,7 @@
<category>monitoring</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="28" max-version="28"/>
<nextcloud min-version="29" max-version="29"/>
</dependencies>
<background-jobs>
<job>OCA\AdminAudit\BackgroundJobs\Rotate</job>

+ 1
- 1
apps/admin_audit/l10n/de.js View File

@@ -1,7 +1,7 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "Auditieren / Protokollieren",
"Auditing / Logging" : "Auditieren/Protokollieren",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Stellt Protokollierungsfunktionen für Nextcloud zur Verfügung wie Dateizugriffe oder andere vertrauliche Aktionen."
},
"nplurals=2; plural=(n != 1);");

+ 1
- 1
apps/admin_audit/l10n/de.json View File

@@ -1,5 +1,5 @@
{ "translations": {
"Auditing / Logging" : "Auditieren / Protokollieren",
"Auditing / Logging" : "Auditieren/Protokollieren",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Stellt Protokollierungsfunktionen für Nextcloud zur Verfügung wie Dateizugriffe oder andere vertrauliche Aktionen."
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

+ 7
- 0
apps/admin_audit/l10n/is.js View File

@@ -0,0 +1,7 @@
OC.L10N.register(
"admin_audit",
{
"Auditing / Logging" : "Eftirlit / Atvikaskráning",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Býður upp á atvikaskráningu fyrir Nextcloud, eins og að skrá aðgang að skrám og fleiri viðkvæmar aðgerðir."
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");

+ 5
- 0
apps/admin_audit/l10n/is.json View File

@@ -0,0 +1,5 @@
{ "translations": {
"Auditing / Logging" : "Eftirlit / Atvikaskráning",
"Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions." : "Býður upp á atvikaskráningu fyrir Nextcloud, eins og að skrá aðgang að skrám og fleiri viðkvæmar aðgerðir."
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
}

+ 5
- 4
apps/admin_audit/lib/Actions/Action.php View File

@@ -34,7 +34,8 @@ class Action {

public function __construct(
private IAuditLogger $logger,
) {}
) {
}

/**
* Log a single action with a log level of info
@@ -45,9 +46,9 @@ class Action {
* @param bool $obfuscateParameters
*/
public function log(string $text,
array $params,
array $elements,
bool $obfuscateParameters = false): void {
array $params,
array $elements,
bool $obfuscateParameters = false): void {
foreach ($elements as $element) {
if (!isset($params[$element])) {
if ($obfuscateParameters) {

+ 1
- 1
apps/admin_audit/lib/Actions/UserManagement.php View File

@@ -61,7 +61,7 @@ class UserManagement extends Action {
*/
public function assign(string $uid): void {
$this->log(
'UserID assigned: "%s"',
'UserID assigned: "%s"',
[ 'uid' => $uid ],
[ 'uid' ]
);

+ 7
- 7
apps/admin_audit/lib/AppInfo/Application.php View File

@@ -101,7 +101,7 @@ class Application extends App implements IBootstrap {
* Register hooks in order to log them
*/
private function registerHooks(IAuditLogger $logger,
ContainerInterface $serverContainer): void {
ContainerInterface $serverContainer): void {
$this->userManagementHooks($logger, $serverContainer->get(IUserSession::class));
$this->groupHooks($logger, $serverContainer->get(IGroupManager::class));
$this->authHooks($logger);
@@ -122,7 +122,7 @@ class Application extends App implements IBootstrap {
}

private function userManagementHooks(IAuditLogger $logger,
IUserSession $userSession): void {
IUserSession $userSession): void {
$userActions = new UserManagement($logger);

Util::connectHook('OC_User', 'post_createUser', $userActions, 'create');
@@ -136,7 +136,7 @@ class Application extends App implements IBootstrap {
}

private function groupHooks(IAuditLogger $logger,
IGroupManager $groupManager): void {
IGroupManager $groupManager): void {
$groupActions = new GroupManagement($logger);

assert($groupManager instanceof GroupManager);
@@ -167,7 +167,7 @@ class Application extends App implements IBootstrap {
}

private function appHooks(IAuditLogger $logger,
IEventDispatcher $eventDispatcher): void {
IEventDispatcher $eventDispatcher): void {
$eventDispatcher->addListener(ManagerEvent::EVENT_APP_ENABLE, function (ManagerEvent $event) use ($logger) {
$appActions = new AppManagement($logger);
$appActions->enableApp($event->getAppID());
@@ -183,7 +183,7 @@ class Application extends App implements IBootstrap {
}

private function consoleHooks(IAuditLogger $logger,
IEventDispatcher $eventDispatcher): void {
IEventDispatcher $eventDispatcher): void {
$eventDispatcher->addListener(ConsoleEvent::class, function (ConsoleEvent $event) use ($logger) {
$appActions = new Console($logger);
$appActions->runCommand($event->getArguments());
@@ -191,7 +191,7 @@ class Application extends App implements IBootstrap {
}

private function fileHooks(IAuditLogger $logger,
IEventDispatcher $eventDispatcher): void {
IEventDispatcher $eventDispatcher): void {
$fileActions = new Files($logger);
$eventDispatcher->addListener(
BeforePreviewFetchedEvent::class,
@@ -264,7 +264,7 @@ class Application extends App implements IBootstrap {
}

private function securityHooks(IAuditLogger $logger,
IEventDispatcher $eventDispatcher): void {
IEventDispatcher $eventDispatcher): void {
$eventDispatcher->addListener(TwoFactorProviderChallengePassed::class, function (TwoFactorProviderChallengePassed $event) use ($logger) {
$security = new Security($logger);
$security->twofactorSuccess($event->getUser(), $event->getProvider());

+ 1
- 1
apps/admin_audit/lib/BackgroundJobs/Rotate.php View File

@@ -27,8 +27,8 @@ declare(strict_types=1);
*/
namespace OCA\AdminAudit\BackgroundJobs;

use OCP\BackgroundJob\TimedJob;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\TimedJob;
use OCP\IConfig;
use OCP\Log\RotationTrait;


+ 2
- 2
apps/cloud_federation_api/appinfo/info.xml View File

@@ -5,7 +5,7 @@
<name>Cloud Federation API</name>
<summary>Enable clouds to communicate with each other and exchange data</summary>
<description>The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.</description>
<version>1.11.0</version>
<version>1.12.0</version>
<licence>agpl</licence>
<author>Bjoern Schiessle</author>
<namespace>CloudFederationAPI</namespace>
@@ -15,6 +15,6 @@
<category>integration</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="28" max-version="28"/>
<nextcloud min-version="29" max-version="29"/>
</dependencies>
</info>

+ 6
- 6
apps/cloud_federation_api/appinfo/routes.php View File

@@ -38,11 +38,11 @@ return [
'verb' => 'POST',
'root' => '/ocm',
],
// [
// 'name' => 'RequestHandler#inviteAccepted',
// 'url' => '/invite-accepted',
// 'verb' => 'POST',
// 'root' => '/ocm',
// ]
// [
// 'name' => 'RequestHandler#inviteAccepted',
// 'url' => '/invite-accepted',
// 'verb' => 'POST',
// 'root' => '/ocm',
// ]
],
];

+ 5
- 5
apps/cloud_federation_api/lib/Controller/RequestHandlerController.php View File

@@ -51,9 +51,9 @@ use Psr\Log\LoggerInterface;
*
* @package OCA\CloudFederationAPI\Controller
*
* @psalm-import-type CloudFederationApiAddShare from ResponseDefinitions
* @psalm-import-type CloudFederationApiValidationError from ResponseDefinitions
* @psalm-import-type CloudFederationApiError from ResponseDefinitions
* @psalm-import-type CloudFederationAPIAddShare from ResponseDefinitions
* @psalm-import-type CloudFederationAPIValidationError from ResponseDefinitions
* @psalm-import-type CloudFederationAPIError from ResponseDefinitions
*/
class RequestHandlerController extends Controller {
public function __construct(
@@ -90,7 +90,7 @@ class RequestHandlerController extends Controller {
* @param string $shareType 'group' or 'user' share
* @param string $resourceType 'file', 'calendar',...
*
* @return JSONResponse<Http::STATUS_CREATED, CloudFederationApiAddShare, array{}>|JSONResponse<Http::STATUS_BAD_REQUEST, CloudFederationApiValidationError, array{}>|JSONResponse<Http::STATUS_NOT_IMPLEMENTED, CloudFederationApiError, array{}>
* @return JSONResponse<Http::STATUS_CREATED, CloudFederationAPIAddShare, array{}>|JSONResponse<Http::STATUS_BAD_REQUEST, CloudFederationAPIValidationError, array{}>|JSONResponse<Http::STATUS_NOT_IMPLEMENTED, CloudFederationAPIError, array{}>
* 201: The notification was successfully received. The display name of the recipient might be returned in the body
* 400: Bad request due to invalid parameters, e.g. when `shareWith` is not found or required properties are missing
* 501: Share type or the resource type is not supported
@@ -213,7 +213,7 @@ class RequestHandlerController extends Controller {
* @param string|null $providerId ID of the share
* @param array<string, mixed>|null $notification The actual payload of the notification
*
* @return JSONResponse<Http::STATUS_CREATED, array<string, mixed>, array{}>|JSONResponse<Http::STATUS_BAD_REQUEST, CloudFederationApiValidationError, array{}>|JSONResponse<Http::STATUS_FORBIDDEN|Http::STATUS_NOT_IMPLEMENTED, CloudFederationApiError, array{}>
* @return JSONResponse<Http::STATUS_CREATED, array<string, mixed>, array{}>|JSONResponse<Http::STATUS_BAD_REQUEST, CloudFederationAPIValidationError, array{}>|JSONResponse<Http::STATUS_FORBIDDEN|Http::STATUS_NOT_IMPLEMENTED, CloudFederationAPIError, array{}>
* 201: The notification was successfully received
* 400: Bad request due to invalid parameters, e.g. when `type` is invalid or missing
* 403: Getting resource is not allowed

+ 4
- 3
apps/cloud_federation_api/lib/ResponseDefinitions.php View File

@@ -1,4 +1,5 @@
<?php

declare(strict_types=1);

/**
@@ -26,15 +27,15 @@ declare(strict_types=1);
namespace OCA\CloudFederationAPI;

/**
* @psalm-type CloudFederationApiAddShare = array{
* @psalm-type CloudFederationAPIAddShare = array{
* recipientDisplayName: string,
* }
*
* @psalm-type CloudFederationApiError = array{
* @psalm-type CloudFederationAPIError = array{
* message: string,
* }
*
* @psalm-type CloudFederationApiValidationError = CloudFederationApiError&array{
* @psalm-type CloudFederationAPIValidationError = CloudFederationAPIError&array{
* validationErrors: array{
* name: string,
* message: string|null,

+ 0
- 3
apps/comments/.bowerrc View File

@@ -1,3 +0,0 @@
{
"directory": "js/vendor"
}

+ 0
- 3
apps/comments/.l10nignore View File

@@ -1,3 +0,0 @@
# compiled vue templates
src/templates.js
js/

+ 2
- 2
apps/comments/appinfo/info.xml View File

@@ -5,7 +5,7 @@
<name>Comments</name>
<summary>Files app plugin to add comments to files</summary>
<description>Files app plugin to add comments to files</description>
<version>1.18.0</version>
<version>1.19.0</version>
<licence>agpl</licence>
<author>Arthur Schiwon</author>
<author>Vincent Petry</author>
@@ -16,7 +16,7 @@
<category>social</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="28" max-version="28"/>
<nextcloud min-version="29" max-version="29"/>
</dependencies>

<activity>

+ 0
- 1
apps/comments/l10n/af.js View File

@@ -15,7 +15,6 @@ OC.L10N.register(
"No comments yet, start the conversation!" : "Nog geen kommentaar, begin die gesprek!",
"Retry" : "Herprobeer",
"Comment" : "Kommentaar",
"%1$s commented" : "%1$s het kommentaar gelewer",
"_%n unread comment_::_%n unread comments_" : ["%n ongelese kommentaar","%n ongelese kommentare"]
},
"nplurals=2; plural=(n != 1);");

+ 0
- 1
apps/comments/l10n/af.json View File

@@ -13,7 +13,6 @@
"No comments yet, start the conversation!" : "Nog geen kommentaar, begin die gesprek!",
"Retry" : "Herprobeer",
"Comment" : "Kommentaar",
"%1$s commented" : "%1$s het kommentaar gelewer",
"_%n unread comment_::_%n unread comments_" : ["%n ongelese kommentaar","%n ongelese kommentare"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

+ 2
- 2
apps/comments/l10n/ar.js View File

@@ -16,7 +16,8 @@ OC.L10N.register(
"Delete comment" : "حذف التعليق",
"Cancel edit" : "إلغاء التعديل",
"Post comment" : "أضف تعليق",
"\"@\" for mentions, \":\" for emoji, \"/\" for smart picker" : "\"@\" للإشارات, \":\" للإيموجي, \"/\" للاقط الذكي",
"@ for mentions, : for emoji, / for smart picker" : "@ للإشارات، : للإيموجي، / للاقط الذكي",
"Could not reload comments" : "تعذّرت إعادة تحميل الملاحظات",
"No comments yet, start the conversation!" : "لا يوجد تعليقات, ابدأ النقاش الآن!",
"No more messages" : "لامزيد من الرسائل",
"Retry" : "أعد المحاولة",
@@ -28,7 +29,6 @@ OC.L10N.register(
"Comment deleted" : "التعليق حُذف",
"An error occurred while trying to delete the comment" : "حدث خطأ أثناء محاولة حذف التعليق",
"An error occurred while trying to create the comment" : "حدث خطأ أثناء محاولة إنشاء التعليق",
"%1$s commented" : "%1$s كتب تعليق",
"_%n unread comment_::_%n unread comments_" : ["%n تعليق غير مقروء","%n تعليق غير مقروء","تعليقان غير مقروءة","%n تعليقات غير مقروء","%n تعليق غير مقروء","%n تعليق غير مقروء"]
},
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");

+ 2
- 2
apps/comments/l10n/ar.json View File

@@ -14,7 +14,8 @@
"Delete comment" : "حذف التعليق",
"Cancel edit" : "إلغاء التعديل",
"Post comment" : "أضف تعليق",
"\"@\" for mentions, \":\" for emoji, \"/\" for smart picker" : "\"@\" للإشارات, \":\" للإيموجي, \"/\" للاقط الذكي",
"@ for mentions, : for emoji, / for smart picker" : "@ للإشارات، : للإيموجي، / للاقط الذكي",
"Could not reload comments" : "تعذّرت إعادة تحميل الملاحظات",
"No comments yet, start the conversation!" : "لا يوجد تعليقات, ابدأ النقاش الآن!",
"No more messages" : "لامزيد من الرسائل",
"Retry" : "أعد المحاولة",
@@ -26,7 +27,6 @@
"Comment deleted" : "التعليق حُذف",
"An error occurred while trying to delete the comment" : "حدث خطأ أثناء محاولة حذف التعليق",
"An error occurred while trying to create the comment" : "حدث خطأ أثناء محاولة إنشاء التعليق",
"%1$s commented" : "%1$s كتب تعليق",
"_%n unread comment_::_%n unread comments_" : ["%n تعليق غير مقروء","%n تعليق غير مقروء","تعليقان غير مقروءة","%n تعليقات غير مقروء","%n تعليق غير مقروء","%n تعليق غير مقروء"]
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
}

+ 0
- 1
apps/comments/l10n/bg.js View File

@@ -26,7 +26,6 @@ OC.L10N.register(
"Comment deleted" : " Изтрит е коментар",
"An error occurred while trying to delete the comment" : "Възникна грешка при опит за изтриване на коментара",
"An error occurred while trying to create the comment" : "Възникна грешка при опит за създаване на коментар",
"%1$s commented" : "%1$s коментира",
"_%n unread comment_::_%n unread comments_" : ["%n непрочетен коментар","%n непрочетени коментари"]
},
"nplurals=2; plural=(n != 1);");

+ 0
- 1
apps/comments/l10n/bg.json View File

@@ -24,7 +24,6 @@
"Comment deleted" : " Изтрит е коментар",
"An error occurred while trying to delete the comment" : "Възникна грешка при опит за изтриване на коментара",
"An error occurred while trying to create the comment" : "Възникна грешка при опит за създаване на коментар",
"%1$s commented" : "%1$s коментира",
"_%n unread comment_::_%n unread comments_" : ["%n непрочетен коментар","%n непрочетени коментари"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

+ 2
- 1
apps/comments/l10n/ca.js View File

@@ -16,6 +16,8 @@ OC.L10N.register(
"Delete comment" : "Suprimeix el comentari",
"Cancel edit" : "Cancel·la l'edició",
"Post comment" : "Publica el comentari",
"@ for mentions, : for emoji, / for smart picker" : "@ per a mencions, : per a emojis, / per al selector intel·ligent",
"Could not reload comments" : "No s'han pogut tornar a carregar els comentaris",
"No comments yet, start the conversation!" : "Encara no hi ha cap comentari. Enceteu la conversa!",
"No more messages" : "No hi ha més missatges",
"Retry" : "Torna-ho a provar",
@@ -27,7 +29,6 @@ OC.L10N.register(
"Comment deleted" : "S'ha suprimit el comentari",
"An error occurred while trying to delete the comment" : "S'ha produït un error en intentar suprimir el comentari",
"An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari",
"%1$s commented" : "%1$s ha escrit un comentari",
"_%n unread comment_::_%n unread comments_" : ["%n comentari sense llegir","%n comentaris sense llegir"]
},
"nplurals=2; plural=(n != 1);");

+ 2
- 1
apps/comments/l10n/ca.json View File

@@ -14,6 +14,8 @@
"Delete comment" : "Suprimeix el comentari",
"Cancel edit" : "Cancel·la l'edició",
"Post comment" : "Publica el comentari",
"@ for mentions, : for emoji, / for smart picker" : "@ per a mencions, : per a emojis, / per al selector intel·ligent",
"Could not reload comments" : "No s'han pogut tornar a carregar els comentaris",
"No comments yet, start the conversation!" : "Encara no hi ha cap comentari. Enceteu la conversa!",
"No more messages" : "No hi ha més missatges",
"Retry" : "Torna-ho a provar",
@@ -25,7 +27,6 @@
"Comment deleted" : "S'ha suprimit el comentari",
"An error occurred while trying to delete the comment" : "S'ha produït un error en intentar suprimir el comentari",
"An error occurred while trying to create the comment" : "S'ha produït un error en intentar crear el comentari",
"%1$s commented" : "%1$s ha escrit un comentari",
"_%n unread comment_::_%n unread comments_" : ["%n comentari sense llegir","%n comentaris sense llegir"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

+ 2
- 2
apps/comments/l10n/cs.js View File

@@ -16,7 +16,8 @@ OC.L10N.register(
"Delete comment" : "Smazat komentář",
"Cancel edit" : "Zrušit úpravu",
"Post comment" : "Odeslat komentář",
"\"@\" for mentions, \":\" for emoji, \"/\" for smart picker" : "„@“ pro zmínění, „:“ pro emotikony, „/“ pro inteligentní výběr",
"@ for mentions, : for emoji, / for smart picker" : "@ pro zmínění, : pro emotikony, / pro inteligentní výběr",
"Could not reload comments" : "Znovunačtení komentářů se nezdařilo",
"No comments yet, start the conversation!" : "Zatím bez komentářů, začněte konverzaci!",
"No more messages" : "Žádné další zprávy",
"Retry" : "Zkusit znovu",
@@ -28,7 +29,6 @@ OC.L10N.register(
"Comment deleted" : "Komentář smazán",
"An error occurred while trying to delete the comment" : "Došlo k chybě při pokusu o smazání komentáře",
"An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře",
"%1$s commented" : "%1$s okomentováno",
"_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů","%n nepřečtené komentáře"]
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;");

+ 2
- 2
apps/comments/l10n/cs.json View File

@@ -14,7 +14,8 @@
"Delete comment" : "Smazat komentář",
"Cancel edit" : "Zrušit úpravu",
"Post comment" : "Odeslat komentář",
"\"@\" for mentions, \":\" for emoji, \"/\" for smart picker" : "„@“ pro zmínění, „:“ pro emotikony, „/“ pro inteligentní výběr",
"@ for mentions, : for emoji, / for smart picker" : "@ pro zmínění, : pro emotikony, / pro inteligentní výběr",
"Could not reload comments" : "Znovunačtení komentářů se nezdařilo",
"No comments yet, start the conversation!" : "Zatím bez komentářů, začněte konverzaci!",
"No more messages" : "Žádné další zprávy",
"Retry" : "Zkusit znovu",
@@ -26,7 +27,6 @@
"Comment deleted" : "Komentář smazán",
"An error occurred while trying to delete the comment" : "Došlo k chybě při pokusu o smazání komentáře",
"An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře",
"%1$s commented" : "%1$s okomentováno",
"_%n unread comment_::_%n unread comments_" : ["%n nepřečtený komentář","%n nepřečtené komentáře","%n nepřečtených komentářů","%n nepřečtené komentáře"]
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"
}

+ 0
- 1
apps/comments/l10n/da.js View File

@@ -27,7 +27,6 @@ OC.L10N.register(
"Comment deleted" : "Kommentar slettet",
"An error occurred while trying to delete the comment" : "Der opstod en fejl under forsøget på at slette kommentaren",
"An error occurred while trying to create the comment" : "Der opstod en fejl under forsøget på at oprette kommentaren",
"%1$s commented" : "%1$s kommenterede",
"_%n unread comment_::_%n unread comments_" : ["%n ulæst kommentar","%n ulæste kommentarer"]
},
"nplurals=2; plural=(n != 1);");

+ 0
- 1
apps/comments/l10n/da.json View File

@@ -25,7 +25,6 @@
"Comment deleted" : "Kommentar slettet",
"An error occurred while trying to delete the comment" : "Der opstod en fejl under forsøget på at slette kommentaren",
"An error occurred while trying to create the comment" : "Der opstod en fejl under forsøget på at oprette kommentaren",
"%1$s commented" : "%1$s kommenterede",
"_%n unread comment_::_%n unread comments_" : ["%n ulæst kommentar","%n ulæste kommentarer"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

+ 3
- 1
apps/comments/l10n/de.js View File

@@ -16,9 +16,12 @@ OC.L10N.register(
"Delete comment" : "Kommentar löschen",
"Cancel edit" : "Bearbeiten abbrechen",
"Post comment" : "Kommentar veröffentlichen",
"@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
"Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
"No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginne die Diskussion!",
"No more messages" : "Keine weiteren Nachrichten",
"Retry" : "Wiederholen",
"Failed to mark comments as read" : "Kommentare konnten nicht als gelesen markiert werden",
"Unable to load the comments list" : "Kommentarliste konnte nicht geladen werden",
"_1 new comment_::_{unread} new comments_" : ["1 neuer Kommentar","[unread] neue Kommentare"],
"Comment" : "Kommentar",
@@ -26,7 +29,6 @@ OC.L10N.register(
"Comment deleted" : "Kommentar gelöscht",
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"%1$s commented" : "%1$s kommentierte",
"_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"]
},
"nplurals=2; plural=(n != 1);");

+ 3
- 1
apps/comments/l10n/de.json View File

@@ -14,9 +14,12 @@
"Delete comment" : "Kommentar löschen",
"Cancel edit" : "Bearbeiten abbrechen",
"Post comment" : "Kommentar veröffentlichen",
"@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
"Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
"No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginne die Diskussion!",
"No more messages" : "Keine weiteren Nachrichten",
"Retry" : "Wiederholen",
"Failed to mark comments as read" : "Kommentare konnten nicht als gelesen markiert werden",
"Unable to load the comments list" : "Kommentarliste konnte nicht geladen werden",
"_1 new comment_::_{unread} new comments_" : ["1 neuer Kommentar","[unread] neue Kommentare"],
"Comment" : "Kommentar",
@@ -24,7 +27,6 @@
"Comment deleted" : "Kommentar gelöscht",
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"%1$s commented" : "%1$s kommentierte",
"_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

+ 2
- 2
apps/comments/l10n/de_DE.js View File

@@ -16,7 +16,8 @@ OC.L10N.register(
"Delete comment" : "Kommentar löschen",
"Cancel edit" : "Bearbeiten abbrechen",
"Post comment" : "Kommentar veröffentlichen",
"\"@\" for mentions, \":\" for emoji, \"/\" for smart picker" : "\"@\" für Erwähnungen, \":\" für Emoji, \"/\" für Smart Picker",
"@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
"Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
"No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginnen Sie die Diskussion!",
"No more messages" : "Keine weiteren Nachrichten",
"Retry" : "Wiederholen",
@@ -28,7 +29,6 @@ OC.L10N.register(
"Comment deleted" : "Kommentar gelöscht",
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"%1$s commented" : "%1$s kommentierte",
"_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"]
},
"nplurals=2; plural=(n != 1);");

+ 2
- 2
apps/comments/l10n/de_DE.json View File

@@ -14,7 +14,8 @@
"Delete comment" : "Kommentar löschen",
"Cancel edit" : "Bearbeiten abbrechen",
"Post comment" : "Kommentar veröffentlichen",
"\"@\" for mentions, \":\" for emoji, \"/\" for smart picker" : "\"@\" für Erwähnungen, \":\" für Emoji, \"/\" für Smart Picker",
"@ for mentions, : for emoji, / for smart picker" : "@ für Erwähnungen, : für Emoji, / für Smart Picker",
"Could not reload comments" : "Kommentare konnten nicht erneut geladen werden",
"No comments yet, start the conversation!" : "Keine Kommentare bisher. Beginnen Sie die Diskussion!",
"No more messages" : "Keine weiteren Nachrichten",
"Retry" : "Wiederholen",
@@ -26,7 +27,6 @@
"Comment deleted" : "Kommentar gelöscht",
"An error occurred while trying to delete the comment" : "Es ist ein Fehler beim Löschen des Kommentars aufgetreten",
"An error occurred while trying to create the comment" : "Es ist ein Fehler beim Erstellen des Kommentars aufgetreten",
"%1$s commented" : "%1$s kommentierte",
"_%n unread comment_::_%n unread comments_" : ["%n ungelesener Kommentar","%n ungelesene Kommentare"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

+ 0
- 1
apps/comments/l10n/el.js View File

@@ -26,7 +26,6 @@ OC.L10N.register(
"Comment deleted" : "Το σχόλιο διαγράφηκε",
"An error occurred while trying to delete the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια διαγραφής του σχολίου",
"An error occurred while trying to create the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια δημιουργίας του σχολίου",
"%1$s commented" : "%1$s σχολίασε",
"_%n unread comment_::_%n unread comments_" : ["%n αδιάβαστο σχόλιο","%n αδιάβαστα σχόλια"]
},
"nplurals=2; plural=(n != 1);");

+ 0
- 1
apps/comments/l10n/el.json View File

@@ -24,7 +24,6 @@
"Comment deleted" : "Το σχόλιο διαγράφηκε",
"An error occurred while trying to delete the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια διαγραφής του σχολίου",
"An error occurred while trying to create the comment" : "Παρουσιάστηκε σφάλμα κατά την προσπάθεια δημιουργίας του σχολίου",
"%1$s commented" : "%1$s σχολίασε",
"_%n unread comment_::_%n unread comments_" : ["%n αδιάβαστο σχόλιο","%n αδιάβαστα σχόλια"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

+ 2
- 2
apps/comments/l10n/en_GB.js View File

@@ -16,7 +16,8 @@ OC.L10N.register(
"Delete comment" : "Delete comment",
"Cancel edit" : "Cancel edit",
"Post comment" : "Post comment",
"\"@\" for mentions, \":\" for emoji, \"/\" for smart picker" : "\"@\" for mentions, \":\" for emoji, \"/\" for smart picker",
"@ for mentions, : for emoji, / for smart picker" : "@ for mentions, : for emoji, / for smart picker",
"Could not reload comments" : "Could not reload comments",
"No comments yet, start the conversation!" : "No comments yet, start the conversation!",
"No more messages" : "No more messages",
"Retry" : "Retry",
@@ -28,7 +29,6 @@ OC.L10N.register(
"Comment deleted" : "Comment deleted",
"An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment",
"An error occurred while trying to create the comment" : "An error occurred while trying to create the comment",
"%1$s commented" : "%1$s commented",
"_%n unread comment_::_%n unread comments_" : ["%n unread comment","%n unread comments"]
},
"nplurals=2; plural=(n != 1);");

+ 2
- 2
apps/comments/l10n/en_GB.json View File

@@ -14,7 +14,8 @@
"Delete comment" : "Delete comment",
"Cancel edit" : "Cancel edit",
"Post comment" : "Post comment",
"\"@\" for mentions, \":\" for emoji, \"/\" for smart picker" : "\"@\" for mentions, \":\" for emoji, \"/\" for smart picker",
"@ for mentions, : for emoji, / for smart picker" : "@ for mentions, : for emoji, / for smart picker",
"Could not reload comments" : "Could not reload comments",
"No comments yet, start the conversation!" : "No comments yet, start the conversation!",
"No more messages" : "No more messages",
"Retry" : "Retry",
@@ -26,7 +27,6 @@
"Comment deleted" : "Comment deleted",
"An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment",
"An error occurred while trying to create the comment" : "An error occurred while trying to create the comment",
"%1$s commented" : "%1$s commented",
"_%n unread comment_::_%n unread comments_" : ["%n unread comment","%n unread comments"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

+ 0
- 1
apps/comments/l10n/eo.js View File

@@ -16,7 +16,6 @@ OC.L10N.register(
"Retry" : "Reprovi",
"_1 new comment_::_{unread} new comments_" : ["1 nova komento","{unread} novaj komentoj"],
"Comment" : "Komento",
"%1$s commented" : "%1$s komentis",
"_%n unread comment_::_%n unread comments_" : ["%n nelegataj komentoj","%n nelegataj komentoj"]
},
"nplurals=2; plural=(n != 1);");

+ 0
- 1
apps/comments/l10n/eo.json View File

@@ -14,7 +14,6 @@
"Retry" : "Reprovi",
"_1 new comment_::_{unread} new comments_" : ["1 nova komento","{unread} novaj komentoj"],
"Comment" : "Komento",
"%1$s commented" : "%1$s komentis",
"_%n unread comment_::_%n unread comments_" : ["%n nelegataj komentoj","%n nelegataj komentoj"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

+ 2
- 2
apps/comments/l10n/es.js View File

@@ -16,7 +16,8 @@ OC.L10N.register(
"Delete comment" : "Borrar comentario",
"Cancel edit" : "Cacelar edición",
"Post comment" : "Publicar comentario",
"\"@\" for mentions, \":\" for emoji, \"/\" for smart picker" : "\"@\" para menciones, \":\" para emojis, \"/\" para selector inteligente",
"@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoji, / para selector inteligente",
"Could not reload comments" : "No se pudieron recargar los comentarios",
"No comments yet, start the conversation!" : "¡No hay comentarios, empieza la conversación!",
"No more messages" : "No hay más mensajes",
"Retry" : "Reintentar",
@@ -28,7 +29,6 @@ OC.L10N.register(
"Comment deleted" : "Comentario borrado",
"An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario",
"An error occurred while trying to create the comment" : "Ocurrió un error intentando crear el comentario",
"%1$s commented" : "%1$s comentados",
"_%n unread comment_::_%n unread comments_" : ["%n comentario sin leer","%n comentarios no leídos","%n comentarios no leídos"]
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

+ 2
- 2
apps/comments/l10n/es.json View File

@@ -14,7 +14,8 @@
"Delete comment" : "Borrar comentario",
"Cancel edit" : "Cacelar edición",
"Post comment" : "Publicar comentario",
"\"@\" for mentions, \":\" for emoji, \"/\" for smart picker" : "\"@\" para menciones, \":\" para emojis, \"/\" para selector inteligente",
"@ for mentions, : for emoji, / for smart picker" : "@ para menciones, : para emoji, / para selector inteligente",
"Could not reload comments" : "No se pudieron recargar los comentarios",
"No comments yet, start the conversation!" : "¡No hay comentarios, empieza la conversación!",
"No more messages" : "No hay más mensajes",
"Retry" : "Reintentar",
@@ -26,7 +27,6 @@
"Comment deleted" : "Comentario borrado",
"An error occurred while trying to delete the comment" : "Ocurrió un error intentando borrar el comentario",
"An error occurred while trying to create the comment" : "Ocurrió un error intentando crear el comentario",
"%1$s commented" : "%1$s comentados",
"_%n unread comment_::_%n unread comments_" : ["%n comentario sin leer","%n comentarios no leídos","%n comentarios no leídos"]
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

+ 0
- 1
apps/comments/l10n/es_AR.js View File

@@ -15,7 +15,6 @@ OC.L10N.register(
"No comments yet, start the conversation!" : "No hay comentarios aún, iniciar la conversación!",
"Retry" : "Reintentar",
"Comment" : "Comentar",
"%1$s commented" : "%1$s comentados",
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"]
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

+ 0
- 1
apps/comments/l10n/es_AR.json View File

@@ -13,7 +13,6 @@
"No comments yet, start the conversation!" : "No hay comentarios aún, iniciar la conversación!",
"Retry" : "Reintentar",
"Comment" : "Comentar",
"%1$s commented" : "%1$s comentados",
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"]
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

+ 0
- 1
apps/comments/l10n/es_CO.js View File

@@ -15,7 +15,6 @@ OC.L10N.register(
"Retry" : "Reintentar",
"Comment" : "Comentario",
"Comment deleted" : "Comentario borrado",
"%1$s commented" : "%1$s comentó",
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"]
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

+ 0
- 1
apps/comments/l10n/es_CO.json View File

@@ -13,7 +13,6 @@
"Retry" : "Reintentar",
"Comment" : "Comentario",
"Comment deleted" : "Comentario borrado",
"%1$s commented" : "%1$s comentó",
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"]
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

+ 0
- 1
apps/comments/l10n/es_EC.js View File

@@ -27,7 +27,6 @@ OC.L10N.register(
"Comment deleted" : "Comentario eliminado",
"An error occurred while trying to delete the comment" : "Ocurrió un error al intentar eliminar el comentario",
"An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario",
"%1$s commented" : "%1$s comentó",
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"]
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

+ 0
- 1
apps/comments/l10n/es_EC.json View File

@@ -25,7 +25,6 @@
"Comment deleted" : "Comentario eliminado",
"An error occurred while trying to delete the comment" : "Ocurrió un error al intentar eliminar el comentario",
"An error occurred while trying to create the comment" : "Ocurrió un error al intentar crear el comentario",
"%1$s commented" : "%1$s comentó",
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"]
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

+ 0
- 1
apps/comments/l10n/es_MX.js View File

@@ -15,7 +15,6 @@ OC.L10N.register(
"No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
"Retry" : "Reintentar",
"Comment" : "Comentario",
"%1$s commented" : "%1$s comentó",
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"]
},
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

+ 0
- 1
apps/comments/l10n/es_MX.json View File

@@ -13,7 +13,6 @@
"No comments yet, start the conversation!" : "¡Aún no hay comentarios, inicia la conversación!",
"Retry" : "Reintentar",
"Comment" : "Comentario",
"%1$s commented" : "%1$s comentó",
"_%n unread comment_::_%n unread comments_" : ["%n comentarios sin leer","%n comentarios sin leer","%n comentarios sin leer"]
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

+ 0
- 1
apps/comments/l10n/et_EE.js View File

@@ -27,7 +27,6 @@ OC.L10N.register(
"Comment deleted" : "Kommentaar kustutatud",
"An error occurred while trying to delete the comment" : "Kommentaari kustutamisel tekkis tõrge",
"An error occurred while trying to create the comment" : "Kommentaari lisamisel tekkis tõrge",
"%1$s commented" : "%1$s kommenteeris",
"_%n unread comment_::_%n unread comments_" : ["%n lugemata kommentaar","%n lugemata kommentaari"]
},
"nplurals=2; plural=(n != 1);");

+ 0
- 1
apps/comments/l10n/et_EE.json View File

@@ -25,7 +25,6 @@
"Comment deleted" : "Kommentaar kustutatud",
"An error occurred while trying to delete the comment" : "Kommentaari kustutamisel tekkis tõrge",
"An error occurred while trying to create the comment" : "Kommentaari lisamisel tekkis tõrge",
"%1$s commented" : "%1$s kommenteeris",
"_%n unread comment_::_%n unread comments_" : ["%n lugemata kommentaar","%n lugemata kommentaari"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

+ 2
- 2
apps/comments/l10n/eu.js View File

@@ -16,7 +16,8 @@ OC.L10N.register(
"Delete comment" : "Ezabatu iruzkina",
"Cancel edit" : "Utzi editatzeari",
"Post comment" : "Argitaratu iruzkina",
"\"@\" for mentions, \":\" for emoji, \"/\" for smart picker" : "\"@\" aipamenetarako, \":\" emojientzako, \"/\" hautatzaile adimentsurako",
"@ for mentions, : for emoji, / for smart picker" : "@ aipamenetarako, : emojientzako, / hautatzaile adimentsurako",
"Could not reload comments" : "Ezin izan dira iruzkinak freskatu",
"No comments yet, start the conversation!" : "Oraindik ez dago iruzkinik, izan zaitez lehena zerbait esanez!",
"No more messages" : "Ez da mezu gehiagorik",
"Retry" : "Saiatu berriro",
@@ -28,7 +29,6 @@ OC.L10N.register(
"Comment deleted" : "Iruzkina ezabatu da",
"An error occurred while trying to delete the comment" : "Errorea gertatu da iruzkina ezabatzen saiatzean",
"An error occurred while trying to create the comment" : "Errorea gertatu da iruzkina sortzen saiatzean",
"%1$s commented" : "%1$s-(e)k iruzkindu du",
"_%n unread comment_::_%n unread comments_" : ["iruzkin %n irakurri gabe","%n iruzkin irakurri gabe"]
},
"nplurals=2; plural=(n != 1);");

+ 2
- 2
apps/comments/l10n/eu.json View File

@@ -14,7 +14,8 @@
"Delete comment" : "Ezabatu iruzkina",
"Cancel edit" : "Utzi editatzeari",
"Post comment" : "Argitaratu iruzkina",
"\"@\" for mentions, \":\" for emoji, \"/\" for smart picker" : "\"@\" aipamenetarako, \":\" emojientzako, \"/\" hautatzaile adimentsurako",
"@ for mentions, : for emoji, / for smart picker" : "@ aipamenetarako, : emojientzako, / hautatzaile adimentsurako",
"Could not reload comments" : "Ezin izan dira iruzkinak freskatu",
"No comments yet, start the conversation!" : "Oraindik ez dago iruzkinik, izan zaitez lehena zerbait esanez!",
"No more messages" : "Ez da mezu gehiagorik",
"Retry" : "Saiatu berriro",
@@ -26,7 +27,6 @@
"Comment deleted" : "Iruzkina ezabatu da",
"An error occurred while trying to delete the comment" : "Errorea gertatu da iruzkina ezabatzen saiatzean",
"An error occurred while trying to create the comment" : "Errorea gertatu da iruzkina sortzen saiatzean",
"%1$s commented" : "%1$s-(e)k iruzkindu du",
"_%n unread comment_::_%n unread comments_" : ["iruzkin %n irakurri gabe","%n iruzkin irakurri gabe"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

+ 0
- 1
apps/comments/l10n/fa.js View File

@@ -27,7 +27,6 @@ OC.L10N.register(
"Comment deleted" : "توضیح حذف",
"An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment",
"An error occurred while trying to create the comment" : "An error occurred while trying to create the comment",
"%1$s commented" : "%1$s commented",
"_%n unread comment_::_%n unread comments_" : ["%n unread comment","%n unread comments"]
},
"nplurals=2; plural=(n > 1);");

+ 0
- 1
apps/comments/l10n/fa.json View File

@@ -25,7 +25,6 @@
"Comment deleted" : "توضیح حذف",
"An error occurred while trying to delete the comment" : "An error occurred while trying to delete the comment",
"An error occurred while trying to create the comment" : "An error occurred while trying to create the comment",
"%1$s commented" : "%1$s commented",
"_%n unread comment_::_%n unread comments_" : ["%n unread comment","%n unread comments"]
},"pluralForm" :"nplurals=2; plural=(n > 1);"
}

+ 0
- 1
apps/comments/l10n/fi.js View File

@@ -25,7 +25,6 @@ OC.L10N.register(
"Comment deleted" : "Kommentti poistettu",
"An error occurred while trying to delete the comment" : "Kommenttia poistaessa tapahtui virhe",
"An error occurred while trying to create the comment" : "Kommenttia luodessa tapahtui virhe",
"%1$s commented" : "%1$s kommentoi",
"_%n unread comment_::_%n unread comments_" : ["%n lukematon kommentti","%n lukematonta kommenttia"]
},
"nplurals=2; plural=(n != 1);");

+ 0
- 1
apps/comments/l10n/fi.json View File

@@ -23,7 +23,6 @@
"Comment deleted" : "Kommentti poistettu",
"An error occurred while trying to delete the comment" : "Kommenttia poistaessa tapahtui virhe",
"An error occurred while trying to create the comment" : "Kommenttia luodessa tapahtui virhe",
"%1$s commented" : "%1$s kommentoi",
"_%n unread comment_::_%n unread comments_" : ["%n lukematon kommentti","%n lukematonta kommenttia"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

+ 2
- 2
apps/comments/l10n/fr.js View File

@@ -16,7 +16,8 @@ OC.L10N.register(
"Delete comment" : "Supprimer le commentaire",
"Cancel edit" : "Annuler les modifications",
"Post comment" : "Publier le commentaire",
"\"@\" for mentions, \":\" for emoji, \"/\" for smart picker" : "\"@\" pour les mentions, \":\" pour les émojis, \"/\" pour le sélecteur intelligent",
"@ for mentions, : for emoji, / for smart picker" : "@ pour les mentions, : pour les émojis, / pour le sélecteur intelligent",
"Could not reload comments" : "Impossible de rafraichir les commentaires",
"No comments yet, start the conversation!" : "Il n'y a aucun commentaire, démarrez la conversation !",
"No more messages" : "Aucun autre message",
"Retry" : "Réessayer",
@@ -28,7 +29,6 @@ OC.L10N.register(
"Comment deleted" : "Commentaire supprimé",
"An error occurred while trying to delete the comment" : "Une erreur s'est produite lors de la tentative de suppression du commentaire",
"An error occurred while trying to create the comment" : "Une erreur s'est produite lors de la tentative de création du commentaire",
"%1$s commented" : "%1$s a commenté",
"_%n unread comment_::_%n unread comments_" : ["%n commentaire non lu","%n commentaires non lus","%n commentaires non lus"]
},
"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");

+ 2
- 2
apps/comments/l10n/fr.json View File

@@ -14,7 +14,8 @@
"Delete comment" : "Supprimer le commentaire",
"Cancel edit" : "Annuler les modifications",
"Post comment" : "Publier le commentaire",
"\"@\" for mentions, \":\" for emoji, \"/\" for smart picker" : "\"@\" pour les mentions, \":\" pour les émojis, \"/\" pour le sélecteur intelligent",
"@ for mentions, : for emoji, / for smart picker" : "@ pour les mentions, : pour les émojis, / pour le sélecteur intelligent",
"Could not reload comments" : "Impossible de rafraichir les commentaires",
"No comments yet, start the conversation!" : "Il n'y a aucun commentaire, démarrez la conversation !",
"No more messages" : "Aucun autre message",
"Retry" : "Réessayer",
@@ -26,7 +27,6 @@
"Comment deleted" : "Commentaire supprimé",
"An error occurred while trying to delete the comment" : "Une erreur s'est produite lors de la tentative de suppression du commentaire",
"An error occurred while trying to create the comment" : "Une erreur s'est produite lors de la tentative de création du commentaire",
"%1$s commented" : "%1$s a commenté",
"_%n unread comment_::_%n unread comments_" : ["%n commentaire non lu","%n commentaires non lus","%n commentaires non lus"]
},"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
}

+ 2
- 1
apps/comments/l10n/gl.js View File

@@ -16,6 +16,8 @@ OC.L10N.register(
"Delete comment" : "Eliminar comentario",
"Cancel edit" : "Cancelar a edición",
"Post comment" : "Publicar comentario",
"@ for mentions, : for emoji, / for smart picker" : "@ para mencións, : para «emoji», / para selector intelixente",
"Could not reload comments" : "Non foi posíbel volver cargar os comentarios",
"No comments yet, start the conversation!" : "Aínda non hai comentarios, comeza a conversa!",
"No more messages" : "Non hai máis mensaxes",
"Retry" : "Tentar de novo",
@@ -27,7 +29,6 @@ OC.L10N.register(
"Comment deleted" : "Comentario eliminado",
"An error occurred while trying to delete the comment" : "Produciuse un erro cando tentaba eliminar o comentario",
"An error occurred while trying to create the comment" : "Produciuse un erro cando tentaba crear o comentario",
"%1$s commented" : "%1$s comentados",
"_%n unread comment_::_%n unread comments_" : ["%n comentario sen ler","%n comentarios sen ler"]
},
"nplurals=2; plural=(n != 1);");

+ 2
- 1
apps/comments/l10n/gl.json View File

@@ -14,6 +14,8 @@
"Delete comment" : "Eliminar comentario",
"Cancel edit" : "Cancelar a edición",
"Post comment" : "Publicar comentario",
"@ for mentions, : for emoji, / for smart picker" : "@ para mencións, : para «emoji», / para selector intelixente",
"Could not reload comments" : "Non foi posíbel volver cargar os comentarios",
"No comments yet, start the conversation!" : "Aínda non hai comentarios, comeza a conversa!",
"No more messages" : "Non hai máis mensaxes",
"Retry" : "Tentar de novo",
@@ -25,7 +27,6 @@
"Comment deleted" : "Comentario eliminado",
"An error occurred while trying to delete the comment" : "Produciuse un erro cando tentaba eliminar o comentario",
"An error occurred while trying to create the comment" : "Produciuse un erro cando tentaba crear o comentario",
"%1$s commented" : "%1$s comentados",
"_%n unread comment_::_%n unread comments_" : ["%n comentario sen ler","%n comentarios sen ler"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

+ 0
- 1
apps/comments/l10n/he.js View File

@@ -26,7 +26,6 @@ OC.L10N.register(
"Comment deleted" : "נמחקה הערה",
"An error occurred while trying to delete the comment" : "אירעה שגיאה בניסיון למחוק את התגובה",
"An error occurred while trying to create the comment" : "אירעה שגיאה בניסיון ליצור את התגובה",
"%1$s commented" : "התקבלו תגובות %1$s",
"_%n unread comment_::_%n unread comments_" : ["תגובה אחת שלא נקראה","%n תגובות שלא נקראו","%n תגובות שלא נקראו","%n תגובות שלא נקראו"]
},
"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;");

+ 0
- 1
apps/comments/l10n/he.json View File

@@ -24,7 +24,6 @@
"Comment deleted" : "נמחקה הערה",
"An error occurred while trying to delete the comment" : "אירעה שגיאה בניסיון למחוק את התגובה",
"An error occurred while trying to create the comment" : "אירעה שגיאה בניסיון ליצור את התגובה",
"%1$s commented" : "התקבלו תגובות %1$s",
"_%n unread comment_::_%n unread comments_" : ["תגובה אחת שלא נקראה","%n תגובות שלא נקראו","%n תגובות שלא נקראו","%n תגובות שלא נקראו"]
},"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;"
}

+ 0
- 1
apps/comments/l10n/hr.js View File

@@ -24,7 +24,6 @@ OC.L10N.register(
"Comment deleted" : "Komentar izbrisan",
"An error occurred while trying to delete the comment" : "Došlo je do pogreške prilikom brisanja komentara",
"An error occurred while trying to create the comment" : "Došlo je do pogreške prilikom stvaranja komentara",
"%1$s commented" : "Komentirao je %1$s",
"_%n unread comment_::_%n unread comments_" : ["%n nepročitani komentar","%n nepročitanih komentara","%n nepročitanih komentara"]
},
"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;");

+ 0
- 1
apps/comments/l10n/hr.json View File

@@ -22,7 +22,6 @@
"Comment deleted" : "Komentar izbrisan",
"An error occurred while trying to delete the comment" : "Došlo je do pogreške prilikom brisanja komentara",
"An error occurred while trying to create the comment" : "Došlo je do pogreške prilikom stvaranja komentara",
"%1$s commented" : "Komentirao je %1$s",
"_%n unread comment_::_%n unread comments_" : ["%n nepročitani komentar","%n nepročitanih komentara","%n nepročitanih komentara"]
},"pluralForm" :"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;"
}

+ 2
- 2
apps/comments/l10n/hu.js View File

@@ -16,7 +16,8 @@ OC.L10N.register(
"Delete comment" : "Hozzászólás törlése",
"Cancel edit" : "Változások elvetése",
"Post comment" : "Hozzászólás közzététele",
"\"@\" for mentions, \":\" for emoji, \"/\" for smart picker" : "„@” az említésekhez, „:” az emodzsikhoz, „/” az okos választához",
"@ for mentions, : for emoji, / for smart picker" : "@ az említésekhez, : az emodzsikhoz, / az okos választóhoz",
"Could not reload comments" : "Nem sikerült a megjegyzések újratöltése.",
"No comments yet, start the conversation!" : "Még nincsenek hozzászólások, kezdje el a beszélgetést!",
"No more messages" : "Nincs több üzenet",
"Retry" : "Újra",
@@ -28,7 +29,6 @@ OC.L10N.register(
"Comment deleted" : "Hozzászólás törölve",
"An error occurred while trying to delete the comment" : "Hiba történt a megjegyzés törlése közben",
"An error occurred while trying to create the comment" : "Hiba történt a megjegyzés létrehozása közben",
"%1$s commented" : "%1$s hozzászólt",
"_%n unread comment_::_%n unread comments_" : ["%n olvasatlan hozzászólás","%n olvasatlan hozzászólás"]
},
"nplurals=2; plural=(n != 1);");

+ 2
- 2
apps/comments/l10n/hu.json View File

@@ -14,7 +14,8 @@
"Delete comment" : "Hozzászólás törlése",
"Cancel edit" : "Változások elvetése",
"Post comment" : "Hozzászólás közzététele",
"\"@\" for mentions, \":\" for emoji, \"/\" for smart picker" : "„@” az említésekhez, „:” az emodzsikhoz, „/” az okos választához",
"@ for mentions, : for emoji, / for smart picker" : "@ az említésekhez, : az emodzsikhoz, / az okos választóhoz",
"Could not reload comments" : "Nem sikerült a megjegyzések újratöltése.",
"No comments yet, start the conversation!" : "Még nincsenek hozzászólások, kezdje el a beszélgetést!",
"No more messages" : "Nincs több üzenet",
"Retry" : "Újra",
@@ -26,7 +27,6 @@
"Comment deleted" : "Hozzászólás törölve",
"An error occurred while trying to delete the comment" : "Hiba történt a megjegyzés törlése közben",
"An error occurred while trying to create the comment" : "Hiba történt a megjegyzés létrehozása közben",
"%1$s commented" : "%1$s hozzászólt",
"_%n unread comment_::_%n unread comments_" : ["%n olvasatlan hozzászólás","%n olvasatlan hozzászólás"]
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

+ 0
- 1
apps/comments/l10n/id.js View File

@@ -26,7 +26,6 @@ OC.L10N.register(
"Comment deleted" : "Komentar dihapus",
"An error occurred while trying to delete the comment" : "Terjadi kesalahan ketika mencoba untuk menghapus komentar",
"An error occurred while trying to create the comment" : "Terjadi kesalahan ketika mencoba untuk membuat komentar",
"%1$s commented" : "%1$s dikomentari",
"_%n unread comment_::_%n unread comments_" : ["%nkomentar belum dibaca"]
},
"nplurals=1; plural=0;");

+ 0
- 1
apps/comments/l10n/id.json View File

@@ -24,7 +24,6 @@
"Comment deleted" : "Komentar dihapus",
"An error occurred while trying to delete the comment" : "Terjadi kesalahan ketika mencoba untuk menghapus komentar",
"An error occurred while trying to create the comment" : "Terjadi kesalahan ketika mencoba untuk membuat komentar",
"%1$s commented" : "%1$s dikomentari",
"_%n unread comment_::_%n unread comments_" : ["%nkomentar belum dibaca"]
},"pluralForm" :"nplurals=1; plural=0;"
}

+ 5
- 1
apps/comments/l10n/is.js View File

@@ -9,14 +9,19 @@ OC.L10N.register(
"%1$s commented on %2$s" : "%1$s setti inn athugasemd um %2$s",
"{author} commented on {file}" : "{author} setti inn athugasemd við {file}",
"<strong>Comments</strong> for files" : "<strong>Athugasemdir</strong> við skrár",
"You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Minnst var á þig í \"{file}\", í athugasemd frá notanda sem síðan þá hefur verið eytt",
"{user} mentioned you in a comment on \"{file}\"" : "{user} minntist á þig í athugasemd við \"{file}\"",
"Files app plugin to add comments to files" : "Viðbót við skráaforrit til að bæta athugasemdum við skrár",
"Edit comment" : "Breyta athugasemd",
"Delete comment" : "Eyða athugasemd",
"Cancel edit" : "Hætta við breytingar",
"Post comment" : "Senda inn athugasemd",
"@ for mentions, : for emoji, / for smart picker" : "@ til að minnast á, : fyrir tjáningartákn, / fyrir snjallveljara",
"Could not reload comments" : "Gat ekki endurlesið athugasemdir",
"No comments yet, start the conversation!" : "Engar athugasemdir ennþá, byrjaðu umræðuna!",
"No more messages" : "Engin fleiri skilaboð",
"Retry" : "Reyna aftur",
"Failed to mark comments as read" : "Tókst ekki að merkja athugasemdir sem lesnar",
"Unable to load the comments list" : "Gat ekki hlaðið inn lista yfir athugasemdir",
"_1 new comment_::_{unread} new comments_" : ["1 ný athugasemd","{unread} nýjar athugasemdir"],
"Comment" : "Athugasemd",
@@ -24,7 +29,6 @@ OC.L10N.register(
"Comment deleted" : "Athugasemd var eytt",
"An error occurred while trying to delete the comment" : "Villa átti sér stað við að eyða athugasemdinni",
"An error occurred while trying to create the comment" : "Villa átti sér stað við að útbúa athugasemdina",
"%1$s commented" : "%1$s setti inn athugasemd",
"_%n unread comment_::_%n unread comments_" : ["%n ólesin athugasemd","%n ólesnar athugasemdir"]
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");

+ 0
- 0
apps/comments/l10n/is.json View File


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

Loading…
Cancel
Save