Compare commits

..

38 Commits

Author SHA1 Message Date
Julius Härtl
3c407c06ff Merge pull request #4771 from nextcloud/release/1.10.0 2023-06-12 10:53:33 +02:00
Julius Härtl
febd4b1a0b Merge pull request #4800 from nextcloud/automated/noid/stable27-fix-npm-audit 2023-06-12 09:12:54 +02:00
nextcloud-command
12c3e476f9 chore(deps): fix npm audit
Signed-off-by: GitHub <noreply@github.com>
2023-06-11 03:36:39 +00:00
Nextcloud bot
ec8c782b5a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-11 00:52:40 +00:00
Julius Härtl
0575926692 Merge pull request #4781 from nextcloud/dependabot/npm_and_yarn/stable27/url-search-params-polyfill-8.2.3 2023-06-10 12:48:48 +02:00
dependabot[bot]
617671c004 Merge pull request #4792 from nextcloud/dependabot/npm_and_yarn/stable27/cypress-12.14.0 2023-06-10 04:58:49 +00:00
dependabot[bot]
2f9cf4df37 Merge pull request #4778 from nextcloud/dependabot/npm_and_yarn/stable27/vue/test-utils-1.3.6 2023-06-10 03:43:39 +00:00
dependabot[bot]
7e5e0e2814 Chore(deps-dev): Bump cypress from 12.13.0 to 12.14.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.13.0 to 12.14.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.13.0...v12.14.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-10 03:28:13 +00:00
dependabot[bot]
dd09c2ad69 Merge pull request #4783 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/vue-7.12.0 2023-06-10 03:21:26 +00:00
dependabot[bot]
87dfdd62d4 Chore(deps): Bump @nextcloud/vue from 7.11.6 to 7.12.0
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.11.6 to 7.12.0.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-vue/blob/v7.12.0/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.11.6...v7.12.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-10 03:02:09 +00:00
dependabot[bot]
bd77b12f9b Chore(deps): Bump url-search-params-polyfill from 8.2.2 to 8.2.3
Bumps [url-search-params-polyfill](https://github.com/jerrybendy/url-search-params-polyfill) from 8.2.2 to 8.2.3.
- [Release notes](https://github.com/jerrybendy/url-search-params-polyfill/releases)
- [Commits](https://github.com/jerrybendy/url-search-params-polyfill/commits)

---
updated-dependencies:
- dependency-name: url-search-params-polyfill
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-10 01:57:56 +00:00
dependabot[bot]
b861f2b1cd Chore(deps-dev): Bump @vue/test-utils from 1.3.5 to 1.3.6
Bumps [@vue/test-utils](https://github.com/vuejs/test-utils) from 1.3.5 to 1.3.6.
- [Release notes](https://github.com/vuejs/test-utils/releases)
- [Commits](https://github.com/vuejs/test-utils/commits)

---
updated-dependencies:
- dependency-name: "@vue/test-utils"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-10 01:57:50 +00:00
Julius Härtl
8cf3853387 Merge pull request #4773 from nextcloud/backport/4765/stable27 2023-06-09 17:44:21 +02:00
Git'Fellow
313b5b0e15 Ensure boardId is an integer
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
2023-06-09 07:43:11 +00:00
Julius Härtl
7c81c7237b chore(release): Bump version to 1.10.0
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-06-09 09:31:18 +02:00
dependabot[bot]
82eb262433 Merge pull request #4756 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.22.3 2023-06-03 03:41:37 +00:00
dependabot[bot]
5ba5eb89b2 Merge pull request #4758 from nextcloud/dependabot/npm_and_yarn/stable27/url-search-params-polyfill-8.2.2 2023-06-03 03:21:04 +00:00
dependabot[bot]
b714be7829 Chore(deps): Bump url-search-params-polyfill from 8.1.1 to 8.2.2
Bumps [url-search-params-polyfill](https://github.com/jerrybendy/url-search-params-polyfill) from 8.1.1 to 8.2.2.
- [Release notes](https://github.com/jerrybendy/url-search-params-polyfill/releases)
- [Commits](https://github.com/jerrybendy/url-search-params-polyfill/commits)

---
updated-dependencies:
- dependency-name: url-search-params-polyfill
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-03 01:58:05 +00:00
dependabot[bot]
36e66e4345 Chore(deps): Bump @babel/runtime from 7.22.0 to 7.22.3
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.22.0 to 7.22.3.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.22.3/packages/babel-runtime)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-03 01:57:51 +00:00
Nextcloud bot
542c70eac1 Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-06-03 00:31:46 +00:00
Julius Härtl
f54722cd5a Merge pull request #4736 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/auth-2.1.0 2023-05-30 10:55:55 +02:00
dependabot[bot]
5c29392428 Merge pull request #4738 from nextcloud/dependabot/npm_and_yarn/stable27/babel/runtime-7.22.0 2023-05-27 06:50:57 +00:00
dependabot[bot]
b8071def95 Merge pull request #4733 from nextcloud/dependabot/npm_and_yarn/stable27/cypress-12.13.0 2023-05-27 03:17:23 +00:00
dependabot[bot]
fba6dc0a45 Chore(deps): Bump @babel/runtime from 7.21.5 to 7.22.0
Bumps [@babel/runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-runtime) from 7.21.5 to 7.22.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.22.0/packages/babel-runtime)

---
updated-dependencies:
- dependency-name: "@babel/runtime"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-27 03:11:38 +00:00
dependabot[bot]
536029e6c6 Chore(deps): Bump @nextcloud/auth from 2.0.0 to 2.1.0
Bumps [@nextcloud/auth](https://github.com/nextcloud/nextcloud-auth) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/nextcloud/nextcloud-auth/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-auth/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-auth/compare/v2.0.0...v2.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-27 01:58:05 +00:00
dependabot[bot]
77b81f4686 Chore(deps-dev): Bump cypress from 12.12.0 to 12.13.0
Bumps [cypress](https://github.com/cypress-io/cypress) from 12.12.0 to 12.13.0.
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v12.12.0...v12.13.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-27 01:57:49 +00:00
Nextcloud bot
7ba4b2617a Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2023-05-27 00:32:23 +00:00
Julius Härtl
56e9d5ceb4 Merge pull request #4720 from nextcloud/backport/4688/stable27 2023-05-22 22:36:36 +02:00
Julius Härtl
bb569f7df7 Bump version to 1.10.0-beta.2
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-22 10:36:42 +02:00
Julius Härtl
4060c7a14a chore(webpack): Remove outdated config for hmr
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-22 08:04:51 +00:00
Julius Härtl
4cebac2306 chore(webpack): Move to shared code for entrypoints and use webpack serve public path
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-22 08:04:51 +00:00
Julius Härtl
2fd8cab627 chore(webpack): Add npm run serve command
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2023-05-22 08:04:51 +00:00
dependabot[bot]
4921f3dd62 Merge pull request #4700 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/vue-7.11.6 2023-05-17 21:39:16 +00:00
dependabot[bot]
a268d428bf Merge pull request #4695 from nextcloud/dependabot/npm_and_yarn/stable27/nextcloud/event-bus-3.1.0 2023-05-17 21:34:45 +00:00
dependabot[bot]
ab11f47afa Chore(deps): Bump @nextcloud/vue from 7.11.4 to 7.11.6
Bumps [@nextcloud/vue](https://github.com/nextcloud/nextcloud-vue) from 7.11.4 to 7.11.6.
- [Release notes](https://github.com/nextcloud/nextcloud-vue/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-vue/blob/v7.11.6/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-vue/compare/v7.11.4...v7.11.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-17 18:11:38 +00:00
dependabot[bot]
0751f604ec Chore(deps): Bump @nextcloud/event-bus from 3.0.2 to 3.1.0
Bumps [@nextcloud/event-bus](https://github.com/nextcloud/nextcloud-event-bus) from 3.0.2 to 3.1.0.
- [Release notes](https://github.com/nextcloud/nextcloud-event-bus/releases)
- [Changelog](https://github.com/nextcloud/nextcloud-event-bus/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nextcloud/nextcloud-event-bus/compare/v3.0.2...v3.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-17 18:11:13 +00:00
Julius Härtl
c2aec9f312 Merge pull request #4691 from nextcloud/update-stable27-target-versions 2023-05-17 20:10:22 +02:00
Joas Schilling
04e9373c58 chore(CI): Adjust testing matrix for Nextcloud 27 on stable27
Signed-off-by: Joas Schilling <coding@schilljs.com>
2023-05-17 13:48:54 +02:00
94 changed files with 34092 additions and 34242 deletions

View File

@@ -12,40 +12,6 @@ updates:
reviewers: reviewers:
- juliushaertl - juliushaertl
- package-ecosystem: npm
target-branch: stable27
versioning-strategy: lockfile-only
directory: "/"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-major"]
open-pull-requests-limit: 30
labels:
- 3. to review
- dependencies
- package-ecosystem: npm
target-branch: stable26
versioning-strategy: lockfile-only
directory: "/"
schedule:
interval: weekly
day: saturday
time: "03:00"
timezone: Europe/Paris
ignore:
- dependency-name: "*"
update-types: ["version-update:semver-major"]
open-pull-requests-limit: 30
labels:
- 3. to review
- dependencies
- package-ecosystem: npm - package-ecosystem: npm
target-branch: stable25 target-branch: stable25
versioning-strategy: lockfile-only versioning-strategy: lockfile-only

View File

@@ -24,7 +24,7 @@ jobs:
- name: Set up npm7 - name: Set up npm7
run: npm i -g npm@7 run: npm i -g npm@7
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@2.25.4 uses: shivammathur/setup-php@2.25.1
with: with:
php-version: '7.4' php-version: '7.4'
tools: composer tools: composer

View File

@@ -32,7 +32,7 @@ jobs:
echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
- name: Checkout - name: Checkout
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
with: with:
path: ${{ env.APP_NAME }} path: ${{ env.APP_NAME }}
@@ -44,7 +44,7 @@ jobs:
expression: "//info//dependencies//nextcloud/@min-version" expression: "//info//dependencies//nextcloud/@min-version"
- name: Read package.json node and npm engines version - name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2 uses: skjnldsv/read-package-engines-version-actions@0ce2ed60f6df073a62a77c0a4958dd0fc68e32e7 # v2.1
id: versions id: versions
# Continue if no package.json # Continue if no package.json
continue-on-error: true continue-on-error: true
@@ -56,7 +56,7 @@ jobs:
- name: Set up node ${{ steps.versions.outputs.nodeVersion }} - name: Set up node ${{ steps.versions.outputs.nodeVersion }}
# Skip if no package.json # Skip if no package.json
if: ${{ steps.versions.outputs.nodeVersion }} if: ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3 uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # v3
with: with:
node-version: ${{ steps.versions.outputs.nodeVersion }} node-version: ${{ steps.versions.outputs.nodeVersion }}
@@ -66,7 +66,7 @@ jobs:
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}" run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
- name: Set up php ${{ env.PHP_VERSION }} - name: Set up php ${{ env.PHP_VERSION }}
uses: shivammathur/setup-php@2.25.4 # v2 uses: shivammathur/setup-php@2.25.1 # v2
with: with:
php-version: ${{ env.PHP_VERSION }} php-version: ${{ env.PHP_VERSION }}
coverage: none coverage: none
@@ -126,10 +126,9 @@ jobs:
unzip latest-$NCVERSION.zip unzip latest-$NCVERSION.zip
- name: Checkout server master fallback - name: Checkout server master fallback
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
if: ${{ steps.server-checkout.outcome != 'success' }} if: ${{ steps.server-checkout.outcome != 'success' }}
with: with:
submodules: true
repository: nextcloud/server repository: nextcloud/server
path: nextcloud path: nextcloud
@@ -149,7 +148,7 @@ jobs:
tar -zcvf ${{ env.APP_NAME }}.tar.gz ${{ env.APP_NAME }} tar -zcvf ${{ env.APP_NAME }}.tar.gz ${{ env.APP_NAME }}
- name: Attach tarball to github release - name: Attach tarball to github release
uses: svenstaro/upload-release-action@2b9d2847a97b04d02ad5c3df2d3a27baa97ce689 # v2 uses: svenstaro/upload-release-action@7319e4733ec7a184d739a6f412c40ffc339b69c7 # v2
id: attach_to_release id: attach_to_release
with: with:
repo_token: ${{ secrets.GITHUB_TOKEN }} repo_token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -23,7 +23,7 @@ jobs:
steps: steps:
- name: Add reaction on start - name: Add reaction on start
uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.2 uses: peter-evans/create-or-update-comment@ca08ebd5dc95aa0cd97021e9708fcd6b87138c9b # v3.0.1
with: with:
token: ${{ secrets.COMMAND_BOT_PAT }} token: ${{ secrets.COMMAND_BOT_PAT }}
repository: ${{ github.event.repository.full_name }} repository: ${{ github.event.repository.full_name }}
@@ -31,18 +31,18 @@ jobs:
reaction-type: "+1" reaction-type: "+1"
- name: Checkout the latest code - name: Checkout the latest code
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
with: with:
fetch-depth: 0 fetch-depth: 0
token: ${{ secrets.COMMAND_BOT_PAT }} token: ${{ secrets.COMMAND_BOT_PAT }}
- name: Automatic Rebase - name: Automatic Rebase
uses: cirrus-actions/rebase@b87d48154a87a85666003575337e27b8cd65f691 # 1.8 uses: cirrus-actions/rebase@6e572f08c244e2f04f9beb85a943eb618218714d # 1.7
env: env:
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }} GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
- name: Add reaction on failure - name: Add reaction on failure
uses: peter-evans/create-or-update-comment@c6c9a1a66007646a28c153e2a8580a5bad27bcfa # v3.0.2 uses: peter-evans/create-or-update-comment@ca08ebd5dc95aa0cd97021e9708fcd6b87138c9b # v3.0.1
if: failure() if: failure()
with: with:
token: ${{ secrets.COMMAND_BOT_PAT }} token: ${{ secrets.COMMAND_BOT_PAT }}

View File

@@ -5,142 +5,120 @@ on:
push: push:
branches: branches:
- main - main
- master
- stable* - stable*
env: env:
# Adjust APP_NAME if your repository name is different APP_NAME: deck
APP_NAME: ${{ github.event.repository.name }} CYPRESS_baseUrl: http://localhost:8081/index.php
# This represents the server branch to checkout.
# Usually it's the base branch of the PR, but for pushes it's the branch itself.
# e.g. 'main', 'stable27' or 'feature/my-feature
# n.b. server will use head_ref, as we want to test the PR branch.
BRANCH: ${{ github.base_ref || github.ref_name }}
jobs: jobs:
init:
runs-on: ubuntu-latest
outputs:
nodeVersion: ${{ steps.versions.outputs.nodeVersion }}
npmVersion: ${{ steps.versions.outputs.npmVersion }}
steps:
- name: Checkout app
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
- name: Check composer.json
id: check_composer
uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2
with:
files: "composer.json"
- name: Install composer dependencies
if: steps.check_composer.outputs.files_exists == 'true'
run: composer install --no-dev
- name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@0ce2ed60f6df073a62a77c0a4958dd0fc68e32e7 # v2.1
id: versions
with:
fallbackNode: "^20"
fallbackNpm: "^9"
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
with:
node-version: ${{ steps.versions.outputs.nodeVersion }}
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
- name: Install node dependencies & build app
run: |
npm ci
TESTING=true npm run build --if-present
- name: Save context
uses: buildjet/cache/save@e376f15c6ec6dc595375c78633174c7e5f92dc0e # v3
with:
key: cypress-context-${{ github.run_id }}
path: ./
cypress: cypress:
runs-on: ubuntu-latest runs-on: ubuntu-latest
needs: init
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
# Run multiple copies of the current job in parallel node-version: [14.x]
# Please increase the number or runners as your tests suite grows # containers: [1, 2, 3]
containers: ["component", 1, 2, 3] php-versions: [ '8.0' ]
databases: [ 'sqlite' ]
name: runner ${{ matrix.containers }} server-versions: [ 'stable27' ]
steps: steps:
- name: Restore context - name: Use Node.js ${{ matrix.node-version }}
uses: buildjet/cache/restore@e376f15c6ec6dc595375c78633174c7e5f92dc0e # v3 uses: actions/setup-node@v3
with: with:
fail-on-cache-miss: true node-version: ${{ matrix.node-version }}
key: cypress-context-${{ github.run_id }} - name: Set up npm7
path: ./ run: npm i -g npm@7
- name: Set up node ${{ needs.init.outputs.nodeVersion }} - name: Register text Git reference
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 run: |
text_app_ref="$(if [ "${{ matrix.server-versions }}" = "master" ]; then echo -n "main"; else echo -n "${{ matrix.server-versions }}"; fi)"
echo "text_app_ref=$text_app_ref" >> $GITHUB_ENV
- name: Checkout server
uses: actions/checkout@v3
with: with:
node-version: ${{ needs.init.outputs.nodeVersion }} repository: nextcloud/server
ref: ${{ matrix.server-versions }}
- name: Set up npm ${{ needs.init.outputs.npmVersion }} - name: Checkout submodules
run: npm i -g npm@"${{ needs.init.outputs.npmVersion }}" shell: bash
run: |
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
git submodule sync --recursive
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
- name: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }} cypress tests - name: Checkout ${{ env.APP_NAME }}
uses: cypress-io/github-action@db1693016f23ccf9043f4b2428f9b04e5d502a73 # v5.8.1 uses: actions/checkout@v3
with:
path: apps/${{ env.APP_NAME }}
- name: Checkout text
uses: actions/checkout@v3
with:
repository: nextcloud/text
ref: ${{ env.text_app_ref }}
path: apps/text
- name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.25.1
with:
php-version: ${{ matrix.php-versions }}
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, zip, gd, apcu
ini-values:
apc.enable_cli=on
coverage: none
- name: Set up Nextcloud
env:
DB_PORT: 4444
PHP_CLI_SERVER_WORKERS: 10
run: |
mkdir data
php occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
php occ config:system:set memcache.local --value="\\OC\\Memcache\\APCu"
php occ config:system:set debug --value=true --type=boolean
php -f index.php
php -S 0.0.0.0:8081 &
export OC_PASS=1234561
php occ user:add --password-from-env user1
php occ user:add --password-from-env user2
php occ app:enable deck
php occ app:list
cd apps/deck
composer install --no-dev
npm ci
npm run build
cd ../../
curl -v http://localhost:8081/index.php/login
- name: Cypress run
uses: cypress-io/github-action@v5
with: with:
record: true record: true
parallel: true parallel: false
# cypress run type wait-on: '${{ env.CYPRESS_baseUrl }}'
component: ${{ matrix.containers == 'component' }} working-directory: 'apps/${{ env.APP_NAME }}'
group: Run ${{ matrix.containers == 'component' && 'component' || 'E2E' }} config: defaultCommandTimeout=10000,video=false
# cypress env
ci-build-id: ${{ github.sha }}-${{ github.run_number }}
tag: ${{ github.event_name }}
env: env:
# Needs to be prefixed with CYPRESS_
CYPRESS_BRANCH: ${{ env.BRANCH }}
# https://github.com/cypress-io/github-action/issues/124
COMMIT_INFO_MESSAGE: ${{ github.event.pull_request.title }}
# Needed for some specific code workarounds
TESTING: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }} CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
npm_package_name: ${{ env.APP_NAME }}
- name: Upload snapshots - name: Upload test failure screenshots
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 uses: actions/upload-artifact@v3
if: always() if: failure()
with: with:
name: snapshots_${{ matrix.containers }} name: Upload screenshots
path: cypress/snapshots path: apps/${{ env.APP_NAME }}/cypress/screenshots/
retention-days: 5
- name: Extract NC logs - name: Upload nextcloud logs
if: failure() && matrix.containers != 'component' uses: actions/upload-artifact@v3
run: docker logs nextcloud-cypress-tests-${{ env.APP_NAME }} > nextcloud.log if: failure()
- name: Upload NC logs
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
if: failure() && matrix.containers != 'component'
with: with:
name: nc_logs_${{ matrix.containers }} name: Upload nextcloud log
path: nextcloud.log path: data/nextcloud.log
retention-days: 5
summary:
runs-on: ubuntu-latest
needs: [init, cypress]
if: always()
name: cypress-summary
steps:
- name: Summary status
run: if ${{ needs.init.result != 'success' || ( needs.cypress.result != 'success' && needs.cypress.result != 'skipped' ) }}; then exit 1; fi

View File

@@ -3,31 +3,31 @@
# https://github.com/nextcloud/.github # https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Block fixup and squash commits name: Pull request checks
on: on:
pull_request: pull_request:
types: [opened, ready_for_review, reopened, synchronize] types: [opened, ready_for_review, reopened, synchronize]
permissions: permissions:
contents: read contents: read
concurrency: concurrency:
group: fixup-${{ github.head_ref || github.run_id }} group: fixup-${{ github.head_ref || github.run_id }}
cancel-in-progress: true cancel-in-progress: true
jobs: jobs:
commit-message-check: commit-message-check:
if: github.event.pull_request.draft == false if: github.event.pull_request.draft == false
permissions: permissions:
pull-requests: write pull-requests: write
name: Block fixup and squash commits name: Block fixup and squash commits
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Run check - name: Run check
uses: skjnldsv/block-fixup-merge-action@42d26e1b536ce61e5cf467d65fb76caf4aa85acf # v1 uses: xt0rted/block-autosquash-commits-action@79880c36b4811fe549cfffe20233df88876024e7 # v2
with: with:
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -28,7 +28,7 @@ jobs:
matrix: matrix:
php-versions: ['8.1'] php-versions: ['8.1']
databases: ['sqlite', 'mysql', 'pgsql'] databases: ['sqlite', 'mysql', 'pgsql']
server-versions: ['master'] server-versions: ['stable27']
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }} name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
@@ -71,7 +71,7 @@ jobs:
path: apps/${{ env.APP_NAME }} path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }} - name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.25.4 uses: shivammathur/setup-php@2.25.1
with: with:
php-version: ${{ matrix.php-versions }} php-version: ${{ matrix.php-versions }}
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, mysql, pdo_mysql, pgsql, pdo_pgsql, apcu extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, mysql, pdo_mysql, pgsql, pdo_pgsql, apcu
@@ -151,4 +151,4 @@ jobs:
repo: context.repo.repo, repo: context.repo.repo,
body: comment body: comment
}) })
} }

View File

@@ -6,7 +6,7 @@
# Use lint-eslint together with lint-eslint-when-unrelated to make eslint a required check for GitHub actions # 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 # 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 name: Lint
on: on:
pull_request: pull_request:
@@ -38,17 +38,17 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- name: Read package.json node and npm engines version - name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2 uses: skjnldsv/read-package-engines-version-actions@0ce2ed60f6df073a62a77c0a4958dd0fc68e32e7 # v2.1
id: versions id: versions
with: with:
fallbackNode: '^16' fallbackNode: '^16'
fallbackNpm: '^7' fallbackNpm: '^7'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }} - name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3 uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # v3
with: with:
node-version: ${{ steps.versions.outputs.nodeVersion }} node-version: ${{ steps.versions.outputs.nodeVersion }}

View File

@@ -3,7 +3,7 @@
# https://github.com/nextcloud/.github # https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Lint php-cs name: Lint
on: pull_request on: pull_request
@@ -22,14 +22,13 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- name: Set up php - name: Set up php
uses: shivammathur/setup-php@2.25.4 # v2 uses: shivammathur/setup-php@2.25.1 # v2
with: with:
php-version: 8.1 php-version: 8.1
coverage: none coverage: none
ini-file: development
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -3,7 +3,7 @@
# https://github.com/nextcloud/.github # https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Lint php name: Lint
on: on:
pull_request: pull_request:
@@ -31,14 +31,13 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- name: Set up php ${{ matrix.php-versions }} - name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.25.4 # v2 uses: shivammathur/setup-php@2.25.1 # v2
with: with:
php-version: ${{ matrix.php-versions }} php-version: ${{ matrix.php-versions }}
coverage: none coverage: none
ini-file: development
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -3,7 +3,7 @@
# https://github.com/nextcloud/.github # https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Lint stylelint name: Lint
on: pull_request on: pull_request
@@ -22,17 +22,17 @@ jobs:
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- name: Read package.json node and npm engines version - name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2 uses: skjnldsv/read-package-engines-version-actions@0ce2ed60f6df073a62a77c0a4958dd0fc68e32e7 # v2.1
id: versions id: versions
with: with:
fallbackNode: '^16' fallbackNode: '^16'
fallbackNpm: '^7' fallbackNpm: '^7'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }} - name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3 uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # v3
with: with:
node-version: ${{ steps.versions.outputs.nodeVersion }} node-version: ${{ steps.versions.outputs.nodeVersion }}

View File

@@ -25,7 +25,7 @@ jobs:
- name: Set up npm7 - name: Set up npm7
run: npm i -g npm@7 run: npm i -g npm@7
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@2.25.4 uses: shivammathur/setup-php@2.25.1
with: with:
php-version: '7.4' php-version: '7.4'
tools: composer tools: composer

View File

@@ -3,7 +3,7 @@
# https://github.com/nextcloud/.github # https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization # https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
name: Npm audit fix and compile name: npm audit fix and compile
on: on:
workflow_dispatch: workflow_dispatch:
@@ -18,25 +18,25 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
branches: ["main", "master", "stable27", "stable26", "stable25", "stable24"] branches: ["main", "master", "stable26", "stable25", "stable24"]
name: npm-audit-fix-${{ matrix.branches }} name: npm-audit-fix-${{ matrix.branches }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
with: with:
ref: ${{ matrix.branches }} ref: ${{ matrix.branches }}
- name: Read package.json node and npm engines version - name: Read package.json node and npm engines version
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2 uses: skjnldsv/read-package-engines-version-actions@0ce2ed60f6df073a62a77c0a4958dd0fc68e32e7 # v2.1
id: versions id: versions
with: with:
fallbackNode: '^16' fallbackNode: '^16'
fallbackNpm: '^7' fallbackNpm: '^7'
- name: Set up node ${{ steps.versions.outputs.nodeVersion }} - name: Set up node ${{ steps.versions.outputs.nodeVersion }}
uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3 uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # v3
with: with:
node-version: ${{ steps.versions.outputs.nodeVersion }} node-version: ${{ steps.versions.outputs.nodeVersion }}
@@ -55,7 +55,7 @@ jobs:
- name: Create Pull Request - name: Create Pull Request
if: always() if: always()
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38 # v5 uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666 # v3
with: with:
token: ${{ secrets.COMMAND_BOT_PAT }} token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: "chore(deps): fix npm audit" commit-message: "chore(deps): fix npm audit"

View File

@@ -26,9 +26,9 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
php-versions: ['8.0', '8.1', '8.2'] php-versions: ['8.0', '8.1']
databases: ['sqlite', 'mysql', 'pgsql'] databases: ['sqlite', 'mysql', 'pgsql']
server-versions: ['master'] server-versions: ['stable27']
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }} name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
@@ -70,7 +70,7 @@ jobs:
path: apps/${{ env.APP_NAME }} path: apps/${{ env.APP_NAME }}
- name: Set up php ${{ matrix.php-versions }} - name: Set up php ${{ matrix.php-versions }}
uses: shivammathur/setup-php@2.25.4 uses: shivammathur/setup-php@2.25.1
with: with:
php-version: ${{ matrix.php-versions }} php-version: ${{ matrix.php-versions }}
tools: phpunit tools: phpunit

View File

@@ -24,14 +24,13 @@ jobs:
name: Nextcloud name: Nextcloud
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
- name: Set up php - name: Set up php
uses: shivammathur/setup-php@2.25.4 # v2 uses: shivammathur/setup-php@2.25.1 # v2
with: with:
php-version: 8.1 php-version: 8.1
coverage: none coverage: none
ini-file: development
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -17,22 +17,21 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
branches: ["main", "master", "stable27", "stable26", "stable25"] branches: ["master", "stable26", "stable25", "stable24"]
name: update-nextcloud-ocp-${{ matrix.branches }} name: update-nextcloud-ocp-${{ matrix.branches }}
steps: steps:
- uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
with: with:
ref: ${{ matrix.branches }} ref: ${{ matrix.branches }}
submodules: true submodules: true
- name: Set up php8.1 - name: Set up php8.1
uses: shivammathur/setup-php@2.25.4 # v2 uses: shivammathur/setup-php@2.25.1 # v2
with: with:
php-version: 8.1 php-version: 8.1
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
coverage: none coverage: none
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -41,33 +40,19 @@ jobs:
run: composer install run: composer install
- name: Composer update nextcloud/ocp - name: Composer update nextcloud/ocp
if: matrix.branches != 'main'
run: composer require --dev nextcloud/ocp:dev-${{ matrix.branches }} run: composer require --dev nextcloud/ocp:dev-${{ matrix.branches }}
continue-on-error: true
- name: Composer update nextcloud/ocp - name: Reset checkout dirs
if: matrix.branches == 'main'
run: composer require --dev nextcloud/ocp:dev-master
- name: Reset checkout 3rdparty
run: | run: |
git clean -f 3rdparty git clean -f 3rdparty
git checkout 3rdparty
continue-on-error: true
- name: Reset checkout vendor
run: |
git clean -f vendor git clean -f vendor
git checkout vendor
continue-on-error: true
- name: Reset checkout vendor-bin
run: |
git clean -f vendor-bin git clean -f vendor-bin
git checkout vendor-bin git checkout 3rdparty vendor vendor-bin
continue-on-error: true continue-on-error: true
- name: Create Pull Request - name: Create Pull Request
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38 # v3 uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666 # v3
with: with:
token: ${{ secrets.COMMAND_BOT_PAT }} token: ${{ secrets.COMMAND_BOT_PAT }}
commit-message: "chore(dev-deps): Bump nextcloud/ocp package" commit-message: "chore(dev-deps): Bump nextcloud/ocp package"

View File

@@ -1,7 +1,7 @@
# Changelog # Changelog
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
## 1.10.0-beta.1 ## 1.10.0
### Added ### Added
@@ -9,6 +9,8 @@ All notable changes to this project will be documented in this file.
### Fixed ### Fixed
- fix: Properly overwrite z-index of datepicker above modal @juliushaertl [#4664](https://github.com/nextcloud/deck/pull/4664)
- Use the color-primary-element* variables @szaimen [#4673](https://github.com/nextcloud/deck/pull/4673)
- fix(references): Mute NoPermissionException as it is expected to happen for references @juliushaertl [#4514](https://github.com/nextcloud/deck/pull/4514) - fix(references): Mute NoPermissionException as it is expected to happen for references @juliushaertl [#4514](https://github.com/nextcloud/deck/pull/4514)
- fix(cards): Fix card sizing by limiting too wide style rules @juliushaertl [#4512](https://github.com/nextcloud/deck/pull/4512) - fix(cards): Fix card sizing by limiting too wide style rules @juliushaertl [#4512](https://github.com/nextcloud/deck/pull/4512)
- fix: Adapt NcEmptyContent usages to new slots @juliushaertl [#4561](https://github.com/nextcloud/deck/pull/4561) - fix: Adapt NcEmptyContent usages to new slots @juliushaertl [#4561](https://github.com/nextcloud/deck/pull/4561)
@@ -28,7 +30,12 @@ All notable changes to this project will be documented in this file.
- Better display of card dates (creation and change dates) @Jerome-Herbinet [#4604](https://github.com/nextcloud/deck/pull/4604) - Better display of card dates (creation and change dates) @Jerome-Herbinet [#4604](https://github.com/nextcloud/deck/pull/4604)
- Refactors lib\Activity\DeckProvider.php to improve code readability. @fsamapoor [#4648](https://github.com/nextcloud/deck/pull/4648) - Refactors lib\Activity\DeckProvider.php to improve code readability. @fsamapoor [#4648](https://github.com/nextcloud/deck/pull/4648)
- Converts 'strpos()' calls to improve code readability. @fsamapoor [#4657](https://github.com/nextcloud/deck/pull/4657) - Converts 'strpos()' calls to improve code readability. @fsamapoor [#4657](https://github.com/nextcloud/deck/pull/4657)
- Dependency updates
### Other
- feat: Add devcontainer and update dev docs @juliushaertl [#4683](https://github.com/nextcloud/deck/pull/4683)
- chore(CI): Adjust testing matrix for Nextcloud 27 on stable27 @nickvergessen [#4691](https://github.com/nextcloud/deck/pull/4691)
## 1.9.0-beta.1 ## 1.9.0-beta.1

View File

@@ -27,7 +27,6 @@ Deck is a kanban style organization tool aimed at personal planning and project
- [trello-to-deck](https://github.com/maxammann/trello-to-deck) - Migrates cards from Trello - [trello-to-deck](https://github.com/maxammann/trello-to-deck) - Migrates cards from Trello
- [mail2deck](https://github.com/newroco/mail2deck) - Provides an "email in" solution - [mail2deck](https://github.com/newroco/mail2deck) - Provides an "email in" solution
- [A-deck](https://github.com/leoossa/A-deck) - Chrome Extension that allows to create new card in selected stack based on current tab - [A-deck](https://github.com/leoossa/A-deck) - Chrome Extension that allows to create new card in selected stack based on current tab
- [QOwnNotes](https://github.com/pbek/QOwnNotes) - Quickly creates cards and links to them in Markdown notes
## Installation/Update ## Installation/Update

View File

@@ -16,7 +16,7 @@
- 🚀 Get your project organized - 🚀 Get your project organized
</description> </description>
<version>1.11.0-dev</version> <version>1.10.0</version>
<licence>agpl</licence> <licence>agpl</licence>
<author>Julius Härtl</author> <author>Julius Härtl</author>
<documentation> <documentation>
@@ -38,7 +38,7 @@
<database min-version="9.4">pgsql</database> <database min-version="9.4">pgsql</database>
<database>sqlite</database> <database>sqlite</database>
<database min-version="8.0">mysql</database> <database min-version="8.0">mysql</database>
<nextcloud min-version="28" max-version="28"/> <nextcloud min-version="27" max-version="27"/>
</dependencies> </dependencies>
<background-jobs> <background-jobs>
<job>OCA\Deck\Cron\DeleteCron</job> <job>OCA\Deck\Cron\DeleteCron</job>

View File

@@ -19,10 +19,11 @@
"symfony/event-dispatcher": "^4.0", "symfony/event-dispatcher": "^4.0",
"vimeo/psalm": "^5.4", "vimeo/psalm": "^5.4",
"php-parallel-lint/php-parallel-lint": "^1.2", "php-parallel-lint/php-parallel-lint": "^1.2",
"nextcloud/ocp": "dev-master" "nextcloud/ocp": "dev-stable27"
}, },
"config": { "config": {
"optimize-autoloader": true, "optimize-autoloader": true,
"classmap-authoritative": true,
"allow-plugins": { "allow-plugins": {
"composer/package-versions-deprecated": true "composer/package-versions-deprecated": true
}, },

847
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -68,7 +68,6 @@ OC.L10N.register(
"Changes in the <strong>Deck app</strong>" : "تغييرات في <strong>تطبيق Deck</strong> ", "Changes in the <strong>Deck app</strong>" : "تغييرات في <strong>تطبيق Deck</strong> ",
"A <strong>comment</strong> was created on a card" : "<strong>تعليق</strong> تم إنشاؤه على بطاقة", "A <strong>comment</strong> was created on a card" : "<strong>تعليق</strong> تم إنشاؤه على بطاقة",
"Upcoming cards" : "البطاقات القادمة", "Upcoming cards" : "البطاقات القادمة",
"Load more" : "حمّل أكثر",
"Personal" : "شخصي", "Personal" : "شخصي",
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "البطاقة \"%s\" على \"%s\" كُلفت بها من قبل %s.", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "البطاقة \"%s\" على \"%s\" كُلفت بها من قبل %s.",
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} قام بتكليف البطاقة {deck-board} على {deck-board} لك", "{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} قام بتكليف البطاقة {deck-board} على {deck-board} لك",
@@ -79,12 +78,8 @@ OC.L10N.register(
"The board \"%s\" has been shared with you by %s." : "تمت مشاركة اللوح \"%s\" معك من قبل %s.", "The board \"%s\" has been shared with you by %s." : "تمت مشاركة اللوح \"%s\" معك من قبل %s.",
"{user} has shared {deck-board} with you." : "{user} قام بمشاركة {deck-board} معك.", "{user} has shared {deck-board} with you." : "{user} قام بمشاركة {deck-board} معك.",
"Deck board" : "لوح Deck", "Deck board" : "لوح Deck",
"Owned by %1$s" : "يملكها %1$s",
"Deck boards, cards and comments" : "الرُّقع و البطاقات و الملاحظات",
"From %1$s, in %2$s/%3$s, owned by %4$s" : " من %1$s، في %2$s/%3$s، يملكها %4$s",
"Card comments" : "تعليقات البطاقة ", "Card comments" : "تعليقات البطاقة ",
"%s on %s" : "%s على %s", "%s on %s" : "%s على %s",
"Deck boards and cards" : "الرُّقع و البطاقات",
"No data was provided to create an attachment." : "لا بيانات تم تقديمها لانشاء مرفق", "No data was provided to create an attachment." : "لا بيانات تم تقديمها لانشاء مرفق",
"Finished" : "اكتمل", "Finished" : "اكتمل",
"To review" : "لإعادة المراجعة", "To review" : "لإعادة المراجعة",
@@ -106,12 +101,10 @@ OC.L10N.register(
"Could not write file to disk" : "لم يستطع كتابة ملف للقرص", "Could not write file to disk" : "لم يستطع كتابة ملف للقرص",
"A PHP extension stopped the file upload" : "إضافة البي اچ بي PHP أوقفت رفع الملف", "A PHP extension stopped the file upload" : "إضافة البي اچ بي PHP أوقفت رفع الملف",
"No file uploaded or file size exceeds maximum of %s" : "لم يتم تحميل أي ملف أو أن يتجاوز حجم الملف الحد الأقصى %s", "No file uploaded or file size exceeds maximum of %s" : "لم يتم تحميل أي ملف أو أن يتجاوز حجم الملف الحد الأقصى %s",
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : " هذه الملاحظات فيها أكثر من %s حرفاً.\n تمّت إضافتها كمُرفق إلى البطاقة التي اسمها%s.\n الموجودة على الرابط %s.",
"Card not found" : "لم يتم العثور على البطاقة ", "Card not found" : "لم يتم العثور على البطاقة ",
"Path is already shared with this card" : "تم مشاركة المسار بالفعل مع هذه البطاقة ", "Path is already shared with this card" : "تم مشاركة المسار بالفعل مع هذه البطاقة ",
"Invalid date, date format must be YYYY-MM-DD" : "تاريخ غير صحيح, يجب أن يكون تنسيق التاريخ YYYY-MM-DD", "Invalid date, date format must be YYYY-MM-DD" : "تاريخ غير صحيح, يجب أن يكون تنسيق التاريخ YYYY-MM-DD",
"Personal planning and team project organization" : "التخطيط الشخصي و تنظيم مشروع الفريق", "Personal planning and team project organization" : "التخطيط الشخصي و تنظيم مشروع الفريق",
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "التطبيق Deck \"الرُّقعة\" هو أداة لتنظيم المهام الشخصية و الجماعية في نكست كلاود على نمط \"خطوط التصنيع أو التجميع في المصانع\" و المعروف بـ kanban.\n\n\n- 📥 أكتب مهمتك او مهمة فريقك على بطاقة و ضع البطاقة في الرُّقعة على كدسة البطاقات من ذات التصنيف أو المرحلة من الإنجاز\n- 📄 دوّن ملاحظاتك الإضافية على البطاقة بصيغة ماركداون markdown\n- 🔖 و يمكنك أيضاً إسناد البطاقة أي المهمة إلى شخص أو أشخاص في فريقك\n- 👥 شارك البطاقة مع من ترغب من أعضاء فريقك أو عائلتك أو أصدقائك\n- 📎 إرفاق ملفات و تضمينها بصيغة ماركداون في البطاقة\n- 💬ناقش البطاقة مع زملائك في خانة الملاحظات\n- ⚡ تابع ما يُستجد من عمليات و تطوّرات على البطاقة أو المهمة\n- 🚀 حافظ على مشروعك مُنسّقاً باستمرار.",
"Add board" : "إضافة لوح", "Add board" : "إضافة لوح",
"Select the board to link to a project" : "تحديد اللوح لربطه بمشروع", "Select the board to link to a project" : "تحديد اللوح لربطه بمشروع",
"Search by board title" : "بحث بواسطة عنوان اللوح", "Search by board title" : "بحث بواسطة عنوان اللوح",
@@ -140,7 +133,6 @@ OC.L10N.register(
"Archived cards" : "البطاقات المؤرشفة", "Archived cards" : "البطاقات المؤرشفة",
"Add list" : "إضافة قائمة", "Add list" : "إضافة قائمة",
"List name" : "قامة اسماء", "List name" : "قامة اسماء",
"Active filters" : "فلاتر نشطة",
"Apply filter" : "تطبيق التصفية", "Apply filter" : "تطبيق التصفية",
"Filter by tag" : "تصفية بواسطة الوسم", "Filter by tag" : "تصفية بواسطة الوسم",
"Filter by assigned user" : "تصفية بواسطة المستخدم الموكل اليه", "Filter by assigned user" : "تصفية بواسطة المستخدم الموكل اليه",
@@ -157,7 +149,6 @@ OC.L10N.register(
"Toggle compact mode" : "تبديل النمط المضغوط", "Toggle compact mode" : "تبديل النمط المضغوط",
"Open details" : "افتح التفاصيل", "Open details" : "افتح التفاصيل",
"Details" : "التفاصيل", "Details" : "التفاصيل",
"Currently present people" : "أشخاص معروضون حاليّاً",
"Loading board" : "جارِ تحميل اللوح..", "Loading board" : "جارِ تحميل اللوح..",
"No lists available" : "لا يوجد قائمة متاحه ", "No lists available" : "لا يوجد قائمة متاحه ",
"Create a new list to add cards to this board" : "إنشاء قائمة جديدة لإضافة البطاقات على هذا اللوح", "Create a new list to add cards to this board" : "إنشاء قائمة جديدة لإضافة البطاقات على هذا اللوح",
@@ -181,17 +172,10 @@ OC.L10N.register(
"Owner" : "المالك", "Owner" : "المالك",
"Delete" : "حذف ", "Delete" : "حذف ",
"Failed to create share with {displayName}" : "فشل في إنشاء المشاركة مع {displayName}", "Failed to create share with {displayName}" : "فشل في إنشاء المشاركة مع {displayName}",
"Are you sure you want to transfer the board {title} to {user}?" : "هل أنت متأكد أنك تريد نقل الرُّقعة {title} إلى {user} ؟",
"Transfer the board." : "نقل الرُّقعة.",
"Transfer" : "نقل", "Transfer" : "نقل",
"The board has been transferred to {user}" : "تمّ نقل الرُّقعة إلى {user}",
"Failed to transfer the board to {user}" : "إخفاق في نقل الرُّقعة إلى {user}",
"Edit list title" : "عدّل اسم القائمة",
"Archive all cards" : "أرشفة جميع البطاقات ", "Archive all cards" : "أرشفة جميع البطاقات ",
"Unarchive all cards" : "تراجع عن أرشفة كل البطاقات",
"Delete list" : "حذف القائمة", "Delete list" : "حذف القائمة",
"Archive all cards in this list" : "أرشفة جميع البطاقات في القائمة ", "Archive all cards in this list" : "أرشفة جميع البطاقات في القائمة ",
"Unarchive all cards in this list" : "تراجع عن أرشفة كل البطاقات في هذه القائمة",
"Add a new card" : "إضافة بطاقة جديدة", "Add a new card" : "إضافة بطاقة جديدة",
"Card name" : "اسم البطاقة ", "Card name" : "اسم البطاقة ",
"List deleted" : "القائمة حٌذفت ", "List deleted" : "القائمة حٌذفت ",
@@ -202,11 +186,9 @@ OC.L10N.register(
"Members" : "الاعضاء", "Members" : "الاعضاء",
"Upload new files" : "رفع ملفات جديدة", "Upload new files" : "رفع ملفات جديدة",
"Share from Files" : "مشاركة من الملفات", "Share from Files" : "مشاركة من الملفات",
"Pending share" : "مشاركة مُعلّقة",
"Add this attachment" : "إضافة هذا المرفق", "Add this attachment" : "إضافة هذا المرفق",
"Show in Files" : "عرض في الملفات ", "Show in Files" : "عرض في الملفات ",
"Download" : "تنزيل", "Download" : "تنزيل",
"Remove attachment" : "حذف المُرفق",
"Delete Attachment" : "مسح المرفق", "Delete Attachment" : "مسح المرفق",
"Restore Attachment" : "إستعادة المرفق", "Restore Attachment" : "إستعادة المرفق",
"File to share" : "ملف للمشاركة", "File to share" : "ملف للمشاركة",
@@ -249,9 +231,7 @@ OC.L10N.register(
"Write a description …" : "كتابة وصف...", "Write a description …" : "كتابة وصف...",
"Choose attachment" : "اختيار مرفق", "Choose attachment" : "اختيار مرفق",
"(group)" : "(مجموعة)", "(group)" : "(مجموعة)",
"Todo items" : "قائمة المهام",
"{count} comments, {unread} unread" : "{عدد} التعليقات، {غير مقروءة} غير مقروءة", "{count} comments, {unread} unread" : "{عدد} التعليقات، {غير مقروءة} غير مقروءة",
"Edit card title" : "تعديل اسم القائمة",
"Assign to me" : "ينسب لي", "Assign to me" : "ينسب لي",
"Unassign myself" : "إلغاء تعييني ", "Unassign myself" : "إلغاء تعييني ",
"Move card" : "حرك البطاقة", "Move card" : "حرك البطاقة",
@@ -260,15 +240,12 @@ OC.L10N.register(
"Archive card" : "أرشفة البطاقة", "Archive card" : "أرشفة البطاقة",
"Delete card" : "حذف البطاقة", "Delete card" : "حذف البطاقة",
"Move card to another board" : "حرك البطاقة الى لوح اخر", "Move card to another board" : "حرك البطاقة الى لوح اخر",
"List is empty" : "القائمة فارغة",
"Card deleted" : "البطاقة حٌذفت ", "Card deleted" : "البطاقة حٌذفت ",
"seconds ago" : "ثوانٍ مضت", "seconds ago" : "ثوانٍ مضت",
"All boards" : "جميع الالواح", "All boards" : "جميع الالواح",
"Archived boards" : "الالواح المؤرشفة", "Archived boards" : "الالواح المؤرشفة",
"Shared with you" : "تم مشاركتها معك", "Shared with you" : "تم مشاركتها معك",
"Deck settings" : "إعدادات الرُّقعة",
"Use bigger card view" : "استخدام بطاقة عرض أكبر ", "Use bigger card view" : "استخدام بطاقة عرض أكبر ",
"Show card ID badge" : "أعرض شارة رقم البطاقة",
"Show boards in calendar/tasks" : "إظهار اللوح في التقويم/المهام", "Show boards in calendar/tasks" : "إظهار اللوح في التقويم/المهام",
"Limit deck usage of groups" : "تقييد استخدام Deck للمجموعات", "Limit deck usage of groups" : "تقييد استخدام Deck للمجموعات",
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "سيؤدي تقييد Deck إلى منع المستخدمين الذين ليسوا جزءًا من تلك المجموعات من إنشاء لوحاتهم الخاصة. سيظل المستخدمون قادرين على العمل على اللوحات التي تمت مشاركتها معهم.", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "سيؤدي تقييد Deck إلى منع المستخدمين الذين ليسوا جزءًا من تلك المجموعات من إنشاء لوحاتهم الخاصة. سيظل المستخدمون قادرين على العمل على اللوحات التي تمت مشاركتها معهم.",
@@ -277,7 +254,6 @@ OC.L10N.register(
"Clone board" : "استنسخ اللوح", "Clone board" : "استنسخ اللوح",
"Unarchive board" : "إلغاء أرشفة اللوح", "Unarchive board" : "إلغاء أرشفة اللوح",
"Archive board" : "أرشفة اللوح ", "Archive board" : "أرشفة اللوح ",
"Export board" : "صدّر الرُّقعة",
"Turn on due date reminders" : "تفعيل التذكيرات للموعد المحدد ", "Turn on due date reminders" : "تفعيل التذكيرات للموعد المحدد ",
"Turn off due date reminders" : "إيقاف تشغيل التذكيرات للموعد المحددد", "Turn off due date reminders" : "إيقاف تشغيل التذكيرات للموعد المحددد",
"Due date reminders" : "تذكيرات الموعد المحدد ", "Due date reminders" : "تذكيرات الموعد المحدد ",
@@ -289,22 +265,14 @@ OC.L10N.register(
"Only assigned cards" : "البطاقات المخصصة فقط", "Only assigned cards" : "البطاقات المخصصة فقط",
"No reminder" : "لا يوجد تذكير ", "No reminder" : "لا يوجد تذكير ",
"An error occurred" : "حدث خطأ", "An error occurred" : "حدث خطأ",
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "هل أنت متأكد من حذف الرقعة {title}؟ هذا سيؤدي إلى حذف كل بيانات هذه الرُّقعة بما في ذلك البطاقات المؤرشفة.",
"Delete the board?" : "مسح اللوح؟", "Delete the board?" : "مسح اللوح؟",
"Loading filtered view" : "جارِ تحميل التصفية ", "Loading filtered view" : "جارِ تحميل التصفية ",
"No due" : "غير محدد", "No due" : "غير محدد",
"Search for {searchQuery} in all boards" : "البحث عن {searchQuery} في جميع اللوح", "Search for {searchQuery} in all boards" : "البحث عن {searchQuery} في جميع اللوح",
"No results found" : "لا يتم العثور على أي نتائج ", "No results found" : "لا يتم العثور على أي نتائج ",
"Deck board {name}\n* Last modified on {lastMod}" : "اسم الرُّقعة {name} \n* آخر تعديل لها في {lastMod}",
"{stack} in {board}" : "{stack} في {board}", "{stack} in {board}" : "{stack} في {board}",
"Click to expand description" : "إضعط للتوسّع في الوصف",
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* أُنشأت في {created}\n* آخر تعديل لها في {lastMod}\n* {nbAttachments} مُرفقات\n* {nbComments} مُلاحظات",
"{nbCards} cards" : "{nbCards} بطاقات",
"Click to expand comment" : "إضغط للتوسع في الملاحظات",
"No upcoming cards" : "لا يوجد بطاقات قادمة ", "No upcoming cards" : "لا يوجد بطاقات قادمة ",
"upcoming cards" : "البطاقات القادمة", "upcoming cards" : "البطاقات القادمة",
"New card" : "بطاقة جديدة",
"Due on {date}" : "مطلوب في {date}",
"Link to a board" : "ربط بلوح", "Link to a board" : "ربط بلوح",
"Link to a card" : "ربط ببطاقة", "Link to a card" : "ربط ببطاقة",
"Create a card" : "أنشى بطاقة ", "Create a card" : "أنشى بطاقة ",

View File

@@ -66,7 +66,6 @@
"Changes in the <strong>Deck app</strong>" : "تغييرات في <strong>تطبيق Deck</strong> ", "Changes in the <strong>Deck app</strong>" : "تغييرات في <strong>تطبيق Deck</strong> ",
"A <strong>comment</strong> was created on a card" : "<strong>تعليق</strong> تم إنشاؤه على بطاقة", "A <strong>comment</strong> was created on a card" : "<strong>تعليق</strong> تم إنشاؤه على بطاقة",
"Upcoming cards" : "البطاقات القادمة", "Upcoming cards" : "البطاقات القادمة",
"Load more" : "حمّل أكثر",
"Personal" : "شخصي", "Personal" : "شخصي",
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "البطاقة \"%s\" على \"%s\" كُلفت بها من قبل %s.", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "البطاقة \"%s\" على \"%s\" كُلفت بها من قبل %s.",
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} قام بتكليف البطاقة {deck-board} على {deck-board} لك", "{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} قام بتكليف البطاقة {deck-board} على {deck-board} لك",
@@ -77,12 +76,8 @@
"The board \"%s\" has been shared with you by %s." : "تمت مشاركة اللوح \"%s\" معك من قبل %s.", "The board \"%s\" has been shared with you by %s." : "تمت مشاركة اللوح \"%s\" معك من قبل %s.",
"{user} has shared {deck-board} with you." : "{user} قام بمشاركة {deck-board} معك.", "{user} has shared {deck-board} with you." : "{user} قام بمشاركة {deck-board} معك.",
"Deck board" : "لوح Deck", "Deck board" : "لوح Deck",
"Owned by %1$s" : "يملكها %1$s",
"Deck boards, cards and comments" : "الرُّقع و البطاقات و الملاحظات",
"From %1$s, in %2$s/%3$s, owned by %4$s" : " من %1$s، في %2$s/%3$s، يملكها %4$s",
"Card comments" : "تعليقات البطاقة ", "Card comments" : "تعليقات البطاقة ",
"%s on %s" : "%s على %s", "%s on %s" : "%s على %s",
"Deck boards and cards" : "الرُّقع و البطاقات",
"No data was provided to create an attachment." : "لا بيانات تم تقديمها لانشاء مرفق", "No data was provided to create an attachment." : "لا بيانات تم تقديمها لانشاء مرفق",
"Finished" : "اكتمل", "Finished" : "اكتمل",
"To review" : "لإعادة المراجعة", "To review" : "لإعادة المراجعة",
@@ -104,12 +99,10 @@
"Could not write file to disk" : "لم يستطع كتابة ملف للقرص", "Could not write file to disk" : "لم يستطع كتابة ملف للقرص",
"A PHP extension stopped the file upload" : "إضافة البي اچ بي PHP أوقفت رفع الملف", "A PHP extension stopped the file upload" : "إضافة البي اچ بي PHP أوقفت رفع الملف",
"No file uploaded or file size exceeds maximum of %s" : "لم يتم تحميل أي ملف أو أن يتجاوز حجم الملف الحد الأقصى %s", "No file uploaded or file size exceeds maximum of %s" : "لم يتم تحميل أي ملف أو أن يتجاوز حجم الملف الحد الأقصى %s",
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : " هذه الملاحظات فيها أكثر من %s حرفاً.\n تمّت إضافتها كمُرفق إلى البطاقة التي اسمها%s.\n الموجودة على الرابط %s.",
"Card not found" : "لم يتم العثور على البطاقة ", "Card not found" : "لم يتم العثور على البطاقة ",
"Path is already shared with this card" : "تم مشاركة المسار بالفعل مع هذه البطاقة ", "Path is already shared with this card" : "تم مشاركة المسار بالفعل مع هذه البطاقة ",
"Invalid date, date format must be YYYY-MM-DD" : "تاريخ غير صحيح, يجب أن يكون تنسيق التاريخ YYYY-MM-DD", "Invalid date, date format must be YYYY-MM-DD" : "تاريخ غير صحيح, يجب أن يكون تنسيق التاريخ YYYY-MM-DD",
"Personal planning and team project organization" : "التخطيط الشخصي و تنظيم مشروع الفريق", "Personal planning and team project organization" : "التخطيط الشخصي و تنظيم مشروع الفريق",
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "التطبيق Deck \"الرُّقعة\" هو أداة لتنظيم المهام الشخصية و الجماعية في نكست كلاود على نمط \"خطوط التصنيع أو التجميع في المصانع\" و المعروف بـ kanban.\n\n\n- 📥 أكتب مهمتك او مهمة فريقك على بطاقة و ضع البطاقة في الرُّقعة على كدسة البطاقات من ذات التصنيف أو المرحلة من الإنجاز\n- 📄 دوّن ملاحظاتك الإضافية على البطاقة بصيغة ماركداون markdown\n- 🔖 و يمكنك أيضاً إسناد البطاقة أي المهمة إلى شخص أو أشخاص في فريقك\n- 👥 شارك البطاقة مع من ترغب من أعضاء فريقك أو عائلتك أو أصدقائك\n- 📎 إرفاق ملفات و تضمينها بصيغة ماركداون في البطاقة\n- 💬ناقش البطاقة مع زملائك في خانة الملاحظات\n- ⚡ تابع ما يُستجد من عمليات و تطوّرات على البطاقة أو المهمة\n- 🚀 حافظ على مشروعك مُنسّقاً باستمرار.",
"Add board" : "إضافة لوح", "Add board" : "إضافة لوح",
"Select the board to link to a project" : "تحديد اللوح لربطه بمشروع", "Select the board to link to a project" : "تحديد اللوح لربطه بمشروع",
"Search by board title" : "بحث بواسطة عنوان اللوح", "Search by board title" : "بحث بواسطة عنوان اللوح",
@@ -138,7 +131,6 @@
"Archived cards" : "البطاقات المؤرشفة", "Archived cards" : "البطاقات المؤرشفة",
"Add list" : "إضافة قائمة", "Add list" : "إضافة قائمة",
"List name" : "قامة اسماء", "List name" : "قامة اسماء",
"Active filters" : "فلاتر نشطة",
"Apply filter" : "تطبيق التصفية", "Apply filter" : "تطبيق التصفية",
"Filter by tag" : "تصفية بواسطة الوسم", "Filter by tag" : "تصفية بواسطة الوسم",
"Filter by assigned user" : "تصفية بواسطة المستخدم الموكل اليه", "Filter by assigned user" : "تصفية بواسطة المستخدم الموكل اليه",
@@ -155,7 +147,6 @@
"Toggle compact mode" : "تبديل النمط المضغوط", "Toggle compact mode" : "تبديل النمط المضغوط",
"Open details" : "افتح التفاصيل", "Open details" : "افتح التفاصيل",
"Details" : "التفاصيل", "Details" : "التفاصيل",
"Currently present people" : "أشخاص معروضون حاليّاً",
"Loading board" : "جارِ تحميل اللوح..", "Loading board" : "جارِ تحميل اللوح..",
"No lists available" : "لا يوجد قائمة متاحه ", "No lists available" : "لا يوجد قائمة متاحه ",
"Create a new list to add cards to this board" : "إنشاء قائمة جديدة لإضافة البطاقات على هذا اللوح", "Create a new list to add cards to this board" : "إنشاء قائمة جديدة لإضافة البطاقات على هذا اللوح",
@@ -179,17 +170,10 @@
"Owner" : "المالك", "Owner" : "المالك",
"Delete" : "حذف ", "Delete" : "حذف ",
"Failed to create share with {displayName}" : "فشل في إنشاء المشاركة مع {displayName}", "Failed to create share with {displayName}" : "فشل في إنشاء المشاركة مع {displayName}",
"Are you sure you want to transfer the board {title} to {user}?" : "هل أنت متأكد أنك تريد نقل الرُّقعة {title} إلى {user} ؟",
"Transfer the board." : "نقل الرُّقعة.",
"Transfer" : "نقل", "Transfer" : "نقل",
"The board has been transferred to {user}" : "تمّ نقل الرُّقعة إلى {user}",
"Failed to transfer the board to {user}" : "إخفاق في نقل الرُّقعة إلى {user}",
"Edit list title" : "عدّل اسم القائمة",
"Archive all cards" : "أرشفة جميع البطاقات ", "Archive all cards" : "أرشفة جميع البطاقات ",
"Unarchive all cards" : "تراجع عن أرشفة كل البطاقات",
"Delete list" : "حذف القائمة", "Delete list" : "حذف القائمة",
"Archive all cards in this list" : "أرشفة جميع البطاقات في القائمة ", "Archive all cards in this list" : "أرشفة جميع البطاقات في القائمة ",
"Unarchive all cards in this list" : "تراجع عن أرشفة كل البطاقات في هذه القائمة",
"Add a new card" : "إضافة بطاقة جديدة", "Add a new card" : "إضافة بطاقة جديدة",
"Card name" : "اسم البطاقة ", "Card name" : "اسم البطاقة ",
"List deleted" : "القائمة حٌذفت ", "List deleted" : "القائمة حٌذفت ",
@@ -200,11 +184,9 @@
"Members" : "الاعضاء", "Members" : "الاعضاء",
"Upload new files" : "رفع ملفات جديدة", "Upload new files" : "رفع ملفات جديدة",
"Share from Files" : "مشاركة من الملفات", "Share from Files" : "مشاركة من الملفات",
"Pending share" : "مشاركة مُعلّقة",
"Add this attachment" : "إضافة هذا المرفق", "Add this attachment" : "إضافة هذا المرفق",
"Show in Files" : "عرض في الملفات ", "Show in Files" : "عرض في الملفات ",
"Download" : "تنزيل", "Download" : "تنزيل",
"Remove attachment" : "حذف المُرفق",
"Delete Attachment" : "مسح المرفق", "Delete Attachment" : "مسح المرفق",
"Restore Attachment" : "إستعادة المرفق", "Restore Attachment" : "إستعادة المرفق",
"File to share" : "ملف للمشاركة", "File to share" : "ملف للمشاركة",
@@ -247,9 +229,7 @@
"Write a description …" : "كتابة وصف...", "Write a description …" : "كتابة وصف...",
"Choose attachment" : "اختيار مرفق", "Choose attachment" : "اختيار مرفق",
"(group)" : "(مجموعة)", "(group)" : "(مجموعة)",
"Todo items" : "قائمة المهام",
"{count} comments, {unread} unread" : "{عدد} التعليقات، {غير مقروءة} غير مقروءة", "{count} comments, {unread} unread" : "{عدد} التعليقات، {غير مقروءة} غير مقروءة",
"Edit card title" : "تعديل اسم القائمة",
"Assign to me" : "ينسب لي", "Assign to me" : "ينسب لي",
"Unassign myself" : "إلغاء تعييني ", "Unassign myself" : "إلغاء تعييني ",
"Move card" : "حرك البطاقة", "Move card" : "حرك البطاقة",
@@ -258,15 +238,12 @@
"Archive card" : "أرشفة البطاقة", "Archive card" : "أرشفة البطاقة",
"Delete card" : "حذف البطاقة", "Delete card" : "حذف البطاقة",
"Move card to another board" : "حرك البطاقة الى لوح اخر", "Move card to another board" : "حرك البطاقة الى لوح اخر",
"List is empty" : "القائمة فارغة",
"Card deleted" : "البطاقة حٌذفت ", "Card deleted" : "البطاقة حٌذفت ",
"seconds ago" : "ثوانٍ مضت", "seconds ago" : "ثوانٍ مضت",
"All boards" : "جميع الالواح", "All boards" : "جميع الالواح",
"Archived boards" : "الالواح المؤرشفة", "Archived boards" : "الالواح المؤرشفة",
"Shared with you" : "تم مشاركتها معك", "Shared with you" : "تم مشاركتها معك",
"Deck settings" : "إعدادات الرُّقعة",
"Use bigger card view" : "استخدام بطاقة عرض أكبر ", "Use bigger card view" : "استخدام بطاقة عرض أكبر ",
"Show card ID badge" : "أعرض شارة رقم البطاقة",
"Show boards in calendar/tasks" : "إظهار اللوح في التقويم/المهام", "Show boards in calendar/tasks" : "إظهار اللوح في التقويم/المهام",
"Limit deck usage of groups" : "تقييد استخدام Deck للمجموعات", "Limit deck usage of groups" : "تقييد استخدام Deck للمجموعات",
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "سيؤدي تقييد Deck إلى منع المستخدمين الذين ليسوا جزءًا من تلك المجموعات من إنشاء لوحاتهم الخاصة. سيظل المستخدمون قادرين على العمل على اللوحات التي تمت مشاركتها معهم.", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "سيؤدي تقييد Deck إلى منع المستخدمين الذين ليسوا جزءًا من تلك المجموعات من إنشاء لوحاتهم الخاصة. سيظل المستخدمون قادرين على العمل على اللوحات التي تمت مشاركتها معهم.",
@@ -275,7 +252,6 @@
"Clone board" : "استنسخ اللوح", "Clone board" : "استنسخ اللوح",
"Unarchive board" : "إلغاء أرشفة اللوح", "Unarchive board" : "إلغاء أرشفة اللوح",
"Archive board" : "أرشفة اللوح ", "Archive board" : "أرشفة اللوح ",
"Export board" : "صدّر الرُّقعة",
"Turn on due date reminders" : "تفعيل التذكيرات للموعد المحدد ", "Turn on due date reminders" : "تفعيل التذكيرات للموعد المحدد ",
"Turn off due date reminders" : "إيقاف تشغيل التذكيرات للموعد المحددد", "Turn off due date reminders" : "إيقاف تشغيل التذكيرات للموعد المحددد",
"Due date reminders" : "تذكيرات الموعد المحدد ", "Due date reminders" : "تذكيرات الموعد المحدد ",
@@ -287,22 +263,14 @@
"Only assigned cards" : "البطاقات المخصصة فقط", "Only assigned cards" : "البطاقات المخصصة فقط",
"No reminder" : "لا يوجد تذكير ", "No reminder" : "لا يوجد تذكير ",
"An error occurred" : "حدث خطأ", "An error occurred" : "حدث خطأ",
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "هل أنت متأكد من حذف الرقعة {title}؟ هذا سيؤدي إلى حذف كل بيانات هذه الرُّقعة بما في ذلك البطاقات المؤرشفة.",
"Delete the board?" : "مسح اللوح؟", "Delete the board?" : "مسح اللوح؟",
"Loading filtered view" : "جارِ تحميل التصفية ", "Loading filtered view" : "جارِ تحميل التصفية ",
"No due" : "غير محدد", "No due" : "غير محدد",
"Search for {searchQuery} in all boards" : "البحث عن {searchQuery} في جميع اللوح", "Search for {searchQuery} in all boards" : "البحث عن {searchQuery} في جميع اللوح",
"No results found" : "لا يتم العثور على أي نتائج ", "No results found" : "لا يتم العثور على أي نتائج ",
"Deck board {name}\n* Last modified on {lastMod}" : "اسم الرُّقعة {name} \n* آخر تعديل لها في {lastMod}",
"{stack} in {board}" : "{stack} في {board}", "{stack} in {board}" : "{stack} في {board}",
"Click to expand description" : "إضعط للتوسّع في الوصف",
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* أُنشأت في {created}\n* آخر تعديل لها في {lastMod}\n* {nbAttachments} مُرفقات\n* {nbComments} مُلاحظات",
"{nbCards} cards" : "{nbCards} بطاقات",
"Click to expand comment" : "إضغط للتوسع في الملاحظات",
"No upcoming cards" : "لا يوجد بطاقات قادمة ", "No upcoming cards" : "لا يوجد بطاقات قادمة ",
"upcoming cards" : "البطاقات القادمة", "upcoming cards" : "البطاقات القادمة",
"New card" : "بطاقة جديدة",
"Due on {date}" : "مطلوب في {date}",
"Link to a board" : "ربط بلوح", "Link to a board" : "ربط بلوح",
"Link to a card" : "ربط ببطاقة", "Link to a card" : "ربط ببطاقة",
"Create a card" : "أنشى بطاقة ", "Create a card" : "أنشى بطاقة ",

View File

@@ -266,7 +266,7 @@ OC.L10N.register(
"All boards" : "Tots els taulers", "All boards" : "Tots els taulers",
"Archived boards" : "Taulers arxivats", "Archived boards" : "Taulers arxivats",
"Shared with you" : "Us han compartit", "Shared with you" : "Us han compartit",
"Deck settings" : "Paràmetres de Targetes", "Deck settings" : "Paràmetres del Tauler",
"Use bigger card view" : "Utilitza la visualització de targetes més gran", "Use bigger card view" : "Utilitza la visualització de targetes més gran",
"Show card ID badge" : "Mostra el distintiu dID de la targeta", "Show card ID badge" : "Mostra el distintiu dID de la targeta",
"Show boards in calendar/tasks" : "Mostra els taulers al calendari/tasques", "Show boards in calendar/tasks" : "Mostra els taulers al calendari/tasques",

View File

@@ -264,7 +264,7 @@
"All boards" : "Tots els taulers", "All boards" : "Tots els taulers",
"Archived boards" : "Taulers arxivats", "Archived boards" : "Taulers arxivats",
"Shared with you" : "Us han compartit", "Shared with you" : "Us han compartit",
"Deck settings" : "Paràmetres de Targetes", "Deck settings" : "Paràmetres del Tauler",
"Use bigger card view" : "Utilitza la visualització de targetes més gran", "Use bigger card view" : "Utilitza la visualització de targetes més gran",
"Show card ID badge" : "Mostra el distintiu dID de la targeta", "Show card ID badge" : "Mostra el distintiu dID de la targeta",
"Show boards in calendar/tasks" : "Mostra els taulers al calendari/tasques", "Show boards in calendar/tasks" : "Mostra els taulers al calendari/tasques",

View File

@@ -4,7 +4,6 @@ OC.L10N.register(
"Personal" : "Isiklik", "Personal" : "Isiklik",
"Finished" : "Lõpetatud", "Finished" : "Lõpetatud",
"Later" : "Hiljem", "Later" : "Hiljem",
"copy" : "koopia",
"Done" : "Valmis", "Done" : "Valmis",
"The file was uploaded" : "Fail laaditi üles", "The file was uploaded" : "Fail laaditi üles",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Üleslaetud fail on suurem, kui php.ini failis määratud upload_max_filesize", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Üleslaetud fail on suurem, kui php.ini failis määratud upload_max_filesize",
@@ -13,7 +12,6 @@ OC.L10N.register(
"No file was uploaded" : "Ühtegi faili ei latud üles", "No file was uploaded" : "Ühtegi faili ei latud üles",
"Missing a temporary folder" : "Ajutine kausta on puudu", "Missing a temporary folder" : "Ajutine kausta on puudu",
"Could not write file to disk" : "Faili kirjutamine kettale ebaõnnestus", "Could not write file to disk" : "Faili kirjutamine kettale ebaõnnestus",
"A PHP extension stopped the file upload" : "PHP laiendus peatas faili üleslaadimise",
"Invalid date, date format must be YYYY-MM-DD" : "Vigane kuupäev, formaat peab olema YYYY-MM-DD", "Invalid date, date format must be YYYY-MM-DD" : "Vigane kuupäev, formaat peab olema YYYY-MM-DD",
"Cancel" : "Loobu", "Cancel" : "Loobu",
"Close" : "Sulge", "Close" : "Sulge",

View File

@@ -2,7 +2,6 @@
"Personal" : "Isiklik", "Personal" : "Isiklik",
"Finished" : "Lõpetatud", "Finished" : "Lõpetatud",
"Later" : "Hiljem", "Later" : "Hiljem",
"copy" : "koopia",
"Done" : "Valmis", "Done" : "Valmis",
"The file was uploaded" : "Fail laaditi üles", "The file was uploaded" : "Fail laaditi üles",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Üleslaetud fail on suurem, kui php.ini failis määratud upload_max_filesize", "The uploaded file exceeds the upload_max_filesize directive in php.ini" : "Üleslaetud fail on suurem, kui php.ini failis määratud upload_max_filesize",
@@ -11,7 +10,6 @@
"No file was uploaded" : "Ühtegi faili ei latud üles", "No file was uploaded" : "Ühtegi faili ei latud üles",
"Missing a temporary folder" : "Ajutine kausta on puudu", "Missing a temporary folder" : "Ajutine kausta on puudu",
"Could not write file to disk" : "Faili kirjutamine kettale ebaõnnestus", "Could not write file to disk" : "Faili kirjutamine kettale ebaõnnestus",
"A PHP extension stopped the file upload" : "PHP laiendus peatas faili üleslaadimise",
"Invalid date, date format must be YYYY-MM-DD" : "Vigane kuupäev, formaat peab olema YYYY-MM-DD", "Invalid date, date format must be YYYY-MM-DD" : "Vigane kuupäev, formaat peab olema YYYY-MM-DD",
"Cancel" : "Loobu", "Cancel" : "Loobu",
"Close" : "Sulge", "Close" : "Sulge",

View File

@@ -63,35 +63,27 @@ OC.L10N.register(
"{user} has restored the attachment {attachment} to card {card}" : "{user} restaurou o anexo {attachment} da tarxeta {card}", "{user} has restored the attachment {attachment} to card {card}" : "{user} restaurou o anexo {attachment} da tarxeta {card}",
"You have commented on card {card}" : "Vostede comentou na tarxeta {card}", "You have commented on card {card}" : "Vostede comentou na tarxeta {card}",
"{user} has commented on card {card}" : "{user} comentou na tarxeta {card}", "{user} has commented on card {card}" : "{user} comentou na tarxeta {card}",
"A <strong>card description</strong> inside the Deck app has been changed" : "Cambiouse a <strong>descripción da tarxeta</strong> dentro da aplicación Tarxeteiro", "A <strong>card description</strong> inside the Deck app has been changed" : "Cambiouse a <strong>descripción da tarxeta</strong> dentro da aplicación Deck",
"Deck" : "Tarxeteiro", "Deck" : "Deck",
"Changes in the <strong>Deck app</strong>" : "Cambios na <strong>aplicación Tarxeteiro</strong>", "Changes in the <strong>Deck app</strong>" : "Cambios na <strong>aplicación Deck</strong>",
"A <strong>comment</strong> was created on a card" : "Creouse un <strong>comentario</strong> nunha tarxeta", "A <strong>comment</strong> was created on a card" : "Creouse un <strong>comentario</strong> nunha tarxeta",
"Upcoming cards" : "Tarxetas próximas", "Upcoming cards" : "Tarxetas próximas",
"Load more" : "Cargar máis", "Load more" : "Cargar máis",
"Personal" : "Persoal", "Personal" : "Persoal",
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "A tarxeta «%s» en «%s» foi asignada a vostede por %s.", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "A tarxeta «%s» en «%s» foi asignada a vostede por %s.",
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} asignoulle a tarxeta {deck-card} en {deck-board} a vostede.", "The card \"%s\" on \"%s\" has reached its due date." : "A tarxeta «%s» en «%s» chegou á súa data de caducidade.",
"The card \"%s\" on \"%s\" has reached its due date." : "A tarxeta «%s» en «%s» acadou a súa data de caducidade.",
"The card {deck-card} on {deck-board} has reached its due date." : "A tarxeta {deck-card} en {deck-board} chegou á súa data de caducidade.",
"%s has mentioned you in a comment on \"%s\"." : "%s mencionouno a vostede nun comentario en «%s».", "%s has mentioned you in a comment on \"%s\"." : "%s mencionouno a vostede nun comentario en «%s».",
"{user} has mentioned you in a comment on {deck-card}." : "{user} mencionouno a vostede nun comentario en {deck-card}.",
"The board \"%s\" has been shared with you by %s." : "O taboleiro «%s» foi compartido con vostede por %s.", "The board \"%s\" has been shared with you by %s." : "O taboleiro «%s» foi compartido con vostede por %s.",
"{user} has shared {deck-board} with you." : "{user} compartiu {deck-board} con vostede.", "Deck board" : "Taboleiro do Deck",
"Deck board" : "Taboleiro do Tarxeteiro",
"Owned by %1$s" : "Propiedade de %1$s",
"Deck boards, cards and comments" : "Taboleiros do Tarxeteiro, tarxetas e comentarios",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "De %1$s, en %2$s/%3$s, propiedade de %4$s",
"Card comments" : "Comentarios da tarxeta", "Card comments" : "Comentarios da tarxeta",
"%s on %s" : "%s en %s", "%s on %s" : "%s en %s",
"Deck boards and cards" : "Taboleiros do Tarxeteiro e tarxetas",
"No data was provided to create an attachment." : "Non se forneceu ningún dato para crear un anexo.", "No data was provided to create an attachment." : "Non se forneceu ningún dato para crear un anexo.",
"Finished" : "Rematado", "Finished" : "Rematado",
"To review" : "Para revisar", "To review" : "Para revisar",
"Action needed" : "Necesita unha acción", "Action needed" : "Necesita unha acción",
"Later" : "Após", "Later" : "Despois",
"copy" : "copiar", "copy" : "copiar",
"To do" : "Tarefa pendente", "To do" : "Para facer",
"Doing" : "Facendo", "Doing" : "Facendo",
"Done" : "Feito", "Done" : "Feito",
"Example Task 3" : "Tarefa de exemplo 3", "Example Task 3" : "Tarefa de exemplo 3",
@@ -106,12 +98,10 @@ OC.L10N.register(
"Could not write file to disk" : "Non foi posíbel escribir o ficheiro no disco", "Could not write file to disk" : "Non foi posíbel escribir o ficheiro no disco",
"A PHP extension stopped the file upload" : "Unha extensión PHP detivo o envío de ficheiros", "A PHP extension stopped the file upload" : "Unha extensión PHP detivo o envío de ficheiros",
"No file uploaded or file size exceeds maximum of %s" : "Non se enviou ningún ficheiro ou o tamaño do ficheiro supera o máximo de %s", "No file uploaded or file size exceeds maximum of %s" : "Non se enviou ningún ficheiro ou o tamaño do ficheiro supera o máximo de %s",
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Este comentario ten máis de %s caracteres.\nEngadido como anexo á tarxeta co nome %s.\nAccesíbel no URL: %s.",
"Card not found" : "Non se atopou a tarxeta", "Card not found" : "Non se atopou a tarxeta",
"Path is already shared with this card" : "A ruta xa está compartida con esta tarxeta", "Path is already shared with this card" : "A ruta xa está compartida con esta tarxeta",
"Invalid date, date format must be YYYY-MM-DD" : "Data incorrecta, o formato da date debe ser AAAA-MM-DD", "Invalid date, date format must be YYYY-MM-DD" : "Data incorrecta, o formato da date debe ser AAAA-MM-DD",
"Personal planning and team project organization" : "Planificación persoal e organización de proxectos de equipo", "Personal planning and team project organization" : "Planificación persoal e organización de proxectos de equipo",
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Tarxeteiro é unha ferramenta de organización de estilo kanban dirixida a planificación persoal e organización de proxectos para equipos integrados con Nextcloud. \n\n\n- 📥 Engada as súas tarefas ás tarxetas e fagas ordenadas\n- 📄 Escriba notas adicionais en Markdown\n- 🔖 Asigne etiquetas para unha mellor organización\n- 👥 Comparta co seu equipo, amigos ou a súa familia\n- 📎 Anexe ficheiros e insíraos na súa descrición de Markdown\n- 💬 Debata co seu equipo usando os comentarios\n- ⚡ Faga un seguimento dos cambios no fluxo de actividade\n- 🚀 Teña o seu proxecto organizado",
"Add board" : "Engadir taboleiro", "Add board" : "Engadir taboleiro",
"Select the board to link to a project" : "Seleccione o taboleiro para ligar a un proxecto", "Select the board to link to a project" : "Seleccione o taboleiro para ligar a un proxecto",
"Search by board title" : "Buscar polo título do taboleiro", "Search by board title" : "Buscar polo título do taboleiro",
@@ -121,8 +111,6 @@ OC.L10N.register(
"Select a list" : "Seleccionar unha lista", "Select a list" : "Seleccionar unha lista",
"Card title" : "Título da tarxeta", "Card title" : "Título da tarxeta",
"Cancel" : "Cancelar", "Cancel" : "Cancelar",
"Creating the new card …" : "Creando unha nova tarxeta…",
"Card \"{card}\" was added to \"{board}\"" : "A tarxeta «{card}» foi engdida a «{board}»",
"Open card" : "Abrir a tarxeta", "Open card" : "Abrir a tarxeta",
"Close" : "Pechar", "Close" : "Pechar",
"Create card" : "Crear tarxeta", "Create card" : "Crear tarxeta",
@@ -140,7 +128,6 @@ OC.L10N.register(
"Archived cards" : "Tarxetas arquivadas", "Archived cards" : "Tarxetas arquivadas",
"Add list" : "Engadir unha lista", "Add list" : "Engadir unha lista",
"List name" : "Nome da lista", "List name" : "Nome da lista",
"Active filters" : "Filtros activos",
"Apply filter" : "Aplicar filtro", "Apply filter" : "Aplicar filtro",
"Filter by tag" : "Filtrar pola etiqueta", "Filter by tag" : "Filtrar pola etiqueta",
"Filter by assigned user" : "Filtrar polo usuario asignado", "Filter by assigned user" : "Filtrar polo usuario asignado",
@@ -157,7 +144,6 @@ OC.L10N.register(
"Toggle compact mode" : "Alternar o modo compacto", "Toggle compact mode" : "Alternar o modo compacto",
"Open details" : "Abrir detalles", "Open details" : "Abrir detalles",
"Details" : "Detalles", "Details" : "Detalles",
"Currently present people" : "Persoas presentes na actualidade",
"Loading board" : "Cargando o taboleiro", "Loading board" : "Cargando o taboleiro",
"No lists available" : "Non hai listas dispoñíbeis", "No lists available" : "Non hai listas dispoñíbeis",
"Create a new list to add cards to this board" : "Crear unha nova lista para engadir tarxetas a este taboleiro", "Create a new list to add cards to this board" : "Crear unha nova lista para engadir tarxetas a este taboleiro",
@@ -181,17 +167,10 @@ OC.L10N.register(
"Owner" : "Propietario", "Owner" : "Propietario",
"Delete" : "Eliminar", "Delete" : "Eliminar",
"Failed to create share with {displayName}" : "Produciuse un fallo ao crear o uso compartido con {displayName}", "Failed to create share with {displayName}" : "Produciuse un fallo ao crear o uso compartido con {displayName}",
"Are you sure you want to transfer the board {title} to {user}?" : "Confirma que quere transferir o taboleiro {title} a {user}?",
"Transfer the board." : "Transferir o taboleiro.",
"Transfer" : "Transferencia", "Transfer" : "Transferencia",
"The board has been transferred to {user}" : "O taboleiro foi transferido a {user}",
"Failed to transfer the board to {user}" : "Produciuse un fallo ao transferir o taboleiro a {user}",
"Edit list title" : "Editar o título da lista",
"Archive all cards" : "Arquivar todas as tarxetas", "Archive all cards" : "Arquivar todas as tarxetas",
"Unarchive all cards" : "Desarquivar todas as tarxetas",
"Delete list" : "Eliminar lista", "Delete list" : "Eliminar lista",
"Archive all cards in this list" : "Arquivar todas as tarxetas desta lista", "Archive all cards in this list" : "Arquivar todas as tarxetas desta lista",
"Unarchive all cards in this list" : "Desarquivar todas as tarxetas desta lista",
"Add a new card" : "Engadir unha nova tarxeta", "Add a new card" : "Engadir unha nova tarxeta",
"Card name" : "Nome da tarxeta", "Card name" : "Nome da tarxeta",
"List deleted" : "Lista eliminada", "List deleted" : "Lista eliminada",
@@ -202,11 +181,9 @@ OC.L10N.register(
"Members" : "Membros", "Members" : "Membros",
"Upload new files" : "Enviar novos ficheiros", "Upload new files" : "Enviar novos ficheiros",
"Share from Files" : "Compartir dende «Ficheiros»", "Share from Files" : "Compartir dende «Ficheiros»",
"Pending share" : "Recurso compartido pendente",
"Add this attachment" : "Engadir este anexo", "Add this attachment" : "Engadir este anexo",
"Show in Files" : "Amosar en Ficheiros", "Show in Files" : "Amosar en Ficheiros",
"Download" : "Descargar", "Download" : "Descargar",
"Remove attachment" : "Retirar o anexo",
"Delete Attachment" : "Eliminar o anexo", "Delete Attachment" : "Eliminar o anexo",
"Restore Attachment" : "Restaurar o anexo", "Restore Attachment" : "Restaurar o anexo",
"File to share" : "Ficheiro para compartir", "File to share" : "Ficheiro para compartir",
@@ -219,7 +196,6 @@ OC.L10N.register(
"Created" : "Creado", "Created" : "Creado",
"The title cannot be empty." : "O título non pode estar baleiro.", "The title cannot be empty." : "O título non pode estar baleiro.",
"No comments yet. Begin the discussion!" : "Aínda non hai comentarios. Comece o debate!", "No comments yet. Begin the discussion!" : "Aínda non hai comentarios. Comece o debate!",
"Failed to load comments" : "Produciuse un fallo ao cargar os comentarios",
"Assign a tag to this card…" : "Asignar unha etiqueta a esta tarxeta…", "Assign a tag to this card…" : "Asignar unha etiqueta a esta tarxeta…",
"Assign to users" : "Asignar a usuarios", "Assign to users" : "Asignar a usuarios",
"Assign to users/groups/circles" : "Asignar a usuarios/grupos/círculos", "Assign to users/groups/circles" : "Asignar a usuarios/grupos/círculos",
@@ -236,7 +212,6 @@ OC.L10N.register(
"The comment cannot be empty." : "O comentario non pode estar baleiro", "The comment cannot be empty." : "O comentario non pode estar baleiro",
"The comment cannot be longer than 1000 characters." : "O comentario non pode ter máis de 1000 caracteres.", "The comment cannot be longer than 1000 characters." : "O comentario non pode ter máis de 1000 caracteres.",
"In reply to" : "En resposta a", "In reply to" : "En resposta a",
"Cancel reply" : "Cancelar a resposta",
"Reply" : "Responder", "Reply" : "Responder",
"Update" : "Actualizar", "Update" : "Actualizar",
"Description" : "Descrición", "Description" : "Descrición",
@@ -249,9 +224,6 @@ OC.L10N.register(
"Write a description …" : "Escriba unha descrición…", "Write a description …" : "Escriba unha descrición…",
"Choose attachment" : "Escoller o anexo", "Choose attachment" : "Escoller o anexo",
"(group)" : "(grupo)", "(group)" : "(grupo)",
"Todo items" : "Elementos pendentes",
"{count} comments, {unread} unread" : "{count} comentarios, {unread} sen ler",
"Edit card title" : "Editar o título da tarxeta",
"Assign to me" : "Asignarme", "Assign to me" : "Asignarme",
"Unassign myself" : "Desasignarme", "Unassign myself" : "Desasignarme",
"Move card" : "Mover a tarxeta", "Move card" : "Mover a tarxeta",
@@ -262,22 +234,19 @@ OC.L10N.register(
"Move card to another board" : "Mover a tarxeta a outro taboleiro", "Move card to another board" : "Mover a tarxeta a outro taboleiro",
"List is empty" : "A lista está baleira", "List is empty" : "A lista está baleira",
"Card deleted" : "Tarxeta eliminada", "Card deleted" : "Tarxeta eliminada",
"seconds ago" : "segundos atrás", "seconds ago" : "hai uns segundos",
"All boards" : "Todos os taboleiros", "All boards" : "Todos os taboleiros",
"Archived boards" : "Taboleiros arquivados", "Archived boards" : "Taboleiros arquivados",
"Shared with you" : "Compartido con vostede", "Shared with you" : "Compartido con vostede",
"Deck settings" : "Axustes do Tarxeteiro",
"Use bigger card view" : "Usa a vista de tarxeta máis grande", "Use bigger card view" : "Usa a vista de tarxeta máis grande",
"Show card ID badge" : "Amosar o distintivo de identificación da tarxeta",
"Show boards in calendar/tasks" : "Amosar taboleiros no calendario/tarefas", "Show boards in calendar/tasks" : "Amosar taboleiros no calendario/tarefas",
"Limit deck usage of groups" : "Limitar o uso da plataforma a grupos", "Limit deck usage of groups" : "Limitar o uso da plataforma a grupos",
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitando o Tarxeteiro bloqueará os usuarios que non formen parte destes grupos, para crear os seus propios taboleiros. Os usuarios aínda así poderán traballar en taboleiros compartidos con eles.", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitando Deck bloqueará os usuarios que non formen parte destes grupos, para crear os seus propios taboleiros. Os usuarios aínda así poderán traballar en taboleiros compartidos con eles.",
"Board details" : "Detalles do taboleiro", "Board details" : "Detalles do taboleiro",
"Edit board" : "Editar taboleiro", "Edit board" : "Editar taboleiro",
"Clone board" : "Clonar taboleiro", "Clone board" : "Clonar taboleiro",
"Unarchive board" : "Desarquivar taboleiro", "Unarchive board" : "Desarquivar taboleiro",
"Archive board" : "Arquivar taboleiro", "Archive board" : "Arquivar taboleiro",
"Export board" : "Exportar taboleiro",
"Turn on due date reminders" : "Activar os lembretes de data de caducidade", "Turn on due date reminders" : "Activar os lembretes de data de caducidade",
"Turn off due date reminders" : "Desctivar os lembretes de data de caducidade", "Turn off due date reminders" : "Desctivar os lembretes de data de caducidade",
"Due date reminders" : "Lembretes de data de caducidade", "Due date reminders" : "Lembretes de data de caducidade",
@@ -289,22 +258,14 @@ OC.L10N.register(
"Only assigned cards" : "Só as tarxetas asignadas", "Only assigned cards" : "Só as tarxetas asignadas",
"No reminder" : "Non hai lembretes", "No reminder" : "Non hai lembretes",
"An error occurred" : "Produciuse un erro", "An error occurred" : "Produciuse un erro",
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Confirma que quere eliminar o taboleiro {title}? Isto eliminará todos os datos deste taboleiro, incluídas as tarxetas arquivadas.",
"Delete the board?" : "Eliminar o taboleiro?", "Delete the board?" : "Eliminar o taboleiro?",
"Loading filtered view" : "Cargando a vista filtrada", "Loading filtered view" : "Cargando a vista filtrada",
"No due" : "Sen caducidade", "No due" : "Sen caducidade",
"Search for {searchQuery} in all boards" : "Resultados de busca para {searchQuery} en todos os taboleiros", "Search for {searchQuery} in all boards" : "Resultados de busca para {searchQuery} en todos os taboleiros",
"No results found" : "Non se atoparon resultados", "No results found" : "Non se atoparon resultados",
"Deck board {name}\n* Last modified on {lastMod}" : "Taboleiro do Tarxeteiro {nome}\n* Última modificación en {lastMod}",
"{stack} in {board}" : "{stack} en {board}", "{stack} in {board}" : "{stack} en {board}",
"Click to expand description" : "Prema para ampliar a descrición",
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Creado o {created}\n* Última modificación o {lastMod}\n* {nbAttachments} anexos\n* {nbComments} comentarios",
"{nbCards} cards" : "{nbCards} tarxetas",
"Click to expand comment" : "Prema para ampliar o comentario",
"No upcoming cards" : "Non hai tarxetas próximas", "No upcoming cards" : "Non hai tarxetas próximas",
"upcoming cards" : "tarxetas próximas", "upcoming cards" : "tarxetas próximas",
"New card" : "Nova tarxeta",
"Due on {date}" : "Caduca o {date}",
"Link to a board" : "Ligar a un taboleiro", "Link to a board" : "Ligar a un taboleiro",
"Link to a card" : "Ligar a unha tarxeta", "Link to a card" : "Ligar a unha tarxeta",
"Create a card" : "Crear unha tarxeta", "Create a card" : "Crear unha tarxeta",
@@ -313,8 +274,8 @@ OC.L10N.register(
"Failed to upload {name}" : "Produciuse un fallo ao actualizar {name}", "Failed to upload {name}" : "Produciuse un fallo ao actualizar {name}",
"Maximum file size of {size} exceeded" : "Excedeuse o tamaño máximo de ficheiro de {size}", "Maximum file size of {size} exceeded" : "Excedeuse o tamaño máximo de ficheiro de {size}",
"Error creating the share" : "Produciuse un erro ao crear a compartición", "Error creating the share" : "Produciuse un erro ao crear a compartición",
"Share with a Deck card" : "Compartir cunha tarxeta de Tarxeteiro", "Share with a Deck card" : "Compartir cunha tarxeta Deck",
"Share {file} with a Deck card" : "Compartir {file} cunha tarxeta de Tarxeteiro", "Share {file} with a Deck card" : "Compartir {file} cunha tarxeta Deck",
"Share" : "Compartir", "Share" : "Compartir",
"Add a new list" : "Engadir unha lista nova" "Add a new list" : "Engadir unha lista nova"
}, },

View File

@@ -61,35 +61,27 @@
"{user} has restored the attachment {attachment} to card {card}" : "{user} restaurou o anexo {attachment} da tarxeta {card}", "{user} has restored the attachment {attachment} to card {card}" : "{user} restaurou o anexo {attachment} da tarxeta {card}",
"You have commented on card {card}" : "Vostede comentou na tarxeta {card}", "You have commented on card {card}" : "Vostede comentou na tarxeta {card}",
"{user} has commented on card {card}" : "{user} comentou na tarxeta {card}", "{user} has commented on card {card}" : "{user} comentou na tarxeta {card}",
"A <strong>card description</strong> inside the Deck app has been changed" : "Cambiouse a <strong>descripción da tarxeta</strong> dentro da aplicación Tarxeteiro", "A <strong>card description</strong> inside the Deck app has been changed" : "Cambiouse a <strong>descripción da tarxeta</strong> dentro da aplicación Deck",
"Deck" : "Tarxeteiro", "Deck" : "Deck",
"Changes in the <strong>Deck app</strong>" : "Cambios na <strong>aplicación Tarxeteiro</strong>", "Changes in the <strong>Deck app</strong>" : "Cambios na <strong>aplicación Deck</strong>",
"A <strong>comment</strong> was created on a card" : "Creouse un <strong>comentario</strong> nunha tarxeta", "A <strong>comment</strong> was created on a card" : "Creouse un <strong>comentario</strong> nunha tarxeta",
"Upcoming cards" : "Tarxetas próximas", "Upcoming cards" : "Tarxetas próximas",
"Load more" : "Cargar máis", "Load more" : "Cargar máis",
"Personal" : "Persoal", "Personal" : "Persoal",
"The card \"%s\" on \"%s\" has been assigned to you by %s." : "A tarxeta «%s» en «%s» foi asignada a vostede por %s.", "The card \"%s\" on \"%s\" has been assigned to you by %s." : "A tarxeta «%s» en «%s» foi asignada a vostede por %s.",
"{user} has assigned the card {deck-card} on {deck-board} to you." : "{user} asignoulle a tarxeta {deck-card} en {deck-board} a vostede.", "The card \"%s\" on \"%s\" has reached its due date." : "A tarxeta «%s» en «%s» chegou á súa data de caducidade.",
"The card \"%s\" on \"%s\" has reached its due date." : "A tarxeta «%s» en «%s» acadou a súa data de caducidade.",
"The card {deck-card} on {deck-board} has reached its due date." : "A tarxeta {deck-card} en {deck-board} chegou á súa data de caducidade.",
"%s has mentioned you in a comment on \"%s\"." : "%s mencionouno a vostede nun comentario en «%s».", "%s has mentioned you in a comment on \"%s\"." : "%s mencionouno a vostede nun comentario en «%s».",
"{user} has mentioned you in a comment on {deck-card}." : "{user} mencionouno a vostede nun comentario en {deck-card}.",
"The board \"%s\" has been shared with you by %s." : "O taboleiro «%s» foi compartido con vostede por %s.", "The board \"%s\" has been shared with you by %s." : "O taboleiro «%s» foi compartido con vostede por %s.",
"{user} has shared {deck-board} with you." : "{user} compartiu {deck-board} con vostede.", "Deck board" : "Taboleiro do Deck",
"Deck board" : "Taboleiro do Tarxeteiro",
"Owned by %1$s" : "Propiedade de %1$s",
"Deck boards, cards and comments" : "Taboleiros do Tarxeteiro, tarxetas e comentarios",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "De %1$s, en %2$s/%3$s, propiedade de %4$s",
"Card comments" : "Comentarios da tarxeta", "Card comments" : "Comentarios da tarxeta",
"%s on %s" : "%s en %s", "%s on %s" : "%s en %s",
"Deck boards and cards" : "Taboleiros do Tarxeteiro e tarxetas",
"No data was provided to create an attachment." : "Non se forneceu ningún dato para crear un anexo.", "No data was provided to create an attachment." : "Non se forneceu ningún dato para crear un anexo.",
"Finished" : "Rematado", "Finished" : "Rematado",
"To review" : "Para revisar", "To review" : "Para revisar",
"Action needed" : "Necesita unha acción", "Action needed" : "Necesita unha acción",
"Later" : "Após", "Later" : "Despois",
"copy" : "copiar", "copy" : "copiar",
"To do" : "Tarefa pendente", "To do" : "Para facer",
"Doing" : "Facendo", "Doing" : "Facendo",
"Done" : "Feito", "Done" : "Feito",
"Example Task 3" : "Tarefa de exemplo 3", "Example Task 3" : "Tarefa de exemplo 3",
@@ -104,12 +96,10 @@
"Could not write file to disk" : "Non foi posíbel escribir o ficheiro no disco", "Could not write file to disk" : "Non foi posíbel escribir o ficheiro no disco",
"A PHP extension stopped the file upload" : "Unha extensión PHP detivo o envío de ficheiros", "A PHP extension stopped the file upload" : "Unha extensión PHP detivo o envío de ficheiros",
"No file uploaded or file size exceeds maximum of %s" : "Non se enviou ningún ficheiro ou o tamaño do ficheiro supera o máximo de %s", "No file uploaded or file size exceeds maximum of %s" : "Non se enviou ningún ficheiro ou o tamaño do ficheiro supera o máximo de %s",
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "Este comentario ten máis de %s caracteres.\nEngadido como anexo á tarxeta co nome %s.\nAccesíbel no URL: %s.",
"Card not found" : "Non se atopou a tarxeta", "Card not found" : "Non se atopou a tarxeta",
"Path is already shared with this card" : "A ruta xa está compartida con esta tarxeta", "Path is already shared with this card" : "A ruta xa está compartida con esta tarxeta",
"Invalid date, date format must be YYYY-MM-DD" : "Data incorrecta, o formato da date debe ser AAAA-MM-DD", "Invalid date, date format must be YYYY-MM-DD" : "Data incorrecta, o formato da date debe ser AAAA-MM-DD",
"Personal planning and team project organization" : "Planificación persoal e organización de proxectos de equipo", "Personal planning and team project organization" : "Planificación persoal e organización de proxectos de equipo",
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Tarxeteiro é unha ferramenta de organización de estilo kanban dirixida a planificación persoal e organización de proxectos para equipos integrados con Nextcloud. \n\n\n- 📥 Engada as súas tarefas ás tarxetas e fagas ordenadas\n- 📄 Escriba notas adicionais en Markdown\n- 🔖 Asigne etiquetas para unha mellor organización\n- 👥 Comparta co seu equipo, amigos ou a súa familia\n- 📎 Anexe ficheiros e insíraos na súa descrición de Markdown\n- 💬 Debata co seu equipo usando os comentarios\n- ⚡ Faga un seguimento dos cambios no fluxo de actividade\n- 🚀 Teña o seu proxecto organizado",
"Add board" : "Engadir taboleiro", "Add board" : "Engadir taboleiro",
"Select the board to link to a project" : "Seleccione o taboleiro para ligar a un proxecto", "Select the board to link to a project" : "Seleccione o taboleiro para ligar a un proxecto",
"Search by board title" : "Buscar polo título do taboleiro", "Search by board title" : "Buscar polo título do taboleiro",
@@ -119,8 +109,6 @@
"Select a list" : "Seleccionar unha lista", "Select a list" : "Seleccionar unha lista",
"Card title" : "Título da tarxeta", "Card title" : "Título da tarxeta",
"Cancel" : "Cancelar", "Cancel" : "Cancelar",
"Creating the new card …" : "Creando unha nova tarxeta…",
"Card \"{card}\" was added to \"{board}\"" : "A tarxeta «{card}» foi engdida a «{board}»",
"Open card" : "Abrir a tarxeta", "Open card" : "Abrir a tarxeta",
"Close" : "Pechar", "Close" : "Pechar",
"Create card" : "Crear tarxeta", "Create card" : "Crear tarxeta",
@@ -138,7 +126,6 @@
"Archived cards" : "Tarxetas arquivadas", "Archived cards" : "Tarxetas arquivadas",
"Add list" : "Engadir unha lista", "Add list" : "Engadir unha lista",
"List name" : "Nome da lista", "List name" : "Nome da lista",
"Active filters" : "Filtros activos",
"Apply filter" : "Aplicar filtro", "Apply filter" : "Aplicar filtro",
"Filter by tag" : "Filtrar pola etiqueta", "Filter by tag" : "Filtrar pola etiqueta",
"Filter by assigned user" : "Filtrar polo usuario asignado", "Filter by assigned user" : "Filtrar polo usuario asignado",
@@ -155,7 +142,6 @@
"Toggle compact mode" : "Alternar o modo compacto", "Toggle compact mode" : "Alternar o modo compacto",
"Open details" : "Abrir detalles", "Open details" : "Abrir detalles",
"Details" : "Detalles", "Details" : "Detalles",
"Currently present people" : "Persoas presentes na actualidade",
"Loading board" : "Cargando o taboleiro", "Loading board" : "Cargando o taboleiro",
"No lists available" : "Non hai listas dispoñíbeis", "No lists available" : "Non hai listas dispoñíbeis",
"Create a new list to add cards to this board" : "Crear unha nova lista para engadir tarxetas a este taboleiro", "Create a new list to add cards to this board" : "Crear unha nova lista para engadir tarxetas a este taboleiro",
@@ -179,17 +165,10 @@
"Owner" : "Propietario", "Owner" : "Propietario",
"Delete" : "Eliminar", "Delete" : "Eliminar",
"Failed to create share with {displayName}" : "Produciuse un fallo ao crear o uso compartido con {displayName}", "Failed to create share with {displayName}" : "Produciuse un fallo ao crear o uso compartido con {displayName}",
"Are you sure you want to transfer the board {title} to {user}?" : "Confirma que quere transferir o taboleiro {title} a {user}?",
"Transfer the board." : "Transferir o taboleiro.",
"Transfer" : "Transferencia", "Transfer" : "Transferencia",
"The board has been transferred to {user}" : "O taboleiro foi transferido a {user}",
"Failed to transfer the board to {user}" : "Produciuse un fallo ao transferir o taboleiro a {user}",
"Edit list title" : "Editar o título da lista",
"Archive all cards" : "Arquivar todas as tarxetas", "Archive all cards" : "Arquivar todas as tarxetas",
"Unarchive all cards" : "Desarquivar todas as tarxetas",
"Delete list" : "Eliminar lista", "Delete list" : "Eliminar lista",
"Archive all cards in this list" : "Arquivar todas as tarxetas desta lista", "Archive all cards in this list" : "Arquivar todas as tarxetas desta lista",
"Unarchive all cards in this list" : "Desarquivar todas as tarxetas desta lista",
"Add a new card" : "Engadir unha nova tarxeta", "Add a new card" : "Engadir unha nova tarxeta",
"Card name" : "Nome da tarxeta", "Card name" : "Nome da tarxeta",
"List deleted" : "Lista eliminada", "List deleted" : "Lista eliminada",
@@ -200,11 +179,9 @@
"Members" : "Membros", "Members" : "Membros",
"Upload new files" : "Enviar novos ficheiros", "Upload new files" : "Enviar novos ficheiros",
"Share from Files" : "Compartir dende «Ficheiros»", "Share from Files" : "Compartir dende «Ficheiros»",
"Pending share" : "Recurso compartido pendente",
"Add this attachment" : "Engadir este anexo", "Add this attachment" : "Engadir este anexo",
"Show in Files" : "Amosar en Ficheiros", "Show in Files" : "Amosar en Ficheiros",
"Download" : "Descargar", "Download" : "Descargar",
"Remove attachment" : "Retirar o anexo",
"Delete Attachment" : "Eliminar o anexo", "Delete Attachment" : "Eliminar o anexo",
"Restore Attachment" : "Restaurar o anexo", "Restore Attachment" : "Restaurar o anexo",
"File to share" : "Ficheiro para compartir", "File to share" : "Ficheiro para compartir",
@@ -217,7 +194,6 @@
"Created" : "Creado", "Created" : "Creado",
"The title cannot be empty." : "O título non pode estar baleiro.", "The title cannot be empty." : "O título non pode estar baleiro.",
"No comments yet. Begin the discussion!" : "Aínda non hai comentarios. Comece o debate!", "No comments yet. Begin the discussion!" : "Aínda non hai comentarios. Comece o debate!",
"Failed to load comments" : "Produciuse un fallo ao cargar os comentarios",
"Assign a tag to this card…" : "Asignar unha etiqueta a esta tarxeta…", "Assign a tag to this card…" : "Asignar unha etiqueta a esta tarxeta…",
"Assign to users" : "Asignar a usuarios", "Assign to users" : "Asignar a usuarios",
"Assign to users/groups/circles" : "Asignar a usuarios/grupos/círculos", "Assign to users/groups/circles" : "Asignar a usuarios/grupos/círculos",
@@ -234,7 +210,6 @@
"The comment cannot be empty." : "O comentario non pode estar baleiro", "The comment cannot be empty." : "O comentario non pode estar baleiro",
"The comment cannot be longer than 1000 characters." : "O comentario non pode ter máis de 1000 caracteres.", "The comment cannot be longer than 1000 characters." : "O comentario non pode ter máis de 1000 caracteres.",
"In reply to" : "En resposta a", "In reply to" : "En resposta a",
"Cancel reply" : "Cancelar a resposta",
"Reply" : "Responder", "Reply" : "Responder",
"Update" : "Actualizar", "Update" : "Actualizar",
"Description" : "Descrición", "Description" : "Descrición",
@@ -247,9 +222,6 @@
"Write a description …" : "Escriba unha descrición…", "Write a description …" : "Escriba unha descrición…",
"Choose attachment" : "Escoller o anexo", "Choose attachment" : "Escoller o anexo",
"(group)" : "(grupo)", "(group)" : "(grupo)",
"Todo items" : "Elementos pendentes",
"{count} comments, {unread} unread" : "{count} comentarios, {unread} sen ler",
"Edit card title" : "Editar o título da tarxeta",
"Assign to me" : "Asignarme", "Assign to me" : "Asignarme",
"Unassign myself" : "Desasignarme", "Unassign myself" : "Desasignarme",
"Move card" : "Mover a tarxeta", "Move card" : "Mover a tarxeta",
@@ -260,22 +232,19 @@
"Move card to another board" : "Mover a tarxeta a outro taboleiro", "Move card to another board" : "Mover a tarxeta a outro taboleiro",
"List is empty" : "A lista está baleira", "List is empty" : "A lista está baleira",
"Card deleted" : "Tarxeta eliminada", "Card deleted" : "Tarxeta eliminada",
"seconds ago" : "segundos atrás", "seconds ago" : "hai uns segundos",
"All boards" : "Todos os taboleiros", "All boards" : "Todos os taboleiros",
"Archived boards" : "Taboleiros arquivados", "Archived boards" : "Taboleiros arquivados",
"Shared with you" : "Compartido con vostede", "Shared with you" : "Compartido con vostede",
"Deck settings" : "Axustes do Tarxeteiro",
"Use bigger card view" : "Usa a vista de tarxeta máis grande", "Use bigger card view" : "Usa a vista de tarxeta máis grande",
"Show card ID badge" : "Amosar o distintivo de identificación da tarxeta",
"Show boards in calendar/tasks" : "Amosar taboleiros no calendario/tarefas", "Show boards in calendar/tasks" : "Amosar taboleiros no calendario/tarefas",
"Limit deck usage of groups" : "Limitar o uso da plataforma a grupos", "Limit deck usage of groups" : "Limitar o uso da plataforma a grupos",
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitando o Tarxeteiro bloqueará os usuarios que non formen parte destes grupos, para crear os seus propios taboleiros. Os usuarios aínda así poderán traballar en taboleiros compartidos con eles.", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limitando Deck bloqueará os usuarios que non formen parte destes grupos, para crear os seus propios taboleiros. Os usuarios aínda así poderán traballar en taboleiros compartidos con eles.",
"Board details" : "Detalles do taboleiro", "Board details" : "Detalles do taboleiro",
"Edit board" : "Editar taboleiro", "Edit board" : "Editar taboleiro",
"Clone board" : "Clonar taboleiro", "Clone board" : "Clonar taboleiro",
"Unarchive board" : "Desarquivar taboleiro", "Unarchive board" : "Desarquivar taboleiro",
"Archive board" : "Arquivar taboleiro", "Archive board" : "Arquivar taboleiro",
"Export board" : "Exportar taboleiro",
"Turn on due date reminders" : "Activar os lembretes de data de caducidade", "Turn on due date reminders" : "Activar os lembretes de data de caducidade",
"Turn off due date reminders" : "Desctivar os lembretes de data de caducidade", "Turn off due date reminders" : "Desctivar os lembretes de data de caducidade",
"Due date reminders" : "Lembretes de data de caducidade", "Due date reminders" : "Lembretes de data de caducidade",
@@ -287,22 +256,14 @@
"Only assigned cards" : "Só as tarxetas asignadas", "Only assigned cards" : "Só as tarxetas asignadas",
"No reminder" : "Non hai lembretes", "No reminder" : "Non hai lembretes",
"An error occurred" : "Produciuse un erro", "An error occurred" : "Produciuse un erro",
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "Confirma que quere eliminar o taboleiro {title}? Isto eliminará todos os datos deste taboleiro, incluídas as tarxetas arquivadas.",
"Delete the board?" : "Eliminar o taboleiro?", "Delete the board?" : "Eliminar o taboleiro?",
"Loading filtered view" : "Cargando a vista filtrada", "Loading filtered view" : "Cargando a vista filtrada",
"No due" : "Sen caducidade", "No due" : "Sen caducidade",
"Search for {searchQuery} in all boards" : "Resultados de busca para {searchQuery} en todos os taboleiros", "Search for {searchQuery} in all boards" : "Resultados de busca para {searchQuery} en todos os taboleiros",
"No results found" : "Non se atoparon resultados", "No results found" : "Non se atoparon resultados",
"Deck board {name}\n* Last modified on {lastMod}" : "Taboleiro do Tarxeteiro {nome}\n* Última modificación en {lastMod}",
"{stack} in {board}" : "{stack} en {board}", "{stack} in {board}" : "{stack} en {board}",
"Click to expand description" : "Prema para ampliar a descrición",
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* Creado o {created}\n* Última modificación o {lastMod}\n* {nbAttachments} anexos\n* {nbComments} comentarios",
"{nbCards} cards" : "{nbCards} tarxetas",
"Click to expand comment" : "Prema para ampliar o comentario",
"No upcoming cards" : "Non hai tarxetas próximas", "No upcoming cards" : "Non hai tarxetas próximas",
"upcoming cards" : "tarxetas próximas", "upcoming cards" : "tarxetas próximas",
"New card" : "Nova tarxeta",
"Due on {date}" : "Caduca o {date}",
"Link to a board" : "Ligar a un taboleiro", "Link to a board" : "Ligar a un taboleiro",
"Link to a card" : "Ligar a unha tarxeta", "Link to a card" : "Ligar a unha tarxeta",
"Create a card" : "Crear unha tarxeta", "Create a card" : "Crear unha tarxeta",
@@ -311,8 +272,8 @@
"Failed to upload {name}" : "Produciuse un fallo ao actualizar {name}", "Failed to upload {name}" : "Produciuse un fallo ao actualizar {name}",
"Maximum file size of {size} exceeded" : "Excedeuse o tamaño máximo de ficheiro de {size}", "Maximum file size of {size} exceeded" : "Excedeuse o tamaño máximo de ficheiro de {size}",
"Error creating the share" : "Produciuse un erro ao crear a compartición", "Error creating the share" : "Produciuse un erro ao crear a compartición",
"Share with a Deck card" : "Compartir cunha tarxeta de Tarxeteiro", "Share with a Deck card" : "Compartir cunha tarxeta Deck",
"Share {file} with a Deck card" : "Compartir {file} cunha tarxeta de Tarxeteiro", "Share {file} with a Deck card" : "Compartir {file} cunha tarxeta Deck",
"Share" : "Compartir", "Share" : "Compartir",
"Add a new list" : "Engadir unha lista nova" "Add a new list" : "Engadir unha lista nova"
},"pluralForm" :"nplurals=2; plural=(n != 1);" },"pluralForm" :"nplurals=2; plural=(n != 1);"

View File

@@ -10,7 +10,6 @@ OC.L10N.register(
"The board \"%s\" has been shared with you by %s." : "\"%s\" 게시판을 %s 님이 공유했습니다.", "The board \"%s\" has been shared with you by %s." : "\"%s\" 게시판을 %s 님이 공유했습니다.",
"Deck board" : "Deck 보드", "Deck board" : "Deck 보드",
"%s on %s" : "%s(%s의)", "%s on %s" : "%s(%s의)",
"No data was provided to create an attachment." : "첨부할 데이터가 제공되지 않았습니다.",
"Finished" : "완료됨", "Finished" : "완료됨",
"To review" : "리뷰할 항목", "To review" : "리뷰할 항목",
"Action needed" : "동작 필요", "Action needed" : "동작 필요",
@@ -29,9 +28,8 @@ OC.L10N.register(
"Missing a temporary folder" : "임시 폴더 없음", "Missing a temporary folder" : "임시 폴더 없음",
"Could not write file to disk" : "디스크에 파일을 쓸 수 없음", "Could not write file to disk" : "디스크에 파일을 쓸 수 없음",
"A PHP extension stopped the file upload" : "PHP 확장 기능에서 파일 업로드를 차단함", "A PHP extension stopped the file upload" : "PHP 확장 기능에서 파일 업로드를 차단함",
"No file uploaded or file size exceeds maximum of %s" : "파일이 업로드 되지 않았거나 크기가 %s(을)를 초과함",
"Card not found" : "카드 없음", "Card not found" : "카드 없음",
"Invalid date, date format must be YYYY-MM-DD" : "잘못된 날짜, YYYY-MM-DD 형식이어야 합니다.", "Invalid date, date format must be YYYY-MM-DD" : "잘못된 날짜, YYYY-MM-DD 형식이어야 합니다",
"Add board" : "보드 추가", "Add board" : "보드 추가",
"Search by board title" : "보드 제목으로 검색", "Search by board title" : "보드 제목으로 검색",
"Select board" : "보드 선택", "Select board" : "보드 선택",
@@ -64,7 +62,6 @@ OC.L10N.register(
"No due date" : "기한 없음", "No due date" : "기한 없음",
"Hide archived cards" : "보관된 카드 숨기기", "Hide archived cards" : "보관된 카드 숨기기",
"Show archived cards" : "보관된 카드 보기", "Show archived cards" : "보관된 카드 보기",
"Toggle compact mode" : "컴팩트 모드 전환",
"Open details" : "자세한 정보 열기", "Open details" : "자세한 정보 열기",
"Details" : "세부사항", "Details" : "세부사항",
"Sharing" : "공유", "Sharing" : "공유",
@@ -72,7 +69,7 @@ OC.L10N.register(
"Deleted items" : "삭제된 항목", "Deleted items" : "삭제된 항목",
"Timeline" : "타임라인", "Timeline" : "타임라인",
"Undo" : "실행 취소", "Undo" : "실행 취소",
"No participants found" : "참자를 찾을 수 없음", "No participants found" : "참자를 찾을 수 없음",
"(Group)" : "(그룹)", "(Group)" : "(그룹)",
"Can edit" : "편집할 수 있음", "Can edit" : "편집할 수 있음",
"Can share" : "공유할 수 있음", "Can share" : "공유할 수 있음",
@@ -83,7 +80,7 @@ OC.L10N.register(
"Edit" : "편집", "Edit" : "편집",
"Members" : "구성원", "Members" : "구성원",
"Upload new files" : "새로운 파일 업로드", "Upload new files" : "새로운 파일 업로드",
"Share from Files" : "파일에서 공유", "Share from Files" : "파일 공유",
"Download" : "다운로드", "Download" : "다운로드",
"File to share" : "공유할 파일", "File to share" : "공유할 파일",
"Invalid path selected" : "잘못된 경로가 선택됨", "Invalid path selected" : "잘못된 경로가 선택됨",
@@ -126,9 +123,7 @@ OC.L10N.register(
"An error occurred" : "오류가 발생함", "An error occurred" : "오류가 발생함",
"Delete the board?" : "보드를 삭제합니까?", "Delete the board?" : "보드를 삭제합니까?",
"No results found" : "결과 없음", "No results found" : "결과 없음",
"{stack} in {board}" : "{board}의 {stack}",
"Something went wrong" : "잘못된 접근", "Something went wrong" : "잘못된 접근",
"Error creating the share" : "공유를 만드는 중 오류 발생",
"Share" : "공유" "Share" : "공유"
}, },
"nplurals=1; plural=0;"); "nplurals=1; plural=0;");

View File

@@ -8,7 +8,6 @@
"The board \"%s\" has been shared with you by %s." : "\"%s\" 게시판을 %s 님이 공유했습니다.", "The board \"%s\" has been shared with you by %s." : "\"%s\" 게시판을 %s 님이 공유했습니다.",
"Deck board" : "Deck 보드", "Deck board" : "Deck 보드",
"%s on %s" : "%s(%s의)", "%s on %s" : "%s(%s의)",
"No data was provided to create an attachment." : "첨부할 데이터가 제공되지 않았습니다.",
"Finished" : "완료됨", "Finished" : "완료됨",
"To review" : "리뷰할 항목", "To review" : "리뷰할 항목",
"Action needed" : "동작 필요", "Action needed" : "동작 필요",
@@ -27,9 +26,8 @@
"Missing a temporary folder" : "임시 폴더 없음", "Missing a temporary folder" : "임시 폴더 없음",
"Could not write file to disk" : "디스크에 파일을 쓸 수 없음", "Could not write file to disk" : "디스크에 파일을 쓸 수 없음",
"A PHP extension stopped the file upload" : "PHP 확장 기능에서 파일 업로드를 차단함", "A PHP extension stopped the file upload" : "PHP 확장 기능에서 파일 업로드를 차단함",
"No file uploaded or file size exceeds maximum of %s" : "파일이 업로드 되지 않았거나 크기가 %s(을)를 초과함",
"Card not found" : "카드 없음", "Card not found" : "카드 없음",
"Invalid date, date format must be YYYY-MM-DD" : "잘못된 날짜, YYYY-MM-DD 형식이어야 합니다.", "Invalid date, date format must be YYYY-MM-DD" : "잘못된 날짜, YYYY-MM-DD 형식이어야 합니다",
"Add board" : "보드 추가", "Add board" : "보드 추가",
"Search by board title" : "보드 제목으로 검색", "Search by board title" : "보드 제목으로 검색",
"Select board" : "보드 선택", "Select board" : "보드 선택",
@@ -62,7 +60,6 @@
"No due date" : "기한 없음", "No due date" : "기한 없음",
"Hide archived cards" : "보관된 카드 숨기기", "Hide archived cards" : "보관된 카드 숨기기",
"Show archived cards" : "보관된 카드 보기", "Show archived cards" : "보관된 카드 보기",
"Toggle compact mode" : "컴팩트 모드 전환",
"Open details" : "자세한 정보 열기", "Open details" : "자세한 정보 열기",
"Details" : "세부사항", "Details" : "세부사항",
"Sharing" : "공유", "Sharing" : "공유",
@@ -70,7 +67,7 @@
"Deleted items" : "삭제된 항목", "Deleted items" : "삭제된 항목",
"Timeline" : "타임라인", "Timeline" : "타임라인",
"Undo" : "실행 취소", "Undo" : "실행 취소",
"No participants found" : "참자를 찾을 수 없음", "No participants found" : "참자를 찾을 수 없음",
"(Group)" : "(그룹)", "(Group)" : "(그룹)",
"Can edit" : "편집할 수 있음", "Can edit" : "편집할 수 있음",
"Can share" : "공유할 수 있음", "Can share" : "공유할 수 있음",
@@ -81,7 +78,7 @@
"Edit" : "편집", "Edit" : "편집",
"Members" : "구성원", "Members" : "구성원",
"Upload new files" : "새로운 파일 업로드", "Upload new files" : "새로운 파일 업로드",
"Share from Files" : "파일에서 공유", "Share from Files" : "파일 공유",
"Download" : "다운로드", "Download" : "다운로드",
"File to share" : "공유할 파일", "File to share" : "공유할 파일",
"Invalid path selected" : "잘못된 경로가 선택됨", "Invalid path selected" : "잘못된 경로가 선택됨",
@@ -124,9 +121,7 @@
"An error occurred" : "오류가 발생함", "An error occurred" : "오류가 발생함",
"Delete the board?" : "보드를 삭제합니까?", "Delete the board?" : "보드를 삭제합니까?",
"No results found" : "결과 없음", "No results found" : "결과 없음",
"{stack} in {board}" : "{board}의 {stack}",
"Something went wrong" : "잘못된 접근", "Something went wrong" : "잘못된 접근",
"Error creating the share" : "공유를 만드는 중 오류 발생",
"Share" : "공유" "Share" : "공유"
},"pluralForm" :"nplurals=1; plural=0;" },"pluralForm" :"nplurals=1; plural=0;"
} }

View File

@@ -23,7 +23,6 @@ OC.L10N.register(
"Cancel" : "Anulează", "Cancel" : "Anulează",
"Close" : "Închide", "Close" : "Închide",
"File already exists" : "Fișierul există deja", "File already exists" : "Fișierul există deja",
"Add card" : "Adaugă card",
"Archived cards" : "Carduri arhivate", "Archived cards" : "Carduri arhivate",
"Add list" : "Adaugă listă ", "Add list" : "Adaugă listă ",
"Filter by tag" : "Filtrare după etichetă", "Filter by tag" : "Filtrare după etichetă",

View File

@@ -21,7 +21,6 @@
"Cancel" : "Anulează", "Cancel" : "Anulează",
"Close" : "Închide", "Close" : "Închide",
"File already exists" : "Fișierul există deja", "File already exists" : "Fișierul există deja",
"Add card" : "Adaugă card",
"Archived cards" : "Carduri arhivate", "Archived cards" : "Carduri arhivate",
"Add list" : "Adaugă listă ", "Add list" : "Adaugă listă ",
"Filter by tag" : "Filtrare după etichetă", "Filter by tag" : "Filtrare după etichetă",

View File

@@ -79,12 +79,8 @@ OC.L10N.register(
"The board \"%s\" has been shared with you by %s." : "面板 \"%s\" 已由 %s 共享给您。", "The board \"%s\" has been shared with you by %s." : "面板 \"%s\" 已由 %s 共享给您。",
"{user} has shared {deck-board} with you." : "{user} 与你分享了 {deck-board}", "{user} has shared {deck-board} with you." : "{user} 与你分享了 {deck-board}",
"Deck board" : "Deck 看板", "Deck board" : "Deck 看板",
"Owned by %1$s" : "由 %1$s 拥有",
"Deck boards, cards and comments" : "Deck 看板、卡片和评论",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "自 %1$s位于 %2$s/%3$s由 %4$s 拥有",
"Card comments" : "卡片评论", "Card comments" : "卡片评论",
"%s on %s" : "%s 于 %s", "%s on %s" : "%s 于 %s",
"Deck boards and cards" : "Deck 面板及卡片",
"No data was provided to create an attachment." : "未能提供数据以创建附件", "No data was provided to create an attachment." : "未能提供数据以创建附件",
"Finished" : "已完成", "Finished" : "已完成",
"To review" : "待复核", "To review" : "待复核",
@@ -106,12 +102,10 @@ OC.L10N.register(
"Could not write file to disk" : "无法写入文件到磁盘", "Could not write file to disk" : "无法写入文件到磁盘",
"A PHP extension stopped the file upload" : "一个PHP扩展程序中断了文件上传。", "A PHP extension stopped the file upload" : "一个PHP扩展程序中断了文件上传。",
"No file uploaded or file size exceeds maximum of %s" : "没有文件被上传或文件大小超出最大值 %s", "No file uploaded or file size exceeds maximum of %s" : "没有文件被上传或文件大小超出最大值 %s",
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "此评论超过%s个字符。\n作为附件添加到名称为 %s 的卡片上。\n可通过 URL 访问:%s。",
"Card not found" : "未找到卡片", "Card not found" : "未找到卡片",
"Path is already shared with this card" : "已和这张卡片分享了路径", "Path is already shared with this card" : "已和这张卡片分享了路径",
"Invalid date, date format must be YYYY-MM-DD" : "无效日期,日期格式必须为 YYYY-MM-DD", "Invalid date, date format must be YYYY-MM-DD" : "无效日期,日期格式必须为 YYYY-MM-DD",
"Personal planning and team project organization" : "个人规划和团队项目安排", "Personal planning and team project organization" : "个人规划和团队项目安排",
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck是一个看板风格的管理工具旨在为与Nextcloud集成的团队进行个人规划和项目管理。\n\n\n- 📥 添加您的任务到卡片并将之整理好\n- 📄 用 Markdown 写下额外的注释\n- 🔖 分配标签以更好地管理您的工作\n- 👥 与您的团队、朋友或家人分享\n- 📎 附件文件并将其嵌入到您的 Markdown 描述中 \n- 💬 使用评论与您的团队沟通\n- ⚡ 在活动流中跟踪变更情况\n- 🚀 让您的项目井井有条",
"Add board" : "添加面板", "Add board" : "添加面板",
"Select the board to link to a project" : "选择要链接到一个项目的面板", "Select the board to link to a project" : "选择要链接到一个项目的面板",
"Search by board title" : "通过标题搜索面板", "Search by board title" : "通过标题搜索面板",
@@ -157,7 +151,6 @@ OC.L10N.register(
"Toggle compact mode" : "切换简洁模式", "Toggle compact mode" : "切换简洁模式",
"Open details" : "打开详情", "Open details" : "打开详情",
"Details" : "详情", "Details" : "详情",
"Currently present people" : "当前在线的人",
"Loading board" : "正在加载面板", "Loading board" : "正在加载面板",
"No lists available" : "无列表可用", "No lists available" : "无列表可用",
"Create a new list to add cards to this board" : "创建新列表后,即可在面板中新建卡片", "Create a new list to add cards to this board" : "创建新列表后,即可在面板中新建卡片",
@@ -181,17 +174,10 @@ OC.L10N.register(
"Owner" : "所有者", "Owner" : "所有者",
"Delete" : "删除", "Delete" : "删除",
"Failed to create share with {displayName}" : "用{displayName}创建分享失败", "Failed to create share with {displayName}" : "用{displayName}创建分享失败",
"Are you sure you want to transfer the board {title} to {user}?" : "您确定要将面板 {title} 转移到 {user} 吗?", "Transfer" : "传输",
"Transfer the board." : "转移面板。",
"Transfer" : "转移",
"The board has been transferred to {user}" : "面板已转移给 {user}",
"Failed to transfer the board to {user}" : "未能将面板转移给 {user}",
"Edit list title" : "编辑列表标题",
"Archive all cards" : "归档所有卡片", "Archive all cards" : "归档所有卡片",
"Unarchive all cards" : "取消归档所有卡片",
"Delete list" : "删除列表", "Delete list" : "删除列表",
"Archive all cards in this list" : "将该列表中的所有卡片归档", "Archive all cards in this list" : "将该列表中的所有卡片归档",
"Unarchive all cards in this list" : "取消归档所有此列表中的卡片",
"Add a new card" : "添加一张新卡片", "Add a new card" : "添加一张新卡片",
"Card name" : "卡片名", "Card name" : "卡片名",
"List deleted" : "列表被删除", "List deleted" : "列表被删除",
@@ -266,9 +252,7 @@ OC.L10N.register(
"All boards" : "全部面板", "All boards" : "全部面板",
"Archived boards" : "已归档面板", "Archived boards" : "已归档面板",
"Shared with you" : "收到的共享", "Shared with you" : "收到的共享",
"Deck settings" : "看板设置",
"Use bigger card view" : "使用较大的卡片视图", "Use bigger card view" : "使用较大的卡片视图",
"Show card ID badge" : "显示卡片ID序号",
"Show boards in calendar/tasks" : "在日历/任务中显示看板", "Show boards in calendar/tasks" : "在日历/任务中显示看板",
"Limit deck usage of groups" : "按群组限制看板的使用权", "Limit deck usage of groups" : "按群组限制看板的使用权",
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "限制看板的使用权后,不在指定群组中的用户将不能新建面板,但仍可使用已共享给他们的面板。", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "限制看板的使用权后,不在指定群组中的用户将不能新建面板,但仍可使用已共享给他们的面板。",
@@ -277,7 +261,6 @@ OC.L10N.register(
"Clone board" : "克隆面板", "Clone board" : "克隆面板",
"Unarchive board" : "撤销对面板的归档", "Unarchive board" : "撤销对面板的归档",
"Archive board" : "归档面板", "Archive board" : "归档面板",
"Export board" : "导出面板",
"Turn on due date reminders" : "打开截止日期提醒", "Turn on due date reminders" : "打开截止日期提醒",
"Turn off due date reminders" : "关闭截止日期提醒", "Turn off due date reminders" : "关闭截止日期提醒",
"Due date reminders" : "截止日期提醒", "Due date reminders" : "截止日期提醒",
@@ -289,22 +272,15 @@ OC.L10N.register(
"Only assigned cards" : "仅限已指派的卡片", "Only assigned cards" : "仅限已指派的卡片",
"No reminder" : "无提醒", "No reminder" : "无提醒",
"An error occurred" : "发生错误", "An error occurred" : "发生错误",
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "您确定要删除面板 {title} 吗?这将删除该面板的所有数据,包括已归档卡片。",
"Delete the board?" : "是否删除面板?", "Delete the board?" : "是否删除面板?",
"Loading filtered view" : "正在加载已筛选的视图", "Loading filtered view" : "正在加载已筛选的视图",
"No due" : "没有到期的", "No due" : "没有到期的",
"Search for {searchQuery} in all boards" : "在所有看板中搜索 {searchQuery}", "Search for {searchQuery} in all boards" : "在所有看板中搜索 {searchQuery}",
"No results found" : "未找到结果", "No results found" : "未找到结果",
"Deck board {name}\n* Last modified on {lastMod}" : "看板面板 {name}\n* 最后修改于 {lastMod}",
"{stack} in {board}" : "{stack} 于 {board}", "{stack} in {board}" : "{stack} 于 {board}",
"Click to expand description" : "点击展开描述", "Click to expand description" : "点击展开描述",
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* 创建于 {created}\n* 最后修改于 {lastMod}\n* {nbAttachments} 个附件\n* {nbComments} 个评论",
"{nbCards} cards" : "{nbCards} 张卡片",
"Click to expand comment" : "点击展开评论",
"No upcoming cards" : "没有即将到来的卡片", "No upcoming cards" : "没有即将到来的卡片",
"upcoming cards" : "即将到来的卡片", "upcoming cards" : "即将到来的卡片",
"New card" : "新卡片",
"Due on {date}" : "于 {date} 到期 ",
"Link to a board" : "链接到一个面板", "Link to a board" : "链接到一个面板",
"Link to a card" : "链接到一张卡片", "Link to a card" : "链接到一张卡片",
"Create a card" : "创建一张卡片", "Create a card" : "创建一张卡片",

View File

@@ -77,12 +77,8 @@
"The board \"%s\" has been shared with you by %s." : "面板 \"%s\" 已由 %s 共享给您。", "The board \"%s\" has been shared with you by %s." : "面板 \"%s\" 已由 %s 共享给您。",
"{user} has shared {deck-board} with you." : "{user} 与你分享了 {deck-board}", "{user} has shared {deck-board} with you." : "{user} 与你分享了 {deck-board}",
"Deck board" : "Deck 看板", "Deck board" : "Deck 看板",
"Owned by %1$s" : "由 %1$s 拥有",
"Deck boards, cards and comments" : "Deck 看板、卡片和评论",
"From %1$s, in %2$s/%3$s, owned by %4$s" : "自 %1$s位于 %2$s/%3$s由 %4$s 拥有",
"Card comments" : "卡片评论", "Card comments" : "卡片评论",
"%s on %s" : "%s 于 %s", "%s on %s" : "%s 于 %s",
"Deck boards and cards" : "Deck 面板及卡片",
"No data was provided to create an attachment." : "未能提供数据以创建附件", "No data was provided to create an attachment." : "未能提供数据以创建附件",
"Finished" : "已完成", "Finished" : "已完成",
"To review" : "待复核", "To review" : "待复核",
@@ -104,12 +100,10 @@
"Could not write file to disk" : "无法写入文件到磁盘", "Could not write file to disk" : "无法写入文件到磁盘",
"A PHP extension stopped the file upload" : "一个PHP扩展程序中断了文件上传。", "A PHP extension stopped the file upload" : "一个PHP扩展程序中断了文件上传。",
"No file uploaded or file size exceeds maximum of %s" : "没有文件被上传或文件大小超出最大值 %s", "No file uploaded or file size exceeds maximum of %s" : "没有文件被上传或文件大小超出最大值 %s",
"This comment has more than %s characters.\nAdded as an attachment to the card with name %s.\nAccessible on URL: %s." : "此评论超过%s个字符。\n作为附件添加到名称为 %s 的卡片上。\n可通过 URL 访问:%s。",
"Card not found" : "未找到卡片", "Card not found" : "未找到卡片",
"Path is already shared with this card" : "已和这张卡片分享了路径", "Path is already shared with this card" : "已和这张卡片分享了路径",
"Invalid date, date format must be YYYY-MM-DD" : "无效日期,日期格式必须为 YYYY-MM-DD", "Invalid date, date format must be YYYY-MM-DD" : "无效日期,日期格式必须为 YYYY-MM-DD",
"Personal planning and team project organization" : "个人规划和团队项目安排", "Personal planning and team project organization" : "个人规划和团队项目安排",
"Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized" : "Deck是一个看板风格的管理工具旨在为与Nextcloud集成的团队进行个人规划和项目管理。\n\n\n- 📥 添加您的任务到卡片并将之整理好\n- 📄 用 Markdown 写下额外的注释\n- 🔖 分配标签以更好地管理您的工作\n- 👥 与您的团队、朋友或家人分享\n- 📎 附件文件并将其嵌入到您的 Markdown 描述中 \n- 💬 使用评论与您的团队沟通\n- ⚡ 在活动流中跟踪变更情况\n- 🚀 让您的项目井井有条",
"Add board" : "添加面板", "Add board" : "添加面板",
"Select the board to link to a project" : "选择要链接到一个项目的面板", "Select the board to link to a project" : "选择要链接到一个项目的面板",
"Search by board title" : "通过标题搜索面板", "Search by board title" : "通过标题搜索面板",
@@ -155,7 +149,6 @@
"Toggle compact mode" : "切换简洁模式", "Toggle compact mode" : "切换简洁模式",
"Open details" : "打开详情", "Open details" : "打开详情",
"Details" : "详情", "Details" : "详情",
"Currently present people" : "当前在线的人",
"Loading board" : "正在加载面板", "Loading board" : "正在加载面板",
"No lists available" : "无列表可用", "No lists available" : "无列表可用",
"Create a new list to add cards to this board" : "创建新列表后,即可在面板中新建卡片", "Create a new list to add cards to this board" : "创建新列表后,即可在面板中新建卡片",
@@ -179,17 +172,10 @@
"Owner" : "所有者", "Owner" : "所有者",
"Delete" : "删除", "Delete" : "删除",
"Failed to create share with {displayName}" : "用{displayName}创建分享失败", "Failed to create share with {displayName}" : "用{displayName}创建分享失败",
"Are you sure you want to transfer the board {title} to {user}?" : "您确定要将面板 {title} 转移到 {user} 吗?", "Transfer" : "传输",
"Transfer the board." : "转移面板。",
"Transfer" : "转移",
"The board has been transferred to {user}" : "面板已转移给 {user}",
"Failed to transfer the board to {user}" : "未能将面板转移给 {user}",
"Edit list title" : "编辑列表标题",
"Archive all cards" : "归档所有卡片", "Archive all cards" : "归档所有卡片",
"Unarchive all cards" : "取消归档所有卡片",
"Delete list" : "删除列表", "Delete list" : "删除列表",
"Archive all cards in this list" : "将该列表中的所有卡片归档", "Archive all cards in this list" : "将该列表中的所有卡片归档",
"Unarchive all cards in this list" : "取消归档所有此列表中的卡片",
"Add a new card" : "添加一张新卡片", "Add a new card" : "添加一张新卡片",
"Card name" : "卡片名", "Card name" : "卡片名",
"List deleted" : "列表被删除", "List deleted" : "列表被删除",
@@ -264,9 +250,7 @@
"All boards" : "全部面板", "All boards" : "全部面板",
"Archived boards" : "已归档面板", "Archived boards" : "已归档面板",
"Shared with you" : "收到的共享", "Shared with you" : "收到的共享",
"Deck settings" : "看板设置",
"Use bigger card view" : "使用较大的卡片视图", "Use bigger card view" : "使用较大的卡片视图",
"Show card ID badge" : "显示卡片ID序号",
"Show boards in calendar/tasks" : "在日历/任务中显示看板", "Show boards in calendar/tasks" : "在日历/任务中显示看板",
"Limit deck usage of groups" : "按群组限制看板的使用权", "Limit deck usage of groups" : "按群组限制看板的使用权",
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "限制看板的使用权后,不在指定群组中的用户将不能新建面板,但仍可使用已共享给他们的面板。", "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "限制看板的使用权后,不在指定群组中的用户将不能新建面板,但仍可使用已共享给他们的面板。",
@@ -275,7 +259,6 @@
"Clone board" : "克隆面板", "Clone board" : "克隆面板",
"Unarchive board" : "撤销对面板的归档", "Unarchive board" : "撤销对面板的归档",
"Archive board" : "归档面板", "Archive board" : "归档面板",
"Export board" : "导出面板",
"Turn on due date reminders" : "打开截止日期提醒", "Turn on due date reminders" : "打开截止日期提醒",
"Turn off due date reminders" : "关闭截止日期提醒", "Turn off due date reminders" : "关闭截止日期提醒",
"Due date reminders" : "截止日期提醒", "Due date reminders" : "截止日期提醒",
@@ -287,22 +270,15 @@
"Only assigned cards" : "仅限已指派的卡片", "Only assigned cards" : "仅限已指派的卡片",
"No reminder" : "无提醒", "No reminder" : "无提醒",
"An error occurred" : "发生错误", "An error occurred" : "发生错误",
"Are you sure you want to delete the board {title}? This will delete all the data of this board including archived cards." : "您确定要删除面板 {title} 吗?这将删除该面板的所有数据,包括已归档卡片。",
"Delete the board?" : "是否删除面板?", "Delete the board?" : "是否删除面板?",
"Loading filtered view" : "正在加载已筛选的视图", "Loading filtered view" : "正在加载已筛选的视图",
"No due" : "没有到期的", "No due" : "没有到期的",
"Search for {searchQuery} in all boards" : "在所有看板中搜索 {searchQuery}", "Search for {searchQuery} in all boards" : "在所有看板中搜索 {searchQuery}",
"No results found" : "未找到结果", "No results found" : "未找到结果",
"Deck board {name}\n* Last modified on {lastMod}" : "看板面板 {name}\n* 最后修改于 {lastMod}",
"{stack} in {board}" : "{stack} 于 {board}", "{stack} in {board}" : "{stack} 于 {board}",
"Click to expand description" : "点击展开描述", "Click to expand description" : "点击展开描述",
"* Created on {created}\n* Last modified on {lastMod}\n* {nbAttachments} attachments\n* {nbComments} comments" : "* 创建于 {created}\n* 最后修改于 {lastMod}\n* {nbAttachments} 个附件\n* {nbComments} 个评论",
"{nbCards} cards" : "{nbCards} 张卡片",
"Click to expand comment" : "点击展开评论",
"No upcoming cards" : "没有即将到来的卡片", "No upcoming cards" : "没有即将到来的卡片",
"upcoming cards" : "即将到来的卡片", "upcoming cards" : "即将到来的卡片",
"New card" : "新卡片",
"Due on {date}" : "于 {date} 到期 ",
"Link to a board" : "链接到一个面板", "Link to a board" : "链接到一个面板",
"Link to a card" : "链接到一张卡片", "Link to a card" : "链接到一张卡片",
"Create a card" : "创建一张卡片", "Create a card" : "创建一张卡片",

View File

@@ -45,8 +45,8 @@ use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Db\MultipleObjectsReturnedException; use OCP\AppFramework\Db\MultipleObjectsReturnedException;
use OCP\Comments\IComment; use OCP\Comments\IComment;
use OCP\IUser; use OCP\IUser;
use OCP\L10N\IFactory;
use OCP\Server; use OCP\Server;
use OCP\L10N\IFactory;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
class ActivityManager { class ActivityManager {
@@ -332,8 +332,8 @@ class ActivityManager {
case self::SUBJECT_BOARD_UPDATE_ARCHIVED: case self::SUBJECT_BOARD_UPDATE_ARCHIVED:
case self::SUBJECT_BOARD_DELETE: case self::SUBJECT_BOARD_DELETE:
case self::SUBJECT_BOARD_RESTORE: case self::SUBJECT_BOARD_RESTORE:
// Not defined as there is no activity for // Not defined as there is no activity for
// case self::SUBJECT_BOARD_UPDATE_COLOR // case self::SUBJECT_BOARD_UPDATE_COLOR
break; break;
case self::SUBJECT_CARD_COMMENT_CREATE: case self::SUBJECT_CARD_COMMENT_CREATE:
$eventType = 'deck_comment'; $eventType = 'deck_comment';
@@ -374,7 +374,7 @@ class ActivityManager {
$additionalParams['before'] = $additionalParams['before']->format('c'); $additionalParams['before'] = $additionalParams['before']->format('c');
} }
break; break;
case self::SUBJECT_ATTACHMENT_CREATE: case self::SUBJECT_ATTACHMENT_CREATE:
case self::SUBJECT_ATTACHMENT_UPDATE: case self::SUBJECT_ATTACHMENT_UPDATE:
case self::SUBJECT_ATTACHMENT_DELETE: case self::SUBJECT_ATTACHMENT_DELETE:

View File

@@ -23,12 +23,12 @@
namespace OCA\Deck\Activity; namespace OCA\Deck\Activity;
use \OCP\Comments\ICommentsEventHandler;
use OCA\Deck\Db\CardMapper; use OCA\Deck\Db\CardMapper;
use OCA\Deck\Db\ChangeHelper; use OCA\Deck\Db\ChangeHelper;
use OCA\Deck\Notification\NotificationHelper; use OCA\Deck\Notification\NotificationHelper;
use OCP\Comments\CommentsEvent; use OCP\Comments\CommentsEvent;
use OCP\Comments\IComment; use OCP\Comments\IComment;
use \OCP\Comments\ICommentsEventHandler;
class CommentEventHandler implements ICommentsEventHandler { class CommentEventHandler implements ICommentsEventHandler {

View File

@@ -26,7 +26,6 @@
namespace OCA\Deck\Activity; namespace OCA\Deck\Activity;
use OCA\Deck\Db\Acl; use OCA\Deck\Db\Acl;
use OCA\Deck\Service\CardService;
use OCP\Activity\IEvent; use OCP\Activity\IEvent;
use OCP\Activity\IProvider; use OCP\Activity\IProvider;
use OCP\Comments\IComment; use OCP\Comments\IComment;
@@ -36,6 +35,7 @@ use OCP\IConfig;
use OCP\IURLGenerator; use OCP\IURLGenerator;
use OCP\IUserManager; use OCP\IUserManager;
use OCP\L10N\IFactory; use OCP\L10N\IFactory;
use OCA\Deck\Service\CardService;
class DeckProvider implements IProvider { class DeckProvider implements IProvider {

View File

@@ -43,11 +43,11 @@ use OCA\Deck\Event\CardUpdatedEvent;
use OCA\Deck\Event\SessionClosedEvent; use OCA\Deck\Event\SessionClosedEvent;
use OCA\Deck\Event\SessionCreatedEvent; use OCA\Deck\Event\SessionCreatedEvent;
use OCA\Deck\Listeners\BeforeTemplateRenderedListener; use OCA\Deck\Listeners\BeforeTemplateRenderedListener;
use OCA\Deck\Listeners\FullTextSearchEventListener;
use OCA\Deck\Listeners\LiveUpdateListener;
use OCA\Deck\Listeners\ParticipantCleanupListener; use OCA\Deck\Listeners\ParticipantCleanupListener;
use OCA\Deck\Listeners\FullTextSearchEventListener;
use OCA\Deck\Listeners\ResourceAdditionalScriptsListener; use OCA\Deck\Listeners\ResourceAdditionalScriptsListener;
use OCA\Deck\Listeners\ResourceListener; use OCA\Deck\Listeners\ResourceListener;
use OCA\Deck\Listeners\LiveUpdateListener;
use OCA\Deck\Middleware\DefaultBoardMiddleware; use OCA\Deck\Middleware\DefaultBoardMiddleware;
use OCA\Deck\Middleware\ExceptionMiddleware; use OCA\Deck\Middleware\ExceptionMiddleware;
use OCA\Deck\Notification\Notifier; use OCA\Deck\Notification\Notifier;

View File

@@ -46,12 +46,12 @@ class UserExport extends Command {
private $assignedUsersMapper; private $assignedUsersMapper;
public function __construct(BoardMapper $boardMapper, public function __construct(BoardMapper $boardMapper,
BoardService $boardService, BoardService $boardService,
StackMapper $stackMapper, StackMapper $stackMapper,
CardMapper $cardMapper, CardMapper $cardMapper,
AssignmentMapper $assignedUsersMapper, AssignmentMapper $assignedUsersMapper,
IUserManager $userManager, IUserManager $userManager,
IGroupManager $groupManager) { IGroupManager $groupManager) {
parent::__construct(); parent::__construct();
$this->cardMapper = $cardMapper; $this->cardMapper = $cardMapper;
@@ -79,12 +79,12 @@ class UserExport extends Command {
/** /**
* @param InputInterface $input * @param InputInterface $input
* @param OutputInterface $output * @param OutputInterface $output
* @return int * @return void
* @throws DoesNotExistException * @throws DoesNotExistException
* @throws MultipleObjectsReturnedException * @throws MultipleObjectsReturnedException
* @throws \ReflectionException * @throws \ReflectionException
*/ */
protected function execute(InputInterface $input, OutputInterface $output): int { protected function execute(InputInterface $input, OutputInterface $output) {
$userId = $input->getArgument('user-id'); $userId = $input->getArgument('user-id');
$this->boardService->setUserId($userId); $this->boardService->setUserId($userId);
@@ -109,6 +109,5 @@ class UserExport extends Command {
} }
} }
$output->writeln(json_encode($data, JSON_PRETTY_PRINT)); $output->writeln(json_encode($data, JSON_PRETTY_PRINT));
return 0;
} }
} }

View File

@@ -22,11 +22,11 @@
*/ */
namespace OCA\Deck\Controller; namespace OCA\Deck\Controller;
use OCA\Deck\Service\AttachmentService;
use OCP\AppFramework\ApiController; use OCP\AppFramework\ApiController;
use OCP\AppFramework\Http; use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\DataResponse;
use OCP\IRequest; use OCP\IRequest;
use OCA\Deck\Service\AttachmentService;
class AttachmentApiController extends ApiController { class AttachmentApiController extends ApiController {
private $attachmentService; private $attachmentService;

View File

@@ -25,13 +25,13 @@
namespace OCA\Deck\Controller; namespace OCA\Deck\Controller;
use OCA\Deck\Db\Board; use OCA\Deck\Db\Board;
use OCA\Deck\Service\BoardService;
use OCA\Deck\StatusException; use OCA\Deck\StatusException;
use OCP\AppFramework\ApiController; use OCP\AppFramework\ApiController;
use OCP\AppFramework\Http; use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\DataResponse;
use OCP\IRequest; use OCP\IRequest;
use OCA\Deck\Service\BoardService;
use Sabre\HTTP\Util; use Sabre\HTTP\Util;
/** /**

View File

@@ -23,20 +23,20 @@
* *
*/ */
namespace OCA\Deck\Controller; namespace OCA\Deck\Controller;
use OCA\Deck\Service\AssignmentService; use OCA\Deck\Service\AssignmentService;
use OCA\Deck\Service\CardService; use OCP\AppFramework\ApiController;
use OCP\AppFramework\ApiController; use OCP\AppFramework\Http;
use OCP\AppFramework\Http; use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\Http\DataResponse; use OCP\IRequest;
use OCP\IRequest; use OCA\Deck\Service\CardService;
/** /**
* Class BoardApiController * Class BoardApiController
* *
* @package OCA\Deck\Controller * @package OCA\Deck\Controller
*/ */
class CardApiController extends ApiController { class CardApiController extends ApiController {
private $cardService; private $cardService;
private $userId; private $userId;

View File

@@ -25,8 +25,8 @@ namespace OCA\Deck\Controller;
use OCA\Deck\Service\AssignmentService; use OCA\Deck\Service\AssignmentService;
use OCA\Deck\Service\CardService; use OCA\Deck\Service\CardService;
use OCP\AppFramework\Controller;
use OCP\IRequest; use OCP\IRequest;
use OCP\AppFramework\Controller;
class CardController extends Controller { class CardController extends Controller {
private $userId; private $userId;

View File

@@ -36,7 +36,7 @@ class ConfigController extends OCSController {
$AppName, $AppName,
IRequest $request, IRequest $request,
ConfigService $configService ConfigService $configService
) { ) {
parent::__construct($AppName, $request); parent::__construct($AppName, $request);
$this->configService = $configService; $this->configService = $configService;

View File

@@ -23,11 +23,11 @@
namespace OCA\Deck\Controller; namespace OCA\Deck\Controller;
use OCA\Deck\Service\LabelService;
use OCP\AppFramework\ApiController; use OCP\AppFramework\ApiController;
use OCP\AppFramework\Http; use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\DataResponse;
use OCP\IRequest; use OCP\IRequest;
use OCA\Deck\Service\LabelService;
/** /**
* Class BoardApiController * Class BoardApiController

View File

@@ -24,8 +24,8 @@
namespace OCA\Deck\Controller; namespace OCA\Deck\Controller;
use OCA\Deck\Service\LabelService; use OCA\Deck\Service\LabelService;
use OCP\AppFramework\Controller;
use OCP\IRequest; use OCP\IRequest;
use OCP\AppFramework\Controller;
class LabelController extends Controller { class LabelController extends Controller {
private $labelService; private $labelService;

View File

@@ -23,25 +23,25 @@
namespace OCA\Deck\Controller; namespace OCA\Deck\Controller;
use \OCP\AppFramework\Http\RedirectResponse;
use OCA\Deck\AppInfo\Application; use OCA\Deck\AppInfo\Application;
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\CardMapper;
use OCA\Deck\Service\CardService;
use OCA\Deck\Service\ConfigService; use OCA\Deck\Service\ConfigService;
use OCA\Deck\Service\PermissionService; use OCA\Deck\Service\PermissionService;
use OCA\Files\Event\LoadSidebar; use OCA\Files\Event\LoadSidebar;
use OCA\Text\Event\LoadEditor; use OCA\Text\Event\LoadEditor;
use OCA\Viewer\Event\LoadViewer; use OCA\Viewer\Event\LoadViewer;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\ContentSecurityPolicy; use OCP\AppFramework\Http\ContentSecurityPolicy;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\Collaboration\Resources\LoadAdditionalScriptsEvent as CollaborationResourcesEvent; use OCP\Collaboration\Resources\LoadAdditionalScriptsEvent as CollaborationResourcesEvent;
use OCP\EventDispatcher\IEventDispatcher; use OCP\EventDispatcher\IEventDispatcher;
use OCP\IConfig; use OCP\IConfig;
use OCP\IInitialStateService; use OCP\IInitialStateService;
use OCP\IRequest; use OCP\IRequest;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Controller;
use OCA\Deck\Db\CardMapper;
use OCP\IURLGenerator; use OCP\IURLGenerator;
use \OCP\AppFramework\Http\RedirectResponse;
use OCA\Deck\Db\Acl;
use OCA\Deck\Service\CardService;
class PageController extends Controller { class PageController extends Controller {
private PermissionService $permissionService; private PermissionService $permissionService;
@@ -64,7 +64,7 @@ class PageController extends Controller {
IURLGenerator $urlGenerator, IURLGenerator $urlGenerator,
CardService $cardService, CardService $cardService,
IConfig $config IConfig $config
) { ) {
parent::__construct($AppName, $request); parent::__construct($AppName, $request);
$this->permissionService = $permissionService; $this->permissionService = $permissionService;

View File

@@ -24,14 +24,14 @@ declare(strict_types=1);
namespace OCA\Deck\Controller; namespace OCA\Deck\Controller;
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Service\PermissionService;
use OCA\Deck\Service\SessionService; use OCA\Deck\Service\SessionService;
use OCA\Deck\Service\PermissionService;
use OCA\Deck\Db\BoardMapper;
use OCP\AppFramework\Db\DoesNotExistException; use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCSController; use OCP\AppFramework\OCSController;
use OCP\IRequest; use OCP\IRequest;
use OCA\Deck\Db\Acl;
class SessionController extends OCSController { class SessionController extends OCSController {
private SessionService $sessionService; private SessionService $sessionService;

View File

@@ -24,13 +24,13 @@
namespace OCA\Deck\Controller; namespace OCA\Deck\Controller;
use OCA\Deck\Service\BoardService;
use OCA\Deck\Service\StackService;
use OCA\Deck\StatusException; use OCA\Deck\StatusException;
use OCP\AppFramework\ApiController; use OCP\AppFramework\ApiController;
use OCP\AppFramework\Http; use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\DataResponse;
use OCP\IRequest; use OCP\IRequest;
use OCA\Deck\Service\StackService;
use OCA\Deck\Service\BoardService;
use Sabre\HTTP\Util; use Sabre\HTTP\Util;
/** /**

View File

@@ -25,10 +25,10 @@ namespace OCA\Deck\Controller;
use OCA\Deck\Service\StackService; use OCA\Deck\Service\StackService;
use OCP\AppFramework\Controller;
use OCP\IRequest; use OCP\IRequest;
use OCP\AppFramework\Controller;
class StackController extends Controller { class StackController extends Controller {
private $userId; private $userId;
private $stackService; private $stackService;

View File

@@ -24,10 +24,10 @@
namespace OCA\Deck\Cron; namespace OCA\Deck\Cron;
use OCA\Deck\Activity\ActivityManager;
use OCA\Deck\Db\CardMapper;
use OCP\AppFramework\Utility\ITimeFactory; use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\Job; use OCP\BackgroundJob\Job;
use OCA\Deck\Activity\ActivityManager;
use OCA\Deck\Db\CardMapper;
class CardDescriptionActivity extends Job { class CardDescriptionActivity extends Job {

View File

@@ -24,14 +24,14 @@
namespace OCA\Deck\Cron; namespace OCA\Deck\Cron;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\TimedJob;
use OCA\Deck\Db\AttachmentMapper; use OCA\Deck\Db\AttachmentMapper;
use OCA\Deck\Db\BoardMapper; use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\CardMapper; use OCA\Deck\Db\CardMapper;
use OCA\Deck\InvalidAttachmentType; use OCA\Deck\InvalidAttachmentType;
use OCA\Deck\Service\AttachmentService; use OCA\Deck\Service\AttachmentService;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\IJob; use OCP\BackgroundJob\IJob;
use OCP\BackgroundJob\TimedJob;
class DeleteCron extends TimedJob { class DeleteCron extends TimedJob {

View File

@@ -23,12 +23,12 @@
namespace OCA\Deck\Cron; namespace OCA\Deck\Cron;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\Job;
use OCA\Deck\Db\Card; use OCA\Deck\Db\Card;
use OCA\Deck\Db\CardMapper; use OCA\Deck\Db\CardMapper;
use OCA\Deck\Notification\NotificationHelper; use OCA\Deck\Notification\NotificationHelper;
use OCP\AppFramework\Db\DoesNotExistException; use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\Job;
use OCP\ILogger; use OCP\ILogger;
class ScheduledNotifications extends Job { class ScheduledNotifications extends Job {

View File

@@ -39,8 +39,8 @@ class SessionsCleanup extends TimedJob {
public function __construct(ITimeFactory $time, public function __construct(ITimeFactory $time,
SessionService $sessionService, SessionService $sessionService,
ILogger $logger) { ILogger $logger) {
parent::__construct($time); parent::__construct($time);
$this->sessionService = $sessionService; $this->sessionService = $sessionService;
$this->logger = $logger; $this->logger = $logger;

View File

@@ -29,8 +29,8 @@ use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Db\QBMapper; use OCP\AppFramework\Db\QBMapper;
use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection; use OCP\IDBConnection;
use OCP\IGroupManager;
use OCP\IUserManager; use OCP\IUserManager;
use OCP\IGroupManager;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
/** @template-extends QBMapper<Board> */ /** @template-extends QBMapper<Board> */
@@ -126,9 +126,9 @@ class BoardMapper extends QBMapper implements IPermissionMapper {
$groupIds = $this->groupManager->getUserGroupIds($this->userManager->get($userId)); $groupIds = $this->groupManager->getUserGroupIds($this->userManager->get($userId));
if (count($groupIds) !== 0) { if (count($groupIds) !== 0) {
$qb->orWhere($qb->expr()->andX( $qb->orWhere($qb->expr()->andX(
$qb->expr()->in('acl.participant', $qb->createNamedParameter($groupIds, IQueryBuilder::PARAM_STR_ARRAY)), $qb->expr()->in('acl.participant', $qb->createNamedParameter($groupIds, IQueryBuilder::PARAM_STR_ARRAY)),
$qb->expr()->eq('acl.type', $qb->createNamedParameter(Acl::PERMISSION_TYPE_GROUP, IQueryBuilder::PARAM_INT)), $qb->expr()->eq('acl.type', $qb->createNamedParameter(Acl::PERMISSION_TYPE_GROUP, IQueryBuilder::PARAM_INT)),
)); ));
} }
// Shared to circles of the user // Shared to circles of the user
@@ -147,7 +147,7 @@ class BoardMapper extends QBMapper implements IPermissionMapper {
} }
public function findAllForUser(string $userId, ?int $since = null, bool $includeArchived = true, ?int $before = null, public function findAllForUser(string $userId, ?int $since = null, bool $includeArchived = true, ?int $before = null,
?string $term = null): array { ?string $term = null): array {
$useCache = ($since === -1 && $includeArchived === true && $before === null && $term === null); $useCache = ($since === -1 && $includeArchived === true && $before === null && $term === null);
if (!isset($this->userBoardCache[$userId]) || !$useCache) { if (!isset($this->userBoardCache[$userId]) || !$useCache) {
$groups = $this->groupManager->getUserGroupIds( $groups = $this->groupManager->getUserGroupIds(
@@ -186,7 +186,7 @@ class BoardMapper extends QBMapper implements IPermissionMapper {
* Find all boards for a given user * Find all boards for a given user
*/ */
public function findAllByUser(string $userId, ?int $limit = null, ?int $offset = null, ?int $since = null, public function findAllByUser(string $userId, ?int $limit = null, ?int $offset = null, ?int $since = null,
bool $includeArchived = true, ?int $before = null, ?string $term = null): array { bool $includeArchived = true, ?int $before = null, ?string $term = null): array {
// FIXME this used to be a UNION to get boards owned by $userId and the user shares in one single query // FIXME this used to be a UNION to get boards owned by $userId and the user shares in one single query
// Is it possible with the query builder? // Is it possible with the query builder?
$qb = $this->db->getQueryBuilder(); $qb = $this->db->getQueryBuilder();
@@ -293,7 +293,7 @@ class BoardMapper extends QBMapper implements IPermissionMapper {
* Find all boards for a given user * Find all boards for a given user
*/ */
public function findAllByGroups(string $userId, array $groups, ?int $limit = null, ?int $offset = null, ?int $since = null, public function findAllByGroups(string $userId, array $groups, ?int $limit = null, ?int $offset = null, ?int $since = null,
bool $includeArchived = true, ?int $before = null, ?string $term = null): array { bool $includeArchived = true, ?int $before = null, ?string $term = null): array {
if (count($groups) <= 0) { if (count($groups) <= 0) {
return []; return [];
} }
@@ -347,7 +347,7 @@ class BoardMapper extends QBMapper implements IPermissionMapper {
} }
public function findAllByCircles(string $userId, ?int $limit = null, ?int $offset = null, ?int $since = null, public function findAllByCircles(string $userId, ?int $limit = null, ?int $offset = null, ?int $since = null,
bool $includeArchived = true, ?int $before = null, ?string $term = null) { bool $includeArchived = true, ?int $before = null, ?string $term = null) {
$circles = $this->circlesService->getUserCircles($userId); $circles = $this->circlesService->getUserCircles($userId);
if (count($circles) === 0) { if (count($circles) === 0) {
return []; return [];

View File

@@ -23,8 +23,8 @@
namespace OCA\Deck\Db; namespace OCA\Deck\Db;
use OCP\ICache;
use OCP\ICacheFactory; use OCP\ICacheFactory;
use OCP\ICache;
use OCP\IDBConnection; use OCP\IDBConnection;
use OCP\IRequest; use OCP\IRequest;

View File

@@ -28,9 +28,9 @@ use OCP\AppFramework\Db\Entity;
use OCP\AppFramework\Db\MultipleObjectsReturnedException; use OCP\AppFramework\Db\MultipleObjectsReturnedException;
use OCP\Cache\CappedMemoryCache; use OCP\Cache\CappedMemoryCache;
use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\IDBConnection;
use OCP\ICache; use OCP\ICache;
use OCP\ICacheFactory; use OCP\ICacheFactory;
use OCP\IDBConnection;
/** @template-extends DeckMapper<Stack> */ /** @template-extends DeckMapper<Stack> */
class StackMapper extends DeckMapper implements IPermissionMapper { class StackMapper extends DeckMapper implements IPermissionMapper {

View File

@@ -27,13 +27,13 @@ declare(strict_types=1);
namespace OCA\Deck\Listeners; namespace OCA\Deck\Listeners;
use OCA\Deck\Db\StackMapper; use OCA\Deck\Db\StackMapper;
use OCA\Deck\NotifyPushEvents;
use OCA\Deck\Event\AAclEvent; use OCA\Deck\Event\AAclEvent;
use OCA\Deck\Event\ACardEvent; use OCA\Deck\Event\ACardEvent;
use OCA\Deck\Event\BoardUpdatedEvent; use OCA\Deck\Event\BoardUpdatedEvent;
use OCA\Deck\Event\CardUpdatedEvent; use OCA\Deck\Event\CardUpdatedEvent;
use OCA\Deck\Event\SessionClosedEvent; use OCA\Deck\Event\SessionClosedEvent;
use OCA\Deck\Event\SessionCreatedEvent; use OCA\Deck\Event\SessionCreatedEvent;
use OCA\Deck\NotifyPushEvents;
use OCA\Deck\Service\SessionService; use OCA\Deck\Service\SessionService;
use OCA\NotifyPush\Queue\IQueue; use OCA\NotifyPush\Queue\IQueue;
use OCP\EventDispatcher\Event; use OCP\EventDispatcher\Event;

View File

@@ -24,16 +24,16 @@
namespace OCA\Deck\Middleware; namespace OCA\Deck\Middleware;
use OCA\Deck\Controller\PageController; use OCA\Deck\Controller\PageController;
use OCA\Deck\Exceptions\ConflictException;
use OCA\Deck\StatusException; use OCA\Deck\StatusException;
use OCA\Deck\Exceptions\ConflictException;
use OCP\AppFramework\Db\DoesNotExistException; use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\Middleware; use OCP\AppFramework\Middleware;
use OCP\AppFramework\Http\JSONResponse;
use OCP\AppFramework\OCS\OCSException; use OCP\AppFramework\OCS\OCSException;
use OCP\AppFramework\OCSController; use OCP\AppFramework\OCSController;
use OCP\IConfig;
use OCP\ILogger; use OCP\ILogger;
use OCP\IRequest; use OCP\IRequest;
use OCP\IConfig;
class ExceptionMiddleware extends Middleware { class ExceptionMiddleware extends Middleware {

View File

@@ -38,9 +38,9 @@ class BoardReferenceProvider implements IReferenceProvider {
private IL10N $l10n; private IL10N $l10n;
public function __construct(BoardService $boardService, public function __construct(BoardService $boardService,
IURLGenerator $urlGenerator, IURLGenerator $urlGenerator,
IL10N $l10n, IL10N $l10n,
?string $userId) { ?string $userId) {
$this->urlGenerator = $urlGenerator; $this->urlGenerator = $urlGenerator;
$this->boardService = $boardService; $this->boardService = $boardService;
$this->userId = $userId; $this->userId = $userId;

View File

@@ -47,11 +47,11 @@ class CardReferenceProvider extends ADiscoverableReferenceProvider implements IS
private IL10N $l10n; private IL10N $l10n;
public function __construct(CardService $cardService, public function __construct(CardService $cardService,
BoardService $boardService, BoardService $boardService,
StackService $stackService, StackService $stackService,
IURLGenerator $urlGenerator, IURLGenerator $urlGenerator,
IL10N $l10n, IL10N $l10n,
?string $userId) { ?string $userId) {
$this->cardService = $cardService; $this->cardService = $cardService;
$this->urlGenerator = $urlGenerator; $this->urlGenerator = $urlGenerator;
$this->boardService = $boardService; $this->boardService = $boardService;

View File

@@ -48,12 +48,12 @@ class CommentReferenceProvider implements IReferenceProvider {
private CommentService $commentService; private CommentService $commentService;
public function __construct(CardService $cardService, public function __construct(CardService $cardService,
BoardService $boardService, BoardService $boardService,
StackService $stackService, StackService $stackService,
CommentService $commentService, CommentService $commentService,
IURLGenerator $urlGenerator, IURLGenerator $urlGenerator,
IL10N $l10n, IL10N $l10n,
?string $userId) { ?string $userId) {
$this->cardService = $cardService; $this->cardService = $cardService;
$this->urlGenerator = $urlGenerator; $this->urlGenerator = $urlGenerator;
$this->boardService = $boardService; $this->boardService = $boardService;

View File

@@ -26,7 +26,6 @@ namespace OCA\Deck\Service;
use OCA\Deck\Activity\ActivityManager; use OCA\Deck\Activity\ActivityManager;
use OCA\Deck\AppInfo\Application; use OCA\Deck\AppInfo\Application;
use OCA\Deck\BadRequestException; use OCA\Deck\BadRequestException;
use OCA\Deck\Cache\AttachmentCacheHelper;
use OCA\Deck\Db\Acl; use OCA\Deck\Db\Acl;
use OCA\Deck\Db\Attachment; use OCA\Deck\Db\Attachment;
use OCA\Deck\Db\AttachmentMapper; use OCA\Deck\Db\AttachmentMapper;
@@ -35,6 +34,7 @@ use OCA\Deck\Db\ChangeHelper;
use OCA\Deck\InvalidAttachmentType; use OCA\Deck\InvalidAttachmentType;
use OCA\Deck\NoPermissionException; use OCA\Deck\NoPermissionException;
use OCA\Deck\NotFoundException; use OCA\Deck\NotFoundException;
use OCA\Deck\Cache\AttachmentCacheHelper;
use OCA\Deck\StatusException; use OCA\Deck\StatusException;
use OCA\Deck\Validators\AttachmentServiceValidator; use OCA\Deck\Validators\AttachmentServiceValidator;
use OCP\AppFramework\Db\IMapperException; use OCP\AppFramework\Db\IMapperException;

View File

@@ -27,17 +27,13 @@ namespace OCA\Deck\Service;
use OCA\Deck\Activity\ActivityManager; use OCA\Deck\Activity\ActivityManager;
use OCA\Deck\Activity\ChangeSet; use OCA\Deck\Activity\ChangeSet;
use OCA\Deck\AppInfo\Application; use OCA\Deck\AppInfo\Application;
use OCA\Deck\BadRequestException;
use OCA\Deck\Db\Acl; use OCA\Deck\Db\Acl;
use OCA\Deck\Db\AclMapper; use OCA\Deck\Db\AclMapper;
use OCA\Deck\Db\AssignmentMapper; use OCA\Deck\Db\AssignmentMapper;
use OCA\Deck\Db\Board;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\CardMapper; use OCA\Deck\Db\CardMapper;
use OCA\Deck\Db\ChangeHelper; use OCA\Deck\Db\ChangeHelper;
use OCA\Deck\Db\IPermissionMapper; use OCA\Deck\Db\IPermissionMapper;
use OCA\Deck\Db\Label; use OCA\Deck\Db\Label;
use OCA\Deck\Db\LabelMapper;
use OCA\Deck\Db\Session; use OCA\Deck\Db\Session;
use OCA\Deck\Db\SessionMapper; use OCA\Deck\Db\SessionMapper;
use OCA\Deck\Db\Stack; use OCA\Deck\Db\Stack;
@@ -45,20 +41,24 @@ use OCA\Deck\Db\StackMapper;
use OCA\Deck\Event\AclCreatedEvent; use OCA\Deck\Event\AclCreatedEvent;
use OCA\Deck\Event\AclDeletedEvent; use OCA\Deck\Event\AclDeletedEvent;
use OCA\Deck\Event\AclUpdatedEvent; use OCA\Deck\Event\AclUpdatedEvent;
use OCA\Deck\Event\BoardUpdatedEvent;
use OCA\Deck\NoPermissionException; use OCA\Deck\NoPermissionException;
use OCA\Deck\Notification\NotificationHelper; use OCA\Deck\Notification\NotificationHelper;
use OCA\Deck\Validators\BoardServiceValidator;
use OCP\AppFramework\Db\DoesNotExistException; use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Db\MultipleObjectsReturnedException; use OCP\AppFramework\Db\MultipleObjectsReturnedException;
use OCP\DB\Exception as DbException;
use OCP\EventDispatcher\IEventDispatcher; use OCP\EventDispatcher\IEventDispatcher;
use OCP\IConfig; use OCP\IConfig;
use OCP\IDBConnection; use OCP\IDBConnection;
use OCP\IGroupManager; use OCP\IGroupManager;
use OCP\IL10N; use OCP\IL10N;
use OCP\IURLGenerator; use OCP\DB\Exception as DbException;
use OCA\Deck\Db\Board;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\LabelMapper;
use OCP\IUserManager; use OCP\IUserManager;
use OCA\Deck\BadRequestException;
use OCA\Deck\Event\BoardUpdatedEvent;
use OCA\Deck\Validators\BoardServiceValidator;
use OCP\IURLGenerator;
use OCP\Server; use OCP\Server;
use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface; use Psr\Container\NotFoundExceptionInterface;
@@ -138,14 +138,13 @@ class BoardService {
*/ */
public function setUserId(string $userId): void { public function setUserId(string $userId): void {
$this->userId = $userId; $this->userId = $userId;
$this->permissionService->setUserId($userId);
} }
/** /**
* Get all boards that are shared with a user, their groups or circles * Get all boards that are shared with a user, their groups or circles
*/ */
public function getUserBoards(?int $since = null, bool $includeArchived = true, ?int $before = null, public function getUserBoards(?int $since = null, bool $includeArchived = true, ?int $before = null,
?string $term = null): array { ?string $term = null): array {
return $this->boardMapper->findAllForUser($this->userId, $since, $includeArchived, $before, $term); return $this->boardMapper->findAllForUser($this->userId, $since, $includeArchived, $before, $term);
} }

View File

@@ -28,16 +28,13 @@ namespace OCA\Deck\Service;
use OCA\Deck\Activity\ActivityManager; use OCA\Deck\Activity\ActivityManager;
use OCA\Deck\Activity\ChangeSet; use OCA\Deck\Activity\ChangeSet;
use OCA\Deck\BadRequestException;
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\Assignment; use OCA\Deck\Db\Assignment;
use OCA\Deck\Db\AssignmentMapper; use OCA\Deck\Db\AssignmentMapper;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\Card; use OCA\Deck\Db\Card;
use OCA\Deck\Db\CardMapper; use OCA\Deck\Db\CardMapper;
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\ChangeHelper; use OCA\Deck\Db\ChangeHelper;
use OCA\Deck\Db\Label; use OCA\Deck\Db\Label;
use OCA\Deck\Db\LabelMapper;
use OCA\Deck\Db\StackMapper; use OCA\Deck\Db\StackMapper;
use OCA\Deck\Event\CardCreatedEvent; use OCA\Deck\Event\CardCreatedEvent;
use OCA\Deck\Event\CardDeletedEvent; use OCA\Deck\Event\CardDeletedEvent;
@@ -45,13 +42,16 @@ use OCA\Deck\Event\CardUpdatedEvent;
use OCA\Deck\Model\CardDetails; use OCA\Deck\Model\CardDetails;
use OCA\Deck\NoPermissionException; use OCA\Deck\NoPermissionException;
use OCA\Deck\Notification\NotificationHelper; use OCA\Deck\Notification\NotificationHelper;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\LabelMapper;
use OCA\Deck\StatusException; use OCA\Deck\StatusException;
use OCA\Deck\BadRequestException;
use OCA\Deck\Validators\CardServiceValidator; use OCA\Deck\Validators\CardServiceValidator;
use OCP\Comments\ICommentsManager; use OCP\Comments\ICommentsManager;
use OCP\EventDispatcher\IEventDispatcher; use OCP\EventDispatcher\IEventDispatcher;
use OCP\IRequest; use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\IUserManager; use OCP\IUserManager;
use OCP\IURLGenerator;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
class CardService { class CardService {

View File

@@ -24,10 +24,10 @@
namespace OCA\Deck\Service; namespace OCA\Deck\Service;
use OCA\Deck\AppInfo\Application; use OCA\Deck\AppInfo\Application;
use OCA\Deck\BadRequestException;
use OCA\Deck\Db\BoardMapper; use OCA\Deck\Db\BoardMapper;
use OCP\IConfig; use OCP\IConfig;
use OCP\IL10N; use OCP\IL10N;
use OCA\Deck\BadRequestException;
use OCP\PreConditionNotMetException; use OCP\PreConditionNotMetException;
class DefaultBoardService { class DefaultBoardService {
@@ -39,13 +39,13 @@ class DefaultBoardService {
private $l10n; private $l10n;
public function __construct( public function __construct(
IL10N $l10n, IL10N $l10n,
BoardMapper $boardMapper, BoardMapper $boardMapper,
BoardService $boardService, BoardService $boardService,
StackService $stackService, StackService $stackService,
CardService $cardService, CardService $cardService,
IConfig $config IConfig $config
) { ) {
$this->boardService = $boardService; $this->boardService = $boardService;
$this->stackService = $stackService; $this->stackService = $stackService;
$this->cardService = $cardService; $this->cardService = $cardService;

View File

@@ -25,8 +25,8 @@ namespace OCA\Deck\Service;
use OCA\Deck\Db\Attachment; use OCA\Deck\Db\Attachment;
use OCA\Deck\Db\AttachmentMapper; use OCA\Deck\Db\AttachmentMapper;
use OCA\Deck\Exceptions\ConflictException;
use OCA\Deck\StatusException; use OCA\Deck\StatusException;
use OCA\Deck\Exceptions\ConflictException;
use OCP\AppFramework\Http\StreamResponse; use OCP\AppFramework\Http\StreamResponse;
use OCP\Files\IAppData; use OCP\Files\IAppData;
use OCP\Files\IMimeTypeDetector; use OCP\Files\IMimeTypeDetector;

View File

@@ -143,13 +143,11 @@ class BoardImportService {
} }
/** /**
* @param ?string $system * @param mixed $system
* @return self * @return self
*/ */
public function setSystem($system): self { public function setSystem($system): self {
if ($system) { $this->system = $system;
$this->system = $system;
}
return $this; return $this;
} }

View File

@@ -23,12 +23,12 @@
namespace OCA\Deck\Service; namespace OCA\Deck\Service;
use OCA\Deck\BadRequestException;
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\ChangeHelper; use OCA\Deck\Db\ChangeHelper;
use OCA\Deck\Db\Label; use OCA\Deck\Db\Label;
use OCA\Deck\Db\Acl;
use OCA\Deck\Db\LabelMapper; use OCA\Deck\Db\LabelMapper;
use OCA\Deck\StatusException; use OCA\Deck\StatusException;
use OCA\Deck\BadRequestException;
use OCA\Deck\Validators\LabelServiceValidator; use OCA\Deck\Validators\LabelServiceValidator;
class LabelService { class LabelService {
@@ -50,7 +50,7 @@ class LabelService {
BoardService $boardService, BoardService $boardService,
ChangeHelper $changeHelper, ChangeHelper $changeHelper,
LabelServiceValidator $labelServiceValidator LabelServiceValidator $labelServiceValidator
) { ) {
$this->labelMapper = $labelMapper; $this->labelMapper = $labelMapper;
$this->permissionService = $permissionService; $this->permissionService = $permissionService;
$this->boardService = $boardService; $this->boardService = $boardService;

View File

@@ -29,11 +29,11 @@ namespace OCA\Deck\Service;
use OCA\Deck\Db\AssignmentMapper; use OCA\Deck\Db\AssignmentMapper;
use OCA\Deck\Db\Board; use OCA\Deck\Db\Board;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\CardMapper; use OCA\Deck\Db\CardMapper;
use OCA\Deck\Db\LabelMapper;
use OCA\Deck\Model\CardDetails; use OCA\Deck\Model\CardDetails;
use OCP\Comments\ICommentsManager; use OCP\Comments\ICommentsManager;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\LabelMapper;
use OCP\IUserManager; use OCP\IUserManager;
class OverviewService { class OverviewService {

View File

@@ -23,6 +23,7 @@
namespace OCA\Deck\Service; namespace OCA\Deck\Service;
use OCP\Cache\CappedMemoryCache;
use OCA\Circles\Model\Member; use OCA\Circles\Model\Member;
use OCA\Deck\Db\Acl; use OCA\Deck\Db\Acl;
use OCA\Deck\Db\AclMapper; use OCA\Deck\Db\AclMapper;
@@ -33,7 +34,6 @@ use OCA\Deck\Db\User;
use OCA\Deck\NoPermissionException; use OCA\Deck\NoPermissionException;
use OCP\AppFramework\Db\DoesNotExistException; use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Db\MultipleObjectsReturnedException; use OCP\AppFramework\Db\MultipleObjectsReturnedException;
use OCP\Cache\CappedMemoryCache;
use OCP\IConfig; use OCP\IConfig;
use OCP\IGroupManager; use OCP\IGroupManager;
use OCP\ILogger; use OCP\ILogger;

View File

@@ -26,12 +26,12 @@ namespace OCA\Deck\Service;
use OCA\Deck\Db\Session; use OCA\Deck\Db\Session;
use OCA\Deck\Db\SessionMapper; use OCA\Deck\Db\SessionMapper;
use OCA\Deck\Event\SessionClosedEvent;
use OCA\Deck\Event\SessionCreatedEvent; use OCA\Deck\Event\SessionCreatedEvent;
use OCA\NotifyPush\Queue\IQueue; use OCA\Deck\Event\SessionClosedEvent;
use OCP\AppFramework\Db\DoesNotExistException; use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Utility\ITimeFactory; use OCP\AppFramework\Utility\ITimeFactory;
use OCP\EventDispatcher\IEventDispatcher; use OCP\EventDispatcher\IEventDispatcher;
use OCA\NotifyPush\Queue\IQueue;
use OCP\Security\ISecureRandom; use OCP\Security\ISecureRandom;
class SessionService { class SessionService {

View File

@@ -23,7 +23,7 @@
* *
*/ */
declare(strict_types=1); declare(strict_types=1);
namespace OCA\Deck\Validators; namespace OCA\Deck\Validators;

66244
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,108 +1,108 @@
{ {
"name": "deck", "name": "deck",
"description": "", "description": "",
"version": "1.11.0-dev", "version": "1.10.0",
"authors": [ "authors": [
{ {
"name": "Julius Härtl", "name": "Julius Härtl",
"email": "jus@bitgrid.net", "email": "jus@bitgrid.net",
"role": "Developer" "role": "Developer"
}, },
{ {
"name": "Michael Weimann", "name": "Michael Weimann",
"email": "mail@michael-weimann.eu", "email": "mail@michael-weimann.eu",
"role": "Developer" "role": "Developer"
} }
], ],
"license": "agpl", "license": "agpl",
"private": true, "private": true,
"scripts": { "scripts": {
"build": "NODE_ENV=production webpack --progress --config webpack.js", "build": "NODE_ENV=production webpack --progress --config webpack.js",
"dev": "NODE_ENV=development webpack --progress --config webpack.js", "dev": "NODE_ENV=development webpack --progress --config webpack.js",
"watch": "NODE_ENV=development webpack --progress --watch --config webpack.js", "watch": "NODE_ENV=development webpack --progress --watch --config webpack.js",
"serve": "webpack serve --node-env development --allowed-hosts all --config webpack.js", "serve": "webpack serve --node-env development --allowed-hosts all --config webpack.js",
"lint": "eslint --ext .js,.vue src", "lint": "eslint --ext .js,.vue src",
"lint:fix": "eslint --ext .js,.vue src --fix", "lint:fix": "eslint --ext .js,.vue src --fix",
"lint:cypress": "eslint --ext .js cypress", "lint:cypress": "eslint --ext .js cypress",
"stylelint": "stylelint src", "stylelint": "stylelint src",
"stylelint:fix": "stylelint src --fix", "stylelint:fix": "stylelint src --fix",
"test": "jest", "test": "jest",
"test:coverage": "jest --coverage" "test:coverage": "jest --coverage"
}, },
"dependencies": { "dependencies": {
"@babel/polyfill": "^7.12.1", "@babel/polyfill": "^7.12.1",
"@babel/runtime": "^7.22.5", "@babel/runtime": "^7.21.5",
"@nextcloud/auth": "^2.1.0", "@nextcloud/auth": "^2.0.0",
"@nextcloud/axios": "^2.3.0", "@nextcloud/axios": "^2.3.0",
"@nextcloud/dialogs": "^4.1.0", "@nextcloud/dialogs": "^4.0.1",
"@nextcloud/event-bus": "^3.1.0", "@nextcloud/event-bus": "^3.0.2",
"@nextcloud/files": "^2.1.0", "@nextcloud/files": "^2.1.0",
"@nextcloud/initial-state": "^2.0.0", "@nextcloud/initial-state": "^2.0.0",
"@nextcloud/l10n": "^2.1.0", "@nextcloud/l10n": "^2.1.0",
"@nextcloud/moment": "^1.2.1", "@nextcloud/moment": "^1.2.1",
"@nextcloud/notify_push": "^1.1.3", "@nextcloud/notify_push": "^1.1.3",
"@nextcloud/router": "^2.1.2", "@nextcloud/router": "^2.1.1",
"@nextcloud/vue": "^7.12.0", "@nextcloud/vue": "^7.11.4",
"blueimp-md5": "^2.19.0", "blueimp-md5": "^2.19.0",
"dompurify": "^3.0.3", "dompurify": "^3.0.3",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"markdown-it": "^13.0.1", "markdown-it": "^13.0.1",
"markdown-it-link-attributes": "^4.0.1", "markdown-it-link-attributes": "^4.0.1",
"markdown-it-task-checkbox": "^1.0.6", "markdown-it-task-checkbox": "^1.0.6",
"moment": "^2.29.4", "moment": "^2.29.4",
"nextcloud-vue-collections": "^0.11.1", "nextcloud-vue-collections": "^0.11.1",
"p-queue": "^7.3.4", "p-queue": "^7.3.4",
"url-search-params-polyfill": "^8.2.3", "url-search-params-polyfill": "^8.1.1",
"vue": "^2.7.14", "vue": "^2.7.14",
"vue-at": "^2.5.1", "vue-at": "^2.5.1",
"vue-click-outside": "^1.1.0", "vue-click-outside": "^1.1.0",
"vue-easymde": "^2.0.0", "vue-easymde": "^2.0.0",
"vue-infinite-loading": "^2.4.5", "vue-infinite-loading": "^2.4.5",
"vue-material-design-icons": "^5.2.0", "vue-material-design-icons": "^5.2.0",
"vue-router": "^3.6.5", "vue-router": "^3.6.5",
"vue-smooth-dnd": "^0.8.1", "vue-smooth-dnd": "^0.8.1",
"vuex": "^3.6.2", "vuex": "^3.6.2",
"vuex-router-sync": "^5.0.0" "vuex-router-sync": "^5.0.0"
}, },
"browserslist": [ "browserslist": [
"extends @nextcloud/browserslist-config" "extends @nextcloud/browserslist-config"
], ],
"engines": { "engines": {
"node": "^20.0.0", "node": "^16.0.0",
"npm": "^9.0.0" "npm": "^7.0.0 || ^8.0.0"
}, },
"devDependencies": { "devDependencies": {
"@nextcloud/babel-config": "^1.0.0", "@nextcloud/babel-config": "^1.0.0",
"@nextcloud/browserslist-config": "^2.3.0", "@nextcloud/browserslist-config": "^2.3.0",
"@nextcloud/cypress": "^1.0.0-beta.2", "@nextcloud/cypress": "^1.0.0-beta.2",
"@nextcloud/eslint-config": "^8.2.1", "@nextcloud/eslint-config": "^8.2.1",
"@nextcloud/stylelint-config": "^2.3.0", "@nextcloud/stylelint-config": "^2.3.0",
"@nextcloud/webpack-vue-config": "^5.5.1", "@nextcloud/webpack-vue-config": "^5.5.1",
"@relative-ci/agent": "^4.1.5", "@relative-ci/agent": "^4.1.4",
"@vue/test-utils": "^1.3.6", "@vue/test-utils": "^1.3.5",
"@vue/vue2-jest": "^29.2.4", "@vue/vue2-jest": "^29.2.4",
"cypress": "^12.15.0", "cypress": "^12.12.0",
"eslint-plugin-cypress": "^2.13.3", "eslint-plugin-cypress": "^2.13.3",
"eslint-webpack-plugin": "^4.0.1", "eslint-webpack-plugin": "^4.0.1",
"jest": "^29.5.0", "jest": "^29.5.0",
"jest-serializer-vue": "^3.1.0", "jest-serializer-vue": "^3.1.0",
"stylelint-webpack-plugin": "^4.1.1", "stylelint-webpack-plugin": "^4.1.1",
"vue-template-compiler": "^2.7.14" "vue-template-compiler": "^2.7.14"
}, },
"jest": { "jest": {
"moduleFileExtensions": [ "moduleFileExtensions": [
"js", "js",
"vue" "vue"
], ],
"moduleNameMapper": { "moduleNameMapper": {
"^@/(.*)$": "<rootDir>/src/$1" "^@/(.*)$": "<rootDir>/src/$1"
}, },
"transform": { "transform": {
"^.+\\.js$": "<rootDir>/node_modules/babel-jest", "^.+\\.js$": "<rootDir>/node_modules/babel-jest",
".*\\.(vue)$": "<rootDir>/node_modules/vue-jest" ".*\\.(vue)$": "<rootDir>/node_modules/vue-jest"
}, },
"snapshotSerializers": [ "snapshotSerializers": [
"<rootDir>/node_modules/jest-serializer-vue" "<rootDir>/node_modules/jest-serializer-vue"
] ]
} }
} }

View File

@@ -21,6 +21,7 @@
<ignoreFiles> <ignoreFiles>
<directory name="vendor/phpunit/php-code-coverage" /> <directory name="vendor/phpunit/php-code-coverage" />
<directory name="vendor/vimeo" /> <directory name="vendor/vimeo" />
<directory name="vendor/friendsofphp" />
</ignoreFiles> </ignoreFiles>
</extraFiles> </extraFiles>
<issueHandlers> <issueHandlers>

View File

@@ -27,19 +27,17 @@
<router-view /> <router-view />
</NcAppContent> </NcAppContent>
<div v-if="$route.params.id || $route.params.cardId"> <NcModal v-if="cardDetailsInModal && $route.params.cardId"
<NcModal v-if="cardDetailsInModal && $route.params.cardId" :clear-view-delay="0"
:clear-view-delay="0" :close-button-contained="true"
:close-button-contained="true" size="large"
size="large" @close="hideModal()">
@close="hideModal()"> <div class="modal__content modal__card">
<div class="modal__content modal__card"> <router-view name="sidebar" />
<router-view name="sidebar" /> </div>
</div> </NcModal>
</NcModal>
<router-view name="sidebar" :visible="!cardDetailsInModal || !$route.params.cardId" /> <router-view name="sidebar" :visible="!cardDetailsInModal || !$route.params.cardId" />
</div>
</NcContent> </NcContent>
</template> </template>

View File

@@ -2,7 +2,7 @@
"require-dev": { "require-dev": {
"phpunit/phpunit": "~9", "phpunit/phpunit": "~9",
"behat/behat": "~3.13.0", "behat/behat": "~3.13.0",
"guzzlehttp/guzzle": "7.7.0", "guzzlehttp/guzzle": "7.5.1",
"jarnaiz/behat-junit-formatter": "^1.3", "jarnaiz/behat-junit-formatter": "^1.3",
"sabre/dav": "4.4.0", "sabre/dav": "4.4.0",
"symfony/event-dispatcher": "~5.4" "symfony/event-dispatcher": "~5.4"

View File

@@ -26,8 +26,8 @@ namespace OCA\Deck\Db;
use OCA\Deck\NotFoundException; use OCA\Deck\NotFoundException;
use OCA\Deck\Service\AssignmentService; use OCA\Deck\Service\AssignmentService;
use OCA\Deck\Service\BoardService; use OCA\Deck\Service\BoardService;
use OCA\Deck\Service\CardService;
use OCA\Deck\Service\StackService; use OCA\Deck\Service\StackService;
use OCA\Deck\Service\CardService;
use OCP\IGroupManager; use OCP\IGroupManager;
use OCP\IUserManager; use OCP\IUserManager;
use OCP\IUserSession; use OCP\IUserSession;

View File

@@ -1,11 +1,11 @@
<?php <?php
use Behat\Behat\Context\Context;
use Behat\Behat\Hook\Scope\BeforeScenarioScope; use Behat\Behat\Hook\Scope\BeforeScenarioScope;
use Behat\Gherkin\Node\TableNode; use Behat\Gherkin\Node\TableNode;
use GuzzleHttp\Client; use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException; use GuzzleHttp\Exception\ClientException;
use PHPUnit\Framework\Assert; use PHPUnit\Framework\Assert;
use Behat\Behat\Context\Context;
use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ResponseInterface;
require_once __DIR__ . '/../../vendor/autoload.php'; require_once __DIR__ . '/../../vendor/autoload.php';

View File

@@ -39,8 +39,8 @@ use OCP\Activity\IManager;
use OCP\IL10N; use OCP\IL10N;
use OCP\IUser; use OCP\IUser;
use OCP\L10N\IFactory; use OCP\L10N\IFactory;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use PHPUnit\Framework\MockObject\MockObject;
class ActivityManagerTest extends TestCase { class ActivityManagerTest extends TestCase {

View File

@@ -26,7 +26,6 @@ namespace OCA\Deck\Activity;
use OC\Activity\Event; use OC\Activity\Event;
use OCA\Deck\Db\Acl; use OCA\Deck\Db\Acl;
use OCA\Deck\Db\Card; use OCA\Deck\Db\Card;
use OCA\Deck\Service\CardService;
use OCP\Activity\IEvent; use OCP\Activity\IEvent;
use OCP\Comments\IComment; use OCP\Comments\IComment;
use OCP\Comments\ICommentsManager; use OCP\Comments\ICommentsManager;
@@ -39,6 +38,7 @@ use OCP\L10N\IFactory;
use OCP\RichObjectStrings\IValidator; use OCP\RichObjectStrings\IValidator;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
use PHPUnit_Framework_MockObject_MockObject as MockObject; use PHPUnit_Framework_MockObject_MockObject as MockObject;
use OCA\Deck\Service\CardService;
class DeckProviderTest extends TestCase { class DeckProviderTest extends TestCase {

View File

@@ -31,8 +31,8 @@ use OCA\Deck\Service\BoardService;
use OCA\Deck\Service\PermissionService; use OCA\Deck\Service\PermissionService;
use OCP\AppFramework\Controller; use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\JSONResponse; use OCP\AppFramework\Http\JSONResponse;
use OCP\IConfig;
use OCP\ILogger; use OCP\ILogger;
use OCP\IConfig;
use OCP\IRequest; use OCP\IRequest;
class ExceptionMiddlewareTest extends \Test\TestCase { class ExceptionMiddlewareTest extends \Test\TestCase {

View File

@@ -23,7 +23,6 @@
namespace OCA\Deck\Service; namespace OCA\Deck\Service;
use \Test\TestCase;
use OC\L10N\L10N; use OC\L10N\L10N;
use OCA\Deck\Activity\ActivityManager; use OCA\Deck\Activity\ActivityManager;
use OCA\Deck\Db\Acl; use OCA\Deck\Db\Acl;
@@ -42,15 +41,16 @@ use OCA\Deck\Event\AclCreatedEvent;
use OCA\Deck\Event\AclDeletedEvent; use OCA\Deck\Event\AclDeletedEvent;
use OCA\Deck\NoPermissionException; use OCA\Deck\NoPermissionException;
use OCA\Deck\Notification\NotificationHelper; use OCA\Deck\Notification\NotificationHelper;
use OCA\Deck\Validators\BoardServiceValidator;
use OCP\EventDispatcher\IEventDispatcher; use OCP\EventDispatcher\IEventDispatcher;
use OCP\IConfig; use OCP\IConfig;
use OCP\IDBConnection; use OCP\IDBConnection;
use OCP\IGroupManager;
use OCP\IURLGenerator;
use OCP\IUser; use OCP\IUser;
use OCP\IUserManager; use OCP\IUserManager;
use OCP\IGroupManager;
use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\MockObject\MockObject;
use \Test\TestCase;
use OCP\IURLGenerator;
use OCA\Deck\Validators\BoardServiceValidator;
class BoardServiceTest extends TestCase { class BoardServiceTest extends TestCase {

View File

@@ -27,13 +27,13 @@ use OCA\Deck\Activity\ActivityManager;
use OCA\Deck\Db\Assignment; use OCA\Deck\Db\Assignment;
use OCA\Deck\Db\AssignmentMapper; use OCA\Deck\Db\AssignmentMapper;
use OCA\Deck\Db\Board; use OCA\Deck\Db\Board;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\Card; use OCA\Deck\Db\Card;
use OCA\Deck\Db\CardMapper; use OCA\Deck\Db\CardMapper;
use OCA\Deck\Db\ChangeHelper; use OCA\Deck\Db\ChangeHelper;
use OCA\Deck\Db\LabelMapper;
use OCA\Deck\Db\Stack; use OCA\Deck\Db\Stack;
use OCA\Deck\Db\StackMapper; use OCA\Deck\Db\StackMapper;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\LabelMapper;
use OCA\Deck\Model\CardDetails; use OCA\Deck\Model\CardDetails;
use OCA\Deck\Notification\NotificationHelper; use OCA\Deck\Notification\NotificationHelper;
use OCA\Deck\StatusException; use OCA\Deck\StatusException;
@@ -42,13 +42,13 @@ use OCP\Activity\IEvent;
use OCP\Comments\ICommentsManager; use OCP\Comments\ICommentsManager;
use OCP\EventDispatcher\IEventDispatcher; use OCP\EventDispatcher\IEventDispatcher;
use OCP\IRequest; use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\IUser; use OCP\IUser;
use OCP\IUserManager; use OCP\IUserManager;
use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Test\TestCase; use Test\TestCase;
use OCP\IURLGenerator;
class CardServiceTest extends TestCase { class CardServiceTest extends TestCase {

View File

@@ -23,13 +23,13 @@
namespace OCA\Deck\Service; namespace OCA\Deck\Service;
use \Test\TestCase;
use OCA\Deck\Db\Board;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\Card; use OCA\Deck\Db\Card;
use OCA\Deck\Db\Board;
use OCA\Deck\Db\Stack; use OCA\Deck\Db\Stack;
use OCA\Deck\Db\BoardMapper;
use OCP\IConfig; use OCP\IConfig;
use OCP\IL10N; use OCP\IL10N;
use \Test\TestCase;
class DefaultBoardServiceTest extends TestCase { class DefaultBoardServiceTest extends TestCase {

View File

@@ -23,12 +23,11 @@
namespace OCA\Deck\Service; namespace OCA\Deck\Service;
use \Test\TestCase;
use OCA\Deck\Activity\ActivityManager; use OCA\Deck\Activity\ActivityManager;
use OCA\Deck\Db\AssignmentMapper; use OCA\Deck\Db\AssignmentMapper;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\Card; use OCA\Deck\Db\Card;
use OCA\Deck\Db\CardMapper; use OCA\Deck\Db\CardMapper;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\ChangeHelper; use OCA\Deck\Db\ChangeHelper;
use OCA\Deck\Db\Label; use OCA\Deck\Db\Label;
use OCA\Deck\Db\LabelMapper; use OCA\Deck\Db\LabelMapper;
@@ -38,6 +37,7 @@ use OCA\Deck\Model\CardDetails;
use OCA\Deck\Validators\StackServiceValidator; use OCA\Deck\Validators\StackServiceValidator;
use OCP\EventDispatcher\IEventDispatcher; use OCP\EventDispatcher\IEventDispatcher;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
use \Test\TestCase;
/** /**
* Class StackServiceTest * Class StackServiceTest
@@ -117,17 +117,17 @@ class StackServiceTest extends TestCase {
$this->permissionService->expects($this->once())->method('checkPermission'); $this->permissionService->expects($this->once())->method('checkPermission');
$this->stackMapper->expects($this->once())->method('findAll')->willReturn($this->getStacks()); $this->stackMapper->expects($this->once())->method('findAll')->willReturn($this->getStacks());
$this->cardService->expects($this->atLeastOnce())->method('enrichCards')->will( $this->cardService->expects($this->atLeastOnce())->method('enrichCards')->will(
$this->returnCallback( $this->returnCallback(
function ($cards) { function ($cards) {
foreach ($cards as $card) { foreach ($cards as $card) {
$card->setLabels($this->getLabels()[$card->getId()]); $card->setLabels($this->getLabels()[$card->getId()]);
} }
return array_map(function ($card) { return array_map(function ($card) {
return new CardDetails($card); return new CardDetails($card);
}, $cards); }, $cards);
} }
) )
); );
$this->cardMapper->expects($this->any())->method('findAll')->willReturn($this->getCards(222)); $this->cardMapper->expects($this->any())->method('findAll')->willReturn($this->getCards(222));

View File

@@ -22,13 +22,13 @@
*/ */
namespace OCA\Deck\Controller; namespace OCA\Deck\Controller;
use OCA\Deck\Db\Board;
use OCA\Deck\Service\BoardService;
use OCP\AppFramework\Http; use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\DataResponse;
use OCP\IRequest; use OCP\IRequest;
use OCA\Deck\Service\BoardService;
use OCA\Deck\Db\Board;
class BoardApiControllerTest extends \Test\TestCase { class BoardApiControllerTest extends \Test\TestCase {
private $appName = 'deck'; private $appName = 'deck';
private $userId = 'admin'; private $userId = 'admin';

View File

@@ -23,10 +23,10 @@
namespace OCA\Deck\Controller; namespace OCA\Deck\Controller;
use OCA\Deck\Db\Board; use OCA\Deck\Db\Board;
use OCA\Deck\Service\Importer\BoardImportService;
use OCP\AppFramework\Http; use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\DataResponse;
use OCP\IRequest; use OCP\IRequest;
use OCA\Deck\Service\Importer\BoardImportService;
class BoardImportApiControllerTest extends \Test\TestCase { class BoardImportApiControllerTest extends \Test\TestCase {
private $appName = 'deck'; private $appName = 'deck';

View File

@@ -22,14 +22,14 @@
*/ */
namespace OCA\Deck\Controller; namespace OCA\Deck\Controller;
use OCA\Deck\Db\Card;
use OCA\Deck\Service\AssignmentService; use OCA\Deck\Service\AssignmentService;
use OCA\Deck\Service\CardService;
use OCP\AppFramework\Http; use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\DataResponse;
use OCP\IRequest; use OCP\IRequest;
use OCA\Deck\Db\Card;
use OCA\Deck\Service\CardService;
class CardApiControllerTest extends \Test\TestCase { class CardApiControllerTest extends \Test\TestCase {
private $controller; private $controller;
private $request; private $request;

View File

@@ -22,13 +22,13 @@
*/ */
namespace OCA\Deck\Controller; namespace OCA\Deck\Controller;
use OCA\Deck\Db\Label;
use OCA\Deck\Service\LabelService;
use OCP\AppFramework\Http; use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\DataResponse;
use OCP\IRequest; use OCP\IRequest;
use OCA\Deck\Db\Label;
use OCA\Deck\Service\LabelService;
class LabelApiControllerTest extends \Test\TestCase { class LabelApiControllerTest extends \Test\TestCase {
private $controller; private $controller;
private $request; private $request;

View File

@@ -29,9 +29,9 @@ use OCA\Deck\Service\CardService;
use OCA\Deck\Service\ConfigService; use OCA\Deck\Service\ConfigService;
use OCA\Deck\Service\PermissionService; use OCA\Deck\Service\PermissionService;
use OCP\EventDispatcher\IEventDispatcher; use OCP\EventDispatcher\IEventDispatcher;
use OCP\IConfig;
use OCP\IInitialStateService; use OCP\IInitialStateService;
use OCP\IRequest; use OCP\IRequest;
use OCP\IConfig;
use OCP\IURLGenerator; use OCP\IURLGenerator;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;

View File

@@ -22,14 +22,14 @@
*/ */
namespace OCA\Deck\Controller; namespace OCA\Deck\Controller;
use OCA\Deck\Db\Stack;
use OCA\Deck\Service\BoardService;
use OCA\Deck\Service\StackService;
use OCP\AppFramework\Http; use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\DataResponse;
use OCP\IRequest; use OCP\IRequest;
use OCA\Deck\Service\BoardService;
use OCA\Deck\Service\StackService;
use OCA\Deck\Db\Stack;
class StackApiControllerTest extends \Test\TestCase { class StackApiControllerTest extends \Test\TestCase {
private $appName = 'deck'; private $appName = 'deck';
private $userId = 'admin'; private $userId = 'admin';